0x01 渗透测试中的目标资产信息收集
1 目标单位清单信息收集
1.1 通用搜索引擎查询
搜索企业关键字。如果搜索引擎支持语法查询,可以使用语法快速过滤结果(参考google hacking)。
得到的结果往往不全,需要结合其他方式进行扩展与补充。
1.2 网络安全搜索引擎
使用网络安全搜索引擎的语法查询过滤出目标单位相关的资产。不同的网络安全搜索引擎有不同的侧重点。前4种对国内覆盖比较全,最后1种是针对全网的神器。
名称 | 官网 |
---|---|
fofa | https://fofa.so/ |
censys | https://censys.io/ |
quark | https://quake.360.cn/quake/welcome |
zoomeye | https://www.zoomeye.org/ |
shodan | https://www.shodan.io/ |
前两个比较好用,也写了API查询脚本,附在toolkits仓库中,但是从实际使用情况来看,这类搜索引擎的结果中往往含有大量误报。
1.3 企业注册信息查询
可以使用企查查、爱企查、天眼查,搜索企业注册信息。重点关注股权结构下企业名下控股的其他子公司。
名称 | 官网 |
---|---|
企查查 | https://www.qcc.com/ |
爱企查 | https://aiqicha.baidu.com/ |
天眼查 | https://www.tianyancha.com/ |
crunchbase
copyright查询
1.4 工信部备案信息查询
查询企业名下的所有注册域名信息,但是要求必须提供企业的标准名称全称,不支持模糊搜索。
https://beian.miit.gov.cn/#/Integrated/index
可以先用icp站长之家查询确定出基本名称。
1.5 企业分配IP段查询
企业分配IP段查询:http://bgp.he.net,提取工具metabigor
2 IP资产梳理
2.1 IP正则
顾名思义,用于匹配字符串中的IP。
C语言:(IP及端口)
#define IP_REGX "((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])"
#define PORT_REGX "(:[1-5][0-9]{4}/)|(:6[0-4][0-9]{3}/)|(:65[0-4][0-9]{2}/)|(:655[0-2][0-9]{1}/)|(:6553[0-5]/)|(:[1-9][0-9]{0,3}/)"
Python:(IP)
re.findall(r"\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b", string_ip)
2.2 IP转C段
用于将各种类型的IP段统一处理成单IP清单形式。
input:ip.txt
executing: python3 info-ipsection.py
output:ip_result.txt
# 归档在 https://github.com/aplyc1a/toolkits中。
3 域名资产梳理
3.1 常用域名服务器
#国内:
114.114.114.114 # 运营商通用DNS
114.114.115.115 # 运营商通用DNS
114.114.114.119 # 运营商通用DNS
114.114.114.110 # 运营商通用DNS
223.5.5.5 # 阿里公共DNS
223.6.6.6 # 阿里公共DNS
180.76.76.76 # 百度公共DNS
119.29.29.29 # 腾讯DNSpod
#国外:
8.8.8.8 # google公共DNS
8.8.4.4 # google公共DNS
208.67.222.222 # OpenDNS
208.67.220.220 # OpenDNS
208.67.222.123 # OpenDNS Family
208.67.220.123 # OpenDNS Family
199.91.73.222 # V2EX DNS
178.79.131.110 # V2EX DNS
216.146.35.35 # Dyn DNS
216.146.36.36 # Dyn DNS
8.26.56.26 # Comodo Secure
8.20.247.20 # Comodo Secure
156.154.70.1 # UltraDNS
156.154.71.1 # UltraDNS
199.85.126.10 # Norton ConnectSafe
199.85.127.10 # Norton ConnectSafe
3.1.1 whois查询
3.2 子域名挖掘
可能会遇到泛解析问题。
3.2.1 利用子域名历史解析记录
https://securitytrails.com/list/apex_domain/具体域名
https://sitereport.netcraft.com/
3.2.2 利用枚举工具
子域名挖掘机5.0:支持多级枚举。
subDomainsBrute:python2写的字典枚举工具。
利用DNS枚举工具可能会产生DNS泛解析问题。
3.2.3 DNS域传送配置漏洞
DNS服务器配置不当,导致匿名用户利用DNS域传送协议获取某个域的所有记录。 通过可以实现DNS域传送协议的程序,尝试匿名进行DNS域传送,获取记录。
非常少见。对于有域传送漏洞的DNS服务器,可以使用以下命令:
dig @某漏洞的DNSServer -t axfr 待查的域名
3.3 旁站挖掘
3.4 域名转IP
手工查询有3种方式:
1、手工ping。
2、手工nslookup。nslookup domain DNSServer
3、手工dig。dig domain @DNSServer
工具查询,写好了一个通过dig批量查询所有DNS record并进行导出的python脚本。
input:domain.txt
executing: python3 info-dnsdigger.py
output:nslookup.csv
# 归档在 https://github.com/aplyc1a/toolkits中。
3.5 IP真实性判定
3.5.1 检测
基本原理是判断一个域名是否绑定在某个固定的IP上。
如果在进行域名转IP的过程中发现以下现象,说明得到的IP不准确,可能存在CDN或其他waf类设备:
- 1.多次ping域名,IP地址不唯一。
- 2.选择不同的DNS服务器进行查询或查询结果中发现A记录的IP不唯一。
- 3.DNS查询时发现CNAME指向了某waf类或cdn域名。
- 4.使用在线工具发现多地返回的地址不唯一。(如,https://myssl.com/cdn_check.html、https://www.yunsee.cn/、http://ping.chinaz.com、http://ping.aizhan.com、http://ce.cloud.360.cn)
3.5.2 确定
一旦识别到了CDN,就要考虑有没有办法绕过CDN发现真实IP:
- 1.统计其他子域名,总结出可能的C段。对C段进行端口服务发现。
- 2.利用公开的DNS历史解析记录数据库,发现该域名绑定过的IP。securitytrails会记录历史所有的解析记录。
https://dnsdb.io/zh-cn/
https://x.threatbook.cn/
http://toolbar.netcraft.com/site_report?url=
http://viewdns.info/
https://tools.ipip.net/cdn.php
3.网络安全搜索引擎。
1.fofa查询,过滤页面关键字。body="抓手"、title="beijing"、icp="京ICP证030173号" 2.censys查询,过滤cdn与目标间的ssl证书。parsed.names: xyz123boot.com and tags.raw: trusted 或直接搜证书的散列值。在结果中看IPv4主机地址。
- 4.邮件订阅功能。如果目标含有RSS邮件订阅功能,通过分析邮件标头内的发送人信息,有时能获得目标的真实IP。
- 5.F5 LTM做CDN时,set-cookie关键字的value字段含有目标的真实IP。可以先将value值的第一段转为16进制,分为4部分,再由后往前,依次推出IP地址。
4 资产梳理
4.1 web资产发现
webfinder.jar
goby
网络安全搜索引擎搜IP
4.2 web组件指纹识别
whatweb
4.3 web路径爆破
Windows:御剑
Linux:DirBuster、Dirmap
4.4 其他服务
nessus
goby
nmap
5 其他信息收集方式
5.1 图片搜索
利用百度识图、google识图等工具,在网上找到相似图片或原图,进而发现其他相关信息。
5.2 icon指纹识别
fofa:icon搜索
shodan:http.favicon.hash搜索
zoomeye:iconhash搜索