07.04 Google CTF安勝首秀!逆向工程writeup看這裡!

CTF(Capture The Flag)中文一般譯作奪旗賽,在網絡安全領域中指的是網絡安全技術人員之間進行技術競技的一種比賽形式。CTF的大致流程是:參賽團隊之間通過進行攻防對抗、程序分析等形式,率先從主辦方給出的比賽環境中得到一串具有一定格式的字符串或其他內容,並將其提交給主辦方,從而奪得分數。

Google CTF 2018是由Google舉辦的全球性比賽,全球有2000多支隊伍參賽,歷時2天,最後只有220支隊伍上榜。

安勝ISEC團隊首次參加Google CTF 大賽,雖在總分榜55名,還有待提升,但可喜的是,安勝在逆向工程解題部分以優異成績領先同行,充分彰顯安勝在逆向工程領域的國際水平!

Google CTF安勝首秀!逆向工程writeup看這裡!

逆向工程解題榜(紅框內為安勝解題情況)

Reverse即逆向工程,題目涉及到軟件逆向、破解技術等,要求有較強的反彙編、反編譯紮實功底,主要考查參賽選手的逆向分析能力。安勝ISEC團隊在逆向工程解題中奪得佳績,這究竟是怎麼做到的呢?別急,我們的參賽小哥哥已為大家整理出了writeup解題思路!

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

題一:SHALL WE PLAY A GAME?

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

題目給出的是一個apk文件。

根據題目信息, 可以看出this.m()就是顯示flag,

Google CTF安勝首秀!逆向工程writeup看這裡!

N._是native函數(見library.so), 其功能是根據提供的參數調用指定的類的指定方法,其參數格式為

Google CTF安勝首秀!逆向工程writeup看這裡!

將相關調用提取出來可以得到整體邏輯

Google CTF安勝首秀!逆向工程writeup看這裡!

題二:KEYGENME

I bet you can't reverse this algorithm!

題目給出的是一個elf文件。

異或解密0x6001BC處大小為0x44A8的代碼

Google CTF安勝首秀!逆向工程writeup看這裡!

PTRACE_DETACH

Google CTF安勝首秀!逆向工程writeup看這裡!

fork進程,

子進程負責讀取name(長度為5),sn(長度為32), vm中解密elf(記為embedded)到memfd並執行(argv[0]=name,argv[1]=sn,envp=NULL)

父進程負責處理子進程的int3異常, vm中讀取patch代碼並寫入子進程

Google CTF安勝首秀!逆向工程writeup看這裡!

此處可dump寫入memfd中的elf

Google CTF安勝首秀!逆向工程writeup看這裡!

此處開始是patch數據, 以code_offset為0結尾

Google CTF安勝首秀!逆向工程writeup看這裡!

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

其中影響md4結果的變量有: umask(0), getenv("PWD")

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

Google CTF安勝首秀!逆向工程writeup看這裡!

子進程中umask(0)=0xFFFFFFFF

Google CTF安勝首秀!逆向工程writeup看這裡!

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

Google CTF安勝首秀!逆向工程writeup看這裡!

題三 :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. 中轉)

Google CTF安勝首秀!逆向工程writeup看這裡!

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

Google CTF安勝首秀!逆向工程writeup看這裡!

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

Google CTF安勝首秀!逆向工程writeup看這裡!

連接服務器

Google CTF安勝首秀!逆向工程writeup看這裡!

發送"hello", 接收指令, 根據指令執行對應的功能

Google CTF安勝首秀!逆向工程writeup看這裡!

收發數據, 數據包格式為

Google CTF安勝首秀!逆向工程writeup看這裡!

指令列表

Google CTF安勝首秀!逆向工程writeup看這裡!

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

Google CTF安勝首秀!逆向工程writeup看這裡!

根據格式發送命令"part1 flag"即可獲取flag

以上writeup,你get到了嗎?歡迎大家留言,一起交流!期待下一次的Google CTF,在此預祝我們的ISEC團隊再攀高峰!

Google CTF安勝首秀!逆向工程writeup看這裡!


分享到:


相關文章: