推荐星级:
- 1
- 2
- 3
- 4
- 5
基于符号执行的Python攻击脚本分析平台
资料介绍
传统的静态分析方法大多不能准确处理脚本与网络交互的过程,且会引入不可达路径,动态分析则需要搭建实验环境和手工分析。针对上述问题,提出一种基于符号执行的Python攻击脚本分析平台Py Ex Z3+。通过对Python脚本的动态符号执行及路径探索,可以获得触发攻击的输入流量及相应的输出攻击载荷,以此实现对Python攻击脚本的自动化分析。采用循环识别及运行时解析等优化策略,使程序更快进入目标代码。实验结果表明,Py Ex Z3+相比CHEF,Py Ex Z3等符号执行工具,具有更高的路径覆盖率和执行效率,同时Py Ex Z3+能够对目标脚本程序进行动态检测,实现高效、可行的自动化分析。
部分文件列表
文件名 | 大小 |
基于符号执行的Python攻击脚本分析平台.pdf | 2M |
部分页面预览
(完整内容请下载后查看)42
11
2016
11
年 月
第
卷
第
期
计
算
机
工
程
Vol. 42
No. 11
Computer Engineering
November 2016
·
·
: 1000-3428( 2016) 11-0139-08
: A
: TP309
安全技术
文章编号
文献标志码
中图分类号
Python
基于符号执行的
攻击脚本分析平台
, ,
邱 洋 王轶骏 薛 质
(
,
上海交通大学 信息安全工程学院 上海
200240)
: , ,
要 传统的静态分析方法大多不能准确处理脚本与网络交互的过程 且会引入不可达路径 动态分析则需要搭
摘
。 ,
建实验环境和手工分析 针对上述问题 提出一种基于符号执行的
Python PyExZ3 + 。
攻击脚本分析平台
通过对
Python
Python
, ,
脚本的动态符号执行及路径探索 可以获得触发攻击的输入流量及相应的输出攻击载荷 以此实现对
。 , 。
攻击脚本的自动化分析 采用循环识别及运行时解析等优化策略 使程序更快进入目标代码 实验结果表明
,
PyExZ3 +
CHEF,PyExZ3
,
,
PyExZ3 +
能够对目标脚本
相比
程序进行动态检测 实现高效 可行的自动化分析
; Python
等符号执行工具 具有更高的路径覆盖率和执行效率 同时
,
、
。
:
; ; ; ;
语言 动态分析 测试数据生成 攻击脚本 路径探索
关键词 符号执行
:
,
,
.
Python
[J].
攻击脚本分析平台
,2016,42( 11) :
计算机工程
中文引用格式 邱 洋 王轶骏 薛 质 基于符号执行的
139-146.
英文引用格式
: Qiu Yang,Wang Yijun,Xue Zhi. Python Attack Script Analysis Platform Based on Symbolic Execution[J].
Computer Engineering,2016,42( 11) :139-146.
Python Attack Script Analysis Platform Based on Symbolic Execution
QIU Yang,WANG Yijun,XUE Zhi
( College of Information Security,Shanghai Jiaotong University,Shanghai 200240,China)
【Abstract】The traditional static analysis method cannot handle the interaction between the script and the network,and it
introduces inaccessible path. The dynamic analysis needs to set up the experimental environment and needs manual
analysis. To solve these problems,this paper proposes a Python attack script analysis platform called PyExZ3 + based on
symbolic execution. Through the dynamic symbol execution and path exploration of Python script,it can get the input
traffic and the corresponding output attack payload,which can realize the automatic analysis of Python attack script.
PyExZ3 + uses loop identification and run time solver optimization strategy to improve the path coverage and the
efficiency of symbolic execution. Experimental results show that PyExZ3 + has a higher path coverage and execution
efficiency compared with the existing symbolic execution tools,such as CHEF and PyExZ3. Besides,PyExZ3 + can
dynamically detect the target script’s payload and perform feasible automated analysis efficiently.
【Key words】symbolic execution; Python language; dynamic analysis; test data generation; attack script; path exploration
DOI: 10. 3969 /j. issn. 1000-3428. 2016. 11. 023
当针对 某 种 软 件 或 应 用 的 漏 洞 进 行 攻 击 的
0
概述
Python
,
脚本在网上泄露后 安全维护人员不能在第
、
跨平台脚本化 虚拟化是未来的编程语言方向
,
,
一时间对存在漏洞的软件或服务器进行加固修补
而防御该漏洞的规则却需要等待研究人员搭建实验
Python
,
作为流行的动态解释性语言 有着广泛的应
。
,Python
,
是编写网络攻击脚本的首选 如
。
用
一方面
环境分析后才能得到 在这段时间内存在漏洞的主
。 , Python
机暴露于危险的环境中 因此 需要快速对
Kali Linux
在著名的渗透测试平台
提供的网络工具
Python ;
语言 另一方
,
中 几乎一半以上使用的都是
,
攻击脚本的攻击特征进行自动化提取来生成规则
,
面 程序员也经常使用
Python
。
作为网络服务器软件
为主机提供及时的保护
。
,
动态符号执行作为自动化白盒测试的一种 采
的开发语言
:
基金项目 中国信息安全评测中心科研项目
( CNITSEC-KY-2013-009 /2) 。
:
作者简介 邱
( 1991—) , , ; 。
,
;
,
、 、
女 硕士研究生 主研方向为网络安全 王轶骏 讲师 博士 薛 质 教授 博士生导师
,
洋
: 2015-10-15
: 2015-11-18
修回日期
E-mail: qy220@ 126. com
收稿日期
140
2016
11
15
月 日
计
算
机
工
程
年
-
用符号 具体值混合执行
( concolic execution)
2
: ( 1) ,
改写翻译器 对每个高层语言
的方
做的工作有
点
[1]
,
, - ,
指令进行标记 每条指令之间存在父 子联系 所有
法
在具体执行的同时对所执行到的代码实行符
, S2E ;
指令构成一棵树形结构 为 提供高层控制流图
, ,
号执行 避免了误报的产生 并应用逐渐趋向实用的
( 2) CHEF
S2E
,
状态选择逻辑 提出一个
SMT( Satisfiability Modulo Theory solver)
还改进了
的状态类选择算法 通过该算法可以优化探索
,CHEF
求解器和各
CUPA
新路径的效率 然而
。CHEF
,
, 、
类路径选择算法 很好地弥补了传统动态 静态分析
。
改进后的效果却不尽人
在每次子会话完毕后都需要对整个指令
树进行分析以提取导致分支的指令并筛选新的待执
, 、
的不足 有效缓解了不可行路径 路径爆炸的问题
,
意
2005
,
年提出至今 它已成为该领域的研究热点之
自
。
、 ,
动态符号在计算机安全 测试领域应用广泛 如
一
[2]
, ,
行状态 但是这对程序执行来说并不友好 会花费较
Berkeley
Kudzu Javascript
大学提出的
符号执行平
; MIT
提出用于
,
多时间用于计算路径 却不能给出与时间消耗相匹
,
台 用于检测
Javascript
中的注入漏洞
[3]
。
配的路径选择结果 以同一个程序执行测试为例
,
HTML
Apollo
运行时错误的符号执行工具
;
检测
CHEF PyExZ3
下的执行时间是
PyExZ3 Microsoft
。
的数十倍
在
, [4]
此外 文献 提出了
Metasymploit
,
符号执行平台
[5]
Z3
是
基于
求解器开发的开源
Metasploit
Ruby
。
脚本
用于分析
框架中的
Python
,
符号执行工具 对象是
PyExZ3
中的最小符号
有更精确的高层控制
。 PyExZ3
3 : 1
目前符号执行引擎分为 类 第 类用来分析
[6]
,
颗粒 因此
,PyExZ3 CHEF
相比
x86
,
二进制机器码 例如
BitBlaze
。
等
2
第 类用来分
[7]
[8]
,
流图 执行效率方面表现良好 但是
受限于
LLVM
, S2E ,KLEE
中间代码 如
。
等
3
第 类为
析
Z3
,
求解器 目前
,Z3
, Python
仅支持实数变量 而
拥有
的进展和扩展性取
DFS
路径搜索方
,
专用符号执行引擎 这些引擎往往针对特定的语言或
,PyExZ3
复杂而丰富的变量类型
Z3。 ,PyExZ3
, Kudzu,Apollo。
需求 如
扩展性较好的符号执行引擎
决于
另外
默认使用
,
可以支持较多的应用程序和语言 虽然专用引擎的开
,
法 这可能导致程序深陷循环而无法探索期望的
, , 、
发过程复杂 局限性较高 但是从执行效率 实用性和
。
路径
,
结果看来 专用引擎都具有良好的表现
。
[9]
1
从表 可以看到
CHEF
PyExZ3
。
与
的主要区别
Python
PyExZ3
的现有符号执行引擎有
,
,
;
支持
[10]
CHEF
Python
,
基本块上
将大部分时间用在了提取
CHEF 。PyExZ3
3
属于第 类专用符号执行引擎
[11]
每产生一个新的指令就需要遍历整个指令树以重构
Z3 SMT
,
求解器 目前支持整数的处理
它使用
CHEF
, ,
高层控制流图 而控制流图是判断分支的关键 因
2 ,
是第 类衍生出来的符号平台 它基于现有的
, 。
此 这部分的效率无法大幅度改进 此外
,CHEF
的
S2E
,
引擎 通过重构高层控制流以引导程序探索新
,
另一个问题在于它不能精确地控制程序进入路径
。
路径 现有支持
Python
的符号执行平台存在以下问
; 2)
, 2
即不能准确识别所有的基本块 只有当指令产生 个
: 1)
、
选择 进入路径的效率较为低下
题
局限性较
,CHEF
。
子指令时
另一方面
才能将其识别为导致分支的指令
,PyExZ3 、
虽然受限于支持的数据类型 路
,
大 缺乏实际性的应用价值
; 3)
,
平台体积较为庞大
。
但执行效率与之不符
本文通过权衡专用符号执行平台与通用执行平
、 ,
径搜索策略 第三方库函数 但是这几个问题可以通
PyExZ3
,
数据类型 增加路径搜索策略来弥补
过扩展
, ,
台的利弊 针对现有符号执行平台存在的问题 在
。 ,
这些不足 因此 本文采用执行效率较高的
PyExZ3,
PyExZ3 , Python
开源工具的基础上 设计一种分析
攻
,
在此基础上对其进行改进 使其能够支持多种数据类
。
击脚本的自动化符号执行分析平台
。
型和操作
1
背景知识
1
CHEF
PyExZ3
与 的比较
表
CHEF
PyExZ3
高
比较内容
效率
1. 1 Python
符号执行引擎
低
,
目前 支 持
Python
的 现 有 符 号 执 行 引 擎 有
Python Lua
的符
Int Byte String
Int
PyExZ3 CHEF。CHEF
和
支持类型
是面向
和
,
号执行平台 它在利用
S2E
,
引 擎 的基 础上 改 写
/
符号执行 混合执行
第三方库函数
最小符号颗粒
路径搜索策略
仅能混合执行
Object
Python
,
S2E
语言解释器 使机器码能够顺利地在
S2E Python
机器
上
Byte
。
进行符号执行 相比直接通过
运行
1 000 。CHEF
作
CUPA DFS
DFS
等
,CHEF S2E
的运行速度是
码
的
倍
,
为通用性符号执行平台 它具有其余通用性符号执
1. 2 Python
Python
1)
攻击脚本与符号执行
攻击脚本的攻击模式流程如下
。
, 、 。
行平台的优点 即扩展性好 兼容性强 此外
,Byte
:
CHEF
,
的最小符号颗粒 不需手动对目标程序插
是
建立与目标的连接
( )
桩 将内存标记为符号 即可成功识别符号
。CHEF
2)
探测目标的版本信息或回传信息以判断是否
全部评论(0)