作为红队成员,最耗时的任务之一就是深入文件系统和共享,试图识别任何潜在的敏感信息。SMBCrunch 让红队成员能够快速发现网络中的 Windows 文件共享,对提供的共享执行递归目录列表,甚至可以在远程共享中发现看似有价值的目标时抓取文件。
有三个 (3) 不同的工具协同工作。请阅读以下三个部分,了解它们是如何协同工作的。
给定一个文件(或 gnmap 文件),SMBHunt 会查找与提供的服务器关联的所有 Windows 文件共享(如果提供了 gnmap 文件,则只查看端口 445 开放的服务器)。如果未提供执行检查的凭据,它将检查空会话共享。
警告:如果您的用户对服务器上的一个共享具有访问权限,该脚本将显示该服务器托管的所有共享。如果某个共享出现在此输出中,并不代表您对该共享有访问权限。请使用下一个工具进行检查。
如果提供的凭据失败,该脚本会发出警告,以避免锁定域账户。"-f" 开关可覆盖此保护。
此脚本仅使用一个凭据检查服务器。这是设计使然,因为如果用户对系统上的一个共享有访问权限,服务器将返回完整的共享列表。
./SMBHunt.pl [-a <account>] -i <file> [-o <output_file>]
./SMBHunt.pl -a 'testdomain\john:hunter2' -i portscan445.gnmap -o shares_found.txt
./SMBHunt.pl -h
-a, --account <string>
要测试的用户凭据。用户名接受以下格式:'Domain\Username:Password'('Domain' 可选) 如果未提供账户,脚本将检查空会话共享。
-i, --inputFile <file>
一个文件,每行一个系统,或者一个包含端口 445 的端口扫描 gnmap 文件。每个开放 445 端口的服务器都将被检查 SMB 共享。
-o, --output <file>
将结果输出到文件
-f, --force
即使域凭据可能不正确,也强制脚本继续执行。
--noipc
不显示 IPC 共享(IPC$)
--nohidden
不显示隐藏共享(C$、IPC$、ADMIN$ 等)
SMBList 将获取来自 "SMBHunt.pl" 的输出文件(或一个每行一个共享的文件,格式为 "\server\share"),并使用提供的凭据对这些共享执行递归目录列表。SMBList 将尝试向共享进行身份验证,直到从提供的列表中找到有效的凭据。然后,它会将目录列表存储在指定的子文件夹中。
这使得文件列表非常易于使用 grep 进行搜索!
最佳结果文件:/ALL_COMBINED_RESULTS.txt
./SMBList.pl -c <credential/file> -s <share/file> -o <nonexistent directory>
./SMBList.pl -c credentials_found.txt -s shares_found.txt -o share_listing -m 150
./SMBList.pl -h
-c, --credentials <credential/file>
一个凭据或一个凭据文件用于测试。凭据接受以下格式:'Domain\Username:Password',每行一个(如果提供的是文件)。
-s, --shares <share/file>
一个共享或一个共享文件用于测试。每个凭据都将被测试授权,直到找到有效的凭据。共享格式应为 "\server\share",每行一个(如果提供的是文件)。
-o, --output <nonexistent directory>
将创建一个以此命名的新目录。为了保护输出,此脚本不能在目录已存在的情况下运行。必须是一个不存在的目录!
-m, --maxexec <seconds>
转储任何一个共享的最大时间(秒)。默认值为 300 秒(5 分钟)。
-f, --force
如果共享出错,绝不将其从列表中移除;如果凭据收到登录失败消息,也绝不将其移除。如果使用此标志,请确保您知道自己在做什么!如果不小心,可能会锁定账户!
-n, --nocreds
不在输出中包含凭据。警告:如果使用此开关,您将无法将输出用于下一个工具 "SMBGrab.pl"。
来自 SMBList.pl 的文件列表可以通过管道传递给此工具,以从共享中抓取所需的文件。在传递给此脚本之前,应当先对 SMBList.pl 的原始列表进行 "grep",否则将下载所有文件(这相当于复制整个共享,是不好的做法)。
此脚本要求将 SMBList.pl 通过管道输入。请参见下面的 "示例用法"。
./SMBGrab.pl [-s <directory>]
grep -i 'password.txt' share_listing/ALL_COMBINED_RESULTS.TXT | ./SMBGrab.pl -s savedfiles
./SMBGrab.pl -h
如果未提供任何参数,文件将从共享中获取并显示给用户。不会保存。
-s, --savedir <directory>
用于保存所有抓取文件的目录。如果此目录不存在,将会创建。使用此参数可保存文件,但不会在屏幕上打印文件内容。
-a, --all
读取所有通过管道输入的文件。如果不使用此开关,脚本会通过将输入限制为 100 个文件来防止意外下载大量文件。
-n, --noedit
这将保持文件的原始形式。如果不使用此开关,每个文件的底部将添加一个注释,包含文件元数据信息(读取/写入时间、共享中的文件位置等)。
-h, --help
显示帮助菜单
如有任何更改或功能请求,请随时与我联系!