剖析:一次入侵Linux服务器的事件记录

2013-12-22 +10 273733人围观 ,发现 7 个不明物体 系统安全

针对此PHP漏洞的尝试,ColdFusion,内容管理系统存在此漏洞是很常见的。在某些情况下,特定的攻击可能会成功,对高价值的服务器,会导致非常显著的数据泄漏。在其他情况下,攻击者将会大规模的操控被感染的主机。 

最近,我注意到多个IP地址试图利用一个PHP漏洞攻击,所以我利用蜜罐记录了结果,此次活动让人想起早期僵尸网络疯狂的日子,用IRC命令控制,以及利用被入侵的主机作为扫描工具。
这是很有趣的,因为它表明它是一个成功针对Linux服务器的PHP漏洞,它能做什么呢,我将演示如何做一些基本的内存取证,可以使用Volatilit这种类型的事件进行总结。

以下是攻击者尝试的攻击:

这是针对一个老漏洞(CVE-2012-1823)的,它允许远程攻击者通过命令行选项HTTP查询字符串内注入任意代码。

攻击代码解码后为:

如果利用成功,将在HTTP POST的剩余部分显示。

以下是在被入侵的服务器上执行的操作:

·改变工作目录到/var/tmp中
·从该目录删除文件名为“a.pdf”的文件。
·从攻击者那里下载“a.pdf”文件并保存在/var/tmp目录。pdf文件实际上是一个per脚本。
·执行per脚本,也就是“a.pdf”文件。
·最后删除“a.pdf”文件。

此攻击者为了确保能成功下载远程脚本,他重复使用“curl”、“fetch”、“lwp-get”指令。

捕获的数据包显示了注入脚本的整体活动,在执行脚本后,休眠了一段时间,猜测可能是避开管理员的耳目。然后连接到vafel.pexit.cu的IRC C2,端口45129。

一段时间后,攻击者指示从m1.pexit.cu.cc获取另一个脚本“ins_h.sh”。

在“ins_h.sh”脚本的内容显示除其他事项外,攻击者在Linux服务器上创建隐藏目录,获取另一个工具(HC)的源代码,并编译它,然后修改保存到定时任务中。
在这之后不久,大量的各种文件将被下载到被感染的主机,这其中包括挖掘软件,开发库和编译工具,还下载了大量的linux本地权限提升利用程序。之后,攻击者将使用他想要的方式,开始比特币和质数币的挖掘,特别值得注意的它使用Stratum Mining协议连接到服务器37.251.139.161上:


大多数服务器都被注射了这些不同的脚本然后用于各种任务,包括DDoS、漏洞扫描和利用。互联网风暴中心最近发布了条新闻,“迈纳德的情况”,探讨了被破坏的服务器被用于开采虚拟货币。

现在,让我们做一些内存取证这一特定被攻陷主机的内存图像。我们将使用2.3.1版本分析Linux映像,为了做到这一点,你必须提供适当的Linux配置文件,创建一个配置文件是非常容易的,但它需要做适当的分布和内核。我推荐Ken Pryor的Github网站,Ken Pryor在那里建立了一个Linux配置文件存储库。
根据分析,该系统是一个Ubuntu 10.04的服务器,内核版本2.6.32-33,我们先来看看系统上的活动进程,通过“linux_pslist”插件。


注意PID1517(httpds)和PID27157(rsyslogd)的时间戳,远远晚于它上面列出的这些进程。由于早期过程及其相对时间戳类似于Linux的启动程序,另请注意,这些进程显示一个用户ID和组ID1002,其中的Ubuntu分配给一个用户帐户。

波动插件“linux_psaux”的行为类似于Linux命令ps,所以它能够显示在流程调用使用的命令行参数:

所以进程名命名为“httpds”,PID为1517,目录/usr/bin/httpd,另外一个进程“rsyslogd”,PID为27157,并调用命令行参数“-b -c”。如果我们获得一个破坏服务器的磁盘映像,我们会注意检查/usr/bin的“httpd”。通过研究“rsyslogd”,我们得知“- b”不是一个有效的选项,所以这个进程仍然是可疑的。当通过pslist命令列出的进程列表,找到运行的进程,“linux_pidhashtable”可以帮我们找到隐藏的进程。

在这种情况下,它是一个很好的做法,检查服务器的网络信息,一些网络插件,这将有助于确定远程连接和启动这些进程。例如“linux_netstat”插件的行为就像Linux的“netstat”命令,并列出活动的网络连接,以及监听套接字。在这种情况下,我们看到可疑的进程,PID1517和PID27157与建立的网络连接的远程IP地址相关联的进程。

执行“linux_route_cache”插件,可以显示路由表的缓存。这可能表明,可以不通过“linux_netstat”插件看到任何旧的连接。
现在,我们已经建立的PID1517和27157的可疑进程,让我们所有的相关的每一个打开的文件和路径的列表。类似于在linux系统使用“lsof”的,我们将在这里使用插件“linux_lsof”。


注意,这两个进程,PID1517和27157有两个共同打开的文件。一个是[7916],另一个是在隐藏目录“/tmp/.ICE-unix/-log/”中的httpd.pid文件。

另一个插件是“linux_proc_maps”,这个插件将显示进程内存的细节,包括共享库。细节包括开始和结束的位置,每个部分的节点和标记。这事从内存中调查处的很有价值的信息。例如,在PID1517,我们得到以下内容:

我们看到前面所提到的相同的隐藏目录,但现在指的是文件名“httpds”。该文件被看作是405961,在“linux_proc_maps”插件上有一个输出开关,允许以段列出。然而,为了恢复完整,完好的文件,我们需要从页面缓存,它保存在内存中的所有有关文件的页面。我们可以通过“linux_find_file”插件做到这一点,这个插件会找到地址,然后让你从内存转储缓存的文件内容,所以“httpds”文件在节点405961:

python vol.py -f /home/abc/pexit.vmem --profile=LinuxUbuntu1004_pae32-33x86 linux_find_file -F "/tmp/.ICE-unix/-log/httpds"

然后,我们使用“linux_find_file”插件使用“- o”选项,通过索引节点的地址,以提取文件。提取后,我们可以运行“strings”,查看内容:

这些例子只是协助你如何分析被破坏主机。我希望这篇文章成功的揭示了PHP漏洞和由此产生的脚本注入的例子的一些情况,除了确保面向Internet的服务器使用正确的修补和硬化,还要知道如何快速跟踪这样的攻击。在我的蜜罐,我每天会看到数十个,包括linux ELF,perlbots和老式炮弹攻击。这些注入perl和shell脚本是非常让人讨厌的,而且还会给我们带来最严重的破坏。

[原文地址,译/FreeBuf实习小编Rem1x]

发表评论

已有 7 条评论

取消
Loading...
css.php