译者: 林妙倩、戴亦仑 原创翻译作品,如果需要转载请取得翻译作者同意。
数据来源:ATT&CK Matrices
原文: https://attack.mitre.org/techniques/T1168
术语表: /attack/glossary
在 Linux 和 macOS 系统上,有多种方法可以创建预定的和周期性的后台作业:cron、at、 和 launchd。与 Windows 系统上的调度任务不同,基于 linux 的系统上的作业调度不能远程完成,除非与已建立的远程会话(如 secure shell (SSH)) 结合使用。
通过修改/etc/crontab
,/etc/cron.d/
目录或 Cron 守护进程支持的其他位置可以安装系统级的 cron 作业。而每个用户的 Cron 作业是通过 crontab 使用具有特定格式的 crontab 文件安装的。它在 macOS 和 Linux 系统上都有效。
这些方法允许在没有用户交互的情况下在后台以特定的周期间隔执行命令或脚本。攻击者可以利用作业调度在系统启动时执行程序或为了持久性而在预定的基础上执行程序, 作为横向移动的一部分执行,获取 root 权限,或者在特定帐户的上下文中运行进程。
at 程序是另一种方式,基于 POSIX 的系统(包括 macOS 和 Linux)。用于将程序或脚本作业安排在之后的日期和/或时间执行,这也可以用于相同的目的。
每个 launchd 作业由不同的配置属性列表 (plist) 文件描述,该文件类似于启动守护进程 (Launch
Daemon ) 或启动代理 (Launch
Agent),不过它包括名为 StartCalendarInterval
的附加键,该键包含一个时间值的字典。这只适用于 macOS 和 OS
X。
限制用户帐户的权限并修复提权向量,只有授权用户才能创建计划作业。 使用白名单工具识别并拦截可用于调度作业的不必要的系统实用程序或潜在恶意软件。
在安装新软件期间或通过管理功能可以创建合法的计划作业。 可以从各自的实用程序监视使用 launchd 和 cron 调度的作业,以列出关于这些作业的详细信息。 监视 launchd 和 cron 任务导致的进程执行,以查找异常或未知的应用程序和行为。