对攻击者来说,投递的难点不在于写出载荷,而在于让人把它跑起来。在流媒体站点上,这个难题靠场景解决了:一个本来就在想办法让视频播起来的访客,会接受一个关于「它为什么播不了」的解释。
下面几乎每一种伪装,都是这一招的变体。相应的对策说起来简单,破起来很难:**没有哪个流媒体站点需要你安装、解压或粘贴任何东西才能播视频。**现代浏览器原生就能解码标准视频。任何说法相反的页面都在撒谎,而谎话的具体措辞并不重要。
常见的伪装有哪些?
流传的东西里,大部分能归到七种形态。
| 伪装 | 它的说法 | 它实际上是什么 | 破绽 |
|---|---|---|---|
| 缺解码器 | 「安装这个解码包才能看高清」 | 一个安装程序,通常是捆绑广告软件或加载器 | 浏览器原生解码 H.264 已经十几年了 |
| 播放器更新 | 「你的播放器版本太旧」 | 同上,只是做成了站点自己界面的样子 | 网页上根本没有播放器可更新 |
| 浏览器更新 | 一个模仿你浏览器更新界面的页面,还会按 user agent 对号入座 | 一个可执行文件 | 浏览器自己更新,绝不会从某个网站更新 |
| 假验证码 | 「验证你是真人:按 Win+R,粘贴这段」 | 你亲手运行了攻击者的命令 | 没有哪个验证系统会让你去用命令行 |
| 下载助手 | 「装个应用,播得更快」 | 一个带持久化的安装程序 | 不装它站点照样能用 |
| 字幕或压缩包 | 视频旁边配一个 .srt、.zip 或 .rar |
里面是脚本或可执行文件 | 扩展名和压缩包内容跟描述很少对得上 |
| 有签名的安装程序 | 一个确实做过代码签名的安装程序 | 签名是真的,但证书是被滥用或被盗的 | 有效签名证明的是谁签的,不是它安全 |
假验证码这一类——有时候被叫做「粘贴并运行」——值得单独留意,因为它把基于文件的防御整个绕开了。页面把一段命令塞进你的剪贴板,再以验证为借口让你粘贴到运行对话框或终端里。全程没有文件被下载,所以下载信誉检查和很多扫描器根本不会被触发。互联网上没有任何正经东西曾经要求你这么做。
文件名是怎么藏住一个文件的真身的?
靠的是大多数系统默认隐藏扩展名这件事。
| 手法 | 看上去是 | 实际上是 |
|---|---|---|
| 双扩展名 | video.mp4.exe |
一个可执行文件,在隐藏扩展名时显示成 video.mp4 |
| 快捷方式文件 | movie.mkv.lnk |
一个会执行命令的快捷方式 |
| 伪装成媒体的脚本 | episode.mp4.js |
一个系统会去执行的脚本 |
| 安装程序冒充 | codec_setup.msi |
一个安装程序,跟标签写的一模一样——标签本身就是伪装 |
| 从右到左覆盖符 | videoexe.mp4 |
字符被一个不可见的控制字符倒置了 |
| 加密压缩包 | film.zip,密码写在页面上 |
不解开就没法扫描内容 |
第一件该做的事是改个设置:在 Windows 资源管理器或 macOS 访达里打开扩展名显示。它不花任何成本,却能把上面这张表永久废掉一半。
加密压缩包是一种刻意的反扫描手段。任何下载如果附带一个写在页面文字里的密码,就是在让你绕过自己的杀毒软件,而一个公开下载没有任何正当理由要这样加密。
打开一个下载文件之前该怎么检查?
一套很短的流程,按有用程度排序。
| 检查项 | 它能拦下什么 |
|---|---|
| 打开扩展名显示,然后看真正的那个扩展名 | 双扩展名和脚本文件 |
| 把文件大小跟它宣称的东西对一下 | 一部 3 MB 的「1080p 电影」不是电影 |
| 用多引擎服务扫一遍 | 已知样本;新鲜出炉的经常混过去 |
| 检查数字签名 | 没签名的安装程序,或者签名者是家毫不相干的公司 |
| 留意它是不是要管理员权限 | 媒体文件从来不需要提权 |
| 不要关掉 SmartScreen 或 Gatekeeper | 这些警告存在的意义就是为了这种情况 |
这一切底下的那条规矩是:你要判断的不是这个文件看起来安不安全,而是你究竟有没有任何理由去下载一个可执行文件。在一个流媒体页面上,答案是没有,而这个答案的可靠程度是扫描结果达不到的。
如果已经运行了,该怎么办?
先按凭据失窃来处理。如今泛滥的商品化恶意软件绝大多数是窃密型的,它的第一个动作通常就是复制浏览器 cookie、保存的密码和会话令牌——这也是为什么在中招的机器上改密码等于白改。
| 步骤 | 原因 |
|---|---|
| 1. 断开网络 | 阻止继续外传数据和接收远程指令 |
| 2. 到一台另外的、干净的设备上改密码 | 被控设备可能正在记录你敲的每一个字 |
| 3. 把重要账号的所有会话都登出 | 被偷走的会话令牌在改密码之后照样有效 |
| 4. 检查有没有新增的浏览器扩展和配置文件 | 一种常见的持久化手段 |
| 5. 检查启动项和计划任务 | 另一种常见的持久化手段 |
| 6. 用可引导介质做一次离线扫描 | 活跃的感染会干扰在系统内运行的扫描器 |
| 7. 凡是存过支付或身份数据的机器,重装系统 | 一旦有代码以你的权限跑过,这是唯一可靠的处置 |
第 2 步是最常被做错顺序的,第 3 步是最常被整个跳过的。一个在你改动任何东西之前就被导出的会话令牌,会一直有效,直到账号明确把它作废为止。