mac可以学习ctf吗

有好几周没有发文章了具体原洇是上上周末去了团建,上周末主要在研读《Android 软件安全与逆向分析》一书我报名参加了公司第一次 CTF 比赛,结果很幸运组队时抱上了几个夶腿进了决赛本着绝不坑队友的原则,精心准备了一把结果最后还是坑了,我那道 Android 逆向的题还是没有做出来虽然比赛已经结束,但惢有不甘这周末又继续搞了两天这题,代码逆向和解题思路都搞的差不多但是似乎 Native 层的代码理解有一点点偏差。昨晚 11 点多不得已向比賽组委会出题大神请教解题方法居然没有我想的复杂,我还是太 Naive 了

首先介绍一下什么是 CTF。

CTF(Capture The Flag)夺旗赛在网络安全领域中指的是网络咹全技术人员之间进行技术竞技的一种比赛形式。CTF 起源于 1996 年 DEFCON 全球黑客大会以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。

这次是公司第一次举办 CTF 的比赛而我在这之前,对 CTF 也是了解甚少组织这次比赛的是公司 T5 大神所在的实验室,本着学习的态度就尝试報了名。刚好队里缺 Android 逆向的小伙伴所有我就专攻 Android 题,其他题交给其他的小伙伴

由于是第一次举办,采用了比较初级的「解题模式」主要分为几类:隐写、逆向、Web、Mobile。举个隐写的例子就明白了比如让你在一个浏览器页面里找藏在里面的 Flag,只要查看源码:

WelcomeToCTF 就是其中的 Flag當然,这种属于最初级的题更多的隐写 Flag 会藏在更深的地方,比如图片、MP3、PDF 等等文件里你需要做各种数据抽离,找出其中的不同最终發现写在里面的隐藏内容。

对 CTF 有兴趣的同学可以自行去了解更多这里不一一介绍了。一是我本身也专研不深二是这次比赛我只搞了 Mobile 题。所以接下来就只聊一聊 Mobile 题。

Mobile 题主要是 Android 的逆向Crack 破解或者是找出其中漏洞。同样举个简单的例子比如破解一个需要序列号的 APP,通过逆姠你找到它里面判断序列号是否正确的地方,把判断条件改反或者修改判断条件,让它永远返回 True这样就简单的绕过了验证。

而实际凊况会比这种复杂的多所以要掌握好 Android 逆向,需要了解 Android 虚拟机的原理及 Dalvik 指令集熟悉 DEX 文件的格式及反汇编语言 smali。能读懂和理解 ARM 汇编(寄存器和各种寻址)由于 Java 层的破解相对容易,很多 APP 会把关键功能放在 Android NDK 的 so 里所以,分析反汇编的 so 代码也是必须要掌握的

Android 逆向主要分静态分析和动态调试。静态分析就是查看逆向的代码找出其他的关键所在,然后修改代码重新打包、签名,得到最终结果动态调试是指使鼡工具动态调试 APP,可在运行时下断点查看或修改寄存器的值,Dump 一段内存等等

常见的 Android 加壳过程就是通过 so 加载一个二进制文件,然后解密絀真正的 DEX 文件通过加壳,把真实的业务代码隐藏了起来Java 层的逆向你看不到真实的业务逻辑代码,因为只有一个壳破解的思路也很简單,动态调试 APP运行到解密完 DEX 的地方(或者是定位到关键函数,比如加载新 DEX 的地方)将 DEX 文件所在的内存 Dump 出来,然后再去分析 Dump 出来的真实 DEX 攵件

魔高一尺道高一丈。既然动态调试可以这么容易把隐藏的 DEX Dump 出来那么反破解的方法就是加入「反调试」的逻辑。比如不断检查 App 的 TracerID,一旦发现有人在调试它就启动自毁程序。于是动态调试的难度又增加了,这时候就需要用到「反反调试」找出其中「反调试」的玳码,通过静态分析想尽一切办法绕过反调试。

这其中过程说的似乎轻描淡写实际操作起来却并非那么容易。我体验一段时间之后的感觉是首先基础要扎实,上看得了 Java下看得了 smali,C++arm 汇编,其次工具使用要熟练。已经很少有人徒手破解了因为有很多现成的工具可鼡。比如:APKTool、jd-gui、IDA Pro…… 其中的 IDA Pro 堪称神器熟练掌握 IDA Pro 几乎成功了一半(瞎说的,因为我不是很熟)第三,要有敏锐的思路分析出其中的关鍵路径,寻出破解的方法

基础方面,我恶补了《Android 软件安全与逆向分析》一书写的确实好,讲的非常系统入门的首选。我买的纸质书看完的感受是看此类书还是纸质的比较好。比赛结束后又入了一本《漏洞战争》最新出炉的安全大作,作者就是文章开头我提到的这佽 CTF 组委会出题的大神

实践部分我做的就不好了,工具的不熟练使用成了我的一大瓶颈首先是环境准备部分,我就入了一个大坑搞 Android 逆姠,使用手机真机调试是必不可少的而且手机必须是 root 过的,同时必须准备好多个 Android API 版本的手机(因为有的题的 APK 对 API Level 有要求)别人已经在破解调试了,而题目的 APP 在我的手机上正常跑起来却是一个问题(汗~)

当然,也是可以使用模拟器的这又要说到我遇到的另外一个大坑,洇为习惯了 Genymotion 模拟器(性能很好)然后发现动态调试使用的 android_server 在 Genymotion 里根本跑不起来。于是当初我就放弃了模拟器方案最后在这周末的时候发現,使用 Google 原生的模拟器选择 arm 版本的 SDK 就可以了!(哭~)

当然,这都没什么还有一个更大的坑。因为比赛我带的是我的 Mac而破解工具大多數是在 Windows 里运行的。所以我就选择在 Mac 里装 Windows 虚拟机(VirtualBox)然后就掉坑里了。默认的 NAT 方式虚拟机里是不能访问宿主机的,所以根本没办法进行動态调试比赛之前我早有考虑,所以简单的切换到 Bridge 模式就可以解决然而我还是太 Naive 了,公司里是不允许用 Bridge 方式的使用后根本就上不了網。

我不太可能把 Mac 再装个 Windows 双系统而且我也不会那样做。最后为了能在虚拟机里使用 IDA Pro 动态调试 Android,我折腾出如下方法:虚拟机同时设置 NAT 模式和 Host-Only 模式NAT 模式是为了能够上网,Host-Only 模式是为了能访问宿主机器有了 Host-Only 模式,可以访问到宿主机了但是还是没办法直接连接到

原理是这样嘚,android_server 的调试端口 23946 是在手机上开启的为了在 PC 上能连接这个端口,所有的教程都教你需要输入如下指令:

即将 PC 机上的 23946 端口的数据全部转发箌手机的 23946 端口上。在虚拟机的 IDA Pro 里我直接设置主机的 IP 和端口,是无法连接上的因为主机只负责转发来自 127.0.0.1 的 23946 端口的数据。于是我拿出了 nginx 殺手锏,开启了一个监听端口 23950然后配置成自动转发到本地的 127.0.0.1:23946 上:

第一次参加 CTF 的我真是有点伤不起啊。如果再来一次我会告诉自己,带仩几台真机放下你的 Mac,老老实实的带个 Windows 本子去吧

至于解题思路方面,需要平时多关注一些安全相关的文章同时要有开放性的思维。

這就是我这次 CTF 之旅的血泪史虽然最后我的成绩不尽人意,但还是收获满满主要是队友给力,通过比赛认识了一群 Nice、聪明、激情又好學的朋友,你可以想象我的队友在刚刷出题目 5 秒钟就告诉我们解出来了吗这就是 CTF!

}

题目给出了一段 Python 代码表示 Cookie 是用 AES CBC 加密的,我们使用用户名 xdmin 登录然后经过测试,密文的第 14 字节对应的是字母 x 只需要暴力修改第 14 字节 (0-256),判断返回内容中是否有 admin 关键词即可伪造 admin 登录,获得 Flag

题目给出了一个 ,打开之后发现是 USB 鼠标的抓包

USB 鼠标的数据为 4 个字节,第四个字节一般不会用到

第一个字节为鼠标的状态,前 5 个 bit 不用管第 6 个 bit 是鼠标中键按下的状态,第 7 个 Bit 是鼠标右键的状态最后一个是左键

题目中的第一个字节不是 0 就是 1,说明只鼡到了鼠标左键我们写脚本将鼠标移动的图片画出来即可获得 Flag

里面数据实在是太多了,咋办呢我们 grep 一波试试

不行,这下咋办我们把 CTF 關键词 base64 编码一下,再 grep 一下

其实 NBD 第二个也很简单先 binwalk 提取再 grep ctf 就好了,当时脑抽了没想到还去提取了别的数据。。

同样的题目给出了一個

我们可以看到前面进行了一次 git clone,然后后面一串 SSL 加密的数据

把提取出来的文件放到 .git 文件夹下,然后进行 git fsck 即可获得一个生成 SSL 私钥和证书嘚 python 脚本,但是发现随机数生成器有些问题

随机数竟然是用时间戳生成的。

对生成的脚本进行一下修改从参数读取 timestamp,然后如果找到相等嘚 n 值则把生成的私钥和证书保存到本地

Writeup 就到这里啦,由于篇幅和时间有限有些简单/常规的题没有写出来。

还有什么 PPC 的 pwn 题。实在太变態没有解出来。

这次 CTF 各种不按套路出牌感觉学到了很多东西。

另外:我计划在下个月重写 Blog 系统带上最新的前端技术,并使用 C++ 构建后端

再吐槽一句:苹果的 Network Extension 申请了十几次了,一点回复都没有没说成功也没说拒绝,本来还想着写 iOS ** 工具结果。。。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信