1. 信息收集在渗透测试中的核心地位
第一次接触渗透测试的新手往往会把注意力集中在漏洞利用和提权环节,但从业五年来我越来越深刻地意识到:信息收集的质量直接决定了后续所有环节的成败。就像侦探破案需要先收集线索一样,渗透测试中70%的时间都应该花在信息收集阶段。
Nmap作为网络探测的瑞士军刀,其强大之处不仅在于端口扫描。通过脚本引擎(NSE)可以实现服务识别、漏洞检测甚至自动化攻击。而搜索引擎语法则是另一种维度的信息收集利器,Google hacking数据库(GHDB)中记录的搜索语法可以挖出大量敏感文件、后台地址和配置信息。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 网络探测神器Nmap的深度使用
2.1 基础扫描策略与参数解析
新手最常犯的错误就是直接使用nmap -A进行全扫描,这种"暴力扫描"不仅效率低下,而且极易触发安全设备的告警。经过多次实战总结,我推荐分阶段渐进式扫描:
bash复制# 第一阶段:快速存活检测(避开防火墙敏感端口)
nmap -sn -T4 192.168.1.0/24 --exclude-ports 445,3389
# 第二阶段:基础端口扫描(使用SYN扫描避免连接日志)
nmap -sS -Pn -n --open -p- -T4 192.168.1.100 --max-retries 1
# 第三阶段:服务版本探测(针对开放端口精细化扫描)
nmap -sV -sC -O -p22,80,443 192.168.1.100 --script-timeout 30s
关键参数解析:
-T4:平衡速度与隐蔽性(T0-T5递增)--exclude-ports:避开常见监控端口-sS:SYN半开扫描(不完成TCP三次握手)--max-retries 1:减少重试次数降低噪音
2.2 NSE脚本的实战应用技巧
Nmap的脚本引擎(NSE)才是其真正的威力所在,但需要特别注意脚本的隐蔽性。以下是我在红队行动中验证有效的几个脚本组合:
bash复制# 安全设备绕过检测(检测是否存在流量整形)
nmap --script firewall-bypass 192.168.1.100
# 漏洞快速筛查(避免使用明显攻击特征的脚本)
nmap --script vuln -p80,443 192.168.1.100 --script-args http.useragent="Mozilla/5.0"
# 信息收集黄金组合(获取尽可能多的信息)
nmap --script "banner,http-title,ssl-cert,dns-brute" 192.168.1.100
重要提示:避免在同一个扫描中混合使用信息收集脚本和漏洞检测脚本,这会导致扫描特征过于明显。建议将扫描动作分散在不同IP段和时间段执行。
3. 搜索引擎高级语法实战
3.1 Google hacking语法精要
搜索引擎语法绝不仅仅是site:和inurl:那么简单。通过组合使用以下语法,可以挖出惊人的敏感信息:
code复制# 查找暴露的数据库配置文件
filetype:php intext:"DB_PASSWORD" site:example.com
# 发现备份文件
ext:bkf | ext:bkp | ext:bak inurl:wp-content
# 定位管理后台
intitle:"admin login" "remember me" site:gov.*
我整理的高价值搜索模式:
- 密码相关:
intext:"password" filetype:log - 敏感目录:
intitle:"index of" "/.git" - 漏洞特征:
inurl:/proc/self/cwd
3.2 多引擎协同搜索策略
不同搜索引擎的语法和索引内容各有特点:
- Google:
allintext:精确匹配短语 - Bing:
contains:查找包含特定文件类型的站点 - Shodan:
port:22 os:"Linux 3.2"设备级搜索 - Censys:
services.tls.certificates.leaf_data.subject.common_name:"target.com"
推荐使用交叉验证法:
- 用Google找到初步线索
- 用Shodan验证服务真实性
- 用Censys获取SSL证书信息
- 用Wayback Machine查看历史页面
4. 信息收集的隐蔽性保障
4.1 扫描行为伪装技术
在最近一次攻防演练中,防守方仅用2小时就定位到了我们的扫描源,这促使我深入研究扫描隐蔽技术:
- 时间随机化:使用
--scan-delay和--max-scan-delay参数 - 源IP伪装:通过云函数分散扫描源(AWS Lambda + API Gateway)
- 流量特征修改:调整
--ttl值并自定义--data-length - User-Agent轮换:特别是HTTP扫描时使用
--script-args http.useragent
4.2 日志清理与痕迹消除
即使最隐蔽的扫描也会留下痕迹,必须做好善后:
bash复制# 清除Nmap缓存记录
rm -rf ~/.nmap/scripts/*
# 删除系统日志相关条目
sed -i '/nmap/d' /var/log/syslog
# 修改MAC地址(针对网络层追踪)
macchanger -r eth0
5. 自动化信息收集框架搭建
5.1 基于Python的自动化流程
手动执行各个工具效率太低,我开发了自动化收集框架:
python复制import subprocess
import time
def nmap_scan(target):
cmd = f"nmap -sS -Pn -n --open -p- {target}"
result = subprocess.run(cmd.split(), capture_output=True)
return parse_nmap_output(result.stdout)
def google_dork(site, dork):
from googlesearch import search
return list(search(f"{dork} site:{site}", num=10, stop=10))
def main():
targets = ["192.168.1.100", "example.com"]
for target in targets:
ports = nmap_scan(target)
if 80 in ports:
print(google_dork(target, "filetype:php intext:password"))
5.2 信息聚合与可视化
使用Maltego进行数据关联分析:
- 将Nmap结果导入为"Device"实体
- 把Google搜索结果关联为"Document"实体
- 用Shodan数据补充服务信息
- 最终生成关系图谱识别关键攻击路径
6. 企业级防护的应对策略
随着企业安全防护水平提升,传统扫描方法逐渐失效。在最近三个月的红队行动中,我总结了这些突破技巧:
-
CDN真实IP发现:
- 历史DNS记录查询(SecurityTrails)
- SSL证书关联搜索(Censys)
- 子域名爆破(altDNS + massDNS)
-
WAF绕过技术:
- HTTP参数污染(
?id=1&id=2) - 畸形报文(非标准HTTP方法)
- 慢速攻击(每次发送1字节)
- HTTP参数污染(
-
云环境信息收集:
- AWS元数据接口(169.254.169.254)
- Kubernetes API探测(6443端口)
- 云存储桶枚举(awscli + brute-force)
7. 防御视角下的反制措施
作为蓝军成员时,我部署的这些蜜罐曾成功捕获多个攻击者:
-
低交互式Nmap蜜罐:
python复制from scapy.all import * def handle_pkt(pkt): if pkt[TCP].dport == 22: send(IP(dst=pkt[IP].src)/TCP(sport=22, flags="SA")) sniff(filter="tcp", prn=handle_pkt) -
Google dork诱饵:
在robots.txt中故意放置敏感路径但设置访问权限
使用虚假的数据库连接文件包含追踪代码 -
日志分析规则示例(检测扫描行为):
bash复制# 检测Nmap XMAS扫描 alert tcp any any -> $HOME_NET any (msg:"Nmap XMAS Scan"; flags:FPU; threshold:type threshold, track by_src, count 3, seconds 60;)
信息收集是攻防对抗的第一战场,也是最能体现技术深度的环节。每次行动前,我都会花至少两天时间进行充分的信息收集,这个过程往往能发现意想不到的攻击路径。记住:好的侦察兵不靠蛮力,而靠智慧和耐心。
