跳转至

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

https://attack.mitre.org/techniques/T1070/003/