# Malware On Steroids 恶意软件教程
Malware On Steroids 是第一门致力于构建您自己的 C2 基础设施和有效负载的课程。有很多课程专注于利用、逆向和其他攻击性内容,但没有一个课程专注于如何构建自己的命令与控制基础设施。本课程重点介绍 Windows 内部结构,然后是有关使用不同类型的初始访问有效负载构建命令与控制体系结构的完整实践课程。
在课程中,您将学习恶意软件生命周期的核心基础知识,例如初始访问、内存中规避、不同类型的有效负载注入(包括但不限于反射 DLL、shellcode 注入、COFF 注入等)。您将学习构建在不同协议上运行的不同类型的远程访问工具,稍后我们将其转换为可以注入到任何进程的内存中模块。我们还将在 x64 Assembly、C 和不同的 LOLbin 中编写 dropper 和 stagers,它们将连接回我们的 CnC 以提取第二阶段并将其加载到内存中以供执行。
# 先决条件
该课程实用性很强,涉及大量 C/C++ 和 Python3 编程、windbg/x64dbg 逆向工程。在学习课程之前,充分掌握以下基础知识非常重要。
- 对操作系统架构的基本了解
- 使用 C/C++/Python3 进行编程的基础知识
- 熟悉编程概念(指针、引用、地址、数据结构、线程、进程)
- 强烈的学习意愿和创造性思维。
# 系统要求
在课程中,我们将使用不同的虚拟机,其中涉及克隆、创建和快照以及其他一些实践练习。正确配置的系统对于充分利用培训课程的优势极其重要。我们强烈要求您拥有完全配置的系统,以满足课程的以下要求。下面提到的所有要求都是免费提供或开源的。
-
Windows 10(虚拟机)
-
一台至少有 16GB RAM 的笔记本电脑,支持 2 个虚拟机同时运行。
-
已安装 VMware/VirtualBox
-
良好的互联网连接
-
安装了 C/C++/C# 包的 Visual Studio
-
您选择的可视化代码 / 编辑器
-
x64dbg
-
CFF Explorer
Sysinternals Tookit
Process Hacker
MS Office (Trial version is enough)
-
-
Kali Linux/Ubuntu 20.04(虚拟机)
- VS Code
- Mingw-w64
- Python3
- Nasm
- Wireshark
课程大纲
第一天
- 课程概览
- 开发虚拟机设置
- 命令与控制架构
- 恶意软件生命周期
- 有效载荷处理和阶段架构
- Windows 内部结构
- Windows 操作系统架构
- 进程和线程内部结构
- 使用 Windbg 调试
进程环境块
线程环境块
Windows 加载器结构
WinDbg 简介和速成课程 - Windows 内存保护
- Windows 系统编程
- Windows 访问安全令牌
从令牌枚举特权
特殊令牌权限 - PE 和 DLL 结构
- COFF 头
- Stephen Fewer 的反射式 DLL 限制
- 从零开始构建反射式 DLL 加载器
- 为反射式 DLL 注入创建自定义注入器
从零开始 - 修改反射式 DLL 的 PE 部分和内存
分配以避免 EDR 检测 - 利用 DLL/PE 映像欺骗隐藏内存分配
- 利用指令指针欺骗隐藏线程创建
第二天
- Windows Socket 编程
- 用 C 语言反向外壳
- 用 C 语言绑定外壳
- 使用匿名管道重定向缓冲区
- 命名管道横向移动
- SpyC2 - 用 python3、C 和 x64 Shellcode 构建您自己的 CnC
- 为您的 C2 添加功能
- 构建持久的同步 TCP C2
- 使用 HTTP 回调构建异步 C2
- 构建具有代理意识的有效载荷
- 规避网络检测和响应 CnC 工具
- C2 身份验证
- 通信加密
- 睡眠与抖动
- C2 循环
- URI 处理
- SMB 旋转
- 有效载荷日志
- CnC 服务器的欺骗前端
- 为动态命令执行编写函数指针数组
在您的 C2 有效载荷中 - 恶意软件函数
- 枚举进程
- 内存转储技术
■ MiniDumpWriteDump
PssCreateSnapshot - 权限枚举
- 主机枚举
- 为命令与控制构建可插拔模块
服务器 - 为您的命令与控制服务器构建可插拔模块
- 在有效载荷中构建反射功能,以加载现有的
反射 DLL 作为模块。 - 进程注入
- 反射 DLL 注入
- 外壳代码注入
- 远程线程
- 内存文件和段映射
- 异步过程调用
- 注入规避策略
- 隐藏内存假象
第 3 天
- X64 外壳编码
- X64 英特尔汇编介绍
- 行走 PEB 和猎取 kernel32.dll
- C 语言中的位置无关代码
- 从 PIC 中提取 Shellcode
- 内存对象文件执行
- 编写零级 x64 Shell 代码和 HTTP 阶段服务器
服务初始访问有效载荷 - 为初始立足点编写 Excel 4 宏
- 投放器和分级器
- 使用 LOLBins 初始化访问
- MS Build、MWC 执行
- 用比特翻转签名可执行文件来规避通用 EDR
检测 - 使用系统调用解钩和修补内存中的 EDR 指令
以规避检测 - 沙盒规避和反调试技术
- 代码混淆
- 动态库调用
- 混淆 shellcode 和 DLL 调用
- 使用 RC4 加密技术加密有效载荷
- AMSI 规避
- 命名管道执行
- 用 C 语言创建自己的 PS Exec
- OPSEC 注意事项