有人在 Telegram 群组中分享了一个 exe 文件。分享它的人不知道它的来源,但该软件做了它应该做的事情。我担心的是它在后台做了其他事情。
经过阅读,我发现一种安全的方法是使用虚拟机打开它并使用像 Process Monitor 这样的软件来监视其活动。
另一种方法是使用像 x64dbg 这样的软件调试器,但这样我就必须学习汇编,而且这似乎太高级了。
我想知道是否还有其他更有效的方法来验证exe文件的安全性。
答案1
请甚至不要考虑分析这个文件是否安全。保护自己。你不会分析 .EXE 文件是否安全。你会分析文件来源的可信度。在这种情况下,共享文件的人不知道它来自哪里。问题解决了,.EXE 不安全,应被视为恶意软件。无法评估消息来源的可靠性,因此消息来源必须被认为是危险的。
分析可执行文件的内容似乎太过高级和困难,因为这是。有些人以此为生(恶意软件分析师),他们因此获得丰厚的报酬(根据 ZipRecruiter 的数据,年薪约为 88,600 美元)。您不仅需要了解 Assembly,还必须深入了解 Windows 的核心,可能还必须了解当 .EXE 与系统中的其他应用程序交互时它们如何工作,以及首先了解软件漏洞的工作原理,以便您可以发现隐藏在数据中等待作为有效载荷投放的代码等内容。这只是我能想到的 - 这个列表可能更长。
如果您可以剖析整个应用程序及其所有支持文件,详细规划其所做的一切,并确保每一条可能的(甚至不可能的)代码路径都没有风险,那么您可能能够验证可执行文件是否安全。但考虑到即使您拥有应用程序的源代码,这也很困难,当您只有机器代码可用时,这更有可能成倍地棘手。而且,如果您犯了一个错误,经过深入分析后,恶意活动仍可能逃脱您的追究。
即使你将应用程序放在虚拟机或沙箱中,然后对其进行监控,也无法保证它是安全的。病毒很容易在特定日期之前大部分或完全处于休眠状态,然后突然开始行动 - 事实上,古老的 MacMag 病毒就是这样正是如此。或者米开朗基罗病毒,它会潜伏一年,然后3 月 6 日造成极大破坏。想象一下,如果 .EXE 中存在这样的病毒,你将其安装到虚拟机中,几个月来它都没有造成任何危害,然后将其移动到物理系统,然后看着它继续删除或勒索你的所有文件。可能会发生。对于恶意软件,可能性是无穷无尽的。
虚拟机不适合用来验证可执行文件的安全性的另一个原因是,许多高级恶意软件系统都设计为检测它们是否在虚拟机中运行。如果检测到,它们会表现出与正常情况不同的行为。它们可能完全休眠或自我删除让恶意软件分析师的问题变得复杂,或者他们可能会下载与正常情况不同的有效载荷从而迷惑恶意软件分析师。同样,即使它在虚拟机中看起来是安全的,它仍然很可能是恶意的。
仅将文件通过防病毒软件检查也是不够的。防病毒软件只能检测它们已知的恶意软件(根据病毒的行为或恶意软件作者将其嵌入程序的方式,它们甚至可能无法做到这一点)。如果防病毒软件警告某个文件已被感染,这是一个很好的迹象,表明它很危险,但如果它没有检测到文件中的任何内容,该文件仍然很可能不安全。
除非您是训练有素的恶意软件分析师,并且有大量的空闲时间,否则不要冒险。如果您不知道它的来源,请假设它刚从想要统治世界的黑帽专家的实验室中出来。(例如,删除它,永远不要运行它。)此时,如果我是您的朋友,如果我运行了神秘的可执行文件,我会更改所有在线帐户的所有密码,备份我的重要数据并重新安装 Windows。