第1页
Wins0n
CTF Binary小技巧
2015-01-10
第2页
关于我
一
微博:@HiWinson
博客:http://www.programlife.net/
Wins0n
Light4Freedom战队成员
业余CTF选手
关注二进制相关内容
逆向、编程、算法样样精通
号称蓝莲花最怕选手
第3页
赛前准备
二
工欲善其事,必先利其器
常用的工具有:
Windbg / OllyDbg / Immunity Debugger / PEiD
IDA Pro / Hex-Rays Decompiler / ARM / x64 ……
ILSpy
Metasploit
Python
Putty / WinSCP / nc
C32Asm / 010Editor
SysinternalsSuite / PCHunter
ApkTool /JD-GUI/dex2jar…
第4页
赛前准备
二
提前准备好虚拟机镜像
出于安全性考虑,不要在物理机上运行题目所给的程序;
HDUSEC 2013 关机
HCTF 2014 蓝屏
64位的ELF经常出现于RE和PWN(Linux x64);
64位的PE文件偶尔也会出现(Mdebug / Windbg)(Windows x64) ;
给虚拟机打个快照,可以快速恢复调试状态;
第5页
案例分析
二
加了VMP的x64驱动
在HCTF线下赛中,有一个题目所给的驱动是x64的,而且还加了VMP,想要进行调试需要配置Windbg和VMWare,最好还能事先下载好符号文件!
实际情况是,Windbg无论如何都连不上VMWare……
解决方法:在虚拟机加载驱动文件后,使用PCHunter把驱动Dump出来,然后拖入IDA分析,在字符串中看到Flag明文。
第6页
案例分析
二
带“隐写”的逆向题
在逆向分析时,偶尔会遇到一些有“隐写”有关的题目,包括对常见文件类型的识别等。
在HDUSEC 2013中,在分析一个逆向题时提取出一段二进制内容,文件开头内容为RIFF WAVEfmt,实际上是一个wav音频文件,而且声音经过了反转处理。
第7页
案例分析
二
带“隐写”的逆向题
在逆向分析时,偶尔会遇到一些有“隐写”有关的题目,包括对常见文件类型的识别等。
在HDUSEC 2013中,出现过许多抹去了文件头的情况,PNG / BMP / RAR。
对于完整文件的格式识别,推荐使用TrID工具
http://mark0.net/soft-trid-e.html
第8页
案例分析
二
解压缩工具妙用
有些可执行程序附加了一些资源,如果要通过调试分析来进行提取可能十分麻烦,在某些情况下,使用7zip/WinRar等工具可以进行快速提取。
在ISCC 2013中,一个CrackMe实际上是个自解压文件,直接用WinRar处理就好了。
第9页
案例分析
二
解压缩工具妙用
有些可执行程序附加了一些资源,如果要通过调试分析来进行提取可能十分麻烦,在某些情况下,使用7zip/WinRar等工具可以进行快速提取。
在SSCTF中,使用7zip可以快速提取出EXE文件里的有用信息。
第10页
案例分析
二
借助现有工具加速分析
对于加壳、加密等各种措施进行保护的程序,可以尝试利用已有的工具加速分析过程。
在0ops CTF中,有一个逆向分析题给了一个Inno Setup的安装包,但是需要密码才能进行下一步安装操作,网上找了一个InnoExtractor工具,可以直接提取安装包内的文件。
第11页
案例分析
二
事先准备好提交脚本
有时候无法通过逆向分析得到完整的Flag,因此可以尝试通过脚本来批量提交(如果不需要验证码的话)。
在HCTF线下赛中,某逆向分析题通过分析无法得到完整的flag字符串,如hctf{jQuery1102011214318289576952_1448413347878a_y*c7%etk!},其中问号代表一个数字,所以这里有100种可能,因此可以使用脚本提交Flag,当然也可以使用BurpSuite。
Flag提交脚本在攻防模式解题时是必备工具。
第12页
案例分析
二
关于流量重放
在攻防模式的比赛中,定时抓取和分析对手的攻击流量是必要的,从对手的攻击流量中或许就能提取出exploit。
注意:不要在物理机重放流量,否则可能被rm -rf /
第13页
案例分析
二
PEiD不止能查壳
识别程序内部所使用的加密算法,可以在一定程度加快我们的分析效率。
PEiD附带的Krypto ANALyzer可以快速识别成熟的密码算法。
第14页
案例分析
二
.NET程序分析
对于简单的.NET程序,可以直接使用ILSpy工具进行分析,在ILSpy中可以看到反编译的源码。
HCTF资格赛送分题:
第15页
案例分析
二
IDA设置FLIRT Signature
有时候IDA无法正确应用FLIRT Signature,比如一个Delphi编译的程序,如果没有被正确识别,那么很多库函数都无法自动识别。
设置方式:File -> Load File -> FLIRT signature file
第16页
案例分析
二
逆向与编程
除了逆向分析之外,动手写代码也是必须具备的技能。
AliCTF RE400:给定一个编译好的Gh0st,分析出其中的隐藏功能,完成从主控端下载一个文件。
思路:下载Gh0st源代码,配合给定的二进制程序进行逆向对比分析,找到隐藏的文件下载协议,给服务端添加下载功能完成文件下载。
第17页
其他技能
二
可以了解的东西
IDA脚本(花指令处理);
OD脚本(脱壳处理);
易语言;
……
PWN学习(https://exploit-exercises.com/)
CTF Writeups(https://github.com/ctfs/write-ups)
CTF Time(https://ctftime.org/)
……
第18页
如何混入赛棍圈子
三
加入一个合理的团队,团队成员全面覆盖Web / Bin / Misc / Crypto等知识点。
多和身边的小伙伴交流
第19页
我的参赛经历
三
ISCC 2011
ISCC 2013
XDSEC 2013
HDUSEC 2013
BCTF 2014
起步入门,第一次参加安全技术类比赛;
ISCC特点:
1. 考察范围广;
2. 内容比较基础;
3. 比赛时间长,新手也有充分的学习时间;
4. 决赛随机组队,可以认识各种牛逼选手;
第20页
我的参赛经历
三
ISCC 2011
ISCC 2013
XDSEC 2013
HDUSEC 2013
BCTF 2014
认识新的小伙伴,在比赛中认识了Puzzor、菊花等,从这里开始接触到各种早期赛棍,为后来混入赛棍圈子奠定基础。
第21页
我的参赛经历
三
ISCC 2011
ISCC 2013
XDSEC 2013
HDUSEC 2013
BCTF 2014
两三个人一起玩比赛,有时间就玩,找人一起去线下赛打酱油。
第22页
我的参赛经历
三
ISCC 2011
ISCC 2013
XDSEC 2013
HDUSEC 2013
BCTF 2014
加入Light4Freedom战队,认识了更多的小伙伴,参加ACTF、0opsCTF等作为练习赛。
有了固定的团队,不定期参加国内各种比赛,成功混入赛棍圈子。
AliCTF/XCTF
……
第23页
谢谢观看