为什么要做信息收集?#
情报搜集的目的是获取渗透目标的准确信息,以了解目标组织的运作方式,确定最佳的进攻路线,而这一切应当悄无声息地进行,不应让对方察觉到你的存在或分析出你的意图。
渗透测试最重要的阶段之一就是信息收集。为了启动渗透测试,用户需要收集关于目标主机的基本信息。== 用户得到的信息越多,渗透测试成功的概率也就越高 ==。
信息收集的分类#
- 被动信息收集:== 利用第三方的服务对目标进行访问 ==:Google 搜索、Shodan 搜索、其他综合工具,被动信息收集是指京可能多低收集与目标相关的信息
- 主动信息收集:== 通过直接扫描目标主机或者网站 ==,主动方式能获取更多的信息,目标系统可能会记录操作信息。
主要收集哪些信息?#
IP 资源 | 服务器信息 | 网站信息 | 人力资源 |
---|---|---|---|
真实 IP | 操作系统类型和版本 | CMS | 域名所有人、注册商 |
旁站信息 | 开放端口 | WAF | 手机号码 |
C 段主机 | x | Web 中间件 | 邮箱 |
x | x | 开发语言 | 各种隐私 |
x | x | 数据库 | x |
x | x | API、特定文件 | x |
信息收集方法#
1. 真实 IP#
01、判断是否真实 IP#
谈到真实 IP,先简单介绍一下什么是
CDN
技术。它的中文名是 == 内容分发网络 ==,为了保证网络的稳定和快速传输,网站服务商会在网络的不同位置设置节点服务器,通过 CDN 技术将网络请求分发到最优的节点服务器上面。
- 在线网站查询
站长工具:http://ping.chinaz.com/
爱站网:https://ping.aizhan.com/
== 有多个不同响应 IP,那说明可能存在 CDN==。
- nslookup
如果返回域名解析对应多个 IP 地址多半是使用了 CDN
02、如何找到真实 IP(绕过 CDN)#
1. 查找子域名 IP#
子域名可能跟主站在同一个服务器 ** 或者同一个 C 段网络中,通过查询子域名的 IP 信息来辅助判断主站的真实 IP 信息。
见下面 ==4. 子域名信息收集 ==
2. 查看历史 DNS 解析信息#
查看 IP 与 域名绑定的历史记录,可能会存在 == 使用 CDN 前的记录 ==,然后 == 分析哪些 IP 不在现在的 CDN 解析 IP 里面 ==,就 == 有可能是没有加 CDN 加速时的真实 IP==。
- viewdns.info DNS 历史记录网站,记录了几年内的更改记录。

-
securitytrails.com 庞大的 DNS 历史数据库,我试了下可以查出几年内网站用过的 IP、机房信息等,非常可怕。(需要注册账号才能使用)
语法domain:baihe.com type:A
只需在搜索字段中输入网站域名,然后按 Enter 键即可,这时 “历史数据” 就可以在左侧的菜单中找到。
- cloudflare 的忠告
==A、AAAA、CNAME 或 MX 记录指向您的源站,将暴露您的原始 IP。
==
所以说可以查看域名对应的 DNS 解析记录
3. 利用国外的主机直接进行探测#
另一种如果没有国外主机可以利用公开的多地 ping 服务,多地 ping 服务有国外的探测节点,可以利用 == 国外节点的返回 ICMP 应答信息 == 来判断真实的 IP 信息。
- 国外节点 ping 地址
http://www.webkaka.com/Ping.aspx
4. 根据对方发来的邮件,查邮箱服务器 IP#
- RSS 邮件订阅,很多网站都自带 sendmail,会发邮件给我们,此时查看邮件源码里面就会包含服务器的真实 IP 了。
- 如果目标系统有发件功能,通常在注册用户 / 找回密码等地方,通过注册确认、验证码等系统发来的邮件进行查看邮件原文即可查看发件 IP 地址。
- DNS 的MX 记录(见上面第 2 小点)
5. 证书查询#
原理就是对 ip 的 443 端口发送 clienthello,对方回复的 serverhello 中有 ssl 证书,ssl 证书里的 ==commonname 有域名信息 ==。这样就知道了解析这个 ip 的域名。所以更准确的说是 IP 的 443 端口可能会暴露了域名。
https://search.censys.io/#查看历史证书
语法
parsed.names: 4399.com and tags.raw: trusted
只显示有效证书的查询参数为:tags.raw:trusted

Censys 将向你显示符合上述搜索条件的所有标准证书,以上这些证书是在扫描中找到的。
随便按一个证书

6.zmap 抓取目标 ip 段 80 的 banner 信息#
随机扫描 10000 个 IP 的 80 端口
zmap -B 10M -p 80 -n 10000 -o results.csv
循环得到的 IP,用 curl 打印出 banner
for i in `zmap -B 10M -p 80 -n 10000`;do curl -s -I "$i" >> out1;done
然后匹配到目标域名的 == 相同 banner==,那个 IP 就是真实 IP
7. 域名微调#
以前用 CDN 的时候有个习惯,只让 WWW 域名使用 cdn,秃域名不适用,为的是在维护网站时更方便,不用等 cdn 缓存。所以试着把目标网站的 www 去掉,ping 一下看 ip 是不是变了。
8. 社工#
拿到了目标网站管理员在 CDN 的账号了,此时就可以自己在 CDN 的配置中找到网站的真实 IP 了。
2. 旁站信息收集#
旁站是与攻击目标在 == 同一服务器上的不同网站 ==,当攻击目标没有漏洞的情况下,可以通过查找旁站的漏洞,通过攻击旁站,然后再通过提权拿到服务器的最高权限。
- nmap 扫描端口
nmap -sV -p- 真实ip -v -oN xxx.txt
- 在线查询网站
3.C 段信息收集#
C 段主机是指 == 与目标服务器在同一 C 段网络 == 的服务器,攻击目标的 C 段存活主机是信息收集的重要信息,很多单位企业的内部服务器可能都会在一个 C 段网络中。
- nmap
nmap -sn 真实IP/24 -v -oN xxx.txt
-n (不用域名解析)
告诉 Nmap 永不对它发现的活动 IP 地址进行反向域名解析。 既然 DNS 一般比较慢,这可以让事情更快些。
- 利用 Google,语法:site:125.125.125.*
4. 子域名信息收集#
01、子域名爆破工具#
- ==AllinOne== https://github.com/shmilylty/OneForAll
python 写的工具,OneForAll 需要高于 Python 3.6.0 的版本才能运行,OneForAll 在默认参数正常执行完毕会在 results 目录生成相应结果
用前安装依赖 pip install -r requirements.txt
python3 oneforall.py --target example.com run
python3 oneforall.py --targets ./example.txt run
- JSFinder 见下面 ==8.06==
- ESD (GitHub 下载,但是我用起来报错)
# 扫描单个域名
esd -d qq.com
- subfinder (GitHub 下载需要 go 语言)
subfinder -d hackerone.com
配合httpx
使用,可以找到正在运行的 http 服务器 (httpx 是 go 语言写的那个)
echo 4399.com | subfinder -silent | httpx -ip > subdomain_list
httpx --silent 是只输出域名

02、在线查询网站#
- == 搜索引擎发现子域 ==
百度搜索引擎
site:baidu.com
谷歌搜索引擎
site:baidu.com
https://fofa.info/
https://www.shodan.io/
https://x.threatbook.com/v5/mapping
https://www.dnsdb.io/zh-cn/ 好用但是用多需要会员
输入 baidu.com type:A

5. 判断操作系统类型和版本#
- nmap
nmap -O 192.168.88.21
-
网站 url 对大小写是否敏感(不敏感是 windows,反之 linux)
-
windwos TTL 值一般 128(或 > 100),Linux 为 64
6. 网站所有人信息收集#
对于字典制作有帮助
01、whois#
whois(读作 “Who is”,非缩写)是用来查询域名的 IP 以及所有者等信息的传输协议。简单说,whois 就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如 == 域名所有人、域名注册商 ==)。通过 whois 来实现对域名信息的查询。早期的 whois 查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询。网页接口的查询工具仍然依赖 whois 协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用。whois 通常使用TCP协议 43 端口。每个域名/IP 的 whois 信息由对应的管理机构保存。
== 每个域名或 IP 的 WHOIS 信息由对应的管理机构保存 ==,例如,以.com 结尾的域名的 WHOIS 信息由.com 域名运营商 VeriSign 管理,中国国家顶级域名.cn 域名由 CNNIC 管理。
02、社会工程学#
假设现在我们通过目标的同事撑握了信息,比如目标的真实姓名、联系方式、作休时间… 等等。* 高明的社会工程学师会把前前后后的信息进行组织、归类、筛选。以构造精心准备的陷阱,这样,可使目标自行走入。*
03、官网保留的个人信息#
一般公司都会将官方的联系方式放在官网上面,可以通过相关的联系方式进行邮箱信息、电话信息的收集 。
04、招聘信息收集#
招聘网站的招聘信息和求职简历有大量的人员相关信息,招聘信息中涉及招聘公司招聘人员相关的电子邮箱、手机号等相关信息,求职简历中求职人员姓名、手机号、电子邮箱、工作经历等非常详尽的个人信息,如果招聘网站存在安全漏洞,求职人员的简历就有可能造成泄漏。
05、ICP 备案信息#
知道企业信息
、备案审核时间
https://beian.miit.gov.cn/#/Integrated/index
06、暴露位置#
上面第 2 点有同样效果
- 查看单个证书信息
07、查企业信息#
08、获取邮箱信息#
09、其他#
(1)再网页上直接找用户名(因为一般都有邮箱之类的,这里你能拿到用户名,根据公司名称或者数字生成相应的字典)
(2)利用 google 语法,搜索 xlsx 等,或者直接搜这个公司相关的,可能会出现用户名
(3)github 上找一下这个公司看看有没有啥泄露的
(4)招聘网站上看看,面试官之类的可能会泄露电话号码,用户名,根据电话号码查用户名
(5)搜索公司的架构图,如果有领导的记下来
(6)利用公众号,微博等社交软件搜索公司的信息。
(7)百度图片(这个看运气了,有时候网页搜出来太多了,直接看看百度图片,有可能出现用户名 筛选起来也很快,是我在之前某次攻防中需要找到一个编号的时候想到了,但是编号打码太模糊了看不清楚)
(8)找一下常用用户名的字典进行收集。
7. 识别 CMS#
网站内容管理系统, 即 Content Management System ,英文缩写是 CMS。 网站内容管理系统具有许多 == 基于模板的优秀设计 ==,== 可以加快网站开发的速度和减少开发的成本 ==。 网站内容管理系统的功能并不只限于文本处理,它也可以处理图片、Flash 动画、声像流、图像甚至电子邮件档案。 网站内容管理系统其实是一个很广泛的称呼,从一般的博客程序,新闻发布程序,到综合性的网站管理程序都可以被称为内容管理系统。
01、手工识别#
- == 页尾处可能暴露 cms==
power by ...
- ==robots.txt 文件 ==
通过特定路径
,判断此 CMS
- == 响应头信息 ==
cookie处
- == 网站后台 ==
网站的后台登录界面也有建站 cms 的特征码
- 根据 URL 路由判断,如 wp-admin
02、指纹识别工具#
主要开发思路:request 建立连接 --- 获取网页内容 --- 利用正则表达式匹配关键字 --- 识别 CMS 类型
- ==chrome 扩展 -- Wappalyzer==

- 常用的工具有
CMSeek
03、在线 CMS 识别网站#
http://whatweb.bugscaner.com/look/
8. 识别 Web 中间件#
- 响应头
- 根据报错信息判断
- 根据默认页面判断
9. 互联网资产收集#
包括历史漏洞信息、GitHub 源代码信息泄漏、SVN 源代码信息、泄漏网盘文件信息等。
01、历史漏洞信息#
google 搜相应的软件漏洞
02、GitHub 源代码信息泄漏#
GitHub 是一个面向开源及私有软件项目的托管平台,很多人喜欢把自己的代码上传到平台托管。== 攻击者通过关键词进行搜索 ==,可以找到 == 关于目标站点的敏感信息 ==,甚至可以下载网站源码。
开发者在使用 git 作为版本控制时,在一个目录中初始化一个仓库以后,会在这个目录下产生一个名叫 .git
的隐藏文件夹,这个文件夹里面保存了这个仓库的所有版本等一系列信息。== 如果服务器将.git
文件夹放在了 web 目录下 ==,就可能导致攻击者利用.git
文件夹内的信息获取应用程序所有源代码。
- github 语法搜索
in:name | vue in 匹配其名称中含有 "jquery" 的仓库。 |
---|---|
in:description | vue in,description 匹配其名称或说明中含有 "vue" 的仓库。 |
in:readme | vue in 匹配其自述文件中提及 "vue" 的仓库。 |
repo:owner/name | repo/blog 匹配特定仓库名称,比如:用户为 biaochenxuying 的 blog 项目。 |
搜索语法详情看
https://github.com/FrontEndGitHub/FrontEndGitHub/issues/4
- GitHack,拉取源码
A `.git` folder disclosure exploit
03、备份站点压缩包#
目录扫描尝试获取
04、SVN#
可以利用.svn/entries 文件,获取到服务器源码、svn 服务器账号密码等信息)更严重的问题在于,SVN 产生的.svn 目录下还包含了以.svn-base 结尾的源代码文件副本(低版本 SVN 具体路径为 text-base 目录,高版本 SVN 为 pristine 目录),如果服务器没有对此类后缀做解析,黑客则可以直接获得文件源代码。
详情
https://cloud.tencent.com/developer/article/1376492
- 源码还原工具
SvnExploit支持SVN源代码泄露全版本Dump源码
05、DNS 信息泄露#
A、MX 记录泄露
06、接口泄露#
07、其他敏感文件#
先看用的哪个 CMS,然后再根据那个 CMS 的目录结构来扫描
没用 CMS 则利用常规的敏感文件名字典扫描,例如:
- robots.txt
- crossdomain.xml
- sitemap.xml
- xx.tar.gz
- xx.bak
- phpinfo
08、网盘搜索#
凌风云搜索
小白盘搜索
大力盘搜索
小不点搜索(微盘)
百度网盘爬取开源工具
09、针对漏洞的信息泄露#
google 搜相应中间件的信息泄露
10. WAF 识别#
WAF 功能
看图找 WAF
https://blog.csdn.net/weixin_46676743/article/details/112245605
工具
- WAFW00f
WAFW00F allows one to identify and fingerprint Web Application Firewall (WAF) products protecting a website.
或者手工输入错误的 uri,和 sql 语句,xss 看看能不能触发 waf 告警
- nmap -p 80 --script http-waf-detect.nse 4399.com
11、端口扫描#
扫描全端口方法
nmap 速度慢
nmap -sV -Pn -p- 1.1.1.1 -oX result.xml
masscan 速度快但有时不准确
masscan --open --banners -p- 1.1.1.1 --rate 1000 -oX result.xml
常见端口漏洞信息表
端口号 | 服务 | 攻击方法 |
---|---|---|
21/22/69 | ftp/tftp | 爆破、嗅探、溢出、后门 |
22 | ssh | 爆破、28 个退格 |
23 | telnet | 爆破、嗅探 |
25 | smtp | 邮件伪造、爆破 |
53 | dns | DNS 区域传输、DNS 劫持、DNS 缓存投毒、 DNS 欺骗、DNS 隧道穿透防火墙 |
67/68 | dhcp | 劫持、欺骗 |
110 | pop3 | 爆破 |
139 | samba | 爆破、未授权、远程代码执行 |
143 | imap | 爆破 |
161 | snmp | 爆破 |
389 | ldap | 注入、未授权 |
512/513/514 | linux r | 直接使用 rlogin |
873 | rsync | 未授权 |
1080 | socket | 爆破、内网渗透 |
1352 | lotus | 爆破、弱口令、信息泄漏(源代码) |
1433 | mssql | 爆破、注入 |
1521 | oracle | 爆破、注入、TNS 远程投毒 |
2049 | nfs | 配置不当 |
2181 | zookeeper | 未授权 |
3306 | mysql | 爆破、注入、拒绝服务 |
3389 | rdp | 爆破、shift 后门 |
4848 | glassfish | 爆破、控制台弱口令、认证绕过 |
5000 | sybase/db2 | 爆破、注入 |
5432 | postgreSQL | 爆破、弱口令、注入、缓冲区溢出 |
5632 | pcanywhere | 拒绝服务、代码执行 |
6379 | redis | 未授权、爆破、弱口令 |
7001 | weblogic | 反序列化、控制台弱口令、 控制台部署 webshell |
8069 | zabbix | 远程命令执行 |
8080-8090 | web | 常见 web 攻击、爆破、中间件漏洞、 CMS 版本漏洞 |
9090 | websphere | 爆破、控制台弱口令、反序列化 |
9200/9300 | elasticsearch | 远程代码执行 |
11211 | memcacache | 未授权 |
27017 | mongoDB | 爆破、未授权 |
12. 目录扫描#
-
gobuster https://github.com/OJ/gobuster
-
dirsearch https://github.com/maurosoria/dirsearch
13.APP 信息收集#
一款适用于(Android、iOS、WEB、H5、静态网站),信息检索的工具,可以帮助渗透测试人员快速获取App或者WEB中的有用资产信息。
14. 其他信息收集途径#
- 知乎
- 贴吧
- 社工库
- telegram
任意邮箱发送 http://tool.chacuo.net/mailanonymous 和 https://emkei.cz/
临时邮箱 http://www.yopmail.com/
邮箱池群 http://veryvp.com/
防止信息收集方法#
如果网站管理员想要避免自己的网站被黑客前期信息收集的话,可以修改网页的特征信息
(1)修改网页展示信息(网页模板、技术支持、关键字、版本信息、后台登录模块信息等)
(2)修改网页路径信息(/robots、/admin 等)
(3)修改网页信息可以个性化一点,修改网页路径信息可以通过拼音缩写或者个性化方式来隐藏建站厂商的通用路径名,例如 /admin 修改为 /a8min