정적 기초 분석을 수행하면서 임포트 테이블 정보를 수집하려 하거나 제대로 고급 기법을 이용하려 할 때 참고
* accept
들어오는 연결을 리스닝할 때 사용한다. 이 함수는 프로그램이 소켓에서 수신 연결을 리스닝하고 있음을 암시한다.
* AdjustTokenPrivileges
특정 권한을 활성화하거나 비활성화할 때 사용한다. 프로세스 인젝션을 행하는 악성코드는 종종 추가 권한을 얻기 위해 이 함수를 호출한다.
* AttachThreadInput
두 번째 쓰레드가 키보드나 마우스 같은 입력 이벤트를 수신할 수 있게 하나의 쓰레드가 다른 쓰레드의 입력을 처리할 때 사용한다. 키로거나 스파이웨어가 이 함수를 이용한다.
* bind
들어오는 연결을 리스닝할 목적으로 로컬 주소에 연관 지을 때 사용한다.
* BitBlt
한 장치에서 다른 장치로 그래픽 데이터를 복사할 때 사용한다. 스파이웨어는 이 함수를 이용해 화면을 캡쳐한다.
이 함수는 라이브러리 코드의 일부로 컴파일러가 종종 추가한다.
* CallNextHookEx
SetWindowsHookEx가 설정한 이벤트를 후킹하는 코드 내에서 사용한다. CallNextHookEx 함수는 체인 내의 다음 후킹을 호출한다.
SetWindowsHookEx가 설정한 후킹의 목적을 알아내려면 CallNextHookEx을 호출한 함수를 분석하면 된다.
* CertOpenSystemStore
로컬 시스템에 저장한 인증서에 접근할 때 사용한다.
* CheckRemoteDebuggerPresent
특정 프로세스가 디버깅 중인지 확인한다. 이 함수는 때로 안티디버깅 기법의 일부로 사용한다.
* CoCreateInstance
COM 객체를 생성한다. COM 객체는 광범위한 기능을 제공한다. 클래스 식별자(CLSID)를 통해 어떤 파일이 COM 체를 구현한 코드를 갖고 있는지 알 수 있다.
* connect
원격 소켓에 연결할 때 사용한다. 악성코드는 명령 제어 서버에 연결하는 하위 수준의 함수를 종종 사용한다.
* ConnectNamedPipe
접속하는 클라이언트 파이프를 기다리는 내부 프로세스 통신에 사용하는 서버 파이프를 생성한다.
백도어와 리버스 쉘은 때로 ConnectNamedPipe를 이용해 명령 제어 연결을 단순화한다.
* ControlService
실행 중인 서비스를 시작, 중지, 수정하거나 시그널을 보낼 때 사용한다.
악성코드가 악의적인 서비스를 이용하고 있다면 호출 용도를 확인하기 위해 서비스를
구현한 코드를 분석할 필요가 있다.
* CreateFile
새로운 파일을 생성하거나 기존 파일을 오픈한다.
* CreateFileMapping
파일을 메모리로 로드하는 파일 매핑 핸들을 생성하고 메모리 주소를 통해 접근할 수 있게 한다.
실행기(Launcher), 로더, 인젝터는 이 함수를 이용해 PE 파일을 읽고 수정한다.
* CreateMutex
악성코드가 특정 시간에 시스템에서 하나의 인스턴스 생성만 보장하게 악성코드가 사용할 수 있는
상호 배제(mutual exclusion)를 생성한다.
악성코드는 고정된 뮤텍스명을 이용하는데, 악성코드의 추가 감염을 탐지할 수 있는 좋은 호스트 기반의 감염 흔적으로 사용할 수 있다.
* CreateProcess
새로운 프로세스를 생성하고 실행한다.
악성코드가 신규 프로세스를 생성하면 새로운 프로세스 역시 분석할 필요가 있다.
* CreateRemoteThread
원격 프로세스(호출 프로세스가 아닌)에서 쓰레드를 시작할 때 사용한다.
실행기와 은폐형 악성코드는 CreateRemoteThread를 이용해 다른 프로세스에 코드를 주입한다.
'악성코드분석(리버싱)' 카테고리의 다른 글
악성코드 분석가가 주로 보게 되는 윈도우 함수 3 (0) | 2017.07.17 |
---|---|
악성코드 분석가가 주로 보게 되는 윈도우 함수 2 (0) | 2017.07.17 |
1장 연습문제 1-4 (0) | 2017.07.13 |
1장 연습문제 1-3 (0) | 2017.07.13 |
1장 연습문제 1-2 (0) | 2017.07.13 |