|
一、概念
攻击者可通过执行 shell 触发的恶意命令来实现持久化,Unix Shell 根据事件在整个会话的不同点执行多个配置脚本。例如,当用户打开命令行界面或远程登录 (例如 SSH) 时,会启动登录 shell。登录 shell 从系统 (/etc) 和用户的主目录 (~/) 执行脚本来配置环境。系统上的所有登录 shell 在启动时都使用 /etc/profile,这些配置脚本在其目录的权限级别运行,通常用于设置环境变量、创建别名和自定义用户环境。当 shell 退出或终止时,会执行额外的 shell 脚本以确保 shell 正确退出。
攻击者可能会尝试通过将命令插入 shell 自动执行的脚本来实现持久化。以 bash (大多数 GNU/Linux 系统的默认 shell) 为例,攻击者可能会将启动恶意二进制文件的命令添加到 /etc/profile 和 /etc/profile.d 文件中。这些文件通常需要 root 权限才能修改,并且系统上的任何 shell 每次启动时都会执行。对于用户级别的权限,攻击者可以将恶意命令插入到 ~/.bash_profile、~/.bash_login 或 ~/.profile,这些命令是在用户打开命令行界面或远程连接时产生的。由于系统仅按列出的顺序执行第一个现有文件,因此攻击者使用 ~/.bash_profile 来确保执行。攻击者还利用了 ~/.bashrc 文件,如果远程建立连接或打开额外的交互式 shell (例如命令行界面中的新选项卡),则会额外执行该文件。一些恶意软件的目标是终止程序以触发执行,攻击者可以使用 ~/.bash_logout 文件在会话结束时执行恶意命令。
对于 macOS,此技术的功能类似,但可能会利用 zsh,这是 macOS 10.15+ 的默认 shell。当 Terminal.app 打开时,应用程序会启动一个 zsh 登录 shell 和一个 zsh 交互式 shell。登录 shell 使用 /etc/profile、/etc/zshenv、/etc/zprofile 和 /etc/zlogin 配置系统环境。然后登录 shell 使用 ~/.zprofile 和 ~/.zlogin 配置用户环境。 交互式 shell 使用 ~/.zshrc 来配置用户环境。退出时,将执行 /etc/zlogout 和 ~/.zlogout。对于遗留程序,macOS 在启动时执行 /etc/bashrc。
二、涉及到组织或恶意软件
Linux Rabbit
三、案例
Linux Rabbit
Linux Rabbit 通过 rc.local 和 .bashrc 文件在受感染的机器上保持持久化。
相关报告:https://www.anomali.com/blog/pul ... alware-out-of-a-hat
四、缓解措施
使这些文件不可变并且只能由某些管理员更改,限制攻击者轻松创建用户级持久化的能力。
五、如何检测
虽然用户可以自定义他们的 shell 配置文件,但这些文件中通常只出现某些类型的命令。在登录过程中加载用户配置文件时监视异常命令,例如执行未知程序、打开网络套接字或通过网络进行连接。
监控 /etc/profile 和 /etc/profile.d 的更改,这些文件只能由系统管理员修改。MacOS 用户可以利用端点安全框架文件事件来监控这些特定文件。
对于大多数 Linux 和 macOS 系统,系统上可用的有效 shell 选项的文件路径列表位于 /etc/shells 文件中。
|
|