买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:北京航空航天大学;绿盟科技集团股份有限公司
摘要:本发明公开了一种工业控制程序自动化逆向分析方法与流程。首先,从互联网上收集的格式相同的工业控制程序文件并存储在同源格式文件目录下,对同源格式文件目录下的工业程序文件进行递归式手工分析,归纳文件头长度和内部字段信息,确定子程序段分隔符;其次,根据分隔符划分子程序段,确定全局变量初始化程序段和一般程序段,确定静态链接库函数、用户自定义函数、动态链接库函数、设备IO操作函数,确定函数调用关系并建立函数指纹数据库;最后,编写自动化分析脚本,实现对不同格式的工业控制程序文件的自动化逆向,基于程序反汇编以及函数识别的结果,使用文本图形描述语言DOT及Graphviz工具包构建函数调用关系图,以实现逆向结果的可视化展示。
主权项:1.一种工业控制程序自动化逆向分析方法,其特征在于包括如下六个步骤:程序收集、程序解析、子程序反汇编、函数识别、自动化逆向、结果可视化:S1、所述程序收集步骤:收集不同品牌控制器中的工业控制程序文件,将格式相同的工业控制程序文件存储在同源格式文件目录下;S2、所述程序解析步骤:对同源格式文件目录下的工业控制程序文件进行递归式手工分析,归纳文件头长度和内部字段信息,确定子程序段的分隔符;S3、所述子程序反汇编步骤:根据分隔符划分子程序段,确定全局变量初始化程序段和一般程序段;S4、所述函数识别步骤:根据子程序反汇编结果,确定静态链接库函数、用户自定义函数、动态链接库函数、设备IO操作函数,确定函数调用关系并建立函数指纹数据库;S5、所述自动化逆向步骤:根据步骤S2-S4,编写针对其他格式工业控制程序文件的自动化分析脚本,对格式相同的待分析工业控制程序文件执行步骤S2-S4,使用Python中的angrutils库对函数调用关系进行绘制,从而构建工业控制程序文件的控制流图;S6、所述结果可视化步骤:基于步骤S5产生的工业控制文件的控制流图,创建具有节点、边和权重的函数调用关系图,使用文本图形描述语言实现逆向结果可视化;在步骤S2中,所述程序解析步骤包括以下操作:S21、打开同源格式文件目录,使用HEXEditor工具递归打开目录中格式相同的工业控制程序文件,并将其对应的16进制字符串导出;S22、编写正则表达式脚本,对导出的16进制字符串进行匹配,找出字符串中包含的固定字段和固定结构,并统计固定字段的长度;S23、使用工业编程软件编写梯形图程序并编译,生成格式相同的工业控制程序文件,结合步骤S21和S22,对编译后的工业控制程序文件进行比较,确定文件头信息和文件中其他固定的信息;S24、在Linux系统中使用Radare2工具对格式相同的工业控制程序文件进行反汇编,生成汇编指令集,并确定该格式工业控制程序文件的汇编指令体系架构;S25、结合汇编指令体系架构,根据汇编指令集确定工业控制程序文件中子程序段的入口指令和出口指令,形成子程序分隔符;在步骤S3中,所述子程序反汇编步骤包括以下操作:S31、使用工业编程软件加载工业控制程序文件,记录程序中定义的全局变量;S32、在工业控制程序文件对应的汇编指令中搜索全局变量名称,结合子程序分隔符确定全局变量初始化程序段;S33、使用符号执行工具angr解析子程序执行结束时的内存信息,结合子程序段分隔符确定内存初始化子程序段;S34、使用angr解析内存初始化子程序段,提取该子程序段在整个工业控制程序文件中的偏移,并重建调用表;在调用表中检索调用的目标关键字“DCB"SysDebugHandler"”,确定工业编程软件动态调试处理子程序段;在步骤S4中,所述的函数识别步骤包括以下操作:S41、使用IDAPro自带的flair工具加载工业控制程序文件,生成.pat文件,结合sigmake工具从.pat文件中得到.sig文件,分析.sig文件以识别工业控制程序文件中的库函数,从而识别静态链接库函数和动态链接库中的函数信息;S42、根据步骤S31-S34和S41,可得到执行静态链接函数FFB的关键子程序:执行主要功能的StaticLib子程序、初始化本地内存的StaticLibINIT子程序,以及用户自定义的功能执行子程序与初始化功能执行子程序;S43、根据工业控制程序文件中的函数类型确定调用表:函数若以动态链接形式存在,则根据动态库中的空结尾字符串后的两字节的数据值计算跳转偏移值以确定调用表位置,继而确定函数调用关系;若函数以静态链接形式存在,基于步骤S34中angr解析的信息,提取所有分配给函数的偏移量的索引确定调用表位置,继而确定函数调用关系;S44、利用工业编程软件载入工业控制程序以获取工业控制设备的硬件结构信息;S45、基于步骤S44中获取的硬件结构信息,提取工业控制设备的IO函数内存映射图并进行存储,创建设备IO函数数据库;S46、将函数的操作码进行连接形成字符连接序列,使用SHA-256算法计算字符连接序列的哈希值以生成能够唯一标识函数的指纹签名,构造函数指纹数据库。
全文数据:
权利要求:
百度查询: 北京航空航天大学 绿盟科技集团股份有限公司 一种工业控制程序自动化逆向分析方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。