首页 > 系统相关 >【攻防技术系列+WebShell】检测方式

【攻防技术系列+WebShell】检测方式

时间:2024-07-25 16:11:17浏览次数:21  
标签:WebShell 攻防 文件 特征 检测 sort webshell 攻击者

一、简介

攻击者在入侵企业网站时,通常要通过各种方式获取webshell从而获得企业网站的控制权,然后方便进行之后的入侵行为。
常见攻击方式有:直接上传获取webshell、SQL注入、远程文件包含(RFI)、FTP,甚至使用跨站点脚本(XSS)作为攻击的一部分,甚至一些比较老旧的方法利用后台数据库备份及恢复获取webshell、数据库压缩等。
通用功能包括但不限于shell命令执行、代码执行、数据库枚举和文件管理。

二、webshell分类

webshell从协议上来看,最开始基于 TCP、UDP 的 Shell,到后来基于ICMP 的 Shell和基于DNS 的shell 。
从依托工具上看,有 nc 反弹、telnet 反弹、SSH 端口转发等手段,极度猥琐的甚至还有利用 awk 的反弹 Shell。
从语言上看,各种流行的语言都能用来写后门,从bash 到 3P(Perl Python PHP)再到 Ruby 和 Java。

三、webshell功能

1)站长工具

被站长常常用于网站管理,服务器管理等,根据FSO权限的不同,作用有在线编辑网页脚本、上传下载文件、查看数据库、执行任意程序命令等。

2)持续远程访问

入侵者可以利用从而达到长期控制网站服务器的目的,若攻击者自行修复了漏洞,以确保没有其他人会利用该漏洞,攻击者可以低调的随时控制服务器。
一些流行的webshell使用密码验证和其他技术来确保只有上传webshell的攻击者才能访问它。(webshell密码爆破工具表示不服)

3)权限提升

在服务器没有配置错误的情况下,webshell将在web服务器的用户权限下运行,该用户权限是有限的。通过使用webshell,攻击者可以尝试通过利用系统上的本地漏洞来执行权限提升,常见的有查找敏感配置文件、通过内核漏洞提权、利用低权限用户目录下可被Root权限用户调用的脚本提权、任务计划等(从入门到放弃)

4)极强的隐蔽性

有些恶意网页脚本可以嵌套在正常网页中运行,且不容易被查杀。webshell还可以穿越服务器防火墙,由于与被控制的服务器或远程主机交互的数据都是通过80端口传递,因此不会被防火墙拦截,在没有记录流量的情况下,webshell使用post包发送,也不会被记录在系统日志中,只会在web日志中记录一些数据提交的记录。

四、websehll检测方式

webshell检测主要可以从websehll的特征,流量,webshell的操作等方法进行检测。

4.1 基于webshell特征检测

常见webshell特征:

1)存在系统调用的命令函数,如eval,system,cmd_shell,assert等

2)存在系统调用的文件操作函数,如fopen,fwrite,readdir等

3)存在数据库操作函数,调用系统自身的存储过程来连接数据库操作。

4)具备很深的自身隐藏性,可伪装性,可长期潜伏到web源码中

5)衍生变种多,可通过自定义加解密函数,利用xor,字符串反转,压缩,截断重组等方式来绕过检测。例如通过base64编码,进制运算

以上对于webshell本身的行为分析,它带有对于系统调用,系统配置,数据库,文件的操作动作,可以通过关键词匹配文件找出webshell;再如一些压缩后的数据,有可能一些WAF并不会检测到内容存在危险。变性后的数据,WAF也检测不出存在的危险,但是脚本文件带有这些特殊的函数,本身就是危险文件。

这些检测可以通过grep去查找webshell,D盾之类的webshell查杀工具也是利用这种原理,对源码进行查杀。但是遇到一些变形过的webshell后门,关键字搜索不到,这种方式就不适用了

例子:

1)查找存在eval函数的php文件。

find  /var/www/* -type f -name "*.php"  |xargs grep "eval"

2)如果木马做了免杀处理,可以查看是否使用加密函数:

find  /var/www/* -type f -name "*.php"  |xargs grep "base64_decode"

3)查看是否做了拼接处理

find  /var/www/* -type f -name "*.php"  |xargs grep "@$"

4.2 基于webshell流量特征检测

1)基于流量行为特征的webshell检测

webshell带有常见写的系统调用、系统配置、数据库、文件的操作动作等,它的行为方式决定了它的数据流量中多带参数具有一些明显的特征,通过匹配行为的流量特征做检测,这也是基于webshell入侵后行为特征进行检测,当然也可以从系统层面webshell入侵行为进行检测。

例如:

 ifconfig 
 system
 whoami
 inetstat
 eval

常见的可以从data数据中去检索攻击者常用的命令和payload等,当然大部分的webshell不会这么直接,可能会经过编码,如最经典的webshell中国菜刀采用的是先url编码再base64编码,对应的采取解码的方式去发现敏感的行为特征。

这也是抓取流量的好处,因为在web访问日志中,是无法抓取POST方式的包,也就没法分析webshell入侵后的行为,而流量很好的做到了这一点。

2)经过webshell工具特征的检测

分析常见的webshell工具,然后抓包看其流量特征。

最常见的中国菜刀流量特征为:通过wireshark等抓包工具进行分析,可以发现编码通信内容通过cookie头传输,其中有三个cm、cn和cp变量,这是webacoo webshell管理工具的特征。

4.3 基于webshell系统行为特征的检测

这个思路和基于webshell的流量行为特征进行检测的想法大概一致,攻击者上传webshell总会做些什么,那么可以去监测系统的变化以及敏感的操作,尽可能的去收集服务器的信息,通过和之前的配置以及文件的变化对比监测系统达到尽可能发现webshell的成果。

1)文件分析

查看/tmp/init.d/usr/bin/usr/sbin等敏感目录有无可疑的文件,针对可疑的文件可使用stat进行创建修改时间,访问时间的详细查看,若修改时间距离事件日期接近,有线性关联,说明可能被篡改或者其他。

例如;

查找24小时内被修改的PHP文件:

find ./ -mtime 0 -name "*.php"

根据时间去反推变更的文件:

ls -al /tmp |grep "feb 27"

查找777权限以及隐藏文件:

find / *.jsp -perm 4777

2)进程分析(可以做)webshell执行命令的进程是一个实时的,其它时间就是一个合法的TCP连接,只能实时监控进程的状态。

使用netstat 网络连接命令,分析可疑端口、可疑IP、可疑PID及程序进程(top可以实时动态的查看系统的整体运行情况,主要分析cpu和内存多的进程,是一个不错的综合了多方面信息监测系统性能和运行信息的实用工具),最好可以去区分对外的监听端口和对内的监听端口,一般可以有效的查找出后门。

通过以下命令查找隐藏进程:

ps -ef | awk '{print}' | sort -n | uniq >1ls /proc | sort -n |uniq >2 diff 1 2

3)系统信息分析:

history (cat /root/.bash_history)
# 查看分析history (cat /root/.bash_history),曾经的命令操作痕迹,以便进一步排查溯源
/etc/passwd
# 查看有无新增的恶意用户或者除root之外uid为0的用户
crontab  /etc/cron*
# 查看当前的任务计划有哪些,是否有后门木马程序启动相关信息
$PATH
# 分析有无敏感可疑信息 

......

4)配置文件

如最普通的将pam.d下的ssh的验证模块改成su的验证模块,那么再次登录,验证uid为0,那么root就免密登录,而一般情况下,不仔细也是无法观察出的,还有更多的后门,再入php.ini后门,所以需要去监控一些培训文件,与之前的配置文件比较,以便于发现问题所在。

4.4 基于web日志webshell行为特征的检测

webshell的访问特征(如果你非要告诉我攻击者把webshell插入了其他的动态页面中2333):


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

那么接下来就可以使用awk、uniq、sort或者脚本对url每天的总访问数量、url独立访问的页面等进行统计分析。

awk -F " " '{print $1}' log |sort| uniq -c |sort -nr |more
cat access.log | cut-f1 -d " " | sort | uniq -c | sort -k 1 -r | head -10             
#查看页面访问排名前十的IP
cat access.log | cut-f4 -d " " | sort | uniq -c | sort -k 1 -r | head -10             
#查看页面访问排名前十的URL

在日志提权的时候尽可能的去除掉一些静态的页面和错误请求信息,常见的可以通过grep -v去排除,排除项有:

1)去除静态path(例如jpeg,jpg,gif,png,bmp,css,js,xls,xlsx,doc,xml,wav,tar.gz,zip,swf,mp3,ico,pidf,torrent) ;
2)去除白名单path (例如主页index.php,index.asp,index.aspx,index.ashx,index.html);
3)去除非webshell后缀的path (例如asp,aspx,php,jsp,py,cgi,pl,java,sh,war,cfm,phtml);
4)去除扫描器造成的path(按扫描器IP信誉库(云扫描器IP信誉库与时效性扫描器IP信誉库)与扫描器行为(可以简单的按ip host聚类,将单位时间内请求数超过M,独立路径数超过N的请求视为扫描器)来去除);
5)去除响应码非200的path。

4.5 动态检测

上面介绍了静态检测,通过对指定脚本的关键词、高危函数、文件修改时间、权限等以及和其他文件的关联性等多个纬度的特征进行检测。
速度快,且能快速定位;动态特征检测通过Webshell运行时使用的系统命令或者网络流量及状态的异常来判断动作的威胁程度,Webshell通常会被加密从而避免静态 特征的检测,当Webshell运行时就必须向系统发送系统命令来达到控制系统或者操作数据库的目的,通过检测系统调用来监测甚至拦截系统命令被执行,从行为模式上深度检测脚本文件的安全性。

这种首先就需要能够获取系统执行命令的进程链,然后在根据配置的规则进行检测,例如在进程链中执行了nc反弹

4.6 统计学

在日志分析中,基于webshell特征去发现webshell也范属于统计学。
NeoPiS 国外流行的一个基于统计学的webshell后门检测工具,它使用五种计学方法在脚本文件中搜索潜在的被混淆或被编码的恶意代码。

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


1)信息熵(Entropy):通过使用ASCII码表来衡量文件的不确定性;

2)最长单词(LongestWord):最长的字符串也许潜在的被编码或被混淆;

3)重合指数(Indexof Coincidence):低重合指数预示文件代码潜在的被加密或被混效过;

4)特征(Signature):在文件中搜索已知的恶意代码字符串片段;

5)压缩(Compression):对比文件的压缩比。

标签:WebShell,攻防,文件,特征,检测,sort,webshell,攻击者
From: https://www.cnblogs.com/o-O-oO/p/18309560

相关文章

  • #工业材料—表面缺陷检测的技术难点分析
         在制造业,工业材料例如:铜箔,薄膜,铝箔,电子箔,光学膜,无纺布,造纸,各类平面材料等等,由于工艺,外部等原因,材料在生产过程中,材料表面会产生很多缺陷,例如:孔洞,脏污,异物,划伤,凹凸点,破损,针孔,污染等各类细小缺陷。    这些材料表面的缺陷如果不及时发现和处理,材料流到下道......
  • 在安卓上运行yolov8目标检测模型(ncnn)
    在安卓上运行yolov8目标检测模型(ncnn)关于首次发表日期:2024-07-25本人不会Java和Android,如有错误,敬请指出主要是整理一下以下资料https://medium.com/@gary.tsai.advantest/top-tutorials-for-deploying-custom-yolov8-on-android-️-dd6746afc1e6https://github.com/FeiGeCh......
  • 微信小程序批量检测是否被封禁异常PHP代码
             ​      <?php//要检测的appid列表$appids=array('appid1','appid2','appid3');//使用实际的appid//循环调用接口检测小程序状态foreach($appidsas$appid){    $url='https://down.ychengsnsm.com/xcx/checkxcx.php?appid=......
  • 计算机视觉基础:Harris角点检测算法手撕
    文章目录前言一、Harris角点检测是什么?二、算法原理1.角点及角点检测2.Harris角点检测原理3.角点的判别三、代码展示1.编程思路2.角点检测代码3.OpenCV接口调用四、可视化结果1.harris角点检测代码结果展示2.不同阈值和K值下角点检测结果比较五、实验总结前言本......
  • YOLOv10实时端到端目标检测
    文章目录前言一、非极值大抑制(NMS)二、NMS算法的具体原理和步骤三、YOLOV10创新点四、YOLOv10使用教程五、官方github地址前言  距离上次写YOLOv5已经过去了两年,正好最近用YOLOv10重构了项目,总结下YOLOv10。YOLOv10真正实时端到端目标检测,那么什么是端到端? ......
  • 实时系统中的目标检测:速度与精度的较量
    实时系统中的目标检测:速度与精度的较量目标检测算法是计算机视觉领域的基石之一,广泛应用于实时系统中,如视频监控、自动驾驶汽车、工业自动化等。然而,将目标检测算法应用于实时系统并非易事,它带来了一系列技术挑战。本文将探讨这些挑战,并讨论可能的解决方案,同时提供代码示例......
  • 目标检测的即时演进:在线学习在行动
    目标检测的即时演进:在线学习在行动在线学习(OnlineLearning)是一种机器学习范式,它允许模型通过逐步接收数据并实时更新来学习。这种学习方式对于目标检测尤其重要,因为它允许检测系统在不断变化的环境中适应新的或罕见的目标,同时保留对旧目标的检测能力。本文将探讨在线学习......
  • 1328、基于51单片机光照人体检测手自动语音控制蓝牙远程控制智能台灯(程序+原理图+PCB
    毕设帮助、开题指导、技术解答(有偿)见文未  目录方案选择单片机的选择一、设计功能二、实物图单片机模块设计三、原理图四、程序源码五、PCB图六、proteus仿真资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方......
  • 小目标检测:深度学习中的微观挑战
    小目标检测:深度学习中的微观挑战在计算机视觉领域,小目标检测是一个具有挑战性的任务。小目标由于其在图像中占据的像素较少,常常难以被准确识别和定位。这一问题在交通监控、卫星图像分析、医学成像等领域尤为突出。本文将探讨小目标检测面临的主要挑战,并讨论一些流行的解决......
  • 02-2 【编写loader工程内容】检测内存容量
    方法:利用BIOS中断来检测内存容量,具体是BIOSINT0x15(或INT15H)具体使用方法:参考文档链接:https://wiki.osdev.org/Detecting_Memory_(x86)实操(1)首先定义一个结构体因为内存是分成好多块的,有一些是已经被硬件占用了:因此检测内存返回的结构体应该是个结构体数组......