渗透测试之信息搜集(Nmap、Burp)
字数 5185 2025-08-15 21:31:30

渗透测试之信息搜集与工具使用详解

1. 渗透测试概述

渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统是否安全的一种方法。

1.1 渗透测试流程

  1. 信息收集 - 收集目标系统的各种信息
  2. 威胁建模 - 对收集的信息进行分析
  3. 渗透测试 - 实施实际的渗透攻击
  4. 后渗透测试 - 提权、内网渗透等
  5. 形成报告 - 总结发现的安全风险

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 主要模块

  1. Target(目标) - 显示目标目录结构
  2. Proxy(代理) - 拦截HTTP/S的代理服务器,作为浏览器和目标应用程序之间的中间人
  3. Spider(蜘蛛) - 智能感应的网络爬虫,能完整枚举应用程序的内容和功能
  4. Scanner(扫描器) - 高级工具,自动发现web应用程序的安全漏洞
  5. Intruder(入侵) - 高度可配置的工具,对web应用程序进行自动化攻击
  6. Repeater(中继器) - 手动触发单独HTTP请求并分析响应的工具
  7. Sequencer(会话) - 分析不可预知的应用程序会话令牌和重要数据项的随机性
  8. Decoder(解码器) - 手动执行或对应用程序数据进行智能解码编码
  9. Comparer(对比) - 通过相关请求和响应得到两项数据的可视化"差异"
  10. Extender(扩展) - 加载Burp Suite扩展
  11. Options(设置) - Burp Suite的设置
  12. Alerts(警告) - Burp Suite运行过程中的错误

4.2 使用前准备

  1. 建议使用火狐浏览器
  2. 点击选项→网络设置→选择手工代理配置
  3. 在HTTP代理设置为127.0.0.1,端口可设置为8080
  4. 删除"不使用代理"中的localhost等数据
  5. 如果正常使用浏览器则改为系统代理设置

4.3 基本使用流程

  1. 进入目标网站,Proxy会得到GET请求
  2. 点击Forward让请求通过
  3. 在Target中可以看到通过的网址
  4. 可使用爬虫或进行扫描:
    • 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:使用破解出的密码尝试登录验证

渗透测试之信息搜集与工具使用详解 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 :使用破解出的密码尝试登录验证