数据库恢复在“伪基站”取证中的应用
胡颖
湖南省公安厅物证鉴定中心,长沙 410001

作者简介:胡颖(1985―),男,湖南邵阳人,硕士,工程师,研究方向为电子物证。E-mail:32437862@qq.com

摘要

近年来“伪基站”在实际检验鉴定工作中给我国司法部门带来了巨大挑战。本文首先简要阐述了“伪基站”的工作原理、常用的取证方法及存在的问题,然后着重介绍了“伪基站”的后台数据库文件的数据存储结构,并通过实例分析,对数据库保存的发送记录在删除前后的数据变化进行了仔细比对,证明了数据库中删除文件恢复的可行性。最后笔者利用数据库文件成功恢复提取出“伪基站”中未覆盖的发送任务记录。这种方法和经验可以应用于绝大多数“伪基站”的取证。

关键词: 伪基站; 数据库恢复; 发送任务
中图分类号:DF793.2 文献标志码:A 文章编号:1008-3650(2017)05-0350-05
Application of Database Recovery in Forensic Evidence Collection from Pseudo-base Station
HU Ying
Hunan Provincial Public Security Bureau, Changsha 410001, China
Abstract

Pseudo-base station is frequently used by culprits to conduct telecommunication frauds. With a brief introduction of its operation principle, commonly-adopted forensic evidence collection choices and problems about pseudo-base station, this paper focuses on the data-storage structure that is utilized in the database of pseudo-base station. Through an example, the changed data were carefully compared and analyzed to the database-stored sent-records before and after deletion, demonstrating the feasibility to recover the deleted records, and finally making the unmasked sent-records recovered and extracted from the database file stored in the pseudo-base station. Therefore, such a methodology and experience could be applied into forensic evidence collection for most pseudo-base stations.

Key words: pseudo-base station; database recovery; sending task

“ 伪基站” 是一种主动搜索其周边范围内的手机卡信息并通过伪装成运营商基站冒用任意号码向周边手机群发短信息的非法无线电通信设备。它经常被应用于电信诈骗犯罪、垃圾广告群发, 严重破坏我国公共电信设施的通信安全, 给人民群众的财产和人身安全造成极大的威胁和损失。近年来, 为了逃避我国执法部门对电信诈骗犯罪的严厉打击, “ 伪基站” 设备从一开始的“ 由汽车电瓶供电, 通过车载一台笔记本、一套发射设备再加配套天线” , 简化到现在的“ 由一个巴掌大的锂电池供电, 集成主板、发射设备和天线为一体, 可以随意藏在普通背包里” ; 设备操作端从一开始的由便携式计算机本地操作, 升级到现在的由手机远程登录控制; 设备存储介质从一开始的大容量硬盘, 简化到现在的普通U盘。设备成本越来越低, 犯罪行为越来越隐蔽, 犯罪痕迹也变得越来越少。当前取证工作中经常遇到检出伪基站设备发送短信数为零或者远少于量刑标准的检验结果, 给司法部门的取证工作造成巨大困难。

1 “ 伪基站” 工作原理

现在的“ 伪基站” 一般是在Ubuntu系统环境下运行, 采用GSMS、OpenBTS、GNURadio和TeamViewer等多个基于Linux系统的开源软件项目来实现其主要功能, 并通过MySQL数据库来存储其短信发送任务。用户登录GSMS程序界面并设置显示号码、业务名称、发送计数、发送内容等参数后选择发送, “ 伪基站” 即可开始运行。对于“ 伪基站” 周边范围的手机而言, “ 伪基站” 信号强度远大于电信运营商的基站信号, 手机便会自动连入“ 伪基站” , 向“ 伪基站” 发送“ Location Updating Request” 信令, 并在收到“ Identity Request” 信令回复后, 自动上报自己的IMSI(international mobile subscriber identification number, 国际移动用户识别码)[1]。“ 伪基站” 获取到周边手机的IMSI码后, 便可以向这些手机发送任意内容的短信息数据。

2 “ 伪基站” 取证方法

目前“ 伪基站” 的常规取证方法主要有以下三种途径:

1)进入MySQL数据库调取发送任务记录, 数据一般存储在一个名为“ GSMS” 的数据库的“ gsm_business” 表单中;

2)对系统中的文件“ send.data” 进行IMSI码统计, 文件一般存储在“ /var/usr/openbts” 或者“ /var/web/openbts” 文件夹下;

3)对OpenBTS的日志文件“ OpenBTS.log” 或“ syslog” 进行分析, 日志文件一般存储在“ /var/log” 文件夹下。

然而, 上述三种取证途径在现阶段经常会面临以下几个问题:

1)MySQL数据库的“ gsm_business” 表单已被清空, 通过MySQL命令行或者第三方软件查看, 均显示表单无数据;

2)文件“ send.data” 只有时间和IMSI码, 未存储发送内容, 在法庭诉讼时容易引起质疑。而且“ 伪基站” 的系统文件都是通过厂家的镜像文件还原生成, 在毫不相关的两个“ 伪基站” 中存在检出相同的“ send.data” 文件的现象;

3)在“ /var/log” 文件夹下未保存“ OpenBTS.log” 日志文件, “ syslog” 文件也只有极少量的记录信息。为了解决这些问题, 笔者对数据库文件进行大量实验测试和检验分析, 发现可以从其中提取出“ gsm_business” 表单中的发送任务, 包括未删除的所有数据和已删除的部分数据。

2.1 结构分析

前面介绍过“ 伪基站” 主要是通过MySQL数据库来存储短信发送任务, 数据库数据文件一般存储在“ /var/lib/mysql/gsms” 路径下的文件“ gsm_business.MYD” 中或者“ /var/lib/mysql” 路径下的文件“ ibdata1” 中, 这两种文件之间的数据结构稍有差别。另外, 部分“ 伪基站” 的“ /var/lib/mysql/gsms” 路径下会保存有BAK数据库备份文件, 文件名一般是“ gsm_business-############.BAK” (#代表数字, 通常为年月日时分秒), 其数据存储结构与gsm_business.MYD文件大致相同, 本文将着重介绍gsm_business.MYD和“ ibdata1” 文件的数据区存储结构。

数据库文件的数据区主要由一个或者多个数据记录项组成, 每个数据记录项构成数据库的一条记录, 它主要包含以下8个字段:id(序号)、num(显示号码)、name(业务名称)、time(任务添加时间)、count(计数)、lasttime(实际发送计数)、content(发送内容)和status(发送状态)。注意, 实际发送计数不是字段count, 而是字段lasttime[1]

2.1.1 GSM_BUSINESS.MYD分析

以CPU采用Little-Edian字节存储机制的“ 伪基站” 为例, 在图1中所展示的是正常gsm_business.MYD的一个数据记录项内容, 现对它进行结构分析, 数据记录项的结构参数详细信息见表1

图1 数据记录项(gsm_business MYD)Fig.1 Data-recorded items (gsm_business MYD)

表1 GSM_BUSINESS.MYD数据记录项结构 Table 1 Structure of data-recorded items in gsm_business.MYD file

我们通过Mysql数据库的“ Select * from gsm_business” 命令行进行查询, 可以证明上述数据解析的正确性, 查询结果见图2。

图2 查询结果(gsm_business MYD)Fig.2 Result from inquiry (gsm_business.MYD)

2.1.2 ibdata1文件分析

ibdata1文件的数据记录项结构与gsm_business.MYD不同。以CPU采用Big-Edian字节存储机制的“ 伪基站” 为例, 在图3中所展示的是正常ibdata1文件的一个数据记录项内容, 现对它进行结构分析, 详细信息见表2

图3 数据记录项(ibdata1)Fig.3 Data-recorded items (ibdata1)

表2 ibdata1文件数据记录项结构 Table 2 Structure of data-recorded items in ibdata1 file

通过Mysql数据库“ Select * from gsm_business” 命令行查询可以证明上述数据解析的正确性, 查询结果见图4。

图4 查询结果(ibdata1)Fig.4 Result by inquiry (ibdata1)

2.2 删除原理

当数据库文件的一条记录被系统删除时, 该记录对应的数据记录项不会被全部清零或更改, 系统只会更改其对应数据记录项的前面少数字节。下面本文将通过删除前后的比对实验来展示其删除原理。

2.2.1 GSM_BUSINESS.MYD删除比对

当通过数据库命令删除这条记录后, 其对应的数据记录项更改如图5所示。数据记录项的前20个字节大部分已经被“ 00” 或者“ FF” 填充, 但是主要的字段仍未更改, 如:发送内容、发送计数、任务添加时间等。

图5 数据记录项删除比对(gsm_business.MYD)Fig.5 Comparison of the deleted data-recorded items

2.2.2 ibdata1文件删除比对

ibdata1文件的删除原理与GSM_BUSINESS.MYD大体相同, 只是更改的数据位置不同而已, 主要的字段内容未被更改, 见图6。

图6 数据记录项删除比对(ibdata1)Fig.6 Comparison of the deleted data-recorded items (ibdata1)

3 实例分析

2016年, 某市一起电信诈骗案, 办案民警将一台“ 伪基站” 送检。通过采用传统的取证手段进行检验, 发现检材的“ send.data” 的IMSI数较少, 仅有27 621个, 而且任务添加时间都为2013年期间(见图7), 检材数据库查询结果则显示“ gsm_business” 表单数据任务仅2个(见图8)。然而, 经进一步检验, 笔者发现检材CPU为Big-Edian字节存储机制, 发送记录数据存储在ibdata1文件中。采用上面介绍的ibdata1数据恢复方法对其进行恢复, 检出大量未覆盖的已删除发送任务记录。下面选取其中一段数据(见图9), 对它进行结构分析:

图7 send.data文件内容Fig.7 Content of the send.data file

图8 查询结果(实例)Fig.8 Result by inquiry (example)

图9 已删除的数据记录项Fig.9 Deleted data-recorded items

1) 发送内容长度, 未更改, 值为“ 0x83” , 转换成十进制为“ 131” ;

2) 业务名称长度, 未更改, 值为“ 0x03” , 转换成十进制为“ 3” ;

3) 显示号码长度, 未更改, 值为“ 0x0B” , 转换成十进制为“ 11” ;

4) 字段id, 未更改, 值为“ 0x00000022” , 转换成十进制为“ 34” ;

5)字段num, 未更改, 值为“ 0x3138393733383535333138” , 采用UTF8编码转换后为“ 18973855318” ;

6) 字段name, 未更改, 值为“ 0x757974” , 采用UTF8编码转换后为“ uyt” ;

7) 字段time, 未更改, 值为“ 0x00001253D1A9156D” , 转换成十进制为“ 20151209104749” , 即2015年12月09日10时47分49秒;

8) 字段count, 未更改, 值为“ 0x0009AC” , 转换成十进制为“ 2476” ;

9) 字段lasttime, 未更改, 值为“ 0x04FB31” , 转换成十进制为“ 326449” ;

10) 字段content, 未更改, 长度131个字节, 值为“ 0xE58F8CE5B3B0E5BE80E8BF94E995BFE6B299EFBC8C2E2EE
59F8EE58CBAE5858DE8B4B9E68EA5E980812CE5B08FE4BBB6E5B
FABE98092EFBC8CE696B9E4BEBFE5BFABE68DB7EFBC8CE8
B68AE9878E7375762CE8AF9AE4BFA1E69C8DE58
AA13133333337333831323232203138393733383535
3331385BE585A8E585B4E8BDA6E9989F5D” , 采用UTF8编码转换后为“ 双峰往返长沙, ..城区免费接送, 小件快递, 方便快捷, 越野suv, 诚信服务13337381222 18973855318[全兴车队]” ;

11) 字段status, 未更改, 值为“ 0x000001” , 即1。

至此, 一个已删除的数据记录项被成功恢复, 其他数据记录项的提取和恢复步骤同上, 这里不再一一赘述, 恢复结果见图10。最终笔者在检材中恢复13个发送任务, 共计3 721 614条发送记录, 远远多于数据库查询得到的结果。我们可以通过time参数对系统镜像的原始数据和犯罪嫌疑人实际发送的数据加以区分。

图10 恢复结果Fig.10 Recovered result

4 讨论

通过取证实践表明, 本文介绍的方法可以成功恢复提取未覆盖的删除发送任务, 在“ 伪基站” 取证工作中有着较强的实用性和适用性。而且在对于使用MySQL数据库来存储数据的其他软件系统的取证分析工作中, 此方法可以举一反三, 通用性较强。但是, 由于删除原理不同, 此方法对于GSM_BUSINESS.MYD的数据库恢复效果不如对ibdata1文件的数据库恢复。另外, 需要注意的是, 在MySQL数据库中存储的发送任务并不包含群发号码的IMSI信息, IMSI一般存储在“ send.data” “ OpenBTS.log” 和“ TMSI.db” 三个文件中。对“ 伪基站” 取证工作应该将提取发送任务和IMSI信息相结合, 才能得到更全面的检验结果。

The authors have declared that no competing interests exist.

参考文献
[1] 曹茂虹, 王大强. “伪基站”的基本原理及取证过程分析[J]. 中国无线电, 2015(5): 14-16. [本文引用:2]
[2] 王洪庆, 王即墨, 计超豪, . “伪基站”数据取证研究[J]. 刑事技术, 2015, 40(6): 435-439. [本文引用:1]