新型涉网犯罪动态网站debug重建技术研究
任风凯1, 张冬2, 张莹1, 郭健1, 巩方志1
1.山东省滨海公安局,山东 东营 257100
2.山东省公安厅物证鉴定研究中心,济南 250014

第一作者简介:任风凯,男,山东德州人,学士,高级工程师,研究方向为电子物证检验。E-mail: renfengkai@163.com

摘要

在对新型涉网犯罪的打击过程中,涉案网站的重建是取证的关键环节,而在实战中,网站的重建往往会遇到各种各样的问题,成为困扰基层刑事技术民警的技术瓶颈。如何能够快速、高效地重建涉案动态网站,成为公安刑事技术队伍面临的亟待解决的问题。本文所述的动态网站重建技术核心是把软件开发过程中的debug技术运用到刑事技术领域网站的重建和重构的过程中,快速找出网站重构过程中遇到的问题,定位到相关的源代码位置,从而通过修复或者更改源代码,跳过网站重建过程中遇到的障碍,快速高效地重建涉案动态网站。在网站程序运行到断点时,debug技术允许技术人员查看某些变量的值,包括全局变量及局部变量,能更快地掌握代码执行的逻辑和流程。该技术是计算机软件开发技术在公安刑事技术领域的创新性应用,能在实战中取得事半功倍的效果。

关键词: 涉网犯罪; 网站重建; debug法; 动态网站; 应用技术
中图分类号:DF793.2 文献标志码:A 文章编号:1008-3650(2022)06-0566-07
Novel Debug-relied Stratagem Enabling Reconstruction/Re-entry into Dynamic Websites Involving Crimes
REN Fengkai1, ZHANG Dong2, ZHANG Ying1, GUO Jian1, GONG Fangzhi1
1. Shandong Provincial Direct-governed Binhai Public Security Bureau, Dongying 257100, Shandong, China
2. Physical Evidence Identification and Research Center of Shandong Provincial Public Security Department, Jinan 250014, China
Abstract

For fighting against the network-related crimes, the re-entry/reconstruction of the involved websites is crucial to collect the evidence. In practice, it is found that almost every telecom-network fraud involves with the website-ecological server showing: in one case directly sending the victim the domain name of an investment website that allows the suspect to log in via the browser, or in other case having the mobile-phone-adapted apps encapsulated with the portal of the targeted website where to let the culprit enter by mobile devices, and/or any other tricking ways alike. Obviously, it is the server that stores the core background data of those fraud-involved websites. At present, the criminal investigators can generally analyze the entry domain name of the involved website, and/or obtain the website source code and relevant database through the network security department, yet are usually difficult to rebuild/re-enter the targeted website locally. The novel debug-relied stratagem enabling re-entry/reconstruction into the dynamic websites relating to network crimes can effectively solve the above problems. Such a stratagem described in this paper utilizes a variety of technologies comprehensively, placing its core at applying the debugging operation into modulating for reconstruction/re-entry of the targeted website so as to quickly find out the problems encountered and locate the relevant source codes. Thus, some source codes can be repaired or changed to have the involved website rebuilt/re-entered when the technicians have solved the breakpoints at any position of related code, and/or explored the website program running about its correlating global and local variables to ascertain the specified ones so that the logic and process of related code execution have been grasped clearly. For the technicians having the required knowledge and competence, they can master this debug-relied stratagem skillfully after short-term training and technical tutoring. In terms of applicable scenarios, this stratagem is adapted not only to the websites developed in PHP language but also to those in Java, just coincidentally meeting with the current situation that the two types of website are the main dynamic ones involving with network-related crimes. Conducively, the requirements for the stratagem to deploy, e.g., the plug-ins, IDE development tools and extensions, are free and open of source, hence no grounds to purchase any charging software at all but tending to high scalability for use.

Key words: network-related crime; website reconstruction; debugging; dynamic website; applicable technology

近年来, 电信网络诈骗犯罪高发, 打击治理难度不断增大。在实际的电信诈骗案件侦破中, 往往面临着取证难的困境, 其中涉案网站的重构对于深挖犯罪、串并案件具有重要的意义, 但也成为了困扰基层民警的技术瓶颈。在新型涉网犯罪的打击和取证过程中, 如何能够快速、高效地重建涉案动态网站, 成为公安刑事技术队伍面临的亟待解决的问题。

本文介绍了一种新型涉网犯罪动态网站debug重建技术, 能够快速、高效地重构动态网站。其将软件开发过程中使用的debug代码调试技术运用到刑事技术领域, 在新型涉网犯罪动态网站的重建过程中, 根据网站架构的不同, 选用不同的debug技术快速找出网站重构过程中遇到的问题, 定位到相关的源代码位置, 在编辑更新代码后, 对网站进行试运行, 如果仍未能重构成功, 则进行二次调试, 直到网站能够访问成功[1]。在新型涉网犯罪的打击取证过程中会遇到各种架构和语言开发的网站, 通过应用此技术能够成功重建大部分网站, 希冀能为相关案件的侦破提供参考帮助。

1 动态网站debug重建技术应用

debug是将编制的程序投入实际运行前, 用手工或编译程序等方法进行测试, 修正语法错误和逻辑错误的过程。这是保证软件、网站等信息系统正确性的必不可少的步骤。网站或者软件开发完成后, 必须送入计算机中测试, 根据测试时所发现的错误, 进一步诊断, 找出原因和具体的位置进行修正, 从而保证软件程序顺利运行。debug技术是网站开发过程和错误修正过程中必须要用的技术手段, 此动态网站重建技术的核心就是把debug技术运用到涉网犯罪网站的重建和重构的过程中, 使用该技术检查和解决网站重构过程中遇到的问题, 比如代码的问题、数据库连接的问题等等。

1.1 技术原理

以PHP网站调试中用到的xdebug技术来简要介绍debug技术的原理。xdebug远程调试分为两部分:调试客户端和xdebug服务端。前者是运行代码调试器的地方, 比如Visual Studio Code、IDEA、Eclipse、PHPstorm等IDE, 后者是xdebug运行的地方, 当尝试使用xdebug进行调试时, 客户端会监听一个端口等待xdebug来连接, 一旦连接成功, 双方就开始通信, 进行代码调试。

图1为xdebug运行的简要过程, 运行步骤如下:

1)IDE监听一个调试端口, 默认是9000, 可以自行配置。

2)用户访问右边PHP环境的server, 这里使用浏览器访问。

3)xdebug主动去连接IDE的9000端口, 连接成功后, 调试开始。

图1 debug技术图解Fig.1 Passage of communication via debugging

图2展示了在Visual Studio Code中使用xdebug扩展工具调试PHP网站的界面。

图2 Visual Studio Code软件的调试界面Fig.2 The interface of debugging with Visual Studio Code

图中红色原点为断点, 技术员可以根据需要在网站源代码的任意位置设置断点, 以查看网站在访问过程中的运行状态, 从而找出问题所在。在运行到断点后, 程序会暂停, 等待程序员的下一步命令。调试人员可以根据调试需要进行以下操作:继续(F5)、单步跳过(F10)、单步调试(F11)、单步跳出(Shift+F11)、重启(Ctrl+Shift+F5)、停止(Shift+F5)。

运行的每一步都可以通过Visual Studio Code的变量查看区域查看此时的变量值, 如全局变量和局部变量, 通过变量的值可以判断程序运行是否正常, 从而诊断出网站系统重构的问题所在。如可以通过变量的值判断访问数据库是否成功, 数据库数据是否读取成功等。

1.2 应用步骤

在使用新型涉网犯罪动态网站debug重建技术重建涉案网站时, 需要遵循一定的步骤, 以PHP网站为例, 简要步骤如下:

1)分析网站源代码

判断网站编程语言, 常见的涉案网站编程语言有java和PHP; 再分析网站开发框架, PHP语言开发的网站框架有thinkPHP、dedeCMS、Yii2等; 最后再根据网站框架, 或者日志文件找到网站后台入口地址。其中网站后台入口地址的查找难度最高, 有的网站入口较为简单, 有的则难以查找, 常用的后台入口查找办法有以下几种:

a) 日志分析法。查看网站的日志信息是较通用的办法, 找到管理员登录的记录从而找到后台入口。

b) 框架分析法。有时调证回来的网站数据中没有日志信息, 或者网站不存储日志, 此时可以根据网站开发的框架找到默认的入口, 比如thinkphp框架、dedecms等常用网站框架, 如果程序员没有更改, 框架的入口都是相对固定的。通过debug技术还可以发现网站是否设置了伪静态, 据此可以对网站入口url进行修正。

c) 检索法。在源代码中检索“后台”“admin”“admin_index”等关键字, 在检出的数据中查找。

d) 探测法。网站搭建好后, 可以在浏览器地址栏中直接输入“http://IP地址:端口”进行访问, 查看网站跳转的地址, 在跳转地址的端口后面添加“/index.php”, 再尝试是否能成功访问。

e) 代码分析法。从网站的入口文件index.php开始, 逐步分析网站的源代码[2]

2)部署网站和数据库

首先安装nginx、tomcat、apache等web服务器软件和mysql、sqlserver等数据库软件, 然后把调证获取的网站部署到web服务器, 把数据库文件导入本地或者云服务器数据库, 以上内容也可以通过宝塔面板、phpstudy等工具进行搭建[3]

3)对网站进行试运行, 观察网站运行状态

通过网站的入口url访问网站后台首页, 这时如果访问成功, 则直接跳到步骤8; 如果访问失败, 则进入下一步。

4)设置断点

若网站访问失败, 则根据网站执行顺序, 在相应源代码区域设置断点。

5)进行debug

开启调试模式后, 再次访问网站。

6)定位源代码区域

通过快捷键控制代码执行流程, 或者根据需要继续增加断点或调整断点位置, 该阶段会涉及网站开发框架的知识, 需要技术员对相应的框架有一定的了解。

在代码执行时, 网站系统内的类、方法、函数等会互相调用, 需要细心分析每个函数或者方法的功能。需要注意以下问题:

a) 网站的配置文件要仔细阅读, 比如数据库连接配置文件、网站入口文件、网站的总配置文件等。

b) 当系统执行到网站底层框架代码时, 一般可以直接跳过, 因为网站开发人员在基于框架进行网站二次开发时, 一般不会更改底层的代码程序, 只需要关注网站开发人员自己编写的代码文件即可。

7)编辑修改源代码

代码执行到断点处会暂停, 等待下一步指令, 根据网站访问失败的原因, 对相应的代码段进行修改。根据出现问题的不同, 采取不同的修改策略:

如果网站进入了管理员验证代码段, 因为验证失败而导致访问失败, 这种情况可以直接删除或注释验证代码段; 验证的内容可能不同, 比如验证端口、验证密码、验证登录IP、验证安全码、验证邀请码等, 一般都可以通过删除或者注释代码段解决。如果是数据库连接或访问失败, 则可以去修改数据库连接配置文件, 改成正确数据库账号密码。如果是IP地址限制问题, 则可以把本地IP地址改为允许的IP地址, 或者把允许的IP地址改为本地IP地址。如果遇到伪静态的情况, 则需要更改网站的入口url地址, 在IP地址和端口后面插入字符串“index.php”, 再次尝试访问[4]

值得注意的是, 当前比较成熟的网站框架一般会把一些常量统一放到一个文件内, 在需要查看某个常量值时, 可以通过VScode、notepad++等工具的检索功能, 定位到统一存放常量的文件位置, 查看某个常量具体的常量值。

第7步的操作是一个迭代的过程, 一般都会尝试多次。在源代码修改之后, 也可以根据需要设置新的断点, 重新运行调试网站。

8)登录网站后台

后台首页成功打开后, 需要输入账号和密码, 寻找后台账号和密码的方法有以下几种:

a) 破解法。数据库内一般会有一张数据表专门用来存储管理员的账号密码, 当然也有可能把管理员和普通用户的账号密码放在一起。该数据表的密码字段一般存放密码的密文, 需要进行破解, 常见的破解网站有cmd5.com和socmd5.com, 一般简单的密码都能够顺利破解。破解法是用得最多的办法, 但是如果管理员密码较为复杂, 则不适用破解法。

b) 覆盖法。如果破解不了, 则需要通过debug技术去源代码内找到加密算法, 步骤也是先设置断点, 然后根据程序运行逻辑找到加密函数, 在加密函数内找到加密算法, 根据加密算法制作一个简单密码的密文, 覆盖到数据库管理员账号的密码字段, 保存数据库后重新登录管理员后台页面, 这时可以正常登录。需要注意的是, 在使用debug技术进行代码溯源时, 需要区分普通用户的加密算法和管理员的加密算法可能不同。覆盖法的好处是适用性强, 一般都可以使用该办法解决, 唯一的不足就是需要更改数据库的内容, 与保持数据原始性的取证原则矛盾。另外, 在设置断点位置时有一个捷径。在后台登录页面能够打开之后可以随便输入常用的弱口令, 如果弹出错误提示, 则把错误提示复制下来, 放到源代码中去检索, 从而定位到密码验证函数所在的位置, 在此处设置断点, 可以更快地找到加密算法所在的位置。

前两种方法的使用前提是知道数据库中哪张表是管理员表, 有时遇到的数据库内数据表数量较多, 难以确定管理员表的表名, 这种情况下可以通过查看数据库日志的方法来解决。比如mysql数据库中, 可以通过查看一般查询日志来确定管理员表的表名。

c) 绕过法。运用绕过法的前提是对代码的逻辑已经完全读懂, 在适当的逻辑语句上进行修改, 比如在进行管理员登录验证时, 将if语句后面的判断表达式改为“1”或“true”, 或者改为“1==1”, 这样可以不经判断, 直接进入后台页面。该办法的优点是简单, 难点是需要读懂后台逻辑代码, 如果模棱两可的话, 尽量不要使用该种办法。

d) 日志分析法。日志分析法是在前三种方法都无法解决问题的情况下使用, 在网站的日志中检索管理员登录的记录, 有一定可能会找到网站管理员登录的账号和密码。

在进行代码编辑的时候一定遵循取证的原则, 尽量保持原始数据的完整性, 不更改或者少更改原始代码和数据库的数据[5]

9)分析后台数据

网站后台登录后, 则能够看到后台的全部数据, 网站成功完成重建[6]

图3为以上网站重建步骤的流程图:

图3 网站重建步骤流程图Fig.3 Flow chart of website reconstruction/re-entry

2 案例应用
2.1 案例一

在一起电信诈骗案件的侦办中, 办案部门通过技术手段获取了涉案的thinkphp架构网站后台源码和数据库, 但在网站搭建时发现首页无法访问, 多次尝试仍无法重建成功。技术人员在本地安装了Visual Studio Code软件, 并安装了用于debug的扩展, 通过使用新型涉网犯罪动态网站debug重建技术, 成功找到了网站无法重建的原因, 即网站的伪静态未进行设置。在网站的后台地址中添加index.php后, 成功打开了网站后台首页。后在登录时无法绕过后台管理员密码, 使用debug技术进行调试时, 在局部变量栏抓取到了从数据库读取的管理员密码的密文字符串(如图4所示), 将该字符串在cmd5.com网站上进行撞库后找到了管理员的登录密码, 成功登录网站后台。

图4 案例一debug技术图解Fig.4 Case 1: logging into a website involving with telecom fraud via debugging to have the passage route communicated

2.2 案例二

在另一起电信诈骗案件的侦办中, 技术人员在 重建一个PHP网站的过程中打开了网站后台首页, 但登录时一直提示“请使用管理员登录端口”, 且通过现有信息无法确定管理员登录端口号。技术人员 运用新型涉网犯罪动态网站debug重建技术, 通过设置断点, 定位到了与验证登录端口相关的代码段, 通过添加注释符, 注释掉了该段代码, 成功登录网站后台(图5)。

图5 案例二debug技术图解Fig.5 Case 2: logging into a website involving with telecom fraud via debugging to have the passage route communicated

3 讨论

在新型涉网犯罪案件网站后台数据的分析过程中, 普遍面临着网站的重建问题。在实战中发现, 几乎每一起电信网络诈骗案件都涉及与案件相关的网站服务器[7]。有的是直接给被害人发送一个投资网站域名, 让其通过浏览器登录; 有的是把网站的入口封装到涉诈app里面, 通过手机app进行登录。无论何种方式, 涉案后台的核心数据都存储在网站的服务器里面。

当前刑事技术部门一般都能分析到涉案网站的入口域名, 并通过网络安全部门调取到网站源码和数据库, 但难以顺利地进行网站本地重建。而网站源码本身不包含涉案数据, 数据库里的数据也无法直接进行分析研判, 很多字段都是英文单词或拼音缩写, 要想直观地把数据展示出来, 或者高效地分析后台数据, 必须要把网站搭建起来。若调证的是服务器镜像, 则一般情况下将镜像仿真后再修改IP地址, 或者启动相应服务, 就可以访问网站, 但很多时候只能获取到网站源码和数据库, 没有其他任何配置信息, 则在网站重建时就会遇到各种各样的问题。这时新型涉网犯罪动态网站debug重建技术可以有效解决此类问题。

新型涉网犯罪动态网站debug重建技术通过动态的方法对网站源码进行分析, 技术员可以按照网站运转的逻辑循序渐进地分析, 一步一步执行命令, 在执行完每一步代码后, 通过查看变量值和错误提示, 顺利找到问题, 从而修改代码, 越过障碍, 使网站顺利重建, 大大提高了涉案动态网站重构的成功率。这样的分析方法非常有利于技术员了解网站的架构和运转逻辑, 在一些跑分网站、博彩网站、虚假投资网站的分析过程中, 效率非常高。如某网站中被害人的账面资产被人工设置为零, 可以通过该应用技术动态分析其中账面资产是如何变为零的, 以及相关的源代码位置, 为办案单位提供证据支持。

该技术对应用人员的软件技术水平有一定的要求, 但经过短期培训和技术指导都能够熟练掌握。在适用场景上, 不仅适用于PHP语言开发的网站, 也适用于java语言开发的网站, 这两类网站目前是涉案动态网站主要组成部分。该技术在应用过程中所使用的插件、IDE开发工具、扩展均免费、开源, 无需单独购买任何收费软件, 在使用上具有很高的可推广性。

参考文献
[1] 吴春生, 邱敏. ASP动态网站信息电子取证方法[J]. 刑事技术, 2010(5): 43-45.
(WU Chunsheng, QIU Min. The method for obtaining electronic evidence from ASP dynamic website[J]. Forensic Science and Tehnology, 2010(5): 43-45.) [本文引用:1]
[2] 刘军. 基于PHP技术的动态网页设计[J]. 信息记录材料, 2021, 22(10): 142-143.
(LIU Jun. Dynamic webpage design based on PHP technology[J]. Information Recording Materials, 2021, 22(10): 142-143.) [本文引用:1]
[3] 王跃进, 舒大荣. Nginx+PHP+MySQL服务器环境搭建技术实践[J]. 数字技术与应用, 2021, 39(3): 144-146, 149.
(WAGN Yuejin, SHU Darong. Nginx+PHP+MySQL server environment construction technology practice[J]. Digital Technology and Application, 2021, 39(3): 144-146, 149.) [本文引用:1]
[4] 康贤昆. PHP开发框架的研究与实现[D]. 天津: 天津大学, 2007.
(KANG Xiankun. Research and implementation of PHP development framework [D]. Tianjin: Tianjin University, 2007. ) [本文引用:1]
[5] 全国刑事技术标准化技术委员会电子物证检验分技术委员会. 电子物证软件一致性检验技术规范: GA/T 829-2009[S]. 2009.
(National Technical Committee on Electronic Evidence Examination of Criminal Technology of Stand ardization Administration of China. Software identification technical specification of electronic forensics: GA/T 829-2009[S]. 2009. ) [本文引用:1]
[6] 龙源, 邢桂东, 康艳荣, . 一种基于底层数据分析的SQLite数据库取证方法[J]. 刑事技术, 2019, 44(4): 347-350.
(LONG Yuan, XING Guidong, KANG Yanrong, et al. A SQLite database forensic method based on the analysis of underlying data[J]. Forensic Science and Tehnology, 2019, 44(4): 347-350.) [本文引用:1]
[7] 马庆斌. 二谈涉网犯罪——涉网犯罪案件剖析[J]. 犯罪研究, 2006(1): 26-31, 38.
(MA Qingbin. Second discussion on network-involved crimes: analysis of cyber-crime cases[J]. Chinese Criminology Review, 2006(1): 26-31, 38.) [本文引用:1]