Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
smbcrawler — smbcrawler 是一款直截了当的工具,它接收凭据和主机列表,然后在这些共享中“爬取”(或“蜘蛛式”遍历)。 | Kitploit
工具/GitHubGitHub/syss-research/smbcrawler
侦察漏洞分析数据泄露信息收集网络安全渗透测试
GitHubsyss-research/smbcrawler

smbcrawler

smbcrawler 是一款直截了当的工具,它接收凭据和主机列表,然后在这些共享中“爬取”(或“蜘蛛式”遍历)。

查看仓库
189269个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

SmbCrawler

SmbCrawler 是一款实用的工具,它接受凭据和主机列表,并“爬取”(或称“蜘蛛”)这些共享。特点包括:

  • 接受主机名、IP地址、IP范围或nmap xml文件作为输入
  • 检查权限(“写”权限检查为可选,因为需要在共享上创建空目录)
  • 爬取深度可自定义
  • 以机器可读格式或交互式HTML报告输出结果
  • 支持哈希传递
  • 自动下载感兴趣的文件
  • 报告潜在机密
  • 多线程
  • 可暂停
  • 交互式跳过单个共享和主机

安装

如果你需要安装Python包的说明,建议先确保已安装pipx(参考pipx安装指南),然后运行pipx install smbcrawler。

SmbCrawler可以使用MarkItDown自动将某些二进制文件(如PDF、XLSX、DOCX、ZIP等)转换为纯文本。由于这个包会拉取大量依赖,它被标记为额外选项。但强烈建议安装以获得最佳效果。如果你想自动转换二进制文件,请按如下方式安装SmbCrawler:

root@kitploit:~
pipx install 'smbcrawler[binary-conversion]'

强烈建议添加shell补全。作为一个使用click库的Python应用,你可以通过常用机制为bash、zsh和fish添加Tab补全。

示例

像这样运行它(10个线程,最大深度5):

root@kitploit:~
$ smbcrawler crawl -i hosts.txt -u pen.tester -p iluvb0b -d contoso.local -t 10 -D 5

1.0版本的主要变化

SmbCrawler进行了重大改造。最显著的变化是:

  • 我们清理了CLI,并引入了“profile”机制来控制爬虫的行为
  • 输出现在是一个SQLite数据库,而不是分散的JSON文件
  • 权限报告更加细化

旧的CLI参数(关于“感兴趣的文件”、“无聊的共享”等)笨拙且令人困惑。现在我们使用“profiles”;详见下文。

另外,我意识到我基本上重新发明了关系数据库,而且做得很差,所以为什么不直接使用sqlite呢?sqlite方法使我们能够生成一个性能良好的交互式HTML报告。如果你需要在某些工具链中使用数据,你仍然可以以各种格式导出结果。

旧的SmbCrawler报告权限的方式有时不太有用。例如,你在共享的根目录中拥有读取权限,但所有子目录都被保护(例如用户配置文件)的情况并不少见。SmbCrawler现在会报告它能够读取共享目录树的深度,以及是否达到了最大值,或者如果你提供了更高的最大深度参数,它是否可以更深。

如果你更喜欢旧版本,它仍然在PyPI上可用,例如可以通过pipx install smbcrawler==0.2.0安装。

用法

在运行时,你可以使用以下按键:

  • p:暂停爬虫并跳过单个主机或共享
  • <空格>:打印当前进度
  • s:打印更详细的状态更新

更多信息,运行smbcrawler -h。

注意事项

即使在中型网络中,SmbCrawler也会发现大量数据。挑战在于减少误报。

关于权限的说明

务必要认识到权限可以在服务级别和文件系统级别上应用。远程SMB服务可能允许你进行身份验证,你的用户帐户原则上可能拥有读取权限,但文件系统可能缺乏这些权限。

SmbCrawler会报告你是否拥有以下权限:

  • 以访客身份对目标进行身份验证并列出共享
  • 使用用户凭据对目标进行身份验证
  • 作为访客访问共享
  • 使用用户凭据访问共享
  • 在共享的根目录中创建目录
  • 能够访问的共享最深目录级别(受--depth参数限制)

由于在不尝试相应操作的情况下检查SMB共享的权限并非易事,SmbCrawler会尝试在每个共享上创建一个目录。其名称为smbcrawler_DELETEME_<8个随机字符>,创建后立即删除,但请务必注意。

[!WARNING] 有时你有创建目录的权限,但没有删除它们的权限,因此你会留下一个空目录。

Profiles

为了决定如何处理某些共享、文件或目录,SmbCrawler有一个名为“profiles”的功能。请查看默认profile。

Profiles从扩展名为*.yml或*.yaml的文件中加载,位置如下:

  • 内置默认profile
  • $XDG_DATA_HOME/smbcrawler/(默认情况下为~/.local/share/smbcrawler)
  • 由--extra-profile-directory定义的额外目录
  • 由--extra-profile-file定义的额外文件

每个位置的profile会覆盖之前的定义。

regex值定义了profile是否匹配,最后一个匹配的profile将被使用。所有正则表达式都不区分大小写,反映了Windows世界中最常见的行为。

由于来自不同来源的profiles如何协同工作可能会令人困惑,请务必使用--dry-run参数。它会显示有效的配置,并且不执行其他操作。

我们来看每个部分,它们总是一个字典列表。字典的每个键都是一个任意标签,每个值又是一个包含不同属性的字典。

文件

  • comment:描述此profile的有用字符串
  • regex:定义此profile适用于哪些文件的正则表达式。最后匹配的正则表达式才有效。
  • regex_flags:将传递给正则表达式match函数(Python文档)的标志数组
  • high_value(默认值:false):如果文件是“高价值”,则会报告其存在,但不一定会下载(例如虚拟硬盘——很重要,但太大无法自动下载)
  • download(默认值:true):如果为true,将下载前200KiBi(如果high_value=true则下载整个文件)并解析机密

共享和目录

  • comment、regex、regex_flags:同上
  • high_value:将报告其存在,并将爬取深度设为无限
  • crawl_depth:以与--depth参数定义不同的深度爬取此共享或目录

机密

  • comment、regex_flags:同上
  • regex:匹配机密的正则表达式。机密本身可以是名为secret的命名组。

典型工作流程

首先以爬取深度1运行SmbCrawler以了解情况是有意义的。在首次运行时,你可以使用-w启用写入检查:

root@kitploit:~
$ smbcrawler -C permissions_check.crwl crawl -D1 -t10 -w \
    -i <输入文件> -u <用户> -d <域> -p <密码>

注意,这只检查每个共享根目录的写入和读取权限。只有完整运行才能告诉你读取权限能深入到什么程度。

在初始权限检查之后,你可以为下一次运行或多次运行识别感兴趣和无聊的共享。某些共享如SYSVOL和NETLOGON会出现多次,因此你应该在下次运行时将爬取深度设置为零,并选取一个主机在第三次运行中扫描这些重复的共享。示例如下:

root@kitploit:~
$ smbcrawler -C dc_only.crwl crawl -D -1 <DC IP> \
    -u <用户> -d <域> -p <密码>
$ smbcrawler -C full.crwl crawl -D5 -t10 -i <新输入文件> \
    -u <用户> -d <域> -p <密码> \
    --extra-profile-file skip_sysvol.yml

这里,skip_sysvol.yml的内容如下:

root@kitploit:~
shares:
  sysvol:
    comment: "跳过 sysvol 和 netlogon 共享"
    regex: 'SYSVOL|NETLOGON'
    crawl_depth: 0

你可以在此处随意包含其他你认为不值得爬取的共享。

输出

原始数据包含在一个SQLite数据库和一个目录中(默认情况下为output.crwl和output.crwl.d)。该目录包含另外两个目录:一个存放按内容哈希去重的下载文件,另一个镜像所有共享,并使用指向内容文件的符号链接。后者适合对所有下载文件进行grep。

数据可以转换为各种格式。例如,你也可以直接使用sqlitebrowser访问数据库。已预定义了一些有用的视图。或者,你也可以输出JSON并使用jq来处理数据。

如果你想显示所有能够读取到根目录之外的共享(例如以LaTeX表格形式),可以使用以下查询:

root@kitploit:~
SELECT target_id || " & " || name || " & " || remark || " \\"
FROM share
WHERE read_level > 0
ORDER BY target_id, name

还有一个实验性的HTML输出功能。对于大量数据,它可能还不完全有用。

帮助改进

如果你发现报告的机密存在大量误报或漏报,请帮忙告知。社区输入对于改进自动检测非常重要。最佳情况:提供对默认profile文件更改的拉取请求。

致谢

Adrian Vollmer, SySS GmbH

许可证

MIT许可证;详情请见LICENSE。

下载工具