信息收集在开始一项渗透测试工作的前期工作中有着很重要的地位,因为这决定了你能找到的攻击面有多大,也是你能否成功渗透目标的关键。
信息收集分为两类:主动收集和被动收集。
主动收集是指通过扫描确认目标的操作系统和网络服务,为后续发现漏洞提供信息帮助,但它可能引起目标的注意,或被记录下扫描行为。一些服务指纹检测、网站爬虫都是主动收集的方式,它们直接向目标发起请求,在有防火墙的情况下,可能会被拦截告警。
被动收集是指在不接触目标的情况下,通过互联网搜索来收集目标遗留在网络中的信息。这样可以避免引起目标的警觉。网上很多人说的公开来源情报(Open-Source Intelligence,OSINT,简称“开源情报”)正是需要被动收集的信息,它是从公共资源中收集到的。
在收集信息时,无论是主动还是被动,建议使用小号,尤其是在一些社交平台上的信息收集,小号可以避免行为暴露。
下面介绍 6 个信息收集的方法,分别是子域名与 IP 收集、端口服务探测、网站指纹识别、旁站与 C 段查询、WAF 探测和敏感信息收集。
收集子域名和 IP 常常是信息收集的开端,这对你摸清整个目标的资产起着很关键的作用,它们直接决定了渗透目标范围的大小。
关于收集子域名的技术原理在《红蓝对抗之域名搜集方法总结》中有详细的介绍,主要包括证书透明度、DNS 查询、Whois 查询、备案网站、搜索引擎、暴力猜测等多种方法实现。
收集子域名可以通过一些在线网站或者本地工具来收集,常用的工具或站点有 OneForAll、subDomainsBrute、subfinder、ESD、Amass、DNSDumpster 和 Subdomain Finder。
使用示例如下:
python3 oneforall.py --target XXX.com run
python3 subDomainsBrute.py XXX.com
使用示例如下:
subfinder -d XXX.com
esd -d lagou.com
amass enum -o out.txt -d lagou.com
在收集域名时常用 Subdomain Finder + OneForAll + subfinder + Amass 的组合。
端口 3389 用于远程桌面连接,如果发现了,也可以尝试用弱密码登录,或者利用一些远程桌面漏洞去测试,针对开放端口和服务识别的方式,在渗透测试过程可以有针对性地采取不同的测试方法,虽然简单,但非常有效。
Nmap -A XXX.com
-A 参数开启端口扫描、系统检测、版本检测、脚本扫描及路由追踪,是一个比较常用的参数。
网站指纹是 Web 服务组件在开发时留下的类型、版本等标记信息,包括 Web 服务器指纹、Web 运用指纹及前端框架指纹等。
除了前面用 Nmap 扫描端口和服务的方法,还可以通过前端网页和返回一些 HTTP 头信息来判断网站使用的哪些开发框架、服务器、系统,在渗透测试时也可以提供有针对性的测试思路。
Chrome 插件Wappalyzer。在你打开网站后,点击插件,按钮就会弹出网站的指纹信息。
在线检测网站也支持指纹检测:https://scan.top15.cn/web/,其他检测指纹的工具还有 WhatWeb、WPScan、JoomScan 等。
有时测试的网站非常坚固,找不到任何漏洞,那我们就可以尝试对“旁站”进行渗透测试。旁站即同一服务器上的其他域名网站,如果你能攻下该旁站,就有机会间接拿到目标网站的权限。
还有另一种方法就是查询 C 段 IP,即同一内网段的服务器。比如 XXX.com 的 IP 为 100.75.118.232,那它的 C 段 IP 为 100.75.118.1~100.75.118.255,通过攻下同一 C 段的服务器,再间接渗透到目标服务器。
无论是旁站还是 C 段渗透方式,都是尝试从目标网站的旁路途径去间接渗透目标。在这里我推荐几个在线查询旁站和 C 段的网站,同时提供一些指纹检测信息。
(1)https://www.webscan.cc/
(2)https://chapangzhan.com/
当网站开启 WAF(Web 防火墙)时,很多测试请求都会被拦截,导致无法正常扫描。此时就要分析 WAF 找到绕过的方法,否则很难挖到漏洞。在不知道的情况下,还以为真的没有漏洞,其实有时只是被 WAF 拦截了而已。不过就算挖到了漏洞,利用起来也有一定的门槛。
因此,在测试前,若发现发包经常测试失败的话,除非网络不通,否则都建议先探测下 WAF。如果存在 WAF 就尝试寻找绕过的方法,再改造测试用例进行重试。
SQLMap 就支持 WAF 检测, TScan 也支持,不过有时会误报。介绍一下 SQLMap 检测 WAF 的方法,使用命令如下:
python sqlmap.py -u "http://www.XXX.com" --identify-waf --batch
上述代码中,–identify-waf 参数开启 WAF 检测,–batch 参数不询问用户输入,按默认执行。
SQLMap 既支持常见 WAF 的检测,也支持自己写脚本扩展检测能力。
在授权的渗透测试过程中,我们要多方收集与目标相关的信息,包括 Google、GitHub、社交平台等多方渠道。我曾多次利用 GitHub 找到一些账号密码或密钥,从而获得授权测试的网站的最高权限,收集 GitHub 相关的敏感信息如下:
Gitrob,https://github.com/michenriksen/gitrob;
码小六,https://github.com/4x99/code6;
GitMonitor,https://github.com/Talkaboutcybersecurity/GitMonitor。
根据收集到的相关信息,我们还可以制作字典用来猜解一些相关账号和密码,此类的相关工具有:
Wordhound,https://github.com/kurobeats/wordhound;
BruteScrape,https://github.com/cheetz/brutescrape。
几款综合能力较好的信息收集工具:
上一篇:关于七月的唯美句子
下一篇:带有愁字的成语有哪些