后台服务类基础应用软件:业务/数据驱动型威胁新目标
除了系统基础程序外,一些第三方开源基础应用软件,更是存在非常多种供应链来源、频繁的版本更迭,在一般用户业务中起主要业务应用角色的程序包,直接处理业务逻辑、用户数据,是关键敏感程序 。这些应用的安全性更直接关乎业务而非主机的安全性 。
Linux云主机搭载的最主流应用为Apache httpd和Nginx 。如2013年曾经由ESET和Sucuri披露的Linux/Cdorked.A反连后门,即是插入了恶意代码编译的httpd daemon程序,其后门实现与原始代码功能逻辑结合,在http请求头的复杂处理分支中埋下新增的控制命令处理,用于条件触发植入的反弹shell模块等后门功能,并增加请求重定向以实现隐藏 。这个后门因为不通过此前广泛传播的配置文件修改、新增后门扩展模块的方式实现,且没有其它文件落盘、消除日志,所以一旦完成了植入,或者通过安装过程污染,则仅能通过对httpd程序文件的特征检测才能发现 。这类家族同时还覆盖了Nginx、Lighttpd,可见在服务应用软件二进制层面的后门隐藏,是早已开始的一个对抗战场 。
? “未知”:从数据窥见威胁
由于先天的开源生态,相较于Windows软件大多以二进制形式发布,Linux有大量程序为源码形式为用户自行拉取、定制、编译使用,或从其它渠道下载预编译二进制版本 。由此引入了大量的版本碎片化现象,主要体现在三方面:
- 由编译过程引入的特异性差异 。不同的编译环境与配置,不止会在编译后二进制中留下指纹,也包括了build-id这样的先天差异;更重要的是跨编译器和版本情况下,代码生成策略不同带来的一般差异 。
- 由代码定制引入的奇异版本 。出于业务和功能需求,在开源代码上引入增量代码,会产生一个“小众”版本 。对于独立审计的第三方而言,判断出增量代码是首要难点,而判断增量代码是否“善良”则是更大挑战 。
- 由多样的软件供应链路引入的碎片化 。Linux应用往往具有依赖繁复的特性,为此对一些通用场景,存在大量第三方提供预编译的软件打包,如仅仅pure-ftpd程序,就被包含在lanmp、phpstudy、EZHTTP、wdlinux等多种web服务器应用打包方案中提供,从而引入额外的碎片化,其中包括下载途径等部分供应链也并不可信,甚至存在历史问题 。
文章插图
在这份数据中,抽样采集了Linux主要程序的碎片化分布 。上图选取了碎片化较多和较正常的部分daemon类程序数据;作为对照,如auditd、atd等代码简单且近几年无代码变更的系统daemon程序,日活md5版本数约在100上下,而其余版本数量居于前列的daemon则表现出偏离正常版本数的趋势 。而下图则统计了各类常见应用的碎片化,除了curl、rpm、chmod等已知病毒做污染的常见目标程序外,Nginx、httpd的碎片化趋势显然超出了正常区间;部分基础软件月均新增版本超过5000,构成了碎片化潜在威胁中的重点关注目标 。
根据前文披露的sshd后门检测阶段结果可知,常见程序的低安装量的版本往往直接预示着高度可疑,而从整体来看,这种低安装量、存在周期性迭代替换的“奇异”版本的大量存在和增长,即是当前面临的基础软件威胁表征 。同时,版本碎片化增长数量又呈现出与攻击事件时间热度相关的趋势,也佐证了基础软件污染已成为在野入侵事件组成成分 。
文章插图
对抗方案:从单机审计到数据判别
? 样本分析审计的难点
针对已知类型、攻击思路和可疑代码目标位置的恶意程序,如果需要在单机上进行审计,排查是否中招,将面临以下困难:
- 二进制无符号,相关函数没有特征可定位 。例如OpenSSH的auth相关函数,并没有特征常量字符串定位,同时又由于不同配置下的条件编译,导致二进制代码也没有统一特征或调用关系,所以很难在反编译函数中定位到目标 。
- 多数开源项目固有版本多、差异大,包括大小版本、发行版back port版本,需要跨差异进行比对、做函数差异分析需要完备的跨版本特征储备 。如rhel版本相比上游原始OpenSSH release的同版本号版本即有一定差异 。
推荐阅读
- 惊蛰, 春日从杯 FU TEA 苏醒
- 惊蛰已到 古树春茶还会远吗
- 40+岁老测试员的生涯回顾,Python自动化从业十年是种什么体验?
- 为啥盗墓贼总比考古学家先找到墓 挖掘兵马俑那盗墓老头
- 霸王龙的咬合力是什么概念 霸王龙的咬合力到底有多大
- 贵台红加盟信息,如何才能买到好的普洱茶春茶
- 招聘|大学毕业生找到一份销售工作,却发现做的事违背良心,该怎么办?
- 乌龟从什么时候开始冬眠? 乌龟何时冬眠,如何冬眠
- 宇航员到了月球以后,体重就只有地球上的六分之一 对于宇航员从月球带回的样本,科学家们的
- 蚊子咬到眼皮怎么消肿