新型 涉网犯罪动态网站debug重建技术研究

2022-12-22 10:35任风凯巩方志
刑事技术 2022年6期
关键词:断点源代码后台

任风凯,张 冬,张 莹,郭 健,巩方志

(1.山东省滨海公安局,山东 东营 257 100;2.山东省公安厅物证鉴定研究中心,济南 250014)

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

本文介绍了一种新型涉网犯罪动态网站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 debug技术图解Fig.1 Passage of communication via debugging

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

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

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

图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) 绕过法。运用绕过法的前提是对代码的逻辑已经完全读懂,在适当的逻辑语句上进行修改,比如在进行管理员登录验证时,将i f语句后面的判断表达式改为“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开发工具、扩展均免费、开源,无需单独购买任何收费软件,在使用上具有很高的可推广性。

猜你喜欢
断点源代码后台
基于TXL的源代码插桩技术研究
砂泥互层断点组合类型及其合理性分析
——以大庆长垣萨尔图油田为例
用Eclipse调试Python
一类无限可能问题的解法
Wu Fenghua:Yueju Opera Artist
软件源代码非公知性司法鉴定方法探析
后台暗恋
基于语法和语义结合的源代码精确搜索方法
揭秘龙湖产品“源代码”
后台朋友