webshell就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以 将其称做为一种网页后门。
黑客通过浏览器以HTTP协议访问Web Server上的一个CGI文件,是一个合法的TCP连接, TCP/IP的应用层之下没有任何特征,只能在应用层进行检测。黑客入侵服务器,使用webshell,不管是传文件还是改文件,必然有一个文件会包含webshell代码,很容易想到 从文件代码入手,这是静态特征检测;webshell运行后,B/S数据通过HTTP交互,HTTP请 求/响应中可以找到蛛丝马迹,这是动态特征检测。
静态检测
静态检测通过匹配特征码,特征值,危险函数函数来查找webshell的方法,只能查找已知的webshell,并且误报率漏报率会比较高,但是如果规则完善,可以减低误报率,但是漏报率 必定会有所提高。优点是快速方便,对已知的webshell查找准确率高,部署方便,一个脚本 就能搞定。缺点漏报率、误报率高,无法查找0day型webshell,而且容易被绕过。
静态检测配合人工
一个检查工具 https://github.com/he1m4n6a/findWebshell
动态检测
Linux下就是nobody用户起了bash,Win下就是IIS User启动cmd,这些都是动态特征。再者如果黑客反向连接的话,那很更容易检测了,Agent和IDS都可以抓现行。Webshell总 有一个HTTP请求,如果我在网络层监控HTTP,并且检测到有人访问了一个从没反问过得文件,而且返回了200,则很容易定位到webshell,这便是http异常模型检测,就和检测文件 变化一样,如果非管理员新增文件,则说明被人入侵了。缺点也很明显,黑客只要利用原文件 就很轻易绕过了,并且部署代价高,网站时常更新的话规则也要不断添加。
日志检测
使用Webshell一般不会在系统日志中留下记录,但是会在网站的web日志中留下Webshell页 面的访问数据和数据提交记录。日志分析检测技术通过大量的日志文件建立请求模型从而检测 出异常文件,称之为:HTTP异常请求模型检测。
寻找webshell
- 自动化查找 D盾 河马 fotify
- 手动查找 windows sublime 全文件夹查找 IDE PHPSTORM 全局查找
Linux 命令查找 `grep -rn "eval(" *` webshell特征 PHP的危险函数
还有`phar <?php XXXXX`