____ __ _____ _ __
/ __ \__ ______ / /__/ ___/___ _______ _______(_) /___ __
/ /_/ / / / / __ \/ //_/\__ \/ _ \/ ___/ / / / ___/ / __/ / / /
/ ____/ /_/ / / / / ,< ___/ / __/ /__/ /_/ / / / / /_/ /_/ /
/_/ \__,_/_/ /_/_/|_|/____/\___/\___/\__,_/_/ /_/\__/\__, /
PRESENTS /____/
SMBeagle 是一款跨平台(SMB)文件共享审计工具,可扫描网络中所有可见的文件,并报告文件是否可读和/或可写。所有发现的结果会以流式输出到 CSV 文件或 Elasticsearch 主机,或两者同时输出!🚀
在 Windows 上运行时,若未提供凭据,SMBeagle 将使用 Win32 API 以获得最大速度和集成认证。
在 Linux 上运行时,或当提供了凭据时,我们通过 SMBLibrary 使用跨平台文件扫描。
SMBeagle v3 及之前版本是数字签名的,但 v4 增加了更多攻击性功能。具体来说,它将查找并检索看起来有价值的文件。这对渗透测试很有用,但我们不希望为这类功能进行数字签名!
如果您需要原始版本(不含文件抓取功能),请使用 v3,该版本是数字签名的。
它有两个极好的用例:
无论企业规模大小,通常都存在文件共享权限设置极差的情况。
大型企业的文件服务器上散落着大量共享,权限配置错误导致敏感数据暴露的情况并不少见。
小型企业通常在办公室角落放一台小型 NAS,根本没有任何限制!
SMBeagle 会爬取这些共享,列出所有它可读和可写的文件。如果它能读取,那么勒索软件同样可以。
SMBeagle 可为渗透测试人员提供不那么明显的路径,用于提权和横向移动。
通过直接输出到 Elasticsearch,测试人员可以快速找到可读的脚本和可写的可执行文件。
发现饮水机攻击和未受保护的密码从未如此简单!🐱👤
为了更方便,我们添加了 -g 标志,它会自动抓取看起来有趣的文件!
什么文件算有趣?默认情况下,我们会查找脚本以及文件名中包含 password 等关键词的文件。
……您可以通过 --file-pattern 标志提供自己的正则表达式。
请参阅 Kibana 使用说明 详细了解如何安装和使用 Kibana 仪表板,该仪表板提供管理可视化功能,并能轻松进行数据透视。
docker pull punksecurity/smbeagle唯一必需的参数是设置输出目标,可以是 Elasticsearch 主机的 IP 地址,也可以是 CSV 文件。
一个不错的起点是启用快速模式并输出到 CSV,但根据找到的文件数量,CSV 文件可能会非常大。
./SMBeagle.exe -c out.csv -f
默认情况下,SMBeagle 会禁用自动发现公网主机和网络的扫描,因为它通过 netstat 发现网络,而 netstat 会包含所有当前连接(例如浏览器会话等)。
若要扫描公网,请手动声明网络,例如 -n 1.0.0.1/32 或 -n 1.0.0.0/24。
Punk Security 提供了 SMBeagle 的 Linux Docker 镜像。
要获取扫描结果,您需要将主机上的文件夹挂载到容器中,并告知 SMBeagle 将输出保存到该挂载点(或使用 Elasticsearch)。
一个很好的起始示例是:
docker run -v "$(pwd)/output:/tmp/output" punksecurity/smbeagle -c /tmp/output/results.csv -n 10.10.10.0/24
请注意,在 Docker 中运行时网络发现功能被禁用,因此请务必通过 -n 命令行开关传递要扫描的网段,或通过 -h 开关传递要扫描的主机。
USAGE:
Output to a CSV file:
SMBeagle -c out.csv
Output to elasticsearch (Preferred):
SMBeagle -e 127.0.0.1
Output to elasticsearch and CSV:
SMBeagle -c out.csv -e 127.0.0.1
Disable network discovery and provide manual networks:
SMBeagle -D -e 127.0.0.1 -n 192.168.12.0./23 192.168.15.0/24
Do not enumerate ACLs (FASTER):
SMBeagle -A -e 127.0.0.1
-c, --csv-file (Group: output) Output results to a CSV
file by providing filepath
-e, --elasticsearch-host (Group: output) Output results to
elasticsearch by providing elasticsearch
hostname (default port is 9200 , but can be
overridden)
-a, --aggression (Default: 6) Vary scanning speed in a range
between 1 and 10. 10 being fastest [No
decimals]
--elasticsearch-port (Default: 9200) Define the elasticsearch
custom port if required
-f, --fast Enumerate only one files permissions per
directory
-l, --scan-local-shares Scan the local shares on this machine
-D, --disable-network-discovery Disable network discovery
-n, --network Manually add network to scan (multiple
accepted)
-N, --exclude-network Exclude a network from scanning (multiple
accepted)
-h, --host Manually add host to scan
-H, --exclude-host Exclude a host from scanning
-q, --quiet Disable unneccessary output
-S, --exclude-share Do not scan shares with this name (multiple
accepted)
-s, --share Only scan shares with this name (multiple
accepted)
--file-pattern Only fetch files matching these regexes
patterns
-g, --grab-files Grab files and store them locally
--loot (Default: loot) Path to store grabbed files
-E, --exclude-hidden-shares Exclude shares ending in $
-v, --verbose Give more output
-m, --max-network-cidr-size (Default: 20) Maximum network size to scan
for SMB Hosts
-A, --dont-enumerate-acls (Default: false) Skip enumeration of file
ACLs
-d, --domain (Default: ) Domain for connecting to SMB
-u, --username Username for connecting to SMB - mandatory
on linux
-p, --password Password for connecting to SMB - mandatory
on linux
--help Display this help screen.
--version Display version information.
SMBeagle 做了大量工作,这些工作分解为松散耦合的模块,模块之间相互传递任务。 这样设计既简单又便于扩展每个模块。
简而言之,它执行以下操作:
