猫鼠游戏CTF(SkyDog: 2016 – Catch Me If You Can)
写在前边
这篇是直接拿Jerry师傅的文档然后自己再修改总结的,相关的详细知识点会在后续更新(下次一定,下次一定,不会咕的,不会咕的)
电影《Catch MeIf You Can》的中译名是《猫鼠游戏》,这个靶机的以此为灵感,作者在靶机中以{MD5 Hash}的形式放置了8个flag,我们的目标就是拿到这八个flag。
官方靶机地址:https://download.vulnhub.com/skydog/SkyDogConCTF2016VBoxV10.ova 难度:初级&中级
我这边是直接导入虚拟机的,通过桥接连接。
攻击机(kali):192.168.1.104
靶机(SkyDog: 2016 – Catch Me If You Can)192.168.1.103
解题
1======>Flag1
卡尔提示弗兰克”你的Home(家)有Hex(独角兽)“核心意思在Hex上,以及Home(意指站点);概括起来讲就是你的站点源码里有Hex(16进制编码)的值
注释1:
- Hex是Hexadecimal(十六进制)的简写,是16进制数的表示形式;
- Hex数值可与ASC·II码进行对照转换,可参考ASCII码表与HEX对照转换表;
- 一般CTF可能会在一些JS文件里隐藏Flag
注释2:
- 一般CTF可能会在一些JS文件里隐藏Flag
- 在浏览器里访问这个html5.js之后,第一行就是一串Hex过的字符串
方法一:使用bp把这串字符解码
解码后的flag是MD5编码,使用https://www.cmd5.com/在线解码
方法二:在kali2中使用xxd命令
xxd命令:输出Hex进制数或者解密Hex进制数
示例:用vim命令创建一个a.txt文件(内容为:abcdefg),再进行如下操作
接下来,解密我们发现的Hex
2======>Flag2
卡尔开始怀疑弗兰克潜藏着危险性(Obscurity or Security?【隐晦的安全?】),卡尔探员验证弗兰克的危险性;结合Flag1的值:nmap;则我们可以用nmap检查一下我们网站主机是否有危险性(我们是FBI探员卡尔,网站及主机是弗兰克的角色)
1.用nmap扫描主机所有端口(扫描时间可能比较漫长)
方法一:
方法二:
方法三:
方法一和方法二,扫描非常慢,扫不出主机上安装的服务的版本;方法三不但可加快扫描速度,而且还能详细扫描出服务的版本号;此命令的扫描结果如下:
结果分析:
一共扫描出四个tcp端口,其中22端口是闭关的,即ssh服务不能用;其他三个端口是开放的,其中有一个openssh的端口22222,可尝试用ssh连接一下这个端口。
2.用ssh连接22222端口
3.发现第二Flag,用MD5解密
3======>Flag3
卡尔说:“注意证据(Agent),已经了解了弗兰克是这起交通事故的肇事者”;这句话里关键是Agent,Agent在我们安全技术领域里就是【代理】的意思,再结合Flag2的解密结果encrypt【加密】,于是我们联想到了SSL协议及及证书,结合加密技术,进行数据安全传输(即https协议);于是可以尝试使用https协议访问此网站
SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。
1.使用https协议访问网站
根据提示需要在【高级】选项里查看一下SSL证书
发现两个一样的flag
2.解密Flag
通过cmd5解密Flag。
4======》Flag4
卡尔说“找到一条有用的证据是非常难的”。言外之意就是说,弗兰克这么聪明狡猾,想通过他个人资料获取有用的证据,非常不容易呀!!!
结合Flag3的值personnel,一般个人资料都会放在自己的personnel目录下,因此猜测站点里可能有个personnel目录
1.访问站点的personnel目录
既然弗兰克不能直接接近FBI,则弗兰克作为一个用户(User),可以找一个中间人(Agent)去接近FBI呀,此时我们可以联想到User-Agent
2.发现user-agent
如何知道FBI的html页面用什么样的User-Agent来访问呢?还记得我们曾经在站点文件里发现过一个html5.js文件吗?从这个文件的全名上,可以猜测这个文件里面应该有定义关于html5页面的访问规则,规则中可能会包含一些站点访问的user-agent!!!
而且我们还在这个文件里发现了第一个flag!!!!
通过浏览器访问html5.js源码,在源码中查找FBI,curt+F快捷键,结果如下
可以看出,要想访问FBI的站点,必须使用IE4这个代理(中间人)
3.通过抓包伪造IE4的User-Agent来访问FBI站点
1)抓包
2)接下来再改包
先改IE代理为IE4.0
3)修改代理后:
使用新的代理后,FBI站点可以访问,如图
4.上图发现了Flag4,由cmd5解密Flag4
5=======》Flag5
翻译过来:细节里暗藏魔鬼,或许它可能一个【对话框】的形式?无论是哪种形式,如果它简单,可猜测的,就不符合最佳实践了
注意,这段话提示我们站点里可能隐藏一个对话框,那如何找到这个对话框呢。只能去试着访问站点的某个资源目录,来弹出这个对话框咯。而且根据红色提示信息,对话框里肯定要输入一些复杂的数据
1.猜测
先猜测可以访问的能弹出对话框的站点目录
根据FBI站点的/personnel资源目录页面(如下图),我们还发现了一个clue(即线索)
Clue(线索)=new+flag=newevidence(evidence是Flag4的值),这个单词与personnel一样,没有特别意义,猜测很有可能是一个目录
2.访问newevidence目录
那么,可以使用访问personnel目录的方式,访问newevidence目录
即:使用bp工具,修改User-Agent为IE4
1)修改代理后,正常访问,如下图
现在关键是找用户名,根据对话框提示,只能FBI里的人才可以访问,那我们知道FBI探员卡尔的全名是Carl.Hanratty,一般用户名都小写,猜测最终用户名应该是carl.hanratty,那密码怎么猜呢,只能用密码爆破,还好我有关于这个电影的一些用户信息字典。(说明:这个字典里是由用户名:密码的base64编码形式,用户名主要为电影里的一些角色名组成,密码也是用户名及一些经典对话的词汇构造的)
Bp抓到的包:
2)用bp的Decoder模块解码:
3.爆破
把上次抓到的包再发送到intruder模块,开始爆破:
字典:
Y2FybC5oYW5yYXR0eTpKZXJyeQ== Y2FybC5oYW5yYXR0eTpoYW5yYXR0eQ== Y2FybC5oYW5yYXR0eTpjYXJsaGFucmF0dHk= Y2FybC5oYW5yYXR0eTpncmFjZQ== Y2FybC5oYW5yYXR0eTpHcmFjZQ== Y2FybC5oYW5yYXR0eTptaWNlCg== Y2FybC5oYW5yYXR0eTpNaWNlCg== Y2FybC5oYW5yYXR0eTpDcmVhbQo= Y2FybC5oYW5yYXR0eTpjcmVhbQo= Y2FybC5oYW5yYXR0eTpidXR0ZXIK Y2FybC5oYW5yYXR0eTpCdXR0ZXIK cm9nZXIuc3Ryb25nOkJ1dHRlcgo= cm9nZXIuc3Ryb25nOmJ1dHRlcgo= cm9nZXIuc3Ryb25nOnJvZ2UKCg== cm9nZXIuc3Ryb25nOlJvZ2UKCg== cm9nZXIuc3Ryb25nOnJvZ2VzdHJvbmcKCg== cm9nZXIuc3Ryb25nOlJvZ2VTdHJvbmcKCg== cm9nZXIuc3Ryb25nOmdyYWNlCgo= cm9nZXIuc3Ryb25nOkdyYWNlCgo=
1)在intruder的options选项里选择参数位置,添加参数占位符
2)在intruder的payloads里的Payload Options[Simple list]里选择字典
3)在intruder的payloads启动爆破
4)分析结果
5)解码结果里的值
得到了用户名和密码,用户名:carl.hanratty 密码:Grace,尝试登录
正确登录,页面如下
点开第一个超链接,发现了Flag
4.Cmd5解密FLAG
6======Flag6
FBI探员自己在思索:“弗兰克的证据究竟隐藏在哪里呢?”;人就在眼前,就是找不到证据抓他,真是愁死人呐!!还得从上一个Flag的过程里找线索呀,因为上一个Flag的过程里出现了newevidence(新的证据)目录和这个Flag提示里的证据相呼应,继续访问这个目录里的资源,寻找线索。
1.消息搜集
- 继续点开这个目录页面的其他两个链接
打开第2个链接是一张图片(或许图片里隐藏着猫腻哦!!!)
2.图片隐写
还是分析一下图片内容吧,这时候我们想到了一种技术:图片隐写术!对应的工具就是就是隐写工具:steghide, 是一款开源的隐写术软件,它可以让你在一张图片或者音频文件中隐藏你的秘密信息,而且你不会注意到图片或音频文件发生了任何的改变。
1)把图片下载到kali
2)steghide命令
使用steghide命令分析图片,命令格式如下:steghide info xxx.jpg,若没安装使用命令
apt-get install steghide -y
分析结果如下:
需要输入密码,联想到Flag5中解码出来一个值:panam,还没有派到任何用场,此时应该派上用场咯。。。。。
把捆绑的flag.txt文件输出出来用如下命令:steghide extract -sf image.jpg
3.查看flag.txt里的内容
7=======Flag7
为什么弗兰克为会对着取款机的摄像头大喊:“我是飞人”!!这是一个很奇怪的线索,用社工手段在baidu上搜索了一下这句话 “I’m The Fastest Man Alive!”?
1.分析
原来是闪电侠Baryy.Allen说的;这个barry.allen我们联想到了应该是用户名,用户名应该类似barry.allen和barryallen这种方式,根据Flag6中给出的Flag的值和一个线索值,联想到这两个值可能是密码;基于用户名和密码互相匹配比较麻烦,我们可以写一个用户名的字典和一个密码的字典,用hydra进行爆破!但这个用户名和密码用在哪个服务上呢?在nmap扫描端口的时候发现有个ssh的22222端口,于是我们就可用hydra进行ssh爆破;
2.创建用户名字典和密码字典
用户名字典主要包含carl/frank/barry的人名组合
密码字典以用户名字典内容为主+Flag6中的Flag值及线索的值
catchme-sshuser.txt
barryallen barry.allen Baryy.Allen BarryAllen barry allen Barry Allen carl.hanratty Carl.Hanratty carlhanratty carl hanratty Carl Hanratty Frank.Abagnale frank.abagnale frankabagnale Frank Abagnale frank abagnale
catchme-sshpassword.txt
iheartbrenda barryallen barry.allen Baryy.Allen BarryAllen barry allen Barry Allen carl.hanratty Carl.Hanratty carlhanratty carl hanratty Carl Hanratty Frank.Abagnale frank.abagnale frankabagnale Frank Abagnale frank abagnale panam ILoveFrance
3.使用hydra进行ssh爆破
把以上两个文件复制到Kali虚拟机的某个目录下(这里是在/根目录),开始爆破
hydra -L catchme-sshuser.txt -P catchme-sshpassword.txt -s 22222 192.168.1.103 ssh
4.登陆
- 爆破成功后,使用用户名:barryallen和密码:iheartbrenda登录ssh端口22222
登陆成功,查看文件
5.解密
查看flag.txt文件,发现了第7个Flag
8=========》Flag8
弗兰克失去了理智(变得疯狂),也有可能是因为他的记忆里(Memory)做了太多(大文件的坏事。他把自己锁(Locked)在大楼里,在他自杀之前他找出了打开大门的密码
1.分析
这个描述里有一个Memory,是内存的意思,我们联想到内存分析这个工具;同时联想到被分析的文件应该会很大,而且根据描述的提示,Flag(就是描述中的密码)肯定是被绑定(Locked)在这个大文件里。
2.解包
1)信息搜集
- 根据Flag7中的线索,当用我们用ssh成功登录22222端口后,看见一个71M的文件(估计可能是一个系统备份文件)
查看一下security-system.data这个文件所在的目录
2)分析数据
- 把这个文件scp到本地(kali系统中),以便作进一步分析
- 查看一下security-system.data文件的真实类型
- 既然是zip文件,则可以把扩展名data改为zip,以方便用unzip命令进行解压缩
- 用unzip解压:
根据security-systedm.data的文件名和文件的扩展名,猜测其可能是一个设备固件的驱动备份文件,由此使用Binwalk进行文件 扫描
Binwalk是一款取证分析工具,旨在协助技术人员对文件进行分析,提取及逆向工程。
- 然而,也没发现什么有价值的线索
- 转而根据题目中的描述的提示有个Memory,联想到对这个文件使用内存取证分析工具Volatility,这个工具里面包含了相当多的插件:
其中较常用的是:cmdscan和imageinfo这两个插件
使用volatility命令分析文件的思路就是,首先使用imageinfo插件分析文件中的profile值,然后根据profile的值,再结合Cmdscan插件分析出在内存中的使用的命令。
- 分析文件的profile的值
volatility imageinfo -f security-system.data
- 用profile的值结合cmdscan插件分析内存里驻留的命令
volatility --profile=WinXPSP2x86 -f security-system.data cmdscan
把上面那个内存里的命令copy下在命令行里执行一下
使用sed去掉字符串的空格
3.解密
使用BP解码,得到第8个Flag
用cmd5解密,但需要付费,解码后:
翻译出来,原来是“两只小老鼠”
转载请注明