본문 바로가기
해킹 기초지식

시스템 해킹(System Hacking)과 리버스 엔지니어링(Reverse Engineering), 웹 해킹(Web Hacking)

by whiteTommy 2023. 11. 19.

시스템 해킹

: 컴퓨터 프로그램의 행위를 조작하여 공격자가 원하는 행동을 실행하도록 하는 공격이다. 

 

목표: 공격 대상 프로그램이 구동되는 서버의 임의 유저와 같은 권한을 획득하는 것이다. 원격 환경에 있는 공격자가 타깃 서버에서 운영체제의 명령어를 실행할 수 있는 공격을 원격코드실행(Remote Code Execution)이라고 한다.

 

리버스 엔지니어링

: 무언가를 설계하고 제작하는 '엔지니어링' 과정을 정반대로 수행하는 것이다. 예를 들어, 컴퓨터 프로그래밍적 관점에서는 프로그램의 동작을 직접 실행해 보면서, 컴파일된 결과물의 데이터를 분석하여 소스 코드의 내용을 추측하는 방법이다.

 

앞서 언급한 결과물을 '프로그램' 또는 '이진 파일'이라고 한다. 이는 사람의 눈으로 식별하기 어려운 데이터로 이루어져 있어서, 동작을 파악하기가 쉽지 않다. 그래서, 디스어셈블러(disassembler), 디컴파일러(decompiler)와 같은 도구를 사용한다. 이는 사람이 식별하기 어려운 데이터를, 보다 알아보기 쉬운 형태로 변형시켜 준다.

 

하지만, 디컴파일러가 없는 환경에서 리버싱을 해야할 수도 있기 때문에 어셈블리어를 읽고 이해하는 능력이 요구된다.

x86 assembly 를 이해하면 다른 아키텍처의 어셈블리어는 보다 손쉽게 습득할 수 있다.

 

웹 해킹

: 웹 상에서 본래의 의도와 다른 동작을 일으키거나 데이터를 도용, 변조, 시스템을 손상시키는 등의 악의적인 행위이다.

 

  1. 서버 side 해킹 : SQL Injection(각 데이터베이스를 대상으로 수행), Command Injection(서버의 운영체제에서 악의적인 명령어 실행), 웹 서버에 파일을 업로드, 다운로드할 때 수행하는 공격도 포함된다.
  2. 클라이언트 side 해킹 : 공격자가 웹 리소스에 악성 스크립트를 삽입하여 이용자의 웹 브라우저에서 이를 실행하는 공격 기법인 XSS, Template Injection, CSS Injection, Relative Path Overwrite, DOMXSS 가 포함된다.