近日,Sucuri和ESET公司联合研究,发现近期Blackhole在攻击中使用了一种“精良”的apache后门—— Linux/Cdorked.A。
Linux/Cdorked.A后门除了修改了守护进程“httpd”外,不会在硬盘中留下任何线索,所有有关后门的信息都存放在服务器的共享内存中。攻击者会通过HTTP请求来发送后门的配置信息,不但会经过混淆处理,而且不会被常规的apache日志记录,从而减少被传统监控工具发现的可能。而配置文件信息也是存放在内存中,这意味着后门的C&C服务器信息不可见,使得取证分析更加复杂。
当访问被攻陷的的web服务器时,它不是简单的就被重定向到恶意网站,还会设置一个cookie,从而第二次访问的时候不会再重定向到恶意网站。以此减少被怀疑的风险。而且cookie对管理页面进行特别设置,不感染管理页面,后门会检查访问者的referrer字段,这个技术手段跟Darkleech apache后门很类似,而事实上正是Sucuri和ESET持续跟踪Darkleech木马时发现了它有了新的这个变化。
两个安全公司在最近几个月里,发现了一些基于cPanel的受感染服务器上,恶意软件手法不再是增加模块,或者修改apache配置文件,而是开始替换Apache的守护进程文件httpd,此前安全公司Sucuri曾经建议使用“rpm -Va”、“rpm -qf”或“dpkg -S”来检查Apache的模块是否被修改了。然而cPanel把apache安装在/usr/local/apache上,不可以用上面提到的包管理工具命令来进行检查Apache二进制文件httpd是否被修改了。Sucuri公司跟踪到此类型攻击,把被修改的httpd提交给了ESET进行分析。下面请看详细的分析。
共享内存存储木马有关信息:
分析被修改的httpd发现,它会创建大约6M的共享内存,以此来存放配置信息,这个共享内存不但可以被所有Apache的子进程使用,而且设计者没有做限制,任何其他进程都可以访问到。如下图所示:
通过HTTP请求控制木马:
攻击者有两种方法控制被植入后门的服务器。一个是通过反向连接的shell,一个是通过特殊的命令。两个方法都是通过HTTP请求来触发。
通过特殊的HTTP GET请求,就可以触发部署了反向连接后门的http服务器。请求是一个特制的地址,包括查询特定格式的字符串,包括hostname和端口。而请求者的ip是用于解密请求字符串的key(一个4byte的XOR key)。另外,在http头信息里X-Real-IP或X-Forwarded-For字段内的ip地址会覆盖作为异或key(XOR key)的客户端IP地址。因此研究人员可以伪造一个 X-Real-IP头信息,作为解密的key如 “\x00\x00\x00\x00” key 。最后,所有请求查询的字符串都会经过hex编码才发送给感染木马的web服务器。
而由于httpd被hook了,所以这个被修改过的apache是不会把这种请求记录到log文件中。
重定向:
当用户访问受感染的web服务器,被重定向的时候,服务器的恶意软件会在返回的重定向内容中加入经过base64编码的信息,比如原始访问的URL,原始请求是否来自javascript等,服务器(正在存放恶意内容的服务器)以此判断可提供相应的payload。例如:
Location: hxxp://dcb84fc82e1f7b01. xxxxxxgsm.be/index.php?j=anM9MSZudmNiaW11Zj1jY3
Zja3FqdSZ0aW1lPTEzMDQxNjE4MjctMzYwNDUzNjUwJnNyYz0yMzImc3VybD13d3cuaW5mZWN0ZWRzZXJ2
ZXIuY29tJnNwb3J0PTgwJmtleT0xM0Q5MDk1MCZzdXJpPS9mb3J1bS93Y2YvanMvM3JkUGFydHkvcHJvdG
9hY3Vsb3VzLjEuOC4yLm1pbi5qcw==
经过解码后:
js=1&nvcbimuf=ccvckqju&time=1304161827-360453650&src=232&surl=www.infectedserver
.com&sport=80&key=13D90950&suri=/forum/wcf/js/3rdParty/protoaculous.1.8.2.min.js
其中surl参数显示来自哪个受感染的主机。suri显示原始的请求来源。
Sucuri公司的分析发现会被重定向到一些色情网站,有一些则重定向到Blackhole Exploit Kit。
设置cookie:
当重定向后,就会给来访的客户端设置一个cookie,以保证不会再被重定向。而疑似为管理页面的请求也会设置cookie,不会被重定向。木马会检查URL,server name,referer,如果有关管理的字符串,就不会发送恶意内容到管理者的website。这些字符串包括:‘*adm*’, ‘*webmaster*’, ‘*submit*’, ‘*stat*’, ‘*mrtg*’, ‘*webmin*’, ‘*cpanel*’, ‘*memb*’, ‘*bucks*’, ‘*bill*’, ‘*host*’, ‘*secur*’, ‘*support*’。如下图所示:
应对:
ESET写了个脚本,让系统管理员可以检查共享内存的内容,以及把内容导出到一个文件中。因为病毒作者没有限制共享内存的访问,任何进程都可对木马创建的那段共享内存进行访问。
Sucuri则建议检查httpd的所在目录是否存在“open_tty”。
# grep -r open_tty /usr/local/apache/
如果在apache二进制文件中发现了open_tty则很可能已经收感染,因为原始的apache二进制文件不会调用open_tty。
目前调查仍未能清楚这些web服务器是如何被入侵的。有可能是SSH暴力破解。