Practical Malware Analysis 7-2
실습 7-2
실습 환경 : Vmware (Windows 7 32 bit)
사용한 툴 : IDA Free 5.0
[01] 이 프로그램은 어떤 방식으로 지속 메커니즘을 보장하는가?
main 함수를 분석해보면 OleInitilalize 함수를 볼 수 있는데 이 함수는 COM 라이브러리를 초기화 할 때 사용한다. 이 악성코드는 COM 객체를 사용하는 것을 알 수 있다.
그리고 나서 CoCreateInstance 함수를 호출하여 COM객체의 instance를 생성하고 ppv 변수 내의 스택에 저장된다. 어떠한 COM기능이 사용됐는지를 알기 위해 파라미터로 입력된 riid와 rclsid를 살펴보면

rclsid의 값은 0002DF01-0000-0000-C000-000000000046 이고 riid의 값은 D30C1661-CDAF-11D0-8A3E-00C04FC9E26E 임을 확인할 수 있는데 이 값을 구글링 해보면 rclsid는 인터넷 익스플로러에 사용되고 riid는 IWebBrowser2에 사용된다는 것을 알 수 있었다.
분석을 계속 진행해 보면
VariantInit 함수와 SysAllocString 함수를 사용하여 COM 기능에 사용될 인자값 URL등을 설정 합니다.
계속해서 살펴보니 CoCreateInstance 함수를 사용하여 호출한 COM객체 위치를 edx에 옮긴 뒤에 call dword ptr [edx+2Ch]를 통해 COM객체로 부터 0x2C만큼 떨어진 오프셋의 함수가 호출되는데 이는 Native 함수이다.
Native 함수는 프로그램이 인터넷 익스플로러를 실행하고 웹 주소에 접근할 수 있게 하기 때문에 이 함수가 호출 되면 인터넷 익스플로러는 위에서 확인한 http://www.malwareanalysisbook.com/ad.html 웹 주소에 접속한다.
Native 함수를 호출하고 난 뒤에 SysFreeString 함수를 사용하여 위에서 SysAllocString 함수로 할당한 데이터를 지우고 OleUnInitialize 함수를 사용하여 COM 라이브러리를 닫는다.
즉 이 악성코드는 실행하면 http://www.malwareanalysisbook.com/ad.html 페이지를 한번 출력하고 종료된다.
[02] 이 프로그램의 목적은 무엇인가?
위에서 살펴봤듯이 http://www.malwareanalysisbook.com/ad.html 광고 웹 페이지를 출력한다.
[03] 이 프로그램은 언제 실행을 종료하는가?
http://www.malwareanalysisbook.com/ad.html 광고 웹 페이지를 출력한 뒤에 실행을 종료한다.
COM 객체에 대하여 공부할 수 있었던 실습이었다.