WebShell入侵检测的相关技术

2020/03/31 -
本文是阅读文章[1]之后的自己记录,请直接阅读原文更好。


文章[1]比较详细的记录了很多应该是安全人员使用的分析方法,虽然简单涉及了一些类似机器学习的方法,但是没有完整的说明。[1]中主要是对应对的方法进行了较为全面的介绍,可以作为知识面的扩充。


WebShell简介

入侵各种企业网站的时候,通常是利用各种方式来获取webshell。

  • 常见的方式:直接上传获取webshell、SQL注入、远程文件包含(?)、FTP、XSS(作为一部分),还有一些利用数据库的方式(这个就更不明白了)
  • WebShell的分类:
  1. 从协议分类:基于TCP、基于UDP、基于ICMP、基于DNS
  2. 从工具分类:nc反弹、telnet反弹、SSH端口转发、awk反弹
  3. 从编程语言分类:bash,perl,python,php,ruby,java
    (上面的这些话是不是可以这么理解,就是说,攻击者已经在企业网站上原生的web执行环境下获取到了一个简单的webshell,然后从这种方式下才继续进一步获取控制权呢?如果是这样,就能理解为什么还有那么多反弹方式了,我总感觉他的这个说法已经是后面的步骤了。要想理解这个问题,就必须去学习大量的webshell到底是怎么编写的)
  • WebShell功能
    1)站长工具:用于管理网站
    2)持续远程访问:攻击者可以使用密码验证以及其他技术来保证只有自己可以访问
    3)权限提升:通过权限提升来实现更高的控制权,常见的方式有,查找敏感配置文件、通过内核漏洞提权、利用低权限用户目录下可被Root权限用户调用的脚本提权、任务计划等
    4)隐蔽性(这个不算是功能把):webshell通过post方式进行交互,只会在web日志中记录这些内容。

Webshell检测方式

  • 基于webshell特征检测
  1. 常见的webshell函数

(1)存在系统调用的命令执行函数,如eval、system、cmd_shell、assert等;
(2)存在系统调用的文件操作函数,如fopen、fwrite、readdir等;
(3)存在数据库操作函数,调用系统自身的存储过程来连接数据库操作;

隐蔽方式:
衍生变种多,可通过自定义加解密函数、利用xor、字符串反转、压缩、截断重组等方法来绕过检测;
通过base64编码等。

//进制运算    
 
//利用注释符

利用一些敏感的函数来进行检测,检测方式可以直接使用grep命令来进行。

#查看是否调用了系统函数
find  /site/* -type f -name "*.php"  |xargs grep "eval"
#查看是否调用了加密函数(这个确定能行吗???正常文件就不带吗?
#这个感觉不是一种非常强的特征,或者说他是工作在一定环境下的)
find /site/* -type f -name “*.php” |xargs grep "base64_decode"
#查看是否存在拼接
find /site/* -type f -name “*.php” |xargs grep "@$"
  • 基于流量特征的webshell检测
    (我觉得,这个更准确的来说,是通过对HTTP请求来检测)
  1. 是否带有系统命令
  2. 针对webshell管理工具的特征,比如某些攻击的请求头部是什么样子,cookie等内容。
  • 基于webshell系统行为特征的检测
  1. 文件分析
    查看有没有敏感文件
  2. 进程分析
  3. 系统信息分析
    (据他所说,这些分析也是应急经常要分析的东西)
  4. 配置文件
    SSH验证模块,这个就更不知道是什么了。
  5. chkrootkit/rkhunter
    chkrootkit是用来监测 rootkit 是否被安装到当前系统中的工具。
    (我觉得,这些内容就是那种已经被入侵,或者说平时巡检的一些检测过程了)
  • 基于web日志webshell行为特征的检测
    利用工具对url每天的总访问数量进行排序,找出相对来说,比较孤立,同时访问次数比较少的网页。
    为了防止误报,还要去除一些乱七八糟的东西,比如静态文件,白名单,有信誉IP等。

  • webshell其他检测方法

  1. 动态检测(沙箱)
    这个是不是就是按照op-code的方式呢?他文中提到了通过发送系统命令这种东西, 感觉还是不太一样。
  2. 统计学
    检测文本中的内容

相关的检测技术

基于机器学习的jsp/jspx webshell检测

参考文献

[1]Webshell入侵检测初探(一)

你可能感兴趣的:(数据库,python,java,编程语言,linux)