学习系统安全,二进制安全其实涵盖很多内容。参考任意一本成体系化的书籍就可以学到基础骨架,后续延申细节点只能靠个人的耐心继续夯实基础。小时候看过一本跟程序员相关的书,想要做一件神秘而伟大的事。对于被神话的「黑客」充满着向往。最开始就想徒手挖掘系统漏洞,毕业后没有真正的做成一个漏洞挖掘工程师,倒是发现一个二进制安全分支路线「恶意代码分析」。学习路线是C语言、C++、Windows文件、注册表操作、核心编程、网络编程、WindowsPE、汇编语言、逆向、android开发、android逆向。
二进制安全岗位在信息安全就业市场占比较小,大量的岗位还是留给了Web安全、移动安全方向。坚持学习这个技术领域需要对二进制安全十分感兴趣,同时也能静得下心来钻研技术。因为想研究透彻需要投入大量的时间和精力。
二进制安全可以有以下的方向:
- 病毒分析、漏洞分析
- 漏洞挖掘、漏洞利用
- 参与二进制层面的安全评估
这个方向的安全工作含有漏洞挖掘、维护漏洞库规则、恶意代码检测、维护杀软规则库。移动安全、物联网、游戏安全等新兴领域的安全研究底层都会跟二进制挂钩。漏洞挖掘、漏洞利用通常是攻击者作为武器攻击目标的技能,互联网企业也会出于对业务防护的考虑主动给自家业务线产品挖漏洞、对病毒做分析,在攻击者利用漏洞攻击和病毒扩散影响范围前,把可能会影响业务的威胁解决掉。样本分析在乙方类安全公司需求多些,因为可以给产品赋能,比如给NIDS、HIDS、沙箱、蜜罐增加恶意代码、漏洞匹配规则。
- NIDS:网络入侵检测系统(network intrusion detection system,NIDS),是指对收集漏洞信息、造成拒绝访问及获取超出合法范围的系统控制权等危害计算机系统安全的行为,进行检测的软件与硬件的组合。
- HIDS:HIDS全称是Host-based Intrusion Detection System,即基于主机型入侵检测系统。作为计算机系统的监视器和分析器,监视系统全部或部分的动态行为。
- 沙箱:沙箱是一种按照安全策略限制程序行为的虚拟执行环境。主要用于可疑软件的网络行为、文件释放行为、恶意样本特征检测。
- 蜜罐:一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击后,蜜罐可以对攻击方发起的攻击行为进行捕获和分析。从而了解攻击方所使用的工具与方法,根据行为推测攻击方意图和动机,能够让防御方清晰地了解攻击方产生的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力。
1.初级免杀基础理论(反病毒软件特征码提取介绍、免杀原理、壳)
2.免杀与特征码、其他免杀技术、PE进阶介绍
3.花指令在免杀中的应用
4.壳在免杀中的应用
5.PE格式讲解
6.PE文件知识在免杀中的应用
7.x86反汇编速成
8.堆栈图-汇编中的函数
9.寄存器、栈的存储方式、反汇编指令、跳转
10.反汇编-函数调用约定、Main函数查找
11.VS程序反汇编用OD找main函数
12.反汇编-if-else,三目运算符
13.反汇编-循环语句do-while、while、for
14.动态调试技巧补充-循环
15.反汇编-switch-case分支
16.加法与减法、乘法与除法优化原理
17.指针与数组
18.面向对象逆向-类、构造函数、析构函数
19.面向对象逆向-虚函数、MFC逆向
20.C++代码逆向
21.源码免杀、C++壳的编写
22.裸函数(Naked函数)
23.PE文件头中的重定位表
24.PE手动查询导出表、相对虚拟地址(RVA)与文件偏移地址转换(FOA)
25.脱壳技术
26.Rootkit基础
27.Anti Rootkit
28.恶意代码数字签名验证
29.单机游戏去启动广告
30.控制台逆向分析 Reverse004.exe 获取密码
31.逆向工具101editor编辑游戏快速通关
Windows编程学习
0.shellcode编写
1.网络编程基础-TCP、UDP编程
2.网络编程基础-发送ICMP包(Ping程序)
3.网络编程基础-arp请求(局域网主机扫描)
4.ARP响应(ARP欺骗之中间人攻击)
5.远程线程DLL注入
6.注入DLL时BUG排除与调试
7.系统消息与自定义钩子(Hook)使用
8.开机自启动- ActiveX启动
9.检查进程是否存在 - CreateToolhelp32Snapshot
10.API函数创建用户,添加到管理组
11.文件操作编程基础-CreateFile、WriteFile、SetFilePointer
12.注册表编程基础-RegCreateKeyEx、RegSetValueEx
13.直接读取修改exe文件
14.MFC将二进制文件导入资源后释放
15.遍历进程的几种方式
16.无导入表编译原理
17.IPC$横向渗透代码实现
18.配置器编写-读取修改exe文件
18.反调试-除0异常-编程与逆向
19.渗透测试MySQL扩展UDF后门原理与代码编写
Android
恶意代码分析学习
1.一份通过IPC$和lpk.dll感染方式的病毒分析报告
2.调试脚本病毒
3.恶意PDF文档分析记录
4.Virut.ce-感染型病毒分析报告
5.用命令行与Python使用YARA规则
6.脚本病毒分析扫描专题1-VBA代码阅读扫盲、宏病毒分析
7.脚本病毒分析扫描专题2-Powershell代码阅读扫盲
8.Linux XOR.DDoS样本取证特征与清除
9.Wannacry样本取证特征与清除
10.逆向服务器提权开启3389远程连接工具
11.确认EXE什么时候编译的
12.PIMAGE_FILE_HEADER中TimeDateStamp的时间戳与标准时间转换
13.PE资源提取
14.启动一个恶意的DLL
15.PE ASLR
16.分析样本获取来源
17.某APT组织样本混淆技巧解密与实现-compressed压缩转换成base64
逆向工具学习
恶意代码分析-工具收集
开发WinDBG扩展DLL
OD工具使用-逆向TraceMe.exe
使用x64dbg+spy去除WinRAR5.40(64位)广告弹框
IDA使用-VS2015版本debug查找Main函数,加载符号文件
IDA使用-VS2015版本release查找main函数入口,局部变量
IDA使用-全局变量、数组、结构体
IDA使用-(string、图形化与视图的切换、图形化显示反汇编地址、自动注释、标签使用)
IDA使用-签名文件制作
IDA Python安装与使用
IDA判断PE文件是32位还是64位、选项卡介绍
IDA 进制的基础知识、搜索功能的使用
IDA 寄存器知识