记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

恶意软件制作者住手吧 你的编程风格可被跟踪

2016-01-07 08:20

如果你制作恶意软件,或者你的程序侵犯版权或违法审查条例,可能要遇到麻烦了。使用在二进制文件中仍旧包含的代码风格信息,可以绕过常见的混淆手段,识别程序员。

640.webp

Aylin Caliskan-Islam在周二举行的第三十二届世界混沌通讯大会(Chaos Communications Congress)上介绍了这项工作,它的名称是解码匿名程序员:来自编译代码和源代码的可执行二进制文件。

这群来自普林斯顿大学的研究人员也在 arxiv 上发表了一篇名称为《当编程风格编译中存活:使用可执行二进制码解码匿名程序员》的文章,小组的一名程序员属于著名的美国陆军研究实验室(Army Research Laboratory)。

研究人员开始试图识别恶意程序员,并指出,在黑帽子和白帽子的代码写作风格之间没有“技术性区别”。换句话说,代码风格背叛了作者

研究人员编译分析了一些C和C++的代码,变量命名等很多可识别元素在代码被编译之后都消失了,此外,编译器的优化流程有可能进一步改变程序的结构特性,将作者进一步混淆。

然而,在“通过机器学习的方式,使用可执行二进制文件和源码反编译的结果等一系列新的元素”研究可执行二进制文件的作者特征之后,研究人员能够揭示“源码中的很多语法特征确实存活过了编译步骤,可以使用反编译方式进行恢复”。

640.webp (1)

如上图所示,研究人员使用了“最先进的逆向工程方法”,“从每个可执行二进制文件中提取出了大量特征元素”,如果程序员使用这些特征向量,可以认为他们是代码的主人。

实际上,这需要先后查询 Netwide 反编译器和 Radare2 反编译器,然后使用“最先进的” Hex-Ray 反编译器和开源的 Snowman 反编译器,提取426个和代码风格有关的特征向量,以待比对。

随后,选择每位程序员的八组可执行二进制文件,训练随机森林分类器,生成作者代码风格的精确模型。之后,就可以使用该模型,“利用以前不可见的可执行二进制文件的向量表示”,确定代码作者。

研究人员指出:“我们对未经编译优化流程的可执行二进制文件能够实现78%的识别率,对经过编译优化的文件则可以实现64%的识别率。”

“我们还发现,如果从可执行二进制文件中删除符号信息,只会将识别率降低到66%,,降低程度如此之小,令人惊讶。这表明,代码风格能够经过复杂的转换而存活。”

未来,研究人员准备探讨代码风格“是否完全可以与可执行二进制文件剥离,保证程序员的匿名性”,此外,将这种识别方式用在真实世界中,“确定恶意软件的作者。恶意软件通过结合多态性和加密,实现了一种复杂的混淆方法。”

 

知识来源: www.aqniu.com/news/12925.html

阅读:113068 | 评论:0 | 标签:动态 牛闻牛评 代码 反编译 逆向工程

想收藏或者和大家分享这篇好文章→复制链接地址

“恶意软件制作者住手吧 你的编程风格可被跟踪”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云