
Windows 분석 및 연구 툴킷
⚠️ 이 프로젝트의 일부는 AI 지원으로 바이브 코딩되었기 때문에 버그가 있을 수 있습니다. 커널 드라이버(KWinSys)는 연구 목적으로만 테스트 VM에 설치해야 합니다.

| 컴포넌트 | 역할 |
|---|---|
| NtWarden | GUI 앱 (ImGui + DirectX 11) |
| WinSys | 프로세스, 서비스, 네트워크 열거용 정적 라이브러리 |
| KWinSys |
프로세스 컨텍스트 메뉴에서 접근할 수 있는 프로세스별 보안 분석.
요구 사항: Visual Studio 2022, Windows SDK 10.0.26100.0+, WDK (KWinSys용)
NtWarden.sln
├── NtWarden/ # GUI app
├── WinSys/ # Core library (static lib)
├── KWinSys/ # Kernel driver
└── WinSysServer/ # Remote server
NtWarden.sln을 엽니다.x64/Release/에 생성됩니다.KWinSys는 테스트 서명 또는 유효한 서명이 필요합니다.
# Enable test signing (reboot required)
bcdedit /set testsigning on
# On VMs you may also need
bcdedit /set nointegritychecks on
NtWarden을 관리자로 실행하세요. 커널 모드 탭으로 전환하면 드라이버가 아직 로드되지 않은 경우 자동으로 설치되고 시작됩니다. 드라이버 메뉴에서 수동으로 관리할 수도 있습니다.
WinSysServer는 대상 머신(보통 VM)에서 실행되며 TCP로 시스템 데이터를 제공합니다. NtWarden에서 원격 > 연결로 연결하세요.
| 파일 | 경로 | 용도 |
|---|---|---|
WinSysServer.exe | x64/Release/WinSysServer.exe | 항상 |
KWinSys.sys | x64/Release/KWinSys/KWinSys.sys | 커널 기능 전용 |
사용자 모드 기능(프로세스, 서비스, 네트워크)은 드라이버 없이 동작합니다. 커널 탭은 대상에 KWinSys가 로드되어 있어야 합니다.
# Auto-install driver + start server (run elevated)
WinSysServer.exe --install # default port 50002
WinSysServer.exe --install --port 9000 # custom port
# Or install the driver yourself first
sc create KWinSys type= kernel binPath= "C:\path\to\KWinSys.sys"
sc start KWinSys
WinSysServer.exe [--port <port>] # default: 50002
TCP 기반의 사용자 지정 바이너리 프로토콜. 12바이트 헤더 (MessageType, DataSize, Status). 인증 없음 - 격리된 랩/VM 환경에서만 사용하세요.
MIT - LICENSE 참조.
| 콜백, SSDT, 커널 모듈 등을 위한 커널 드라이버 |
| WinSysServer | 원격 검사를 위한 헤드리스 TCP 서버 |
| 탭 | 기능 |
|---|
| 프로세스 | 트리 뷰, 핸들, 스레드, 메모리 영역, 모듈이 포함된 프로세스 목록 |
| 성능 | 실시간 CPU, RAM, GPU 및 네트워크 사용량 그래프 - 다른 작업 위에 오버레이 가능 |
| 서비스 | 상태, 시작 유형, 바이너리 경로가 포함된 서비스 열거 |
| 네트워크 > 연결 | 소유 프로세스와 원격 엔드포인트가 포함된 TCP/UDP 연결 |
| 네트워크 > 루트 인증서 | 주체, 발급자, 지문이 포함된 신뢰할 수 있는 루트 CA 저장소 |
| 네트워크 > NDIS | 네트워크 어댑터 정보 - 드라이버, MAC, 속도, 미디어 유형 |
| ETW | 활성 추적 세션 및 등록된 공급자 |
| IPC | RPC 엔드포인트 및 명명된 파이프 |
| 객체 관리자 | 커널 객체 네임스페이스 탐색 - 디렉터리, 심볼릭 링크, 디바이스 |
| 레지스트리 | 키/값 열거가 가능한 레지스트리 브라우저 |
| 심볼 | 사용자 모드 심볼 로딩 상태 |
| 로거 | 커널 드라이버 디버그 로그와 사용자 모드 GUI 로그를 한곳에서 수집 |
| 탭 | 기능 |
|---|
| 프로세스 객체 | EPROCESS 열거, 교차 참조를 통한 숨겨진 프로세스 탐지 |
| 모듈 | 베이스, 크기, 경로가 포함된 로드된 커널 드라이버 (LolDrivers 검사 포함) |
| 콜백 | 커널 콜백 (프로세스/스레드/이미지/레지스트리/객체/전원) + 무결성 검사 |
| SSDT | 소유자 및 후킹 탐지가 포함된 SSDT 엔트리 |
| 심볼 | 커널 심볼 해석 및 PDB 로딩 |
| 커널 풀 | 대형 풀 할당, 풀 태그 통계 |
| 메모리 읽기/쓰기 | 주소로 커널 메모리 읽기/쓰기 |
| 타이머 | CPU별 인터럽트 및 DPC 카운터 |
| 필터 | 고도(altitude) 및 인스턴스 정보가 포함된 미니필터 드라이버 |
| 디스크립터 테이블 | GDT/IDT 엔트리 |
| IRP 디스패치 | 모든 드라이버의 IRP 디스패치 테이블 - 핸들러 주소, 소유자 모듈 |
| WFP | WFP 콜아웃 드라이버 및 필터 |
| DSE 상태 | 드라이버 서명 강제(DSE) 상태 |
| CI 정책 | 코드 무결성(CI) 정책 및 적용 수준 |
| 커널 무결성 | 디스크의 이미지와 커널 .text 검증 |
| 하이퍼바이저 후크 | 타이밍 분석을 통한 EPT 후킹 탐지 |
| 섹션 | 검사 내용 |
|---|
| 백업되지 않은 메모리 | 파일로 백업되지 않은 프라이빗 실행 가능 영역 (셸코드 지표) |
| 할로잉 | PEB ImageBase와 PE 헤더 ImageBase 불일치 |
| 모듈 스톰핑 | 디스크 원본과 비교한 인메모리 .text 섹션 |
| 직접 시스템 콜 | ntdll 외부에서 발견된 syscall (0F 05) 명령어 |
| 시스템 콜 스텁 | ntdll 스텁 무결성 - 메모리 바이트와 깨끗한 디스크 복사본 비교 |
| 사용자 후크 | ntdll, kernel32 등의 인라인 후크 (JMP/CALL 패치) (분석된 바이트 디스어셈블에는 capstone 필요) |
| 토큰 | 권한 상승, 무결성 수준, 가장(impersonation), 의심스러운 권한 |
| 디버그 객체 | 프로세스의 디버그 객체 및 디버그 포트 |
| 하이퍼바이저 | CPUID 공급업체 확인 + RDTSC/CPUID 타이밍 이상 징후 |
| 잡 객체 | 잡 멤버십, 제한, UI 제한 |
| CFG 상태 | CFG/XFG 적용 상태 및 완화 플래그 |