WebShell检测的相关特征

WebShell

WebShell的检测本质上也就是恶意代码的检测

Webshell呈现出的相关特点:

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

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

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

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

(5)衍生变种多,可通过自定义加解密函数、利用xor、字符串反转、压缩、截断重组等方法来绕过检测;

(6)访问IP少,访问次数少,页面孤立,传统防火墙无法进行拦截,无系统操作日志;

(7)产生payload流量,在web日志中有记录产生。

WebShell检测技术:

  1. 静态检测:匹配特征码,特征值,危险函数,采用的方法有哈希指纹,相似度比较等;
  2. 动态检测:执行过程中所呈现出的行为,如文件/数据库操作,网络访问等;
  3. 语法检测:分析程序语言本身存在的特性,如opcode,注释,变量,函数,字符串,程序语法结构(抽象语法树,结合NLP)等
  4. 统计检测:计算信息熵、最长单词、重合指数、压缩比,并结合机器学习方法建模进行检测。

基于Web日志的统计特征:

  1. URI信息熵(主要是参数值部分)
    • 主要针对编码,加密数据,比如base64编码,呈现出的信息熵明显大于正常数据
    • 会存在误报情况,有些URI中的参数值也会呈现出类似编码后的形式
  2. URI的访问频率
    • Webshell页面一般是孤立页面,很少会被访问到,一般只是控制者访问
    • 需排除也很少会被访问的,如后台管理,和测试维护页面
  3. 请求头是否有referer字段
    • 正常页面一般都会有出入度访问的链接,入度为referer字段,出度为location字段,Webshell一般很少会有链接
    • 但也要排除有些正常情况没有入度,如用户初次访问
    • 因rederer字段可被修改,也存在被绕过
  4. 统计请求中的key参数的频率
    • 正常web业务key参数都是固定的,而webshell发起请求时,可能会出现缺失参数
  5. 统计请求中的key参数关联的页面
    • 正常页面key出现频率高,关联页面也多
    • 登录页面,出现频率高,关联页面少
    • webshell则频率低,关联页面也少
  6. 文件的重合指数IC
    • 加密文件的随机性变大,字符重合性指数变小,衡量文件是否加密,正常web页面文件很少会需要加密
  7. 统计参数,参数值的长度
    • 比如说超过均值+3个标准差的,视为异常
  8. 文件创建时间
    • 一般文件创建时间集中在部署日期,新产生的文件会存在可疑,不排除新增加
  9. 文件的修改时间(最后一次被修改的时间)
    • 一般部署后不会变动,除某些配置文件
  10. 文件访问时间
    • 一般恶意用户不会在正常时间访问,或发起恶意目的的请求
  11. 文件权限
    • 文件权限的变动
  12. 文件所有者
    • 异常用户
  13. 文件中危险函数的比例
    • 文件操作,数据库,系统明亮执行,加解密编码类函数
  14. 基于指纹,哈希比对
    • 对正常页面建立指纹库,定义阈值,计算相似值,检出异常
    • 类似,可以计算余弦相似度,编辑距离等

   转载规则


《WebShell检测的相关特征》 空岛之恋 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
关于SOC的一点思考 关于SOC的一点思考
安全设备发展到今天,已经是眼花缭乱,功能也是花里胡哨的,或许已经过了其自身本应该有的职责与价值。今天我就跟大家来聊聊这漫天乱飞的安全设备,到底这么多功能有啥用,是否需要这么多功能,以及为什么又会出现SOC,是不是都是顺应变化呢? 下面我就来
2019-08-30
下一篇 
关于人生的意义 关于人生的意义
人生的意义是什么?这似乎是个特别深奥的话题!让人不禁会想到哲学上的三大终极拷问“我是谁”,“我从哪里来”,“要到哪里去”,如果你仔细思考,这三大问题,其实是人类在对自我进行探索,以及与自然、宇宙的关系!也就是人类从诞生、生存
2019-08-21
  目录