Skip to content

Latest commit

 

History

History
146 lines (97 loc) · 4.29 KB

README.md

File metadata and controls

146 lines (97 loc) · 4.29 KB

MalwareFamilyIdentify

恶意软件家族样本识别

TODO

2021-08-27 01:41:00

最近明显感觉工作内容过多, 有些忙不过来, 而且白天会有各种人找, 实在难以安心做事...

目前这个东西的大概框架已经在心里有了雏形, 目前方案细节还在考虑

不出意外的话, 应该需要做一个多源日志的威胁情报匹配模块

威胁情报的内容除比较常见的 ip, domian, md5 等信息外, 还会尽可能做一些 ttps 相关的考虑

目测需要一套类似于 yara 的语法分析引擎来进行规则的匹配

前几天面了一个天融信的大兄弟, 至少天融信没有这方面的规划. mark

这个仓库前期可能仅放一些思维碎片, 等框架搭建好后, 部分家族情报同步到这边来. 前期的目录结构可能会失控

2021-08-06 14:35:00

工作原因, 终于有机会正经搞这个了, 目前先把最近比较活跃的家族覆盖一下吧

家族分类, 分析信息放到

2021-01-16 21:52:00

最近公司结构调整, 没有很多心思做这个了... 再后来开始看empire的源码, 代码虽然幼稚, 但是结构很有借鉴意义 因为结构调整, 最近开始想以后的发展方向, 这边就先鸽了吧

2020-10-24 01:26:00

说实话, 到我创建这个仓库的时候, 这个 detector 应该是什么样子并没有想好 但是心里一直觉着, 作为网络/系统安全防的一方, 应当有相对主动的捕获能力才对

这个项目当前本质上更像是一个基于yara的文件检测引擎, 是我某个计划的子集, 目的有二:

前期计划实现的功能:

  1. 主机失陷状态判断
  2. 样本收集

目前认为它未来应该有的能力有:

  1. 衍生样本识别(简单规则/ML)
  2. 文件检测 + 终端日志 + 流量 三特征匹配

项目本身为 python2.7, 这是受其运行环境限制的, hhhhhhh, 尽量写得兼容性好一些

目前还没有想好具体怎么做, 项目不大, 顶多一次重构

因为是对每个样本比较底层的分析, 即使有很多行业大佬的文章作为参考, 仅我一人之力更新可能比较慢

just do it!

2020-11-06 10:48

11月1日去石家庄出差了, 延误了近一周...今天终于把永恒之蓝的规则写完

手里又攒了几个样本, 可惜都是shell或powershell的,

想搞几个二进制样本玩玩, 目测要花很多时间, 慢慢更吧, 来日方长

踩坑记录

  1. invalid field name "md5"

reference

sudo apt install libssl-dev && sudo pip install -I yara-python
  1. 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 只能与字符串常量比较, 不能为变量, 从githubvt的规则仓库均只能找到下面这种写法

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

  1. 文本文件格式问题导致的无检出

例如 utf-16LE 格式的 4.ps1, 将内容转化为utf8, 或者string规则后加 wide就可以了