악성코드를 분석할 때 증상위주로 파악하기 위해서 자동분석을 많이 사용합니다.

이때 문제가 발생하는건 크게 다음과 같습니다.

1. 자동분석 탐지 (가상환경, 모니터링 도구 등의 유무)
2. 인자 값 필요
3. 특정 환경 필요 (설치된 다른 프로그램 등)
4. 기타 (더 있을텐데 생각이 안나서..)

2,3번의 경우도 많은데 자동분석 시스템에서는 지극히 평범하고 정상적인 프로그램처럼 나옵니다.



하지만, 코드를 분석하면 원인을 알 수 있습니다.

Ollydbg로 열어보면 실제 코드가 0x00401000 에서 시작하는 전형적인 비주얼 C 로 작성된 코드임을 알 수 있습니다.


0x00401000에 브레이크포인트(F9)를 걸고 달립니다.

0x00401045 에서 레지스트리를 읽어서 특정 값인지 비교합니다.
악성코드가 필요로하는 특징적인 프로그램이 없어 0x00401086에서 0x00401094 로 빠져버립니다.

이러면 제대로(?) 악성코드가 실행되지 않고 종료됩니다.


강제로 IP 를 0x0040108A로 변경합니다. (Alt + *)


F8 로 CALL 문 3개를 실행하고 프로그램을 종료되고 난 후 시스템 비교 프로그램으로 검사하면 19개의 신규 파일이 생성되었음을 알 수 있습니다.


떨어진 파일들을 차곡차곡 모아 추가 분석하면 됩니다.

별다른 조건없이 악의적인 일을 수행하는 착한(?) 악성코드는 자동분석으로 처리되고 이렇게 특정 조건을 필요로하는 악성코드는 자동분석 시스템에서 원하는 환경을 만들어주거나 사람이 봐야 할 겁니다.

자동분석 시스템의 기능도 계속 향상시켜야겠지만 결국 분석은 사람이 합니다.
- 자동분석 시스템에 위협을 느끼는 1인 ㅋ 그래도 자동분석 시스템이 참 편합니다.


Posted by mstoned7

댓글을 달아 주세요

  1. Sun2Day 2009.09.22 07:24 신고  댓글주소  수정/삭제  댓글쓰기

    항상 많은걸 배우고 갑니다 (+__)ㅋ

    좋은 하루 보내세요