리버스 엔지니어링과 분석
설명 영상 리버스 엔지니어링과 분석 · 2:54
핵심 정리
리버스 엔지니어링(역공학)은 이전에 만들어진 장치나 소프트웨어가 어떻게 작동하는지 구조 분석으로 알아내는 과정이다. 악성 프로그램 분야에서는 악성코드의 동작과 목적을 파악하는 데 쓴다. 원본 설계 지식이 거의 없는 상태에서 완성품을 분해해 원리를 추론하는 것이 핵심이다.
정적 분석은 파일을 실행하지 않고 디스어셈블링 등으로 구조와 핵심 명령을 파악하는 단계다. 이때 디컴파일러로 기계어나 바이너리를 고수준 언어 소스로 바꿔 읽을 수 있다. 가상화된 통제 환경에서 악성코드를 실행해 분석 시스템 침해를 막는 도구는 샌드박스다.
분석을 어렵게 하는 대표 기법은 난독화, 안티 디버깅, 패킹이다. 난독화는 코드를 이해하기 어렵게 하여 역공학을 방해하는 안티 리버싱 기법이다. 안티 디버깅은 디버거를 탐지하거나 방해하여 분석을 막는 안티 리버싱 기법이다.
실행 파일의 코드나 데이터를 압축 또는 암호화해 저장하고 실행 시 복원하여 정적 분석을 어렵게 하는 기법은 패킹이다. 그래서 패킹된 파일은 분석 전에 언패킹이 먼저 필요하다. 언패킹은 압축·암호화된 실행 파일을 풀어 원본 코드를 분석 가능한 상태로 만드는 과정이다.
공격 수단 쪽에는 익스플로잇이 있다. 익스플로잇은 취약점을 이용해 공격을 수행하는 프로그램뿐 아니라 절차, 명령, 스크립트 등 공격 수행 수단 전반을 가리킨다. 역공학은 악성코드 분석뿐 아니라 레거시 소프트웨어의 오류, 미완성, 접근 불가 문서를 수정하는 데도 쓰인다.
자세히
안티 리버싱 기법
난독화는 대상이 코드이고, 안티 디버깅은 대상이 디버거다. 두 기법은 분석의 서로 다른 단계를 막으므로, 분석 중 어느 쪽의 방해인지 구분해야 한다. 난독화는 역공학을 어렵게 하는 점에서 안티 리버싱과 목적이 같지만, 안티 디버깅은 실행 중 디버거 사용을 노린다는 점에서 구별된다.
| 구분 | 방해 대상 | 방해 방식 |
|---|---|---|
| 난독화 | 프로그램 코드 | 코드를 변경해 가독성을 낮춤 |
| 안티 디버깅 | 디버거 | 디버거를 탐지하거나 방해함 |
| 패킹 | 실행 파일의 코드·데이터 | 압축·암호화해 저장하고 실행 시 복원함 |
패킹은 실행 파일을 저장된 형태로 바꾸는 기법이라 난독화와 방식이 다르다. 표의 세 기법은 모두 분석을 늦추는 목적이지만, 방해가 걸리는 지점이 다르므로 선지에서 대상을 먼저 확인해야 한다.
이어지는 내용
- 분석 도구와 절차
- 패킹과 언패킹
- 익스플로잇
- 자주 헷갈리는 것
- 기출에서는
로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.
앱에서 이 절 읽기