揭秘Patchwork APT攻击-恶意软件样本BADNEWS
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、参考
【翻译稿件】揭秘Patchwork APT攻击 :一个与中国南海和东南亚问题相关的网络攻击组织
https://www.leiphone.com/news/201607/imUFuYNRqPU9sKRO.html
揭秘Patchwork APT攻击-恶意软件样本BADNEWS的更多相关文章
- 带你走进二进制-一次APT攻击分析
原文:https://osandamalith.com/2017/06/04/apt-attack-in-bangladesh/ 由prison翻译整理,首发i春秋 引言; 这是一次来自遥远国 ...
- 攻击链路识别——CAPEC(共享攻击模式的公共标准)、MAEC(恶意软件行为特征)和ATT&CK(APT攻击链路上的子场景非常细)
结合知识图谱对网络威胁建模分析,并兼容MITRE组织的CAPEC(共享攻击模式的公共标准).MAEC和ATT&CK(APT攻击链路上的子场景非常细)等模型的接入,并从情报中提取关键信息对知识图 ...
- APT攻击基础科普
0x00 APT的历史起源背景 APT这个词汇最早起源于:2005年英国和美国的CERT组织发布了关于有针对性的社交工程电子邮件,放弃特洛伊木马以泄露敏感信息的第一个警告,尽管没有使用“APT”这个名 ...
- < APT 攻击>看起来是 .PPT 附件,竟是 .SCR !!
趋势科技以前在2013年下半年度目标攻击综合报告里指出,发现了好几起APT攻击-高级持续性渗透攻击 (Advanced Persistent Threat, APT) /目标攻击相关的攻击活动. 趋势 ...
- 从kill-chain的角度检测APT攻击
前言 最近一直在考虑如何结合kill chain检测APT攻击.出发点是因为尽管APT是一种特殊.高级攻击手段,但是它还是会具有攻击的common feature,只要可以把握住共同特征,就能进行检测 ...
- 从防御者视角来看APT攻击
前言 APT防御的重要性毋庸讳言,为了帮助各位师傅在防御方面建立一个总体认识,本文会将APT防御方法分为三类,分别是:监控.检测和缓解技术,并分别进行梳理,介绍分析代表性技术.这一篇分析现有的监控技术 ...
- 水坑式攻击-APT攻击常见手段
所谓“水坑攻击”,是指黑客通过分析被攻击者的网络活动规律,寻找被攻击者经常访问的网站的弱点,先攻下该网站并植入攻击代码,等待被攻击者来访时实施攻击. 水坑攻击属于APT攻击的一种,与钓鱼攻击相比,黑客 ...
- 初探APT攻击
首发于i春秋 作者:joe 所属团队:Arctic Shell 团队博客地址:https://www.cnblogs.com/anbus/ 0x1:关于APT的相关介绍: APT是 ...
- 初探APT 攻击
作者:joe 所属团队:Arctic Shell 本文编写参考: https://www.freebuf.com/vuls/175280.html https://www.freebuf. ...
随机推荐
- 洛谷 P1972 [SDOI2009]HH的项链 解题报告
P1972 [SDOI2009]HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断 ...
- 【uoj129】 NOI2015—寿司晚宴
http://uoj.ac/problem/129 (题目链接) 题意 给出2~n这n-1个数,求选2个集合,使得从两集合中任意各选取1个数出来它们都互质.求方案数. Solution PoPoQQQ ...
- yum报错Segmentation fault
yum install 安装一个包,提示 Segmentation fault,可以确定的是这个源肯定是可用的. 经查询,是 libz 这个库存在多个版本,导致冲突. # ldconfig -v | ...
- Java之字节数组和字符串的转换问题
今天在使用字节流复制图片的时候发现一个问题,就是将字节数组转化为字符串的时候会出现长度不同的问题.这其实是个错误的操作. public static void main(String[] args) ...
- Android ListView 几个重要属性
Android ListView 几个重要属性http://blog.csdn.net/avenleft/article/details/7334060 android:transcriptMode= ...
- 【枚举&数据结构】【P2484】 [SDOI2011]打地鼠
Description 给定一个网格,每个格子上有一个数字.一次操作可以将 \(r~\times~c\) 的一块矩形的数字减去 \(1\).必须保证这个矩形中的数全部为正.每次操作的 \(r\) 和 ...
- ssl证书生成与验证
要做这件事情的起因在于,代码的升级包放在一个https的服务器上,我们的设备要实现升级,则是通过wget 获取https上的升级包,并且要实现验证证书的功能,这样可以防止设备被恶意篡改升级成其他文件包 ...
- springcloud之Hystrix
1.Hystrix出现的背景 从上面看来,Hystrix避免了雪崩效益,对于失败的服务可以快速失败. 2.为了解决雪崩效应的解决方案: (1)超时机制 (2)断路器模式Hystrix 3.Hystri ...
- Lowest Common Ancestor in a Binary Tree
二叉树最低公共祖先节点 acmblog If one key is present and other is absent, then it returns the present key as LC ...
- css基础--简单介绍css
--引入 什么是css? CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解 ...