一种webshell监控系统的制作方法

文档序号:25991448发布日期:2021-07-23 21:03阅读:138来源:国知局
一种webshell监控系统的制作方法

本申请是申请日为2020年09月18日的、名称为“一种webshell监控方法及系统”的中国申请案cn202010984068.3的分案申请。

本发明涉及网络安全技术领域,尤其涉及一种webshell监控系统。



背景技术:

webshell中,web指的是web服务器,而shell是用脚本语言编写的脚本程序,webshell就是web的一个管理工具,可以对web服务器进行操作的权限。webshell是以asp、php、jsp或者cgi等网页文件形式存在于web服务器上的一种代码执行环境,webshell一般是被网站管理员用于网站管理、故武器管理等待一些用途,但是由于webshell的功能比较强大,可以上传下载文件,查看数据库,甚至可以调用一些服务器上系统的相关命令(比如创建用户,修改删除文件之类的),通常被黑客利用,黑客通过一些上传方式,将自己编写的webshell上传到web服务器的页面的目录下,然后通过页面访问的形式进行入侵,或者通过插入一句话连接本地的一些相关工具直接对服务器进行入侵操作。

webshell可以被站长用作管理网站、服务器的方式,也可以被攻击者当作入侵网站后对网站持续控制的一种手段,所以webshell可以看作是一把双刃剑,如果不对其进行有效的控制,对网络安全产生巨大的危险。

由于webshell使用web服务器端与外部交互,因此不会被防火墙拦截所以具有很强的网络穿透能力,在没有记录流量的情况下,webshell使用post包发送,也不会被记录在系统日志中,只会在web日志中记录一些数据提交的记录。

由于webshell可以隐藏在正常的网页文件中,具有很强的隐蔽性,目前针对webshell的检测技术主要依靠基于特征匹配的黑名单技术,但是这些技术都需要依赖于特征进行计算,容易产生误报。

中国专利申请文献cn107689940a中,公开了一种webshell检测方法,该方法包括:检测服务器与客户端之间的流量数据,以判断流量数据中是否存在具有webshell特征或webshell行为特征的可疑数据,其中,若检测的流量数据中存在具有webshell特征的可疑数据,则确定该流量数据中存在webshell;若流量数据中存在具有webshell行为特征的可疑数据,则分析该可疑数据所对应的webshell行为特征,并根据分析结果,判断该流量数据中是否存在webshell。该方法依赖于特征进行判断,容易产生误报。

中国专利申请文献cn107770133a中,公开了一种适应性webshell检测系统,其检测系统包括静态间隔扫描、实时扫描、旁路检测三大模块,其中静态间隔扫描的实施步骤和方式为:(1)分析服务器是否运行了web服务器,如果没有运行web服务直接结束;(2)对有web服务的进行清点,来读取web服务器配置文件,获取web服务器相关信息,包括:站点个数、站点路径、域名或者端口号;(3)对服务器上所配置的所有站点路径下的全部脚本文件进行扫描,针对相关的策略进行扫描;(4)为了增强扫描的有效性以及效率,会记录每次扫描的时间,在下一次扫描的时候,只会扫描新增的部分文件以及之前判定为是webshell的文件;实时扫描的实施步骤和方式为:(1)分析服务器是否运行了web服务器,如果没有运行web服务直接结束;(3)对所有web站点的目录进行实时监控,如果发现新增的文件或者目录直接触发扫描动作;(4)对新增的脚本文件进行扫描,针对相关策略进行扫描,扫描策略和静态间隔扫描相同;旁路检测的主要方式就是检测请求文件的文件名以及路径以及文件本身的来实现的,以及服务器的响应信息也是参考。其中静态间隔扫描和实时扫描的扫描策略为:首先判断是否匹配严格正则,是则上报为webshell,否则继续检测是否匹配宽泛正则,如果不匹配宽泛正则,则判断是否沙箱检测为webshell,如果沙箱检测为webshell,则上报为webshell,如果不是则结束扫描;如果匹配宽泛正则,判断是否匹配md5病毒库,如果匹配md5病毒库则上报为webshell,如果不匹配,则检测是否达到模糊度匹配阙值,若达到模糊度匹配阙值,则上报为webshell,如果没有达到,则继续检测是否匹配威胁情报,如果匹配,则上报为webshell,如果不匹配,继续检测机器学习结果是否为负,机器学习结果为负,则上报为webshell并结束扫描,否则直接结束扫描。该系统通过对预设的正则、特征值等进行匹配检测,容易产生误报。

现有技术至少存在以下不足:

1.由于基于特征值的检测方式属于静态检测完全依赖特库的覆蓋面,可以通过变形、加密和编码来规避检测,可能由于特征值的冲突带来误报的风险。



技术实现要素:

为解决现有技术中存在的技术问题,本发明提供了一种webshell监控方法及系统,通过使用windows内核驱动的方式实时监控系统命令(以cmd和powershell为载体的命令)的执行,并通过命令的调用关系来识别与监控,记录系统中webshell后门。本发明使用windows分层驱动模型,将自身插入cmd与powershell的内核引擎的驱动栈上,拦截系统命令执行。为减少目前webshell检测方案所存在的误报,本发明使用对命令以私有密钥进行签名的方式,来区分通过webshell进行正常的网站维护与服务器管理操作与恶意的webshell利用。同时,本发明对采用私有密钥签名的命令进行base64编码,增加了webshell监测的可靠性,改善了误报率。

本发明提供了一种webshell监控方法,应用于至少包括一台安装有windows操作系统的web服务器和一个客户端的网络系统,包括以下步骤:

签名及编码步骤,

客户端计算所需执行命令和参数的hash值;所述客户端为与web服务器的服务端达成私有密钥协议的客户端;

客户端对所需执行的命令和参数的hash值,通过预定义的私有密钥计算出签名;

客户端对计算出的签名进行编码;

将编码后的签名附加在所需执行的命令中;

通过webshell,将附加了编码后的签名的所需执行的命令,发送到所述web服务器;webshell监控步骤,

所述web服务器通过编写的监控驱动程序监测到命令执行的请求;

所述web服务器分析上下文环境,检测所需监控的服务端程序;

当检测到所需监控的服务端程序时,尝试从监控到的命令中提取出签名,

如果提取签名成功,执行签名对比步骤;

如果提取签名失败,跳转到命令拦截步骤;

签名对比步骤,

所述web服务器从监控到的命令中提取监控到的命令和参数的hash值;

所述web服务器计算出监控到的命令和参数的hash值;

所述web服务器将从监控到的命令中提取出的hash值与计算出的hash值进行对比;

根据从监控到的命令中提取出的hash值与计算出的hash值的对比结果,判断是否对命令放行:

如果是对监控到的命令放行,则执行该命令;

否则,执行命令拦截步骤;

命令拦截步骤,

阻断该命令,或阻断该命令并生成日志记录。

优选地,在签名及编码步骤中,将编码后的签名以命令的参数的形式附加在所需执行的命令中。

优选地:

在签名及编码步骤中,客户端使用sha256算法计算所需执行的命令和参数的hash值;

在签名及编码步骤中,客户端对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计算出签名;

在签名及编码步骤中,客户端使用base64编码对计算出的签名进行编码。

优选地,在签名对比步骤中,所述web服务器从监控到的命令中提取监控到的命令和参数的hash值,包括如下步骤:

s401:所述web服务器使用base64编码对提取出的签名进行解码,得到利用所述私有密钥签名的该命令和参数的hash值;

s402:所述web服务器利用所述私有密钥对应的公共密钥使用rsa算法提取监控到的命令与参数的hash值。

优选地,在签名对比步骤中,根据监控到的命令和参数,利用sha256算法计算出监控到的命令和参数的hash值。

优选地,还包括,在签名对比步骤中,在执行命令前,由监控驱动程序将附加的签名从命令中剔除。

优选地,在webshell监控步骤中,分析上下文环境,检测所需监控的服务端程序包括:

分析cmd或powershell所处的进程链,获取cmd或powershell所在进程链的起点;

根据cmd或powershell所在进程链的起点,获取所需监控的服务端程序:

当cmd或powershell所在进程链的起点为iis时,判断为webshell服务;

当cmd或powershell所在进程链的起点为explorer.exe时,判断为本地操作。

本发明提供了一种webshell监控系统,至少包括一台安装有windows操作系统的web服务器和一个客户端,还包括:

签名模块,计算所需执行的命令的hash值,并对命令的hash值采用私有密钥进行签名;

编码模块,对采用私有密钥签名的命令进行编码,并将编码后的签名附加到命令中;

通信模块,将附加了编码后的签名的命令发送到服务器;

webshell监控模块,执行如下操作,

监控命令的执行;

分析上下文环境并检测服务端程序;

当检测到所需监控的服务端程序时,尝试从监控到的命令中提取签名,并将提取的结果传输给签名对比模块;

签名对比模块,执行如下操作,

若提取签名成功,

通过公有密钥提取监控到的命令和参数的hash值;

计算监控到的命令和参数的hash值;

将提取的监控到的命令和参数的hash值与计算出的监控到的命令和参数的hash值进行对比,将结果传输给控制模块;

控制模块,根据从签名对比模块接收的结果,对命令进行放行、阻断或生成日志记录。

优选地:

签名模块使用sha256算法计算所需执行的命令和参数的hash值;

签名模块对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计算签名;

编码模块使用base64编码对计算出的签名进行编码;

签名对比模块,使用sha256算法计算监控到的命令和参数的hash值;使用base64编码对提取的签名进行解码,然后通过公有密钥使用rsa算法提取出监控到的命令和参数的hash值。

优选地,所述控制模块,根据从签名对比模块接收的结果,执行不同操作:

当提取的签名与计算出的签名匹配时,放行该命令;

当提取的签名与计算出的签名不匹配或者提取签名失败时,阻断该命令或生成日志记录。

与现有技术相对比,本发明的有益效果如下:

1.本发明通过以驱动方式对webshell执行的系统命令进行监控,并辅以使用私有密钥进行签名的方式,可以有效提升针对webshell检测力度并减少误报率。

2.本发明通过使用私有密钥对命令进行签名,并经过base64编码,区分合法用户通过webshell进行的网站正常维护与恶意非法用户的webshell,不依赖webshell相关特征,有效解决目前webshell检测方法中的监测检测粒度不足与对未知、变形特征无法识别的问题。

附图说明

图1是本发明webshell监控系统框图;

图2是本发明webshell监控方法流程图。

具体实施方式

下面结合附图1-2,对本发明的具体实施方式作详细的说明。

本发明提供了一种webshell监控方法,应用于至少包括一台安装有windows操作系统的web服务器和一个客户端的网络系统,包括以下步骤:

签名及编码步骤,

客户端计算所需执行命令和参数的hash值;所述客户端为与web服务器的服务端达成私有密钥协议的客户端;比如,在创建用户的命令:netusertest123456/add中,net是命令,usertest123456/add是参数,命令加参数构成一条完整的命令;因此本方案中需要同时计算命令和参数的hash值;

客户端对所需执行的命令和参数的hash值,通过预定义的私有密钥计算出签名;

客户端对计算出的签名进行编码;

将编码后的签名附加在所需执行的命令中;

通过webshell,将附加了编码后的签名的所需执行的命令,发送到所述web服务器;webshell监控步骤,

所述web服务器通过编写的监控驱动程序监测到命令执行的请求;

所述web服务器分析上下文环境,检测所需监控的服务端程序;主要是根据进程的路径和进程名进行检测;

当检测到所需监控的服务端程序时,尝试从监控到的命令中提取出签名,

如果提取签名成功,执行签名对比步骤;

如果提取签名失败,跳转到命令拦截步骤;

签名对比步骤,

所述web服务器从监控到的命令中提取监控到的命令和参数的hash值;

所述web服务器计算出监控到的命令和参数的hash值;

所述web服务器将从监控到的命令中提取出的hash值与计算出的hash值进行对比;

根据从监控到的命令中提取出的hash值与计算出的hash值的对比结果,判断是否对命令放行:

如果是对监控到的命令放行,则执行该命令;

否则,执行命令拦截步骤;

命令拦截步骤,

阻断该命令,或阻断该命令并生成日志记录。本发明中,基于白名单模式的,所以正常的用户访问是一定带有正确的签名的,对于非正常访问都会进行拦截;

命令执行的监控、签名的校验、日志的记录以及命令的拦截与阻断均由编写的监控驱动完成。

作为优选实施方式,在签名及编码步骤中,将编码后的签名以命令的参数的形式附加在所需执行的命令中。

作为优选实施方式:

在签名及编码步骤中,客户端使用sha256算法计算所需执行的命令和参数的hash值;

在签名及编码步骤中,客户端对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计算出签名;

在签名及编码步骤中,客户端使用base64编码对计算出的签名进行编码。

本方案采用的是使用sha256对命令行计算出hash,再使用rsa对其签名,最后使用base64都进行编码,参数计算过程中所涉及只有输入需要执行的命令与私钥两个参数。

在私有密钥不被泄露的情况下攻击者无法利用;

进行base64编码是因为签名过程计算出的签名是一串二进制数据,如果直接以二进制形式的签名附加在命令后面可能会在服务器处理时被截断,进而采用base64进行编码。使用base64目的是在于在签名编码为可见字符,防止在服务器处理时被截断而导致的信息不完整。

以上签名及编码计算过程,可以通过下面的表达式来描述:

sig=base64(rsa(sha256(cmd),key));

计算过程如下:

hash=sha256(cmd);

sig=rsasign(hash);

sig=base64encode(sig)。

作为优选实施方式,在签名对比步骤中,所述web服务器从监控到的命令中提取监控到的命令和参数的hash值,包括如下步骤:

s401:所述web服务器使用base64编码对提取出的签名进行解码,得到利用所述私有

密钥签名的该命令和参数的hash值;

s402:所述web服务器利用所述私有密钥对应的公共密钥使用rsa算法提取监控到的命令与参数的hash值。

作为优选实施方式,在签名对比步骤中,根据监控到的命令和参数,利用sha256算法计算出监控到的命令和参数的hash值。

客户端发送到web服务器的命令中的签名数据中不附带私有密钥,根据rsa算法原理,客户端采用私有密钥进行签名,服务器是必须使用与私有密钥配套的公有密钥来验证签名的,服务器的签名验证所需公有密钥在部署阶段与监控驱动程序一起部署在web服务器上了。服务器验证阶段不存在解码过程。

作为优选实施方式,还包括,在签名对比步骤中,在执行命令前,由监控驱动程序将附加的签名从命令中剔除。

签名是以base64编码后的字符串附加在命令后面的,在最终执行命令之前会由监控驱动将签名从命令中剔除。

作为优选实施方式,在webshell监控步骤中,分析上下文环境,检测所需监控的服务端程序包括:

分析cmd或powershell所处的进程链,获取cmd或powershell所在进程链的起点;

根据cmd或powershell所在进程链的起点,获取所需监控的服务端程序:

当cmd或powershell所在进程链的起点为iis时,判断为webshell服务;

当cmd或powershell所在进程链的起点为explorer.exe时,判断为本地操作。

webshell在服务器上通过cmd/cxxxx的方式来执行命令,其中“xxxx”为命令名称,所以编写的监控驱动程序会监控系统cmd进程的运行,如果监测到cmd进程运行,则通过cmd的创建者进行向上回溯来检测,给该进行是否由web服务器进程所发起,如果是由web服务器进程启动的,则尝试获取cmd进程的启动参数并进行校验。

进程链可以理解为:如果a进程创建b进程,b进程再创建c进程,以此类推,这样就组成如a——>b——>c这样一个进程链条。

iis是基于windows上web服务端,由于webshell执行环境是依托于web服务程序之上的,所以通过检测进程链起点是否为iis等web服务程序用来判断命令是否由webshell所执行。

当cmd或powershell所在进程链的起点为iis时,判断为webshell服务;

当cmd或powershell所在进程链的起点为explorer.exe时,判断为本地操作。

本发明提供了一种webshell监控系统,至少包括一台安装有windows操作系统的web服务器和一个客户端,还包括:

签名模块,计算所需执行的命令的hash值,并对命令的hash值采用私有密钥进行签名;编码模块,对采用私有密钥签名的命令进行编码,并将编码后的签名附加到命令中;通信模块,将附加了编码后的签名的命令发送到服务器;

webshell监控模块,执行如下操作,

监控命令的执行;

分析上下文环境并检测服务端程序;主要是根据进程的路径和进程名进行检测;

当检测到所需监控的服务端程序时,尝试从监控到的命令中提取签名,并将提取的结果传输给签名对比模块;

签名对比模块,执行如下操作,

若提取签名成功,

通过公有密钥提取监控到的命令和参数的hash值;

计算监控到的命令和参数的hash值;

将提取的监控到的命令和参数的hash值与计算出的监控到的命令和参数的hash

值进行对比,将结果传输给控制模块;

控制模块,根据从签名对比模块接收的结果,对命令进行放行、阻断或生成日志记录。作为优选实施方式:

签名模块使用sha256算法计算所需执行的命令和参数的hash值;

签名模块对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计算签名;

编码模块使用base64编码对计算出的签名进行编码;

签名对比模块,使用sha256算法计算监控到的命令和参数的hash值;使用base64编码对提取的签名进行解码,然后通过公有密钥使用rsa算法提取出监控到的命令和参数的hash值。

作为优选实施方式,所述控制模块,根据从签名对比模块接收的结果,执行不同操作:

当提取的签名与计算出的签名匹配时,放行该命令;

当提取的签名与计算出的签名不匹配或者提取签名失败时,阻断该命令或生成日志记录。

在客户端将需要执行的命令发送到web服务器之前,先由签名模块对需要执行的命令进行hash值计算并进行签名,然后交由编码模块进程编码,编码完成后通过通信模块发送到web服务器交由服务器执行,web服务器接收到命令后,将会通过创建cmd进程来执行命令,当cmd进程创建时,会由webshell监控模块进行拦截,并由签名对比模块对命令签名进行验证,验证通过的才会继续执行该命令;验证不通过的,命令就会被阻断或生成日志记录。

实施例1

参照附图1-2,根据本发明的一个具体实施方案,以ipconfig/all命令为例,对本发明提供的webshell监控方法和系统进行详细说明。

本发明提供了一种webshell监控方法,应用于至少包括一台安装有windows操作系统的web服务器和一个客户端的网络系统,包括以下步骤:

签名及编码步骤,

客户端使用sha256算法计算所需执行的命令和参数的hash值;所述客户端为与web服务器的服务端达成私有密钥协议的客户端;比如,所需执行的命令为ipconfig/all,则通过sha256算法计算的hash值为59cb534e2a16fd3d21d1ba5d34ee15e665d7a955751171249

563d1192aa33e4。

客户端对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计

算出签名;对于所需执行的命令为ipconfig/all时,计算出的签名为b561cc8322608ed5c1469fb0d0bb6754ee550749014d7f18e41eaaadf5794ec42e75b176924939da4afbaec24ebc998aa9a97bb8884f53fa42f7106e75b8fd663ba8c9b3b52ba83c98bf5c386aabe37c7fb77d15647beb06c5fa22789444cb1e81c9fb667fe6174e7a497823cddd3d5b851f2415df8b77b85c635f2。

客户端使用base64编码对计算出的签名进行编码;对于所需执行的命令为ipconfig/all时,编码后的签名为:

twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=。

以上签名及编码计算过程,可以通过下面的表达式来描述:

sig=base64(rsa(sha256(cmd),key));

计算过程如下:

hash=sha256(cmd);

sig=rsasign(hash);

sig=base64encode(sig)。

比如,对于ipconfig/all命令,利用sig(key,“ipconfig/all”)函数计算出签名,然后使用base64编码对计算出的签名进行编码;base64编码是编码是从二进制到字符的过程,可用于在http环境下传递较长的标识信息。采用base64编码具有不可读性,需要解码后才能阅读。使用base64目的是在于在签名编码为可见字符,防止在服务器处理时被截断而导致的信息不完整。

将编码后的签名附加在所需执行的命令中;此处可以将编码后的签名以命令的参数的形式附加在所需执行的命令中。比如,对于ipconfig/all命令,编码后的签名twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=,以“ipconfig/ip/csig=twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=”的形式附加到命令中,其中“twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=”为编码后的签名,即sig的内容。

通过webshell,将附加了编码后的签名的所需执行的命令,发送到所述web服务器;webshell监控步骤,

所述web服务器通过编写的监控驱动程序监测到命令执行的请求;

所述web服务器分析上下文环境,检测所需监控的服务端程序;

分析上下文环境,检测所需监控的服务端程序包括:

分析cmd或powershell所处的进程链,获取cmd或powershell所在进程链的起点;

根据cmd或powershell所在进程链的起点,获取所需监控的服务端程序:

当cmd或powershell所在进程链的起点为iis时,判断为webshell服务;

当cmd或powershell所在进程链的起点为explorer.exe时,判断为本地操作。

当检测到所需监控的服务端程序时,尝试从监控到的命令中提取出签名,提取出的编码后的签名为:

twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=

如果提取签名成功,执行签名对比步骤;

如果提取签名失败,跳转到命令拦截步骤;

签名对比步骤,

所述web服务器从监控到的命令中提取监控到的命令和参数的hash值;

具体包括如下步骤:

s401:所述web服务器使用base64编码对提取出的签名进行解码,得到利用所述私有密钥签名的该命令和参数的hash值,59cb534e2a16fd3d21d1ba5d34ee15e665d7a955751171249563d1192aa33e4;

s402:所述web服务器利用所述私有密钥对应的公共密钥使用rsa算法提取监控到的命令与参数的hash值

所述web服务器计算出监控到的命令和参数的hash值;在签名对比步骤中,根据监控到的命令和参数,利用sha256算法计算出监控到的命令和参数的hash值;对于命令ipconfig/all,hash值为59cb534e2a16fd3d21d1ba5d34ee15e665d7a955751171249563d1192aa33e4

所述web服务器将从监控到的命令中提取出的hash值与计算出的hash值进行对比;

根据从监控到的命令中提取出的hash值与计算出的hash值的对比结果,判断是否对命令放行:

如果是对监控到的命令放行,则执行该命令;此时,对比结果显示从监控到的命令中提取出的hash值与计算出的hash值匹配,则执行该命令;在执行命令前,由监控驱动程序将附加的签名从命令中剔除。签名是以base64编码后的字符串附加在命令后面的,在最终执行命令之前会由监控驱动将签名从命令中剔除。

否则,执行命令拦截步骤;

命令拦截步骤,

阻断该命令,或阻断该命令并生成日志记录。

命令执行的监控、签名的校验、日志的记录以及命令的拦截与阻断均由编写的监控驱动完成。

本发明提供了一种webshell监控系统,至少包括一台安装有windows操作系统的web服务器和一个客户端,还包括:

签名模块,计算所需执行的命令的hash值,并对命令的hash值采用私有密钥进行签名;

签名模块使用sha256算法计算所需执行的命令和参数的hash值;对于ipconfig/all命令,通过sha256算法计算的hash值为59cb534e2a16fd3d21d1ba5d34ee15e665d7a955751171249563d1192aa33e4;

签名模块对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计算签名;对于ipconfig/all命令,利用sig(key,“ipconfig/all”)函数计算出的签名为:b561cc8322608ed5c1469fb0d0bb6754ee550749014d7f18e41eaaadf5794ec42e75b176924939da4afbaec24ebc998aa9a97bb8884f53fa42f7106e75b8fd663ba8c9b3b52ba83c98bf5c386aabe37c7fb77d15647beb06c5fa22789444cb1e81c9fb667fe6174e7a497823cddd3d5b851f2415df8b77b85c635f2;

编码模块,对采用私有密钥签名的命令进行编码,并将编码后的签名附加到命令中;编码模块使用base64编码对计算出的签名进行编码;对于ipconfig/all命令,编码后的签名为“twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=”,附加了编码后的签名的命令形式为“ipconfig/all/csig=twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=”;

通信模块,将附加了编码后的签名的命令发送到服务器;

webshell监控模块,执行如下操作,

监控命令的执行;

分析上下文环境并检测服务端程序;对于ipconfig/all命令,webshell监控模块分析上下文的进程环境等内容,同时通过父进程名检测服务端程序,包括iis等服务端程序;

当检测到所需监控的服务端程序时,尝试从监控到的命令中提取签名,并将提取的结果传输给签名对比模块;webshell模块从监控到的命令ipconfig中提取出签名,提取出的签名即为编码后的签名twhmgyjgjtxbrp+w0au2du7luhsqfnfxjkhqqt9xcu7elnwxdpjjodpk+67ctryziqmpe7iit1p6qvcqbnw4/qzjuoybo1k6g8ml9cmiaqvjfh+3fqfwr76wbf+ij4letlhohj8lzn/maxtnpjecpn3t1bhr8gqv34t3ufwgnfi=;

签名对比模块,执行如下操作,

若提取签名成功,

通过公有密钥提取监控到的命令和参数的hash值;

计算监控到的命令和参数的hash值;

将提取的监控到的命令和参数的hash值与计算出的监控到的命令和参数的hash值进行对比,将结果传输给控制模块;

签名对比模块,使用sha256算法计算监控到的命令和参数的hash值,对于命令ipconfig/all,hash值为59cb534e2a16fd3d21d1ba5d34ee15e665d7a955751171249563d1192aa33e4;使用base64编码对提取的签名进行解码,然后通过公有密钥使用rsa算法提取出监控到的命令和参数的hash值,对于命令ipconfig/all,hash值为:59cb534e2a16fd3d21d1ba5d34ee15e665d7a955751171249563d1192aa33e4;

控制模块,根据从签名对比模块接收的结果,对命令进行放行、阻断或生成日志记录。

所述控制模块,根据从签名对比模块接收的结果,执行不同操作:

当提取的签名与计算出的签名匹配时,放行该命令;

当提取的签名与计算出的签名不匹配或者提取签名失败时,阻断该命令或生成日志记录。

在客户端将需要执行的命令发送到web服务器之前,先由签名模块对需要执行的命令进行hash值计算并进行签名,然后交由编码模块进程编码,编码完成后通过通信模块发送到web服务器交由服务器执行,web服务器接收到命令后,将会通过创建cmd进程来执行命令,当cmd进程创建时,会由webshell监控模块进行拦截,并由签名对比模块对命令签名进行验证,验证通过的才会继续执行该命令;验证不通过的,命令就会被阻断或生成日志记录。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1