1、前言

在2016年左右研究人员发现一个与东南亚和中国南海问题的APT攻击,该APT攻击利用MS Offcie系列漏洞通过钓鱼邮件的形式欺骗受害者点击木马。以美国在内的各国政府和公司为目标发送了大量的恶意代码样本 。

其中木马上线的方式是利用了白名单网站的方式。攻击者将控制端的IP地址加密后发表文章到开放有博客、论坛的合法网站上。利用这类网站的RSS订阅服务作为受控主机访问的地址,

受害者的主机会读取RSS订阅中留存有攻击者C2加密信息的帖子地址将攻击者的C2信息解密后建立网络连接。

这种白名单网站利用的上线方式非常巧妙,可以有效地混淆分析者的视线。报告里将这个用来攻击的恶意软件称为BADNEWS。

2、BADNEWS说明

BADNEWS能够执行任意命令,截图,服务端更新,下载文件、执行文件以及列目录操作。利用DLL加载的方式(dll side-loading)以实现免杀,如果目标有价值将会进行第二阶段恶意软件的部署。

DLL Side-Loading:通过加载DLL注入到一个合法签名JAVA程序中,释放一个二进制文件和一个加密VBScript脚本,在VBScript脚本运行的同时生成以下三个文件:


microscmgmt.exe MSVCR71.dll jli.dll

其中MicroScMgmt.exe用来加载DLL注入合法进程【javarmi.exe】的恶意程序,通过调用合法的【MSVCR71.dll】和恶意【jli.dll】达到执行恶意软件目的。

【MicroScMgmt.exe】一旦执行,将加载【jli.dll】,最终调用DLL组件中的jli_wildcardexpandclasspath_0。执行自身恶意代码。

加载DLL注入后将产生两个线程,一个线程负责键盘记录,另一个线程负责获取本地和映射硬盘驱动器文档。

长期驻留:通过在注册表中生成以下注册表项达到在受害者系统长期驻留的目的:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

C&C通信 :BADNEWS 中包含有获取远程C&C服务器指令的固定通信代码和方式,这些方式包括RSS订阅、GitHub ,论坛、博客和动态 DNS主机。

C&C运行机制:BADNEWS与C&C服务器之间建立连接之后,将会向C&C

3、上线代码加密与解密

  • 加密原理

恶意软件会从博客或RSS订阅的地址从网页中搜索并提取“ {{”内的字段以 获取C&C信息,“{{”之后的内容是以相同方式加密的C&C地址信息。

  • 解密方法

BADNEWS早期的C2上线IP加密方式都是Base64加密,通过把每字节循环右移3bit,然后以0×23进行异或操作,之后再以16进制内容进行Base64加密。新的BADNEWS变种还增加了一层Blowfish算法的加密。

通过对http://feeds.rapidfeeds.com/88604/的解密熟悉了一下密码解密的方法。

以下是对数据进行解密的一个Python脚本:badnews_decoder.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import base64
import binascii
import re
from Crypto.Cipher import Blowfish
from struct import pack rol = lambda val, r_bits, max_bits: (val << r_bits%max_bits) & (2**max_bits-1) | ((val & (2**max_bits-1)) >> (max_bits-(r_bits%max_bits))) ror = lambda val, r_bits, max_bits: ((val & (2**max_bits-1)) >> r_bits%max_bits) | (val << (max_bits-(r_bits%max_bits)) & (2**max_bits-1)) def unhexData(d): # 十六进制解密
if len(d) % 2:
d = d.zfill(len(d)+1)
return ord(binascii.unhexlify(d)) # 十六进制解密,然后将单个字符以ascii码的方式返回 def decodeDecrypt(data): # 传参 c945adaa8a656b8fc9c9a5aec56fe58a248ac96c650b848423
decdata = ''
for x in range(len(data)):
x = x*2
if x < len(data):
c = unhexData(data[x]) # 十六进制转ASCII码
add_num = unhexData(data[x+1])
c = c << 4 # 左移动4位
c = (c + add_num) & 0xff
c ^= 0x23 # 异或0x23
c = rol(c, 3, 8) # 运算
decdata += chr(c) # 恢复为Base64编码
data2 = base64.b64decode(decdata)
key = binascii.unhexlify("F0E1D2C3B4A5968778695A4B3C2D1E0F0011223344556677")
cipher = Blowfish.new(key, Blowfish.MODE_ECB) # Blowfish算法解密
dec = cipher.decrypt(data2) # 解密后的C2地址
return dec # 加密C2的Url列表
urls = [
"http://feeds.rapidfeeds.com/88604"
] for d in urls:
r = requests.get(d)
body = r.text
r = re.search("\[+\s*([a-zA-Z0-9\=]+)\]+", body) # 取值得到 [[[Yzk0NWFkYWE4YTY1NmI4ZmM5YzlhNWFlYzU2ZmU1OGEyNDhhYzk2YzY1MGI4NDg0MjM=]]]]
if r:
data = base64.b64decode(r.group(0)) # Base64解密得到c945adaa8a656b8fc9c9a5aec56fe58a248ac96c650b848423
print("[{}] Decrypted C2: {}".format(d, decodeDecrypt(data).split("\x00")[0])) # 输出解密后的IP地址

运行后的结果:

4、IOCs

  • 恶意Word文档SHA256哈希

a67220bcf289af6a99a9760c05d197d09502c2119f62762f78523aa7cbc96ef1 07d5509988b1aa6f8d5203bc4b75e6d7be6acf5055831cc961a51d3e921f96bd fd8394b2ff9cd00380dc2b5a870e15183f1dc3bd82ca6ee58f055b44074c7fd4 b8abf94017b159f8c1f0746dca24b4eeaf7e27d2ffa83ca053a87deb7560a571 d486ed118a425d902044fb7a84267e92b49169c24051ee9de41327ee5e6ac7c2
  • BADNEWS SHA256哈希

ab4f86a3144642346a3a40e500ace71badc06a962758522ca13801b40e9e7f4a 290ac98de80154705794e96d0c6d657c948b7dff7abf25ea817585e4c923adb2
  • C2服务器

185.203.118[.]115 94.156.35[.]204
  • Dead Drop解析器
hxxp://feed43[.]com/8166706728852850.xml 

hxxp://feed43[.]com/3210021137734622.xml 

hxxp://www.webrss[.]com/createfeed.php?feedid=49966

hxxp://feeds.rapidfeeds[.]com/88604/

4、参考

https://researchcenter.paloaltonetworks.com/2018/03/unit42-patchwork-continues-deliver-badnews-indian-subcontinent/

【翻译稿件】揭秘Patchwork APT攻击 :一个与中国南海和东南亚问题相关的网络攻击组织

https://www.leiphone.com/news/201607/imUFuYNRqPU9sKRO.html

揭秘Patchwork APT攻击-恶意软件样本BADNEWS的更多相关文章

  1. 带你走进二进制-一次APT攻击分析

    原文:https://osandamalith.com/2017/06/04/apt-attack-in-bangladesh/ 由prison翻译整理,首发i春秋   引言;   这是一次来自遥远国 ...

  2. 攻击链路识别——CAPEC(共享攻击模式的公共标准)、MAEC(恶意软件行为特征)和ATT&CK(APT攻击链路上的子场景非常细)

    结合知识图谱对网络威胁建模分析,并兼容MITRE组织的CAPEC(共享攻击模式的公共标准).MAEC和ATT&CK(APT攻击链路上的子场景非常细)等模型的接入,并从情报中提取关键信息对知识图 ...

  3. APT攻击基础科普

    0x00 APT的历史起源背景 APT这个词汇最早起源于:2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名 ...

  4. &lt; APT 攻击&gt;看起来是 .PPT 附件,竟是 .SCR !!

    趋势科技以前在2013年下半年度目标攻击综合报告里指出,发现了好几起APT攻击-高级持续性渗透攻击 (Advanced Persistent Threat, APT) /目标攻击相关的攻击活动. 趋势 ...

  5. 从kill-chain的角度检测APT攻击

    前言 最近一直在考虑如何结合kill chain检测APT攻击.出发点是因为尽管APT是一种特殊.高级攻击手段,但是它还是会具有攻击的common feature,只要可以把握住共同特征,就能进行检测 ...

  6. 从防御者视角来看APT攻击

    前言 APT防御的重要性毋庸讳言,为了帮助各位师傅在防御方面建立一个总体认识,本文会将APT防御方法分为三类,分别是:监控.检测和缓解技术,并分别进行梳理,介绍分析代表性技术.这一篇分析现有的监控技术 ...

  7. 水坑式攻击-APT攻击常见手段

    所谓“水坑攻击”,是指黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网站的弱点,先攻下该网站并植入攻击代码,等待被攻击者来访时实施攻击. 水坑攻击属于APT攻击的一种,与钓鱼攻击相比,黑客 ...

  8. 初探APT攻击

    首发于i春秋 作者:joe     所属团队:Arctic Shell 团队博客地址:https://www.cnblogs.com/anbus/   0x1:关于APT的相关介绍:     APT是 ...

  9. 初探APT 攻击

    作者:joe       所属团队:Arctic Shell 本文编写参考: https://www.freebuf.com/vuls/175280.html https://www.freebuf. ...

随机推荐

  1. TypeError: to_categorical() got an unexpected keyword argument 'nb_classes'

    在学习莫烦教程中keras教程时,报错:TypeError: to_categorical() got an unexpected keyword argument 'nb_classes',代码如下 ...

  2. DAY2-Python学习笔记

    1.迭代器:可以直接作用于for循环的对象统称为可迭代对象:Iterable,使用isinstance()判断一个对象是否是Iterable对象: >>> from collecti ...

  3. PGM学习之一

    一 课程基本信息 本课程是由Prof.Daphne Koller主讲,同时得到了Prof. Kevin Murphy的支持,在coursera上公开传播.在本课程中,你将学习到PGM(Probabil ...

  4. IoT固/软件更新及开源选项

    会出什么问题呢?大多数这些设备的设计都不像是被恶意攻击的目标. 嵌入式系统传统上被认为是稳定的产品, 但实施起来成本高昂, 因为投资回报率(ROI)在的周期比较长. 在过去一旦发货, 就很少需要更新这 ...

  5. Redis中国用户组|唯品会Redis cluster大规模生产实践

    嘉宾:陈群 很高兴有机会在Redis中国用户组给大家分享redis cluster的生产实践.目前在唯品会主要负责redis/hbase的运维和开发支持工作,也参与工具开发工作 Outline 一.生 ...

  6. Android proguard-rules.pro 混淆模板

    在../sdk/tools/proguard/目录下,其中包含了android最基本的混淆 ..\proguard-rules.pro  混淆文件配置模板: ############# 混淆模板 ## ...

  7. Linux crontab 命令格式与举例

    每五分钟执行  */5 * * * * 每小时执行     0 * * * * 每天执行        0 0 * * * 每周执行       0 0 * * 0 每月执行        0 0 1 ...

  8. 1003 Emergency(25 分)

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  9. 利用ansible来做kubernetes 1.10.3集群高可用的一键部署

    请读者务必保持环境一致 安装过程中需要下载所需系统包,请务必使所有节点连上互联网. 本次安装的集群节点信息 实验环境:VMware的虚拟机 IP地址 主机名 CPU 内存 192.168.77.133 ...

  10. linux网络编程框架

    OSI七层模型与TCP四层模型 OSI七层模型与TCP四层模型 BS和CS服务器架构 (1)CS架构介绍(client server,客户端服务器架构)(2)BS架构介绍(broswer server ...