一个可以藏在PHP扩展中的rootkit

荷兰研究人员Luke Paris创建了一个隐藏在PHP服务器模块中的rootkit,攻击者可以利用这个rootkit接管Web服务器,接管过程是通过一个很少使用的攻击向量(Apache模块)实现的。
PHP rootkit可以让攻击者获得被攻击服务器上的持久接管权,而且不会被检测到。Paris表示,利用PHP模块隐藏rootkit是个很聪明的做法,结果也很有效。他列出了以下几点原因:

易用性 – 在PHP模块中编写rootkit比学习如何编写内核模块要容易得多,而且开发人员可以使用较少的代码写出rootkit。Paris表示自己已经在一天内学会了编写PHP模块的基础知识。

稳定性 – 常见rootkit多在内核空间中运行,这意味着如果编写水平较差,则可能会使整个系统崩溃。而使用PHP rootkit可以解决这个问题,写得不好的PHP rootkit也不会使整个系统崩溃。

“一个PHP rootkit顶多可能导致一个分段错误,但只会中断当前的请求,可以让攻击持续的时间更长一些(注意:大多数Web服务器会在错误日志中报告这一点,所以这也有可能引起怀疑)”

可逃避检测 - PHP rootkit很难被检测到,因为PHP模块中缺乏相应的检查机制。很少有开发人员会检查PHP模块的哈希值,因此,可以很轻易诱使开发人员下载被入侵的PHP模块或者在被入侵的服务器上替换PHP模块。

轻便性 – PHP rootkit是跨平台的rootkit,因为PHP本身也是跨平台的,而且PHP模块可以针对不同的平台进行编译。

此外,内核rootkit要求开发者为每个进程挂接系统调用,这会使主机的速度大幅减缓,降低主机性能,这可能会引起更多怀疑。但PHP rootkit只需要hook一个系统进程(就可以实现攻击)。

Luke Paris在GitHub上发布了一个开源的 PHP rootkit PoC (https://github.com/Paradoxis/PHP-Rootkit) 。 这个PoC代码与PHP服务器的“hash”函数和“SHA1”函数挂钩,整个rootkit仅由80行代码组成,很容易将其隐藏在合法模块中。

最后修改时间为:2017 年 06 月 20 日 11 时 35 分 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论