Linux 痕迹清理
常见命令
history 命令
1 | history 查看当前session历史命令缓冲区及历史命令文件 |
根据上述命令,每一次session结束后会自动将命令执行,缓冲区的内容写入到历史命令记录文件中。因此可以在每次执行结束后执行history -r
清除。也可以指定export HISTFILE=为空或者置为/dev/null
让结束后命令历史写入的文件不存在。也可以修改HISTSIZE
为0,禁止写入到历史记录文件中。
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
如果在日志中已经有了记录,可以在无痕状态下使用sed进行清除sed -i '/content/'d file
也可以下载历史记录文件,本地清除后上传覆盖,时间需要进行修改。
相关文件
1 | last-----> /var/log/wtmp 记录计算机重启和登入的情况 |
对于文件的删除比较粗糙可以直接echo > file
清空,也可以稍微精细一点使用sed
对文本文件进行删除。对于wtmp,btmp,utmp
这种二进制文件可以使用logtamper(可以隐藏w连接并清除掉指定的ip登录记录,对于lastlog只能修改登录时间),fake_login_log.py可以进一步对登录信息进行隐藏。
- 删除w和who历史(/var/run/utmp)
- 删除last历史(/var/log/wtmp 主机运行及用户历史登录情况)
会删除所有来源的用户记录 - 删除lastlog历史(/var/log/lastlog 每个用户的历史登录情况,每次登录均会覆盖)
只能通过时间和host清除
时间格式为"%Y-%m-%d %H:%M:%S"
- 删除登录失败历史(/var/log/btmp)
除了删除历史之外,由于lastlog
等文件在管理员配置过程中肯定存在记录,直接清空显得很异常,可以借助fake_login_log.py进行伪造。1
2
3
4Linux可以使用如下命令将二进制文件转换为文本后操作
utmpdump /var/log/wtmp |sed "s/192.168.233.132/1.1.1.1/g" |utmpdump -r >/tmp/wtmp1 &&\mv /tmp/wtmp1 /var/log/wtmp
Unix
/usr/lib/acct/fwtmp < /var/adm/wtmpx | sed "s/192.168.8.88/localhost/g" | /usr/lib/acct/fwtmp -ic > /var/adm/wtmpxTip
通过1
2
3
4
5
6
7
8
9ssh -T root@127.0.0.1 /bin/bash -i -T参数隐藏w命令查看
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i 不记录Linux公钥到known_hosts中
直接查看网络连接netstat -antp| grep 22还是存在的
进一步简单的隐藏可以备份bin文件替换成其他可执行sh文件写入命令过滤自己的连接
which netstat
cp /path/netstat /path/netstat.bak
vi /path/netstat ----> /path/netstat.bak ${*} } |grep -v ip
更深层次就需要进行Hook或者驱动级隐藏-T
参数,可以防止登录成功后被记录到对应文件中,需要注意的是登录失败日志仍然会记录到/var/log/btmp
中