0x00 前言
环境变量(environment variables) 通常指的是在操作系统(Operating System)中,用来指定系统运行环境的一些参数,譬如:系统目录路径,命令调用的目录路径等.
由于Windows操作系统与类Unix系统的不同,我们本篇文章只讨论类Unix系统.
0x01 简述
@1 作用: 持久化
@2 平台: Linux,MacOS
@3 用户权限: 普通用户,管理员
@4 威胁描述: 文件监视,过程监视,带参数进程,网络进程
0x02 描述
~/.bash_profile 和 ~/.bashrc 通常在用户登陆的过程中执行.当用户登陆或启动新的Sell时,用以设置其系统环境.
~/.bash_profile是为启动Shell执行的, ~/.bashrc是为其交互式非登陆Shell执行的.
两者的这点差别意味着,当用户(通过用户名和密码)登陆到控制台(本地登陆或者通过如SSH登陆)时,~/.bash_profile将在初始命令提示符返回给用户之前被执行.
在此之后,每次打开一个新的Shell时,~/.bashrc就会被执行.这使得用户可以在需要执行某些命令时,可以更精确的控制它们.
但是,Mac的终端应用程序有一点不同,它在默认情况下运行登陆Shell,每当启动一个新的终端窗口,每次都会调用~/.bash_profile,而不是~/.bashrc
这就意味着,操作系统的本地用户通过修改这两个文件,可以配置自己的系统环境.
但是,攻击者也可以在这些文件中插入脚本,以便在用户每次登陆或执行新的Shell获取权限的持久性.
0x03 缓解方案
使这些文件只读且只能有管理员更改,将限制攻击者创建用户级别持久化的能力.
0x04 检测方法
虽然用户可以自定义他们的 ~/.bash_profile和~/.bashrc文件,但只有某些类型的命令才会出现在这些文件中.在登陆过程中加载用户配置文件时,监视异常命令,譬如,执行未知程序,启动网络监听或者连出网络行为,都可以判断环境变量是否被攻击者利用.
声明
威胁魔方本身就是一个知识库.至少在目前我们不会放出用例代码,感谢您的关注.
领取专属 10元无门槛券
私享最新 技术干货