Code Injection(코드 인젝션)
코드 인젝션은 특정 프로세스가 자신의 코드의 일부나 전체를 다른 대상 프로세스에 삽입하고, 그 대상 프로세스가 해당 코드를 실행하게 만드는 기법이다.
Code Injection의 종류
- Process Hollowing(프로세스 할로잉)
- Thread Injection(스레드 인젝션)
- DLL Injection
- Classical DLL Injection(기존 DLL 인젝션)
- Reflective DLL Injection(반사 DLL 인젝션
- ShellCode Injection
- Code Cave
- QueueUserAPC
- Atom Bombing(아톰 바밍)
Code Injection의 대상
코드 인젝션을 진행하기 전에
Code Injection의 목적
코드 인젝션은 사용자 모드와 커널 모드에서 실행될 수 있다. 악성코드는 주로 아래와 같은 목적으로 코드 인젝션을 활용한다.
- 악성코드 은닉
- Process Piggybacking(프로세스 편승)
- 특정 프로세스 또는 전체 OS 기능 변경
악성코드 은닉
악성코드는 작업 관리자에서 쉽게 발견되지 않기를 원하며, 보안 솔루션에도 탐지 되지 않기를 바란다. 이를 위해 다른 합법적인 프로세스에 코드의 일부나 전체를 삽입하고, 원래의 악성프로세스를 종료한다. 원래의 프로세스는 종료되어도 합법적인 프로세스에 삽입된 코드를 통해 악성 행위를 지속할 수 있다. 이로 인해 작업 관리자나 보안 솔루션에 의한 탐지를 피할 수 있다.
프로세스 편승
악성코드가 인터넷 연결을 시도할 때, 시스템의 방화벽이나 보안 솔루션이 이를 차단할 수 있다. 이는 시스템 방화벽 및 보안 솔루션이 특정 프로세스만 인터넷 연결을 허용하고, 나머지는 차단하는 제로 트러스트 환경에 해당될 수 있다. 따라서 악성코드는 이를 우회하기 위한 코드 인젝션을 사용한다.
악성코드는 인터넷 연결이 허용된 프로세스(explorer, svchost, winlogon 등)에 코드 인젝션을 해서 합법적인 프로세스의 권한이나 특권에 편승(Piggybacking) 한다.
특정 프로세스 또는 전체 OS 기능 변경
코드 인젝션의 주된 목적 중 하나는 특정 프로세스나 전체 OS/시스템의 기능을 수정하는 것이다. 이는 주로 악성코드가 코드 후킹, 루트킷, API 후킹 등의 기술을 활용하는 MITB(Man-in-the-Browser) 유형에서 사용된다.
사용자나 보안 솔루션은 시스템 디스크의 파일을 삭제하기 위해 윈도우에서 제공하는 DeleteFile() Win32API를 사용한다. 예를 들어 사용자나 보안 솔루션이 자신의 파일을 삭제하지 못하게 하려는 의도를 가진 `malware.exe`라는 악성코드 라고 가정해보자.
malware.exe는 파일 삭제를 방지하기 위해서 코드 인젝션이나 API 후킹을 사용해 DeleteFile() API 함수를 수정할 수 있다. malware.exe은 DeleteFile() API를 하이재킹해 수정한 뒤, FakeDeletFile()이라는 가짜 버전의 API로 제어를 넘긴다. FakeDeleteFile()은 malware.exe의 삭제 요청인지 확인하고, 만약 사용자가 malware.exe 파일의 삭제를 요청했다면 파일을 삭제하지 않는다. 그렇지 않으면 원래의 DeleteFile() API로 요청을 전달해 파일 삭제를 진행한다.
코드 인젝션의 과정
사용자 모드 코드 인젝션의 과정
'Security > 정보보안 지식 복기 아카이브' 카테고리의 다른 글
Code Injection, DLL Injection, Process Hollowing, Process Piggybacking, API Hooking 정의, 특징, 각 차이점 (0) | 2025.06.29 |
---|---|
Process Piggybacking (0) | 2025.06.29 |
Process Hollowing (0) | 2025.06.29 |
DLL Injection (0) | 2025.06.29 |
About Windows PE Binary, Structure, Sections (0) | 2025.06.24 |