Windows Shellcode实战 专栏说明
# Windows Shellcode实战
# 特别申明
特别申明:
本专栏介绍的内容仅做技术上的交流,请勿使用本文介绍的技术做其他用途,请遵守国家相关法律法规,合理合法使用本文介绍的技术,违者与本站点无关。
本站不提供任何shellcode工具。
# 介绍
恶意代码通常需要对自身代码进行操作,以实现一些病毒技术,例如可执行文件感染、仅内存执行或多态性(polymorphism)等。
如果程序是shellcode,则此类操作会大大简化。获取shellcode有几种方法:一种是使用汇编语言(assembly)编写源代码,但这很快会变得枯燥乏味。另一种是以特定方式使用C语言编写源代码,使编译后的代码不包含任何硬编码地址(hardcoded address)。
然而,以这种方式编写C代码也非常繁琐,显然,使用自动化工具将“普通”代码生成“特定”代码是必不可少的。
WiShMaster是一款工具,它能够转换一组“正常”编写的C源文件(这些源文件编译后会生成可执行文件),并生成shellcode——即一段不包含任何硬编码或外部引用(external reference)的代码块,且可以在任何进程的任何地址运行。如果将执行流程重定向到其第一个字节,该shellcode将完成与通过正常源代码编译生成的可执行文件完全相同的操作。
本文将详细描述这种转换(后文称为“shellcodisation”)的原理,并通过一些示例展示其带来的便利。
你需要的是移除目录中所有标题后方的英文注释,同时完整保留原有的层级结构和中文标题,以下是处理后的完整目录:
# 目录
# 1 shellcodisation在病毒学中的应用
1.1 背景定义
1.2 恶意代码的选定目标
1.2.1 避开基于特征码识别的反病毒软件检测
1.2.2 在受感染主机上留下尽可能少的痕迹
1.2.3 嵌入合法程序以创建特洛伊木马
1.2.4 拦截使用受感染计算机的用户的私人数据
1.2.5 加密自身以防止人工分析
1.3 基于可执行文件的实现
1.3.1 实现多态性
1.3.2 仅在内存中执行
1.3.3 感染其他可执行文件
1.3.4 执行代码注入
1.3.5 实现真正的加密
1.3.6 总结
1.4 基于shellcode的实现
1.4.1 实现多态性
1.4.2 仅在内存中执行
1.4.3 感染其他可执行文件
1.4.4 执行代码注入
1.4.5 实现真正的加密
1.4.6 总结
# 2 编写shellcode
2.1 编译生成的二进制数据解析
2.2 shellcode生成原理
2.2.1 第一种方法:汇编代码修补
2.2.2 第二种方法:使用栈
2.2.3 第三种方法:使用全局数据
# 3 WiShMaster:shellcodisation过程
3.1 工具介绍
3.2 开发进展
3.2.1 WiShMaster 版本1
3.2.2 WiShMaster 版本2
3.3 shellcodisation过程
3.3.1 概述
3.3.2 “分析”步骤说明
3.3.3 “获取全局变量大小”步骤说明
3.3.4 “生成”步骤说明
3.3.5 “自定义”步骤说明
3.3.6 “集成”步骤说明
3.3.7 WiShMaster中shellcodisation的实现
3.3.8 shellcode初始化
# 4 使用WiShMaster开发应用程序
4.1 WiShMaster的目标
4.2 WiShMaster版本2中应用程序的结构
4.2.1 应用程序结构概述
4.2.2 导出表和导入表
4.2.3 入口点
4.3 标准模块
4.3.1 “日志”模块
4.3.2 “initsh”模块
4.3.3 “加载器”模块
4.4 shellcode加密
4.4.1 32位密钥的异或(XOR)加密
4.4.2 256位密钥的高级加密标准-密码分组链接模式(AES-CBC)加密
4.4.3 使用共享密钥
4.5 开发反向shell
4.5.1 程序结构概述
4.5.2 生成反向shell
4.6 实现USB攻击以执行反向shell
4.6.1 攻击准备
4.6.2 攻击流程
# 5 未来工作
5.1 pycparser工具
5.2 GCC编译器的fPIC选项
5.3 趣味使用编译指令