31、函数调用序列欺骗
摘要1. 课程目标 学习通过伪造函数调用栈来欺骗安全软件的行为检测。 2. 技术原理 安全软件通过监控调用栈来判断API调用是否可疑: 3. 实现方法 3.1 伪造返回地址 3.2 间接调用 4. 课后作业 4.1、作业1:分析调用栈(必做) 1. 使用调试器观察正常和异常的调用栈 2. 理解安全软件的检测逻辑 4.2、作业2:间接调用(进阶) 1. 使用回调函数执行敏感操作 2. 观察调用栈变化 5. 下一课预告 下一课我们将学习更多函数序列欺骗技术。
摘要1. 课程目标 学习通过伪造函数调用栈来欺骗安全软件的行为检测。 2. 技术原理 安全软件通过监控调用栈来判断API调用是否可疑: 3. 实现方法 3.1 伪造返回地址 3.2 间接调用 4. 课后作业 4.1、作业1:分析调用栈(必做) 1. 使用调试器观察正常和异常的调用栈 2. 理解安全软件的检测逻辑 4.2、作业2:间接调用(进阶) 1. 使用回调函数执行敏感操作 2. 观察调用栈变化 5. 下一课预告 下一课我们将学习更多函数序列欺骗技术。
摘要1. 课程目标 学习代码混淆技术,增加逆向分析难度。 2. 混淆技术分类 3. 控制流混淆 3.1 控制流平坦化 3.2 虚假控制流 4. 字符串混淆 4.1 编译时加密 4.2 运行时构造 5. 数据混淆 6. 课后作业 6.1、作业1:字符串混淆(必做) 1. 实现字符串加密宏 2. 应用到敏感API名称 6.2、作业2:控制流平坦化(进阶) 1. 手动实现简单的控制流平坦化 2. 用IDA分析效果 7. 下一课预告 下一课我们将学习函数调用序列欺骗技术。
摘要1. 课程目标 学习运行时动态修改代码的技术,用于绕过静态检测。 2. 技术原理 3. 实现代码 3.1 基础动态Patch 3.2 原地Patch 3.3 延迟解密 4. 课后作业 4.1、作业1:基础Patch(必做) 1. 实现函数动态解密执行 2. 验证解密前后代码差异 4.2、作业2:原地Patch(进阶) 1. 实现原地修改.text段代码 2. 处理DEP保护 5. 下一课预告 下一课我们将学习代码混淆技术。
摘要1. 课程目标 学习如何识别和剔除花指令,这是逆向分析的重要技能。 2. 识别花指令 2.1 常见特征 2.2 识别方法 3. 手动剔除 3.1 使用IDA Pro 3.2 使用x64dbg 4. 自动剔除脚本 4.1 IDA Python脚本 4.2 通用识别模式 5. 对抗花指令剔除 5.1 使用有意义的花指令 5.2 交织真实代码 6. 课后作业 6.1、作业1:手动识别(必做) 1. 使用IDA分析一个加花的程序 2. 手动识别出花指令位置 6.2、作业2:脚本剔除(进阶) 1. 编写IDA Python脚本自动识别花指令 2. 测试脚本效果 7. 下一课预告 下一课我们将学习动态Patch函数技术。
摘要1. 课程目标 学习花指令技术,通过插入垃圾代码干扰静态分析和特征匹配。 2. 名词解释 3. 花指令类型 3.1 NOP填充 3.2 等价指令替换 3.3 死代码插入 3.4 不透明谓词 4. 代码实现 4.1 C语言花指令宏 4.2 x64内联汇编 由于MSVC x64不支持内联汇编,需要单独的.asm文件: 4.3 自动花指令插入 5. 高级技术 5.1 跳转花指令 5.2 条件花指令 6. 课后作业 6.1、作业1:手动花指令(必做) 1. 在ShellCode Loader中插入花指令 2. 观察对反汇编的影响 6.2、作业2:自动化(进阶) 1. 编写花指令自动插入工具 2. 随机化花指令内容 7. 下一课预告 下一课我们将学习花指令的剔除技术。
摘要1. 课程目标 学习使用RSA等非对称加密算法加密ShellCode。 2. 非对称加密原理 3. RSA加密实现 3.1 使用CryptoAPI 4. 混合加密方案 由于RSA不适合加密大数据,通常使用混合方案: 5. 课后作业 5.1、作业1:RSA解密Loader(必做) 1. 使用OpenSSL生成RSA密钥对 2. 实现RSA解密Loader 5.2、作业2:混合加密(进阶) 1. 实现RSA+AES混合加密方案 2. 测试完整流程 6. 下一课预告 下一课我们将学习花指令技术。
摘要1. 课程目标 学习多种ShellCode加载执行方式,增加免杀选择。 2. 加载方式汇总 3. 回调函数加载 3.1 EnumWindows回调 3.2 其他回调 4. 线程池回调 5. CertEnumSystemStore回调 6. 课后作业 6.1、作业1:回调测试(必做) 1. 测试3种不同的回调加载方式 2. 比较免杀效果 6.2、作业2:发现新回调(进阶) 1. 研究Windows API找出更多可用回调 2. 实现并测试 7. 下一课预告 下一课我们将学习非对称加密加密ShellCode。
摘要1. 课程目标 学习使用标准加密算法(AES、ChaCha20等)加密ShellCode。 2. AES加密 2.1 使用Windows CryptoAPI 2.2 完整Loader 3. 使用BCrypt API 4. 课后作业 4.1、作业1:AES加密Loader(必做) 1. 使用CryptoAPI实现AES加密解密 2. 测试免杀效果 4.2、作业2:BCrypt API(进阶) 1. 使用BCrypt API实现AES-256-CBC 2. 正确处理IV和填充 5. 下一课预告 下一课我们将学习补充ShellCode加载方式。
摘要1. 课程目标 深入学习XOR和凯撒加密在ShellCode加密中的实际应用。 2. XOR加密详解 2.1 单字节XOR 2.2 多字节XOR 2.3 滚动XOR 3. 凯撒加密详解 3.1 基础凯撒 3.2 变量偏移凯撒 4. 组合加密 4.1 XOR + 凯撒 4.2 多轮加密 5. 完整示例 6. 课后作业 6.1、作业1:基础加密(必做) 1. 使用XOR加密一段ShellCode 2. 编写Loader解密并执行 6.2、作业2:组合加密(必做) 1. 实现XOR+凯撒组合加密 2. 测试免杀效果 6.3、作业3:自定义加密(进阶) 1. 设计自己的加密算法 2. 确保可以正确解密执行 7. 下一课预告 下一课我们将学习使用标准加密算法(AES等)加密ShellCode。
摘要1. 课程目标 学习ShellCode加密的原理和基本实现方法,理解加密在免杀中的作用。 1.1 学习目标 - 理解ShellCode为什么需要加密 - 掌握常见的加密算法原理 - 学会实现加密和解密流程 - 了解密钥管理策略 2. 名词解释 3. 加密原理 3.1 为什么要加密ShellCode 3.2 加密执行流程 4. 常见加密方法 4.1 加密算法对比 4.2 XOR加密 4.3 凯撒加密 4.4 RC4加密 5. 完整加密Loader 6. 加密工具实现 7. 密钥管理 7.1 密钥存储策略 7.2 密钥混淆示例 8. 注意事项 1. 解密代码也可能被检测: 杀软可能识别解密循环 2. 内存扫描: 解密后在内存中仍可被检测 3. 行为检测:…