《ZAKU渗透论:卓伊凡的2026渗透工程》信息收集——黑客怎么找到你?
第二章:信息收集——黑客怎么找到你?
信息收集为什么是第一关?
在渗透测试中,信息收集占整个工作量的50%以上。
这不是夸张。一个经验丰富的渗透测试工程师拿到目标后,前两到三天几乎不碰任何漏洞扫描器,而是在做一件事:找信息。
道理很简单:你不知道目标长什么样,就不知道从哪里下手。
想象你要进入一栋大楼。你知道它有几个门、几个窗、几个地下车库入口;你知道保安几点换班;你知道哪个摄像头是假的;你知道保洁阿姨的工牌长什么样——那你还需要跟防弹玻璃正面对抗吗?
信息收集的目的,就是找到那条“阻力最小的路”。
被动收集 vs 主动收集
在开始之前,需要先搞清楚两种信息收集的区别。
被动信息收集:不直接接触目标系统,只利用公开渠道。这种方式完全合法,目标也不会察觉你在关注它。
主动信息收集:直接与目标系统发生交互,比如扫描端口、探测服务。这种方式可能留下日志,可能触发安全告警。
在实际渗透中,永远先做被动,再做主动。因为被动信息收集已经把大量答案摆在你面前了。
IP与域名:攻击的起点
每一个网站背后都有一个IP地址。域名(比如 example.com)只是方便人类记忆的“昵称”,真正的地址是IP。
黑客会做三件事。
第一件是DNS查询:把域名转换成IP地址。这就像查电话簿,完全公开,没有任何攻击性。一条简单的查询命令就能返回目标服务器的IP。
第二件是子域名枚举:一个公司不止一个域名。mail.example.com是邮箱入口,admin.example.com是管理后台,api.example.com是接口服务——每个子域名都可能是一个独立的入口。
举个例子:example.com可能做了很好的防护,但test.example.com可能只是一个测试环境,密码是admin/123456。黑客要的就是这种“疏忽”。
第三件是反向查询:同一个IP地址上可能挂了多个域名。找到它们,就找到了目标公司的“亲戚”网站。这些网站可能共享同一个服务器,攻破一个就等于攻破一片。
搜索引擎:被低估的武器
大多数人用搜索引擎只搜“表面”,而黑客用搜索语法去挖“底层的灰尘”。
以Google为例,有几个常用的搜索指令:
site:指令可以限定在某个域名内搜索。filetype:指令可以搜索特定文件类型,比如PDF或Excel。intitle:指令搜索标题中包含某关键词的页面。inurl:指令搜索URL中包含某关键词的地址。cache:指令可以查看谷歌缓存的旧版本网页。
一个经典组合是:intitle:"index of" "parent directory" site:example.com。这个搜索可以找到目标网站上忘记关闭目录列表的文件夹——有时候里面直接放着密码文件和备份包。
不要以为这是“高级技巧”。这就是个搜索功能,只是大多数人不知道可以这么用。
GitHub:开发者的“自爆现场”
GitHub是全世界最大的代码托管平台,也是信息泄露的重灾区。
开发人员为了图方便,经常把密钥、密码、内部配置直接写在代码里,然后上传到公开仓库。
常见的泄露类型包括:云服务密钥(AWS、阿里云、腾讯云)、数据库密码、内部API地址与Token、.env文件、以及各种配置文件。
有人专门写了工具自动扫描GitHub,24小时不停地寻找这些泄露的密钥。这不是什么高深的技术,这是“捡钥匙”。
一个真实的案例:某大厂的云服务密钥被员工不小心上传到GitHub。一个安全研究员扫描到了,用这个密钥登录了该公司的云控制台,发现可以访问上百万条用户数据。他报告了这个问题,公司连夜撤换密钥。
2026年的新趋势:不只是代码仓库,连GitHub Actions的运行日志里也可能泄露密钥。当自动化脚本打印环境变量用于调试时,这些日志如果是公开的——只要你懂得去看,就能捡到别人丢掉的钥匙。
社交媒体与招聘网站
LinkedIn、脉脉、Boss直聘——这些网站是黑客的“情报部”。
为什么?因为公司会在招聘信息里写自己用什么技术栈。比如:“招聘Java开发,熟悉Spring Cloud、K8s、Redis、MongoDB”。
这句话就在告诉黑客:我用的是Spring Cloud全家桶、K8s容器化、Redis做缓存、MongoDB做数据库。这些信息有什么用?知道用K8s,就重点关注容器逃逸和kubeconfig泄露;知道用Redis,就检查是否存在未授权访问;知道用Spring Cloud,就关注Spring相关历史漏洞。
另外,员工的社交媒体账号可能暴露更多信息。一张工牌照、一次“上班打卡”的定位、一个“今天加班”的动态——都可能成为社会工程学攻击的素材。
历史快照与Whois
Wayback Machine(archive.org)是一个互联网档案馆,保存了几十亿个网页的历史版本。它的价值在于:曾经有一个网站,现在可能修好了漏洞,但三个月前的版本里可能还有。Wayback Machine就是帮你找回那个“旧版本的自己”。
实战中,它可以帮你找到旧版本的API接口(新版可能删了,但旧版还在),找到曾经泄露过的文件,分析网站的技术演变。
Whois是一个协议,用于查询域名的注册信息:注册人姓名和邮箱、注册商、创建时间和过期时间、域名服务器。
这些信息可以用来做社会工程学(给注册人发钓鱼邮件),判断目标公司的IT成熟度(一个刚注册一年的域名 vs 一个注册了二十年的域名),甚至做域名劫持的准备——如果对方忘记续费,你可以抢注。
端口扫描:敲敲门
每台服务器就像一个小区,有无数个房门,叫做端口。不同的端口开给不同的服务。
端口22是SSH,远程登录的“管理员通道”。端口80是HTTP,普通网站的“正门”。端口443是HTTPS,加密网站的“安全正门”。端口3306是MySQL数据库。端口6379是Redis缓存。端口27017是MongoDB数据库。
端口扫描就是逐个敲门,看看哪个门开着。
但是,2026年的今天,直接扫整个公网已经很低效了。更好的做法是:先用被动收集拿到目标的大致范围——域名、AS号、云服务商IP段——然后只扫描这个范围内的端口,做定向扫描。
目录与文件探测
一个网站上有很多你从首页看不到的路径。比如/admin是后台登录页,/backup.zip是备份文件,/api/v1/users是接口地址,/phpinfo.php是PHP环境信息,/.git/是Git版本控制文件夹。
目录探测就是用一个字典(常见路径列表),去逐个尝试,看看哪些路径存在。
这一步经常能收获意想不到的东西。如果你发现一个可读的/.git/文件夹,意味着你可以直接下载整个网站的源代码,包括数据库配置、内部API逻辑、甚至管理后台的密码哈希。
2026年的信息收集:供应链踩点
传统的信息收集是“盯着目标本身”。2026年的信息收集是 “盯着目标的上游”。
一个现代应用不是从零写的。它依赖开源库(npm、pip、maven)、开发工具(GitHub Actions、GitLab CI)、云服务(AWS、阿里云)。
供应链踩点的思路是这样的:
第一,目标公司用的是哪个开源库?这个库的作者有没有被钓鱼?第二,目标公司的GitHub Actions配置文件有没有泄露密钥?第三,目标公司依赖的镜像仓库(Docker Hub)里有没有藏后门?
一个具体的例子:你不是直接攻击example.com,而是去GitHub上搜索example.com的员工最近提交了什么代码。你发现某员工在一个公开仓库里留下了公司的内部API地址。你不攻击网站,你攻击这个API——因为它可能防护更弱。
这就是2026年的信息收集:攻击面不再是“一个网站”,而是“一群人 + 一堆工具 + 一串依赖链”。
信息收集的产出是什么?
信息收集结束后,渗透测试工程师手里应该有一份这样的“情报地图”:
域名列表:example.com, api.example.com, admin.example.com
IP范围:某个具体的网段
开放端口:22(SSH), 443(HTTPS), 3306(MySQL)
技术栈:Nginx、PHP、MySQL
员工信息:开发人员小张、运维人员小李
泄露密钥:发现一个过期的AWS Key
历史快照:3个月前存在/test/admin路径
这份地图告诉你:哪里最容易突破。
这一章你该记住什么
第一,信息收集占渗透测试50%以上的工作量——不要急着“攻击”,先学会“观察”。
第二,被动收集(公开渠道)优先于主动收集(扫描)——合法、隐蔽、零成本。
第三,搜索引擎语法、GitHub、社交媒体、历史快照都是金矿,不要只盯着IP和端口。
第四,2026年的新方向是供应链踩点——盯着目标的开发流程和依赖链。
第五,信息收集的产出是一份“攻击地图”,告诉你从哪里切入最省力。
下一章,我们将进入Web攻击的核心原理:SQL注入——为什么拼接字符串会出大事?
- 点赞
- 收藏
- 关注作者
评论(0)