악성코드 분석
IT 위키
더 많은 작업
악성코드 분석은, 어떤 코드가 악성코드인지 판별하는 것 부터 그 코드가 어떤 악성 행위를 하는지를 파악하고 차단하기 위한 분석 행위까지 포함한다.
프로그램을 실행시키지 않고 분석한다.
- 소스코드, 파일 헤더, 매니페스트, 프로그램 구조 분석
- 난독화를 할 경우 분석이 힘들어진다.
실제로 실행시켜 보고 분석한다.
- 입력값을 변화에 따른 결과값을 분석한다.
- 코드가 동작할수 있는 환경을 조성하는데 어려움이 있다.
| 구분 | 도구·기법 | 하는 일 |
|---|---|---|
| 정적 분석 | 디스어셈블러, 디컴파일러 | 실행 파일을 어셈블리나 고급 언어 형태로 되돌려 읽는다 |
| 동적 분석 | 디버거, 샌드박스 | 실행하면서 한 명령씩 멈추고 레지스터·메모리·API 호출을 본다 |
| 분석 준비 | 언패킹 | 실행 압축·암호화된 파일에서 원래 코드를 풀어낸다 → 패커 |
악성코드는 분석을 늦추려고 다음 기법을 쓴다.
- 난독화 : 무의미한 코드를 끼워 넣고 실행 순서를 섞어 디스어셈블한 결과를 읽기 어렵게 한다
- 패킹 : 원래 코드를 압축·암호화해 감춘다 → 패커
- 안티 디버깅 : 디버거가 붙어 있는지 확인해 다르게 동작한다
- 안티 VM : 가상 머신·샌드박스에서는 악성 행위를 하지 않는다
디스어셈블·디버깅·언패킹은 분석가가 쓰는 기법이고, 난독화는 분석을 방해하는 기법이다.