freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Google CTF安胜首秀!逆向工程writeup看这里!
2018-07-05 09:24:40

CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF的大致流程是:参赛团队之间通过进行攻防对抗、程序分析等形式,率先从主办方给出的比赛环境中得到一串具有一定格式的字符串或其他内容,并将其提交给主办方,从而夺得分数。

Google CTF 2018是由Google举办的全球性比赛,全球有2000多支队伍参赛,历时2天,最后只有220支队伍上榜。

我司ISEC团队首次参加Google CTF 大赛,虽在总分榜上的名次还有待提升,但可喜的是,我司在逆向工程解题部分以优异成绩领先同行,充分彰显我司在逆向工程领域的国际水平!

0.jpg

逆向工程解题榜(红框内为我司解题情况)

Reverse即逆向工程,题目涉及到软件逆向、破解技术等,要求有较强的反汇编、反编译扎实功底,主要考查参赛选手的逆向分析能力。我司ISEC团队在逆向工程解题中夺得佳绩,这究竟是怎么做到的呢?别急,我们的参赛小哥哥已为大家整理出了writeup解题思路!

解题攻略!逆向工程writeup分享

题一

SHALL WE PLAY A GAME?

Win the game 1,000,000 times to get the flag.

题目给出的是一个apk文件。

根据题目信息, 可以看出this.m()就是显示flag, 

image.png

N._是native函数(见library.so), 其功能是根据提供的参数调用指定的类的指定方法,

其参数格式为


image.png

将相关调用提取出来可以得到整体逻辑

image.png


题二

KEYGENME

I bet you can't reverse this algorithm!

题目给出的是一个elf文件。

异或解密0x6001BC处大小为0x44A8的代码

image.png

PTRACE_DETACH

image.png

fork进程,

子进程负责读取name(长度为5),sn(长度为32), vm中解密elf(记为embedded)到memfd并执行(argv[0]=name,argv[1]=sn,envp=NULL)

父进程负责处理子进程的int3异常, vm中读取patch代码并写入子进程

image.png

此处可dump写入memfd中的elf

image.png

此处开始是patch数据, 以code_offset为0结尾

image.png

embedded功能, 判断md4(name) == simple_transform(sn)

其中影响md4结果的变量有: umask(0), getenv("PWD")

md4的初始化常量: (0x5a827999^umask(0)), (0x6ed9eba1^umask(0))

image.png

子进程中umask(0)=0xFFFFFFFF

image.png


子进程中getenv("PWD")=NULL

image.png

题三

 APT42 - PART 1

We have detected weird traffic on our network and we cannot figure out the source. 

Forensics didn't find anything besides maybe the NTP service binaries which have been modified recently on some hosts. 

We ran them through the sandboxes and they seem to work as intended, can you do a quick manual pass?

题目给出的是一个elf文件。

x_fake_sleep(主要两个功能, 1. 命令执行, 2. 中转)

image.png

检测/etc/krb5.conf中是否包含字符串domain.google.com

image.png

解密服务器地址, mlwr-part1.ctfcompetition.com:4242

image.png

连接服务器


image.png

发送"hello", 接收指令, 根据指令执行对应的功能

image.png

收发数据, 数据包格式为

image.png

指令列表

image.png

中转, 可接受的指令有"hello", "part1 flag"

image.png

根据格式发送命令"part1 flag"即可获取flag

以上writeup,你get到了吗?

欢迎大家留言,一起交流!

期待下一次的Google CTF,

在此预祝我们的ISEC团队再攀高峰!


本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者