2026/10/6 13:02:30

网站攻防信息收集实战:从被动情报到主动探测的七类技术

网站攻防信息收集实战:从被动情报到主动探测的七类技术 搞攻防这些年我最大的体会是信息收集的广度决定攻击面的认知深度决定漏洞挖掘的效率。很多新手一上来就急着跑扫描器、翻后台结果目标资产都没理清端口开在哪里、证书关联了哪些域名、子域里藏着什么冷门系统全是一笔糊涂账。真正的高手在动手之前往往已经通过被动和主动两套手段把目标从外网到边缘资产梳理得明明白白。这篇文章我就把这几年实战里最常用的7类网站信息自动化收集技术串起来讲一遍从搜索引擎、证书透明度日志到测绘平台、主动指纹识别再到隐藏信息的定位提取把工具选型、使用思路和踩坑点一次说透。适合刚入门想系统学信息收集的兄弟也适合已经写过不少报告但总觉得漏东西的老手。1. 为什么信息收集是一切攻防动作的起点很多人把攻防理解为找漏洞、打利用但实际上漏洞只是攻防链条里的最后一公里。前面的情报工作决定你能打到哪一层、能不能打得动。站在防守方角度同样需要知道自己暴露在公网的资产边界在哪、哪些端口不该开、哪些子域被遗忘。所以信息收集不是可选项而是必选项。1.1 信息收集决定攻击面的大小一个目标往往不是单一域名而是一个庞大的资产树。主站、子域、泛解析、测试环境、上线前的预发系统、供应链的第三方组件这些都可能成为真正的突破口。我在实际项目里见过太多这样的情况主站加固得密不透风但某个老旧的子域上还挂着测试页面或者一个证书里关联的兄弟域名指向了完全没打补丁的内部系统。信息收集的意义就在于把这些分散的资产串成一张完整的地图你知道敌人有哪些房子才能决定往哪扇窗户扔石头。1.2 从被动到主动手法的边界和代价信息收集大体分两个方向。被动收集不直接触碰目标服务器依赖搜索引擎缓存、证书日志、DNS记录等第三方公开数据优点是不会在目标日志里留下你的痕迹缺点是数据会有滞后域名多的时候可能不全。主动收集则是直接和目标对话比如端口扫描、目录枚举、HTTP请求探测数据又快又准但一定会暴露你的IP和手法特征。标题里提到的从被动到隐藏核心思路就是能靠被动解决的就别主动打草惊蛇非主动不可的时候也要讲究流量伪装和频率控制降低被封和被发现的风险。1.3 七类技术全景各管一段组合出招我给这篇内容定的框架是7类每类对应一个信息维度搜索引擎与文档情报负责公开索引里的蛛丝马迹证书透明度与DNS数据负责挖子公司域测绘平台负责扫全网暴露面主动指纹识别负责确认组件和版本目录与敏感文件枚举负责找隐藏入口编码解码与隐藏信息提取负责处理被伪装的数据最后用被动扫描工具把整个探测过程自动化串联起来。每一类不是孤立的实际打一场攻防演练下来通常是先被动后主动、先全局后局部、先宽泛后精准的节奏。2. 被动情报收集搜索引擎、证书日志与DNS历史被动收集最大的优势是隐蔽全程不向目标发送一个包所有数据都来自第三方公开渠道。这部分的工具和手法非常成熟关键是知道去哪查、怎么查、查完怎么关联。2.1 搜索引擎语法把公网当数据库搜索引擎是我用的第一梯队工具。Google、Bing、百度都有自己的高级语法虽然语法细节不同但思路是通用的。常用的组合包括site:example.com限定域名inurl:admin或filetype:pdf限定路径和文件类型intitle:后台管理限定标题关键词再配合intext:password、inurl:php?id这类查询经常能在公开索引里捞到意外惊喜比如泄露的配置文件、测试账号、没加权限控制的下载目录。实际操作中我会先收集目标的root domain列表然后批量跑语法把命中结果存下来。这里有个小技巧不要只看第一页结果搜索引擎返回的后缀参数不一样深度翻页能挖到一些老旧的缓存页面。不过搜索引擎收录是有延迟和覆盖缺口的不能把宝全押在这上面。另外提醒一句这条链路本质是检索公开数据调研自己的资产完全没问题但也别用这种能力去搜与工作无关的东西做攻防要有边界感。2.2 证书透明度日志白给的子域名清单证书透明度CT日志是被动收集里含金量最高的一块。CA机构在签发TLS证书时会把证书信息记录到公开的CT日志里任何人都能查询。一个域名申请过证书往往会把相关的子域一起列进去拿下这块数据等于拿到了目标申请过的所有TLS证书关联域名清单。常用的查询入口是 crt.sh 直接访问https://crt.sh/?q%25.example.com就能拿到一串子域。还有Censys的证书搜索、Google的透明日志查询接口以及工具化的certspotter、ctfr。我用得比较多的是在命令行里跑ctfr -d example.com一条命令就能拉出几百条子域记录。随后把结果去重、解析成IP再结合下一节的DNS枚举继续扩展能很快把资产树撑起来。2.3 DNS历史记录与被动子域枚举除了证书日志DNS历史记录也是被动收集的宝库。有些域名以前解析到某个IP后来迁移了、下线了但历史记录仍然被第三方平台保存着。通过SecurityTrails、DNSDB、微步在线这类平台你可以查到目标域名过去几年所有的A记录、CNAME记录和NS记录很多时候能发现已经被遗忘的旧服务器。这对攻防很有价值因为旧服务器的安全防护往往远不如当前生产环境。子域枚举的被动玩法也值得一提。工具像subfinder、amass、oneforall本身不向目标发包而是聚合数十个公开源证书日志、DNS数据集、搜索引擎API、Whois记录等。我一般在项目初期就跑一遍subfinder -d example.com | anew domains.txt先把被动数据灌进去再转入主动枚举。这里说个经验多个工具交叉跑比单工具跑出来的子域至少多30%因为每个工具的源列表和更新频率不同。3. 网络空间测绘用地图思维扩大战果如果说搜索引擎和证书日志是点状收集那网络空间测绘就是面状扫描。测绘平台把全网IP的开放端口、服务指纹、域名关系做了索引你只需要输入查询语句就能找到暴露在公网上的目标资产甚至直接定位到目标集团名下的其他IP段这是被动收集的高级形态也是攻防对抗里很关键的一环。3.1 主流测绘平台选型与对比国内用得多的有FOFA、Quake360、Hunter奇安信国外的有Shodan和Censys。每家平台的查询语法和收录侧重点略有不同。FOFA的语法灵活适合精确匹配Quake对国内资产的覆盖比较细历史数据保留得不错Shodan在国际资产上优势明显Hunter在域名和ICP备案关联上做得比较顺手。实际项目里我习惯多平台交叉验证一份资产在这家查不到换一家往往就能命中。平台优势侧重常用查询示例适用场景FOFA国内资产丰富、语法灵活domainexample.com按域名反查IP和开放端口Quake历史数据完整、国内覆盖好ip:1.2.3.0/24对已知IP段做资产盘点Hunter域名备案与ICP关联强domainexample.com port8080从备案主体扩展到关联域名Shodan国际资产、工控设备覆盖广hostname:example.com全球视角的暴露面分析3.2 资产指纹的维度IP、端口、协议、组件测绘平台返回的每一条资产信息本质上是一条指纹记录包含IP地址、开放端口、应用协议、产品组件和版本号。用FOFA举例domainexample.com会返回该主域下所有关联的IP资产你可以从中看到80端口开放什么服务、443挂的什么证书、有没有Redis、MySQL这类组件暴露到公网。再进一步输入ip1.2.3.0/24 protocolredis就能定位目标网段里Redis未授权访问的资产。这种不需要发一个包就能拿到的情报在攻防里价值极高。3.3 测绘数据的交叉分析与资产归并拿到测绘结果之后别急着扫先做一步归并。把域名、IP、ICP备案、SSL证书里的组织信息放到一个表格里按主体把资产聚起来。SSL证书里经常包含organizationName和subjectAltName这些字段能帮你找到没有直接声明的子域和兄弟域名。我在项目里常用的做法是先把证书字段全部拉出来再用脚本提取其中的域名和邮箱作为下一轮资产扩展的种子。这一步往往能多挖出20%~40%的隐藏资产。测绘平台都有API写个Python脚本批量拉取再归并效率远高于在网页上一个一个查。4. 主动探测与指纹识别动手之前先看清目标被动收集跑完一轮手里有了一份不小的资产清单接下来就该主动和这些资产打交道了。主动阶段的目标不是直接打漏洞而是确认每一台资产上跑的是什么系统、什么组件、什么版本为后续的漏洞匹配提供依据。记住一个原则先探测清楚再决定打不打。盲目扫描只会打草惊蛇还可能把业务打崩。4.1 端口与服务探测nmap和masscan配合使用端口扫描是主动收集的第一步。masscan速度极快适合在短时间内扫大网段我在确认目标规模时常用它先快速摸一遍端口开放情况masscan 1.2.3.0/24 -p1-65535 --rate 2000几分钟就能出结果。但masscan的探测结果比较粗糙只能告诉你端口开没开想要精确的版本信息得再用nmap -sV -sC补一轮。nmap的NSE脚本库非常强大-sV做版本探测-sC跑默认脚本还能识别常见的服务漏洞。实际项目中我的节奏是masscan扫全端口把结果过滤出开放的高价值端口再交给nmap做深度指纹识别。这里有个经验内网和目标规模大的时候千万不要把masscan的速率拉得太高一是容易被防火墙拦截导致结果失真二是高并发大流量在高防护场景下会立即触发告警。合理做法是分段扫描、错峰执行把主动探测的行为隐藏在业务低峰期里。4.2 HTTP指纹识别whatweb、httpx和Wappalyzer确定端口开放后对Web服务做指纹识别。httpx是现在圈子里用得最顺手的工具它支持批量URL探测一条命令能把存活的Web服务、标题、状态码、Server头、技术栈全部打出来httpx -l alive.txt -title -tech-detect -status-code。whatweb的输出更详细能把CMS类型、框架版本、插件都解析出来。Wappalyzer则更多作为浏览器插件人工浏览时快速看技术栈。指纹识别的意义在于直接关联漏洞库。识别出目标跑的是Apache Shiro就可以联想反序列化识别出FastJSON就考虑autoType绕过识别出老版本Struts2直接对应S2系列的RCE。如果识别不出具体版本也没关系把响应头里的X-Powered-By、Server、Set-Cookie记录下来后面可以针对性研究。指纹库建议定期更新新框架出来后很多老旧识别规则会失效。4.3 目录扫描与敏感文件发现dirsearch、ffuf和gobusterWeb服务确认存活之后目录扫描就是找隐藏入口的关键一步。dirsearch上手快内置字典大命令行一条dirsearch -u http://target -e php,html,txt -x 403,404就能跑起来。ffuf是模糊测试神器速度极快支持自定义字典和组合参数适合高级玩家做参数爆破。gobuster在目录和DNS子域爆破上都好用而且Go写的并发性能很强。字典的选择直接决定扫描结果。用通用目录字典扫不出东西时可以试试根据目标框架调整字典比如WordPress、ThinkPHP、Spring Boot都有自己的专属路径特征。我习惯自己维护一份域名环境的字典把常见备份文件名web.zip、www.tar.gz、配置文件config.php.bak、日志文件access.log加进去很多敏感文件就是这么扫出来的。扫描的时候要控制线程数默认的几十线程在目标Web服务器差的情况下会拖垮业务建议从低到高逐步加。5. 隐藏信息的定位与提取别放过注释、编码和泄露源攻防中的隐藏往往有两层意思一是目标故意藏起来的东西比如后台入口、测试接口二是被动收集过程中需要你主动识别的编码内容、注释信息、版本控制泄露。这一节讲的全是实战里容易忽略但收益极高的方向。5.1 robots.txt、sitemap和Js文件中的隐藏线索很多新手不把robots.txt当回事实际上它经常泄露目标不想被搜索引擎收录的路径。一次攻防项目中我在目标的robots.txt里看到一个Disallow: /internal/顺着这个路径进去就是一个内部报表系统。sitemap.xml同样值得看它列出的是站点认为比较重要的URL偶尔能发现管理后台的入口。JS文件是另一个隐藏线索高发区。前端代码里往往会写接口地址、注释掉的功能、调试日志、甚至硬编码的密钥。批量抓取JS文件再扫码里面的URL和关键词是现在很主流的做法。工具上可以用LinkFinder、JSFinder、urljs一条命令把域下所有JS文件里的接口提取出来。我见过很多渗透测试点就藏在JS注释里比如// 临时后台尚未上线结果后台已经上线且没挂认证。5.2 base64与常见编码隐藏内容识别编码隐藏是攻防里最常见的伪装手法。开发人员或者攻击者会把路径、参数内容用base64编码放在URL里有时候还会做二次编码、十六进制转义让扫描器识别不了。你在Web日志或者爬虫结果里看到一串ZGF0YWJhc2U结尾的数据就应该意识到这可能是base64的database解码之后往往就是隐藏的路径或者参数值。我一直建议的信息收集工作流里加一个自动解码的环节对URL中的参数值、表单字段、Cookie值做一轮批量解码优先尝试base64、URL编码、Hex、Unicode。命令行里一条echo base64字符串 | base64 -d就能完成更复杂的场景写个Python脚本批量处理。decode出敏感路径之后把它加回扫描字典里再扫一轮目录常常能发现隐藏管理入口。我自己就因为这个习惯在一次演练里顺着一个?dataeyJwYXRoIjoiYWRtaW4ifQ%3D%3D的参数定位到了目标的管理后台那次的突破口就是这么来的。5.3 Git、SVN和备份文件泄露版本控制泄露是信息收集中历史最悠久也最致命的问题。目标如果没做好Web目录配置.git目录可能直接被公网访问用GitHack、githacker这类工具可以把源码和提交历史整个拉下来。源码一泄露数据库配置、接口密钥、业务逻辑全在你手里后续基本畅通无阻。.svn目录也有同类问题svnExploit可以恢复出遗留的源码信息。除此之外备份文件.bak、.swp、~结尾的临时文件也是经典泄露源一次目录扫描往往就能捞到不少。这里要说句实在话信息泄露的发现靠的是字典质量和细心程度。我整理了一套专门针对备份文件的字典包含几千条路径每次扫描都会带上。结合前面说的目录扫描工具在一次项目里甚至把一个老系统的conf.bak扫了出来里面直接是数据库明文口令。这个环节的收益在攻防里往往是最直接的。5.4 被动扫描让流量成为你的数据源标题里提到的burp被动扫描其实是把信息收集从主动翻找转向被动监听的重要技巧。Burp Suite的被动扫描能力指的不是主动发一堆探测请求而是你在正常浏览目标的时候它会在后台分析经过的每一个请求和响应识别出潜在参数、路径、组件版本、敏感字段。配置好被动扫描范围之后你只需要像正常用户一样浏览目标系统的功能Burp就会默默把信息记下来还能自动标记出疑似漏洞点。被动扫描的好处是不会有额外流量特征毕竟请求都是真实业务产生的对抗性最强的场景里经常用这一招。新版Burp的Dashboard可以把被动扫描和主动扫描分开管理我对目标做的第一步永远是挂上被动扫描然后才开始点功能、翻页面。等把业务功能走完一遍被动扫描的发现列表里往往已经躺着不少信息登录接口、API版本、测试目录、调试开关这些数据是主动扫描很难获取的。6. 自动化工作流整合从单点工具到流水线工具会了之后真正的差距在怎么把单点工具串成一条流水线。攻防项目的目标资产动辄上百个域名、几千个IP人工一个一个跑既慢又容易漏。自动化的思路是分阶段拼接每个阶段负责一个环节数据流自然流转最终产出一份资产清单和初步的风险分布。6.1 一条典型的自动化收集流水线我常用的流水线大致是这样第一步用subfinder、amass、oneforall做被动子域收集加上CT日志数据汇总去重成初始域名清单。第二步用httpx批量探测存活Web服务输出存活的URL列表。第三步把存活的URL交给dirsearch或ffuf做目录扫描同时从JS文件中提取接口路径。第四步用nmap对关联IP段做端口和版本探测。第五步把产出汇总到nuclei模板库跑一轮已知漏洞匹配。最后所有结果进入表格按域名和IP归并、去重、打标签。阶段主要工具输出产物被动子域收集subfinder、amass、CT查询domain.txt存活探测httpxalive.txt目录与接口发现dirsearch、ffuf、JSFinderpaths.txt、endpoints.txt端口与版本探测masscan、nmapports.txt漏洞匹配nucleivuln.txt数据归并Python脚本最终资产清单6.2 脚本化与定时化数据更新保持新鲜攻防场景里资产是动态变化的今天收集到的子域和端口明天可能就变了。我的做法是把上述流水线写成Shell脚本或Python脚本配合定时任务定期重跑增量更新资产库。推荐用一个简单的文本数据库做去重存储每一轮跑完都和上一轮做对比新增资产单独标记出来。这样你在项目后期复盘时能明显看出目标资产的变化趋势新上线的系统往往就是防守薄弱点。这里有个容易踩的坑自动化跑得越爽越容易忽视数据质量。脚本的字典、指纹库、模板库都要定期更新否则几个月后还在用老规则扫新系统等于白跑。我吃过一次亏一套模板库半年没更新漏掉了一个已经公开的高危组件后来把更新机制纳入到每周例行维护里才彻底解决。6.3 工作流中的项目文档记录自动化不是让你当甩手掌柜每一步的产出都要有记录。我的习惯是每轮跑完把原始输出、处理脚本、最终汇总都存在项目目录下文件名带日期和轮次编号。这样不仅方便后续溯源也方便在防守复盘时解释这个资产当初是怎么发现的。攻防对抗打到最后往往不是在比谁的工具多而是在比信息管理的细致程度。7. 实战常见问题与排查经验工具链搭起来之后实际操作中总会遇到一些幺蛾子。我把自己踩过的坑和排查思路整理成一个速查表希望能帮你少走点弯路。7.1 扫描结果和业务感知对不上怎么办最常见的问题是测绘平台显示某个端口开放但你访问它毫无反应或者扫描器报告的指纹跟你手工看到的完全不一样。这类情况十有八九是因为目标做了CDN或WAF测绘平台记录到的是边缘节点的信息而不是源站。排查思路是先查DNS解析看目标IP是否属于CDN厂商网段再尝试直连源站IP绕过CDN。第二个原因是服务确实变了测绘数据本身有滞后性需要主动探测验证。7.2 误报率太高如何过滤很多扫描器默认输出一堆误报尤其指纹识别会把中间件默认页面识别成CMS或者把某框架的静态资源误判成另一框架。我的做法是双工具确认whatweb报A再用httpx或wappalyzer交叉验证两个都一致的才算有效。目录扫描的误报也常见status-code 200但内容是个统一404页面防御做得好的系统会混淆响应码。这类情况我在目录扫描后加一个内容比对环节把新发现的URL内容跟默认404页做相似度分析过滤掉假的200。7.3 如何规避主动探测被溯源主动探测必然会留下痕迹完全隐藏是不可能的能做的只是降低暴露风险和控制攻击面。我自己总结的三条原则供你参考不要一次把所有扫描器全怼上去分段执行控制并发和频率。探测源尽量分散不要用单一IP做全部动作在合法的授权范围内安排安全出口会更稳妥。对高价值目标优先走被动收集和被动扫描把主动探测留到最后确认阶段。所有动作保持在授权书覆盖的资产范围内越界操作是攻防里最忌讳的事。7.4 工具版本落后导致结果偏差工具更新迭代很快老版本的规则库很容易跟不上新框架、新指纹。比如老版本nmap对某些新服务的指纹识别就是不准nuclei的模板库如果停更等于拿着去年的漏洞清单打今年的系统。我建议每月抽一个下午专门做工具升级和规则更新顺手把常用字典也换新。这个习惯坚持下来可以帮你少踩至少三分之一的扫描结果不准的坑。写在最后的实践经验搞了这么多年攻防和信息收集我越来越确信一件事真正拉开差距的不是工具本身而是对信息的组织能力和对攻防节奏的判断力。工具只是放大你的思路思路错了工具越多越容易迷失在数据噪音里。我自己现在跑项目第一周基本不碰扫描器纯靠被动收集和测绘平台把目标全景摸清第二周才开始有节奏地主动探测大部分突破口都来自前期扎实的资产梳理而不是最后一击的运气。希望这篇文章的7类技术和踩坑经验能让你在面对一个陌生目标时少一点无从下手多一点胸有成竹。后续我会再拆解一些具体工具的进阶玩法和自动化脚本细节到时候再细聊。