* NtSetInfomationProcess
프로그램 권한 수준을 변경하거나 데이터 실행 방지(DEP)를 우회할 때 사용한다.
* OleInitialize
COM 라이브러리를 초기화할 때 사용한다. COM 객체를 사용하는 프로그램은 다른 COM 함수를 호출하기 이전 OleInitialize를 호출해야만 한다.
* OpenMutex
악성코드가 시스템에서 특정 시간에 하나의 인스턴스만 실행하게 보장하는 상호 배제 객체 핸들을 오픈한다. 악성코드는 뮤텍스명을 고정하는 경우가 많으므로 좋은 호스트 기반 감염 흔적이 될 수 있다.
* OpenProcess
시스템 동작 중인 다른 프로세스 핸들을 오픈한다. 이 핸들은 다른 프로세스 메모리로 읽고 쓰거나 다른 프로세스로 코드로 주입할 때 사용한다.
* OpenSCManager
서비스 제어 관리자 핸들을 오픈한다. 서비스를 설치, 수정, 제어하는 임의의 프로그램은 다른 서비스 조작 함수 이전에 반드시 이 함수를 호출해야만 한다.
* OutputDebugString
디버거에 붙으면(attach) 문자를 출력한다. 이는 안티디버깅 기법으로 사용할 수 있다.
* PeekNamePipe
파이프에서 데이터를 삭제하지 않고 명명한 파이프에서 데이터를 복제할 때 사용한다.
이 함수는 리버스 셸에 자주 사용한다.
* Process32First/Process32Next
CreateToolhelp32Snapshot 이전 호출에서 프로세스를 수집하기 시작할 때 사용한다.
악성코드는 인젝션할 프로세스를 검색할 때 프로새스를 검색한다.
* QueryPerformanceCounter
하드웨어 기반 성능 카운터 값을 검색할 때 사용한다. 이 함수는 때때로 안티디버깅 기법의 일부로 시간 정보를 입수할 때 사용한다. 컴파일러가 종종 추가해 많은 실행 파일에서 포함하고 있으므로 이 함수를 임포트했다는 사실 자체가 제공하는 정보는 거의 없다.
* QueueUserAPC
다른 스레드에서 코드를 실행할 때 사용한다. 악성코드는 QueueUserAPC를 이용해 다른 프로세스에 코드를 주입한다.
* ReadProcessMemory
원격 프로세스 메모리를 읽을 때 사용한다.
* recv
원격 시스템에서 데이터를 수신한다. 악성코드는 종종 이 함수를 이용해 외부 명령어 제어 서버에서 데이터를 수신한다.
* RegisterHotKey
사용자가 특정 키 조합(CTRL-ALT-J)을 입력할 시점을 알려주는 핸들러를 등록할 때 사용한다. 이 함수는 사용자가 키 조합을 입력할 때 활성화된 윈도우와 관계 없다. 이 함수는 때때로 스파이웨어가 특정 키 조합을 입력할 때까지 은폐할 때 사용한다.
* RegOpenKey
레지스트리 키를 읽고 편집하는 핸들을 오픈한다. 레지스트리 키는 때때로 소프트웨어가 호스트에 기록할 때 쓰기도 한다. 레지스트리는 운영체제 전체와 애플리케이션 설정 정보를 갖고 있다.
* ResumeThread
이전에 중단한 스레드를 제거한다. ResumeThread는 인젝션 기법의 일부로 사용한다.
* RtlCreateRegistryKey
커널 모드 코드에서 레지스트리를 생성할 때 사용한다.
* RtlWriteRegistryValue
커널 모드 코드에서 레지스트리를 작성할 때 사용한다.
* SamIConnect
계정 정보에 접근하는 호출을 위해 보안 계정 관리자(SAM, Security Account Manager)에 접속한다. 해시를 덤프하는 프로그램은 사용자의 로그인 패스워드 해시를 수집할 용도로 SAM 데이터베이스에 접근한다.
'악성코드분석(리버싱)' 카테고리의 다른 글
악성코드 분석가가 주로 보게되는 윈도우 함수 6 (0) | 2017.07.18 |
---|---|
악성코드 분석가가 주로 보게 되는 윈도우 함수 4 (0) | 2017.07.17 |
악성코드 분석가가 주로 보게 되는 윈도우 함수 3 (0) | 2017.07.17 |
악성코드 분석가가 주로 보게 되는 윈도우 함수 2 (0) | 2017.07.17 |
악성코드 분석가가 주로 보게 되는 윈도우 함수 1 (0) | 2017.07.13 |