- A+
潘多省日报(Pando Daily)的编辑Adam Penenberg最近发表了一篇文章《我让黑客来调查我,他们的发现让我不寒而栗》,讲述了我和我的小伙伴“骚扰”他生活的事情。 如果你还没读过, 那我强烈建议你去瞅瞅。
本周该日报上又发布了一篇后续文章,“一个记者让我们黑他,我们是怎么做到的呢”,从我们的角度进行了阐述。
我想有些读者朋友可能比较好奇更详细的渗透技术细节。所以我们决定对此发表3篇的系列文章以示阐述。
第一部分和第二部分将详细介绍我们自身团队( Matt Jakubowski, Daniel Chechik,和我)所做的用于本次渗透的恶意软件和钓鱼邮件。下周,我们的同事Garret Picchioni将会展示更多的关于现场和无线入侵的技术细节。
我在蜘蛛实验室(SpiderLabs)的恶意软件分析小组(Malware Analysis Team)作为一名安全研究员的日常工作主要包括逆向恶意软件(通常是取证分析期间遇到的一些东西)。 当被要求加入这次行动时,很自然的我会帮着写些定制的恶意软件以获取Adam电脑的权限。 通过编写一个恶意文件就能证明我的“黑帽”身份,这样的机会真的很难得哦。这让我可以站在双方的角度去看待问题,也转而有助于我的日常逆向工作。总之,我对此很兴奋。
我们要去黑个记者, 写些定制的恶意软件,来玩玩吧。
第1步:侦查/准备工作
在对Adam进行攻击之前,我们尽量收集了很多信息。 也找到了很多——公寓的照片, 信用记录报告,姓名,生日,电子邮件,电话号码等等。还有很多没有列举,但仍然有个问题。 即使有了这些,我们也没能知道他和妻子所用的操作系统(Windows, OSX, Linux等等)。 在针对特定的目标设计恶意软件时,所用的负载是平台相关的。为此,我们需要一个与平台无关的攻击包,能够识别出操作系统,并能根据操作系统下载执行相应的恶意软件。在这一步,我求助了我的同事Daniel Chechik(@danielchechik)。Daniel专攻web的攻击利用,能用他的专业知识给予团队帮助。 我向他描述了需求,以及所面临的困境。 几天之后, 他给我带来了很棒的解决方案。
Daniel 创建了一个恶意的Java小程序来检测运行在目标主机上运行的Java版本,以及主机的操作系统。有了这些信息,该程序将利用已知的Java漏洞(CVE-2013-2423或者CVE-2012-0503),根据操作系统下载一个特定的负载,并予以执行。我对该小程序进行了稍微的修改,保证即使漏洞利用失败的情况下也能够下载、执行特定的负载, 以防用户更新了Java版本。最后看起来是这样的:
图1:Java恶意软件执行流图
不管Adam或者其妻子的电脑上运行的是Mac还windows操作系统,我们的方案都能将其感染,同时也提供了多个攻击包,根据所实际所安装的Java版本进行利用。
现在你可能会问,“等等,如果没有安装Java呢?”, “如果他们是在智能手机上打开文件呢?”。 “如果安装了杀毒软件怎么办?”。 这些都是可能的问题。 杀软对Daniel所创建的文件,以及我所编写的OSX/Windows上的恶意软件, 有很低的检测率。 即使Adam的电脑上运行了杀软, 它们也很难拦截到这些文件。 至于受害者电脑的Java版本, 以及可能通过移动设备访问文件这些问题,要记住,这只是我们众多计划方案中的很小一部分。我们没有期望这是一个完美的方案。 我们把鸡蛋放到了不同的篮子里,总希望有一个能成功。 这就是作为攻击者的优势所在。我们无需每一个计划都成功——只要有一个能搞定就行了。攻击的目标却需要应对我们的每一次尝试。
有了这个可以攻击多个平台的恶意文件,轮到我着手编写运行在Windows和OSX上的恶意软件了。这是我第一次写OSX上的恶意软件,是个非常有趣的学习经历。我的计划很简单——如果恶意软件加载到Adam的电脑上,要完成下面两件事:
1. 确保恶意软件能持久地存在,除非我手动的将其卸载。 2. 下载执行其他的恶意软件或者命令, 赋予我们对电脑的完全控制权。
图2:OSX上恶意软件的代码片段
这就是我所做的。编写Windows上的恶意软件非常简单了,因为之前已为其他事件写过类似的程序。 实际上,编写OSX的恶意软件同样也很简单。 比我原来所想的要简单的多,大概花费了一到两天的时间来完成(主要因为所做的测试,确保其正常运行)。 虽然不同平台下的二进制文件不同,但它们所执行的逻辑是相同的, 如下所示:
1. 将自身拷贝到文件系统的一个隐藏目录 2. 通过一些常用的手段来确保持久存在 3. 每10分钟向远程服务器请求一次,查看是否有要执行的指令。如果有,就执行指令。
准备好了恶意软件,是时候“攻击”Adam和他的妻子了。
第2步:攻击
Adam已经在文章里提到了很多的细节, 所以我会尽量不重复那么多。我们决定对Adam和妻子进行钓鱼邮件攻击。我们知道Adam的妻子有个普拉提(Pilates)工作室,我们可以扮成找工作的。我写了一封看上去很正常的寻找普拉提教练的邮件,附加上Daniel的恶意Java小程序发了出去。
几天后,我们命中了。我们紧紧抓住机会,十分钟之内就获得了对Adam妻子电脑的完全控制权。似乎是她打开了Java文件导致OSX恶意软件安装到了她的电脑上。在这十到十五分钟里,我们沉浸在获得权限的喜悦之中,无比幸福。
然后呢?然后,突然就沉默了。
我们失去了连接,再也没有重新获取到。我们静静的坐着,想象着可能发生的情况。或许她只是完成了今天的工作,然后关上了电脑。 我们再等了36个小时,希望再次获取连接。在此期间, Jaku和Garret (在纽约现场)通过其他的手段进行着攻击。
此时,我开始怀疑我的恶意软件。 我担心因为我的一个愚蠢的错误使得我们丧失了唯一的机会。对代码审查之后,很确定,是我犯了错。没有做太多的技术处理,我逻辑处理中的一个错误导致恶意软件在Adam妻子关上电脑(将其休眠而不是重启)之后无法运行。 意识到这一点,25分钟之后,我搞好了OSX恶意软件的2.0版本。 可问题是,我需要让她再次打开该文件。
第2.5步:再次攻击
即便我准备好了新版本的OSX恶意软件,我们也很难消除Adam妻子的疑虑,让其再打开一个Java文件。 因为我们没跟Adam有任何联系,也不确定她妻子是否怀疑了。我们猜测可能他妻子已经告诉他所收到的怪异邮件,以及附件如何打不开。Adam可能已经让她恢复了电脑备份,不要再打开类似文件。总之,我们想再次获取权限的希望渺茫。
我们决定用不同的发送机制来推进。这次,Jaku给我提供了帮助。我们将恶意的OSX程序打包进一个ZIP文件。当文件打开时, 程序不仅会执行我改进后的恶意软件,同时还会打开一个合法的视频文件。这是符合我们上次的处理场景的。也更改了默认的图标,让其看起来是个正常的视频文件。 我们猜测如果Adam妻子这次再打开文件,看到一个视频文件打开,会认为文件是正常的。
图4.钓鱼邮件(取自潘多省日报的原文章)
第二天,焦灼的等待中,终于有了新的连接。Adam的妻子打开了第二封邮件。我们再次获得了20分钟的权限。
然后,突然又再次失去了连接。
我们屏住呼吸,希望她只是简单的再次关上了电脑。 我们的新版恶意软件会在其再次打开电脑时恢复操作。我们一直等待着,吃完了晚饭,继续等待着。
敬请期待该系列的下篇文章,我们将会介绍恶意软件攻击的第3步,以及我们如何获取到财务记录,W-2信息,以及更多的来自Adam妻子受感染电脑的信息。
(未完待续)
翻译:徐文博
Mattew Jakubowski(@jaku) 对此文的编写做出了贡献。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫