内置模块
SuperScan
SuperScan (别名: superscan ) 模块为 ExpDepos 内置的一款多功能扫描器,支持目录扫描(dirscan)、端口扫描(portscan)、指纹探测(fingerprint scan)等功能。
SuperScan 作为 ExpDepos 框架标志性模块在于其多功能扫描均可采用云函数代理请求的方式进行,该功能在红蓝实战对抗的情报搜集阶段可与防火墙等安全设备进行有效对抗。
使用以下命令格式查看 SuperScan 模块命令帮助或者运行该模块:
sudo python3 cli.py -M superscan -h
警告
SuperScan 端口扫描模块的存活主机探测功能需要管理员权限运行,进行端口扫描时候请确认当前用户权限或者使用 --noping 参数跳过存活主机探测。
小技巧
为达到最佳性能和效果,建议在 Mac OS 或者 Kali Linux 等非 Windows 系统上运行本模块。全局的 --scf 选项为开启云函数扫描的开关。
端口扫描(PortScan)
使用 SuperScan 进行端口扫描请使用如下命令:
sudo python3 cli.py -M superscan -P "--action port" -H 192.168.1.10
--action 选项值指示使用端口扫描模块,扫描目标则像运行其他模块一样使用全局的 -H 或者 --host 传入。传入的主机地址支持 CIDR 格式或者使用 - 连接的IP地址范围,亦或是使用 ',' 分隔的多个IP地址,以上三种亦可组合使用。
端口扫描
在未指定需要扫描的端口情况下,SuperScan 将使用常用WEB应用端口列表(default_ports)及额外补充端口列表(extend_ports)作为默认列表进行扫描。若需要自定义端口扫描请使用模块选项 --ports 指定需要扫描的端口列表或者范围,如下命令所示:
sudo python3 cli.py -M superscan -P "--action port --ports 8000-9000,22,3389" -H 192.168.1.10
模块选项 --ports 除了提供常规端口列表之外,还可以传入 web 或者 top 值用于指定扫描 default_ports 或是 nmap_top_10000 中定义的端口。
备注
default_ports、nmap_top_10000 及 extend_ports 定义位于 ExpDepos/modules/auxiliary/scanner/superscan/PortLists.py 模块中,可以自定义修改该模块中的定义来修改默认扫描值。
服务探测
SuperScan 的端口扫描功能不仅可进行简单的端口扫描,同时还支持 Nmap 开源的服务探针(nmap-service-probes)对已开放的端口进行服务识别。若已开放端口识别到 HTTP 服务则进一步对该端口进行WEB指纹探测及WEB标题和状态识别。
若无需端口服务探测或者WEB指纹识别可以使用 --nosrv 和 --nofp 进行关闭。若两者均不需要则可以使用 --noprobe 参数关闭服务和WEB指纹识别,更多选项请查看命令帮助。
指纹识别
在WEB指纹识别上亦有多个选项可供使用,例如 --fpmode 参数可设置指纹识别模式,有 ALL、 PASS、 AGGR、 EXP 可选(区分大小写,默认为 ALL)。有关指纹识别模式详情,请参阅 指纹识别 章节。
同时在进行WEB指纹识别时候亦可以提供相关过滤参数,让扫描器只选择过滤器中指定的指纹进行识别,--fptype、--fpplat、 --fpmidd、--fplang 选项可为指纹过滤器提供过滤选项,有关过滤器详情请参阅 指纹识别 及 指纹属性 章节。
目录扫描(DirScan)
要使用 SuperScan 进行目录扫描请使用如下命令:
python3 cli.py -M superscan -H http://www.example.com
SuperScan 在未设置 --action 选项的情况下默认调用目录扫描模块,其目录扫描字典调用内置的 dirs.dic 和 files.dic 中的条目进行扫描。
目录扫描
若要进行单独的目录扫描或者文件扫描请使用 --dic 选项提供相应值,可选 dir (仅目录)、file (仅文件)、all (目录和文件) 默认 all 。在进行文件扫描时候可以使用 --ext 选项指定扩展名,多个扩展名请用 ',' 分隔。
除了内置字典选项外,目录扫描模块同时支持使用 --wordlist 自定义位于 /data/dics/superscan/ 下的字典文件, 多个使用 ',' 分隔。
添加字典
在日常渗透积累中,可以在 console 模式下使用 add dir 或者 add file 命令将目录字典添加到现有字典中去。
指纹识别(FpsScan)
在 SuperScan 中设置选项 --action 值为 fps 将调用单独的指纹识别模块,其指纹识别相关选项与端口扫描中的 指纹识别 参数共享。
小技巧
开启全局 Debug 消息模式可以详细查看到指纹识别匹配详情。
AddFps
AddFps (别名: addfps ) 模块可以以向导的方式添加指纹到指纹库中,具体使用帮助请参阅 使用向导编写指纹
register
register (别名: wwfpr) 为一个专门将 whatweb-plus 指纹转换为 ExpDepos 可用格式( yaml )指纹的模块。运行该模块值需要指定 --path 参数为 whatweb-plus 指纹路径(my-plugins目录路径)即可。
指纹过滤
在运行模块执行转换之前可以使用过滤定义排除一些无用或者分类不正确的指纹,这些定义位于 ExpDepos/modules/auxiliary/tools/register_filters.py 文件中,其中指纹排除定义如下:
FILE_BLACK_LIST定义的列表为whatweb-plus完全可以舍弃的无用指纹。NEED_ADN_LOGIC_LIST定义的列表为whatweb-plus中匹配项应该使用逻辑and运算进行匹配的指纹。例如蓝凌oa-ekp.rb中的匹配项{:search=>"all", :text=>'EKP'}和{:search=>"all", :text=>'蓝凌OA'}, 前者匹配范围太广,应该与后者同时满足才算匹配成功。MATCHES_BLACK_VALUES定义的列表为一些可以舍弃的匹配项的列表 例如prototype.rb中已有两个较高精度的匹配项,然后另外匹配项{:search=>"all", :text=>'Prototype'}范围过于广泛,则需要单独屏蔽掉该匹配项。FINGERPRINT_TYPES分类修正字典用于修正whatweb-plus中一些分类不准确的指纹,且分类值可以使用列表类型设置指纹归属多个分类。例如一些安全设备的后台管理系统也可以分类到WEB应用类中,以便在只扫描WEB应用的时候也能发现安全设备的后台系统。
小技巧
针对所有使用了文件名的过滤均可以使用通配符 '*' 和 '?'