信息搜集思路以及方法论
前言
在渗透测试之前,获得对于的授权后,甲方Dad通常会将需要渗透测试的靶标详细罗列出来,这个时候我们就需要对给出的靶标信息(域名/公司名称/ip)进行信息搜集,而好的信息搜集能力可以极大的拓宽我们的攻击面,提高我们出成果的概率
常见的信息搜集分为俩类,本文将进行一些信息搜集思路的介绍以及一些常见信息搜集工具的使用
一.收集域名信息
域名通常都是渗透的起点,扩展攻击面也往往是从公司主域名开始,对主域名进行挖掘其下的子域名和关联资产可以有效拓宽我们的攻击面
1.子域名爆破
这是最经典的攻击面拓展手段,主要有俩种,一种是字典爆破,另外一种则是工具集成查询
原理
原理就是通过枚举常见的域名前缀(如 www, mail, oa, test, dev),组合成完整的子域名(如 mail.target.com),然后向DNS服务器发起解析请求。若能成功解析出IP地址,则证明该子域名存在。
常用工具
Layer子域名挖掘机:Windows下图形化工具,速度快,适合新手。
OneForAll:Python编写,功能极度强大。不仅支持字典爆破,还集成了数十种API接口(如 Virustotal、AlienVault、Shodan、Fofa等)和证书透明度查询,是目前最推荐的子域名收集工具之一。
Kali内置工具:
dnsenum:综合型工具,支持字典爆破、Google搜索、Whois反查、网段扫描。
dnsrecon:功能类似,支持多种DNS记录查询和爆破模式。
fierce:会先尝试区域传输漏洞(AXFR),失败后转为字典爆破。
字典的质量决定爆破结果的上限,针对不同行业可以考虑准备不同的专用字典
Ps(关于泛解析的干扰处理)
泛解析的开启,会导致任何随机前缀的返回ip,导致爆破结果充满大量虚假的子域名干扰后续进程
解决办法就是下对几个绝对不存在的随机前缀做解析,记录泛解析返回的ip和响应特征,然后剔除
2.ICP备案查询
通过ICP备案可以查一个公司主体名下的所有注册域名,从法律方面搜集相关信息
同时通过这种手法可以顺带挖掘企业子公司投资公司以及股东还有资产信息,可以挖掘一些旗下的资产获取旁站,拓宽一些攻击面
供应链攻击面:
通过天眼查/企查查挖掘目标公司的“对外投资”和“供应商”,这些关联企业的安全水平往往低于目标主体,但可能拥有与目标主体网络互通的VPN或专线权限。
小程序/公众号备案:
微信/支付宝小程序的备案主体信息,常能带出传统ICP备案查询不到的内部开发用域名或测试域名。
APP版权信息:
在应用商店查看APP的“开发者”栏,拨打客服电话或访问开发者网站,可能直接关联到母公司未备案的其他主体。
常用网站
国家企业信用信息公示系统 www.gsxt.gov.cn
官方备案:股东、注册资本、变更记录、行政处罚
天眼查
www.tianyancha.com
股权穿透、对外投资、实际控制人、司法风险
企查查
www.qcc.com
类似天眼查,知识产权、招投标、舆情
爱企查
aiqicha.baidu.com
百度旗下,商标、专利、著作权较全
3.SSL证书查询(证书透明度)
Certificate Transparency 是所有CA(证书颁发机构)公开的证书日志。当一个域名申请HTTPS证书时,其域名会被记录,且此记录不可篡改。
因为这个特性,我们就可以查到很多已经下线或者没有DNS解析记录但是历史上申请过证书的子域名,甚至还有同一个服务器上面绑定的非同组织的域名
但是缺点是,可能历史ip记录过多,需要排查筛选很多废弃的域名
常见网站
crtsh[https://crt.sh/]
censys[https://censys.io/certificates]
spyse[https://spyse.com/search/certificate]
certspotter[https://sslmate.com/certspotter/api/]
拓展思路:
证书序列号反查:
在 crt.sh 中找到一个域名的证书序列号(十六进制),将其转换为十进制后,在Fofa中使用 cert="序列号十进制" 语法,可以直接查到绑定了同一证书的IP地址,这些IP极有可能就是源站。
组织名称关联:
在Censys中按证书的 subject.organization字段搜索目标企业全称,能找到归属于该企业但域名完全不同、未被常规字典爆破覆盖的边缘资产。
4.DNS记录查询
DNS记录包含了域名的所有服务器配置线索。不光是A记录,MX、CNAME、TXT、NS记录等都可能直接暴露关键信息
关键记录类型
关键记录类型:
A记录:域名到IPv4地址。
AAAA记录:域名到IPv6地址。
CNAME记录:域名别名。常会泄露其背后使用的CDN厂商或云服务(如 xxx.aliyuncs.com 指向阿里云OSS)。
MX记录:邮件服务器。往往指向企业核心出口或独立邮件托管服务,且IP可能是真实的,未被CDN隐藏。
TXT记录:SPF记录常包含邮件服务器的真实IP网段;其他TXT记录可能泄露阿里云、腾讯云、AWS的密钥验证字符串。
NS记录:域名服务器,可查询是否使用第三方DNS。
常用工具
nslookup:Windows/Linux基础命令,查A/MX/CNAME等。
dig:Linux下功能更强大的DNS诊断工具。
dig target.com ANY # 查询所有记录
dig target.com MX # 查询邮件交换记录
dig axfr @ns-server target.com # 尝试区域传输漏洞
在线网站:https://dnsdumpster.com/,通过DNS信息可视化绘制域名资产地图。
关于域传送漏洞:
虽然现在极少存在,但一旦成功,将直接获取目标域名的所有DNS记录清单。在 dig 中需指定NS服务器的地址,而非域名本身
5.网络空间搜索引擎
被动信息搜集的绝对神器之一,无需向目标发送数据包,直接查询互联网“快照”数据库,获取目标暴露在公网上的各种端口、服务及Banner信息
常见网站
FOFA https://fofa.info/ (语法: domain="target.com")
钟馗之眼 https://www.zoomeye.org/?R1nG (语法: site:target.com)
零零信安 https://0.zone/ (侧重暴露面梳理和攻防结果)
shodan https://www.shodan.io/ (语法: hostname:target.com)
sensys https://censys.com/ (语法: services.tls.certificates.leaf_data.subject.common_name: "target.com")
鹰图 https://hunter.qianxin.com/ (语法: domain.suffix=="target.com")
360quake https://quake.360.net/quake/#/index (语法: domain:"target.com")
6.Kali whois查询
Whois用于查询域名的注册信息,如注册人、邮箱、电话、DNS服务器、注册及到期时间等,可以作为一个较为经典的起手初步筛查方式
Kali内置命令:whois target.com
价值点:
注册邮箱反查:此邮箱可能注册了其他域名,可用于横向扩展。
注册人/机构反查:可用于社工或发现关联资产。
DNS服务器:判断是否为自己搭建,还是使用第三方。
Ps:现在很多域名都开启了“域名隐私保护”,Whois信息可能被隐藏。
7.威胁情报分析
威胁情报平台会聚合域名的历史解析记录、关联的恶意样本、历史攻击流量、Whois历史等信息。这是挖掘“历史遗留资产”的聚集地。
微步在线 https://x.threatbook.cn/
绿盟威胁情报云 https://ti.nsfocus.com/
华为安全中心平台 https://isecurity.huawei.com/sec
二.真实IP
在测试的过程中需要的是最真实的ip,如果对应的目标有做cdn加速或者代理,获取的地址就没什么意义,因为只有获取到诊室的IP才可以测试对应的端口以及针对这些端口开放的服务进行后续测试
1.识别CDN
①.多地ping
多次ping若IP指向多个不同地点且归属不同的服务商(如腾讯云、网宿),则确定使用了CDN
②.Nslookup
查看返回IP的CNAME记录是否指向 *.cdn.*.com 格式,若解析结果存在多个,多半存在,但是只有一个的时候,不一定不存在CDN
③.GET
通过get请求方法请求页面或文件地址,如果HTTP响应头存在“CACHE XXX”的值,则表示可能有走CDN
④.在线网站解析
通过各地DNS解析来判断是否存在,如果ip一致则不存在
2.绕过CDN
绕过CDN存在概率问题,并不是百分百可以绕过
①.html页面信息
提取网站首页源码的title,然后丢到fofa或者其他空间搜索引擎去进行匹配
②.利用证书序列号
网站证书是一串16进制字符,先通过在线网站将其调整为10进制,然后在fofa中使用cert 语法进行查询,域名和ip能够都访问网站就为真实ip
③.DNS历史解析记录
有一些网站可以查询到DNS历史解析记录,可能在很多网站并未采用cdn时候的解析记录就被记录了下来,之后也并未更换服务器,此时就能查询到真实IP地址。
④.子域名爆破法
大量子域名往往与主站共用一个源站IP,但运维常常忘记给所有子域名配置CDN。对子域名列表逐一解析IP,去重后找到出现频率最高的IP,极可能就是源站。
⑤.邮件服务器法
查找域名的MX记录,获取邮件服务器地址;或尝试触发目标网站的“找回密码”功能,让服务器给自己发一封邮件,查看邮件原文中的 Received 字段及最后交付的IP,该IP往往就是源站。
⑥.应用漏洞信息泄露
- phpinfo()页面:若目标存在
phpinfo.php,其中的SERVER_ADDR即为真实IP。 - 云元数据API:在云服务器上的SSRF漏洞点,尝试访问
http://100.100.100.200/latest/meta-data/(阿里云)或http://169.254.169.254/(AWS等),可直接返回包含公网IP的元数据。 - WebSocket/长连接:使用浏览器的开发者工具查看WebSocket连接的IP,有时会直连源站。
⑦.全球ping触发:
有些CDN只为国内加速,国外线路未配置。使用国外的ping服务(如 https://asm.ca.com/en/ping.php)解析,可能得到真实IP。
三.子站或者C段IP
在有一些特殊情况下主站我们测试不了,比如某些活动为了保证安全,会有主站临时下线暂停服务的情况(bushi),这个时候我们就可以对旁站进行测试,由于某些大厂的业务较多,存在买很多公网ip的可能,而且厂商在购买公网IP的时候不太可能说某一个网段买一个,另一个网段再买一个,基本都是一个网段挑选连续的或者直接拿下一整个网段
https://nmap.org/download.html Nmap
https://gobies.org/ Goby
https://github.com/0x727/ShuiZe_0x727 水泽
https://github.com/shadow1ng/fscan fscan
https://github.com/EdgeSecurityTeam/EHole EHole(棱洞)
https://github.com/codeyso/CodeTest ARL灯塔
1.旁站
其实就是同服务器不同站点,旁站指的是网站所在服务器上部署的其他网站,同IP网站,一个IP上布置了多个网站 从同台服务器上的其他网站入手,获取到服务器权限,自然就获取到了目标网站的权限
常见工具
在线查询:
http://stool.chinaz.com/same(站长工具同IP查询)
https://www.webscan.cc/(Webscan同IP查询)
Fofa语法:
ip="x.x.x.x" 查看该IP上绑定的所有域名和服务。
2.C段
同网段不同的服务器,C 段嗅探指的是拿下同一C段下的服务器,也就是说是c段1-255中的一台服务器,再通过内网横向移动获取你想要的服务器权限。
注意:一般情况下云服务器C段的IP都是相互独立的,这些服务器分属不同用户,没有渗透的必要
特别注意:探测C段时一定要确认ip是否归属于目标,因为一个C段中的所有ip不一定全部属于目标。
四.端口及服务
通过上面的过程,我们已经初步收集到了一些ip,接下来我们就要通过ip地址去获取端口,通过端口得到上面挂载的服务,再通过服务的版本以及其他信息获取相关的历史漏洞或者进行弱密码爆破
1.主机发现
主机发现可以发现的信息包括目标主机的存活状态、IP地址、端口开放情况等。
2.端口扫描
对主机进行全端口的扫描,探测端口开放的情况
3.版本探测
对目标主机的系统版本,服务器版本,邮件版本等进行探查,可以找到服务器历史漏洞
4.常用工具
nmap
masscan
御剑
无影(综合的红队渗透工具)
RustScan(可与Nmap联动)
5.插件探测
Fofa
shodan
pro
view
五.收集网站指纹
在渗透测试中,对目标服务器进行指纹识别是重要的一环,因为只有识别出相应的web容器或者CMS或者操作系统信息,才能查看与其相关的漏洞,然后利用历史可用的漏洞进行相应的渗透测试。
1.CMS信息
在线工具:
本地工具:
- WhatWeb
特征识别:
查看 robots.txt(如 /wp-admin/ 表示WordPress)、网页源代码中的generator meta标签、独特的后台登录路径(/dede 是织梦)、readme或license文件。
2.Web服务器
常见:
Nginx, Apache, IIS, Tomcat, Caddy
识别:
看HTTP响应头的 Server 字段,或发起畸形的HTTP请求使其报错回显版本
3.应用服务器
常见:
Tomcat, JBoss, WebLogic, WebSphere, GlassFish。
识别:
通常有独特的默认页面、默认端口(8080, 7001等)和默认后台路径(/console, /manager)。
4.前端技术
识别:
HTML/CSS/JS框架,如 jQuery, Bootstrap, Vue, React。
工具:
浏览器插件 Wappalyzer,一键识别所有前端框架和库。
5.开发语言
判断:
文件后缀名(.php, .asp, .aspx, .jsp, .do, .action)
也可通过删除URL最后一个 / 后的字符串,观察报错页面来判断。
6.操作系统
判断:
Windows:
域名大小写不敏感;路径分隔符 \。
Linux:
大小写敏感;/etc/passwd 等典型路径。
TTL值
不同的操作系统的默认TTL值是不同的, 所以我们可以通过TTL值来判断主机的操作系统,但是当用户修改了TTL值的时候,就会误导我们的判断,所以这种判断方式也不一定准确。下面是默认操作系统的TTL:
1、WINDOWS NT/2000 TTL:128
2、WINDOWS 95/98 TTL:32
3、UNIX TTL:255
4、LINUX TTL:64
5、WIN7 TTL:64
工具:
Nmap的 -O 参数基于TCP/IP协议栈指纹进行操作系统探测。
7.CDN信息
见前文
8.ip以及域名
同上
9.端口信息
同上
常用工具
whatweb
WhatWeb 是一款用于识别网站技术栈和特征的开源Web扫描工具。它可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。
六.敏感信息泄露
由于发布网站时,服务器配置问题,导致目录能够在浏览器中打开,从而引起信息泄露,造成安全隐患。
1.robots.txt
Robots协议,即“网络爬虫排除标准”,网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,同时也记录网站所具有基本的目录
2.目录信息扫描
通过扫描目录和文件,大致了解同站的的结构,获取突破点,比如后台,文件备份,上传点等。
目录扫描的主要目标是扫描敏感信息、隐藏的目录和api、代码仓库、备份文件等。
常见工具
各种御剑,dirmap,Dirsearch,dirbuster,7kbstorm,gobuster等等
3.代码管理工具泄露
主要是出现在搭建网站的时候会出现源码泄露的情况,很多情况下我们都是对网站进行黑盒测试,而如果获取到源码后,那么漏洞相当于自己送过来。
同样也存在一些程序员下意识习惯把本人负责的项目亦或者是其中的组件推送至自己的GitHub仓库,这种都有可能造成敏感信息泄露
常见的泄露
具体的利用以及原理另写一篇
git源码泄露
svn源码泄露
hg源码泄漏
CVS泄露
Bazaar/bzr泄露
网站备份压缩文件
WEB-INF/web.xml 泄露
DS_Store 文件泄露
SWP 文件泄露
GitHub源码泄漏
4.网站扫描
这个就是用各种扫描器了,比如nessus,极光,xray,AWVS等等等等
5.js信息
在JS中可能会存在大量的敏感信息,包括但不限于:
- 某些服务的接口,可以测试这些接口是否有未授权或者水平越权逻辑漏洞(baseurl/url)
- 子域名,可能包含有不常见或者子域名收集过程中没收集到的目标
- 密码、secretKey等敏感数据
- 前端明文的加密方式以及密钥(AES等)
常见工具
JsFinder
七.综合信息
这个搜集的信息相对来说就会全面一点,更多的是通过浏览器或者搜索引擎进行
1.搜索引擎
最重要的就是搜索语法
fofa
domain="qq.com" #查询子域名
host=".gov.cn" #从url中搜索".gov.cn"
header="thinkphp" #从http头中搜索thinkphp
port="6379" #查找对应“6379”端口的资产
ip="1.1.1.1" #从ip中搜索包含“1.1.1.1”的网站
ip="220.181.111.1/24" #查询IP为“220.181.111.1”的C网段资产
status_code="402" #查询服务器状态为“402”的资产
app="通达OA网络智能办公系统" #搜索通达OA系统
country="CN" #搜索指定国家(编码)的资产
region="Henan" #搜索指定行政区的资产
city="beijing" #搜索指定城市的资产
Google语法
特殊语法:
site:可以限制你搜索范围的域名;
inurl:用于搜索网页上包含的URL,这个语法对寻找网页上的搜索,帮助之类的很有用;
intext: 只搜索网页<body>部分中包含的文字(也就是忽略了标题、URL等的文字);
intitle: 查包含关键词的页面,一般用于社工别人的webshell密码;
filetype:搜索文件的后缀或者扩展名;
intitle:限制你搜索的网页标题;
inanchor: 搜素网站锚节点内容
cache # 缓存搜索 cache 关键字
cache:secquan.org 当一个链接无法访问时(或信息被屏蔽时);当信息已经被修改,想看以前的信息时
常用技巧:
查找后台地址:
site:域名
inurl:login|admin|manage|member|admin_login|login_admin|system|user|main|cms
查找文本内容:
site:域名 intext:管理|后台|登陆|用户名|密码|验证码|系统|admin|login|sys|managetem|password|username
查找可注入点:
site:域名 inurl:aspx|jsp|php|asp
查找上传漏洞:
site:域名 inurl:file|load|editor|Files
找eweb编辑器:
site:域名 inurl:ewebeditor|editor|uploadfile|eweb|edit
存在的数据库:
site:域名 filetype:mdb|asp|#
查看脚本类型(文件)
site:域名 filetype:asp/aspx/php/jsp
迂回策略入侵:
inurl:cms/data/templates/images/index/
bing.com语法
inbody: 查找正文内容 inbody:密码|登陆 查找标签内容
inanchor: 查找锚节点
filetype: 查找文件类型
site:返回属于指定网站的网页。若要搜索两个或更多域,请使用逻辑运算符OR对域进行分组ip: 查找特点ip的网站
可以搜集的信息内容:
1.企业产权
企业产权信息搜集主要收集目标业务的一些产权信息,例如域名产权、APP与小程序的产权、员工信息、供应链信息等
2.app方面
可以通过微信小程序,应用软件商店,公众号信息等,因为移动平台使用便捷,功能点较多,所以攻击面较广
3.IP反查
使用网络空间搜索引擎或者ARL灯塔收集信息后,通常会有一些没有域名的独立IP,可以使用IP反查的手段来确定这个独立IP是否归属于该单位
ip138反查[https://site.ip138.com/]微步在线[https://x.threatbook.cn/]爱站反查域名[https://dns.aizhan.com/]
