利用逆向分析挖掘Facebook Gameroom中的安全漏洞

我注意到的第一件事是,安装Gameroom时,无需提升任何的权限。它似乎是一个分步安装的程序:首先,通过一个小型安装程序从网络上下载额外的文件,也就是说,它的安装程序不是一体式的。事实上,我很快就找到了安装目录,即C:\Users\< USERNAME >\AppData\Local\Facebook\Games由于大多数用户级应用程序都位于该C:\Users\< USERNAME >\AppData文件夹中,因此我很快在处找到了安装目录。该文件夹包含许多.dll文件以及几个可执行文件。一些事情对我很重要:

1. Gameroom自带的7zip可执行文件(7z.exe和7z.dll),可能已经过时,而且很容易受到攻击。

2. Gameroom将用户会话数据存储在Cookies SQLite数据库中,这对攻击者来说是一个非常有吸引力的目标。

3. Gameroom包含了CefSharp库(CefSharp.dll),经过进一步研究,发现这是一个用于C#的嵌入式Chromium浏览器。

第三点表明,Gameroom是用.NET框架编写的。我们知道,.NET框架可以将程序被编译成通用中间语言(CIL)代码,而不是机器代码,也就是说,这些代码可以在通用语言运行时应用程序虚拟机中运行。这样做有许多好处,比如可以提高.NET应用程序的互操作性和可移植性。然而,由于这些应用程序被编译为CIL而不是纯机器代码,因此,将这些应用程序反编译回接近源码的过程也要容易得多。

对于.NET程序集,是事实上的标准。逆向工程师可以用DNSpy轻松地调试和分析.NET应用程序,包括对它们进行实时修改。于是,我把FacebookGameroom.exe拖拽到DNSpy中,开始进行分析。

挖掘含有漏洞的函数

首先,我们开始查找易受攻击的函数,如不安全的反序列化函数等。限于篇幅,这里就不对进行详细介绍了,简单来说,这涉及到将数据类型转换为易于传输的格式,然后再转换回来,如果处理不当,这可能会导致严重的漏洞。例如,微软就曾警告不要使用BinaryFormatter,因为BinaryFormatter是不安全的,也不能使其安全。

不幸的是,在我搜索“Deserialize”字符串时,BinaryFormatter竟然冒了出来。

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章