罪犯犯的愚蠢的加密错误

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

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

恶意软件作者可能会提供如何不实现加密的重要经验教训。这就是Check Point的Yaniv Balmas和Ben Herzog最近在丹佛召开的病毒公告会议上的研究成果。Balmas和Herzog说,恶意软件作者可能比开发正版软件的开发人员更倾向于在代码中插入加密涂鸦,因为他们可能不太关心代码质量或设计。这些罪犯专注于获得一种足以满足他们眼前需求的产品,而不是更多。

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

关于密码的模糊思维

当你对细节只有“模糊的理解”和很紧的时间框架时,错误是不可避免的。分析恶意软件作者的工作,巴尔马斯和赫尔佐格确定了四个“反模式”,当它实现加密,包括伏都教编程,货物邪教技术,重塑方轮,虚张声势。发现这类错误提示的防御者可能会破坏加密并阻碍恶意软件的执行,或者他们可以通过逆向工程揭露其秘密。

巴尔马斯和赫尔佐格写道:“这些都是对如何正确使用加密工具的基本误解,充其量只是在广播‘我不知道自己在做什么’,最坏的情况下,会造成恶意软件的灾难性瘫痪,以至于它实际上并没有做它打算做的事情。”。

无论专业还是业余,这些恶意软件作者都认识到,密码学对于恶意软件的开发越来越重要——在勒索软件中,向受害者勒索钱财;隐藏从受感染设备到指挥和控制服务器的通信;通过安全工具偷偷躲避检测;以及将恶意软件作为可信应用程序进行签名。但分析显示,许多人似乎难以有效地使用加密,这对他们不利。安全分析人员和网络管理员认识到主要的密码错误类别,在挫败赎金要求和阻止感染方面有很大的优势。

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

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

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

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

Linux.编码器,作者将兰德()函数使用当前时间戳生成其加密密钥。当安全研究人员指出破解勒索软件密钥非常容易时,作者尝试通过对时间戳进行八次散列来生成AES密钥。

研究人员写道:“对输入连续使用八次hash函数,表明人们对hash函数是什么有着深刻的误解。”他们指出,重复使用hash函数并不能产生更好的hash函数。事实上,这可能会导致“一个具有较弱安全属性的奇怪创建”

复制并粘贴我找到的代码

第二类,“货物崇拜编程,”指的是复制什么看起来像一个工作解决问题的办法和粘贴代码块到程序不理解为什么或如何代码工作。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和赫尔佐格说。很少有受害者会质疑恶意软件的加密要求,当谈到检索他们的数据。

Nemucod就是这样一个例子,它是一个JavaScript特洛伊木马,最近被转化成勒索软件,声称在实际使用简单的旋转异或密码时使用RSA-1024加密对文件进行加密。Nemucod也会在文件被真正加密之前显示赎金通知,因此如果受害者的防病毒或安全工具足够警惕,以防止恶意软件下载加密组件,则文件保持完整.

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

研究人员写道,Nemucod背后的研究小组相信,“当潜在的对手听到‘RSA-1024’这个词时,他们会变得头昏眼花,膝盖发软。”他们指出,Nemucod“为最小的努力设定了黄金标准。”如果受害者足够害怕,他们可能不太可能仔细研究恶意软件的功能。

趁着失误

密码学很难,很多软件开发人员在尝试实现加密时都会出错。假设Open Web应用程序安全项目的前10个Web应用程序漏洞列表只识别了开发人员可能犯的两个常见的加密错误。坏人也在挣扎也就不足为奇了。

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

当文件被勒索软件锁定时,很容易支付赎金或立即从备份中恢复,或者认为无法中断受感染的端点与恶意软件的C&C服务器之间的通信。安全分析人员和IT管理员如果愿意花时间在恶意软件中查找这些常见错误,可能会改变结果。总有一天,坏蛋们会学会如何正确地使用加密技术;在那之前,防御者们有了优势,因为他们可以绕过坏的实现和编码错误。

相关文章

这个故事“罪犯犯下的愚蠢的加密错误”最初由据美国媒体 .

加入对网络世界的社足球竞猜app软件区Facebook的领英对那些顶级心态的话题发表评论。
相关:

版权所有©2016足球竞彩网下载

IT薪资调查:结果是