API를 가지고 악성코드를 분석하기 위해 API는 무엇이고 어떻게 악성코드를 판별하는지 공부하겠습니다
본 게시글은 '보안공학연구논문지 (Journal of Security Engineering), 제 8권 제 5호 2011년 10월'에 있는
'문자열과 API를 이용한 악성코드 자동 분류 시스템' 논문을 참고하여 제가 이해한 대로 정리했습니다
http://www.sersc.org/journals/JSE/vol8_no5_2011/8.pdf
API
Application Programming Interface로 응용프로그램 프로그래밍 인터페이스 입니다.
응용프로그램에서 시스템 자원을 사용할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 미리 정해진 메소드 입니다
가독성을 높이기 위하여 잘라서 쓰겠습니다
응용프로그램은
시스템자원을 사용 하거나
다른 응용프로그램과 상호작용을 할 때
반드시 API를 통과해야 하며
프로그램 내부에서 호출되는 함수형태로 구현
즉 API는 시스템자원 사용과 다른 응용프로그램과 상호작용을 할때 반드시 필요합니다
Windows 에서는 Windows API로 제공을 하는데 동적 라이브러리(DLL)에 포함되어 있으며
윈도우 프로그래밍시 DLL을 링크해서 사용 가능합니다
Windows API는 사용자모드와 커널모드에서 동작하고 커널모드에서 동작하는 API를 Native API라고 합니다
커널모드=Native API
DLL |
설명 |
API |
Kernel32.dll |
메모리관리, 파일 입출력 등 윈도우 커널이 제공하는 모든 작업 처리 |
LoadLibraryA, GetCurrentProcess, ExitProcess, TerminateProcess 등 |
User32.dll |
모든 윈도우 로직을 조작하기 위한 사용자 인터페이스 제공 |
MessageBoxA, CreateWindowExA, SetCaoture, SendMessageA 등 |
API 리스트 추출 방법
1. 바이러니 실행파일 자체에서 추출
바이러니 실행파일 자체에서 추출하는 방법은 PE파일 분석을 통해 IAT를 찾고
IAT로부터 포함된 API리스트를 추출하는 방법입니다
2. 프로그램 동작 중 호출되는 API를 후킹
SSAT후킹
IDT후킹
변종 악성코으의 경우 사용하지 않는 기능을 프로그램에 추가하여 생성되는 경우가 많은데 이러한 동적 분석 방법은 실제 프로그램이 동작하기 위해 호출하는 API만을 추출할 수 있기 때문에 더욱 정확한 분석이 가능합니다
또한 인터럽트후킹 방식을 사용하여 호출되는 API 항목 및 그 횟수를 측정하여 유사도 계산에 활용합니다
'프로젝트 개인공부 > 악성코드 분석' 카테고리의 다른 글
[악성코드분석] PE (portable Executable) 기초 개념잡기 (0) | 2016.07.03 |
---|