本文记录Linux入侵痕迹清除思路、方法...
0x01 清除系统日志
1. 系统关键日志
日志文件 |
说明 |
/var/log/cron |
系统定时任务相关日志 |
/var/log/secure |
记录与安全相关的日志信息 |
/var/log/auth.log |
记录系统授权信息,如用户登录和权限机制等 |
/var/log/btmp |
记录所有登录失败信息,使用lastb命令查看 |
/var/log/lastlog |
记录系统中所有用户最后一次登录时间的日志,使用lastlog命令查看 |
/var/log/wtmp |
记录所有用户的登录、注销信息,使用last命令查看 |
/var/log/utmp |
记录当前已经登录的用户信息,用w,who,users等命令来查询 |
/var/log/dmesg |
开机时内核自检的信息 |
/var/log/messages |
系统相关日志 |
/var/log/kern.log |
内核日志 |
2. 清空日志文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| 1)通过重定向到空来清空日志
> /var/log/access.log # 清除web访问日志
2)将输出:或true内置命令重定向到文件
:> /var/log/secure # 清除安全日志记录 OR true > /var/log/secure
3)cat/cp/dd命令结合/dev/null清空文件
/dev/null设备文件是一个特殊文件,可以注销(删除)发送给它的任何输入
cat /dev/null > /var/log/cron
cp /dev/null /var/log/cron
dd if=dev/null of=/var/log/cron # if表示输入文件,of引用输出文件
4) 使用echo命令清空文件
使用带有空字符串的echo命令,并将其重定向到文件,空字符串与null不同,字符串是一个对象,因为它可能是空的,而null意味着不存在对象
echo "" > access.log 或 echo > access.log 或 echo -n "" > access.log # 使用-n告知echo的标志不输出导致上一个命令中生成的空行的尾部换行符
5)使用truncate命令清空文件
截断命令有助于收缩或文件的大小扩大到规定的尺寸,可以使用-s指定文件大小的选项。要清空文件内容,可使用大小为0(零)
truncate -s 0 access.log
|
3. 删除/替换日志
全部清空日志,动静太大,可选择性删除/替换部分关键日志,隐藏痕迹
1 2 3 4 5 6 7
| sed -i '/攻击ip/d' /var/log/secure # 删除登录日志攻击ip所在的行
sed -i 's/192.168.1.1/127.0.0.1/g' /var/log/access.log # 全局替换访问IP地址
cat /var/log/nginx/access.log | grep -v shell.php > tmp.log # 删除入侵相关信息
cat tmp.log > /var/log/nginx/access.log/ # 把修改过的日志覆盖到原日志文件
|
0x02 清除历史命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 1) 清除/部分删除历史命令
history -c && exit
vim ~/.bash_history
2)不记录历史命令
unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
修改配置文件/etc/profile,不再保存命令记录:HISTSIZE=0
3)vim特性利用
:set history=0 # 设置vim不记录命令,vim会将命令历史记录,保存在viminfo文件中
vsp ~/.bash_history # 用vim的分屏功能打开命令记录文件.bash_history,编辑文件删除历史操作命令
:set history=0 # vim中执行不想让其他人看到的命令 :!command
|
0x03 文件删除工具
1. shred命令
shred 会覆盖文件来隐藏它的内容,也可以选择删除
1 2 3 4 5 6
| $ shred -zvu -n 5 passwords.list
-z - 用零覆盖以隐藏碎片 -v - 显示操作进度 -u - 在覆盖后截断并删除文件 -n - 指定覆盖文件内容的次数(默认值为3)
|
2. wipe命令
wipe 命令可以安全地擦除磁盘中的文件,从而无法恢复删除的文件或目录内容
1 2 3 4 5 6 7 8 9 10
| $ sudo apt-get install wipe [Debian 及其衍生版] $ sudo yum install wipe [基于 RedHat 的系统]
$ wipe -rfi private/* # 销毁 private 目录下的所有文件
$ wipe /dev/sda1 # 删除完整分区的内容
-r - 告诉 wipe 递归地擦除子目录 -f - 启用强制删除并禁用确认查询 -i - 显示擦除进度
|
3. Secure-Delete
Secure-Delete 是一组工具集合,提供srm、smem、sfill、sswap,4个安全删除文件的命令行工具
1 2
| $ sudo apt-get install secure-delete [Debian 及其衍生版] $ sudo yum install secure-delete [基于 RedHat 的系统]
|
srm
1 2 3 4
| $ srm -vz private/*
-v – 启用 verbose 模式 -z – 用0而不是随机数据来擦除最后的写入
|
sfill
sfill 是 secure-deletetion 工具包的一部分,是一个安全免费的磁盘和 inode 空间擦除器,它以安全的方法删除可用磁盘空间中的文件。sfill 会检查指定分区上的可用空间,并使用来自 /dev/urandom 的随机数据填充它
1
| $ sudo sfill -v /home/username
|
sswap
sswap 以安全的方式删除 swap 分区上存在的数据,在使用 sswap 之前需卸载 swap 分区
1 2 3 4
| $ cat /proc/swaps $ swapon # 检查分页和交换设备/文件是否已经使用 $ sudo swapoff /dev/sda6 # 禁用分页和交换设备/文件 $ sudo sswap /dev/sda6 # 命令要花费一些时间,默认要进行 38 遍擦除
|
sdmem
sdmem 是一个安全的内存擦除器,其设计目的是以安全的方式删除存储器(RAM)中的数据
4. dd命令
dd命令起初是用于磁盘克隆的,它用于将一个分区或者一个磁盘复制到另一个分区或者磁盘。但是它还可用于安全地清除硬盘或者分区的内容
1 2 3
| sudo dd if=/dev/random of=/dev/sda
sudo dd if=/dev/zero of=要删除的文件 bs=大小 count=写入的次数
|
5. 隐藏远程SSH登录记录
隐身登录系统,不会被w、who、last等指令检测到
不记录ssh公钥在本地.ssh目录中
1
| ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i
|
0xFF Reference