Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
FalconEye — 프로세스 인젝션 기법(셸코드, DLL, 리플렉티브 인젝션 포함)을 실시간 탐지하기 위한 커널 모드 Windows 드라이버로, 시스템 콜 후킹 및 이상 탐지를 제공합니다. | Kitploit
도구/GitHubGitHub/rajiv2790/falconeye
Defensive ToolsMalware AnalysisBinary AnalysisIntrusion Detection
GitHubrajiv2790/falconeye

FalconEye

프로세스 인젝션 기법(셸코드, DLL, 리플렉티브 인젝션 포함)을 실시간 탐지하기 위한 커널 모드 Windows 드라이버로, 시스템 콜 후킹 및 이상 탐지를 제공합니다.

저장소 보기
310675년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

FalconEye: 윈도우 프로세스 인젝션 실시간 탐지 소프트웨어

FalconEye는 실시간 프로세스 인젝션을 위한 윈도우 엔드포인트 탐지 소프트웨어입니다. 커널 모드 드라이버로서, 프로세스 인젝션이 발생하는 즉시(실시간으로) 탐지하는 것을 목표로 합니다. FalconEye는 커널 모드에서 실행되므로, 다양한 사용자 모드 후크를 회피하려는 프로세스 인젝션 기술에 대해 더 강력하고 신뢰할 수 있는 방어를 제공합니다.

발표 자료는 2021 Blackhat ASIA Arsenal과 슬라이드에서 확인할 수 있습니다.

프로젝트 개요

탐지 범위

아래 표는 다양한 프로세스 인젝션 기술에 대한 구현 상태와 탐지 로직을 보여줍니다. WPM은 WriteProcessMemory를 의미합니다. 탐지를 테스트하려면 참고 문헌 섹션을 참조하세요.

기술상태탐지 방법POC Used
Atombombing✓QueueUserAPC를 후킹하고 GlobalGetAtom 함수 계열을 검색Pinjectra
Instrumentation callback injection✓플로팅 코드에서 새 스레드가 생성되는지 탐지https://github.com/antonioCoco/Mapping-Injection
Reflective DLL Injection✓플로팅 코드에서 새 스레드가 생성되는지 및 PE 헤더가 피해자에 작성되는지 탐지MInjector
PROPagate✓SetProp을 후킹하여 작성 중인 속성의 주소를 얻고 이전 WPM 호출과 상관 분석하여 플로팅 코드의 주소를 얻음Pinjectra
Process Hollowing✓타겟 프로세스 메모리에 작성된 PE 헤더를 사용하여 탐지MInjector
CreateRemoteThread with LoadLibrary✓시작 주소가 LoadLibrary를 가리키는 새 스레드. MInjector 버전은 WPM을 사용하여 DLL 경로를 작성하며, 이 또한 탐지됨MInjector, Pinjectra
CreateRemoteThread with MapViewOfFile✓플로팅 코드에서 새 스레드가 생성되는지 탐지Pinjectra
Suspend-Inject-Resume✓플로팅 코드에서 새 스레드가 생성되는지 탐지(MInjector). DLL 경로가 WPM을 통해 작성됨(MInjector). 이전에 일시 중단된 스레드에 컨텍스트가 설정되었는지 탐지(Pinjectra)MInjector, Pinjectra
QueueUserAPC✓DLL 경로가 WPM을 통해 작성됨MInjector
QueueUserAPC with memset (Stackbombing)✓QueueUserAPC를 후킹하고 memset을 검색Pinjectra
SetWindowLong (Extra window memory injection)✓SetWindowLong을 후킹하여 작성 중인 함수 포인터의 주소를 얻고 이전 WPM 호출과 상관 분석하여 플로팅 코드의 주소를 얻음Pinjectra
Unmap + Overwrite✓공격자가 피해자로부터 ntdll을 언매핑하는 경우 경고Pinjectra
Kernel Ctrl Table✓WPM이 피해자의 PEB에서 KernelCallbackTable 필드를 덮어쓰는지 탐지https://github.com/odzhan/injection/blob/master/kct
USERDATA✓WPM 대상 주소가 conhost.exe 범위에 있는지 확인. 그렇다면 conhost의 관련 함수 포인터가 이전에 저장된 WPM 주소와 일치하는지 확인https://github.com/odzhan/injection/blob/master/conhost
Ctrl-inject✓공격자가 피해자의 KernelBase.dll 범위에서 WPM을 수행하는지 탐지Pinjectra
ALPC Callback

아키텍처 개요

alt text

  1. 드라이버는 온디맨드 로드 드라이버입니다.
  2. 초기화에는 libinfinityhook을 통한 콜백 및 시스템 콜 후크 설정이 포함됩니다.
  3. 콜백은 OpenProcess와 같은 프로세스 간 활동에서 구축된 PID 맵을 유지하지만 OpenProcess에 국한되지는 않습니다.
  4. 이후 콜백 및 시스템 콜 후크는 이 PID 맵을 사용하여 처리 시 노이즈를 줄입니다. 노이즈 감소의 일환으로 시스템 콜 후크는 동일한 프로세스 활동을 필터링합니다.
  5. 탐지 로직은 무상태(예: Atombombing), 상태 저장(Unmap+Overwrite), 플로팅 코드(여러 기술의 쉘코드)의 하위 범주로 나뉩니다.
  6. 상태 저장 탐지의 경우 시스템 콜 후크는 순환 버퍼로 구현된 ActionHistory를 기록합니다. 예를 들어, 호출자 프로세스가 대상 프로세스와 다른 모든 NtWriteVirtualMemory 호출을 기록합니다.
  7. 탐지 로직에는 플로팅 코드 탐지 및 원격 프로세스의 쉘코드 트리거 탐지와 같은 공통 이상 탐지 기능이 있습니다. 콜백과 시스템 콜 후크 모두 이 공통 기능을 호출하여 실제 탐지를 수행합니다.

참고: 우리의 초점은 탐지에 있었으며 성능이 뛰어난 탐지 엔진을 만드는 것이 아닙니다. BlackHat 발표 이후에도 이러한 노력을 계속할 것입니다.

파일

root@kitploit:~
.
├── src 
│   ├── FalconEye ---------------------------# FalconEye user and kernel space
│   └── libinfinityhook ---------------------# Kernel hook implementation
├── 2021BHASIA_FalconEye.pdf
└── README.md

시작하기

사전 요구 사항

  1. Windows 10 Build 1903/1909
  2. Microsoft Visual Studio 2019 이상
  3. VmWare, Hyper-V와 같은 가상화 소프트웨어 (선택 사항)

설치

빌드

  1. Visual Studio 2019로 솔루션 열기
  2. 빌드 플랫폼으로 x64 선택
  3. 솔루션 빌드. 그러면 src\kernel\FalconEye\x64\Debug 또는 src\kernel\FalconEye\x64\Release 아래에 FalconEye.sys 바이너리가 생성됩니다.

테스트 머신 설정

  1. VM에 Windows 10 Build 1903/1909 설치
  2. 서명되지 않은 드라이버 테스트를 위해 VM 구성
    • bcdedit을 사용하여 무결성 검사 비활성화: BCDEDIT /set nointegritychecks ON
  3. VM에서 sysinternals의 DbgView를 실행하거나 WinDbg를 사용하여 디버깅 연결을 시작합니다.

사용법

  1. FalconEye.sys를 테스트 머신(Windows 10 VM)으로 복사
  2. OSR Loader 또는 유사한 도구를 사용하여 FalconEye.sys를 'On Demand' 로드 드라이버로 로드
  3. pinjectra, minjector 또는 다른 샘플과 같은 인젝션 테스트 도구 실행
  4. WinDbg 또는 DbgView를 통해 디버그 로그 모니터링

참고 문헌

InfinityHook, 2019

Itzik Kotler and Amit Klein. Process Injection Techniques - Gotta Catch Them All, Blackhat USA Briengs, 2019

Pinjectra, 2019

Mapping-Injection, 2020

Atombombing: Brand new code injection for windows, 2016

Propagate - a new code injection trick, 2017

Windows process injection: Extra window bytes, 2018

Pavel Asinovsky. Diving into zberp's unconventional process injection technique, 2016

Rotem Kerner. Ctrl-inject, 2018

Windows process injection: Consolewindowclass, 2018

Windows process injection: Windows notication facility, 2018

A paradox: Writing to another process without openning it nor actually writing to it, 2007

Windows process injection: Service control handler, 2018

Marcos Oviedo. Memhunter - Automated hunting of memory resident malware at scale. Defcon Demo Labs, 2019

라이선스 조건

FalconEye는 Apache 2.0 오픈 소스 라이선스에 따라 라이선스가 부여됩니다.

도구 다운로드
✓
ALPC 포트에 대한 NtConnectPort 호출에서 피해자 PID를 추출. 공격자-피해자 PID 쌍에 대해 이전 WPM 호출을 확인하고 플로팅 코드 탐지 적용
Pinjectra
WNF Callback✓WPM 후 UpdateWNFStateData 호출https://github.com/odzhan/injection/tree/master/wnf
SetWindowsHook✓NtUserSetWindowsHookEx 후크에 등록된 모듈 경로를 저장. 이후 이 경로와 일치하는 모듈이 다른 프로세스에 로드되면 경고 생성MInjector
GhostWriting✓이전에 일시 중단된 스레드에 컨텍스트가 설정되었는지(NtSetContextThread 호출) 탐지Pinjectra
Service Control✓WPM이 프로세스(서비스)의 Service ID를 덮어씀https://github.com/odzhan/injection/tree/master/svcctrl
Shellcode injection✓플로팅 코드에서 시작된 새 스레드. DLL 경로가 WPM에 의해 작성됨MInjector
Image Mapping✓플로팅 코드에서 시작된 스레드. PE 헤더가 WPM에 의해 작성됨. DLL 경로가 WPM에 의해 작성됨MInjector
Thread Reuse✓플로팅 코드에서 시작된 스레드. DLL 경로가 WPM에 의해 작성됨MInjector