恶意软件家族样本识别
最近明显感觉工作内容过多, 有些忙不过来, 而且白天会有各种人找, 实在难以安心做事...
目前这个东西的大概框架已经在心里有了雏形, 目前方案细节还在考虑
不出意外的话, 应该需要做一个多源日志的威胁情报匹配模块
威胁情报的内容除比较常见的 ip, domian, md5 等信息外, 还会尽可能做一些 ttps 相关的考虑
目测需要一套类似于 yara 的语法分析引擎来进行规则的匹配
前几天面了一个天融信的大兄弟, 至少天融信没有这方面的规划. mark
这个仓库前期可能仅放一些思维碎片, 等框架搭建好后, 部分家族情报同步到这边来. 前期的目录结构可能会失控
工作原因, 终于有机会正经搞这个了, 目前先把最近比较活跃的家族覆盖一下吧
家族分类, 分析信息放到
最近公司结构调整, 没有很多心思做这个了... 再后来开始看empire的源码, 代码虽然幼稚, 但是结构很有借鉴意义 因为结构调整, 最近开始想以后的发展方向, 这边就先鸽了吧
说实话, 到我创建这个仓库的时候, 这个 detector 应该是什么样子并没有想好 但是心里一直觉着, 作为网络/系统安全防的一方, 应当有相对主动的捕获能力才对
这个项目当前本质上更像是一个基于yara的文件检测引擎, 是我某个计划的子集, 目的有二:
前期计划实现的功能:
- 主机失陷状态判断
- 样本收集
目前认为它未来应该有的能力有:
- 衍生样本识别(简单规则/ML)
- 文件检测 + 终端日志 + 流量 三特征匹配
项目本身为 python2.7, 这是受其运行环境限制的, hhhhhhh, 尽量写得兼容性好一些
目前还没有想好具体怎么做, 项目不大, 顶多一次重构
因为是对每个样本比较底层的分析, 即使有很多行业大佬的文章作为参考, 仅我一人之力更新可能比较慢
just do it!
11月1日去石家庄出差了, 延误了近一周...今天终于把永恒之蓝的规则写完
手里又攒了几个样本, 可惜都是shell或powershell的,
想搞几个二进制样本玩玩, 目测要花很多时间, 慢慢更吧, 来日方长
- invalid field name "md5"
sudo apt install libssl-dev && sudo pip install -I yara-python
- about hash.md5
原本想写的优雅一些, 类似于
import "hash"
rule test : coder
{
meta:
author = "w-devin<[email protected]>"
description = "DESCRIPTION"
thread_level = 0
reference = "REFERENCE"
strings:
$hash_1 = "10b58b0ec6494c895e25b04628c34e2b"
$hash_2 = "30220c69c2a6232b91685217d83ff17e"
condition:
hash.md5(0, filesize) in ($hash_*)
}
emmmmmm, 理所当然的不支持了, yara 的 in
作用为指定地址或偏移地址
然后使用 for any of
import "hash"
rule test : coder
{
meta:
author = "w-devin<[email protected]>"
description = "DESCRIPTION"
thread_level = 0
reference = "REFERENCE"
strings:
$hash_1 = "10b58b0ec6494c895e25b04628c34e2b"
$hash_2 = "30220c69c2a6232b91685217d83ff17e"
condition:
for any of ($*) : (hash.md5(0, filesize) == $)
}
并不行, 据我推测, hash.md5
只能与字符串常量比较, 不能为变量, 从github和vt的规则仓库均只能找到下面这种写法
import "hash"
rule test : coder
{
meta:
author = "w-devin<[email protected]>"
description = "DESCRIPTION"
thread_level = 0
reference = "REFERENCE"
condition:
hash.md5(0, filesize) == "30220c69c2a6232b91685217d83ff17e"
}
emmmmm
- 文本文件格式问题导致的无检出
例如 utf-16LE 格式的 4.ps1, 将内容转化为utf8, 或者string规则后加 wide就可以了