T1070-003-linux-清除历史记录
来自ATT&CK的描述
macOS和Linux都会跟踪用户在终端中输入的命令,以便用户可以轻松记住他们所做的事情。可以通过几种不同的方式访问这些日志。用户在登录后,将在环境变量指向的文件中跟踪此命令历史记录HISTFILE。当用户注销系统时,此信息将更新到用户主目录中的文件中~/.bash_history。这样做的好处是它允许用户查看他们之前在不同会话中使用过的命令。由于保存了在命令行上输入的所有内容,因此也会保存在命令行上输入的密码。攻击者可以通过滥用此功能在这些文件中搜索明文密码。此外,攻击者可以使用的方法不同,你需要防止自己的历史记录中出现这些命令,例如unset HISTFILE、export HISTFILESIZE=0、history -c、rm ~/.bash_history。
测试案例
rm ~/.bash_history
echo " " > .bash_history
cat /dev/null > ~/.bash_history
ln -sf /dev/null ~/.bash_history
truncate -s0 ~/.bash_history
unset HISTFILE
export HISTFILESIZE=0
history -c
检测日志
linux audit日志 (值得注意的是:Ubuntu默认情况下没有audit,需要下载安装并配置相关策略)
bash历史记录
测试复现
icbc@icbc:~$ rm ~/.bash_history
测试留痕
基于audit日志
暂无
基于bash历史记录
icbc@icbc:~$ history
7 rm ~/.bash_history
检测规则/思路
splunk规则
基于audit日志
场景:rm -rf~ / .bash_history index=linux sourcetype=linux_audit syscall=263 | table time,host,auid,uid,euid,exe,key
index=linux sourcetype=linux_audit type=PATH name=.bash_history nametype=delete | table time,name,nametype
场景:echo " " > .bash_history
index=linux sourcetype="linux_audit" bash_history_changes exe!=/home/ec2-user/splunk/bin/splunkd syscall=257 a2!=0 AND a3!=0 | table host,syscall,syscall_name,exe,auid
基于bash历史记录
index=linux sourcetype="bash_history" "rm * .bash_history" #值得注意的是,这里只做了最简单的演示,比如history -c 是无法通过bash历史记录进行检测的!其他命令如何检测,你可以自行测试记录。
建议
暂无
参考推荐
MITRE-ATT&CK-T1070-003