Skip to content

专题简介

🚶一个人可以走得很快,一群人却能走得更远🤜🤛!争取做全网最好的网络安全训练营,最温暖、狂热的网安学习社区『imbyter代码酷』

shellcode在安全领域是一个比较基础的概念,它本质上就是一段代码,是溢出程序和蠕虫病毒的核心。漏洞利用中最关键的是Shellcode的编写,由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握Shellcode编写技术就显得尤为重要。

现阶段,shellcode编写门槛高,大多需要有较深的汇编功底,而Metersploit上的shellcode开源生成框架,功能单一,扩展性并不太好,只适应部分场景,难以在实战中发挥更大的作用。

本专题的内容是我结合自己多年的shellcode开发经验,编写的适应于Windows系统下的shellcode编写方法,使用了很多年,相对灵活,并且效果比较好。过程中使用的工具为Visual Studio 2022,结合x64dbg、DIE、WinHex等工具进行调试,从浅入深,最终实现Windows平台下自己的shellcode生成器,能在红蓝对抗中根据实际需求,自动生成符合自己需要的shellcode。

课程评价

本专题所讲的shellcode内容是基于Windows操作系统平台的,Linux平台下也有相关的shellcode知识,原理相通但具体编写操作不同。

专题基于第一版内容的更新迭代,专题课程制作总耗时前前后后大概4个月时间。 老版内容在Freebuf和51CTO均有发布。

老版课程的一些评价:

图片

新版更新

新版专题在老版的基础上做了很多优化和更新,包括并不限于:

  • 更加全面的补充了shellcode编写的原则性规范
  • 增加了对64位shellcode编写的讲解
  • 增加了shellcode在红蓝对抗实战中的使用部分
  • 增加了开源shellcode工具的讲解
  • 提供了文字版课程对照
  • 提供了课程中所有用到的源代码
  • 其他更新

通过对新版专题的学习,可以从零到一的了解shellcode的概念和作用,独立自主的开发自己的shellcode功能。

专题中穿插了很多实测案例,提供全部源代码,专题学完后可以举一反三,解决自己在安防对抗中遇到的问题,同时可以将shellcode融入到自己的项目开发或者项目需求中。

专题大纲

章节标题备注
1什么是shellcodeshellcode是什么,shellcode与PE文件的区别,shellcode特点:独立存在,内存运行,精简轻便,灵活多变。
2shellcode项目属性规范开发平台选择,工程类型选择,入口点修改,缓冲区安全检查,系统兼容性,运行库,生成清单,调试信息。
3原则:避免使用绝对地址什么是绝对地址,为什么要避免绝对地址的使用,什么情况下会发生绝对地址的使用,如何避免绝对地址的使用。
4原则:函数的动态调用什么是函数的动态调用,为什么要动态调用函数,如何实现函数的动态调用,GetProcAddress函数使用,如何确定函数所在动态链接库。
5原则:Kernel32基址的获取什么是Kernel32基址,如何获取Kernel32基址,__declspec(naked)的作用,PEB结构,实测各模块在内存中顺序,x64的优化与改进,最终实现代码。
6原则:GetProcAddress的实现GetProcAddress的实现代码,代码实现的基本原理,效果测试。
7原则:避免全局变量的使用验证为什么不能使用全局变量,变量使用注意事项。
8原则:确保所需动态库被加载为什么要确保所需的动态链接库被加载到内存,LoadLibrary,代码实现。
9第一种shellcode编写实战编译链接属性设置,获取kernel32基址,实现GetProcAddress,最终实现代码,测试执行效果。
10单文件函数生成位置规律函数的声明与定义,函数位置的关系,函数间距的计算,第一种shellcode编写的优化。
11多文件函数生成位置规律文件名顺序规律,文件编译日志,.vcxproj文件的定义。
12第二种shellcode编写实战(1)C语言方式编写shellcode,C++类方式编写shellcode。
13第二种shellcode编写实战(2)增加CDoShellcode类实现功能,增加CAPI类实现函数动态调用。
14第二种shellcode编写实战(3)字符串的处理,开源字符串处理工具的辅助使用。
15什么编写shellcode加载器是shellcodeshellcode加载时的实现逻辑,实现源码,效果演示。
16实战:PE文件转shellcode生成shellcode时PE的封装,运行shellcode时PE的定位,运行shellcode时PE的执行,项目属性注意事项,实现源码。
17实战:shellcode进程注入shellcode进程注入实现逻辑,实现代码,效果测试,注意事项。
18开源shellcode工具详解源码的编译,功能介绍,功能场景测试,集成开发,存在问题,代码附件。