
Kratos는 탐지, 차단 및 영구적 면역을 위해 설계된 고성능 Windows 파일 시스템 미니필터 드라이버입니다.
방어적 보안 연구 프로젝트 — C++로 개발된 Windows 미니필터 드라이버로, 커널 수준(Ring 0)에서 랜섬웨어를 실시간 탐지 및 무력화합니다.
Kratos (Kratos.sys)는 필터 관리자(fltmgr.sys)를 통해 고도 425342(안티바이러스 계층)에서 작동하는 Windows 미니필터 드라이버입니다. 정적 시그니처 기반 안티바이러스 솔루션과 달리 Kratos는 순수 행위 기반 접근 방식을 채택합니다:
| 목표 | 결과 |
|----------|---------|
| 영향 받은 파일 (첫 실행) | < 5 |
| 영향 받은 파일 (재실행) | 0 |
| 오탐률 | 0% (튜닝 후) |
| 호환성 | NTFS / ReFS |
User-Mode
│
▼
Filter Manager (fltmgr.sys) ← Altitude 425342
│
▼
┌─────────────────────────────────────────────────────┐
│ KRATOS.SYS │
│ │
│ IRP_MJ_CREATE → 컨텍스트 초기화 │
│ IRP_MJ_WRITE → 엔트로피 분석 │
│ IRP_MJ_READ → 읽기/쓰기 비율 카운팅 │
│ IRP_MJ_SET_INFORMATION → 삭제/이름 변경 탐지 │
│ │
│ RTL_AVL_TABLE → PID별 KS_PROCESS_CONTEXT │
│ FLT_FILE_CONTEXT → 파일별 엔트로피 + 상태 │
└─────────────────────────────────────────────────────┘
│
▼
NTFS / ReFS
Kratos는 KS_IsValuableFile()을 사용하여 가치 있는 파일(.docx, .pdf, .jpg...)의 삭제와 시스템/캐시 파일의 삭제를 구분합니다:
사전 계산된 LUT(KratosEntropyLUT512)를 통해 계산 — 커널 모드에서 사용할 수 없는 log2()를 회피합니다. 쓰기 작업당 512바이트 샘플.
.tmp 파일의 엔트로피 ≥ 7.5/8비트주요 혁신: 악성 확장자의 블랙리스트 대신 Kratos는 합법적 확장자의 화이트리스트를 사용합니다.
원래 확장자가 가치 있는가? 예
새 확장자가 인식되는가? 아니요
→ 의심 — 선택한 확장자와 무관
이 접근 방식은 LockBit 3.0 (.xmjzh8q), BlackCat/ALPHV (무작위) 및 알 수 없는 확장자를 사용하는 모든 향후 랜섬웨어를 탐지할 수 있습니다.
ValuableDeleteCount > 10 → +10점
RenameToSuspicious > 2 → +40점
HighEntropyWrites > 3 → +40점
RansomNoteCreated → +60점
ShadowCopyDeleted → +75점
점수 ≥ 60 → 경고
점수 ≥ 80 → 위급 + 프로세스 종료 + 블랙리스트
랜섬웨어가 탐지되면 Kratos는 실행 파일의 처음 4096바이트(PE 헤더 + 코드 시작 부분)에 대한 64비트 FNV-1a 해시를 계산하고 이를 레지스트리에 저장합니다:
\Registry\Machine\SOFTWARE\Kratos\Blacklist
└── 1F81F13004B5B920 = "C:\Users\...\Hercule.exe"
프로세스가 생성될 때마다 ProcessNotifyCallback은 실행 전에 블랙리스트를 확인합니다. 프로세스는 CreationStatus = STATUS_ACCESS_DENIED를 통해 차단됩니다.
이름 변경에 대한 저항성: FNV-1a 해시는 파일 이름과 관계없이 동일합니다 (Hercule-AES.exe, HERCUL~1.EXE, chrome.exe...).
스푸핑 방지: 화이트리스트에 등록된 프로세스는 예상 이름 + 경로로 검증됩니다:
chrome.exe + \Program Files\Google\Chrome\Application\ → 합법
chrome.exe + C:\Users\...\Desktop\ → 위장
# Visual Studio에서 KratosMinifilter.sln 열기
# 구성: Debug 또는 Release / x64
# 빌드 → 솔루션 빌드
# 대상 가상 머신에서 테스트 모드 활성화
bcdedit /set testsigning on
# Kratos.sys 및 Kratos.inf 복사
# 장치 관리자 또는 sc.exe를 통해 설치
sc create Kratos type= kernel start= boot binPath= "C:\Kratos\Kratos.sys"
sc start Kratos
KratosDetection.cpp의 g_LegitExtensions[]를 수정하여 이름 변경 후 합법적인 것으로 간주할 확장자를 조정합니다.
g_TrustedProcesses[]를 수정하여 합법적인 프로세스와 예상 경로를 추가합니다:
{ "myapp.exe", L"\\Program Files\\MyApp\\" },
KratosDetection.cpp의 KS_EvaluateThreatScore()를 수정하여 환경에 따라 경고/위급 임계값을 조정합니다.
⚠️ 이 드라이버는 방어적 보안 연구 프레임워크 내에서 개발되었습니다.
- 사용은 엄격히 네트워크에 연결되지 않은 격리된 테스트 환경(가상 머신)으로 제한됩니다
- 프로덕션 시스템에 대한 모든 배포는 전적으로 사용자의 책임 하에 이루어집니다
- 작성자는 부적절한 사용으로 인한 모든 손해에 대해 책임을 지지 않습니다
- 승인 없이 보안 시스템을 우회하기 위해 이 드라이버를 수정하는 것은 불법입니다