一、CTF之逆向
写这篇文章,主要是解决自己当初不知道怎么入门的困惑,算是替曾经的自己写的吧,博主也还在入门,请路过的佬勿喷。
CTF主要分为五个方向,Web、pwn、crypto、misc和reverse(逆向)
CTF竞赛中的逆向:
涉及 Windows、Linux、Android 平台的多种编程技术,要求利用常用工具对源代码及二进制文件进行逆向分析,掌握 Android 移动应用 APK 文件的逆向分析,掌握加解密、内核编程、算法、反调试和代码混淆技术。 ------ 《全国大学生信息安全竞赛参赛指南》
这里主要还是windows平台的逆向入门
二、基础
1.语言基础
逆向首先要学好的应该是汇编语言,入门推荐的是王爽的汇编语言。
C语言推荐《C primer plus》书有点厚,但是不难理解,作为入门的语言学习资料,很不错。
python也要学点,这里就不推荐书了,因为博主也没有系统学过hh。
win32编程,我个人认为做题的时候用到的时候再查就好,多积累,也可以看看《windows程序设计》不过真的很厚。
2.简单加密算法
CTF中的逆向题目,经常是看反编译后的伪代码,分析代码逻辑和加密算法进而求解出flag。所以这里入门我们需要了解一些简单的加密算法,如RC4,TEA,和base系列编码。
这里推荐一篇文章https://www.cnblogs.com/ruoli-s/p/14206145.html
3.主要工具介绍
动态调试:ollydbg,Xdbg
ollydbg,简称OD已经蛮久没有更新了,而且OD主要支持32位的PE文件调试和分析;所以这里我比较推荐使用Xdbg,Xdbg经常更新,还有自动中文汉化。
下载地址:x64dbg
顺便讲下简单使用:
随便拖入一个可执行文件,这可以看到四个窗口;
左上角的反汇编窗口,这里显示是我们要分析的程序的反汇编代码:
截取一行讲解00007FFA5A3C076A | 55 | push rbp | 看这里!!!
最右侧的00007FFA5A3C076A是内存地址,55是操作码,push rbp是汇编语言,最左侧是调试器或者我们添加的一些注释。
右上角的寄存器窗口显示调试程序的寄存器信息。
左下角的数据窗口:这里是内存地址的内容。最左边是内存地址,接着是对应地址的十六进制数据,最右侧是十六进制对应的ASCII码。
右下角是堆栈窗口,显示的是堆栈信息。
还有一些基本的指令操作:
F2 设置断点
F7 单步步入(遇到call会进入call调用的函数内部)
F8 单步步过(遇到call直接跳过)
F9 运行程序
F12 暂停程序
Ctrl+F2 重新调试程序(断点还在)
Ctrl+G 可以快速定位地址
静态调试:IDA
IDA是yyds,可以将程序反编译成伪代码,在调试分析的时候很方便。
IDA的基本指令和Xdbg的类似,一般使用IDA的基本流程就是,将待分析文件拖入IDA32或IDA64中,按f5进行反编译后分析伪代码。
简单看下,拖入一个可执行文件
这个是程序的流程图,入门题目逻辑还很清晰,按一下f5,
左边一栏的函数列表。右边是经过反编译的main函数。按一下tap回到流程图再按一下空格就可以查看汇编代码的窗口了。
关于IDA更详细的使用,可以自行查阅其他文章,也可以看《IDA权威指南》。不过我更加推荐上刷题网站,找一些入门题或是新生赛的题目练习,不会写没关系看看wp,当例题来完成。
PE文件分析工具
我比较喜欢用exeinfope,下载地址http://www.exeinfo.byethost18.com/?i=1
使用方法是,拖入待分析文件就好,可以查看文件位数或是否有壳。
pe工具蛮多的,都可以用。
十六进制编辑工具
Winhex和010editor 都很好用。
可以用于修复PE文件,或是一些魔改upx壳的修复。不过,嗯应该有点超纲,不着急,后面再看。
三、进阶一点
代码混淆
这里不做细讲:提一点知道有这个知识点就好。
代码混淆常见的是花指令和SMC,花指令就是在代码中插入一些垃圾数据,或是构造一些跳转语句来干扰静态调试。SMC是自修改代码,通过修改内存地址,使程序无法静态分析,但是在程序运行时会进行自解密,也就是我们调试的方法就是通过动态调试 调试到修改后的代码处,然后再dump’出来就好。
除了花指令和SMC 还有ollvm。ollvm里面主要有三个功能,待解锁。
脱壳
初学时遇到的upx壳一般都比较简单,可以通过upx工具直接脱壳。再难一点点的魔改upx壳,推荐一篇文章:https://www.52pojie.cn/thread-326995-1-1.html
至于手动脱壳,也是后面再学啦。
四、其他以及刷题平台推荐
其他诸如C++逆向,C++异常处理机制,python库的使用(Z3约束求解,Angr符号执行),VM虚拟机逆向,Go语言逆向,Rust逆向,Wasm逆向,python字节码逆向的内容留待以后再解锁了。
刷题平台 buuctf,nssctf,攻防世界
我个人比较推荐nssctf,因为题目比较新,持续都有更新题目,而且它上面有很多新生赛的题目,绝对适合新手入门。讲讲我个人建议的入门方式,我上面说了那么多基础的知识点,可以先去百度谷歌相关知识点的学习,比如RC4,学完后,再去nssctf上找含有rc4标签的入门题
这也是我推荐nssctf的原因之一,nssctf上面有题目的知识点标签。
除了刷题平台,还有俩个我比较喜欢逛的:
52pojie和看雪论坛。推荐多看看。
学习资源
如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你
知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。
1、知识库价值
深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。
广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。
实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。
2、 部分核心内容展示
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。
内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。
1、网络安全意识
2、Linux操作系统
3、WEB架构基础与HTTP协议
4、Web渗透测试
5、渗透测试案例分享
6、渗透测试实战技巧
7、攻防对战实战
8、CTF之MISC实战讲解
3、适合学习的人群
一、基础适配人群
- 零基础转型者:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链;
- 开发/运维人员:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展或者转行就业;
- 应届毕业生:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期;
二、能力提升适配
1、技术爱好者:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者;
2、安全从业者:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力;
3、合规需求者:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员;
因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】
🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源