可隐藏在PHP模块中的Rootkit,只有80行代码【附PoC】
更多全球网络安全资讯尽在E安全官网www.easyaq.com
E安全6月20日讯 荷兰Web开发人员卢克·帕里斯创建了一款Rootkit,其隐藏在PHP模块中,能通过Apache模块接管Web服务器。
什么是Rootkit?
Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,比较多见到的是Rootkit一般都和木马、后门等其他恶意程序结合使用。一个典型Rootkit包括:
以太网嗅探器程程序,用于获得网络上传输的用户名和密码等信息;
特洛伊木马程序,例如:inetd或者login,为攻击者提供后门;
隐藏攻击者的目录和进程的程序,例如:ps、netstat、rshd和ls等;
可能还包括一些日志清理工具,例如:zap、zap2或者z2,攻击者使用这些清理工具删除wtmp、utmp和lastlog等日志文件中有关自己行踪的条目;
一些复杂的rootkit还可以向攻击者提供telnet、shell和finger等服务;
还包括一些用来清理/var/log和/var/adm目录中其它文件的一些脚本。
从传统定义来看,Rootkit可以通过操作系统最底层运行的一段代码,拦截内核操作,并注入恶意活动。许多Rootkit在操作系统内核附近运行,其要求攻击者具有较高的水准,以便在不破坏受害者电脑的情况下使其运作。
帕里斯根据高级C和C++编程技能,设法创建了与PHP解释器(Interpreter)交互的Rootkit,而非操作系统内核。
帕里斯解释称,学习如何使用Zend引擎(构建整个PHP语言的框架)比学习如何编写内核模块简单得多。原因是代码库本身较小,且经过较好的文档化处理,复杂程度较低,即使不具备良好的文档或教程引导,帕里斯仍设法在一天时间内学习了编写PHP模块的基础知识。
帕里斯担心的是,既然他能做到,恶意攻击者绝对也能做到。
PHP Rootkit具有众多优点
帕里斯表示,使用PHP模块隐藏Rootkit其实是一个极其取巧的想法,其优点如下:
由于编程蹩脚,PHP Rootkit不会破坏操作系统,只会导致分段错误,从而中断当前服务器请求,在不被发现的情况下长期进行感染。
很少有开发人员会检查PHP模块的哈希值,这意味着要诱骗开发人员下载被感染的PHP模块,或替换被入侵服务器上的PHP模块容易得多。
PHP Rootkit只需深入到系统进程中,而内核Rootkit必须深入至每个内部调用中,以削弱机器性能。
PHP Rootkit是跨平台的Rootkit,因为PHP是跨平台项目,PHP模块能在不同平台进行交叉编译。
帕里斯创建了PHP Rootkit PoC,并在GitHub开放了源代码。他创建的测试版Rootkit深入到PHP服务器的“哈希”和“Sha1”函数之中。整个Rootkit有80行代码,攻击者可能轻易将其隐藏在合法模块中。
为了防止攻击者轻易将该代码武器化,帕里斯打乱了其中某些部分,从而使得缺乏PHP模块专业知识的人很难编译。
尽管如此,帕里斯的测试版PHP Rootkit表明,服务器管理员需考虑可能的攻击媒介。为了防止此类攻击,帕里斯向服务器所有者提供了一系列建议,例如:检测模块是否为恶意模块,其最简单的方式是在安装PHP之后保留模块哈希列表。一旦保留了哈希值列表,可以添加一个定时任务(Cron Job),试图将扩展目录的所有文件哈希,并与当前的哈希进行对比。
为了减轻工作量,帕里斯甚至发布了Phthon脚本,用以检查用户PHP模块的SHA1哈希值。
Paragon Initiative Enterprise公司的首席开发官斯科特·阿奇恰斯基表示,这是一个有趣的研究项目。
阿奇恰斯称,他之前在被感染系统中看到过基于.htaccess的恶意软件,可能是PHP模块或Apache模块。阿奇恰斯提出的攻击缓解措施是,用SHA256哈希值替代SHA1。
今年早些时候,Google研究人员破解了SHA1哈希函数,使用相同的SHA1哈希创建了两个文件,从而允许攻击者添加PHP Rootkit,之后通过相同的哈希创建Apache模块(至少从理论上讲是这样,目前尚未这样实施过)。此后,阿奇恰斯提出了此建议。
在遭遇攻击的服务器上,大多数事件响应者不会考虑寻找PHP模块内部的恶意代码,毕竟这不是隐藏恶意软件的常见位置,恶意软件通常存在于存储在公共网站、.htaccess文件或Web服务器目录中其它文件的源代码中。
帕里斯的PHP Rootkit是许多攻击者一直寻求的持久性工具,允许其在不被检测的情况下隐藏在最底层。
由于持久性增强,阿奇恰斯建议,当怀疑服务器被恶意软件感染时,应采取强有力的措施,因为大多数服务器管理员对即将来临的新攻击媒介不甚了解。
如果试图清理被感染的系统,当取证调查结束后,阿奇恰斯通常会建议构建干净的新环境,并将数据从受信任的备份中迁移出来。
帕里斯并非首个提出在Apache模块中隐藏恶意代码的人。2015年,伦敦开发人员克里斯汀·帕帕坦纳苏就创建了隐藏在Apache模块中的类似Rootkit。
GitHub PoC获取地址:
http://t.cn/RoyD36F
开发人员发布的Phthon脚本地址:
http://t.cn/Royk7sm
E安全推荐文章
官网:www.easyaq.com
2017年6月