1.一种webshell监控系统,至少包括一台安装有windows操作系统的web服务器和一个客户端,其特征在于,还包括:
签名模块,计算所需执行的命令的hash值,并对命令的hash值采用私有密钥进行签名;
编码模块,对采用私有密钥签名的命令进行编码,并将编码后的签名附加到命令中;
通信模块,将附加了编码后的签名的命令发送到服务器;
webshell监控模块,执行如下操作,
监控命令的执行;
分析上下文环境并检测服务端程序;
当检测到所需监控的服务端程序时,尝试从监控到的命令中提取签名,并将提取的结果传输给签名对比模块;
签名对比模块,执行如下操作,
若提取签名成功,
通过公有密钥提取监控到的命令和参数的hash值;
计算监控到的命令和参数的hash值;
将提取的监控到的命令和参数的hash值与计算出的监控到的命令和参数的hash值进行对比,将结果传输给控制模块;若提取签名失败,将结果传输给控制模块;
控制模块,根据从签名对比模块接收的结果,对命令进行放行、阻断或生成日志记录。
2.根据权利要求1所述的webshell监控系统,其特征在于:
签名模块对所需执行的命令和参数的hash值,通过预定义的私有密钥使用rsa算法计算签名;
编码模块使用base64编码对计算出的签名进行编码;
签名对比模块使用base64编码对提取的签名进行解码,然后通过公有密钥使用rsa算法提取出监控到的命令和参数的hash值。
3.根据权利要求1所述的webshell监控系统,其特征在于签名模块使用sha256算法计算所需执行的命令和参数的hash值;签名对比模块使用sha256算法计算监控到的命令和参数的hash值。
4.根据权利要求1所述的webshell监控系统,其特征在于,将编码后的签名以命令的参数的形式附加在所需执行的命令中。
5.根据权利要求1所述的webshell监控系统,其特征在于,所述分析上下文环境并检测服务端程序包括:
分析cmd或powershell所处的进程链,获取cmd或powershell所在进程链的起点;
根据cmd或powershell所在进程链的起点,获取所需监控的服务端程序:
当cmd或powershell所在进程链的起点为iis时,判断为webshell服务;
当cmd或powershell所在进程链的起点为explorer.exe时,判断为本地操作。
6.根据权利要求1所述的webshell监控系统,其特征在于,所述控制模块,根据从签名对比模块接收的结果,执行不同操作:
当提取的签名与计算出的签名匹配时,放行该命令;
当提取的签名与计算出的签名不匹配或者提取签名失败时,阻断该命令或生成日志记录。