Javascript 恶意软件:它是如何工作的,如何缓解?

信息安全 Web应用程序 网页浏览器 恶意软件 javascript 反恶意软件
2021-08-28 13:18:10

我想知道如何通过 Javascript 提供恶意软件。我在访问一些金融网站时注意到了一些非法弹出窗口。我想知道恶意软件如何利用应用程序来攻击应用程序,以及应用程序可以做些什么来至少告知用户弹出窗口不是来自网站,而是来自恶意软件。

3个回答

JavaScript 使网页作者(无论好坏)能够在您的浏览器访问或被引导到他们的页面时运行他们想要的任何代码。尽管各种 JavaScript 实现都有一些安全功能来尝试防止 JS 代码对您的计算机做任何公然敌对的事情,但出现了两个问题:该代码存在错误,例如前面的答案中讨论的,允许攻击或利用以及许多事情不是完全敌对的可能会导致不良结局(例如,来自 FakeAV 的弹出窗口,要求您提供付款信息)。

当前非常有效的与 Javascript 相关的攻击技术示例使用隐藏的 iframe 从其他受感染站点加载 JS 恶意软件,然后尝试在浏览器中执行。这在包含在大型流行网站以及流量较少的网站中的广告中都可以看到。如果成功,它可能会继续利用本地系统软件。以这种方式,各种版本的 Black Hole Exploit Kit 攻击易受攻击的 PDF 和 Flash 软件版本,以用僵尸网络客户端感染主机。

浏览器和系统制造商很难让他们的合法信息难以伪造。Windows 用户帐户控制是最好的技术之一,因为它在需要权限来完成任务时会中断所有其他程序。大多数浏览器和软件弹出消息很容易伪造,您应该警惕它们。

为了避免这种情况,请使用浏览器插件、插件和配置,以仅允许来自您信任的站点或您授权的站点的 JavaScript。NoScript for Firefox 在降低这些风险方面非常有效。

路过式下载是 JavaScript 的典型恶意软件载体,用于将二进制文件放到用户的机器上。JS 只是启动对恶意软件二进制文件的请求,该二进制文件会做出响应Content-disposition:attachment,提示用户下载它。

即使用户取消,JS 也可以继续执行此操作,从而有效地使用户的浏览器无法使用(他们可能不知道如何手动终止进程)并且经常试图使下载看起来像杀毒软件。

部分用户会接受下载只是为了恢复他们的浏览器,然后恶意软件供应商只需要等待二进制文件运行即可。


病毒和恶意软件的核心问题是操作系统将当前用户与他们运行的程序混淆。当我运行 Solitaire 时,该进程能够编辑我可以从命令行或 Windowing 系统中编辑的每个文件。情况不应该如此。

您从网络上下载的纸牌或屏幕保护程序没有理由需要访问您的税务文件,因此您可以使用多种提示来确定它需要哪些权限

  • 用户是否通过文件对话框或其他一些操作系统介导的指定方法(如拖放)授予权限?“安全交互设计”)解释了通过查看它们与用户界面交互的方式来推断授权授予的各种方法。
  • 目录中的文件是否由于在安装应用程序二进制文件期间创建而被应用程序“拥有”?
  • 该文件是 DLL 或共享库等公共系统资源吗?

可以基于用户指定或简单规则类似地授予其他权限。

大多数操作系统和应用程序都没有考虑到这一点,因此惠普实验室的Polaris等系统展示了如何允许应用程序在 Windows 上以低于当前用户的权限运行。

人们常常忘记 P​​OLA 同时意味着两件事。您不仅必须防止应用程序拥有超过执行用户工作所需的权限,而且还必须确保应用程序具有足够的权限来完成该用户的工作。授予太多权限是为什么会有病毒劫持应用程序的原因。授予太少的权限意味着应用程序毫无用处,就像 Web 浏览器沙箱中的电子表格程序无法将结果保存在硬盘上一样。Polaris 赋予的权限既不太多也不太少:虽然极化应用程序通常不会损坏或感染您计算机上的文件,但该应用程序确实可以将信息存储到用户通过双击文件或选择明确指定的任何文件中对话框中的文件。因此,

与静态沙盒不同,Polaris 不会明显影响用户体验。事实上,一位惠普高管在不知道它在他的机器上的情况下使用了 Alpha 版之前的 Polaris 三天。Polaris 在不改变应用程序或操作系统的情况下发挥其魔力。它也不依赖于拦截系统调用。相反,当用户“极化”应用程序时,“极化器”会为该应用程序创建一个受限用户帐户。当用户通过 Polarizer 创建的快捷方式显式启动应用程序或通过打开适当类型的文件隐式启动应用程序时,Polaris 使用 Windows runAs 工具的变体在其帐户中打开程序。Polaris 软件的大部分向用户隐藏了这一事实。

攻击者可以利用浏览器上的漏洞在客户端计算机上执行恶意软件代码。我看到的大多数恶意软件都使用 Base64 和压缩在 JS 文件中或嵌入到 HTML 中来隐藏它们的 shell 代码。一旦 JS 代码在客户端计算机上执行,它就会使用“deflate”和“eval”来执行字符串上编码的任何代码。

该恶意软件利用浏览器中的漏洞在客户端机器上执行 shell 代码。缓冲区溢出过去很常见,但如今主要的浏览器在编写时往往在这一点上更加小心。Use-after-free 和 double free 还是蛮热闹的。

如果您从合法网站获得多个随机弹出窗口,这可能表明计算机可能感染了某些东西。确保您的 AV 和反间谍软件解决方案是最新的并且运行正常。此外,使用process explorerautoruns等工具检查计算机上运行的内容