如何检查 Mac 上的广告软件和恶意软件
真正的 Mac 病毒很少见。人们实际遇到的是广告软件:浏览器总是打开一个奇怪的搜索页面、弹窗不断、出现一个谁也没装过的“清理工具”。它通常是随某个下载一起来的,每次你登录都会再次启动。
一句话:查看会自行启动的项目。先检查“系统设置”›“通用”›“登录项与扩展”,再查看 ~/Library/LaunchAgents、/Library/LaunchAgents 和 /Library/LaunchDaemons 这几个文件夹。广告软件会用随机或看似 Apple 的名称藏在那里。然后检查浏览器扩展和描述文件。macOS 自带的 XProtect 已经会拦截已知的恶意软件文件。
Mac 广告软件通常藏在哪里?
- 启动代理和守护进程:小小的
.plist文件,告诉 macOS 在登录或开机时启动某个程序。你自己的在~/Library/LaunchAgents中;整台 Mac 的在/Library/LaunchAgents和/Library/LaunchDaemons中。 - 应用程序:一个你不记得安装过的应用,名称往往很普通。
- 浏览器扩展:Safari 浏览器 ›“设置”›“扩展”,以及其他每个浏览器的扩展页面。
- 描述文件:“系统设置”›“通用”›“设备管理”。在没有任何机构替你管理的 Mac 上,这个列表通常是空的。
怎样在终端中列出启动代理?
ls -la ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons
对于不认识的文件,先看它启动的是哪个程序,再看是谁签名了那个程序:
plutil -p ~/Library/LaunchAgents/com.example.helper.plist
codesign -dv --verbose=2 "/path/to/the/program"
Program 或 ProgramArguments 那一行就是程序。在 codesign 的输出中,Authority 行会写出开发者;“code object is not signed at all”表示根本没有人签名。
哪些迹象值得怀疑?
- 没有已知开发者签名、也没有任何已安装应用认领的程序。
- 位于隐藏文件夹、
/tmp或/Users/Shared(所有用户都能写入)中的程序。 - 看似随机的名称,比如
com.xkqzt.plist。 - 使用
com.apple名称、却不是 Apple 签名的程序。
每一条都只是值得细看的理由,而不是证据:小开发者的辅助程序也可能长这样。移除任何东西之前,先搜索一下它的名称。
怎样从 Mac 上移除广告软件?
- 如果它有所属的应用,先退出该应用,再把应用移到废纸篓。
- 把它在 LaunchAgents 或 LaunchDaemons 中的
.plist移到废纸篓。/Library中的文件需要输入管理员密码。 - 把
.plist指向的程序也移到废纸篓。 - 重新启动,或注销后重新登录,让它停止运行。再移除它添加的浏览器扩展和描述文件。
有 XProtect 就够了吗,还是需要杀毒软件?
macOS 会用门禁(Gatekeeper)和公证检查下载的内容,XProtect 则会使用 Apple 自动更新的特征库拦截并移除已知的恶意软件。这对大多数人来说已经足够。查看你的 XProtect 版本:
defaults read /Library/Apple/System/Library/CoreServices/XProtect.bundle/Contents/Info.plist CFBundleShortVersionString
广告软件往往是经你允许、作为其他软件的一部分装上的,所以不时检查一下哪些项目会自行启动,仍然值得。