靶机描述:
SkyDog Con CTF 2016 - Catch Me If You Can
难度:初学者/中级
说明:CTF是虚拟机,在虚拟箱中工作效果最好。下载OVA文件打开虚拟框,然后选择文件->导入设备。从下载的地方选择OVA文件。在导入OVA文件之后,确保在启动VM之前禁用USB 2。默认情况下,只为主机设置适配器,但在启动之前,您可以根据网络设置改变这一点。虚拟机服务器配置为DHCP。如果你有任何问题,请在Twitter上告诉我JAMSBOWER,我很乐意帮忙。
Flags
The eight flags are in the form of flag{MD5 Hash} such as flag{1a79a4d60de6718e8e5b326e338ae533
Flag #1 Don’t go Home Frank! There’s a Hex on Your House.
Flag #2 Obscurity or Security?
Flag #3 Be Careful Agent, Frank Has Been Known to Intercept Traffic Our Traffic.
Flag #4 A Good Agent is Hard to Find.
Flag #5 The Devil is in the Details - Or is it Dialogue? Either Way, if it’s Simple, Guessable, or Personal it Goes Against Best Practices
Flag #6 Where in the World is Frank?
Flag #7 Frank Was Caught on Camera Cashing Checks and Yelling - I’m The Fastest Man Alive!
Flag #8 Franks Lost His Mind or Maybe it’s His Memory. He’s Locked Himself Inside the Building. Find the Code to Unlock the Door Before He Gets Himself Killed!
我们可能要得到8个flag
靶机渗透:
本次攻击机采取的是parrot linux+windows,靶机采用的是桥接模式,
攻击机IP为:192.168.0.104
我们用nmap扫出靶机ip地址:
nmap -sP 192.168.0.0/24
我们探测出靶机IP为:192.168.0.109
我们再用nmap探测一下靶机其他信息:
nmap -p 1-65535 -T4 -A 192.168.0.109
发现开放了4个端口:
22/tcp closed ssh
80/tcp open http
443/tcp open ssl/http
22222/tcp open ssh
同时发现在22222端口上开放了OpenSSH的服务
我们访问 http://192.168.0.109 靶机主页:
查看网页源代码,也没有什么发现,扫一下目录:
dirb http://192.168.0.109 /usr/share/wordlists/dirb/big.txt
发现了一个返回值为200目录:/assert/
然后用web漏洞扫描器AWVS对网站进行扫描,挖掘前,准备工作要做好:
扫出的漏洞有点鸡肋:
不过我们对目录结构有了大致的了解:
发现我们用dirb漏扫了一个/oldIE/目录
我们访问 http://192.168.0.109/oldIE/ :
我们继续深入:
发现了这一串数字:
666c61677b37633031333230373061306566373164353432363633653964633166356465657d
我们来看flag1的提示:
Flag #1 Don’t go Home Frank! There’s a Hex on Your House.
翻译:弗兰克,不要回家!你的房子有hex。
我们推测这就是hex过后的字符串,我们尝试解hex:
果然是flag,我们成功得到flag1,但flag1的内容感觉像是md5加密,
我们对flag1的内容尝试md5解密:
提示是nmap,我们已经使用nmap来扫描出靶机的端口,难道flag2要从靶机的
端口入手,根据nmap扫描端口的结果,我们发现在22端口的ssh服务关闭,但
是在22222端口上开放了OpenSSH的服务,尝试连接22222端口:
ssh [email protected] -p 22222
emmm...需要密码才能连接,但是我们得到了flag!!!
Flag{53c82eba31f6d416f331de9162ebe997}
我们顺利得到了flag2,顺便md5解密,看一下提示
encrypt....翻译过来就是 加密 的意思
我们看一下题设flag3的提示:
Flag #3 Be Careful Agent, Frank Has Been Known to Intercept Traffic Our Traffic.
翻译:小心代理,弗兰克已经知道拦截我们的交通。
emmm...到目前为止,唯一与拦截流量跟加密有关的就是默认站点使用的ssl,
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息
非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure So
ckets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来
说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比
http协议安全。
我们直接访问 https://192.168.0.109
发现证书不安全,导致站点不被信任,ssl连接出问题,我们查看证书内容:
意外的发现了flag3:flag3{f82366a9ddc064585d54e3f78bde3221}
我们依旧md5解密:
personnel...翻译过来就是 人员 的意思,
我们看一下题设flag4的提示:
Flag #4 A Good Agent is Hard to Find.
翻译:一个好的代理人很难找到。
完全与题设不搭,感觉应该是目录,尝试访问:
http://192.168.0.109/personnel
访问过后有一句话:
ACCESS DENIED!!! You Do Not Appear To Be Coming From An FBI Workstation. Preparing Interrogation Room 1. Car Batteries Charging....
翻译:访问被拒绝!!!!你似乎不是来自FBI工作站。准备审讯室1。汽车电池充电…
说我们不是来自FBI工作站的,拒绝访问...但我们有题设啊,我们可以找个代理人去访问啊
题设中把这个代理人译为 Agent ,我联想到了 User-Agent ,是否可以通过修改User-Agent
来实现代理访问,因为User-Agentt是用来标识用户的操作系统、浏览器以及其版本信息等...
但是我们怎么伪造呢?到目前为止,唯一得到的文件只有ssl的证书跟 oldIE目录下的html5.js。
ssl证书在flag3已经分析过,没有其他不寻常的东西,我们只有分析这个html5.js,打开一看是
一堆乱七八糟的东西,但是我们搜索关键字:agent,FBI :
提示已经很明显了:Adding temporary support for IE4 FBI Workstations
还有一个:[email protected] 像是一个邮箱,感觉应该有用,先放在这里
我们可以伪造IE4的User-Agent信息:
(User-Agent各个版本参考:https://www.xuebuyuan.com/271243.html)
Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)
成功伪造,并得到了flag4: flag{14e10d570047667f904261e6d08f520f}
flag{14e10d570047667f904261e6d08f520f} Clue = new+flagFlags
还有一个提示:
Clue = new+flag
我们顺便md5解密这个flag:
evidence...翻译过来就是 证据 的意思
根据刚刚flag得到的提示:Clue = new+flag = newevidence
我们看题设的提示,发现除了提醒细心,没什么卵用,
有了上次的经验,我们尝试访问这个 newevidence 目录:
还是这个页面,不过也证明了,newevidence确实是一个目录,我们继续伪造User-Agent头,访问尝试:
弹出了一个框,让输入用户名跟密码...
现在得到的只有上个flag访问 /oldIE/html5.js 时得到的一个邮箱: [email protected]
发现用户名的构成是: 名字.姓氏
再上一个伪造User-Agent头获得flag时的burp返回包中除了flag,好像还有个用户名:
可以看到有个 :Welcome Agent Hanratty
这个 Agent Hanratty 应该是一个人,遂百度一下:
我们初步可以判断这个FBI探员的姓名:Carl.Hanratty
所以用户名为:carl.hanratty
但是我们不知道密码...毫无提示,只能霸王硬上弓,用burp爆破
最后爆破得到密码为 : Grace
尝试登陆:
点击 " Evidence Summary File ",发现直接跳到 http://192.168.0.109/newevidence/Evidence.txt
同时我们也得到了flag5:flag{117c240d49f54096413dd64280399ea9}
当我们点击 " Possible Location ",发现直接跳到 http://192.168.0.109/newevidence/image.jpg
当我们点击 " Case Invoice ",发现直接跳到 http://192.168.0.109/newevidence/Invoice.pdf
我们分别把这个newevidence.jpg,invoice.pdf下载到本地:
我们把flag5的内容md5解密:
panam...翻译过来就是 泛美航空公司 感觉跟题目没有一点关系,
推测可能是目录,或者登录用户名或者密码,尝试访问目录:
发现不是目录
我们看一下题设flag6的提示:
Flag #6 Where in the World is Frank?
翻译:弗兰克到底在哪儿?
emmm...现在我们唯一可以利用的就是上个flag获得的newevidence.jpg跟Invoice.pdf
我们先查看这个Invoice.pdf:
我认为有价值的线索都已经标出来。
中间那段话的翻译:
亲爱的 Agent Amdursky,
请在下面找到一个最近完成工作的成本分解。请尽早付款,并随时联系我。
多谢,Stefan Hetzl
Google搜索一下这个 " Stefan Hetzl ":
搜索结果:http://steghide.sourceforge.net/index.php
发现Stefan Hetzl是Steghide的作者。Steghide是一个非常棒的使用隐写术的工具
能够隐藏各种图像和音频文件中的数据,我们似乎还有一张图片 newevidence.jpg 没利用,
我们利用parrot linux自带的Steghide工具来剖析这张图片:
(steghide命令详解:https://blog.csdn.net/Jeanphorn/article/details/45034859)
steghide --info newevidence.jpg
还要密码!!!我直接就想到了上一个flag md5解密后的结果 panam:
果然里面隐藏了flag,我们把flag.txt提取出来:
steghide extract -sf newevidence.jpg -p panam
成功获得flag6:flag{d1e5146b171928731385eb7ea38c37b8}
md5直接解密:
发现题目已经解出来了 ILoveFrance
还有其他的提示:clue = iheartbrenda
猜想是不是目录:
....那估计是用户名或者密码
看一下题设flag7给的提示:
Flag #7 Frank Was Caught on Camera Cashing Checks and Yelling - I’m The Fastest Man Alive!
翻译:弗兰克被摄像机拍到,大喊大叫,我是活着的最快的人!
这是一个奇怪的提示,弗兰克为什么大喊 "我是活着最快的人!"?
Google了这句话 I’m The Fastest Man Alive!
这是闪电侠说的一句话!!!
原话是:my name is Barry Allen and i am the fastest man alive
when i was a child , i saw my mother killed by something impossible
这里有个姓名 :Barry Allen
推测用户名为:barryallen
密码的话我想起来上一个flag留下来了一个线索 iheartbrenda
推测密码为: iheartbrenda
有用户名跟密码就得有登陆的地方,我们开始时用nmap发现开了4个端口,
我们曾经登陆过22222端口,好像有个输入密码的地方,我们用barryallen用户
连接22222端口:
ssh [email protected] -p 22222
我们输入密码: iheartbrenda
我们成功得到flag7:flag{bd2f6a1d5242c962a05619c56fa47ba6}
我们md5解密flag7:
同时发现目录下面除了flag.txt,还有 security-system.data 的文件,
我们将这个文件下载到本地:
我们先用parrot linux自带的binwalk工具分析一下这个文件:
binwalk security-system.data
发现是一个zip文件,看不出来啊,才开始还以为是data文件...
我们要想把zip解压出来,首先要把它变成zip文件:
mv security-system.data security-system.data.zip
然后使用unzip命令来解压这个zip文件:
unzip security-system.data.zip
现在security-system.data显示为简单的数据。在文件上运行字符串我看到很多
内存提到,所以我在想它是一台机器的内存映像。
接下来使用Volatility来进行电子取证:
(Volatility介绍及用法:
https://www.anquanke.com/post/id/86036
https://blog.csdn.net/kevinhanser/article/details/80013033
https://tools.kali.org/forensics/volatility)
首先查看一下文件信息:
volatility -f security-system.data iamgeinfo
我们直接用notepad查看当前显示过得笔记本内容:
volatility -f security-system.data --profile=WinXPSP2x86 notepad
发现有Test有一行内容:
666c61677b38343164643364623239623066626264383963376235626537363863646338317d
明显是hex过后的,我们直接解码:
得到了最后一个flag8:flag{841dd3db29b0fbbd89c7b5be768cdc81}
md5解密:
两只小老鼠...hahaha