目录 1 反汇编引擎和他们的问题 Capstone: 总体思路和设计 Capstone 目标 Capstone 设计 Capstone 实现 一些不好处理的 X86 指令 2/46 应用 总结.

Similar documents
自我介绍 Nguyen Anh Quynh (aquynh - at- gmail.com) 计算机科学博士, 安全研究员 操作系统 虚拟机器 二进制分析 入侵取证等 Capstone 独立框架 (capstone- engine.org)

01

CH01.indd

清华大学2013年毕业生就业质量报告

软件工程概要

学 院 人 才 培 养 分 项 自 评 报 告 结 果 汇 总 表 主 要 评 估 指 标 关 键 评 估 要 素 自 评 等 级 1.1 学 校 事 业 发 展 规 划 合 格 1. 领 导 作 用 1.2 办 学 目 标 与 定 位 合 格 1.3 对 人 才 培 养 重 视 程 度 合 格 1

111

作 業 系 統 簡 介 光 有 電 腦 硬 體, 會 不 容 易 使 用 必 須 要 有 適 當 的 程 式, 才 方 便 操 作 硬 體 衍 生 作 業 系 統 需 求 : 提 供 方 便 使 用 者 執 行 程 式 平 台 有 效 使 用 各 種 電 腦 硬 體 資 源 Jingo C. Lia

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

考 試 日 期 :2016/04/24 教 室 名 稱 :602 電 腦 教 室 考 試 時 間 :09: 二 技 企 管 一 胡 宗 兒 中 文 輸 入 四 技 企 四 甲 林 姿 瑄 中 文 輸 入 二 技 企 管 一

此 处 点 勾 的 就 是 启 用 的, 如 果 想 禁 用 某 账 户, 只 要 把 前 边 的 勾 去 掉 即 可 点 击 添 加

電機工程系認可證照清單 /7/1

大学计算机基础B.doc

燃烧器电子控制系统 目录 2

投影片 1

北京达唯科技股份有限公司

Conductix-Wampfler Inductive Power Transfer IPT 2

附 件 : 2009 年 度 国 家 精 品 课 程 名 单 一 本 科 国 家 精 品 课 程 ( 以 学 科 为 序, 共 400 门 ) 序 号 一 级 学 科 二 级 学 科 课 程 名 称 学 校 名 称 负 责 人 1 哲 学 哲 学 类 马 克 思 主 义 伦 理 学 安 徽 师 范

地 理 志 鏡 止 煞, 來 達 到 安 宅 的 效 果 4. 門 神 符 紙 : 於 門 板 繪 製 門 神, 作 為 宅 第 的 守 護, 民 宅 所 使 用 的 門 神 題 材, 多 為 天 官 賜 福 或 文 武 官 員 符 紙 是 以 畫 了 符 咒 的 紙 懸 掛 室 內, 或 加 框

<4D F736F F F696E74202D20C8EDBCFEB2E2CAD4D1A7CFB0D7CAC1CF2E BBCE6C8DDC4A3CABD5D>

Untitiled

Azure_s

团 学 要 闻 我 校 召 开 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 3 月 17 日, 我 校 共 青 团 五 届 九 次 全 委 ( 扩 大 ) 会 议 在 行 政 办 公 楼 五 楼 会 议 室 举 行, 校 团 委 委 员 各 院 ( 系 ) 团 委 书 记 校 学 生


!!!

目 录 一 安 全 漏 洞 态 势... 4 ( 一 ) 漏 洞 类 型 分 布... 4 ( 二 ) 操 作 系 统 的 漏 洞 分 布... 5 ( 三 ) 漏 洞 利 用 斱 式 分 布... 6 ( 四 ) 漏 洞 厂 商 分 布... 7 二 危 急 漏 洞 实 例... 7 ( 一 )

翻 墙 问 答 享 受 互 联 网 所 带 来 的 便 利, 以 及 私 隐 保 障, 本 来 就 如 其 他 许 多 天 赋 权 利, 这 已 是 一 个 人 应 该 享 有, 无 分 国 界 和 种 族 很 不 幸, 在 中 国 引 入 互 联 网 不 久, 中 国 就 滥 用 很 多 本 来

2015 TB-1-06.indd

建筑环境与能源应用工程专业规范

MacTalk·人生元编程

状 态, 规 划 车 辆 行 驶 路 径, 可 进 入 网 站 充 电 服 务 栏 目 (2) 查 询 位 置 联 系 方 式 营 业 时 间 等 信 息, 可 进 入 网 站 服 务 指 南 栏 目 建 议 您 出 行 前 通 过 易 充 电 互 动 网 站 提 前 了 解 所 经 高 速 快 充

Cisco WebEx Meetings Server 2.6 版常见问题解答

附 件 :2015 年 度 普 通 高 等 学 校 本 科 专 业 备 案 和 审 批 结 果 教 育 部 2016 年 2 月 16 日 抄 送 : 国 家 发 展 改 革 委 财 政 部 国 家 卫 生 计 生 委 国 家 中 医 药 管 理 局 部 内 发 送 : 有 关 部 领 导, 办 公


目 录 1. 概 述 总 体 方 案 方 案 概 述 软 件 部 署 架 构 技 术 原 理 访 问 场 景 典 型 设 备 ipad 配 置 使 用 示 例 详 细

政府機關資訊通報第295期(5月)

上 海 服 务 外 包 企 业 案 例 选 编 目 录 不 断 提 升 客 户 满 足 度 全 面 优 化 用 户 体 验 安 满 能 软 件 工 程 ( 上 海 ) 有 限 公 司 案 例 1 编 委 会 主 任 : 沙 海 林 副 主 任 : 王 新 培 编 委 : 刘 锦 屏 孙 嘉 荣 阎

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

目 录 简 介.3 ` 体 系 结 构...4 数 据 层...5 数 据 连 接 器...6 Tableau Server 组 件...7 网 关 / 负 载 平 衡 器...8 客 户 端 :Web 浏 览 器 和 移 动 应 用 程 序...8 客 户 端 :Tableau Desktop..

中国软件2013校园招聘通知

PowerPoint Presentation

Mac OS X 相 信 不 少 用 過 Windows 作 業 系 統 的 朋 友 會 將 硬 碟 分 割 成 C D 兩 個 或 者 更 多 槽, 所 有 的 文 件 隨 便 往 D 槽 丟, 應 用 程 式 也 是 隨 便 安 裝 到 不 知 名 的 地 方, 等 到 需 要

图书情报2012(2).docx

LS+_UG.book

蒙 恬 科 技 軟 件 用 戶 授 權 協 議 本 許 可 協 議 為 蒙 恬 科 技 股 份 有 限 公 司 ( 以 下 簡 稱 蒙 恬 公 司 ) 授 予 您 合 法 使 用 本 軟 件 程 式 ( 本 軟 件 ) 之 協 議 書, 如 果 您 不 同 意 此 協 議 中 的 任 何 條 款,

¾Ç°T199´Á103

校 企 双 赢 的 长 效 合 作 机 制 (5) 为 毕 业 生 提 供 就 业 信 息 及 就 业 指 导, 分 析 评 价 教 学 质 量 对 人 才 培 养 模 式 提 出 意 见 和 建 议 ( 二 ) 专 业 校 企 合 作 理 事 会 1. 成 员 单 位 : 行 业 协 会 合 作

Sentinel HASP v.5.10 Release Notes

PowerPoint 簡報

29 知 識 管 理 c.1 1 樓 新 到 館 圖 書 區 30 知 識 管 理 c.2 1 樓 新 到 館 圖 書 區 31 編 劇 與 腳 本 設 計

????????

目次 

1.1研究背景及意义

Microsoft Word doc

目 录 1 本 周 漏 洞 通 告 漏 洞 一 :Cisco Firepower Management Center 远 程 命 令 执 行 漏 洞 漏 洞 二 :IBM Connections 跨 站 脚 本 漏 洞 漏 洞 三 :Apache

csa-faq.pdf

附件3:

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至

Transcription:

Capstone 反汇编引擎 NGUYEN Anh Quynh, Coseinc <aquynh -at- gmail.com> Syscan360 Beijing, July 16th 2014 1/46

目录 1 反汇编引擎和他们的问题 2 3 4 5 6 Capstone: 总体思路和设计 Capstone 目标 Capstone 设计 Capstone 实现 一些不好处理的 X86 指令 2/46 应用 总结.

Capstone 背后的故事 我的项目需要一个好的反汇编框架 (2013) X86 + ARM Windows + Linux 友好的许可 ( 非 GPL) 很遗憾, 在 2013 年这样的东西不存在! 3/46

二进制分析和漏洞利用 二进制分析 逆向二进制代码 ( 例如恶意软件 ) 更好的理解内部信息 分析二进制代码来寻找脆弱性 调试机器码 机器级的代码是唯一的输入 采用汇编代码是唯一的选择 漏洞利用 编写软件脆弱性的利用 构建 shellcode 是利用的重要一部分 机器级的 shellcode 是强制的 采用汇编代码是唯一的选择 4/46

反汇编机器码 所有二进制分析 / 逆向工具 / 漏洞利用开发的核心部分 反汇编框架 ( 或库 ) 是整个结构中的更底层部分 5/46

建立反汇编框架 6/46 需要对硬件结构和指令集有好的理解 在反汇编时, 恰当的解码二进制代码 为使应用获得内部指令信息, 要分解汇编的细节

建立反汇编框架是乏味烦人的 大量的时间花费在理解指令编码方案 太多需要处理的指令 太多的特例和文档未说明的指令 (X86) 太多架构 :X86,Arm,Arm64,Mips,PPC,Sparc,etc. 语言绑定 (bindings) 件编译困难 :Python,Ruby,Java,C#,Javascript, etc 7/46

需要好的反汇编框架 安全界长期存在的问题 - 即使 2013 年仍然没有解决好 简单的要求 多架构 :X86 +Arm 对新架构变化的积极维护和升级 多平台 :Windows +Linux 支持 Python +Ruby 语言编译 友好的许可 (GPL 不好!) 黑暗的隧道里没有光明 - 直到 Capstone 的到来! Capstone Disassembly 8/46 Engine

其它 1 Poor quality

困难 都失败了 显然都不想去修复这些问题 黑暗的隧道尽头没有亮光 10/46

Capstone = 下一代的反汇编框架! 11/46

Capstone 的目标 多架构 : X86 + Arm + Arm64 + Mips + PPC (object surpassed eventually) 多平台 : Windows + MacOSX + Linux + ios + Android + *BSD. 多绑定 (bindings): Python + Ruby + Java + JavaScript + C#. 干净 简单 直观 结构无关的 API. 提供指令的分解细节 友好的许可 :BSD 12/46

困难 13/46 多架构 : 太多工作 多平台 : 太多工作 多绑定 (bindings): 太多工作 利用非常有限的资源完成可能要若干年

但是奇迹发生了 :Capstone 做到了! 14/46

时间线 2013 年 8 月 : 开始设计实现 2013 年 11 月 : 公开测试请求 2013 年 12 月 : 作为开源项目发布 1.0 版本 2014 年 1 月 : 2.0 版本发布 2014 年 3 月 : 2.1 版本发布 2014 年 4 月 : 2.1.2 版本发布 2014 年 8 月 : 3.0 RC1 版本发布 ( 试验性的 ) 开始被重要的工具广泛的采用, 训练并工作在很多地方 对于重要的操作系统的包已经可用 (Windows, MacOSX, Linux, *BSD) 15/46

Capstone 7 个月的状态 多架构 : 仅次于 *Libopcode*, 但是更多更新更准确 多平台 : 首屈一指 (Windows, OSX, Linux, *BSD, ios, Android, Solaris) 多绑定 (bindings): 首屈一指 (9 languages supported besides *C*) 比其它的提供更多的分解的指令细节 更新 : 比其它的都多 (X86, Arm, Arm64, Mips, PPC, Sparc, SystemZ & XCore) 成熟度 : 处理更多的复杂 X86 指令 文档 : 大量关于安装 / 编译 / 绑定 (bindings)/ 编程的文章 16/46

Capstone versus others Capstone 的绑定 (bindings): Python, Ruby, C++, C#, Java, NodeJS (JavaScript), GO, OCaml & Vala. Distorm3 的绑定 (bindings): Python, Ruby (poor quality), Java, C#. 其它的绑定 (bindings): Python. 17/46

Capstone 设计 18/46

目标 1 年内具备所有想要的特性 利用非常有限的资源 不可能完成的梦? 19/46

困难 多架构 : 太多工作! 多平台 : 太多工作! 多绑定 (bindings): 太多工作! 利用非常有限的资源, 真的可能在若干年完成? 20/46

野心和想法 几个月内实现所有特性 初始阶段站在巨人的肩膀上 开源项目来获得社区的参与和贡献 21/46

LLVM 的介绍 LLVM 项目 编译器的开源项目 :http://www.llvm.org 建立编译器的框架集合 机器码的表达 编译 优化的模块集合 许多主流厂商的支持 :AMD,Apple,Google,Intel,IBM, ARM,Imgtec,Nvidia,Qualcomm,Samsung,etc. 无比巨大的相关 ( 编译器 ) 社区 22/46

LLVM 模块 编译模型 LLVM 模块 : 分离的前端 - 优化 后端 23/46

为什么选择 LLVM? 支持多架构 机器编码 (MC) 模块中可用的内部反汇编 ( 只支持 LLVM 模块 ) Ø LLVM 严密的设计和实现 Ø 巨大的社区进行积极的维护和更新 BSD 许可 利用 LLVM 的 MC 来建立 Capstone! 挑选那些有反汇编器的架构 : 目前是 8 种 24/46

LLVM 的机器编码 (MC) 层 集成含有内部反汇编器的编译器的 LLVM 核心层 用作编译器 汇编器 反汇编器 调试器和 JIT 编译器 以一个大的机器指令描述表 (TableGen) 为中心 自动生成汇编器 反汇编器和 TableGen 的代码输出 (*.inc) 25/46

优势 已经被大量测试用例测过的高质量代码 各个架构的顶级专家维护的反汇编器 Ø X86: Intel 维护 ( 架构创造者 ). Ø Arm+Arm64: Arm & Apple 维护 ( 架构创造者和 Arm64 的设备制造商 ). Ø Mips: Imgtec 维护 ( 架构创造者 ) Ø SystemZ: IBM 维护 ( 架构创造者 ) Ø XCore: Xmos 维护 ( 架构创造者 ) Ø PPC & Sparc: 高活跃度社区 新指令和 bug 被很快的修复! bug 会被很快的报给我们或者上游代码, 然后反馈回来 27/46

问题 不可能不付出代价直接重用 MC Ø LLVM 代码是 C++, 我们要用 C Ø 代码和 LLVM 的各个层混淆的严重 Ø 需要自己建立细节 Ø 揭露 API 的语义 Ø 不是线程安全的设计 Ø Windows 支持的不好 需要自己来建立所有的绑定 (bindings)( 很多社区在努力 ) 一旦我们利用 LLVM, 要紧跟上游代码 26/46

决定在哪里分离 利用 LLVM, 但是必须移除我们不需要的部分 从哪里分离? Ø 移除的太少会导致大量冗余代码 Ø 移除太多会改变代码结构, 使从上游代码反馈更新变得困难 Capstone 选择的优化设计 Ø 保持各个架构的汇编核心最小程度的改变 Ø 自己重新实现需要的相关层 28/46

实现 1 复制 LLVM 的机器编码层 (MC) 最小程度的改动 MC 的 Disassembler/InstPrinter 层来建立我们的核心 Ø Ø 重写反汇编器的相关层 :MCInst, MCInstrDesc,MCRegisterInfo 重写 InstPrinter 的相关层 :Sstream 用 C 函数指针和结构替换 C++ 的类和方法 用 C 重写 TableGen 29/46

实现 2- LLVM 的 MC 之外 Hook 进 InstPrinter 层得到指令的细节 Ø 指令 ID, 大小, 助记符, 操作数的字符串 Ø 操作数 ( 立即数, 寄存器, 内存 ) Ø 架构相关信息 (Prefix, ModRM, SIB, X86) 从 LLVM 的.TD 文件获取指令的语义信息 Ø 隐藏的寄存器读写 Ø 指令组 分离一些全局变量使 Capstone 线程安全

Capstone 优于 LLVM 的 MC Capstone 是独立的框架, 可以在上面开发独立的工具 提供比汇编代码更多的信息 更紧凑 线程安全的设计 可以嵌入更严格的固件或操作系统环境 防恶意软件 (X86) 对反汇编和逆向工作的进一步优化 更多的硬件模块支持 :Big-Endian for Arm+Arm64 更多细节 www.capstone-engine.org/beyond_llvm.html

Capstone 的容错性 不能只依赖 LLVM 来修复 bug Ø 反汇编不是 LLVM 主要考虑的, 如果不影响代码生成的话 Ø 如果 LLVM 的后端没有生成 bug 那么就不修复 Ø X86 的不好处理的特例是很好的例子 相反,Capstone 更关注于确保合适的处理了所有的特例 32/46

把 Capstone 嵌入固件或操作系统 只建立你真正需要的架构 以 diet 模式建立引擎 以 reduced 模式建立 X86 引擎 到 source/docs/readme 找关于 Windows kernel driver + OSX kext 的例子 33/46

一些不好处理的 X86 指令 34/46

利用 Capstone 开发工具 Capstone 的 API 介绍 C 的示例程序 Python 的示例程序 更多的指导在 source/docs/readme 35/46

Sample code in C 36/46

Sample code in Python Sample Python code to disassemble binary. Sample Python code - output. 37/46

互联网上的应用 Camal: Coseinc automated malware analysis lab. Pyew: Python tool for static malware analysis. Radare2: Unix-like reverse engineering framework and commandline tools. ROPGadget: Gadgets finder and auto-roper. Frida: Inject JavaScript code into native apps on Windows, Mac, Linux and ios. WinAppDbg: Code instrumentation scripts in Python under a Windows environment. MachOView: Visual Mach-O file browser. PowerSploit: PowerShell Post-Exploitation Framework. More at http://capstone-engine.org/showcase.html 38/46

CEbot 39/46

CEnigma 40/46

Epic 41/46

未来的工作 更多的恶意软件防护 : X86. 更多的架构 : Hexagon? M68K? 提供指令更多的语义? 进一步改进性能 ( 已经很快 ) 42/46

Capstone 的未来是有保证的! 故事在延续 : AVX- 512 的扩展在 2013 年计划会于 2015 年支持 ( 英特尔的 Knights Landing 处理器 ) 英特尔已经在关注这个了! 40/46

总结 Capstone 是一个出众的反汇编框架 Ø 多架构 + 多平台 + 多绑定 (bindings) Ø 干净 / 简单 / 轻量级 / 直观的平台无关的 API Ø 提供反汇编指令的细节和语义 Ø 运行期间丰富的选项 Ø 对固件和操作系统内核嵌入的特别支持 Ø 对所有架构的未来升级的保证 Ø 开源的 BSD 许可 我们认真的承诺, 这个项目要做出最好的汇编引擎 相信很快会有更多基于 Capstone 的应用

参考 Website: http://capstone-engine.org Github source: github.com/aquynh/capstone/tree/next (latest) Docs: github.com/aquynh/capstone/blob/next/docs/readme CEbot: http://capstone-engine.org/bot.html CEnigma: http://cenigma.org 44/46

致谢 Capstone 来自于并将继续得到全能的 LLVM 项目的 支持 社区的支持是难以置信的, 谢谢! 特别感谢所有 binding 的作者!! 为所有的代码贡献者, bug 的报告者致敬!!! 45/46

Questions and answers http://www.capstone-engine.org Twitter: @capstone_engine Nguyen Anh Quynh <aquynh -at- gmail.com> 46/46