Try Attack/Malware Analysis[basic]

악성코드 분석[3]

D4tai1 2019. 8. 30.

 

1. 잠재적인 악성코드를

어떻게 찾을 수 있을까요?

 

▶ 특정 함수를 연달아 호출하거나

DLL injection등과 같이 사용하는 함수가

정해져있다면 악성코드일 확률이 높겠지요.

 

 결국 프로그램 기능에 대한 힌트를 줄 수 있는

함수를 찾는 것이 중요합니다.

 


 

일반적으로 프로그램이 사용하는 

공통 DLL을 알아봅시다.

DLL

Description

Kernel32.dll

메모리, 파일, 하드웨어 접근

Advapi32.dll

서비스관리자, 레지스트리 등의 컴포넌트

User32.dll

버튼, 스크롤바, 인터페이스 등의 컴포넌트

GDI32.dll

그래픽 보기, 조작

Ntdll.dll

윈도우 커널 인터페이스

직접 import가 불가능하며 Kernel32.dll을 통해 import

WSock32.dll

Ws2_32.dll

네트워크 관련(연결 등)

Wininet.dll

프로토콜을 구현한 상위 네트워크함수

 

 


 

예를 들어

Kernel32.dll을 import하면?

프로세스를 조작할 수 있다는 말입니다.

 

OpenProcess, GetCurrentProcess, GetProcessHeap,

FindFirstFile, FindNextFile 등

이런 아이(함수)들을 말하지요.

 

Kernel32.dll만 예를 들었지만

Kernel32.dll만 그런 것은 또 아닙니다.

 

 

User32.dll을 import하면?

RegisterClassEx, SetWindowText, ShowWindow 

등의 아이(함수)들을 통해

화면을 조작할 수 있지요.

 

그 외에도

Shell32.dll은

이 프로그램이 다른 프로그램을 실행할 수

있다는 것을 말합니다.

 

중요한 것은 악성코드만 다른 프로그램을

실행하는 것이 아니라는 겁니다.

 

흔하게 보는 게임가드만해도

게임을 실행시키고 자기가 죽는다면 게임도

같이 꺼버리죠 ㅎㅎ

 

Advapi32.dll은 

레지스트리 키와 같은 문자열을 검색할 수 있다는 것을 의미합니다.

Software\Microsoft\Windows\CurrentVersion\Run의 경우

Windows가 부팅할 때마다 자동으로 실행되게 하는

레지스트리 키를 말합니다.

 


실행파일에도

LowLevelKeyboardProc, LowLevelMouseProc와 같은 

export함수가 있을 수 있습니다.

 

마이크로소프트 문서를 보면 

LowLevelKeyboardProc 후킹 절차는

SetWindowsHookEx함수와 함께 사용되는

애플리케이션이나 라이브러리가 정의한 콜백함수라고 

정의되어 있습니다.

 

SetWindowsHookEx를 이용해서 특정 이벤트가 발생했을 경우

어떤 함수를 호출해야 하는지 명시합니다.

'Try Attack > Malware Analysis[basic]' 카테고리의 다른 글

Anti-VM 기법  (0) 2019.09.13
[논문요약] 악성코드 정적탐지를 위한 PE의 Rich헤더 활용방법  (0) 2019.09.04
악성코드 분석[4]  (0) 2019.09.01
악성코드 분석[2]  (0) 2019.08.28
악성코드 분석[1]  (0) 2019.08.28

댓글