使用yarGen提取Linux恶意脚本特征

枫少@KillBoy
枫少@KillBoy
管理员
216
文章
0
粉丝
资源分享608,199字数 1084阅读3分36秒阅读模式
AI智能摘要
面对linux下千篇一律的恶意shell脚本,如何快速识别其所属家族?本文揭秘一款高效工具yarGen的实战用法:从8220黑客团伙(StartMiner)的真实样本出发,演示如何半自动化提取具有家族标识性的字符串、语法结构和IOC特征。你将学会如何筛选高价值规则、规避误报,并构建精准YARA检测规则,大幅提升恶意脚本分析效率。
— AI 生成的文章内容摘要

linux下的恶意软件多为sh脚本,且由于使用的命令大同小异(均为下载文件、运行进程、创建定时任务、写ssh后门等操作),经常难以分辨恶意sh脚本是属于哪个病毒家族的。

遇到这种情况,使用yara规则对恶意脚本进行检测分类是个不错的选择,本文将介绍如何借助yargen实现对Linux恶意脚本特征的半自动化提取。

关于yargen

yargen是一个自动化提取yara规则的工具,可以提取strings和opcodes特征,其原理是先解析出样本集中的共同的字符串,然后经过白名单库的过滤,最后通过启发式、机器学习等方式筛选出最优的yara规则,项目地址:https://github.com/Neo23x0/yarGen

使用yarGen提取Linux恶意脚本特征-图片1

下面以8220黑客团伙(StartMiner)的恶意脚本进行演示:

如何提取其yara规则?

首先需要收集该家族每次变种的样本,如下,该家族从2018年8月到现在一直在更新,其特点是脚本大部分都伪装成.jpg后缀。

使用yarGen提取Linux恶意脚本特征-图片3

yargen的用法很简单,-m参数,加上样本集的目录就行了,第一次运行yargen的话可能会比较久,因为它要下载更新白名单库。

使用yarGen提取Linux恶意脚本特征-图片5

运行过程中,yargen会显示提取的特征数详情,其中我们要关注的是SUPER rules,这些规则代表的是泛规则,可以匹配家族的多个样本。

使用yarGen提取Linux恶意脚本特征-图片7

生成的文件yargen_rules.yar在yargen.py的同目录下,打开滑到Super Rules的地方,即是泛规则,规则的名字代表着能匹配哪些样本,如下第一个rule _logo8_jpg_hehe_0,代表匹配脚本logo8.jpg及hehe.sh。

使用yarGen提取Linux恶意脚本特征-图片9

不过也不是Super Rules里所有规则都要关注,主要聚焦看匹配数最多的规则,如下我会关注rule _cr_logo8_jpg_2start_jpg_2start_jpg_3start_jpg_1规则,及rule _cr_cr_logo8_jpg_logo8_jpg_2start_jpg_2start_jpg_2start_jpg_2start_jpg_3start_jpg_3start_jpg_3规则。

yargen虽然能自动化提取字符串特征很方便,但工具难免会有误报,必须得自己人工筛选一遍,如下,先看rule _cr_logo8_jpg_2start_jpg_2start_jpg_3start_jpg_1规则,我挑选了红框中5个比较特别的字符串,其他一些WGET、download、sleep等字符串可能会存在误报场景,我就不考虑了。

使用yarGen提取Linux恶意脚本特征-图片11

再看rule _cr_cr_logo8_jpg_logo8_jpg_2start_jpg_2start_jpg_2start_jpg_2start_jpg_3start_jpg_3start_jpg_3规则,由于其匹配的样本数多,自然的特征项就比较少,我选取了如下2个特征。

使用yarGen提取Linux恶意脚本特征-图片13

筛选出如上特征后,需要查看字符串在脚本中对应的位置,以确认该特征是否为黑客独特的脚本编写习惯。如下图以echo “*”为例,发现黑客在编写echo语句时都喜欢在开头加个大写首字母,且延续了好几个变种,这个可以作为特征。

使用yarGen提取Linux恶意脚本特征-图片15

再看”case $sum in”规则,该语句用于判断文件MD5,也是黑客的一个脚本编写习惯,延续了几个变种。

使用yarGen提取Linux恶意脚本特征-图片17

除此之外,还发现脚本里都有f2=”*”的变量声明,也可以作为特征。

使用yarGen提取Linux恶意脚本特征-图片19

以及judge函数名。

使用yarGen提取Linux恶意脚本特征-图片21

接着提取脚本中的域名/IP作为特征,因为黑客在新的变种中有可能复用旧的C&C。

使用yarGen提取Linux恶意脚本特征-图片23

最后优化后的规则如下,主要为3类字符串,语法特征、变量特征、ioc特征,根据不同的比重编写condition,其中ioc相当于硬性指标,只要出现任意1个就可以直接确认该脚本为8220/StartMiner家族。

使用yarGen提取Linux恶意脚本特征-图片25

验证:对该规则进行测试,测试样本均能检出。

使用yarGen提取Linux恶意脚本特征-图片27

Linux脚本基本不会进行混淆,且均是字符串,使用yargen进行自动化提取有其优势,可以大大提高提取特征的效率,大家可以尝试使用该方法来提取其他家族的yara特征。另外,每个安全研究员提取的yara都不一样,风格不一,需要进行大量样本的测试,来不断优化yara规则的质量。

参考链接:

https://blog.csdn.net/m0_37552052/article/details/104570954

https://s.tencent.com/research/report/978.html

https://www.freebuf.com/sectool/238293.html

 
枫少@KillBoy
评论  60  访客  60
    • 海风吹
      海风吹 0

      SUPER rules真能打中家族变种?求实测数据

      • 宇宙牧羊人
        宇宙牧羊人 1

        我用过yargen,但最后还得手动筛到怀疑人生

          • 蜜糖跳跳
            蜜糖跳跳 0

            @ 宇宙牧羊人 白名单更新确实慢,但跑一次后续就快了

          • 天秤优雅
            天秤优雅 1

            这工具之前试过,生成的规则误报一堆😭

            • FurballFrolic
              FurballFrolic 0

              echo开头大写字母也算特征?黑客真有仪式感

                • 风痕语
                  风痕语 0

                  @ FurballFrolic 大写开头确实挺奇怪的,估计是作者的习惯吧。

                • 蓝调
                  蓝调 0

                  f2=”*”这种变量名都能成指纹,离谱…

                  • 安静观察者
                    安静观察者 0

                    case $sum in那段我见过,居然是同一批人?

                      • 一盏茶
                        一盏茶 0

                        @ 安静观察者 看到case $sum in直接DNA动了,去年挖矿脚本里一模一样

                      • BubblegumDream
                        BubblegumDream 0

                        ioc硬匹配是快,但换C&C不就废了

                          • 射手远征
                            射手远征 0

                            @ BubblegumDream 变量名都能当特征,黑客也太随意了

                            • 血月残影
                              血月残影 0

                              @ BubblegumDream 换C&C确实能绕,但老域名复用太常见了,赌的就是这个惯性

                            • 于阗美玉
                              于阗美玉 0

                              yargen更新白名单慢得要死,等了半小时

                              • 月晕
                                月晕 0

                                这个方法可以试试

                                • 瑜伽生活家
                                  瑜伽生活家 1

                                  脚本没混淆确实好办,换作Powershell早炸了

                                  • 司棋
                                    司棋 0

                                    yargen这工具真能节省时间,不用手动提取特征了

                                      • 狂兽
                                        狂兽 1

                                        @ 司棋 别看宣传图好看,实际落地全是坑

                                        • 皮卡丘没电了
                                          皮卡丘没电了 0

                                          @ 司棋 省时间是真,可筛规则筛到凌晨三点也是真

                                          • 花团锦簇
                                            花团锦簇 0

                                            @ 司棋 用过一次,省了不少事儿,不过还是得自己挑挑误报。

                                            • 小鳄鱼
                                              小鳄鱼 0

                                              @ 司棋 yargen省时间是真,但筛规则照样熬通宵

                                            • 魂幡舞动
                                              魂幡舞动 0

                                              试过其他家族的效果如何?

                                              • 星语糖
                                                星语糖 0

                                                写规则最怕误报,人工筛查逃不掉

                                                • 猫耳小铺
                                                  猫耳小铺 0

                                                  SUPER rules的误判率高吗?

                                                    • 月光小筑
                                                      月光小筑 1

                                                      @ 猫耳小铺 SUPER rules水得很,得自己扒半天

                                                    • 天青
                                                      天青 0

                                                      echo大写这个细节抓得不错

                                                      • 松风听雨
                                                        松风听雨 0

                                                        case语句确实常见,好多脚本都有

                                                          • 虚无代码士
                                                            虚无代码士 0

                                                            @ 松风听雨 case语句满大街都是,光靠这个容易误伤

                                                          • 书卷多情
                                                            书卷多情 0

                                                            yargen生成的规则需要优化多少?

                                                              • 未来战士
                                                                未来战士 0

                                                                @ 书卷多情 我们试的时候前两周全在修白名单

                                                                • 糖醋排骨真香
                                                                  糖醋排骨真香 0

                                                                  @ 书卷多情 少说得删七八成生成的规则,剩下的再细调

                                                                  • 逗闷子
                                                                    逗闷子 1

                                                                    @ 书卷多情 我们那批样本优化了快一个月才稳定

                                                                  • 小蛇蛇蛇
                                                                    小蛇蛇蛇 1

                                                                    域名硬匹配太容易绕过了

                                                                      • 烈日炎炎
                                                                        烈日炎炎 0

                                                                        @ 小蛇蛇蛇 我也遇到过,换成正则或模糊匹配才靠谱。

                                                                        • 发呆的榴莲
                                                                          发呆的榴莲 0

                                                                          @ 小蛇蛇蛇 域名一换就失效,ioc硬匹配有点天真了

                                                                        • 白鹤琴师
                                                                          白鹤琴师 0

                                                                          f2=”*”这都能当特征?黑客起名也太懒了吧😂

                                                                          • 月亮饼干
                                                                            月亮饼干 0

                                                                            白名单更新慢就算了,关键还经常漏掉系统命令,误报离谱

                                                                            • 竹林七贤
                                                                              竹林七贤 0

                                                                              求问下,这种规则在生产环境跑起来性能开销大吗?

                                                                              • 呆萌河马
                                                                                呆萌河马 1

                                                                                之前搞过类似提取,光echo大写就卡了两天,真有人注意这细节

                                                                                • 嵌入式农夫
                                                                                  嵌入式农夫 1

                                                                                  又是标题党?说半自动,结果八成还得手搓

                                                                                  • 社交小萤火
                                                                                    社交小萤火 0

                                                                                    SUPER rules看着牛,实际跑起来命中一堆正常脚本,裂开

                                                                                    • 风语秘徒
                                                                                      风语秘徒 1

                                                                                      脚本没混淆是好事,但下次他们学聪明点咋办?

                                                                                      • 远方旅人
                                                                                        远方旅人 0

                                                                                        这方法对付没混淆的脚本还行,但黑客真要加点花活就歇了

                                                                                        • 泡芙妹妹
                                                                                          泡芙妹妹 0

                                                                                          f2=”*”都能当特征?笑死,他们变量名是随机按的吧😂

                                                                                          • 光年吟游
                                                                                            光年吟游 0

                                                                                            echo开头大写也算独门标志?感觉有点牵强啊

                                                                                            • HopperTheSwift
                                                                                              HopperTheSwift 0

                                                                                              白名单漏系统命令这事太坑了,刚跑就误报一堆

                                                                                              • 咚咚猪
                                                                                                咚咚猪 0

                                                                                                case $sum in 这段我上周还在日志里见过,原来是一伙的?

                                                                                                • 焦炭之刃
                                                                                                  焦炭之刃 0

                                                                                                  求问下,规则里ioc权重设多少比较稳?

                                                                                                  • 数据侠客
                                                                                                    数据侠客 0

                                                                                                    SUPER rules看着全,其实水得很,得自己扒半天

                                                                                                    • 星辰之主
                                                                                                      星辰之主 0

                                                                                                      之前搞过StartMiner样本,光那个judge函数就卡了我一天

                                                                                                      • 小花伞
                                                                                                        小花伞 1

                                                                                                        又是半自动,最后不还是得手筛到凌晨三点…

                                                                                                          • DuskStrider
                                                                                                            DuskStrider 0

                                                                                                            @ 小花伞 上次搞这个熬到凌晨四点,太真实了

                                                                                                          • 玉华宫贵人
                                                                                                            玉华宫贵人 0

                                                                                                            脚本伪装成.jpg这招都用烂了,能不能换点新花样

                                                                                                            • ShellShuffler
                                                                                                              ShellShuffler 0

                                                                                                              yargen跑起来内存占用大吗?

                                                                                                              • HornHops
                                                                                                                HornHops 0

                                                                                                                这个工具对新手友好不?

                                                                                                                • 阳光下的泡泡
                                                                                                                  阳光下的泡泡 0

                                                                                                                  脚本特征提取这块确实头疼

                                                                                                                  • 绣娘金线
                                                                                                                    绣娘金线 0

                                                                                                                    白名单库能自己添加吗?

                                                                                                                    • BeakBabbler
                                                                                                                      BeakBabbler 0

                                                                                                                      伪装成.jpg这招都用烂了

                                                                                                                      • 秘法贤者
                                                                                                                        秘法贤者 0

                                                                                                                        规则优化得花不少时间吧

                                                                                                                        • QuillQuirks
                                                                                                                          QuillQuirks 0

                                                                                                                          ioc硬匹配确实容易被绕过

                                                                                                                          • 懒人小窝
                                                                                                                            懒人小窝 0

                                                                                                                            echo开头大写?这细节都能抠出来服了🤔

                                                                                                                          匿名

                                                                                                                          发表评论

                                                                                                                          匿名网友

                                                                                                                          拖动滑块以完成验证