导语:事实上,互联网上每时每刻都在上演着攻击和防御,本文将会重点的深入分析一下其中一个非常重要的类型:webshell。
事实上,互联网上每时每刻都在上演着攻击和防御,本文将会重点的深入分析一下其中一个非常重要的类型:webshell。
初识webshell
接下来将演示3种黑客是如何使劲浑身解数将webshell上传到服务器上的,包括远程文件包含和注入。
将webshell代码隐藏在常见的文件类型中
请求如下:
就像注入中我们会使用–、 ;–、#等字符来进行截断一样,同样的在进行文件包含时,通常用的是?(有时候甚至是%00)。如上请求,攻击者试图让服务器远程包含一个jpg文件,但这真的是一个jpg文件吗?当然不是,我们来看下数据包:
看到没,即使这个文件是jpg后缀,头部也是图片的标准格式,但是实际上它根本不是一个图片文件,关于将代码隐藏在图片中的文章,可以看这篇:点我。接下来分析一下这个隐藏在图片文件中的代码:
类pBot定义了一个数组$config,其中包含了很多配置信息,其中的”server”和”port”指定的就是僵尸主机将要进行连接的C&C服务器的地址。在对irc.malink.biz这个网站进行深入的探究钱,我更想探究一下malink.biz这个域名相关的信息,我们可以在passivetotal上检索一下这个域名的解析记录和WHOIS信息。
以上的信息足够否?接下来直接访问网站,来个更直观的感受。
从该网站的主页上看,好像也得不出什么东西,接下来看一下该网站的IRC信息。
知道这个网站不是一个好网站了吧?
接下来让我们重新将目光聚焦在irc.malink.biz这个域名相关的信息上。
现在来小结一下:来自巴黎的服务器(攻击者)sxxxxxxo.no接收到来自马德里(被黑)主机的针对图片byroe.jpg的下载请求,该图片实际上是一个webshell。在这个文件中,我们发现了一个IRC服务器,该服务器使用了多个ip进行负载均衡的DNS解析(德国,英国,加拿大)。
Virustotal对这个文件的AV检出率貌似还可以。实际上在分析的第一阶段,我们并不建议大家把文件上传到VT上进行检测。比如说,在你将文件上传到VT上之前,你要先检查一下这个文件的hash是不是已经存在。如果不存在的情况下直接将文件上传到VT(要记住VT的数据是公开的),这样可能会打草惊蛇,导致攻击者有进行快速响应的时间。
将webshell代码进行混淆
黑客可能为了隐藏自己的意图,会对代码进行编码和压缩,通过这样的手法来绕过某些WAF的字符拦截和特征拦截。以下请求:
myluph.php文件内容如下[附1.txt]:
这是一个典型的经过混淆的PHP代码,这些代码最后会被eval()函数执行,不过在此之前会进行一些解码:base64 decoded、ROT13、inflated。
其实还有比这更复杂的版本,想象一下使用上面的函数对代码进行多层混淆,这时候要通过人工进行解码来获取原始代码显然是很不合适的,推荐使用PHP的解释器来做这一工作。就上面被混淆的代码而言,可以使用phpdecoder进行解码:点我。
解码后如下[附2.txt]:
代码执行后,会将受害者的感染信息发送到[email protected],该代码还会将命令执行的结果输出在页面中,在网络上随便就找到了一个例子:
从上面的截图你可以看到黑客上传了好多文件,如Mailer-1.php、Mailer-2.php、1337w0rm.php等。
同样的,上传到VirusTotal上测试一下检出率:
可以看到很多杀毒厂商都没检测出这个文件是webshell文件。
通过SQL注入上传webshell
如下代码:
首先,黑客需要找到一个SQL注入,然后通过构造数据包使得代码被保存在服务器上。
这是一个简单的用来进行命令执行的webshell,在这个表中总共有3个列,于是需要将代码放置在第二个列中(测出来的)。
这个SQL命令允许黑客将webshell写到文件中。
这个指定了webshell写入的目录地址以及文件名,这里需要注意的是黑客需要在服务器上找到有写权限的目录。
执行了上面的SQL语句之后,webshell文件会被创建,现在黑客可以直接通过GET请求与该webshell进行通讯,如下:
执行后服务器会返回/var/www目录下的文件列表
最后在VT上检测一下那个只有一行的webshell代码