提取字符串要领在歹意软件剖析中的运用 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

提取字符串要领在歹意软件剖析中的运用

申博_新闻事件 申博 40次浏览 已收录 0个评论

现在逆向工程师、平安剖析人员和事宜相应职员在剖析歹意软件二进制文件时,已具有了大批成熟的东西。在举行歹意软件剖析时,为了逐渐收集有关二进制文件功用的线索,设想对应的检测要领,并肯定终究的环境步伐,他们会接踵运用这些东西。最经常运用的初始步骤就是经由历程字符串递次搜检它的可打印字符。假如二进制文件实行诸如打印毛病音讯、连接到URL、建立注册表项或将文件复制到特定位置等操纵,那末它平常会包括一些有助于将来剖析的字符串。

注:字符串递次在NT和Win2K上事情时,意味着可实行文件和目的文件会屡次嵌入UNICODE字符串,运用规范ASCII字符串或grep递次没法轻松检察。字符串只扫描你通报的文件,以猎取默许长度为3或更多UNICODE(或ASCII)字符的UNICODE(或ASCII)字符串。 请注意,该要领也适用于Windows 95。

手动过滤掉这些相干字符串能够异常耗时且轻易失足,尤其是斟酌到以下的3种状况:

1.相干字符串涌现的频次比不相干字符串涌现的频次少许多;

2.较大的二进制文件能够输出数万个零丁的字符串;

3.关于“相干”的定义,在差别的剖析师之间能够存在明显差别;

在实行歹意软件剖析时,观察职员毫不想错过任何一个重要的线索,有了这些线索,不只能够削减剖析时所用的时候,而且还能得出完全和正确的剖析结论。在这篇文章中,我们将展现FireEye Data Science (FDS)和FireEye Labs Reverse Engineering (FLARE)团队近来协作的效果——怎样运用提取字符串要领来简化剖析历程。

症结历程

1.在歹意软件上运转字符串递次会不可避免地发生与重要字符串殽杂的字符串,而这些字符串只要在对全部输出效果举行挑选和筛查以后才被发明。而本文引见的新机械进修模子能够根据字符串与歹意软件剖析的相干性自动对字符串举行排序,从而大大加速这一挑选历程。

2.相识哪些字符串是相干的,平常须要经验丰富的剖析职员,但应用提取字符串要领能够让这个历程变得相称简朴;

3. 本文引见的新机械进修模子能够优先斟酌各个歹意软件样本的字符串输出,这些样本是根据FireEye逆向工程师7年以来编写的相干字符串数据集。

字符串递次的事情道理

字符串递次返回的每一个字符串都是由3个或更多字符构成的序列示意的,以null结束符末端,与四周的上下文和文件花样无关。这意味着这些字符串是不能被人们所浏览出来的,而盘算机也只能将字符序列标识为字符串。比方,假如一连的字节0x31、0x33、0x33、0x37、0x00涌现在二进制文件中,字符串能够将把这些一连的字节诠释为“1337”。从这个示例中能够看到,这些ASCII字符并不会实在的示意该字符串自身。不过它们能够示意内存地点、CPU指令,以至递次运用的数据。字符串递次会让剖析职员过滤掉输出中涌现的无关字符串。比方,从歹意软件剖析师的角度来看,图1中列出的来自歹意二进制代码示例的字符串中,只要少数几个是和歹意行动相干的。

提取字符串要领在歹意软件剖析中的运用

字符串输出中包括44个和样本相干的字符串,个中SHA-256值为eb84360ca4e33b8bb60df47ab5ce962501ef3420bc7aab90655fd507d2ffcedd。

根据降序相干性对字符串举行排序将使剖析师的剖析历程变得越发轻易,如许,他们只须要将注意力鸠合在列表顶部最相干的字符串上,而疏忽下面的一切内容。然则,完成字符串自动排序的使命并非易事。相干字符串的空间黑白结构化和巨大的,而设想经心调解的划定规矩来强有力地诠释它们之间一切能够的变化,将是一个难题的使命。

对字符串输出举行排序

对字符串输出举行排序的使命能够在机械进修(ML)框架中举行,这个框架称为进修排序(learning to rank, LTR) 。LTR(Learning torank)进修排序是一种监视进修(SupervisedLearning)的排序要领。LTR已被普遍运用到文本发掘的许多范畴,比方IR中排序返回的文档,引荐体系中的候选产物、用户排序,机械翻译中排序候选翻译效果等等。IR范畴传统的排序要领平常经由历程组织相干度函数,然后根据相干度举行排序。影响相干度的要素许多,比方上面提到的tf,idf,dl等。有许多典范的模子来完成这一使命,比方VSM,Boolean model,几率模子等。关于传统的排序要领,很难融会多种信息,比方向量空间模子以tf*idf作为权重构建相干度函数,就很难应用其他信息了,而且假如模子中参数比较多,也会使得调参异常难题,而且极能够会涌现过拟合征象。因而人们很天然的想到了用机械进修(Machine Learning)来处置惩罚这一题目,因而就有了Learning to rank。机械进修要领很轻易融会多种特性,而且有成熟深挚的理论基础。

处置惩罚LTR题目的一种要领是运用 GBDT(Gradient Boosting Decision Tree),GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树构成,一切树的结论累加起来做终究答案。它在被提出之初就和SVM一同被以为是泛化才能(generalization)较强的算法。近年更因为被用于搜刮排序的机械进修模子而引发人人关注。GBDT中的树都是回归树,不是分类树,这点对明白GBDT相称重要(只管GBDT调解后也可用于分类但不代表GBDT的树是分类树)。GBDT的中心就在于,每一棵树学的是之前一切树结论和的残差,这个残差就是一个加展望值后能得实在值的累加量。比方A的实在岁数是18岁,但第一棵树的展望岁数是12岁,差了6岁,即残差为6岁。那末在第二棵树里我们把A的岁数设为6岁去进修,假如第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的实在岁数;假如第二棵树的结论是5岁,则A依然存在1岁的残差,第三棵树里A的岁数就变成1岁,继承学。

GBDT经由历程梯度下落的要领,不断进修下降丧失的决策树,终究将每棵展望树的加权和作为一个鸠合。具有LTR目的函数的GBDT能够进修类几率来盘算每一个字符串的预期相干性,然后能够用它对给定的字符串输出举行排序。

在图2的初始train()步骤中,凌驾25000个二进制文件经由历程字符串递次运转,终究天生包括凌驾1800万个字符串的练习数据。然后,每一个练习样本对应于该输入文件上的字符串递次输出的ASCII和Unicode字符串的串连列表。为了练习模子,这些原始字符串被转换为包括天然语言处置惩罚特性(如香农熵和字符共现频次)的数字向量,以及特定于域的信号,如存在损伤指导符(比方文件途径,IP地点,URL)等,花样字符串,导入和其他相干标志。

对GOOTKIT木马的持久性攻击和其他恶意功能的探索

在上一篇文章,我们分析了GOOTKIT木马的强大反分析能力,本文,我们继续探索GOOTKIT木马的持久性攻击和其他恶意功能。 Gootkit银行木马于2014年被发现,它利用Node.JS库执行一系列恶意任务,通过网站注入并获取密码,更绝的是它还有视频录制和远程VNC功能。自2014年Gootkit被发现以来,Gootkit背后的开发者一直在不断更新代码库,以减缓安全人员的分析并阻止自动沙箱的检查。 本文研究的样本是MD5: 0b50ae28e1c6945d23f59dd2e17b5632 运行配置

提取字符串要领在歹意软件剖析中的运用

基于ML的LTR框架根据字符串与歹意软件剖析的相干性对字符串举行排序,该图演示了机械进修建模历程的差别步骤:初始的train()步骤用实箭头和方框示意,随后的predict()和sort()步骤用虚线箭头和方框示意。

每一个字符串转换后的特性向量都与一个非负整数标签相干联,该标签示意的是征向量与歹意软件之间的相干性。标签的局限从0到7不等,数字越大,示意相干性越强。为了天生这些标签,我们应用FLARE剖析职员的要领来开启天生情势即可,并对天生的标签举行高等束缚。虽然与手工标记的每一个字符串比拟,这类束缚要领能够会发生噪声和误报信息,但它也供应了一种低价且与模子无关的要领,能够将范畴专业知识直接集成到GBDT模子中。

如图2所示,接下来在predict()步骤中,我们运用经由练习的GBDT模子来展望属于输入文件的字符串的排序,实在,这个输入文件底本不是练习数据的一部分,所以在这个示例查询中,我们运用图1所示的字符串输出。该模子将查询中的每一个字符串的排序展望为浮点数,浮点数示意预期的相干性得分,在图2的末了一个sort()步骤中,字符串按这些得分顺次降序分列。图3说清楚明了这个效果展望是怎样根据字符串与歹意软件剖析的相干性对字符串举行排序的。

提取字符串要领在歹意软件剖析中的运用

在图1和图2所示的查询中字符串的排序效果,将此处显现的字符串的相对递次与其他雷同的列表举行比较

图3中的展望和排序字符串排名显现了列表顶部的基于收集的目标,其次是注册表途径和条目。这些展现了主机上潜伏的C2服务器和歹意行动。由用户相干信息构成的后续输出更多是良性的,但仍须要观察。四舍五入的列表是罕见的字符串,如Windows API函数和PE构件,它们每每不会被歹意软件剖析师所注意到。

定量评价

虽然看起来模子根据预期对上述字符串举行了排序,但我们愿望采纳一些定量要领来更周全地评价模子的机能。

这里,我们引荐NDCG评价目标,两个最受迎接的排名目标是MAP和NDCG。MAP示意均匀精度均值,NDCG示意归一化折损积累增益。两者之间的重要区别是,MAP以为是二元相干性,而NDCG许可以实数情势举行相干性打分,这类关联相似分类和回归的关联。NDCG其背地的头脑却很简朴。一个引荐体系返回一些项并构成一个列表,我们想要盘算这个列表有多好。每一项都有一个相干的评分值,平常这些评分值是一个非负数。这就是gain(增益)。别的,关于这些没有效户反应的项,我们平常设置其增益为0。

NDCG听起来很庞杂,实在用几个字母来明白就能够了:

“G”代表增益,它对应于每一个字符串相干性的大小;

“C”代表累加,是指每一个字符串的相干性的累加增益或总和;

“D”代表贴现,它将每一个字符串的展望相干性除以一个单调递增的函数,如其排序位置的对数,反应了将最相干的字符串排在我们展望的顶部的目的;

“N”代表归一化,归一化是一种无量纲处置惩罚手腕,使物理体系数值的绝对值变成某种相对值关联。简化盘算,减少量值的有效方法。经由归一化的数据集是我们从汗青歹意软件报告中包括的经由FLARE辨认的相干字符串中取得的。因为差别字符串输出中的字符串数目差别很大,归一化使得比较样本之间的排序得分成为能够。

提取字符串要领在歹意软件剖析中的运用

只需在每一个二进制(灰色)上运转字符串递次,然后盘算原始排序的得分,而不是根据练习过的GBDT模子(赤色)展望的排序

实际上,我们在单个字符串输出中采纳其排名索引的前k个字符串,个中k参数是根据歹意软件剖析职员均匀要处置惩罚或以为相干的字符串数目来挑选的。本文我们设置k = 100,个中越相干的字符串越接近顶部。

总结

在这篇文章中,我们引见了一个ML模子,它能够根据字符串与歹意软件剖析的相干性对字符串举行排序。测试效果申明,对字符串输出举行排序能够很正确且高效地剖析出歹意软件中的潜伏行动。

尽人皆知,歹意软件的开发者会花很大的气力隐蔽有效的字符串,而这个模子有一个题目,就是没法辨认被殽杂的字符串。此时,就要借助像FireEye Labs Obfuscated Strings Solver (FLOSS) 如许的开源东西。FLOSS会自动检测,提取和解码Windows可移植可实行文件中的殽杂字符串,别的它还会显现已编码、打包或手动构建在客栈上的殽杂字符串。本文引见的进修模子能够很轻易地对FLOSS的输出内容举行练习,以便对隐约的字符串举行排序。别的,因为它能够运用于恣意字符串列表,所以还能够运用该模子对从运动内存转储和沙箱运转中提取的字符串举行排序。

本文翻译自:https://www.fireeye.com/blog/threat-research/2019/05/learning-to-rank-strings-output-for-speedier-malware-analysis.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明提取字符串要领在歹意软件剖析中的运用
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址