악성코드에 자주 사용되는 API 함수


DLL Injection에서 사용되는 API //특정 프로세스에 DLL Injection 실행 

OpenProcess   

VirtualAllocEx

WriteProcessMemory

LoadLibraryA

GetProcAddress

CreateRemoteThread 


Resource 섹션에 있는 리소스 사용 API //Resource 섹션에 암호화된 데이터를 해제하여 메모리에 기록

LoadResource   

SizeofResource 

LockResource 

FreeResource 

FindResourceA


특정 파일 이름 확인 //특정한 이름의 파일을 읽고, 생성하고, 기록하고, 복사 

WriteFile    

lstrcmpiA 

ReadFile 

DeleteFileA 

CreateFileA 

CopyFileA 

CreateProcessA 

FindFirstFileA 


레지스트리에 관련 API //레지스트리에 특정한 키의 생성과 삭제가 이루어짐

RegSetValueExA   

RegEnumValueA 

RegDeleteKeyA

RegCreateKeyExA

OpenProcessToken


암호화와 관련된 API //Resource 섹션에 암호화된 데이터를 해제하여 어딘가에 기록 

CryptCreateHash 

CryptHashData 

CryptGetHashParam 

CryptAcquireContextA


-------------------------------------------------------------------------------------------------------


File 관련 API 

WriteFile   

ReadFile 

CreateFile 

CopyFile 

MoveFile 


Thread 관련 API 

LoadLibrary  

CreateThread 

ResumeThread 

CreateRemoteThread 


로깅 관련 API

Mouse_event  

Keybd_event 

GetAsyncKeyState 


Internet 관련 API 

internetWriteFile

InternetConnect   


네트워크 관련 API

WSAStartup   

Gethostbyname 

Gethostbyaddr 

Socket 

Send Recv 

Inet_addr 


FTP 관련 API 

FtpOpenFile

FtpGetFileSize 


기타 API 함수 목록 

CreateMutex 

capCreateCaptureWindows 

ClientToScreen 



메모리 관련 함수

VirtualAlloc() //가상 메모리 할당

VirtualFree() //가상 메모리 해제

VirtualProtect() // 메모리 보호 설정 값 변경


-------------------------------------------------------------------------------------------------------


GetModuleFileName

- 현재 실행되고 있는 위치 구한다.


GetKeyboardType

- 현재 키보드 타입을 구한다.


GetLocaleinfo

- 현재 설정되어 있는 국가/지역에 대한 정보를 구한다.


CreateFile 

- 핸들값 반환 받는다.


WriteFile

- 핸들 값 받아서 파일을 쓴다. //CreateFile로 반환받은 핸들값을 통해 파일을 쓴다.(파일 수정/변조 등)


SetFileAttributes 

- 파일의 속성을 바꾼다.


GetTempPathA

- 경로 탐색 API


CreateFileA

- 파일 생성 API


Shellexecute


WinExec

- 생성 파일 실행 센스 API


GetStartupInfoA

GetModuleHandleA

- 파일의 위치를 구할 때 사용


RegopenKeyExA 

- 레지스트리를 열어볼 때 사용


CopyFileA

- 파일을 폴더로 복사시키는 역활


CreateServiceA

- 서비스등록


CreateProcessA 

- Cmd로 자가 삭제


FindResourceA

- 리소스 찾기


SizeofResource

- 크기검색


SizeofResource

- 첫 바이트 획득


-------------------------------------------------------------------------------------------------------


VMWARE

- magic_num : VMXh


VirtualBox

- \\\.\\VBoxMiniRdrDn

- VboxHook.dll


GetLogicalDrives

- 드라이브 찾기


GetDiskFreeSpaceExW

- 용량 정보를 가져온다. (VM의 경우 보통 20G)


-------------------------------------------------------------------------------------------------------


GetTickCount()

DWORD GetTickCount(VOID); // OS 부팅 후 msec(1/1000초) 단위로 시간을 돌려주는 함수

윈도우즈가 부팅된 후 1초에 1000씩 틱 카운트를 증가 시킨다.

카운트는 32비트값이므로 최대 49.7일간의 카운트를 유지할 수 있다.

특정 루틴 시작 전과 후의 시간 값을 측정하여 차이를 확인하고 Debugger가 존재하는 지 확인 .(SUB 명령어를 통해 비교)


-------------------------------------------------------------------------------------------------------


추가

malloc함수로 할당 할 수 있는 메모리블럭의 크기에는 한계가 있다.(약 256MB까지 밖에안된다고 들음)

VirtualAlloc함수는 대용량의 메모리를 다룰때 사용한다.



정리가 잘 되어있어서 나름 읽고 재정리



출처: http://vencedor.tistory.com/9 [vencedor]



여기도 정리 잘되어있음

추가 : http://hack4profit.com/archives/204

'Programming > WinAPI' 카테고리의 다른 글

[API함수] WaitForSingleObject  (0) 2017.03.02
WinAPI WinMain과 윈도우 클래스  (0) 2017.02.08
WinAPI 핸들에 대한 이해  (0) 2017.02.08
API란?  (0) 2017.02.08
WinAPI 윈도우의 특징  (0) 2017.02.08

+ Recent posts