악성코드 분석 실습 ( Lab07_02 ) [ COM Object ]

2018. 5. 3. 09:14악성코드 분석




[ 기초 정적분석 ]

1> ExeinfoPE

패킹의 흔적은 보이지 않으며, 임포트한 dll을 확인할 수 있었다



2-1> pestudio (1)

VariantInit, SysAllocString, SysFreestring함수를 사용하고 있다


2-2> pestudio (2)

의심스러운 www.malwareanalysisbook.com/ad.html 주소가 확인되었다



[ 기초 동적분석 ] - SysAnalyzer

1> 실행화면

악성파일 실행 후 30초동안 이루어지는 시스템의 현상을 살펴보자


2> Open Ports

여러개의 포트가 열어짐이 확인된다


3> Directory Watch

인터넷을 요청하기 위해 IEUser Directory를 사용함을 확인할 수 있다


4> API Log

악성파일이 사용한 함수 흔적들이다



* COM ( Component Object Model )

소프트웨어 컴포넌트에서 상호 세부내용을 모르더라도 서로 다른 코드를 호출할 수 있게하는 인터페이스 표준이다

COM은 Client / Server Framework로 구현한다

Client는 COM객체를 사용할 수 있게 하는 프로그램이고, 프로그램이 사용할 수 있는 수많은 COM객체가 존재한다

COM객체는 GUID(Globally Unique Identifiers)(= CLID or IID )를 통해 접근한다


[ 고급 정적분석 ]


OleInitialize( )

COM을 사용하는 스레드는 적어도 한 번은 OleInitialize나 CoInitializeEx함수를 호출해야한다.


CoCreateInstance( rclsid,pUnkOuter,dwClsContext,riid,ppv )

COM기능에 접근할 때 사용한다

ppv는 인터페이스를 가리키는 포인터 - CLSID, IID로 요청해 얻은 인터페이스

RETURN VALUE : 구조체를 가리키는 포인터



* 현재 본 파일은 CLSID와 IID를 Statck에 저장해서 사용하고 있다


IID

D30C1661-CDAF-11D0-8A3E-00C04FC9E26E => IWebBrowser2 Interface


CLSID ( HKLM\SOFTWARE\Classes\CLSID\* ) - CLSID(Class ID)는 레지스트리에 존재한다

0002DF01-0000-0000-C000-000000000046 => Internet Explorer




CoCreateInstance함수를 통해서 InternetExplorer & IWebBrowser2 Interface 가져왔다

VariantInit( )

변수 초기화

SysAllocString( )

문자열 동적 할당


IWEBBROWSER2::Navigate Method - MSDN

HRESULT Navigate(
    BSTR url,
    VARIANT *Flags,
    VARIANT *TargetFrameName,
    VARIANT *PostData,
    VARIANT *Headers
);

push ecx ( lea ecx, [ esp+28h+pvarg ] )    *Headers

push ecx ( lea ecx, [ esp+2Ch+pvarg ] )    *PostData

push ecx ( lea ecx, [ esp+30h+pvarg ] )    *TargetFrameName

push ecx ( lea ecx, [ esp+34h+var_10 ] )   *Flags

push esi ( mov esi, eax ) <-- SysAllocStringReturnValue ( String ) URL

push eax ( mov eax, [ esp+28h+ppv ] )    Interface Pointer

call dword ptr [ edx+2Ch ]                    Navigate Function


=> navigate(*ppv,"http://www. ...", ... )


arg1: &ppv ( InterfacePointer )

arg2: "http://www.malwareanalysisbook.com/ad.h" ( SysAllocString Result )

arg3,4,5,6 : Flags,TargetFrameName,PostData,Headers


SysFreeString( )

문자열 동적 할당 해제



IWEBBROWSER2 Interface의 Navigate메서드를 이용해 특정URL을 요청하는 정상적이 루틴이다

이러한 정상적인 루틴만이 악성파일에서 확인되어진다면, 숨겨진 악성코드가 없는지 의심해보아야한다 !