驱蚊器喵的翻译平台

Can you hear the gravity?

  1. 1. 重温社会工程
  2. 2. 破坏第二阶段(Stage 2)的攻击
  3. 3. 部署补丁
  4. 4. 固件分析、更新和验证
  5. 5. 被入侵,并反入侵

《Mr. Robot》是我看过的最为精彩的黑客电视剧,剧中有大量真实的黑客元素,几年前看的时候有些看不太懂,直到最近才发现《Mr. Robot》技术顾问 Ryan Kazanciyan 写的揭秘文章,文章内有一些创作来源和幕后故事,看了以后觉得非常有趣,决定翻译后放到翻译平台上。


原文地址:https://medium.com/@ryankazanciyan/mr-robot-disassembled-eps3-1-undo-gz-c9ae6080f574
原文标题:Mr. Robot Disassembled: eps3.1_undo.gz
原文作者:Ryan Kazanciyan
原文写于:2017/10/20

译者:驱蚊器喵#ΦωΦ
翻译水平有限,有不通顺的语句,请见谅。


朋友们你们好。我是 Ryan Kazanciyan,《Mr. Robot》 的技术顾问。从第二季的后半部分,我开始与 Kor Adana (作家、制片人和 ARG 背后的策划者) ,以及《Mr. Robot》团队的其他成员一起工作。在整个第三季中,我将负责编写剧中描述的黑客,他们是如何聚集在一起的,以及他们的现实基础。

剧透警告! 本文讨论的是第三季第 2 集中的事件。


在第二集 “eps3.1_undo.gz” 的前八分钟中,安全和黑客工具的镜头比你在大多数电视剧或电影中找到的都要多。最后五分钟展示了一个基于真实世界的研究和硬件的尖端、隐蔽的攻击。这一集充满了吸引技术专家和信息安全从业人员的彩蛋,并有一些在整个第三季中我最喜欢的情节。

重温社会工程

当 Elliot 在 E Corp 的无能和腐败的经理层级中游走时,他使用各种各样的工具和技术来窃取密码并进入他们的电子邮箱。( Elliot 的岗位可能是安全分析员,但这并不意味着他就可以不受限制地访问所有系统和用户)。其中有个Dave Kennedy 的镜头一闪而过,你会发现,这些攻击中的一个特点,是社会工程工具包(SET, Social Engineering Toolkit)。SET 是一把瑞士军刀,本剧在过去曾多次介绍过它的一些功能。Darlene 曾用它建立了一个基于 USB 的勒索软件有效载荷,Mobley 在第二季第11 集中将其交付给 E 银行;它还被用来在第一季第 5 集中进行短信欺骗攻击。

以下是我在虚拟机中模拟的原型图:

原型图 - 社会工程工具包(SET,Social Engineering Toolkit)配置一个虚假的 Outlook Web 访问页面

让我们来分析一下这种攻击是如何进行的。 Elliot使用 SET 来搭建一个虚假的 E Corp Outlook Web Access(OWA)网站。这是一种常见的网络钓鱼战术(例如,叙利亚电子军在2014年就使用过)。如果攻击者能使受害者信服来将他们的用户名和密码提供给真实网站的克隆版本,他们就可以入侵这些账户,而不需要提供恶意软件或任何其他有效载荷。许多用户会无视浏览器的警告,心甘情愿地将他们的用户名和密码提交给一个看起来合法的网站。

一闪而过的命令行显示 Elliot 查看包含被盗凭证的 “harvester” 日志文件的输出。

1
root@kali:/var/www/html# tail harvester_2015–08–26\ 17\:21\:11.781065.txt

其中输出的是 SET 抓到的 OWA 用户名和密码。

1
2
3
4
5
6
7
8
9
10
Array
(
[destination] => https://webmail.e-corp-usa.com/OWA/
[flags] => 0
[forcedownlevel] => 0
[trusted] => 0
[username] => [email protected]
[password] => aboynamedg00
[isUtf8] => 1
)

破坏第二阶段(Stage 2)的攻击

作为 E Corp 的员工, Elliot 需要利用他对网络的合法访问来阻碍 Dark Army 推进第二阶段的能力。Kor 和我起草了一系列 Elliot 可能采取的步骤,来提升公司环境的安全性,同时设置障碍。不可避免的是,一些细节被砍掉了。例如, Elliot 的画外音描述了他是如何入侵 E Corp 的航运公司,在篡改运输单的同时,重新安排纸质记录的运输,这样来努力为自己争取更多的时间。我们原本计划展示针对系统网络管理界面的 SQL 注入攻击的几个步骤。但由于时间关系,这部分内容最终被放弃了,但是我很高兴为 Sioux Falls 的倒霉 Earl 这一幕(译者注:在 5:14 处)做出让步。

幸运的是,许多有趣的技术内容仍然被剪掉了。除了加固网络和隔离敏感系统等明显的步骤外,Elliot 首先需要修复允许 UPS 运行恶意代码的潜在漏洞。一种方法是给负责更新和加载固件的软件打补丁,使其执行数字签名检查。简单地说,这是一个很好的机制,用于验证软件是否是受信任的软件。任何加载到 UPS 上的固件都必须符合只有 E 公司才能生成的加密校验值。

部署补丁

在很大程度上,我努力使我在 “Mr. Robot” 的工作与我在 Tanium 的日常工作保持独立。然而,我还是忍不住要把我们的软件和许多其他商业或开源工具一起,加入到本剧的技术场景中。我很高兴能找到一个自然适合它的镜头,而且 Kor 和团队也支持。

给不熟悉 Tanium 的观众科普一下,Tanium 是一个企业安全和系统管理平台,涵盖了广泛的用途:从服务器和工作站收集信息,检测和应对攻击,部署补丁和软件,以及执行安全配置。在这个场景中,Elliot 使用 Tanium 来部署他的固件补丁。

下面的截图来自我的一台虚拟机,除了一些小的编辑外,与屏幕上显示的内容非常吻合。

Tanium 控制台部署了一个软件包,用于安装 UPS 固件补丁

右下角的 “文件(Files)” 部分表明,该补丁包由 “.bin” 固件文件组成(与前几集的命名惯例一致 - 一致性很重要!),以及一个可能会调用升级过程的 shell 脚本。”目标组(Target Group)”部分基本上定义了任何具有特定固件版本(”640.0.0”)的系统都将在安装补丁的范围内。

固件分析、更新和验证

在第二季的最后一集,我们看到 Tyrell 使用开源工具 “radare2” 和 “binwalk” 研究恶意 UPS 固件。(我在去年的博客(译者注:链接已经失效)上写过关于设计这个场景的文章)。我曾希望在未来的剧情中加入更多的二进制分析和逆向工程,所以我选择了在 “eps3.1_undo.gz” 中的固件补丁,作为一个机会来加入 IDA Pro (该领域最流行的一个工具) 的镜头。

在 IDA Pro 中反编译 UPS 的更新固件

这描述了 IDA 对一个固件安装程序的反编译,Elliot 用数字签名校验的方式来修补漏洞。主窗口显示了 IDA 的流程图,它基本上将代码分解为功能块;箭头代表了可能发生的不同执行路径。较大的函数引用了一个字符串,暗示了函数的目的:”signature check failed, update halted(签名检查失败,停止更新)”。

接下来,画面切换到 Elliot 正在审查一个日志文件,该文件显示了 UPS 固件更新的结果。日志条目记录了更新工具对设备的认证,通过 FTP 发送固件(嵌入式设备通常不支持安全协议!),准备重启,并确认新软件安装成功。这里我们使用的文本是基于实际的 UPS 设备的固件更新过程。

1
2
3
4
5
6
7
8
9
10
09/28/15: 10:51:21 xxx.xxx.xxx.xxx: Pinging (via ICMP) device
09/28/15: 10:51:21 xxx.xxx.xxx.xxx: Device connection passed
09/28/15: 10:51:22 xxx.xxx.xxx.xxx: Testing FTP Log-in
09/28/15: 10:51:25 xxx.xxx.xxx.xxx: FTP Log-in passed
09/28/15: 10:51:26 xxx.xxx.xxx.xxx: Saving data file
09/28/15: 10:51:37 xxx.xxx.xxx.xxx: OS Prior to firmware transfer: Network Management Card OS v6.4.0
09/28/15: 10:51:44 xxx.xxx.xxx.xxx: Saving event & configuration files
09/28/15: 10:51:49 xxx.xxx.xxx.xxx: Transferring firmware file (1/1)
09/28/15: 10:53:21 xxx.xxx.xxx.xxx: Attempting connection to verify restart
09/28/15: 10:53:29 xxx.xxx.xxx.xxx: Device(s) successfully upgraded

最后,我们看到 Elliot 在 UPS 设备的管理界面上工作,该界面有一个 “ups>” 的终端提示。命令的选择和它们各自的输出同样是受到现实世界中硬件的启发。Elliot 运行 “cfgpower -all” 来检查当前的传输电压设置,以及 “upsfwupdate -lastresult” 来检查最后一次固件更新的状态。

UPS 管理界面

被入侵,并反入侵

在本集的最后几分钟,我们看到 Elliot 坐在他的电脑前…并很快意识到有些东西感觉不对。他被入侵了吗?他重启计算机,将系统进入到 Kali Linux Live CD 系统,从一个已知干净的操作系统开始工作,并运行以下命令。

1
2
3
4
mount —-rbind /sys /mnt/sys
mount —-rbind /dev /mnt/dev
chroot /mnt /bin/bash
rkhunter —-check

rkhunter“ 是一个开源工具,可以扫描 Linux 系统中的 rootkit 木马。由于 Elliot 已经启动到 Live CD 系统中,他首先需要从主机的操作系统(即他怀疑被感染的那台)中挂载一些路径,并 “chroot” 以有效改变后续命令的运行环境。这可以确保 “Rkhunter” 扫描的是主机系统的文件,而不是 Live CD 镜像上的文件。

原型图 - Elliot 使用 "rkhunter" 来扫描他系统的 rootkit 木马

然后画面切换到了 Dom,Dom 的电脑显示了 Elliot 的屏幕截图。这不仅仅是显示某个单独的窗口,画面上的是他屏幕的全部内容,每隔几秒钟就记录一次新的 PNG 文件,随着一个在 Cygwin 窗口中运行的接收器脚本,接收情况定期更新。

原型图:Dom 的 FBI 系统正在运行一个 Python 脚本(在 Cygwin 中),该脚本正在接收 Elliot 显示器中的图像

那么,FBI 是如何获得对 Elliot 系统的权限呢?Kor 和我意识到,我们需要为这个场景展示一个高级的、尖端的黑客技术。老练的 Elliot 最终很有可能在他的操作系统上检查到 rootkit 或其他形式的持久性后门恶意软件,但硬件层的植入会更难以发现。

可能一些观众已经发现,这是受 “Monitor Darkly“ 的启发,这一技术首次在 2016 年的 DEF CON 24 上亮相。研究人员在数以百万计的液晶显示器中使用的显示控制器固件中发现了漏洞。如果能够访问 HDMI 或 USB 端口,这种攻击可以捕获,甚至操纵屏幕上显示的任何东西。由于这纯粹是针对显示器的硬件,这可能不会在任何连接的计算机上留下任何痕迹。

这些工具或技术在本集的时间段面世,是少有的例子。在这种情况下,我们决定合理地假设联邦调查局或情报机构可能已经提前发现了同类的潜在漏洞,并且有资源来开发工具和程序,来实施和扩展漏洞的能力。

在最初的研究中,Monitor Darkly 使用了一个 USB Armory 设备 - 基本上是一个闪存盘大小的小型计算机。如果配上蜂窝式调制解调器和合适的硬件接口,你就可以拥有一个隐蔽的植入设备,其体积小到可以隐藏在显示器的机箱内,并且能够定期将屏幕内容的快照传输到远程监听服务器。

当然, Elliot 还是发现了一些不对劲的地方。他写了一封包含网址链接的假电子邮件,并成功地诱使联邦调查局打开了链接,从而证实他被监视了。我们将在未来的剧集中看到这一事件的后续…

本文作者 : meow
This blog is under a CC BY-NC-SA 4.0 Unported License
本文链接 : https://translation.meow.page/post/mr-robot-disassembled-eps3-1-undo-gz/

本文最后更新于 天前,文中所描述的信息可能已发生改变