当我们考虑macOS的安全性和攻击者使用的工具时,无论这些攻击者是野外攻击还是渗透测试的真实工具,我们都会想到诸如python脚本、shell脚本、恶意文档、可疑扩展之类的东西,当然,还有伪造、篡改或恶意注入程序包。尽管AppleScript内置的macOS技术已经存在了很长时间,并且比macOS 10本身早了8到9年,但在安全领域,人们对它的关注却少得多。
正如我将在以下文章中介绍的那样,AppleScript已经被攻击者广泛使用。这包括它在广告软件中的使用,它在诸如持久性、反分析、浏览器劫持、欺骗等任务中的使用。令人担忧的是,考虑到安全研究领域对AppleScript缺乏关注,所有这些甚至都没有利用AppleScript的一些最强大或独特的功能,其中一些我们将在下面介绍。
为什么AppleScript会被一般开发者和安全检测的人员忽略?
AppleScript与Bash和其他shell语言不同,也与Python不同(Python是一种跨平台的、初学者友好的脚本语言,得到了广泛的采用和赞扬),它是macOS特有的一种特有语言。你不仅不能在Windows和Linux等其他台式机操作系统上使用它,甚至不能在苹果的其他操作系统如iOS和iPadOS上使用它。
作为一种语言,AppleScript以其古怪、缓慢和难以开发简单脚本而闻名。它的古怪之处在于,它试图使用“自然语言”,但其语法完全是人为的,常常前后矛盾,也非常冗长。比较用于计算/ usr / bin目录中项目数的简单任务的代码,shell脚本将永远是最简洁的:
ls -l /usr/bin | wc -l
Python有点冗长,但仍然相当干净和熟悉:
#!/usr/bin/python import os path, dirs, files = next(os.walk("/usr/bin")) print len(files)
但是,AppleScript版本的性质则完全不同。
tell application "System Events" set theFiles to name of every file of folder "bin" of folder "usr" of startup disk count of theFiles end tell
AppleScript的执行速度也很慢,因为底层技术包括通过一个称为Apple Event Manager的古老接口构造和发送Apple事件,该接口是为Apple System 7操作系统编写的(1991年发布),即使在当时也没有对性能进行优化。
从历史上看,使用AppleScript开发脚本非常困难,因为大多数访问它的人会尝试使用免费的、内置的但以简洁著称的(Apple)Script Editor.app。该脚本几乎缺少开发人员通常期望和需要的所有功能,没有调试器,没有自省变量,没有代码片段或有效的代码完成功能。以下就是列举的一些缺少的功能奇热: