Linux恶意程序上的安全挑战与碎片化的样本分析与思考

头图 | 东方IC CSDN下载

出品 | CSDN(ID:CSDNnews)

长期以来,Linux 主机一直被认为是比 Windows 更安全的操作系统,已知的病毒情况远不如 Windows 多样化和严重。近年来,随着云计算的兴起,Linux系统在云主机中的高比例已经形成了联网主机的主要计算能力,这自然引起了病毒和黑产品的关注,但对云主机攻防的研究Linux 恶意程序尚未达到与 Windows 相同的程度,公众认可的 Linux 恶意程序基本上都是挖矿程序和 DDoS 木马。

在对云上的大量主机文件进行检查和安全分析时发现,尽管考虑到Linux开源生态系统的天然版本差异化因素,大量Linux基础软件的碎片化程度超出正常水平。现象。分析的基础软件包括基础操作系统程序,如ps、kill、netstat等;Apache httpd、Nginx、OpenSSH等基础服务应用软件。部分软件版本的碎片化呈现出逐日快速增长的趋势。经过分析,其中一些可能与已知的攻击组织和事件有关。比如最近发现DDG挖矿僵尸网络篡改系统程序,植入木马下载器代码;很多情况之前没有被注意到和披露,并且没有解释。随着深入分析,阿里云安全运营中心逐渐发现了围绕基础软件污染的各种入侵。由于基础软件的独特作用,这种污染在事中事后往往很难被普通用户发现,更难根除。.

为了更好地应对Linux操作系统特有的安全挑战,2020年以来,阿里云云安全中心专门构建了Linux二进制程序恶意样本的发现和分析功能。程序进行多维标记、大样本量代码相似度和差异聚类比较,形​​成独特的恶意样本和特征库。其中最典型的一类是污染Linux云服务器上承载的基础软件的样本,形成了不同于Windows病毒的主要威胁形式,速度快、隐藏手段多、检测难度大。以6月份为例,该类别下每天新检测到3840个带有恶意代码的篡改系统二进制程序样本。

本文将从一个典型案例——sshd后门入手,介绍Linux基础软件污染的主要表现形式、独特的威胁、查杀的关键。

入口之争:来自 OpenSSHsshd 后门

对于入侵行为,使用sshd作为登录入口,显然很容易被作为目标使用。如果 sshd 程序及其配置文件被替换,一方面可以为入侵者留下一个稳定的后门来维护权限。另一方面,作为驻留在系统中的daemon守护进程,sshd中的代码也有机会在后台重复执行。因此,围绕篡改sshd的各种后门层出不穷。早期的想法,比如 ssh server wrapper,封装了 sshd 功能,用脚本代替原来的 sshd 二进制程序。有多种解决方案可以很容易地检测到。

2018年底,安全公司ESET发布了《ForSSHe的黑暗面》白皮书,披露了其追踪了三年的OpenSSH后门。从Ebury后门开始,白皮书共披露了21个后门sshd家族。这些后门基于OpenSSH源代码,将后门代码以补丁的形式植入编译,从而获得植入的特权登录的硬编码账号和可以盗取合法登录账号的sshd版本,无痕更换密码。近年来,这种解决方案也得到了一定程度的普及。例如,通过使用公共后门补丁代码模板,定制后门非常方便。

在云端,通过对完整的/usr/sbin/sshd程序文件的对比分析,发现这个简单的后门思想衍生了大量的变形和花样,在入侵中起到了精心设计的作用。.

▐ sshd后门漏洞图

sshd后门的基本功能有两个,分别是登录请求的用户验证过程、植入硬编码的账号密码绕过验证实现特权免密码登录、记录或记录合法登录请求的账号密码。直接退货。因此,在分析sshd程序样本时,首先要定位用户验证相关函数,检查是否有可疑的新代码或程序调用。

在 OpenSSH 中,支持以下用户验证机制:

userauth_jpake J-PAKE授权协议userauth_hostbased 基于主机互信userauth_kbdint 键盘交互式userauth_pubkey 公钥机制userauth_passwd 密码userauth_none 无校验userauth_gssapi GSSAPI

每个验证机制的实现都涉及到更复杂的过程调用链接和支持的数据结构。以密码验证为例,在验证环节和分支中有以下功能,因此在代码层面运行时可能会获取明文账户密码,导致数据被篡改和泄露:

userauth_passwdmm_auth_passwordauth_passwordsys_auth_passwdsshpam_auth_passwdauth_krb5_password

虽然原来公开信息的sshd后门只针对密码验证的auth_passwd功能,但在整理出活跃样本后发现,野外恶意版本的恶意代码植入位置的选择几乎涉及了所有以上验证方法。相关功能。下面只是花式实现密码验证相关后门的一个典型例子。

▐ 典型的sshd后门实现示例

后门链:userauth_passwd、auth_password、sys_auth_passwd植入点案例

这是三个具有调用关系的函数。userauth_password 为外层接口,用于判断当前请求是否为密码修改,因此会提取用户请求中密码的明文,为特权登录密码植入留下机会。该函数的原始代码和后门伪代码如下:

下一层会调用auth_password函数,这里会乱提取请求中的明文密码,配置会判断并分配验证是由系统KRB5(Kerberos)、PAM(Pluggable Authentication Module)还是原来的帐户加密方法。这里的后门实现一般包括特权密码植入和合法账户密码窃取:

然后进入下一级到sys_auth_passwd,在正常密码和salt hash验证之前,还有一个后门可以直接对比明文密码,如下:

对抗性分析:各种后门的免杀实现

对于上述的后门实现,通过人工判断进行后门判断和特征提取匹配比较简单。在避免使用packer等全局代码混淆方法(通过文件中的可疑点更容易勾画样本)的前提下,找到了多种简单的反杀实现。

首先是静态字符串的混淆。通过逐字节赋值,避免了常量字符串数据的引入,也避免了特征字符串匹配:

其次,在人工分析中,需要根据功能代码逻辑和交叉引用指纹定位敏感功能,对简单的auth_password进行大规模的代码改动和插入,使其“无法识别”,避免人工审核:

第三,根据ESET等外部渠道披露的后门,所有被盗的合法账号密码都以固定格式字符串记录到本地,并采用直接在代码中命令外部账号密码的方式来规避该特性基于格式字符串。静态扫描检测:

稍微复杂一点的实现

Linux 上的恶意程序广泛使用 rootkit 来隐藏恶意代码和行为;而sshd没有使用独立的程序文件,也没有新的网络行为,为了避免检测审计和后续的入侵行为,下面的后门示例使用完全不同的实现方式:窃取账户机密的功能是由一个独立的程序实现,并嵌入到sshd中父母释放。同时,为了隐藏这个模块编程访问安全性 灰色,发布并安装了一个额外的内核模式通用rootkit。同时,为了保证这些负载释放过程是隐蔽和可执行的,在server_accept_loop消息循环中实现了植入过程:

当然,以上只是分析了sshd的常规后门花式实现,但是植入少量代码可以实现的后门行为空间是非常大的。已经发现也有零星的案例,后门不仅限于窃取系统账号和密码凭证数据。下面的例子实现了其他应用敏感信息的检索和泄露:

▐ sshd后门攻击特点及发展趋势

2020年,阿里云安全中心将对Linux基础软件进行专项管理。sshd后门作为分析检测主流后门的入口。截至2020.07.10,上半年检测数据如下:

从数据中,可以解读出以下信息:

Linux 基础软件威胁疑点:从已知到“未知”

以上以OpenSSH为例,揭示了Linux开源基础软件的公共恶意代码植入思想可能演变出的各种形式。从这个角度,我们来讨论一下Linux开源程序所面临的威胁全景。

▐ 已知:基础软件污染事件

选择OpenSSH作为后门载体,一方面是因为它是登录入口程序,具有功能敏感性;另一方面,由于是Linux系统的守护程序之一,具有常驻后台的特点。事实上,Linux的基础软件,包括操作系统基本功能的基础程序,以及Linux服务器主机常用的服务程序,都因上述两个特点之一而存在已知或未公开的污染。

Linux操作系统基础程序:病毒持久化温床

由于Linux的系统设计理念,有大量系统原子函数被设计成基础程序(如ls、ps、grep等),大量与系统交互的函数都是通过调用这些函数完成的基础程序串联起来,所以这些基础软件总是少不了的。被高频调用。其他系统程序,如sshd,是默认在后台执行的daemon守护程序,涉及底层系统管理、监控、服务提供等功能。因此,这些程序自然成为恶意代码持续运行的目标载体。

在DDG僵尸网络中,采用入侵和感染相结合的方式来保证挖矿任务的成功发布、维护和隐藏。阿里云安全运营中心在最新的样本分析中发现,以往的入侵行为有更换多个系统基础程序的历史。被替换的基础程序涉及grep、awk、sendmail、chattr、pkill、lsattr、sleep、wget等。为了保证恶意程序本身简洁和高度兼容,这些替换程序不选择在独立源码的基础(即pkill的替换版本不是从原始pgrep/pkill源码编译而来),而是统一使用busybox源码插入后门代码,编译好的二进制程序替换到目标系统路径后,被main调用到DDG的木马代码中,如下图所示。同样,最近新发现了一种新型的系统程序替换污染,将多个系统程序替换为通过在glibc源代码中添加恶意主代码编译的二进制程序。

另一部分具有“入门”性质的Linux系统基础程序也具有广泛的感染风险威胁。观察到,agetty、dhclient、bash、sftp-server、sudo、login、irqbalance、gssproxy、anacron等代码版本长期稳定的系统程序经常更新和移动。对于Linux系统服务的守护程序,也是入侵过程中被篡改和植入后门的敏感区域;近两年,阿里云安全运营中心发现以下系统守护进程存在可疑文件变化:dbus-daemon、systemd-logind、systemd-journald、auditd、ntpd、rsyslogd、chronyd、lvmetad、atd、rpc.statd、 packagekitd、xinetd、vsftpd等针对上述可疑的文件移动和篡改,阿里云安全中心已经有了监控告警模型,提醒用户审计;对于样本恶意代码的分析和检测,已经有很多积累,并且正在逐步覆盖可疑事件中的样本。辨别能力。

后台服务基础应用软件:业务/数据驱动威胁的新目标

除系统基础程序外,部分第三方开源基础应用软件供应链来源多样编程访问安全性 灰色,版本变更频繁。它是在一般用户业务中起主要业务应用作用的一个包,直接处理业务逻辑和用户数据。, 是一个关键敏感程序。这些应用程序的安全性与业务的安全性而不是主机的安全性更直接相关。

Linux云主机承载的最主流的应用是Apache httpd和Nginx。例如,ESET 和 Sucuri 在 2013 年披露的 Linux/Cdorked.A 反连接后门就是使用恶意代码编译的 httpd 守护程序。埋藏了新的控制命令处理,用于条件触发植入的反弹shell模块等后门功能,增加了请求重定向实现隐藏。因为这个后门不是通过修改配置文件和添加之前广泛传播的后门扩展模块来实现的,也没有在磁盘上放置其他文件或清除日志,一旦植入完成,或者安装过程被污染,它只能通过纠正httpd程序文件的特征检测才能实现。这类家族也涵盖了 Nginx 和 Lighttpd。可见,隐藏在服务应用软件二进制级别的后门,是一场已经打响的战场。

▐ “未知”:通过数据窥视的威胁

由于与生俱来的开源生态,相对于Windows软件大多以二进制形式发布,Linux拥有大量源代码形式的程序供用户拉取、定制、编译使用,或从其他渠道下载预编译的二进制版本. 因此,引入了大量的版本碎片现象,主要体现在三个方面:

即使考虑了以上所有的白色和灰色版本碎片,通过数据分析,阿里云安全运营中心也可以观察到一些程序在满主机上,并且存在高度可疑和严重的碎片状态和趋势。代表性数据如下:

在此数据中,样本捕获了主要 Linux 程序的分散分布。上图选择了daemon程序数据中比较碎片化和正常的部分;作为对比,如auditd、atd等近几年代码简单且无代码改动的系统守护程序,日活跃的md5版本数在100个左右,而其余版本数最高的守护程序则显示出一个倾向于偏离正常的版本数量。下图展示了各种常见应用的分片。除了curl、rpm、chmod等已知病毒污染的常见目标程序外,Nginx、httpd的碎片化趋势明显超出正常范围;部分基础软件月均新增5000多个新版本,

从上面披露的sshd后门检测阶段结果来看,普通程序的低安装版本往往直接表示高度可疑,整体来看存在大量安装低、周期性迭代更换的“单一”版本。也就是说,存在和增长是当前对底层软件威胁的表征。同时,不断增加的版本碎片化呈现出与攻击事件的时间和热度相关的趋势,这也证明基础软件污染已成为野蛮入侵事件的组成部分。

对策:从单机审计到数据歧视

▐ 样本分析和审计困难

对于已知类型、攻击思路和可疑代码目标位置的恶意程序,如果需要在单台计算机上进行审计以检查是否受到攻击,将面临以下困难:

▐ 云上大数据的判别

尽管个人用户很难确定其主机上的文件是否已被恶意版本替换,但攻击往往不是孤立的和稀疏的。因此,作为阿里云安全运营中心,可以从更高维度监控变化。

阿里云云安全中心目前具备自动分析云端新二进制程序样本的能力。对于Linux基础软件以集中或规则的方式出现,并且有大量碎片,从数据层面监控趋势,并根据代码语义分析趋势。相似性聚类可以快速定位并协助专家分析差异代码并描绘潜在的恶意版本。自3月起,云安全中心云查杀模块新增“基础软件被污染”告警类别,对上述所有Linux基础软件污染和后门篡改提供统一告警,并引导用户查看和查看。修理。.

▐ 用户保护建议

虽然恶意样本和入侵的基本软件篡改类型往往更加严密,在攻击成本和个人用户发现难度之间存在一定的杠杆作用,但普通用户还是可以从以下几个方面尝试被动发现和主动防护:

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论