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

枫少@KillBoy
枫少@KillBoy
管理员
220
文章
0
粉丝
资源分享858,579字数 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
评论  85  访客  85
    • 海风吹
      海风吹 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

                                                @ 司棋 之前跑过一次,内存直接飙到8G,小机器扛不住

                                                • 蜂蜜绿茶
                                                  蜂蜜绿茶 0

                                                  @ 司棋 不是说不用就能省事,是省了个寂寞

                                                • 魂幡舞动
                                                  魂幡舞动 0

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

                                                  • 星语糖
                                                    星语糖 0

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

                                                    • 猫耳小铺
                                                      猫耳小铺 0

                                                      SUPER rules的误判率高吗?

                                                        • 月光小筑
                                                          月光小筑 1

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

                                                        • 天青
                                                          天青 0

                                                          echo大写这个细节抓得不错

                                                          • 松风听雨
                                                            松风听雨 1

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

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

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

                                                              • 书卷多情
                                                                书卷多情 0

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

                                                                  • 未来战士
                                                                    未来战士 0

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

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

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

                                                                      • 逗闷子
                                                                        逗闷子 1

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

                                                                        • 疏勒晨星
                                                                          疏勒晨星 0

                                                                          @ 书卷多情 节省时间?那是没算上后期调规则的工时

                                                                          • 小川
                                                                            小川 0

                                                                            @ 书卷多情 优化量看样本集,脏数据多的话得重做一半

                                                                            • 噬魂魔尊
                                                                              噬魂魔尊 1

                                                                              @ 书卷多情 我们组平均每个rule要人工过三遍才敢上线

                                                                              • 黑暗咏叹
                                                                                黑暗咏叹 0

                                                                                @ 书卷多情 要看误报率接受阈值,要求高就得大改

                                                                                • 命运之子
                                                                                  命运之子 0

                                                                                  @ 书卷多情 新来的以为点一下就出结果,哪有这么美

                                                                                • 小蛇蛇蛇
                                                                                  小蛇蛇蛇 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看着全,其实水得很,得自己扒半天

                                                                                                                    • 陶匠泥人
                                                                                                                      陶匠泥人 1

                                                                                                                      @ 数据侠客 这工具看着省事,结果筛规则比写规则还累…

                                                                                                                      • 果冻云
                                                                                                                        果冻云 0

                                                                                                                        @ 数据侠客 手动筛到凌晨是常态,yargen省时间?笑死😂

                                                                                                                        • 小阳
                                                                                                                          小阳 1

                                                                                                                          @ 数据侠客 生成的SUPER rules十个有八个要砍掉,太虚了

                                                                                                                          • Peppermint
                                                                                                                            Peppermint 0

                                                                                                                            @ 数据侠客 关键还得看样本质量,垃圾进垃圾出懂吧

                                                                                                                            • TootsiePop
                                                                                                                              TootsiePop 0

                                                                                                                              @ 数据侠客 我上次用它提规则,光去系统命令就干了一整天

                                                                                                                              • 小鹰飞飞
                                                                                                                                小鹰飞飞 0

                                                                                                                                @ 数据侠客 真别信自动生成,最后不都是人兜底

                                                                                                                                • 幽雾
                                                                                                                                  幽雾 0

                                                                                                                                  @ 数据侠客 说是半自动,结果八成力气花在后期过滤上

                                                                                                                                  • 龙吟霄
                                                                                                                                    龙吟霄 0

                                                                                                                                    @ 数据侠客 super rules匹配数高,但命中的大多是wget这种通用词

                                                                                                                                    • 天威战神
                                                                                                                                      天威战神 0

                                                                                                                                      @ 数据侠客 还不如自己写个脚本抓特征,至少可控

                                                                                                                                      • 月光先知
                                                                                                                                        月光先知 1

                                                                                                                                        @ 数据侠客 你这话说得太轻描淡写了,“扒半天”根本不够用

                                                                                                                                      • 星辰之主
                                                                                                                                        星辰之主 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 1

                                                                                                                                                            ioc硬匹配确实容易被绕过

                                                                                                                                                            • 懒人小窝
                                                                                                                                                              懒人小窝 0

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

                                                                                                                                                              • 风之诗
                                                                                                                                                                风之诗 0

                                                                                                                                                                f2=”*”当特征也太离谱了,变量名不都是随手打的?

                                                                                                                                                                • 霸气侧漏龙
                                                                                                                                                                  霸气侧漏龙 0

                                                                                                                                                                  白名单更新慢得像蜗牛,还老漏系统命令,裂开

                                                                                                                                                                  • 倒流的沙漏
                                                                                                                                                                    倒流的沙漏 0

                                                                                                                                                                    脚本伪装成.jpg早看吐了,能不能换点新套路

                                                                                                                                                                    • 文丑妙语
                                                                                                                                                                      文丑妙语 0

                                                                                                                                                                      SUPER rules看着高大上,实际跑起来一堆误报

                                                                                                                                                                      • 樵夫野
                                                                                                                                                                        樵夫野 1

                                                                                                                                                                        yargen这工具用起来还蛮方便的

                                                                                                                                                                        • 午睡猫咪
                                                                                                                                                                          午睡猫咪 0

                                                                                                                                                                          之前搞过StartMiner,judge函数那段真卡死我了

                                                                                                                                                                          • 星陨之息
                                                                                                                                                                            星陨之息 1

                                                                                                                                                                            求问生产环境跑这种规则,性能扛得住不?

                                                                                                                                                                            • 软软糯糯
                                                                                                                                                                              软软糯糯 1

                                                                                                                                                                              提取特征那段讲得挺细的

                                                                                                                                                                            匿名

                                                                                                                                                                            发表评论

                                                                                                                                                                            匿名网友

                                                                                                                                                                            拖动滑块以完成验证