前言
众所周知渗透测试的本质是信息收集,在渗透测试中信息收集的质量直接关系到渗透测试成果的与否。在对系统进行渗透测试前的信息收集是通过各种方式获取所需要的信息,收集的信息越多对目标进行渗透的优势越有利。通过利用获取到的信息对系统进行渗透。只有掌握了足够多的目标信息才能更好的对目标系统进行渗透。正所谓知彼知己百战不殆。
1.信息收集的分类
从信息收集方式分类可将信息收集分为两大类:
①主动信息收集②被动信息收集
1.1 主动信息收集
通过主动扫描目标主机或网站,对目标进行探测性扫描获取相关信息。这种方式获取到的信息更为准确能获取到的信息更多,但缺点也比较明显。通过主动信息收集容易留下明显的攻击访问痕迹,易发现和被溯源。
1.2 被动信息收集
通过搜索引擎等公开渠道进行相关信息的检索收集信息,这种方式不直接与目标建立交互访问连接,避免了留下访问痕迹。被动信息收集的优缺点正好与主动信息收集的优缺点相反,被动信息收集不会留下访问痕迹避免被溯源发现,但收集到的信息依赖于搜索引擎,准确性和质量无法保证。
2.信息收集目标和方法
①网络安全学习路线
②20 份渗透测试电子书
③安全攻防 357 页笔记
④50 份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100 个漏洞实战案例
⑧安全大厂内部教程
2.1 域名信息
2.1.1 Whois
通过 whois 查询可以获得域名注册者邮箱地址等信息。一般情况下对于中小型网站,域名注册者就是网站管理员。利用搜索引擎对 whois 查询到的信息进行搜索,获取更多域名注册者的个人信息。通过 whois 查询获取 IP、法人的名字、电话、邮箱、地址等信息对社工攻击具有很大的作用。
相关:
站长之家查询接口:https://whois.chinaz.com/
阿里云查询接口:https://whois.aliyun.com/
全球whois查询:https://www.whois.com/cn/
2.1.2 搜索引擎查找
搜索引擎通常会记录域名信息,可以通过搜索引擎高级搜索语法进行查询 。
例如使用 google 高级搜索语法查找 baidu 的子域名语法为site:baidu.com
利用空间测绘搜索引擎语法进行搜索,目前比较常用的空间测绘搜索引擎入下:
fofa:https://fofa.info/toLogin
鹰图:https://hunter.qianxin.com/
quake:https://quake.360.cn/quake/#/index
钟馗之眼:https://www.zoomeye.org/
Shodan:https://www.shodan.io/
2.1.3 第三方查询
国外有一些第三方应用提供了子域名查询功能,因工具多为国外应用,多数使用对国内查找效果不够好,列举如下:
-
DNSDumpster
-
Virustotal
-
CrtSearch
-
threatminer
-
Censys
2.1.4 网站信息利用
在网站中可以根据网站本身的功能特点收集网站本身、各项安全策略、设置等可能暴露泄漏出的一些信息。
网站本身的交互通常不囿于单个域名,会和其他子域交互。对于这种情况,可以通过爬取网站,收集站点中的其他子域信息。这些信息通常出现在 JavaScript 文件、资源文件链接等位置。
网站的安全策略如跨域策略、CSP 规则等通常也包含相关域名的信息。有时候多个域名为了方便会使用同一个 SSL/TLS 证书,因此有时可通过证书来获取相关域名信息。
2.1.5 CDN
可通过验证网站是否使用了 CDN 进行域名查找,一般使用了 CDN 的域名的父域或者子域名不一定使用了 CDN,可以通过这种方式去查找对应的 IP。另外 CDN 可能是在网站上线一段时间后才使用的,可以通过查找域名解析记录的方式去查找真实 IP。
2.1.6 域名枚举
通过工具进行子域名枚举也是一种有效的域名搜集手段,域名枚举采用主动信息收集的方式,这种方式向目标站点发送了大量的请求数据包容易被检测发现。比较常用的域名枚举工具有:
* [Layer子域名挖掘机]http://www.xdowns.com/soft/525081.html
* [burp插件domain_hunter_pro]https://github.com/bit4woo/domain_hunter_pro/releases/download/v1.4/domain_hunter_pro-v1.4-jar-with-dependencies.jar
* [dirsearch]https://github.com/maurosoria/dirsearch
* [dirb]http://dirb.sourceforge.net/
* [御剑后台扫描]https://www.xiazaiba.com/html/84460.html
* [teemo]https://github.com/bit4woo/teemo
* [subDomainsBrute]https://github.com/lijiejie/subDomainsBrute
2.2 端口信息
2.2.1 常见端口脆弱点
2.2.2 常见端口扫描方式
在传输层 TCP/IP 协议中包含 TCP、UDP 两种协议,其中 TCP 面向连接的数据传输协议中通过 TCP 请求建立“三次握手”连接的原理就是端口扫描技术的基本原理,端口扫描就是根据 TCP 请求的“三次握手”原理在此基础上进行的。端口扫描并非 TCP 建立连接的过程,而是通过 TCP 连接的中不同阶段的状态进行实现的。
TCP 连接“三次握手”的过程如上图所示,在 TCP 建立连接的过程中从图中也可以看出服务端有四种不同的状态:
(1)CLOSED 状态:除了收到 RST 数据包进行丢弃,收到其他数据包一律返回 RST。
(2)LISTEN 状态:如果收到客户端建立连的接请求 SYN 数据包则进行第二次握手返回 SYN 和 ACK,然后转入 SYN-RCVD 状态。如果收到 ACK 第三次握手包返回 RST,收到其他包一律丢弃。
(3)SYN-RCVD 状态:如果收到第三次握手 ACK 数据则转入 ESTAB-LISHED 状态,此时完成了 TCP 连接的建立。如果收到的数据包为 RST 就返回到 LISTEN 状态。
基于 TCP 建立连接过程中服务端端口的几种状态,端口扫描技术可分为全连接、半连接、FIN、ACK 和 NULL 四种扫描方式。
全扫描
全连接扫描又叫做 TCP Connect 扫描,通过调用操作系统 connect 函数与目标建立真实的 TCP 连接来判断端口是否开放,连接建立成功则说明端口是开放的状态反之则关闭,这种扫描方式对大量的端口测试需要大量的函数调用速度较慢且建立连接的形式已被检测。
半扫描
TCP SYN 扫描是半连接的扫描,这种扫描方式通过与目标端口建立 TCP 连接的过程中仅进行前两次握手,在第三次握手时客户端不发送确认报文,使 TCP 连接无法建立。这种扫描方式不会再目标主机留下扫描痕迹,但利用条件要求较高需要较高的系统权限。
FIN 扫描
TCP FIN 扫描是一种更具隐蔽性的扫描方式,FIN 数据能够通过防火墙的过滤不为其他过滤器所拦截更具有隐蔽性。在 FIN 扫描方式中利用了扫描中关闭的端口会对 FIN 数据进行 RST 回复,开放的端口会忽略 FIN 数据包回复。虽然这种扫描方式更加隐蔽但是对于不同的操作系统有些系统并不适用,这种扫描方式容易得到误报。
ACK 扫描
ACK 扫描技术并不能探测端口开放情况,ACK 扫描通过只发送 ACK 标志位报文,如果目标主机返回 RST 标记报文则说明目标主机未受到防火墙保护,如果不能够收到响应报文说明发送报文未到达,系统端口可能受防火墙保护。这种方式探测端口开放不准确,适合二层主机扫描探测。
NULL 扫描
NULL 扫描,将报文中所有标记都置为 0 进行发送,如果目标返回 RST 则端口关闭,没有收到响应说明端口开放或被防火墙保护。这种扫描方式扫描的结果准确度也不高。
2.2.3 批量端口搜索
要搜集开放固定端口的系统可以使用资产搜索引擎使用 port 语法获取互联网上大量的系统,常用的搜索引擎如下。
-
Shodan
-
ZoomEye
-
fofa
-
鹰图
2.3 站点信息
判断网站操作系统
-
Linux 大小写敏感
-
Windows 大小写不敏感
扫描敏感文件
-
robots.txt
-
crossdomain.xml
-
sitemap.xml
-
xx.tar.gz
-
xx.bak
确定网站采用的语言
-
如 PHP / Java / Python 等
-
找后缀,比如 php/asp/jsp
判断前/后端框架
-
如 jQuery / BootStrap / Vue / React / Angular 等
-
查看源代码
-
根据 Cookie 判断
-
根据 CSS / 图片等资源的 hash 值判断
-
根据 URL 路由判断,如 wp-admin
-
根据网页中的关键字判断
-
根据响应头中的 X-Powered-By
确定中间 Web 容器服务器
-
如 Apache / Nginx / IIS 等
-
查看 header 中的信息
-
根据报错信息判断
-
根据默认页面判断
-
如 Tomcat / Jboss / Weblogic 等
CDN 信息
-
常见的有 Cloudflare、yunjiasu
探测 WAF
-
探测是否使用 WAF、判断类型
敏感目录
-
扫描敏感目录查看是否存在信息泄漏
-
使用爬虫爬取网站信息
-
通过获取到的信息进一步利用
-
通过拿到的目录名称,文件名称及文件扩展名了解网站开发人员的命名思路,确定其命名规则,推测出更多的目录及文件名
2.4 搜索引擎利用
合理的使用搜索引擎(Google/Bing/Baidu 等)可以获取目标站点的较多信息。
2.4.1 高级搜索语法
-
site
把搜索范围限定在特定站点中,如 site:某某.com。用来搜索某个域名下的所有被搜索引擎收录的文件,适用于所有的搜索引擎。
-
domain
查找跟某一网站相关的信息或反向链接,目前此指令只适用于百度,例如:在百度上提交搜索“domain:www.mahaixiang.cn
”,所搜索的结果就的关于www.mahaixiang.cn
网站的反向链接。
-
link
查询网站外链的搜索指令(例如:Link:www.mahaixiang.cn
),此搜索指令只适用于 Google,在百度上是不起作用。
-
inurl
inurl:指令用于搜索查询词出现在 url 中的页面,百度和 Google 都支持 inurl 指令,inurl 指令支持中文和英文。
比如搜索:inurl:搜索引擎优化,返回的结果都是网址 url 中包含“搜索引擎优化”的页面。
-
and
利用 and 表示前后两个关键词是“与”的逻辑关系,例如输入关键词:“渗透测试 and 网络工程”,就会找出同时包含渗透测试和网络工程有关的网站
-
or
利用 or(|)表示前后两个词是“或”的逻辑关系,例如输入关键词:“渗透测试 and 网络工程”,会找出将包含渗透测试或者网络工程的网页。or 与|等同,使用“A|B”来搜索“或者包含词语 A,或者包含词语 B”的网页。
-
双引号(””)
把搜索词放在双引号中(英文半角双引号),代表完全匹配搜索一个词,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配,目前,百度和 Google 都支持这个指令,例如:搜索“SEO 博客”。
-
减号(-)
减号代表搜索不包含减号后面的词的页面,使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词。
-
星号(*)
星号是常用的通配符,也可以用在搜索中代表任何文字使用。
-
inurl
inurl:xxx 的作用是命令搜索引擎查找 url 中包含 xxx 的网页,例如:inurl:www.baidu.com
。“inurl:xxx 关键词”或“关键词 inurl:xxx
”两者意义一样,都是要求搜索引擎查找的结果满足 url 中包括 xxx 和网页中含有“关键词”的两个要求。通常情况,任何网站的 url 都不是随意设置的,都经过一番过虑,有一定用意的,很多地方,url 链接和网页的内容有着密切的相关,所以,可以利用这种相关性,来缩小范围,快速准确地找到所需信息。
-
intitle
intitle: 指令返回的是页面 title 中包含关键词的页面,使用 intitle 指令可以根据网站的标题更准确的找出互联网中的相关站点。
-
info
提交 info:url,将会显示需要查询网站的一些信息。
-
filetype
filetype 命令对搜索对象的文件类型做限制,冒号后是文档格式,如 PDF、DOC、XLS 等。
当我们在查询里边包含 filetype:扩展名的时候,Google 会限制查询结果仅返回特定文件类型的网页。
用于搜索特定文件格式,目前,Google 和百度都支持 filetype 指令,比如搜索:“密码 filetype:pdf”,搜索返回的就是包含“密码”这个关键词的所有 pdf 文件,其它可用的特定文件类型格式查询还有 doc、txt、ppt、xls、rtf、swf、ps 等。
2.4.2 网页快照
搜索引擎的快照中也常包含一些关键信息,如程序报错信息可以会泄漏网站具体路径,或者一些快照中会保存一些测试用的测试信息,比如说某个网站在开发了后台功能模块的时候,还没给所有页面增加权限鉴别,此时被搜索引擎抓取了快照,即使后来网站增加了权限鉴别,但搜索引擎的快照中仍会保留这些信息。
2.5 社会工程学
2.5.1 企业信息收集
一些网站如天眼查等,可以提供企业关系挖掘、工商信息、商标专利、企业年报等信息查询,可以提供企业的较为细致的信息。
相关网站:
* [天眼查]https://www.tianyancha.com/
* [爱企查]https://aiqicha.baidu.com/?from=pz
* [企查查]https://aiqicha.baidu.com/?from=fc&source=aff--2097005918&bd_vid=5557041587835542032
2.5.2 人员信息收集
’针对人员的信息收集考虑对目标重要人员、组织架构、社会关系的收集和分析。其中重要人员主要指高管、系统管理员、运维、财务、人事、业务人员的个人电脑。
人员信息收集较容易的入口点是网站,网站中可能包含网站的开发、管理维护等人员的信息。从网站联系功能中和代码的注释信息中都可能得到的所有开发及维护人员的姓名和邮件地址及其他联系方式。
还可以使用社工库通过相关手机号、qq、邮箱等个人信息对人员进行信息查询。
在获取这些信息后,可以在 Github/Linkedin 等网站中进一步查找这些人在互联网上发布的与目标站点有关的一切信息,分析并发现有用的信息。
此外,可以对获取到的邮箱进行密码爆破的操作,获取对应的密码。
一份网络攻防渗透测试的学习路线,不藏私了!
如果你对网络安全入门感兴趣,那么你点击这里👉CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
如果你对网络安全感兴趣,学习资源免费分享,保证100%免费!!!(嘿客入门教程)
👉网安(嘿客)全套学习视频👈
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
👉网安(嘿客红蓝对抗)所有方向的学习路线👈
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
学习资料工具包
压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。
面试题资料
独家渠道收集京东、360、天融信等公司测试题!进大厂指日可待!
👉嘿客必备开发工具👈
工欲善其事必先利其器。学习嘿客常用的开发软件都在这里了,给大家节省了很多时间。