万雪勇
(江西警察学院,江西 南昌 330100)
近几年来,随着互联网的普及,网络传销案件逐年上升,其常见形式是以电子商务、投资理财、资本运作为幌子,假借“互联网+”和大众创新万众创业的名义,大力鼓吹快速致富的神话,欺骗不明真相的人缴纳入门费成为会员,并通过会员进一步发展其他会员,形成层级关系,最终少部分人获得非法暴利,绝大多数会员血本无归,这是一种扰乱经济秩序、影响社会稳定的违法犯罪行为。我国《刑法》中虽没有网络传销的罪名,但网络传销属于传销行为,须承担从事传销的法律责任。
网络传销活动具有虚拟性、欺骗性、隐蔽性、跨地域性、查处被动性等特点。[1]网络传销的犯罪行为及其体现的证据形式都是以电子物证的形式存在于网络中,这使得公安机关在侦办网络传销案时面临案件定性难、案件的电子证据分析难、证据分析结果的可视化显示难等问题。[2]
对网络传销案进行取证及分析鉴定,需要提取大量电子证据,例如:网站网页及源代码、数据库、相关应用程序及帮助文件、电子邮件、微信及QQ记录等,其中数据库的取证与分析是关键。
数据库种类众多且技术封闭,大部分取证工具并不支持对数据库的取证和分析,数据库中巨大的数据量会导致取证工具运行效率低下甚至停止工作,目前数据库取证仍然靠个人经验与工具软件分析相结合的方式,这使得数据库的取证一直处于比较低层次的发展阶段。
传销网站运行时,其后台数据库一般始终处于在线状态,对数据库的在线取证,没有固定的方法和步骤,一般包括这几个方面:
1.确定数据库类型及状态。首先应确定数据库类型,不同类型的数据库操作方法不同,即使同一类型的数据库,不同版本的操作方法也有区别,一般一个网站使用一种数据库,但也有同时使用多种数据库的情况。从网站网页的源代码及配置文件 (例如:web.config文件)可分析其使用的数据库类型,常见的应用系统组合是PHP+MySQL及ASP.Net+SQL Server。
其次应确定数据库状态,包括系统是否正常运行、用破译的密码能否正常登录、权限是否被修改等。
2.获取易丢失数据。系统运行时,其内存中保存了大量操作系统和数据库的缓存信息,数据库在线取证时应利用工具对内存进行镜像,提取操作系统和数据库的动态信息,常用的工具有Windows Forensic Tools、SQLCMD 等,对于 SQL Server,还可通过跟踪Plan Cache对象获取内存中的数据。
3.获取数据库数据文件。每个数据库都包含数量不等的数据文件,用于保存数据的具体内容,获取数据库数据文件是取证的重要目标。SQL Server的数据文件包括扩展名为“.mdf”的主数据文件和扩展名为“.ndf”的次数据文件,Oracle的数据文件为一系列扩展名为“.dbf”的文件,MySQL根据其引擎不同,数据文件主要有两类,一类是扩展名为“frm”和“ibd”的文件组合,另一类是扩展名为“frm”、“MYD”和“MYI”的文件组合。
获取数据文件常见的做法是,通过符合司法要求的技术手段,利用数据库的备份功能,将在线数据库中的数据转存到备份文件,再获取此备份文件并将其还原到重构的数据库环境中。
4.获取数据库日志和操作系统日志。数据库日志包括事务日志、错误日志和代理日志,操作系统日志包括应用程序日志、安全日志、系统日志、IIS日志等。[3]数据库系统出于性能上的考虑,会将用户对数据的改动操作记录到日志文件中,SQL Server的日志文件为扩展名为“.ldf”的文件,Oracle和MySQL的日志文件为扩展名为“.log”的文件。
数据库日志文件的获取方法与数据文件的获取方法类似,利用日志文件,可辅助分析数据文件并在一定程度上恢复用户删除的数据,这种分析大多靠分析者的经验,也可利用一些工具软件,如利用LogExplorer可对SQL Server进行日志分析和数据恢复。[4]
5.分析数据库临时表。数据库临时表保存在物理硬盘上,但只是暂时保存,系统重新启动时会使以前的数据丢失,获取并分析临时表有助于对数据文件的分析。SQL Server的临时数据库是其TempDB数据库,Oracle的临时数据库在其temp表空间中。
数据库的离线取证,是指数据库处于非活动状态,通过符合司法要求的程序获取数据库文件或备份文件,重构数据库环境或分析其元数据,从而分析数据库内容。
对于Access、SQLite等直接可读的数据库,可直接分析、查询其中的数据。
对于 SQL Server、Oracle、MySQL 等企业级数据库,需要使用其数据库文件或备份文件进行数据库重构,可重构到同类数据库管理系统中,也可重构到通用的数据库管理软件(例如:Navicat)中,重构数据库后,即可使用SQL语言进行各种统计和查询。
同时,对于传销网站应用系统,不仅需要重构数据库,还需重构应用系统的运行环境,取证报告应当说明应用系统的查询结果与后台数据库的查询结果一致。
在笔者2017年参与取证及鉴定的一起网络传销案中,涉嫌网络传销的公司网站服务器位于浙江阿里云计算有限公司,办案单位在阿里云计算有限公司的协助下,获取了涉案公司网站服务器的镜像文件,我们在电子物证取证塔设备中使用取证大师专业版软件分析送检的镜像文件,提取了数据库、网站源代码等数据,并在取证设备中重新构建了网站运行环境,该涉案公司的网站后台数据库使用的是SQL Server数据库,将提取的数据库文件附加到SQL Server中进行分析,获得了该公司的大量数据,定性分析出该案件是一起涉嫌网络传销案件,定量分析了该公司的各项资金数据、人员数据、会员的上下线人数、层级关系及结构、涉案资金等。
数据库源分析指根据依法获取的传销网站源代码和数据库文件,在本地取证设备上构建网站运行环境,通过查询、统计、源代码分析等操作,与在线环境进行比对,从而认定获取的数据库是传销网站使用的数据库。数据库源分析,主要方法包括数据库的指向分析、数据库的后台运行分析、源程序与数据库对应分析、对数据库的SQL语句操作分析等。[5]
刑法修正案(七)在《刑法》第224条后增加了之一,规定了组织、领导传销活动罪,对传销活动的组织者、领导者,应当依法追究其刑事责任。2013年11月14日最高人民法院、最高人民检察院、公安部发布了 《关于办理组织领导传销活动刑事案件适用法律若干问题的意见》,其中关于传销组织层级及人数的认定问题规定,传销组织内部参与传销活动人员在三十人以上且层级在三级以上的,应当对组织者、领导者追究刑事责任。因此,传销案中对传销人员的层级结构分析是取证及鉴定的重点之一。
一般传销网站并不提供查询任意会员所有下线明细的功能,有的甚至查询会员直接下线的功能都没有,这种情况下,我们可对依法获取的网站后台数据库进行查询分析。对数据库的分析可借助第三方工具进行辅助,例如:IBM i2 Analyst's Notebook,也可直接利用SQL语言进行查询分析,SQL的优点是简洁、直观,在笔者出具的多起网络传销案鉴定报告中,均是直接利用SQL。
传销人员均具有上下线层级关系,这种关系一般记录在数据库中某一个或多个表中,利用SQL可查询其层级结构。例如,某网络传销网站后台数据库中有一个会员表MEMBERS,其关键字段有:mID(会员编号)、mAcName (会员名)、mUplineMID (上线编号)、mUplineMAcName(上线会员名),查询会员的直接下线,简单的利用 “Select*From MEMBERS Where mUplineMID=会员编号”即可,查询会员的下线层级数和下线人数,可利用SQL Server的递归公用表表达式(CTE),SQL程序及结果如图1所示。
图1 查询会员下线人数及下线层级数
对上述SQL语句进行修改,可图形化展示传销会员的下线层级结构,将传销会员的下线层级结构以图形化的方式提供给检察院、法院,有助于网络传销案的诉讼。SQL程序如图2所示。
图2 图形化展示会员下线层级结构的SQL程序
程序运行结果(部分截图)如图3所示。
图形化展示传销会员的层级结构还可借助第三方工具软件,例如:ECharts,图4是用ECharts生成的一个传销会员的下线层级结构图,过程不赘述。
《关于办理组织领导传销活动刑事案件适用法律若干问题的意见》中关于“情节严重”的认定,规定“组织、领导的参与传销活动人员累计达一百二十人以上的”、“直接或者间接收取参与传销活动人员缴纳的传销资金数额累计达二百五十万元以上的”等情形认定为“情节严重”。因此,在传销案的分析鉴定中,对犯罪嫌疑人组织、领导的参与传销活动人员数量和其直接或者间接收取参与传销活动人员缴纳的传销资金数额的统计尤其重要。
图3 图形化展示会员下线层级结构(部分截图)
图4 ECharts生成的会员下线层级结构图
传销案中的汇款金额、提现金额、各类奖金数额、各类转换币金额等往往记录在多个数据表中,可以参照网页源代码,逐一分析表中各字段含义,编写适当的SQL语句及程序进行统计。
例如,笔者曾参与取证及鉴定的一个传销网站数据库共包含481个表、136个视图、281个存储过程、62个表函数,数据量非常大,经过分析,我们编制了多个SQL查询程序,提取了该公司大量重要数据,数据显示公司共有会员119900余人,遍布全国20余省市自治区,其中最高级别(七星级)会员多达57人,层级数最大224层,公司非法资金总额超过63亿元,图5示例的是统计该公司某会员的各项资金数据。
图5 统计某会员的各项资金数据
近年来,网络传销案件呈多发态势,该类案件电子证据众多,其所涉数据库中的数据量大且数据间的关系复杂,对其分析具一定难度。本文结合笔者近年参与的多起网络传销案的取证和鉴定,力求探寻出网络传销案中数据库的取证和分析的一般方法,以期为公安实战部门打击该类案件提供一点借鉴