网页游戏技术
联系方式
网页游戏技术您当前的位置:主页 > 网页游戏技术 >

深度分析及防护 加密木马攻击,海莲花?

发布于:2018-10-01 作者:环亚

  内容导读

  随着匿名者攻击事件的跟踪分析走向深入,5月28日,又一系列针对中国的攻击行为浮出水面。这个被大家称为“海莲花”组织所实施的攻击,其攻击特性是怎样的,到底是单纯的木马,还是APT?随之而来的攻防思路会发生怎样的转变?用户又该如何应对?

  本报告从此次攻击事件中截获的典型木马样本入手,分析其攻击行为,对比木马及APT的特性,为用户思考下一步的应对方案,给出了转变思路的攻防模型,提出未来攻防战中胜负判断标准及发展方向,并推荐了应对此次攻击的解决方案及实施步骤。

  在看完本报告后,如果您有不同的见解,或者需要了解更多信息,请联系:

  • 绿盟科技威胁响应中心微博

  • http://weibo.com/threatresponse

  • 绿盟科技微博

  • http://weibo.com/nsfocus

  • 绿盟科技微信号

  攻击:是谁?

  绿盟科技威胁响应中心一直在持续关注网络攻击事件并进行跟踪分析,这些攻击事件中有来自国内的,也有来自国外,如同现实社会中的AAAA一样,有些事件会有组织公开承认,比如匿名者(Anonymous),但也有一些事件是没有组织对其负责的,这些事件绿盟科技的专家会用相关的模型进行分类研究,其中的一个参考指标就是其攻击行为及惯用的攻击形式。

  海莲花

  2015年5月28日,一系列针对中国海事机构的攻击行为浮出水面,业界有传攻击事件涉及30多个国家,事后未有组织声称对这些攻击事件负责,但其中可以看到的是,相关海事机构的攻击大多数来自木马。如果说这些攻击是来自某个黑客组织,那么这个组织无疑是比较低调的,低调到没看到其公开的命名。可能是由于这些攻击目标常涉及中国的海事及相关机构,某公司将其命名为“海莲花”,但考虑到这些攻击的一些特性,1多采用木马,2多针对海事机构,3攻击有一定的数量,4如果存在这个组织,他们很低调,那可能使用海马(Seahorse)称呼他们更为贴切。

  

样本分析

  绿盟科技威胁响应中心在日常监测中获取到了该组织的一些木马样本,考虑到国内用户的使用习惯,选择了一个具有代表性的加密木马(Encrypting Trojan horse)进行分析,通过分析可以看到其完整的执行过程。样本通常是一个可执行文件,可能其图标类似word.exe程序,执行后会生成两个比较的关键的文件qq.exe以及Bundle.rdb文件。

  

 随后向IP地址193.169.244.73发起连接

  C9[9{5CIRBF38K@VHFEJWFO

 通过追踪对应的IP地址,发现其所在区域及绑定域名来自乌克兰,目前域名页面获取已经失效,但不排除有相关的反追踪技术手段。而从过去的持续跟踪情况来看,美国和乌克兰的域名较多。

    

    样本整个完整的执行过程如下:

  1 点击之后样本会释放出形如XXXX.tmp的文件并运行;

  2 该文件首先会释放一个正常的doc文件运行,用以迷惑普通用户;

  3 然后释名为qq.exe和Bundle.rdb的两个文件;

  4 用户一旦运行了”qq.exe”;

  5 这个李鬼就会将Bundle.rdb文件注入到一个僵尸进程中;

  6 Bundle.rdb实现与攻击者的服务器进行交互。

  

   下面我们将其中的一些追踪的技术细节呈现出来,通过这些细节呈现,有利于后续对该木马进行查杀和防护,以及为整体分析攻击组织的行为提供信息及数据支撑。

  木马样本入口分析

  样本信息

  QY}S9@$_0)X38ZS4VE}}$SM 5W(9[S3U1ZICT(FM~LI]9ME 从截获的样本来看,该样本伪装为word文档,引诱用户去点击,而传播途径也主要通过邮件传输,U盘拷贝等形式传播。先检查该样本有没有加壳。

  

    也就是说该样本并没有采用传统的加壳技术来躲避查毒软件的查杀,而是采用了其他加密的方式来绕过扫描。

  查找木马程序入口

  2E@Q3[MM0TT]5W3H5A)JH9P

    上图是IDA反汇编后,截取的winmain函数的主要部分,从图中大体可以看出该样本运行时会检测命令参数开始部分是否含有”--ping”字符串。如果有该参数会直接进入SUB_40CF20函数中运行;如果没有该参数,之后会创建临时文件,并通过CreateProcessW函数以新进程的方式启动该临时文件(也就是子体)。

  接下来我们分析两个方面:

  • 关注该木马(母体)创建的是什么临时文件(子体),子体的启动参数是什么(图中给出的commandline),

  • 如果母体没有参数“--ping”情况,在sub_40cf20函数里面做什么动作

  母体执行过程

  分析母体入口

  分析到这里,我们只知道该样本要带有”--ping”,但是还不知道到底有什么参数;那么能做的就是直接在虚拟机中启动它,不需带有任何参数,根据我们的静态分析可知,这种情况下会先生成一个子体,然后通过CreateProcessW来启动该子体.

  启动windbg,虽然知道了母体里面有winmain函数,但是在没有符号文件的情况下windbg还不能识别出winmain入口函数,所以在windbg加载母体后,需要找到一个断点来动态调试winmain函数。通过IDA反汇编知道,在winmain函数里面先是调用了一个API函数GetComputerNameA。

  

   在运行G命令号会断在此处,如下图所示

  KT~71{ZZH]_[UBJUC[7KP8J

   查看该函数的参数

  H@UO0}@RLH8B{H_]5$085$D

    用GU命令该函数运行完成后,可以看到该函数已经取得了主机名,如下图:

  $5$FEEHFI$Q52R9DF7V]4GN

    对于虚拟机系统:

  

    接下来会将大写字母变成变成小写,如下图

  LDP6P@000%FQ@UCW@$[)J$6

     转换后的结果:

  

    之后会通过CoInitialize函数告诉Windows以单线程的方式创建com对象,CoInitialize并不装载COM 库,它只用来初始化当前线程,让线程注册一个套件,而线程运行过程中必然在此套件。如下图:

  4{CCRLC[7U0]UP8%T]QCU6U

    母体如何产生子体

  下面的动作就是要判断它启动时是否带有参数,如果没有参数就会在临时文件夹建立一个文件

  MYXJ{3GCF6I2XZ3ANPZ(}MO

     显示获取当前用户的临时目录,之后会在该目录下产生一个随机文件名。

  

    在创建了临时文件后,接着就会先得到母体文件,同时产生一个随机字符串,该随机字符串会作为将来子体启动时参数部分,之后将释放产生的子体(前面只是产生临时文件还没有写入数据,就是要写入数据,写入的大部分内容还是母体的数据),同时在构造出CreateProcessW函数启动子体程序时的参数部分。入下图

  

    子体躲避杀毒软件

  当产生新的文件时,杀毒软件通常都有有所觉察,为了能躲避传统杀毒软件的查杀,在生成子体时,利用了加密技术对子体做了块加密。下面是函数SUB_40AFF0产生随机字符串的主要过程,

  

    由下图可知,在复制母体过程中对母体本身先做了处理,函数SUB_40CEA0调用SUB_40CB30,该函数在复制写入之前对母体做的处理,调用过程和处理过程如下图:

  GJDUWZ0Y)T[78HR5}E7J4X8

    接下来就是要创建一个子进程(子体),同时检查启动的该子体和参数

  P(M@6WH[7GE)V(M2]RZA8]F HTR)D8T9ZC]4@X$RP%XQ[~R

    从上图可知createprocessw第一个参数是”c:\Users\home\AppData\Local\Temp\DBE3.tmp”,第二个参数是” "C:\Users\home\AppData\Local\Temp\DBE3.tmp" --pingC:\ocean est.exe 98A92D9A03B32BBB789802827DD0F5FB245F07A28BE4E9251E55C06A43DAA994A0852C6623D4FEB93139B4A028463B7BF27F727372E5813871AFD7D01AB44430”

  也就是子体名字叫DBE3.tmp(在多次调试过程中,每次产生的临时文件都不一样),产生的随机字符串实在太长了。

123下一页

本文源自: 环亚国际