章凇 张朝程
摘 要:近年来,电子数据取证分析技术日益成熟,大部分电子数据取证分析工具都能对主流的应用程序数据进行提取解析,提高了电子数据取证分析人员工作效率的同时也降低了电子数据取证分析人员的技术门槛。然而,在实际电子数据取证分析工作中,目前基于预设策略的电子数据取证分析工具无法智能化、自动化地对新的应用程序数据进行提取解析。如何提取解析数据量大、数据复杂的应用程序数据,这给电子数据取证分析人员提出新的挑战,成为目前取证分析工作中的難点。
关键词:Python;编程;电子数据取证;分析
中图分类号:DF793.2 文献标识码:B
The application of python programming in digtal forensics and analysis
Abstract: In recent years, the technology of digtal forensics and analysis is increasingly mature. The mainstream application data can be extracted and analyzed by most of the digtal forensics and analysis tools, so that it can improve digital forensic investigation works efficiency while also reducing the technical threshold. However, in practical work, tools which is based on default policies can not extracted and analyzed the new application data intelligently and automatically. For digital forensic investigators, it's a big challenge to extracted and analyzed the large and complex application data.
Key words: python; programming; digtal forensics; analysis
1 引言
在电子数据取证分析工作中,我们常常遇到手头上的电子数据取证分析工具预设的数据提取策略无法满足提取解析个别小众的或基于违法犯罪目的开发的特别的应用程序数据,也无法进行数据恢复等操作,给取证工作的开展带来诸多不便。目前,通常的应对做法是使用Encase、X-Ways Forensics、UFED Physical Analyzer和Digatal Forensics Framework等电子数据取证分析工具自带的脚本编译器编程提取解析数据,但此种方法仍然会受到取证软件本身设计的一些限制导致有时不能达到理想的取证效果。为填补这一漏洞,使得对这一类特殊应用程序的取证可以达到最佳效果,满足不同实战环境的取证要求,本文以一种非典型“伪基站”的主程序日志文件的编程取证为例,提出了一种根据不同应用场景使用Python编程解决特殊应用程序数据提取的思路,在实战中取得较好的效果。当然,除此之外还可以使用C/C++、C#、Java甚至Linux Shell编程实现相同的效果。本文在此只介绍Python一种。
2 “伪基站”案件的取证要点
目前,国内办理的“伪基站”案件的行为性质大部分为非法使用“伪基站”设备干扰公用电信网络信号、危害公共安全,依照《刑法》第一百二十四条第一款的规定,以破坏公用电信设施罪追究刑事责任;同时构成虚假广告罪、非法获取公民个人信息罪、破坏计算机信息系统罪、扰乱无线电通讯管理秩序罪的,依照处罚较重的规定追究刑事责任。除法律、司法解释另有规定外,利用“伪基站”设备实施诈骗等其他犯罪行为,同时构成破坏公用电信设施罪的,依照处罚较重的规定追究刑事责任[1]。
针对非法使用“伪基站”设备干扰公用电信网络信号、危害公共安全行为,最高人民法院公布了相关司法解释:造成2000以上不满1万用户通信中断1小时以上,或者1万以上用户通信中断不满1小时的;在一个本地网范围内,网间通信全阻、关口局至某一局向全部中断或网间某一业务全部中断不满2小时或者直接影响范围不满5万(用户×小时)的;造成网间通信严重障碍,1日内累计2小时以上不满12小时的,属于刑法第一百二十四条规定的“危害公共安全”,依照刑法第一百二十四条第一款规定,以破坏公用电信设施罪处3年以上7年以下有期徒刑[2]。
根据上述“伪基站”案件的量刑依据,可知“伪基站”案件的取证要点主要有“伪基站”已发送的短信内容、“伪基站”的操作系统时间、“伪基站”的中断用户通信的时间段和被“伪基站”中断通信的用户数量。其中,获取“伪基站”已发送的短信内容是“伪基站”案中电子取证的一个难点。
3 “伪基站”已发送短信内容的存储位置
嫌疑人使用“伪基站”发送短信时,通常会在“伪基站”主界面、“伪基站”的MySQL数据库文件“ibdata1”、“伪基站”的系统日志“syslog”系列文件和“伪基站”的主程序日志文件“OpenBTS.log”存储有已发送的短信内容。
4 应用背景简介
工作中发现一种非典型的“伪基站”软件,该软件操作主界面无数据显示,且通过Linux Shell命令登录“伪基站”的MySQL数据库发现“伪基站”主程序的相关记录也被清空,无法用常规方法及取证软件对软件界面及数据库中存储的发送信息条数、发送信息内容等定案关键数据进行恢复提取。经对该软件的结构及文件内容反复研究,我们发现软件的一个日志文件“OpenBTS.log”中存储有大量的可疑数据,于是决定以此为切入点,尝试采用以下解密方式恢复该日志文件中的内容,从而达到既定的获取该“伪基站”软件发送出去的手机短信息内容的取证目的。
5 “OpenBTS.log”中短信内容的手工提取解析过程
提出该算法的主要思路是,根据“伪基站”软件数据库及日志文件中存储数据的一般结构,先用关键字“addsms”将所有的疑似涉案数据二进制文件提取出来,然后根据网络上较常见的木马程序等加密解密的规则,先手工将这些二进制文件解密成正常能阅读的汉语言文字,再用編程的方式,实现取证的自动化,大大减少取证人员的重复工作量,提高取证效率。经反复试验,现将手工解密的原理介绍如下:将检材的备份镜像文件中路径“/var/log/”下的“OpenBTS.log”计算SHA-256值后复制到专用U盘。启动杀毒软件对电子物证检验工作站系统进行杀毒,杀毒结果显示电子物证检验工作站系统为安全。将专用U盘通过只读方式连接到电子物证检验工作站,打开Terminal,进入到“/media/root/761E61A1E35D3B9/”目录下,校验“OpenBTS.log”SHA-256值一致性后,使用“cat OpenBTS.log | grep 'addsms' | head -2”,命令运行结果如图1所示。
使用文本编辑器将第二行短信数据中的二进制数值按顺序以1个字节(8位)为单位转换为十六进制数值,十六进制数值长度不足两位的在前面补0。转换后的十六进制编码短信数据如图2所示。
使用文本编辑器将十六进制编码短信数据按顺序每隔2个字节插入“\u”,连接成Unicode编码,操作完成后如图3所示。
使用Unicode编码转换工具将Unicode编码短信数据解码后如图4所示。
使用“cat OpenBTS.log | grep 'raw=(.\{63,\})' | head -2”。
6 程序设计
根据“OpenBTS.log”中短信内容的手工提取解析方法画出流程图,如图5所示。
有了以上手工解密的原理和流程图,现使用Python编程实现对“OpenBTS.log”短信内容的自动提取解析,该程序的源代码及注释如图6所示。
该Python程序在Linux kali 4.6.0-kali1-amd64、Python 2.7.12下正常运行,程序的部分运行结果如图7所示。
参照“OpenBTS.log”中短信内容的提取解析方法,可提取解析出“伪基站”的系统日志“syslog”系列文件中的已发送短信数据,具体提取解析步骤和Python程序实现就不再一一详述。
该算法另辟蹊径,在无法实现对数据库主要数据的恢复的情况下,从其各类系统及操作日志入手,将日志中经过加密的各种数据使用二进制转UNICODE的解密方法,曲线实现对软件存储及发送的手机短信内容进行的取证目的,在实战中取得了较好的效果,同时大大提高了对“伪基站”类软件的取证效率,经测试,目前市面上大多架构类似的“伪基站”软件都可按照本文介绍的方法进行关键数据的恢复和提取。
7 结束语
近年来,在针对“伪基站”的电子取证软件尚未普及之时,本文所使用的Python程序已成功对多起“伪基站”案的“OpenBTS.log”进行提取解析。随着电子技术和软件产业的飞速发展,未来的电子数据取证工作将会遇到更多、更新颖的数字化设备和软件,必将对电子数据取证分析人员的技术水平提出更高的要求。与其坐等电子取证软件的更新升级,不如提高自身的电子数据取证分析水平,更快更好地完成电子取证工作。
参考文献
[1] 最高人民法院,最高人民检察院,公安部,等. 关于依法办理非法生产销售使用“伪基站”设备案件的意见[S]. 公通字﹝2014﹞13号文件.
[2] 最高人民法院关于审理破坏公用电信设施刑事案件具体应用法律若干问题的解释[J]. 人民检察,2005, (03):64.
[3] 曹茂虹.王大强.“伪基站”的基本原理及电子取证分析[J],信息安全与技术,2015,04(6),73-75.
[4] 王隆娟.移动支付安全问题探索[J].信息安全与技术,2015,01(6),7-10.
[5] 王李平.孙春雷.王琛.代杰.伪基站数据的电子取证分析[J].警察技术,2016,05,56-58.
[6] 刘浩阳.利用伪基站的电信诈骗侦查取证.[j].警察技术,2016,02,8-10.
[7] 岳力.非法使用“伪基站”的定性和量刑[J].人民司法,2015,16,27-28.