猫鼠游戏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抓到的包:

 

2bpDecoder模块解码:

  

3.爆破

把上次抓到的包再发送到intruder模块,开始爆破:

字典:
Y2FybC5oYW5yYXR0eTpKZXJyeQ== Y2FybC5oYW5yYXR0eTpoYW5yYXR0eQ== Y2FybC5oYW5yYXR0eTpjYXJsaGFucmF0dHk= Y2FybC5oYW5yYXR0eTpncmFjZQ== Y2FybC5oYW5yYXR0eTpHcmFjZQ== Y2FybC5oYW5yYXR0eTptaWNlCg== Y2FybC5oYW5yYXR0eTpNaWNlCg== Y2FybC5oYW5yYXR0eTpDcmVhbQo= Y2FybC5oYW5yYXR0eTpjcmVhbQo= Y2FybC5oYW5yYXR0eTpidXR0ZXIK Y2FybC5oYW5yYXR0eTpCdXR0ZXIK cm9nZXIuc3Ryb25nOkJ1dHRlcgo= cm9nZXIuc3Ryb25nOmJ1dHRlcgo= cm9nZXIuc3Ryb25nOnJvZ2UKCg== cm9nZXIuc3Ryb25nOlJvZ2UKCg== cm9nZXIuc3Ryb25nOnJvZ2VzdHJvbmcKCg== cm9nZXIuc3Ryb25nOlJvZ2VTdHJvbmcKCg== cm9nZXIuc3Ryb25nOmdyYWNlCgo= cm9nZXIuc3Ryb25nOkdyYWNlCgo=

 

1)在intruderoptions选项里选择参数位置,添加参数占位符

  

2intruderpayloads里的Payload Options[Simple list]里选择字典

 

3)在intruderpayloads启动爆破

 

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扫描端口的时候发现有个ssh22222端口,于是我们就可用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解密,但需要付费,解码后:

 

 

 

翻译出来,原来是“两只小老鼠”

 

转载请注明

posted @ 2020-04-26 21:03  Lee-404  阅读(1397)  评论(0编辑  收藏  举报
Live2D