악성코드 분석[3]
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 |
댓글