导语:事实上,互联网上每时每刻都在上演着攻击和防御,本文将会重点的深入分析一下其中一个非常重要的类型:webshell。

事实上,互联网上每时每刻都在上演着攻击和防御,本文将会重点的深入分析一下其中一个非常重要的类型:webshell。

初识webshell

接下来将演示3种黑客是如何使劲浑身解数将webshell上传到服务器上的,包括远程文件包含和注入。

将webshell代码隐藏在常见的文件类型中

请求如下:

图片5.png

就像注入中我们会使用–、 ;–、#等字符来进行截断一样,同样的在进行文件包含时,通常用的是?(有时候甚至是%00)。如上请求,攻击者试图让服务器远程包含一个jpg文件,但这真的是一个jpg文件吗?当然不是,我们来看下数据包:

图片6.png

看到没,即使这个文件是jpg后缀,头部也是图片的标准格式,但是实际上它根本不是一个图片文件,关于将代码隐藏在图片中的文章,可以看这篇:点我。接下来分析一下这个隐藏在图片文件中的代码:

图片7.png

类pBot定义了一个数组$config,其中包含了很多配置信息,其中的”server”和”port”指定的就是僵尸主机将要进行连接的C&C服务器的地址。在对irc.malink.biz这个网站进行深入的探究钱,我更想探究一下malink.biz这个域名相关的信息,我们可以在passivetotal上检索一下这个域名的解析记录和WHOIS信息。

1482383471224162.png

以上的信息足够否?接下来直接访问网站,来个更直观的感受。

1482383428726987.png

从该网站的主页上看,好像也得不出什么东西,接下来看一下该网站的IRC信息。

1482383485353692.png

知道这个网站不是一个好网站了吧?

接下来让我们重新将目光聚焦在irc.malink.biz这个域名相关的信息上。

图片11.png

现在来小结一下:来自巴黎的服务器(攻击者)sxxxxxxo.no接收到来自马德里(被黑)主机的针对图片byroe.jpg的下载请求,该图片实际上是一个webshell。在这个文件中,我们发现了一个IRC服务器,该服务器使用了多个ip进行负载均衡的DNS解析(德国,英国,加拿大)。

1482383504757557.png

Virustotal对这个文件的AV检出率貌似还可以。实际上在分析的第一阶段,我们并不建议大家把文件上传到VT上进行检测。比如说,在你将文件上传到VT上之前,你要先检查一下这个文件的hash是不是已经存在。如果不存在的情况下直接将文件上传到VT(要记住VT的数据是公开的),这样可能会打草惊蛇,导致攻击者有进行快速响应的时间。

1482383521407386.png

1482383533976951.png

将webshell代码进行混淆

黑客可能为了隐藏自己的意图,会对代码进行编码和压缩,通过这样的手法来绕过某些WAF的字符拦截和特征拦截。以下请求:

图片15.png

myluph.php文件内容如下[附1.txt]:

图片16.png

这是一个典型的经过混淆的PHP代码,这些代码最后会被eval()函数执行,不过在此之前会进行一些解码:base64 decoded、ROT13、inflated。

其实还有比这更复杂的版本,想象一下使用上面的函数对代码进行多层混淆,这时候要通过人工进行解码来获取原始代码显然是很不合适的,推荐使用PHP的解释器来做这一工作。就上面被混淆的代码而言,可以使用phpdecoder进行解码:点我

解码后如下[附2.txt]:

1482383591398380.png

1482383603640344.png

代码执行后,会将受害者的感染信息发送到[email protected],该代码还会将命令执行的结果输出在页面中,在网络上随便就找到了一个例子:

1482383622528529.png

从上面的截图你可以看到黑客上传了好多文件,如Mailer-1.php、Mailer-2.php、1337w0rm.php等。

同样的,上传到VirusTotal上测试一下检出率:

1482383817753812.png

1482383852766584.png

可以看到很多杀毒厂商都没检测出这个文件是webshell文件。

通过SQL注入上传webshell

如下代码:

1482383867502275.png

首先,黑客需要找到一个SQL注入,然后通过构造数据包使得代码被保存在服务器上。

图片23.png

这是一个简单的用来进行命令执行的webshell,在这个表中总共有3个列,于是需要将代码放置在第二个列中(测出来的)。

图片24.png

这个SQL命令允许黑客将webshell写到文件中。

图片25.png

这个指定了webshell写入的目录地址以及文件名,这里需要注意的是黑客需要在服务器上找到有写权限的目录。

执行了上面的SQL语句之后,webshell文件会被创建,现在黑客可以直接通过GET请求与该webshell进行通讯,如下:

图片26.png

执行后服务器会返回/var/www目录下的文件列表

1482383912240246.png

最后在VT上检测一下那个只有一行的webshell代码

1482383925530582.png

源链接

Hacking more

...