权限维持 | Centos Linux环境变量后门

Posted 小黑的安全笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了权限维持 | Centos Linux环境变量后门相关的知识,希望对你有一定的参考价值。

0x00 前言
虽然是周日,但小黑今天还是个光荣的打工人,要爬起来去上班,所以写文章的时间就压缩了很多,这周的文章就简单介绍一种linux后门吧。

本文使用centos linux系统做实验,对其他版本linux不保证可用性。 0x01--0x04 部分是原理,想看利用可以直接跳到0x05。

0x01 环境变量文件分类
Linux系统在每个用户登陆或打开一个新shell时,都会去加载执行一些环境变量文件(shell语言)。我们可以考虑用这个特性去留后门作为权限维持的一种手段。

由上述原理可以想象,这个后门应该是管理员做类似登陆的操作才会触发。那根据一种最常见的登陆场景:【管理员使用ssh登陆linux系统】,可以将linux的环境变量文件分为以下三类:

第一大类:ssh登陆后会执行的环境文件

/etc/profile

/etc/bashrc

~/.bashrc

~/.bash_profile


第二大类:特殊条件下会执行的环境文件
~/ .bash_login
~/.bash_logout

第三大类:不常用shell的环境文件
例如:
~/.cshrc
~/.tcshrc
等……

下面会一一介绍分类的依据,每个文件的触发特性,以及如何利用该特性制作后门。

0x02 ssh登陆后会执行的文件
这一类环境变量是ssh登陆系统后通常必定会执行的文件,其中 /etc/profile /etc/bashrc 系统级环境变量,影响所有用户。而 ~/.bashrc ~/.bash_profile 用户级环境变量,只对单个用户有影响。

我们在这四个环境文件中分别写一行shell代码,功能是用echo函数在开头输出文件自身的名字,然后去实际登陆一下,以输出顺序来判定他们的执行顺序。

(1)在 /etc/profile 文件开头添加如下代码(其他三个文件以此类推):
权限维持 | Centos Linux环境变量后门
(2)实际登陆操作:
权限维持 | Centos Linux环境变量后门
(3)显示顺序截图:
权限维持 | Centos Linux环境变量后门
结论: /etc/profile > ~/.bash_profile > ~/.bashrc   /etc/bashrc  

这里顺便再测试一下不实际登陆,只是用当前用户打开一个新bash shell时会怎么样:
权限维持 | Centos Linux环境变量后门
结论: 只有bashrc文件会触发,顺序: ~/.bashrc > /etc/bashrc  

0x03 特殊条件会执行的环境文件
其实也没什么特殊的啦,执行的触发条件一句话就能讲清楚:
~/.bash_login 触发规则:
    当 ~/.bash_profile 文件不存在时才会执行。

(1)先改掉 ~/.bash_profile
权限维持 | Centos Linux环境变量后门
(2)然后重新登陆:
权限维持 | Centos Linux环境变量后门
结论 ~/.bash_profile 文件不存在时,会执行 ~/.bash_login 文件。同时发现  /etc/bashrc  ~/.bashrc 都不会执行。

不过这个并不绝对,实际上只要看一下这些文件的源码就会知道他们是相互调用的,具体会不会执行要看实际环境的调用情况。比如下图 ~/.bash_profile 文件中调用了 ~/.bashrc 文件。
权限维持 | Centos Linux环境变量后门

~/.bash_logout 触发规则:
    用户登出时会执行。
权限维持 | Centos Linux环境变量后门

0x04 不常用shell的环境文件
顾名思义,就是除bash shell之外的shell的环境文件,使用其他shell时会触发。比如我这里的.cshrc和.tcshrc就是csh shell的环境文件。

权限维持 | Centos Linux环境变量后门

bash shell 是 Linux 的默认 shell,管理员使用ssh登陆时会默认调用bash,所以会触发bash的环境文件。至于其他类型的shell,使用场景比较少见,这里就不多介绍啦。

0x05 环境文件后门的利用思路
知道了原理,那利用环境文件做后门的思路就很明确了:在这些文件中添加恶意代码,让管理员登陆/登出时隐蔽的做一些事情。

具体添加什么代码呢,我这里初步想了几个方案,逐步排除后只剩一种,师傅们有更好的方案可以在留言板补充。

【方案123】 :改管理员密码、加新的管理员用户、加ssh登陆公钥。
排除理由: 手法老套容易被发现,在不知道管理员登陆习惯时不能及时上去清理痕迹,动静太大。

【方案4】 :直接反弹shell
在环境变量中添加反弹shell的代码,在代码触发后能在自己的服务器上直接获得权限,简单直接而且后门触发后很快就可以获知消息。
权限维持 | Centos Linux环境变量后门
排除理由: 这种交互性的命令会在登陆后阻塞管理员的终端,影响可用性,而且也更容易被发现了。
权限维持 | Centos Linux环境变量后门
登出的时候也同样会阻塞:
权限维持 | Centos Linux环境变量后门

【方案5】: nohup执行msf木马
关于msf木马的制作和使用方法可以参考这篇:


(1)这里先向目标机器传入msf木马,命名为backdoor.sh(实战中木马的命名和位置可以更隐蔽一些)
权限维持 | Centos Linux环境变量后门
(2)在环境变量文件中添加nohup执行木马的语句:
权限维持 | Centos Linux环境变量后门
(3)管理员登陆后无任何异常:
权限维持 | Centos Linux环境变量后门
(4)实际msf木马已经在后台静默运行:

0x06 后记

这是2.1--2.7这周的文章

自从去年7月正式运营公众号之后,我想到什么好的文章灵感都会记录下来作为选题,留着有空再写。这周的文章就是很久以前记录的一个选题,目前积累的还没有写的选题有这些:

大家想看哪个可以留言给我,也可以贡献一些这里没有的选题,被留言的选题我会考虑提升一下优先级~

0x07 参考文献
https://blog.csdn.net/whatday/article/details/78929247
https://cloud.tencent.com/developer/article/1683267

以上是关于权限维持 | Centos Linux环境变量后门的主要内容,如果未能解决你的问题,请参考以下文章

权限维持 SSH软链接后门

操作系统权限维持之Windows系统-克隆账号维持后门

《内网安全攻防:渗透测试实战指南》读书笔记:权限维持分析及防御

《内网安全攻防:渗透测试实战指南》读书笔记:权限维持分析及防御

《内网安全攻防:渗透测试实战指南》读书笔记:权限维持分析及防御

Windows权限维持-Windows服务