2018. 5. 2. 22:01ㆍ악성코드 분석
고급 정적분석은 IDA Pro를 통해 Lab07_01악성파일을 분석한다
해당 악성파일은 StartServiceCtrlDispatcherA함수 호출 이후 sub_0x00401040주소의 함수를 호출한다
sub_401040은 실질적인 main함수가 된다
StartServiceCtrlDispatcherA()
connect the main thread of a service process to the service control manager,
the thread to be the service control dispatcher thread for the calling process.
0x401040로 이동하자
제일 먼저 OpenMutexA함수를 볼 수 있다
OpenMuextA( DA,IH,MutexObject ) - open an existing named mutex object
Mutex객체가 존재하지 않으면 NULL을 반환
악성파일에서는 Mutex객체가 없으므로 생성해주는 코드가 실행된다
CreateMutexA( MA, IO, Name ) - 새로운 Mutex객체를 생성한다
RETURN VALUE : Handle to the newly created Mutex Object
OpenSCManagerA( MachineName, DatabaseName, DA ) - connect to Service Control Manager and open the specified Database
GetCurrentProcess( *void )
RETURN VALUE : pseudo Handle for The current process
GetModuleFileNameA( Module, FileName, Size ) - 현재 동작중인 실행파일이나 로드된 DLL의 전체 경로를 얻는다
RETURN VALUE : Length of the string that is copied to the buffer
CreateServiceA(SCManager, ServiceName, DisplayName, StartType, ... )
Create service object and add it to the service control manager database
StartType : 2 => SERVICE_AUTO_START => 컴퓨터 실행 시 자동으로 해당 서비스가 실행된다
즉, 컴퓨터를 킬 때마다 Malservice파일이 자동으로 실행된다
다음으로 시스템 시간과 파일 시간에 관한 함수가 실행된다
SystemTimeToFileTime( SystemTime, FileTime )
System Time => File Time
CreateWaitableTimerA( ... )
Create timer to use in SetWaitableTimer
SetWaitableTimer( Timer, DueTime, ... )
Activates the specified waitable timer
When the due time arrives, the timer is signaled the thread calls the optional completion routine
WaitForSingleObject(handle,milliseconds)
the function waits until the object is signaled or the interval elapses
CreateThread( ... , StartAddress , ... )
StartAddress주소에 정의돈 application-defined function을 실행시키기 위한 스레드를 생성하는 함수
StartAddress는 IDA에서 스레드를 실행시키기 위해 사용하는 함수이다
[ Loop ]
mov esi, 14h(20)
dec esi
jnz short loc_401126
=> 20개의 스레드를 생성하도록 한다
StartAddress ? 두개의 함수를 실행하는 루틴이 존재한다
InternetOpenA( Agent, ... )
User-Agent : Internet Explorer 8.0 를 사용하여 인터넷을 실행
InternetOpenUrlA( Internet, URL, ... )
해당 URL요청
고급정적분석결과 해당 악성파일은 Malservice파일을 생성하고, MutexObject(HGL345)를 사용하여 중복실행을 방지한다
또한, 특정 URL을 무한히 요청하는 코드를 실행하며, Timer를 통해서 120시간 뒤에는 프로세스를 종료하도록 하였다.
스레드는 20개가 생성되고, 각각의 스레드에서 무한한 URL요청을 실행한다
[ 기초정적 - 기초동적 - 고급정적 분석 후 결과 ]
1. 프로그램 탐지시 호스트 기반으로 좋은 시그니처는 ?
Malservice , HGL345
2. 프로그램 탐지시 네트워크 기반으로 좋은 시그니처는 ?
http://www.malwareanalysisbook.com
3. 프로그램의 목적은 무엇인가 ?
DOS(Denial Of Service)공격
4. 프로그램의 종료는 언제 이루어지는가 ?
실행 후 120시간 뒤에 sleep함수가 실행되어 종료된다
'악성코드 분석' 카테고리의 다른 글
악성코드 분석 실습 ( Lab07_03 ) [ DLL 변조] (0) | 2018.05.03 |
---|---|
악성코드 분석 실습 ( Lab07_02 ) [ COM Object ] (0) | 2018.05.03 |
악성코드 기초 동적분석 ( Lab07_01 / SysAnalyzer ) (0) | 2018.05.02 |
악성코드 기초 정적분석 ( Lab07_01 / ExeinfoPE & pestudio ) (0) | 2018.05.02 |
Wireshark Columns설정 (0) | 2018.05.01 |