基于网络监听的.NET网站数据库加密连接字符串破解方法
徐国天
中国刑事警察学院,沈阳 110854

作者简介:徐国天,男,辽宁沈阳人,硕士,副教授,研究方向为电子物证。E-mail: 459536384@qq.com

摘要

目的 涉网案件办理需要确定涉案数据库服务器的IP地址、涉案数据库名、账户等关键信息,这些涉案数据通常以加密方式存储在特定网页文件内。本文旨在研究对此类加密数据进行解密的方法。方法 本文提出一种基于网络监听的数据解密方法。使用虚拟机搭建一个模拟网络环境,通过提交查询请求,触发web服务器自行解密数据,再逐步诱导web服务器发出通信数据包,采用网络监听的方式捕获通信数据,从中提取出解密之后的数据库连接配置信息。结果 使用本文提出的基于网络监听的数据解密方法可以从通信数据中提取出数据库连接配置信息。结论 经过大量测试和实际案例检验,本文提出的方法可有效破解.NET网站数据库加密连接字符串。

关键词: 网络监听; 数据库; 加密; 破解
中图分类号:DF793.2 文献标志码:A 文章编号:1008-3650(2020)05-0468-06
Unraveling the Encrypted Connecting-character-string in .NET Website Database with Network Monitoring
XU Guotian
Criminal Investigation Police University of China, Shenyang 110854, China
Abstract

Objective Key information, e.g., IP address, database name and account, is crucial to investigate the involving network-related cases. In recent years, more websites have been developed with the .NET language. Such websites usually encrypt the database-connecting configuration parameters in a specific webpage file to prevent the key information from leakage. This paper attempts to set up an approach to decrypt such encrypted data through network monitoring.Methods With one virtual device to set up a simulating network environment, a query was therewith submitted to the targeting web server to have it triggered to decrypt the data and send out communication packets consecutively so that the communication data were captured through the concurring network monitoring, therefore having the database-connecting configuration parameters successfully decrypted and extracted. Since 2005-version and the later-issued SQL server databases adopt the TLS protocol to encrypt the communication data to make them difficult to decrypt, the SQL server 2000 database was (suggestively) thus installed on the targeting database server and adjusted of the listening port on the database from the default 1433 to 2578. Similarly, the wireshark usually treats TDS packets just as the ordinary application layer data, unable to parse TDS protocol-formatted information, the sniffer-pro was hence chosen to analyze these communication data with its eligibility of analyzing the TDS data-header and internal data formatted under TDS protocol.Results The database-connecting configuration information can be extracted from the communication data through the here-utilized data decryption approach based on network monitoring.Conclusion Demonstrated through a large number of tests and practical cases, the approach proposed in this paper can effectively unravel/procure the encrypted connecting-character-string in .NET website database.

Key words: network monitoring; database; encryption; unraveling

随着互联网技术的快速发展, 各类涉网案件(如网络赌博、网络传销、网络淫秽色情)不断增多。涉网案件通常借助网站平台实施作案, 例如网络赌博需要搭建赌博网站, 网络传销要搭建传销平台。涉案网站由前台web服务器和后台数据库服务器组成, 涉案数据通常存储在数据库服务器内。例如传销案件中涉及的涉案金额、参与人员信息、资金流水信息均存储在数据库服务器内, 因此对数据库服务器的检验鉴定是办理涉网案件的关键环节。

办案人员通过涉案网站域名可以确定web服务器的IP地址, 例如使用ping命令访问涉案域名, 或使用nslookup命令解析涉案域名, 即可获得web服务器的IP地址。根据IP地址可以确定web服务器所在位置。如IP地址位于境内, 可对涉案web服务器进行直接调查、取证。数据库服务器可能与web服务器放置在同一个互联网数据中心(Internet data center, IDC)机房, 也可能位于其它IDC机房内, 确定数据库服务器的IP地址即可准确定位其所在位置。数据库服务器的IP地址、连接端口、数据库名、用户名和密码等数据库连接配置信息保存在web服务器上某个网站文件内。早期基于asp、jsp、php等网页设计语言开发的动态网站中, 数据库服务器的连接配置信息通常未进行加密处理, 以明文方式存在。图1显示的是未经过加密处理的数据库服务器连接配置信息, 可以从中直接提取出数据库服务器的IP地址、数据库名、用户名和密码。

图1 明文方式显示的数据库连接配置信息
Fig.1 Database-connecting configuration information displayed in plain text

近年来, 越来越多的网站采用.NET语言开发, 这类网站通常对数据库连接配置信息进行加密处理, 防止信息泄露。只有对加密数据进行解密, 才可以获得后台数据库服务器IP地址等涉案信息, 进而准确定位数据库服务器的具体位置。针对这一解密问题, 本文提出一种基于网络监听的数据解密方法。

1 基于“ 网络监听” 的数据库连接配置信息破解方法

.NET网站内存储的数据库连接配置信息通常是经过加密处理的, 其中包含了数据库服务器IP地址、开放端口、数据库名、账户名和密码等关键配置信息。网站运行过程中, 前台web服务器上的动态网页负责接收客户提交的查询请求, web服务器将查询请求转发给后台数据库检索。检索结束之后, 数据库将查询结果返回给web服务器[1]。为了完成客户提交的查询请求, web服务器需要主动连接数据库服务器, 运行查询指令。在连接数据库之前, web服务器需要自行解密数据, 获取连接配置信息。本篇论文提出的破解思路是搭建一个模拟网络环境, 通过提交查询请求, 触发web服务器自行解密数据, 再逐步诱导web服务器发出通信数据包, 采用网络监听的方式捕获通信数据, 从中提取出解密之后的数据库连接配置信息。具体的解密原理流程如图2所示。

图2 基于“ 网络监听” 的数据库连接配置信息破解方法
Fig.2 Database-connecting configuration information and the decryption based on network monitoring

首先从涉案web服务器内提取网站全部脚本文件, 在取证计算机上使用两台虚拟机搭建模拟环境, 一台虚拟机作为客户端, 另一台作为web服务器。将涉案网站搭建在web服务器上。两台虚拟机以host-only联网方式启动, 这样一来, 在本机运行数据监听工具(例如wireshark或sniffer-pro)即可捕获虚拟网络内全部通信数据。两台虚拟机IP地址设置为192.168.0.* 网段, 确保虚拟机之间通信正常。之后在客户虚拟机浏览网站主页, 访问的页面应具有动态参数(例如http://192.168.0.2/lookpro.asp?id=50), 这样的页面会触发web服务器主动连接数据库服务器, 从捕获的TCP首次握手SYN报文中可以提取出数据库服务器IP地址(a.b.c.d)和开放端口n, 但此时捕获的数据中不包含数据库名和账户信息。

确定涉案数据库服务器开放端口为n, 接下来需要确定数据库类型。主流数据库系统均有自己的默认端口, 例如mysql数据库使用3306端口, SQL Server数据库使用1433端口, oracle数据库使用1521端口。由于数据库的监听端口可以动态调整, 因此无法从端口号判断出涉案数据库类型。但是, 每种主流数据库均使用特定的通信协议, 例如mysql数据库使用MySQL协议, SQL Server数据库使用表格数据流(tabular data stream, TDS)协议, oracle数据库使用TNS协议。确定通信协议类型, 即可确定数据库类型。方法如下:再启动一台虚拟机模拟数据库服务器, 利用系统自带的IIS软件模拟打开相应端口n。参照数据库服务器的IP地址, 修改web服务器和客户虚拟机的IP, 使得三台虚拟机位于同一网段。这样一来, 虚拟环境内搭建的web服务器与数据库服务器之间可以通过三次握手机制建立TCP连接通道, 随后web服务器会使用相应数据库协议发出一个查询请求报文, 通过该数据包协议类型即可确定数据库类型。由于数据库服务器上并未运行一个真正的数据库系统, 因此双方不会产生后续通信数据。由于高版本数据库通常会对通信数据进行加密处理, 不利于信息提取, 例如2005以上版本SQL Server数据库会对通信数据采用TLS协议进行加密处理, 而2005以下版本未进行加密处理, 因此在第三台虚拟机上安装低版本数据库系统。按照之前捕获的端口号设置数据库的开放端口。之后, 再次浏览主页, 可以捕获web服务器发出的数据库通信包, 里面携带了解密之后的数据库连接配置信息, 只是此类信息通常经过了编码处理, 需要进行逆转换即可得到对应的明文配置信息。下面结合具体案例, 对此类破解方法进行实例分析。

2 基于“ 网络监听” 的数据库连接配置信息破解实例分析

在一起网络赌博案件中, 办案人员确定了前台web服务器IP地址, 经过调查发现这个赌博网站采用ASP.NET语言开发前台页面, 后台数据库服务器并未与前台web服务器放置在同一个IDC机房内。数据库连接字符串以加密方式保存在web.config文件内, 加密字符串如图3所示, 需要对加密字符串进行解密, 获取数据库连接配置信息。

图3 经过加密处理的数据库连接配置信息
Fig.3 The encrypted database-connecting configuration information

2.1 捕获涉案数据库服务器IP地址及端口号

从涉案web服务器内提取出赌博网站全部脚本文件, 记录下web服务器采用的系统配置, 在取证计算机上启动相同配置的虚拟机来模拟web服务器(例如涉案web服务器使用windows 2008 server + IIS配置, 则虚拟机也使用相同配置)。在IIS服务器上部署ASP.NET站点时, 需要安装对应版本的.net framework。目前.net framework 版本包括2.0、3.5、4.0和4.5, 其中3.5是2.0的升级版本, 4.5是4.0的升级版本[2]。windows 2012 server系统默认支持.net framework 4.0, windows 2008 server系统默认支持.net framework 3.5。在模拟web服务器上搭建涉案网站前需要确定windows操作系统类型、IIS服务器和.net framework版本, 然后在模拟服务器上安装相同的运行环境。在涉案web服务器Internet信息服务(IIS)管理器中选择IIS帮助, 即可查看到IIS服务器版本。在涉案web服务器“ 我的电脑” 地址栏输入“ %systemroot%\Microsoft.NET\Framework” , 目录显示的最高版本号即本机安装的.net framework版本[3]。将涉案网站搭建在模拟web服务器上, 服务器IP地址设置为192.168.0.3, 将取证计算机IP地址设置为192.168.0.2, 虚拟机联网方式选择host-only方式。注意需要将模拟web服务器网关设置为取证计算机IP地址, 即192.168.0.2。这样设置的目的是当模拟web服务器与涉案数据库服务器通信时, 由于两台服务器不位于同一网段内, 数据包将发给网关, 即取证计算机。此时在取证计算机运行抓包工具, 截获数据包, 可以从中提取出涉案数据库服务器的IP地址。如不设置网关IP地址, 模拟web服务器在与涉案数据库服务器通信时, 会因找不到匹配的路由信息而终止数据包发送, 此时在取证计算机端将无法拦截到包含涉案数据库服务器IP地址的有效报文。以下全部取证操作均在模拟网络环境内完成, 不与外部互联网产生任何通信数据, 关闭取证计算机与外部网络的全部连接通道。

配置好相关网络环境之后, 使用取证计算机浏览web服务器上的涉案网站主页default.aspx, 浏览截图如图4所示。在页面内输入一组测试账户信息和验证码, 点击登录。web服务器上的default.aspx脚本文件收到这组查询请求后, 会主动连接数据库服务器, 并将这组账户信息发送给数据库服务器进行验证, 在本机使用wireshark捕获这组通信数据, 可以从中提取出涉案数据库服务器IP地址和连接端口信息, 部分数据包截图如图5所示。

图4 涉案网站主页
Fig.4 Homepage of the website involved into a case

图5 提取出涉案数据库服务器IP地址及开放端口
Fig.5 The extraction of the IP address and open port of the database server involved into a case

由于虚拟机采用host-only方式启动, 虚拟网络环境内没有外网数据干扰, 因此wireshark捕获的报文数据量很小, 便于分析。本例共捕获27个数据包, 如图5所示, 编号4~8报文是取证计算机与模拟web服务器通信产生的数据, 其中编号4~6报文是TCP协议三次握手建立连接, 编号7数据包携带了测试用的账户、密码及验证码。

收到这组测试账户信息后, web服务器上搭建的涉案网站需要将这组账户数据发送给涉案数据库服务器进行验证, 此时它会自动解密数据库连接字符串, 从解密之后的字符串中提取出涉案数据库服务器IP地址、连接端口、数据库名、账户信息, 并尝试与数据库服务器建立TCP连接。编号9数据包即是涉案网站发出的TCP第一次握手建立连接请求报文, 报文源IP地址为web服务器IP地址192.168.0.3, 目的IP地址为涉案数据库服务器IP地址121.10.107.205, 目的端口为涉案数据库服务器开放端口2578。由于使用host-only方式启动虚拟机, 整个测试环境与外部互联网隔绝, 涉案数据库服务器不会收到并响应该报文。但是从捕获的TCP第一次连接请求报文内无法提取出数据库名、涉案账户等信息, 需要搭建模拟数据库服务器, 诱使涉案网站发出相关数据。

2.2 搭建模拟数据库服务器, 确定数据库类型

确定涉案数据库服务器开放端口为2578, 接下来需要确定数据库类型。启动一台虚拟机, 模拟数据库服务器, IP地址配置为121.10.107.205, 将IIS监听端口由80调整为2578来模拟开放数据库端口。将web服务器IP地址修改为121.10.107.201, 取证计算机IP地址修改为121.10.107.200, 保证虚拟网络环境内通信正常。这样一来, 虚拟环境内搭建的web服务器与数据库服务器之间可以通过三次握手机制建立TCP连接通道, 随后web服务器会使用相应数据库协议发出一个查询请求报文, 通过该数据包协议类型即可确定数据库类型。

使用取证计算机再次登录虚拟网络环境内搭建的涉案网站, 捕获图6所示通信数据。

图6 根据通信协议确定数据库类型
Fig.6 Determination of the database type based on the communication protocol

编号9~11报文是web服务器与数据库服务器通过三次握手机制建立TCP连接。编号13数据包是web服务器发出的一个查询请求报文, 协议类型为TDS, 从而证明涉案数据库类型为SQL Server或Sybase数据库。Sybase和SQL Server数据库均使用TDS协议, 但是两种数据库使用的TDS协议版本不同, 对应关系见表1。从表1可见, 7.0以上的SQL Server数据库使用7.0以上版本TDS协议, Sybase数据库和SQL Server 6.5版本数据库使用4.2和5.0版TDS协议[4]。由于6.5版SQL Server数据库产生于1996年, 目前已经基本退出市场, 因此本文提出的判断方法是根据TDS协议版本来区分Sybase数据库和SQL Server数据库, 7.0以上版本TDS协议对应SQL Server数据库, 5.0以下版本TDS协议对应Sybase数据库。

表1 TDS协议版本与数据库类型之间的对应关系 Table 1 Correspondence between TDS protocols of various version and database type

每个TDS数据包均包含8字节首部, 这8个字节依次为1字节数据帧类型字段、1字节最后数据帧标志字段、2字节数据帧长度和4字节保留字段。帧类型字段值为0x02代表这是4.2或5.0 版TDS 协议的login packet报文, 帧类型字段值为0x10表示这是7.0版TDS协议login packet报文。如果帧类型字段值为0x02, 则认为使用的是Sybase数据库, 如果帧类型字段值为0x10, 认定使用的是SQL Server数据库。

2.3 安装低版本数据库软件, 捕获涉案数据库名及账户信息

由于2005以上版本SQL Server数据库采用TLS协议加密通信数据, 很难对TLS数据进行解密, 因此在数据库服务器上安装SQL Server 2000数据库, 同时将数据库的监听端口由默认的1433调整为2578。由于wireshark只是将TDS数据包当做普通的应用层数据来进行处理, 不能按照TDS协议格式来解析TDS数据包。而sniffer-pro可以按照TDS协议格式对TDS数据首部及内部数据进行解析, 因此在这一环节使用sniffer-pro对通信数据进行分析。

使用取证计算机再次登录虚拟网络环境内搭建的涉案网站, 捕获的通信数据如图7所示。编号6~8数据包是web服务器与数据库服务器通过三次握手机制建立TCP连接。编号9~12数据包是两台服务器使用TDS协议进行双向通信。从编号11的数据包内可以提取出涉案数据库服务器IP地址121.10.107.205和开放端口2578, 涉案数据库名为“ LYGame* * * * DB” , 用户名为“ min* * * i” , 密码的偏移位置为112, 密码长度值为14, 这个长度值是以2字节为单位。根据偏移位置和长度值从数据包内提取出密码数据为“ 73 a5 33 a5 43 a5 d3 a5 92 a5 23 a5 33 a5 42 a5 b7 a5 a1 a5 a6 a5 47 a5 a6 a5 47 a5” 。这组密码值经过了混淆加密处理, 需要进行逆向解密。

图7 捕获涉案数据库名及账户信息
Fig.7 Capturing the case-involving database name and account information

2.4 对混淆数据进行逆向解析

TDS协议为了增加数据安全性, 对数据库用户的密码数据进行了混淆加密处理。从图7捕获的通信数据中提取出的密码数据是经过混淆加密处理的, 因此需要对这组密文数据进行逆向解析, 还原其原始内容。TDS协议的数据混淆及逆向解析方法如图8所示。在进行数据混淆时, 先将输入的密码字符串转换为UNICODE编码, 即每个字符使用两个字节; 之后将每个字节的高4位bit与低4位bit进行位置互换, 再将每个字节与0xA5进行XOR操作[5]; 最后输出密文数据。这个混淆算法的逆向过程即为数据解密方法。

图8 TDS协议的数据混淆和解析过程
Fig.8 The TDS-protocol-formatted data being encrypted with confusion and their reverse resolution

下面以密文数据第一个字节0x73为例分析数据解析过程。首先将十六进制0x73转换为二进制形式0111 0011, 将0x73与0xA5进行XOR操作, 结果为1101 0110。XOR操作的规则为0 XOR 0 = 0、1 XOR 0 = 1、0 XOR 1 = 1、1 XOR 1 = 0。将计算结果的高4位bit与低4位bit进行位置互换, 得到的结果为十进制109, 对应ASCII码表中的字符“ m” 。使用这一方法对全部密文数据进行解析, 得到账户密码为“ min* * * * ~!@0.0.” 。

3 总结

确定涉案数据库服务器的IP地址, 进而准确定位其所在位置是涉网案件办理的关键环节。涉案数据库服务器IP地址等重要配置信息通常以加密方式存储在脚本文件内。本文提出一种基于数据监听的密文破解方法, 通过提交查询请求, 触发web服务器自行解密数据, 办案人员只需将解密之后的信息从通信报文中提取出来即可, 从而将一个比较复杂的数据解密问题, 转换为难度相对较低的网络数据监听问题, 降低了取证分析的难度, 提高了取证分析的效率。接下来, 笔者计划研究通信数据自动分析方法, 以进一步提高数据分析效率和准确度。

参考文献
[1] 佛罗赞, 费根. 数据通信与网络[M]. 吴时霖, 吴永辉, 吴之艳, 等, 译. 北京: 机械工业出版社, 2007: 57-58.
(FOROUZAN B A, FEGAN S C. Data Communication and Network[M]. WU Shilin, WU Yonghui, WU Zhiyan, et al. trans. Beijing: Mechanical Industry Press, 2007: 57-58. ) [本文引用:1]
[2] 严蔚敏, 吴伟民. 数据结构[M]. 北京: 清华大学出版社, 2011: 98-102.
(YAN Weimin, WU Weimin. Data structure [M]. Beijing: Tsinghua University Press, 2011: 98-102. ) [本文引用:1]
[3] 截获SQL Server客户端登录SQL Server服务器的密码[EB/OL]. (2007-12-07)[2019-12-20]. https: //blog. csdn. net/szjerrywangyong/article/details/83197937.
( Intercept the password of the SQL server client to log in to the SQL server[EB/OL]. (2007-12-07)[2019-12-20]. https://blog.csdn.net/szjerrywangyong/article/details/83197937. ) [本文引用:1]
[4] 查看. Net Framework版本的方法[EB/OL]. (2018-07-27)[2019-12-20]. https: //blog. csdn. net/dearbaba_8520/article/details/81232384.
( How to check the . Net framework version[EB/OL]. (2018-07-27)[2019-12-20]. https://blog.csdn.net/dearbaba_8520/article/details/81232384. ) [本文引用:1]
[5] 徐国天. 基于“执行路径重建”的盗号木马逆向分析取证方法研究[J]. 刑事技术, 2019, 44(4): 283-288.
(XU Guotian. Reverse analysis into stealing-information Trojan through “reconstructing execution path”[J]. Forensic Science and Technology, 2019, 44(4): 283-288. ) [本文引用:1]