渗透测试之信息搜集(Nmap、Burp)
字数 5185 2025-08-15 21:31:30
渗透测试之信息搜集与工具使用详解
1. 渗透测试概述
渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统是否安全的一种方法。
1.1 渗透测试流程
- 信息收集 - 收集目标系统的各种信息
- 威胁建模 - 对收集的信息进行分析
- 渗透测试 - 实施实际的渗透攻击
- 后渗透测试 - 提权、内网渗透等
- 形成报告 - 总结发现的安全风险
1.2 渗透测试分类
- 黑盒测试:在授权情况下模拟黑客的攻击方法和思维方式,评估系统可能存在的安全风险
- 白盒测试:从内部发起,根据已知信息进行渗透测试,发现风险
2. 渗透测试工具分类
- 漏洞利用类:sqlmap、Beef、菜刀等
- 信息收集类:nmap、御剑、Google hacking等
- 漏洞扫描类:AWVS、WebScan、Appscan等
- 综合平台类:Burp Suite、nmap等
3. Nmap详细使用指南
3.1 基本扫描参数
| 参数 | 描述 |
|---|---|
-sT |
TCP connect()扫描,会在目标主机日志中记录大批链接请求及错误信息 |
-sP |
ping扫描,只有主机存活才会继续扫描(可能被防火墙禁止) |
-sS |
半开扫描,一般不会记入日志(需要root权限) |
-sU |
UDP扫描(一般不可靠) |
-sA |
穿过防火墙的规则集(速度慢) |
-sV |
端口服务及版本探测 |
-A |
全面系统检测(包含-sV、-O,启动脚本检测等) |
-P0 |
扫描之前不使用ping(适用于防火墙禁止ping的情况) |
-v |
显示扫描进程 |
-O |
探测目标系统漏洞(容易误报) |
-oN/-oX/-oG |
将报告写入文件(格式分别为正常、XML、grepable) |
-iL |
扫描主机列表 |
-sC --script=default |
默认脚本扫描,主要搜集各种应用服务信息 |
3.2 主机发现参数
| 参数 | 描述 |
|---|---|
-sL |
仅显示扫描的IP数目,不进行任何扫描 |
-sn |
ping扫描(主机发现) |
-Pn |
不检测主机存活 |
-PS/PA/PU/PY[portlist] |
TCP SYN Ping/TCP ACK Ping/UDP Ping发现 |
-PE/PP/PM |
使用ICMP echo、timestamp和netmask请求包发现主机 |
-PO[protocol list] |
使用IP协议包探测对方主机是否开启 |
-n/-R |
不对IP进行域名反向解析/为所有IP进行域名反向解析 |
3.3 扫描技巧
| 参数 | 描述 |
|---|---|
-sS/sT/sA/sW/sM |
TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描 |
-sU |
UDP扫描 |
-sN/sF/sX |
TCP Null、FIN和Xmas扫描 |
--scanflags |
自定义TCP包中的flags |
-sI zombie host[:probeport] |
Idlescan |
-sY/sZ |
SCTP INIT/COOKIE-ECHO扫描 |
-sO |
使用IP protocol扫描确定目标机支持的协议类型 |
-b "FTP relay host" |
使用FTP bounce scan |
3.4 端口扫描选项
| 参数 | 描述 |
|---|---|
-p |
指定特定端口(如-p80,443或-p1-65535) |
-p U:PORT |
扫描UDP的某个端口(如-p U:53) |
-F |
快速扫描模式(比默认扫描端口还少) |
-r |
不随机扫描端口(默认是随机扫描) |
--top-ports "number" |
扫描开放概率最高的number个端口 |
--port-ratio "ratio" |
扫描指定频率以上的端口 |
3.5 服务版本识别
| 参数 | 描述 |
|---|---|
-sV |
开放版本探测 |
--version-intensity "level" |
设置版本扫描强度(1-9,默认7) |
--version-light |
轻量级模式(等同于--version-intensity 2) |
--version-all |
尝试所有探测(等同于--version-intensity 9) |
--version-trace |
显示详细的版本侦测过程信息 |
3.6 脚本扫描
| 参数 | 描述 |
|---|---|
-sC |
根据端口识别的服务调用默认脚本 |
--script="Lua scripts" |
调用指定脚本 |
--script-args=n1=v1,[n2=v2] |
为脚本传递参数 |
--script-args-file=filename |
使用文本传递参数 |
--script-trace |
显示所有发送和接收到的数据 |
--script-updatedb |
更新脚本数据库 |
--script-help="Lua script" |
显示指定脚本的帮助 |
3.7 操作系统识别
| 参数 | 描述 |
|---|---|
-O |
启用操作系统检测 |
--osscan-limit |
针对指定目标进行操作系统检测 |
--osscan-guess |
推测操作系统检测结果 |
3.8 防火墙/IDS躲避和欺骗
| 参数 | 描述 |
|---|---|
-f; --mtu value |
指定使用分片、指定数据包的MTU |
-D decoy1,decoy2,ME |
使用诱饵隐蔽扫描 |
-S IP-ADDRESS |
源地址欺骗 |
-e interface |
使用指定的接口 |
-g/--source-port PROTNUM |
使用指定源端口 |
--proxies url1,[url2],... |
使用HTTP或SOCKS4代理 |
--data-length NUM |
填充随机数据让数据包长度达到NUM |
--ip-options OPTIONS |
使用指定的IP选项发送数据包 |
--ttl VALUE |
设置IP time-to-live域 |
--spoof-mac ADDR/PREFIX/VEBDOR |
MAC地址伪装 |
--badsum |
使用错误的checksum发送数据包 |
3.9 Nmap输出选项
| 参数 | 描述 |
|---|---|
-oN |
将标准输出直接写入指定文件 |
-oX |
输出XML文件 |
-oS |
将所有输出改为大写 |
-oG |
输出便于通过bash或perl处理的格式(非XML) |
-oA BASENAME |
将扫描结果以标准格式、XML格式和Grep格式一次性输出 |
-v |
提高输出信息的详细度 |
-d level |
设置debug级别(最高9) |
--reason |
显示端口处于特定状态的原因 |
--open |
只输出端口状态为open的端口 |
--packet-trace |
显示所有发送或接收到的数据包 |
--iflist |
显示路由信息和接口(便于调试) |
--log-errors |
输出errors/warnings级别的日志 |
--append-output |
追加到指定文件 |
--resume FILENAME |
恢复已停止的扫描 |
--stylesheet PATH/URL |
设置XSL样式表(转换XML输出) |
--webxml |
从namp.org获取XML样式 |
--no-sytlesheet |
忽略XML声明的XSL样式表 |
3.10 其他参数
| 参数 | 描述 |
|---|---|
-6 |
开启IPv6 |
-A |
OS识别、版本探测、脚本扫描和traceroute |
--datedir DIRNAME |
指定Nmap数据文件位置 |
--send-eth/--send-ip |
使用原以太网帧发送/在原IP层发送 |
--privileged |
假定用户具有全部权限 |
--unprovoleged |
假定用户不具有全部权限 |
-V |
打印版本信息 |
-h |
输出帮助 |
4. Burp Suite详细使用指南
4.1 主要模块
- Target(目标) - 显示目标目录结构
- Proxy(代理) - 拦截HTTP/S的代理服务器,作为浏览器和目标应用程序之间的中间人
- Spider(蜘蛛) - 智能感应的网络爬虫,能完整枚举应用程序的内容和功能
- Scanner(扫描器) - 高级工具,自动发现web应用程序的安全漏洞
- Intruder(入侵) - 高度可配置的工具,对web应用程序进行自动化攻击
- Repeater(中继器) - 手动触发单独HTTP请求并分析响应的工具
- Sequencer(会话) - 分析不可预知的应用程序会话令牌和重要数据项的随机性
- Decoder(解码器) - 手动执行或对应用程序数据进行智能解码编码
- Comparer(对比) - 通过相关请求和响应得到两项数据的可视化"差异"
- Extender(扩展) - 加载Burp Suite扩展
- Options(设置) - Burp Suite的设置
- Alerts(警告) - Burp Suite运行过程中的错误
4.2 使用前准备
- 建议使用火狐浏览器
- 点击选项→网络设置→选择手工代理配置
- 在HTTP代理设置为127.0.0.1,端口可设置为8080
- 删除"不使用代理"中的localhost等数据
- 如果正常使用浏览器则改为系统代理设置
4.3 基本使用流程
- 进入目标网站,Proxy会得到GET请求
- 点击Forward让请求通过
- 在Target中可以看到通过的网址
- 可使用爬虫或进行扫描:
- Spider this host:使用爬虫
- Actively scan this host:主动扫描
- Passively scan this host:被动扫描
注意:主动扫描和被动扫描的区别在于,被动扫描需要一个个点击网站才能进行扫描。同时需要将Intercept is OFF。
4.4 Burp Suite暴力破解实战
示例场景:已知用户名为admin,密码为弱密码
步骤1:在登录框输入测试用户名admin和任意密码
步骤2:Burp Suite抓取到登录请求,查看参数:
- 用户名参数:user_name
- 密码参数:user_pw
步骤3:右键请求,选择【send to Intruder】
步骤4:在Intruder模块设置:
- 目标【HOST】和【Port】
- 若使用HTTPS,勾选【use HTTPS】
步骤5:在Intruder-Position中:
- 清除自动设置的position
- 在user_pw处点击【Add】添加position
- 设置攻击类型为【Sniper】
步骤6:在Intruder-Payloads中:
- 选择number方式破解
- 添加范围与长度
步骤7:设置线程数量等参数
步骤8:点击【Intruder-Start attack】开始攻击
步骤9:分析结果:
- 通过Length排序
- 找出长度与其他不同的一个
- 该密码即为破解出的密码
步骤10:使用破解出的密码尝试登录验证