blog icon indicating copy to clipboard operation
blog copied to clipboard

[(Webshell) | (Malware) | (Advanced Persistent Threat)] 检测相关

Open mylamour opened this issue 8 years ago • 4 comments

forensic

综述

  • 实体

日志,流量,行为,文件本身

  • 方法

黑名单,白名单,规则匹配,模糊hash校验, MLDL(CNN/SMV/Naive Bayes,图聚类), KG(知识图谱关联属性), 语法抽象树(AST)

Webshell 检测篇

Malware 检测篇

APT 检测篇 与 通用检测框架

聚合waf数据,web日志,交换机日志,IDS日志等等,以及一些设备信息应该是可以发现APT攻击的,APT攻击不易发现甚至不能发现,不意味着我们什么都不能做,攻击手段也不一定是高的什么都做不了。如果能够布置大规模的蜜罐网络,进行伪装,并有效的收集设备信息,聚合起来通过不同手段进行检测。或许也未可知。但是由于本身我没有这方面资源,就不扯淡了。

mylamour avatar Nov 04 '17 10:11 mylamour

temp.mark

  • labelimage只能通过反例来确认
  • simple model,flask web api还是带着模型到客户端
  • text classification的问题,字符长度导致内存溢,fit-genrator也不行,看来要降下维
  • stringsfile 转换任意文件到string,模仿strings命令
  • AST抽取序列会不会提高精度
  • 是否可以通过聚类来确定webshell种类,然后再学习,多标签分类.
  • 是否可以通过seq2seq的方式或者GAN方式生成对抗序列进行训练

怎么生成webshell by ml 看似正常的webshell

  • 自动化生成webshell的想法之一,输出语句,和已知webshell的渲染截图互相比较。根据相似性得到结果。但是觉得不怎么好啊,两个生成之间的精度都会有问题。

mylamour avatar Apr 01 '18 02:04 mylamour

变迁:

检测模式

  • ssdeep
  • yara + ssdeep
  • 两种方式都配合上黑白名单
  • python系统调用, 各自分别编译成standalone的文件
  • 将ssdeep作为yara模块整合到一起
  • 机器学习方式与以上方式
  • 提供web api检测并接入其他webshell检测api
  • tlsh编译standalone模块
  • [ ] 近期准备把tlsh整合进yara模块

说明

  • ssdeep/tlsh的hash方式,无法对较小的文件产生有意义的值,也就意味着无法检测一句话木马,以及一些图片马。yara的依赖于规则,规则的质量好坏决定了检测效果的好坏。无法检测未知,有限的检测一些变种。

  • ssdeep/tlsh 只占用一个cpu, yara会占用所有cpu,内存暴涨。可通过外部措施限制

  • yara的输出,对命中结果是多条输出,解析终端输出合并得到一个文件的检测结果时,如果此时恰好不是顺序连续输出的,则解析结果不全。

  • yarac编译后的Yar规则文件本身也可能被Widows认为是病毒文件

  • yara本身针对有些文件会出现无法读取的问题

信息抽取

  • python 库调用
  • 系统命令调用生成输出解析
  • 使用对应平台脚本语言输出到文件再进行解析,例如win下用powershell, linux下用shell
  • osquery 获取

说明

  • osquery 功能有限,Linux下非常好使,win下不行,python的一些库,例如提取注册表的,感觉并不是很好使。调用系统命令就面临着解析终端输出的问题,可以采用line by line的方式。写到文件再进行解析的方式,不应该这样占用宿主机空间。

机器学习

  • CNN文本分类, tf版本
  • CNN文本分类, keras版本
  • 文本oneline时最开始由python 脚本处理,写到临时文件,后用shell脚本处理,命令行很方便,再到python处理
  • 增加文本处理函数,直接读取文件列表,读取文件,读取文件夹,皆可
  • 增加图像识别功能,套用labelimage进行识别
  • 采用fasttext 进行分类尝试
  • 采用word2vec进行词向量转换
  • 采用glove方式进行词向量转换

说明

  • 应该覆盖样本全面,单独采用某种cms作为训练样本,会导致测试有偏差。单独采用wordpress训练的结果对discuzx,phpmyadmin的检测结果并不友好。

  • build vocab的时候,可能多次的结果并不一样

  • fasttext 依赖于更多的数据,才能构建出一个很好的词向量

  • 采用一句话木马进行训练的时候,实验效果很好,实际测试很差,原因因为,有效词太少。应当把所有数据一同训练生成较大的sequence, 并以此进行训练

  • 图像识别处理的结果,应当在最后无法判断,时渲染webshell再进行检测得到结果

  • 训练好后的模型往往很大,不适宜带到客户端。只带weights倒可以,但是客户端还要安装相应环境,不方便。

  • 好的参数具有很好的效果,算法让人很头秃

  • 准确度较高,未知威胁感知具有较好的准确率,对变种的检测较好, 可以检测ssdeep无法检测的一句话,yara没有的规则

  • [ ] 可以通过yara对已知webshell进行检测,并根据输出标签制作训练数据集
  • [ ] 准备尝试seq2seq ,lstm,sru等分类方式对webshell进行预测 ,
  • [x] 聚类对已知webshell分类。

web 接口

  • 单文件及文件夹常规检测(ssdeep+yara)
  • 单文件综合检测(ssdeep+yara+ml)
  • 单文件机器学习检测(cnn + lableiamge)
  • url 截图渲染
  • 黑白名单接口上传
  • 采用队列方式(并未部署)

说明

  • 后由于截图渲染速度比较慢,采用队列python rq redis 方式,渲染时占用资源达到稳定。不过感觉一旦出现多用户同时使用,按照rq为每个请求分配的fork模式,还是会占用满

规则收集

  • 自动化黑白名单下载更新
  • YarGen的方式个人感觉不太好
  • Yara Editor 版本搭建,可供在线编辑规则,并下载。
  • 规则编译的方式,支持单个规则,文件夹内规则编译方式
  • 接入 MISP

说明

  • yarrGen采用的是贝叶斯方式生成的,有时间看看有没有更好的生成方式

测试

  • web的测试用的docker 搭建php环境,拷贝进去文件进行测试的。
  • 规则更新后的测试,可以根据近两次的结果,或者测试批次的id进行导出为yara规则格式,以及其他方式。 可以单独测黑白名单。python
  • 其他的直接本地测试,输出结果并分析。

说明

  • 缺乏一键自动化测试并生成分析报告

mylamour avatar Apr 09 '18 13:04 mylamour

整理下webshell的种类划分,主要来自骑着蜗牛逛世界的博客,整理了一下,并绘成了脑图。

webshell

mylamour avatar Apr 18 '18 11:04 mylamour

最初是cdxy在兜哥的安全和机器学习群开始发他做的那个检测webshell的东西,再之后在会上的PPT。今日偶然在电脑里,发现,上传于此。 从数据视角探索安全威胁_cdxy.pdf

mylamour avatar Sep 03 '18 06:09 mylamour