1.一种基于有限状态自动机的攻击脚本生成方法,其特征在于,包括:
从客户端与目标程序之间历史产生的交互数据流中,提取攻击所述目标程序的攻击数据流和所述目标程序响应所述攻击数据流的反馈数据流;
向虚拟运行环境中运行的目标程序,逐步发送所述攻击数据流,实现对所述目标程序的模拟攻击;
接收所述虚拟运行环境中运行的目标程序,每次响应接收到的攻击数据流产生的响应数据流;
在任一次的响应数据流与相应的反馈数据流间的差异数据为空,或者,所述差异数据不为空且确定出所述差异数据中内存地址变量的各个取值分别对应的内存段基址和偏移量的情况下,生成该次的状态转移函数;并将所述状态转移函数更新至有限状态自动机,所述有限状态自动机的下一个状态继承上一个状态的状态变量;
在所述攻击数据流全部被发送给在所述虚拟运行环境中运行的目标程序后,若更新得到的有限状态自动机的状态表征对所述目标程序攻击成功,则依据更新得到的有限状态自动机中的状态转移函数,生成攻击脚本。
2.根据权利要求1所述的方法,其特征在于,在任一次的反馈数据流与相应的响应数据流间的差异数据为空的情况下,生成该次的状态转移函数,包括:
向攻击脚本添加具有接收响应数据流功能的脚本语句;
添加具有提取响应数据流中的内存地址功能的脚本语句。
3.根据权利要求1所述的方法,其特征在于,在任一次的反馈数据流与相应的响应数据流间的差异数据不为空的情况下,确定所述差异数据中内存地址变量的各个取值分别对应的段基址和偏移量的过程,包括:
检查该次的差异数据中,是否含有内存地址变量的取值;所述内存地址变量的可取值包括:二进制或者文本格式的依赖库、栈、堆和代码段的内存地址;
在检查到内存地址变量的任一种取值的情况下,计算该取值与系统随机分配的内存段基址间的偏移量,得到内存地址变量在该取值下的内存段基址和偏移量;
所述生成该次的状态转移函数,具体为:
依据所述差异数据包含的内存地址变量的各个取值分别对应的内存段基址和偏移量,生成状态转移函数。
4.根据权利要求1所述的方法,其特征在于,所述从客户端与目标程序之间历史产生的交互数据流中,提取攻击所述目标程序的攻击数据流和所述目标程序响应所述攻击数据流的反馈数据流,包括:
将所述客户端与目标程序之间历史产生的交互数据流中一个客户端与目标程序的一次会话数据流,作为一组交互数据流,得到多组交互数据流;
分别对每组交互数据流,按照客户端收发两个方向进行区分标记;
分别对每组交互数据流中,收发两个方向的数据流分别进行排序;
分别对排序后的每组交互数据流进行重组和去噪,得到每组整流后的收发方向数据流;
从所述每组整流后的收发方向数据流中,确定收方向数据流中包含预设敏感信息的各组数据流;
将所述各组数据流中收方向的数据流,分别作为反馈数据流,得到各组反馈数据流;
将所述各组数据流中发方向的数据流,分别作为攻击数据流,得到各组攻击数据流。
5.根据权利要求4所述的方法,其特征在于,所述向虚拟运行环境中运行的目标程序,逐步发送所述攻击数据流,实现对所述目标程序的模拟攻击,包括:
向所述虚拟运行环境中运行的目标程序分别发送所述各组攻击数据流;其中,向所述虚拟运行环境中运行的目标程序发送任意一组攻击数据流的过程包括:按照该组攻击数据流中各攻击交互数据的时间顺序,一次发送一个攻击数据的方式,进行发送。
6.根据权利要求5所述的方法,其特征在于,在所述攻击数据流全部被发送给在所述虚拟运行环境中运行的目标程序之后,还包括:
若更新得到的有限状态自动机的状态表征对所述目标程序攻击不成功,则获取已发送的各组攻击数据流中预设数量组攻击数据流分别对应的差异数据,得到预设数量组差异数据;
以预设变量集合为依据,确定所述预设数量组差异数据中属于所述预设变量集合的变量为目标变量;
依据所述目标变量,确定用于生成攻击脚本中的动态参数的目标变量关系表达式;
依据所述目标变量关系表达式,对有限状态自动机进行修正,得到表征对目标程序攻击成功的有限状态自动机;
依据所述表征对目标程序攻击成功的有限状态自动机中的状态转移函数,生成攻击脚本。
7.根据权利要求6所述的方法,其特征在于,所述依据所述目标变量,确定用于生成攻击脚本中的动态参数的目标变量关系表达式,包括:
依据预设深度,生成二叉树;
在每个二叉树上,对非叶节点按照预设的运算列表包含的运算进行遍历,对叶节点按照目标变量进行遍历,将每个二叉树的非叶节点的一种运算组合和叶节点的一种目标变量组合构成的运算表达式,作为一种解空间树;
依据预设数量组的攻击数据流中的目标变量取值,验证解空间树的变量关系表达式是否成立,并将变量关系表达式成立的一个解空间树指示的变量关系表达式,作为所述目标变量关系表达式。
8.一种基于有限状态自动机的攻击脚本生成装置,其特征在于,包括:
提取模块,用于从客户端与目标程序之间历史产生的交互数据流中,提取攻击所述目标程序的攻击数据流和所述目标程序响应所述攻击数据流的反馈数据流;
发送模块,用于向虚拟运行环境中运行的目标程序,逐步发送所述攻击数据流,实现对所述目标程序的模拟攻击;
接收模块,用于接收所述虚拟运行环境中运行的目标程序,每次响应接收到的攻击数据流产生的响应数据流;
生成更新模块,用于在任一次的响应数据流与相应的反馈数据流间的差异数据为空,或者,所述差异数据不为空且确定出所述差异数据中内存地址变量的各个取值分别对应的内存段基址和偏移量的情况下,生成该次的状态转移函数;并将所述状态转移函数更新至有限状态自动机,所述有限状态自动机的下一个状态继承上一个状态的状态变量;
生成模块,用于在所述攻击数据流全部被发送给在所述虚拟运行环境中运行的目标程序后,若更新得到的有限状态自动机的状态表征对所述目标程序攻击成功,则依据更新得到的有限状态自动机中的状态转移函数,生成攻击脚本。
9.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,所述程序执行权利要求1~7任意一项所述的基于有限状态自动机的攻击脚本生成方法。
10.一种设备,其特征在于,所述设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1~7中任一项所述的基于有限状态自动机的攻击脚本生成方法。