拿了首届信安之路巅峰挑战赛第一,这次比赛的writeup如下,orz,orz。
Level_1
1 | 欢迎参加首届信安之路巅峰挑战赛,第一关的入口: |
选择题为主,最后一题例外,为此,还抓了个包,研究了下js脚本

看下脚本

火狐抓个包,得到key?这tm什么原理。

Level_2
1 | 恭喜通关第一关,第二关入口: |
我滴个天啊。。。。。弱密码随意登陆。。。。。不好意思,这题我真是非预期解法,具体的预期解法,之前信安之路文章已发,就不仔细讲述啦!

得到第二关答案key:2c4b23c265c3e834f31024533565f2be
Level_3
1 | 恭喜完成第二关,第三关的入口: |
这题,学到的东西很多,坑点多,但就是好玩。
日常扫端口

没发现啥(这时候也没全tcp端口扫描),后面出题老哥放出新提示

上网搜搜,嗯 ,6379 Redis很有可能哦。

尝试一波,发现6379端口开的是redis服务,执行命令redis-cli -h 66.42.84.155 -p 6379,发现可以登录,但是需要密码。
尝试使用hydra爆破,但是不知为啥,爆破无效(这里上网搜索了下,说是hydra编译问题),于是尝试使用python脚本。
1 | import redis |
字典选择top100弱密码就行啦,开始爆破。

爆破成功,密码是:1q2w3e4r

嗯~,爆破是成功了,但是怎么利用redis漏洞呢,可以看看这篇文章,其中详细指出了一些想法。
自己测试时,发现/root/.ssh/这个目录不在了,想着利用redis写入自己私钥,远程ssh连接上去的幻想也就破灭了。

后面尝试着,网上学习了一波,尝试着读下/etc/这个目录,喔!竟然存在,嘿嘿,那么是不是可以尝试/etc/passwd 文件实现任意账号密码的重置呢?具体操作请查看上述那个链接,下面是自己的操作:

好的,成功save后,尝试以root用户登陆,然后就这样登上去了,root用户登上去了?^–$–*/,还是有点吃惊的,赶快联系了下出题的大佬,问下就这样?这是预期解法?直接用root?后面问了下,redis是用root 身份启动,被菜鸡我刚好撞上了,直接把root密码重置了。甚至,不小心把/etc/shadow给搞坏了,抱歉啊,不是故意的。
查看下敏感信息

后面老哥给了我个admin的用户账号和密码,心虚的我也不好意思的接受了。咳,继续解题。回到root用户登陆后,用root权限转了一圈,看了下/tmp/history,以下为内容
1 | [root@vultr tmp]# cat history |
em~,我以为我找到答案了,你肯定也看到了P@ssword123,想多了,因为下面的命令告诉我们,大佬改了密码。

先再看看/etc/shadow,en~,密码的hash值都有,不是说key 的明文密码就是下一关通关密语吗?那试试爆破key用户的hash值咯。结果再爆破这里,巨坑,有两种工具可以爆破,一种john,一种hashcat,john不知啥原因,kali、ubuntu下均报错,折腾许久,还是没弄好,就去搞鼓hashcat。

hashcat用的是windows版的,但是死活爆破不出来,这是我使用的是john的自带字典rockyou.txt,后面一直换字典,还是爆不出来。厚着脸皮去问出题大佬,大佬给了点提示,仔细看history文件,看了半天,还是没看出啥来,大佬看不下去了,字典在里面。哦~,于是我懂了。上面的history文件有这两条记录

打开https://cowtransfer.com/s/84d80d0d7b3c45,提示了

而140行的url经过URLdecode后是这样的https://static.cowtransfer.com/84d80d0d-7b3c-4539-932d-30c3f0869538/高频字典.zip?e=1537629504&token=rkrC3sADAVnBtSQ_YTQgxi-3TEVapbu6rxmtmg0v:IDeOMk2XNjOwrk-mcTr6wnRjM84=&sign=484933f3a024bcab2d8f29c659aa8aa9&t=5ba65d40&attname=高频字典.zip更是提醒我们要用这个字典去跑key的hash值,之前我也有看到这个,还打开过,但是觉得很莫名其妙,听到大佬的提示,突然悟了。是我太菜了,orz。
于是下载高频字典.zip,然后开始爆破,破破破,不知道怎么破请看Hash破解神器:Hashcat的简单使用,构造以下命令:
hashcat64.exe -m 1800 -a 0 -o found.txt crack.hash 字典.txt
简单描述下这条命令的意思:如果hashcat在字典.txt中跑出的hash值与crack.hash中所求内容相同,就将字典.txt找到的对应值写入found.txt中。
于是找啊找,跑啊跑,发现跑完刚刚下载的所有高频字典.zip里的文件还是没找到啊,于是自己本地建了个key用户测试了下,发现可以跑出来啊。感觉出题大佬被我坑了(之前直接的rsdis命令写入,把/etc/passwd写坏了),后面问了下,果然,之前的那条key的hash值是跑不出来的。额。。。自作自受啊。出题老哥后面重新给了个sha512的值$6$ZkfV4HlR$7hk5IVzAVIq1gGLJo254qMm9LT6YrnUy7iATOTc8das8pOwGPWzKMlWTczMjp5fAyYFQ1SMe/K.FIGBAX/0590
执行命令:hashcat64.exe -m 1800 -a 0 -o found.txt crack.hash 55泄漏门(部分).txt,秒破

查看found文件:

第三关最终的KEY:1314woaini1314
听说后面这题是这样的,觉得难度就应该降低挺多的了

Level_4
1 | 恭喜完成第三关,第四关的入口是: |
打开网页是这样的(我刚做这题的时候,页面是没有任何消息的,摸索好一阵子)

打开网址https://cowtransfer.com/s/023ab1f54dd04c,提供了一个压缩包HellWorld.pcapng进行下载。
wireshark三板斧试下,很快就会发现其中的http流存在提示,有个压缩包,里面有私钥和公钥文件。除此之外明确,攻击者内网ip:10.0.3.111,被攻击ip:173.82.235.146(攻击者的外网ip:182.150.21.33,估计出题老哥这题是在虚拟机抓的,所以会有内外网ip)

而分组10061和10956则分析出以下内容:
1 | http://dynupdate.noip.com/settings.php?username=C3A37087469&pass=HMAC{yuyvphyx4snkqvtgt7kiyiamtra=} |
其中有个username=C3A37087469,这个是接下来的线索。另外,值得一提的是passwd.jpg这个图片,这个http传输载体tcp传输时,存在丢包现象,所以单纯的http流追踪是找不到回应的包,只能通过追踪tcp流查找重传的数据。

很明显,是个图片,不过是base64格式,这个需要自行通过html标签img使图片显示在网页中,操作一番,如下

好的,我们现在得到了*mGX3Y-d。再仔细看看题目还有个神秘代码,UJxgqdNUuH2I5EDDXgXvhFleJiVxeOvZBLXiLJ3lTq+lTRg7eSMR4++CZwe2z7vFh5CqETYeoZ7fAUWT4iCMMuap2iG/OfbKV2JN2SFrpCKCmSfnlxKIF02KTUyI99Ip/06LtNlmAIBtWisi0Ijr67lq+2HKQgxu5KaaNQpzohk=
这个通过之前压缩包中的rsa私钥文件直接解密,会得到以下内容eK8}vD3=。
好的做到这里,我有话要讲,那个时候,再看了下题目

再联系上面得到的消息,我用ubuntu的ssh服务尝试爆破了207.148.27.120的22端口,其中爆破字典我选择了top前100的弱密码,并且添加了*mGX3Y-deK8}vD3=、eK8}vD3=*mGX3Y-d这两个密码进去,但是爆破没结果。而真相是,过了一天,我用xshell再次连接时,直接root用户,再以eK8}vD3=*mGX3Y-d登进去了,登进去了。(这里之前问了出题老哥,老哥说设置了ssh验证次数为5次,猜测是不是这个原因导致ubuntu的hydra没有成功爆破)

密码是eK8}vD3=*mGX3Y-d
登录成功后,第一件事就是查看history,还是发现了一些东西,比如说icmpsh_m.py,刚开始以为这个是linux提权的后门,理直气壮去找老哥,老哥说不是这个。好吧继续找。

然后往下翻翻看到了这个

有个很明显的目录/etc/ssh/,下载了个XAZLER.exe

打开后是这样的

细心的你们一定发现,上面有提示“请按任意键继续”,嗯,但是我没按,直接关掉了(那个时候我只要多按下任意一个键,key就会出来)。然后我又继续往下探索,发现了存在一个C3A37087469的用户,咦!

其中有个key.sh,打开看下
1 | #@Cherishao |
到这里,想了好久还是没思路,厚着脸皮去问出题老哥,发了一些解题截图过去,老哥说:“你是不是傻啊,再随便按个键啊”,然后就是下面这个样子(tm内心一万匹草泥马飞奔)

好吧,得到了key,下一关的钥匙。
在其中的解题过程中,此题的出题老哥,教了我好些应急响应、溯源等知识,贼喜欢。
这里放个学习链接:干货 | 黑客入侵?这里有详细的应急排查手册!
解题过程中,老哥为了加快我们的解题速度,还放出了个提示:

后面做完题,感觉这提示没啥用啊。后面问了下

好吧,的确有这样的想法,当时我记得ip反查都试了一遍。
Level_5
1 | 恭喜完成第四关,第五关是一个病毒分析题,样本下载地址: |
这题啊,大家解压压缩包的时候千万小心,这是个真的病毒,嗯~,还好我放在虚拟机里了,不然,物理机得遭殃。
看到了题目,想了想,有点意思啊,还问黑客服务器的IP地址是什么?。玩玩呗,虚拟机运行下这个病毒软件,发现文件数据被加密了,还发现了这个

然后我就去下载onion浏览器了,弄了半天没弄好,去问出题老哥,我觉得那个时候老哥都被我逗笑了。
然后老哥给了提示,抓包,这个其实也想到了,但是想归想到,操作起来发现巨坑,因为病毒传送信息的服务器炸了,导致抓包的时候没有看到http流,后面仔细看了半天,才找到下图的线索。

是的,黑客服务器的IP地址就是137.74.163.43,就是这么简单。但是让我头疼的是第一个问题,rsa的公钥是啥?我滴个天啊,摆明要逆向啊。去问问出题老哥有没其他做法,老哥指点了一条明路:内存提串,后面使用了火绒剑,这个工具,贼好用。仔细分析了很久,火绒剑监控一下,就能看到这个病毒exe相应的行为了,在其运行完毕后,最终还会释放一个PE,而这个PE是没有任何混淆的,可以清晰使用IDA查看到其中的RSA公钥。当然其中需要dump一下,这里请教了下出题老哥:OD本身能dump,PEtoolS,loadPE也都能dump。好吧,那就dump一下,dump出来后,直接扔到IDA中,得到RSA公钥

得到的最后RSA公钥为
1 | -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyvXYYjSQqu7nWxB8HH/9SIaTd ZZ5Es9nv2KQnPcUV6F0ZHITClTZvoa7PbtG77q76xBNdvTH8VIXGjn+d58xK8jlE krC/N87iWPpG0jgmeY/ytR/gyArojmDFFnt11WP2koi2sjWzz1UXv8SC/aHHqfHe wgWrhFLmlhxrBxo46wIDAQAB -----END PUBLIC KEY----- |
黑客服务器ip:137.74.163.43
这里有个尴尬的地方,因为我是先拿到ip,提交答案后,直接“完成所有挑战”,后面跟出题老哥反映下,再继续去找公钥的答案。

到此结束,大佬们,再见。