信息搜集
前言:本文不适合完全0基础的师傅学习信息搜集,因为我没有写得很详细,只是提出我的信息搜集的思路或流程、简单给出工具的地址和一些自写的小脚本,但是本文可以作为一个信息搜集的查漏补缺、思路借鉴。以下仅代表我个人的信息搜集思路,没有标准答案。期待师傅们在评论区简单交流你们的信息搜集思路,或者提出问题,我们相互借鉴学习,吸收优秀思路,一起成长吧
思维导图
01-最开始先对此次要打点的目标进行web资产搜集,即搜集主域名,子域名
web资产
主域名
注意:小型企业不用查主域名,因为压根就没有。主域名只针对于大集团目标,其旗下有许多子公司,每一个子公司有自己的官网,这便是主域名,每个子公司的经济不同,安全防御程度也不一样,于是我们可以通过找到薄弱的子公司的主域名作为渗透目标,并且一个集团的子公司的内网往往是相通的,只要拿下一个子公司就有可能进一步拿下整个集团,这样比你直接渗透集团总部要轻松太多了,信息搜集做得好,渗透已经成功一大半啦对吧
子域名
- FOFA
1 | domain="xxxx.com"||cert="xxxx.com"||cert="xxxx目标名" |
- oneforall
1 | python oneforall.py --target xxxx.com run |
02-经web资产打点,得到大量资产后(一般都是成百上千的资产数量),需要从中筛选出攻击目标,因为其中有大量资产,要么防御牢固,要么没有攻击点来入手,要么压根就不存在漏洞,对此部分的资产进行接下来的信息打点操作的话纯纯浪费时间,于是要先从大量资产中寻找出脆弱的,疑似可渗透的目标,下文称之为攻击目标
web资产整理与攻击目标发现
- py脚本格式整理
- 合并数据
- 去重工具去重
- Eeyes整理c段
- fscan存活探测
- fscan初步扫描
- fscanoutput整理格式
- 合并资产
- Ehole测活
- 正则提取数据
- Awvs Xray Nuclei自动化扫描
- 合并数据
- 再次py脚本测活
- 手工访问初步确定测试目标
处理FOFA资产格式
因为FOFA得到的url有http的有https的还有无协议的三种形式,格式不统一,不便于之后的自动化扫描测试,于是先处理好格式
我针对这个问题写好了处理的py脚本-domain.py
1 | import re # 引入正则表达式库 |
1 | import re |
现在通过fofa和domain.py得到了三份数据
1 | subdomain1.txt 没有协议头的子域名数据 |
处理oneforall资产格式
数据格式很统一,不用处理,保存一下就好了
现在通过oneforall得到了三份数据
1 | subdomain2.txt 没有协议头的子域名数据 |
合并
(把两份数据合并在一起)
合并得到
1 | subdomain3.txt 没有协议头的子域名数据 |
去重
(因为肯定有重复的,太多重复数据会拖慢后面扫描的时间,所以要对三份数据去重)
去重后得到
1 | subdomain.txt 没有协议头的子域名数据 |
使用Eeyes整理c段
(这里就体现了为什么要整理出subdomain.txt了,因为这里整理c段要用)
1 | Eeyes.exe -l subdomain.txt |
数据不多,手动处理一下得到
1 | c.txt //几个c段数据 |
fscan c段存活探测和综合初步扫描
(这一步使用c.txt对c段存活的主机进行探测和综和扫描)
1 | fscan.exe -hf c.txt -o result.txt |
使用fscan得到
1 | result.txt 存活的c段,以及其他综合信息数据 |
Fscanoutput整理格式
(因为result.txt中格式混乱不便处理)
1 | python fscanoutput.py result.txt |
使用Fscanoutput得到result.xlxs
1 | result.xlxs 整理后的存活的c段,以及其他综合信息数据 |
初步提取可攻击目标
从result.xlxs仔细寻找,其实运气好的话,就以及可以发现一些脆弱的资产或敏感的资产了,可以记录下来,备用
从result.xlxs提取
1 | target1.txt 可能成为最终的测试目标数据 |
生成IP型资产
把ip.txt的数据处理加上http://和https:// ip.py脚本如下:
1 | # 打开输入文件 |
使用ip.py得到
1 | url-ip.txt ip型url资产数据 |
合并
(把result.xlxs其中的url复制下来,加上url-ip.txt,再和之前的url.txt合并,得到web.txt)
1 | web.txt 合并后的url数据 |
测活
(搜集了这么多资产,不一定都是存活的,于是要进行探测活性,不然后面对着一个挂了的网站测试,不是浪费时间吗)
对web.txt使用Ehole测试url资产的活性
1 | ehole.exe -l web.txt -json export.json |
使用Ehole得到
1 | export.json 存活的url资产 |
再把export.json另存一份为target2.txt备用
1 | target2.txt 存活的url资产(txt格式) |
处理Ehole的数据
对export.json使用sublime进行正则提取url资产
1 | http://[^\"]* |
得到
1 | test.txt 存活的比较全面url资产 |
自动化扫描
1 | nuclei.exe -list test.txt -o output.txt |
1 | #批量添加目标 |
1 | #批量添加目标 |
等扫描器运行完后,逐个访问扫描结果—可能存在漏洞的目标,根据经验判断,手工整理得到
1 | target3.txt 可能成为最终的测试目标数据 |
合并
把target1.txt target2.txt target3.txt合并为target.txt得到
1 | target.txt 可能成为最终的测试目标数据 |
再次测活
得到的target.txt其实也还是不一定是存活的,再次测活,用我写的小脚本
1 | import requests # 导入发起请求的库 |
手工进一步筛选目标
从target.txt中寻找比较特殊的资产,脆弱的资产,简单手工测试一下,同时挂上XRay与Brup联动,在手工访问的同时,还可以主动扫描漏洞
1 | xray.exe webscan --listen 127.0.0.1:7777 --html-output output-b.html |
找出最终进一步测试的目标得到
1 | 目标名.txt //最终进一步测试的目标数据 |
03-经资产整理与攻击目标发现,大致得到一些可能可攻击的目标,然后再对这些目标进行架构信息搜集,为什么把架构搜集放在最前面呢,因为假设目标使用了CDN,反向代理,负载均衡,那我们在没搞清楚架构的情况下,就去渗透测试,端口扫描,内网渗透,那将是毫无意义的或者收效甚微的
架构信息
反向代理
- 介绍
反向代是将内部网络中的服务通过端口映射等方式暴露到公网,使外部用户只能通过反向代理服务器进行访问
- 识别
使用Wappalyzer浏览器插件识别
负载均衡
- 介绍
为了防止访问拥塞,减少主服务器的负担,多个负载均衡服务器监听公共网络接口,接收来自客户端的请求,然后将这些请求转发到内网的多个后端服务器端口
- 识别
使用lbd工具(kali自带)
站库分离
- 介绍
可以减少攻击者获取敏感数据的可能性。即使攻击者成功入侵了网站服务器,也无法直接访问数据库中的主要数据,因为数据库服务器是独立的
CDN
- 介绍
为了提升访问体验,在多个地方部署CDN服务器,自动将用户的请求路由到最近的服务器节点,就近地为用户提供服务
- 识别
绕过
WAF
04-经架构信息打点后,可能要进行适当的绕过,比如CDN,WAF,反向代理,然后就可以进一步地愉快地进行网站基本信息的搜集了吗,我认为不是的,应该先搜集源码信息,因为如果网站使用了CMS,或者源码泄露,那么此次渗透就直接上升成了白盒测试,或者直接使用Nday攻击,省略了大部分的打点步骤,岂不美哉?
源码信息
CMS
闭源售卖
- 黑源码网站
- 正规源码网站
泄露
05-经源码信息打点,如果没有收获,那么只能老老实实继续进一步搜集网站基本信息
网站基本信息
语言
- Wappalyzer
数据库
- Wappalyzer
- fofa
web容器
- Wappalyzer
- fofa
操作系统
- 大小写法
- ping TTL值
06-经网站基本信息打点后,了解了网站基本构成,然后就可以进行深度的挖掘信息了,进入网站具体信息打点
网站具体信息
目录
快照
插件信息
- Wappalyzer
第三方接口信息
- Wappalyzer
旁站
端口服务
- nmap(kali自带)
07-经网站具体信息打点后,基本上已经掌握了大部分信息了,运气好的话已经出货了,但如果还是一无所获的话,还可以考虑社工信息(机会不大)
社工信息
就需要人工去找了
- 域名服务商
- 服务器供应商
- 网站管理员
- 网站开发人员
08-到此,对于WEB资产的信息打点就基本结束了,你以为就完了吗?哈哈当然不是啦,还可以对目标旗下的小程序,APP进行信息搜集,小程序往往比较容易一些……
小程序信息
- 安卓模拟器+brup抓包 分析出web资产,重复上述web资产的信息打点
APP信息
外在
- 安卓模拟器+brup抓包 分析出web资产,重复上述web资产的信息打点