
커널 모드 프로세스 종료기로, 서명된 BYOVD 드라이버를 사용합니다. 모든 Windows 10/11에서 작동합니다. 오프셋 없음, PDB 없음. Rust.
크로스 버전 Windows 프로세스 종료 도구입니다. 서명된 HONOR 커널 드라이버(MonProcessEX.sys)를 로드하고, 모든 대상 프로세스의 PID를 확인한 후 단일 IOCTL을 통해 커널 컨텍스트에서 프로세스를 종료합니다. 커널 오프셋, PDB 다운로드, 빌드별 셸코드가 필요 없으며, 이 기법은 모든 Windows 10 및 Windows 11 빌드에서 동일하게 작동합니다.
이 도구는 단일 자체 포함 실행 파일입니다. 서비스 제어 관리자를 통해 드라이버를 설치하고, 종료 작업을 수행한 후 서비스를 중지 및 삭제하여 영구 아티팩트를 남기지 않습니다. 대상은 구성 파일, 명령줄 또는 기본 제공 기본값을 통해 런타임에 구성할 수 있습니다.
설계상 크로스 버전. 하나의 드라이버, 하나의 IOCTL, 하나의 종료 프리미티브. 모든 Windows 10 및 Windows 11 빌드에서 작동합니다.
1. moncrush.exe와 MonProcessEX.sys를 같은 폴더에 둡니다.
2. 관리자 셸에서 실행합니다.
moncrush.exe -n "notepad.exe,calc.exe"
3. 대상이 종료됩니다. 드라이버가 자동으로 언로드됩니다. 완료.
도구 체인, 오프셋, 빌드 단계가 필요 없습니다.
+-------------------------------------------------------------------------------------------+
| 사용자 모드 |
| |
| moncrush.exe |
| |
| +-------------------+ +-------------------+ +---------------------+ |
| | 실행 중인 모든 | | 프로세스 항목을 | | 대상 목록과 | |
| | 프로세스 열거 | -> | 통해 대상 PID | -> | 대조하여 | |
| | | | 확인 | | PID 수집 | |
| +-------------------+ +-------------------+ +----------+----------+ |
| | |
| CreateFileW("\.\MonProcessEX") | |
| DeviceIoControl(IOCTL 0x22400C) | |
| 출력 = 종료 상태 v |
+-------------------------------------------------------------------------------------------+
| 커널 모드 |
| |
| MonProcessEX.sys 서명된 HONOR 커널 드라이버 |
| +---------------------------------------------------------------------------------+ |
| | | |
| | IOCTL 0x22400C -> PID 종료 디스패치 | |
| | | | |
| | | 커널 모드 프로세스 조회 | |
| | v | |
| | EPROCESS 확인 -> 커널 컨텍스트에서 종료 | |
| | | | |
| | v | |
| | 프로세스 종료 경로 호출 | |
| | | |
| +---------------------------------------------------------------------------------+ |
| |
| 정리 |
| +---------------------------------------------------------------------------------+ |
| | SCM 서비스 중지 및 삭제 | |
| | 드라이버 언로드, 영구 아티팩트 없음 | |
| +---------------------------------------------------------------------------------+ |
+-------------------------------------------------------------------------------------------+
드라이버는 PID가 주어지면 프로세스를 종료하는 kill IOCTL을 노출합니다. 사용자 모드 구성 요소는 실행 중인 프로세스를 열거하고 각 대상의 PID를 확인한 후 장치 인터페이스를 통해 제출합니다. 사용자 모드에서 커널 구조를 건드리지 않으므로 이 기법은 Windows 버전 변경에 영향을 받지 않습니다.
cargo build --release --target x86_64-pc-windows-gnu
릴리스 프로필은 LTO와 단일 코드젠 유닛을 활성화합니다. 이 프로젝트는 자체 [workspace] 선언으로 자체 포함되어 있습니다.
moncrush.exe [options]
-s, --silent 모든 콘솔 출력 억제
-r, --repeat 계속 실행, 대상 재확인
-d, --dry-run 종료 없이 대상 열거
-j, --json 머신 판독 가능한 JSON 출력
-l, --list 대상 이름 출력 후 종료
-v, --version 버전 출력 후 종료
-x, --self-destruct 성공적인 실행 후 자체 삭제
--no-check VM 및 디버거 검사 건너뛰기
--delay <ms> 실행 전 대기
--jitter <ms> 반복 간격 무작위화
--max-attempts <n> n회 종료 패스 후 중지 (0=무한)
--svc <name> 사용자 지정 서비스 이름
--driver <path> 사용자 지정 드라이버 파일 경로
-n, --names <csv> 쉼표로 구분된 대상 목록 재정의
-c, --config <path> 구성 파일에서 대상 로드
-h, --help 도움말 표시
종료 코드: 0 정상, 2 대상 없음, 3 드라이버 실패, 5 환경 중단. 대상 확인 순서: --names > --config > targets.conf(디스크) > 기본 제공 기본값.
--no-check로 우회합니다.--delay <ms>는 아무 작업도 하기 전에 대기하여 초기 실행과의 시간 상관관계를 차단합니다.-x는 성공적인 실행 후 실행 파일을 삭제하고 Prefetch 항목을 제거합니다.대상 목록은 재컴파일 없이 완전히 구성 가능합니다:
구성 파일. 실행 파일 옆에 targets.conf를 배치하고, 각 줄에 프로세스 이름을 하나씩 입력합니다. #로 시작하는 줄은 무시됩니다:
MsMpEng.exe
csfalconservice.exe
SentinelAgent.exe
cortex_agent.exe
템플릿은 targets.example.conf로 제공됩니다.
명령줄. moncrush.exe -n "MsMpEng.exe,csfalconservice.exe"
기본 제공 기본값. 구성 파일도 플래그도 없으면 기본 제공 세트는 다음과 같습니다:
MIT. LICENSE 참조.
이 프로젝트는 연구 및 승인된 테스트 목적으로만 게시됩니다. 소유하지 않은 시스템에 서명되지 않았거나 취약한 드라이버를 로드하는 것은 대부분의 관할권에서 불법입니다. 모든 관련 법률과 테스트 대상 시스템의 승인 범위를 준수할 책임은 사용자에게 있습니다.
| 기능 | 세부 사항 |
|---|
| 크로스 버전 | 모든 Windows 10 및 Windows 11 빌드에서 작동, 오프셋 불필요 |
| 커널 모드 종료 | 드라이버가 커널 컨텍스트에서 PID를 종료 |
| PPL 우회 | MonProcessEX.sys 종료 경로가 보호 프로세스 검사를 우회 |
| 서명된 드라이버 | MonProcessEX.sys는 실제 서명된 HONOR 드라이버 |
| MS 차단 규칙 미포함 | Microsoft의 취약 드라이버 차단 규칙에 없음 |
| 자체 충족 | SCM을 통해 드라이버 설치, 시작, 정리 수행 |
| 제로 종속성 | 정적 Rust 바이너리; exe + 드라이버만 배치 후 실행 |
| 구성 가능 | targets.conf 또는 -n, 재컴파일 불필요 |
| 난독화 | 장치 경로 및 대상 목록이 저장 시 암호화됨 |
| 단일 실행 파일 | 단일 바이너리; 셸에서 콘솔 출력, 더블클릭 시 무음 |
| 드라이런 모드 | 실행 전 대상 및 PID 열거 |
| 지터 루프 | --repeat가 무작위 간격으로 재확인 |
| 종료 코드 + JSON | C2 친화적 자동화 인터페이스 |