요약 및 비교
기법 | Injection 대상 | 작동 방식 | 특징 |
Code Injection | 메모리 | WriteProcessMemory + CreateRemoteThread | 가장 일반적인 코드 삽입 기법 |
DLL Injection | PE DLL | LoadLibary, 수동 매핑 | PE 형식 DLL 로드 |
Process Hollowing | 정상 프로세스 | Inmap -> Injection -> Resume | 프로세스 ID, 권한 유지하며 은닉성 높음 |
Process Piggybacking | 트랜잭션 파일 | TxF 기반 가짜 PE 파일 생성 -> 실행 | 디스크 기록 없이 프로세스 교체함 |
API Hooking | API(함수) 호출 | 인라인, 테이블 패치 | 함수 레벨에서 호출을 가로챔 |
Code Injection(코드 인젝션)
- 정의
실행 중인 프로세스 메모리 영역에 임의의 코드를 삽입하고, 삽입된 코드가 실행되도록 만드는 기법이다. - 방식
- `VirtualAllocEx` / `WriteProcessMemory`로 메모리 할당 및 쓰기 작업 수행
- `CreateRemoteThread`로 원격 스레드 생성
- 특징
- 대상 프로세스 어떤 것이던지 가능함
- 삽입되는 코드는 PE 포맷이 아닌 순수 기계어로 작성된 코드일 수도 있음 - 기법 별 상관 관계
- DLL 인젝션, 프로세스 할로잉 등 여러 기법의 상위 관계에 있음
DLL Injection(DLL 인젝션)
- 정의
외부 DLL 파일을 대상으로 하는 프로세스에 로드시켜, DLL 내부의 실행 함수를 통해 악성 행위나 hook 동작을 수행하게 만드는 기법이다. - 방식
- 원격 프로세스에 `LoadLibrary` 호출
- 레지스트리나 `AppInit_DLLs`, `SetWindowsHookEx` 등 윈도우 기능을 악용하여 수행함
- 특징
- 코드 삽입 후 DLL 내부의 DllMain이나 Manual Mapping(수동 맵핑)된 진입점을 통해 실행됨.
- 코드 인젝션의 한 형태이지만 PE 형식 DLL을 직접 로드한다는 점이 DLL Injection임을 구분할 수 있는 구분점임
Process Hollowing(프로세스 할로잉)
- 정의
정상 실행 중인 프로세스의 메모리 공간을 통째로 지우고, 그 자이레 다른 실행 파일의 이미지(Code, Data)를 덮어씌워 실행하는 기법이다. - 방식
- `CreateProcess`를 CREATE_SUSPENDED 플래그로 호출
- `NtUnmapViewOfSection`으로 원본 이미지 Unmap
- 악성 PE 이미지를 `WriteProcessMemory`로 주입
- Register Context 조작 후 `ResumeThread` 호출
- 특징
- 프로세스 ID, 핸들, 권한을 그대로 유지한 채 작동됨
- 파일 시스템, 레지스트리 기록은 정상 프로세스의 것 처럼 보이므로 탐지가 어려워짐
Process Piggybacking(프로세스 편승)
- 정의
윈도우 트랜잭션 파일 시스템(TxF)을 악용하여 디스크에 기록되지 않는 가짜 PE 이미지를 만들고, 정상 프로세스처럼 실행시키는 기법이다.
주로 인가되지 않은 권한의 API를 호출하기 위해 사용된다. (ex: 제로 트러스트 기반의 시스템에서 방화벽 등 보안 솔루션에 의해 악성코드의 인터넷 연결 시도가 차단될 경우, 악성코드는 인터넷 연결이 허용된 프로세스(explorer, svchost winlogon 등)에 코드 인젝션을 하여 합법적인 프로세스의 권한이나 특권에 편승(Piggybacking) 한다.) - 방식
- Transactional API (`CreateTransaction`, `CreateFileTransacted`)로 가짜 PE 이미지 준비
- `NtSetInformationProcess` 등으로 정상 프로세스를 일시 중단시킴
- 이미지 교체 후 프로세스 실행 재개
- 특징
- 디스크에 흔적을 남기지 않는다
- AV/EDR 솔루션이 파일 기반 모니터링만 하는 경우 Process Piggybacking 기법이 보안 솔루션으로부터 우회될 수 있다.
- Process Hollowing과의 차이점
- Process Hollowing은 정상 이미지 unmap 한 뒤, 주입하는 방식
- 트랜잭션 레이어에서 가짜 PE 이미지를 만들어 주입한다는 점에서 근본적으로 다름
API Hooking(API 후킹)
- 정의
애플리케이션이나 시스템 레벨에서 특정 API의 호출 흐름을 가로채 원하는 동작을 삽입하거나 변경하도록 하는 기법이다. - 방식
- 인라인 패치 : 대상 함수 앞부분에 점프 명령어를 삽입하는 방식
- IAT 조작 : Import Address Table 항목을 수정하여 hook 하는 방식
- EAT 조작 : Export Address Table 항목을 수정하여 hook 하는 방식
- 특징
- 실행 중인 프로세스의 내부에서만 작동한다는 한계점이 존재함
- 악성 행위, 디버깅, 로깅, 보안 솔루션 우회 등 다양한 목적으로 사용됨
'Security > 악성코드 분석 공부' 카테고리의 다른 글
Code Injection, DLL Injection, Process Hollowing, Process Piggybacking, API Hooking (0) | 2025.06.29 |
---|---|
API Hooking (0) | 2025.06.29 |
Process Piggybacking (0) | 2025.06.29 |
Process Hollowing (0) | 2025.06.29 |
DLL Injection (0) | 2025.06.29 |