罪犯犯的愚蠢的加密错误

吹盖:恶意软件作者的研究表明它是多么容易得到加密错误,并在这个过程中,帮助安全专家破解他们的代码

编写安全的代码可以挑战,并在软件中正确实施加密,只是普通的硬盘。即使是经验丰富的开发人员可以绊倒。如果你的目标是要诓人快,不哇他们与软件的质量,也一定会在你的代码的严重失误加密。

恶意软件的作者可以提供重要的教训,在如何不实施密码学。这是Check Point的亚尼夫•巴尔马斯和本•赫尔佐格最近在丹佛举行的病毒通报会议上的研究结果。Balmas和Herzog说,恶意软件的作者可能比合法软件的开发者更倾向于在他们的代码中插入密码,因为他们可能不太关心代码质量和设计。这些罪犯专注于获得一种足以满足他们当前需求的产品——仅此而已。

下面就来看看最近的恶意软件顶棚的密码错误 - 以及如何识别开裂恶意代码的希望寄托在未来的恶意脚本类似的失误。

关于密码的模糊思考

当你对细节只有一个模糊的理解并且时间很紧的时候,错误是不可避免的。通过分析恶意软件作者的工作,Balmas和Herzog发现了四种“反模式”,当涉及到加密时,包括巫毒编程、货物邪教技术、重新发明方轮和虚张假造。发现这类错误的防御者可以破解加密并阻碍恶意软件的执行,或者他们可以通过逆向工程来揭开它的秘密。

“这些都是如何正确地使用加密工具的基本的误解,在最好的广播,“我不知道我在做什么,”,在最坏的情况下,灾难性的削弱等恶意软件,它不做它要做什么,”balma和赫尔佐格写道。

无论是专业人士还是业余爱好者,这些恶意软件的作者都意识到加密技术在恶意软件开发中越来越重要——在勒索受害者的勒索软件中;隐藏受感染设备与命令和控制服务器之间的通信;在暗中躲避安全工具的检测;以及将恶意软件签名为可信应用程序。但分析显示,许多公司似乎无法有效地使用加密技术,这对它们不利。安全分析人员和网络管理员能够识别出加密错误的主要类别,在阻止赎金要求和阻止感染方面具有很大的优势。

“恶意软件的作者根据直觉和迷信编写原始代码;急于抓住机会,拙劣地重新发明轮子;同时,我们也有机会使用现成的代码来完美地解决错误的问题,”Balmas和Herzog在会议白皮书中写道。

不知道这是什么一样,但是看起来很酷

宙斯银行木马和基于Linux的勒索软件背后的作者。编码器落入了“巫毒编程”的陷阱。研究人员说,他们的加密实现“暴露了对所调用的功能的严重困惑——它是什么,它做什么,以及为什么可能会失败”。

在宙斯的情况下,作者选择了流行的流密码RC4加密所有宙斯C&C的流量,但增加了一个好办法。他们把已经加密的数据流,并通过与下一个字节异或修改它的每一个字节。虽然RC4都有自己的安全弱点,密码是安全的足够做宙斯所需要的,而微调的变种是“完全一样安全的平原,香草RC4,”研究人员指出。

Linux.Encoder,作者播种rand ()函数的当前时间戳,以生成其加密密钥。当安全研究人员指出,破解勒索软件密钥真的很容易时,作者尝试通过对时间戳进行八次哈希来生成AES密钥。

研究人员写道:“在一个输入信号上连续使用哈希函数8次,表明人们对哈希函数的理解存在很深的误解。”他们指出,重复使用哈希函数也不能产生更好的哈希效果。事实上,它可能会导致“具有较弱安全属性的奇怪创建”。

复制粘贴我找到的这段代码

第二类,“货物崇拜编程,”指的是复制什么看起来像一个工作解决问题的办法和粘贴代码块到程序不理解为什么或如何代码工作。Copying code isn’t a big deal -- if it was, Stack Overflow wouldn’t exist -- but if the programmer doesn’t know what is actually happening in that block, then the programmer doesn’t know whether the code is actually the correct solution.

“(他们)最终可能会使用能够执行的代码几乎研究人员写道,并指出加密防御勒索软件背后的作者也落入了这个陷阱。

虽然大多数的CryptoDefense的功能 - RSA-2048加密,通过比特币付款,通过Tor的C&C服务器的通信 - 从原始CryptoLocker勒索复制,实际执行RSA依赖于低级别加密的Windows API。实际的代码的Microsoft Developer Network文档中发现,与在未正确设置的标志,该应用程序保存在本地密钥存储私钥的解释和说明。该CryptoDefense作者没有设置标志,所以安全性研究人员曾受害者找到他们计算机上的私钥来解密文件。

由于恶意软件的作者没有彻底阅读文档,防御者得以挽救局面。

拼凑代码

典型的软件开发人员会很高兴地链接到一个处理必要任务的开源项目节省了从头开始编写的时间和精力。不幸的是,恶意软件编写者,与静态链接的第三方代码编译并不总是一种选择,因为额外的代码可以放大生成的可执行文件或使其更容易为安全工具检测到恶意软件。而不是链接的,作者往往即兴凑齐一些作品。核背后的群体开发套件和勒索家属彼佳和DirCrypt试图“重新发明方轮,”和其他人的利益,他们这样做不好。

“如果你相信任何加密完全直接实现的,要么你不理解加密,或者不理解你,”研究人员写道。

广泛分布的核开发套件通过使用Diffie-Hellman密钥交换加密传递到有效载荷的信息来混淆开发交付。密钥交换所需的变量作为包含十六进制数字字符串的JSON文件发送到服务器,值使用Base64进行解析和解码。然而,研究人员指出,这种实现是“荒谬的”,因为它将密钥设置为0,使得整个过程毫无用处。

佩特拉的作者实现Salsa20,这被认为是比RC4的攻击更有抵抗力,从头一个鲜为人知的流密码。然而,在彼佳的实现手段三个主要缺陷的勒索生成包含恒定的和可预测的值的256位的512位密钥。

“当你的一个密码的实施减少了一半的有效密钥大小,并通过规模的25份订单突破所需要的时间,它的时间去坐在角落里,想想你做了什么,”研究人员说。

DirCrypt的情况也好不到哪儿去,因为作者在用RC4加密每个文件时都犯了重用相同密钥的常见错误。密钥重用是一个可以理解的错误,特别是当这个人不了解流密码如何工作以及它们如何失败时。然而,该组织犯了一个更大的错误,将密钥附加到加密文件中。受害者可以直接访问该密钥并使用它恢复部分锁定文件,在某些情况下,还可以恢复整个文件。

假装

最后一类实际上并不是编码错误,而是恶意软件作者的故意社会工程快捷键。勒索的作者,例如,不需要创建“无懈可击的加密设计与实现”时,它的更容易撒谎,Check Point的Balmas和赫尔佐格说。很少有受害者会质疑恶意软件的加密要求,当谈到检索他们的数据。

这就是最近变成勒索软件的JavaScript木马Nemucod的例子,它声称用RSA-1024加密文件,而实际上使用的是一个简单的旋转XOR密码。此外,Nemucod还会在文件真正加密之前显示赎金说明,因此,如果受害者的防病毒软件或安全工具足够警惕,能够阻止恶意软件下载加密组件,那么该软件就会显示赎金说明文件保持不变

类似地,勒索软件Poshcoder最初使用的是AES,而不是赎金条上列出的RSA-2048或RSA-4096加密。Poshcoder还声称使用强非对称加密,但AES是对称密码,容易受到多种攻击。

研究人员写道,Nemucod的团队认为,“潜在的对手在听到‘rsaa -1024’这个词的那一刻,会头晕目眩,膝盖发软。”他们还指出,Nemucod“为最小努力设定了黄金标准。”“如果受害者足够害怕,他们可能不太可能仔细检查恶意软件的能力。

趁着失误

加密是困难的,许多软件开发人员在尝试实现加密时搞砸了。考虑一下,开放Web应用程序安全项目的前10个Web应用程序漏洞列表只确定了开发人员可能会犯的两种常见密码错误。毫无疑问,坏人也在苦苦挣扎。

“大量证据表明,多数恶意软件作者认为,这些工具的黑魔法奇妙的黑盒子,图他们应该是内容,如果他们能得到的加密代码,在所有运行,”研究人员写道。

当文件被勒索软件锁定后,支付赎金或者立即开始从备份中恢复,或者假设感染的端点和恶意软件的C&C服务器之间没有办法断开通信,这都是很诱人的。安全分析师和IT管理员愿意花时间寻找恶意软件中常见的错误,可能会改变结果。总有一天,坏人会学会如何正确使用加密;在那之前,防御者有优势,因为他们可以绕过失败的实现和编码错误。

相关文章

这个故事,“愚蠢的加密错误罪犯犯”最初发表信息世界

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。
相关:

版权©2016Raybet2

IT薪资调查:结果在