此仓库包含我的扫描脚本,可让您知晓服务器是否使用了SMBv3.1.1并启用了SMB压缩。这意味着您容易受到CVE-2020-0796的攻击。目前微软已发布安全补丁,请务必更新!
它还提供了完整文档化的数据包结构,可用于针对SMB协议的进一步研究。
请注意,该扫描器仅能告知您是否启用了SMBv3.1.1和SMB压缩。它也会将已修补的系统标记为易受攻击!
该模块具有详细的日志记录功能,需要 hexdump 库,您可以使用 pip3 install --user hexdump 安装。如果不需要日志记录,可使用 logless_scanner.py 脚本。
python3 .\scanner.py 127.0.0.1 445
NetBIOS (4): 000000c0
Header (64): fe534d42400000000000000000001f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Negotiation (128): 24000800010000007f000000000000000000000000000000000000007800000002000000020210022202240200030203100311030000000001002600000000000100200001000100000000000000000000000000000000000000000000000000000000000000000003000a000000000001000000010000000100000000000000
Packet (196): 000000c0fe534d42400000000000000000001f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000800010000007f000000000000000000000000000000000000007800000002000000020210022202240200030203100311030000000001002600000000000100200001000100000000000000000000000000000000000000000000000000000000000000000003000a000000000001000000010000000100000000000000
为保持README简洁,部分输出已省略。如果您的系统易受攻击,脚本将输出如下文本:
SMB version 0x311 with context 0x2 was found which indicates SMBv3.1.1 is being used and SMB compression is enabled, therefore being vulnerable to CVE-2020-0796!

如果您无法安装微软提供的安全补丁,请考虑使用以下命令禁用SMB压缩:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force
但如果您是连接到被利用机器的客户端,此操作并不能保护您免受攻击。