Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:15853 篇
已收录公众号数量:90 个
本站文章为爬虫采集,如有侵权请告知
本周热门文章
Dibrary 第二季——好书推荐预告   2020.11.26 17:54:30  33
我拿到月薪3W的offer了   2020.11.29 22:20:04  31
CVE-2019-11580 RCE漏洞分析   2020.11.29 15:01:02  31
千万别把钱放在余额宝里!!!   2020.11.27 19:00:58  31
CVE-2020-14882​&14883:Weblogic RCE复现   2020.11.27 17:40:52  31
MySQL 漏洞利用与提权   2020.11.24 15:00:30  31
天融信科技集团正式完成公司更名   2020.11.26 10:45:21  30
已收录微信公众号
网安寻路人 网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
APT-32(海莲花)样本 分析报告
本文来自公众号:木星安全实验室   2019.08.13 15:57:09


1 样本概况

1.1 样本信息

病毒名称:88eae0d31a6c38cfb615dd75918b47b1.dll

所属家族:海莲花

MD5:88eae0d31a6c38cfb615dd75918b47b1

1.2 测试环境及工具

环境:Windows 7 SP1 x86

工具:IDA,OD,X64Dbg,火绒剑


2 具体行为分析

2.1 主模块

该dll导出了一个函数GetCurrentThemeName,该函数的主要功能为加载被硬编码的ShellCode。

该导出函数执行了SetErrorMode函数后,就调用了包含恶意代码的10001040处的函数,SetErrorMode函数可以用做反沙箱,但是从代码上来看似乎并没有相关的检测代码。

该函数将a6aaaaabzgkfjym处的地址传给ECX,而a6aaaaabzgkfjym处的数据是被base64编码过后的ShellCode。

动态调试得知,获取到该段地址数据后,就进行 base64 解码

解密完成后,会调用10001230处的函数。

该函数内部首先使用VirtualAlloc函数申请了大小为7c4d5的内存空间。

申请到的地址为:0x1500000

并将eax的值传给esi,而eax的值是刚刚申请到的地址,将esi的值压入堆栈当中,调用6ae4cb20函数,该函数会将解码后的ShellCode复制到新申请的地址上。

6ae4cb20函数内部,调用的qmemcpy函数,拷贝缓冲区数据。

随后call了esi的值,而esi的值是解密后的shellcode的地址,即内存加载shellcode,无文件落地攻击。


2.2 第一段ShellCode

第一段shellcode的开头代码特征与海莲花组织使用的shellcode高度吻合,该段shellcode中夹杂着代码混淆。

基本每段shellcode的开头都是通过Kernel32.dll获取LoadLibrary和GetProcAddress,当获取到之后使用API就可以通过这2个API来动态获取了。

随后申请内存空间 ,大小为e9a88

随后会将硬编码的第二代Shellcode解压缩,并复制到申请的内存中去。

当解压完成后会使用CreateThread创建线程,去0x1620000处执行代码,而0x1620000则是之前申请用来存放解压的第二段shellcode的内存地址。


2.3 第二段ShellCode

第二段shellcode的开头与第一段一样,很明显的海莲花组织使用的。

与第一段shellcode相同,通过kernel32获取LoadLibrary和GetProcAddress。

调用getprocaddress,获取virtualalloc的函数地址,eax是要获取的函数名称,ebx则是kernel32的基址。

以相同的方法获取virtualfree的函数地址。

获取virtualprotect的函数地址。

使用loadlibrary,加载msvcrt.dll

获取memcpy的函数地址。

获取getcommandline的函数地址

获取allocconsile的函数地址。

获取getconsolewindows的函数地址。

加载kernelbase.dll。

加载user32.dll。

获取wsprint的函数地址。

申请新的内存地址。

使用wsprintfa将硬编码的路径与配置文件,输出到新的缓冲区中。

加载ucrtbase.dll。

调用virtualprotect修改0x15dff10处的内存属性为0x40(读,写,执行)。

使用memcpy复制0x15dff04处的数据给0x15dfe10,大小为0xb。

申请新的内存地址,地址为0x15e0000。

使用memcpy拷贝内存到申请的新地址上去,很明显,这个是一个可执行文件,也就是PE文件

然后调用之前在内存中展开的PE文件,该oep特征比较明显VC编译的exe。


2.4 内存中加载的嗅探器

在该嗅探器执行后,首先将从指定文件中读取配置,使用Base64对其进行解码并将其解析为内存中结构,第一行忽略,其他则可以指定一个参数。

在嗅探器的代码模块也找到了相应的解析模块。

如果在配置中指定了“-sniff”参数,会将自身添加到防火墙白名单中去并禁用注册表中每个网络适配器的Large Send Offload属性:

添加Windows防火墙规则:

netsh advfirewall firewall add rule name=\"Core Networking - Router Solicitation\" dir=in action=allow program={self_path} enable=yes

禁用网络适配器的LargeSend Offload属性:

wmic path win32_networkadapter where index=%d call disable

随后嗅探器从wpcap.dll导入API,将负责创建ARP投毒和DNS欺骗的线程。

该嗅探器为了能够获取SSL的加密流量,使用了WolfSSL的开源库和单独的证书和私钥文件执行SSL劫持,同时建了一个内部WolfSSL服务器,监听65000-65535范围内的第一个可用端口:

该嗅探器的作者可谓是非常有心,只收集特定的敏感信息,这样可以减少恶意软件被发现的概率以及减少恶意软件的数据传输量,从该嗅探器的协议与端口可见,支持的协议与端口还是非常多的。

将恶意软件可以嗅探的协议与端口整理如下:

接口:

端口:

标头:

CSniffFtp

21、990

ABOR ACCT ADAT ALLO APPE AUTH CCC CDUP  CONF CWD DELE ENC EPRT EPSV FEAT HELP HOST LANG LIST LPRT LPSV MDTM MIC MKD  MLSD MLST MODE NLST OPTS PASS PASV PBSZ PORT PROT PWD QUIT REIN REST RETR RMD  RNFR RNTO SITE SIZE SMNT STAT STOR STOU STRU SYST TYPE USER XCUP XMKD XPWD  XRCP XRMD XRSQ XSEM XSEN 230

CSniffImap

143、993

CAPABILITY LOGOUT STARTTLS AUTHENTICATE  LOGIN SELECT EXAMINE CREATE RENAME LSUB STATUS APPEND CHECK CLOSE EXPUNGE FETCH  STORE UID

CSniffLdap

389、636、10389、01636

多种标头

CSniffNntp

119

AUTHINFO USER AUTHINFO PASS ANONYMOUS 281

CSniffPop

110、995

RCEV RCVD RSET +OK USER PASS RETR QUIT

CSniffSmb

445

多种标头

CSniffSmtp

25、465

HELO MAIL RCPT SEND SOML SAML VRFY EXPN  TURN FROM

CSniffTds

1433

SELECT name, password_hash FROM  master.sys.sql_logins where is_disabled = 0; -- priv

CSniffTelnet

23

Login Failed login: password:

SniffHttp2

80、443

多种标头

每个嗅探器的类接口都包含两种方法,分别用于传入和传出数据包中提取的敏感信息,而提取方法则是依赖于明文搜索标头字符串以实现凭证窃取。

最后该嗅探器还有一个未使用的C2地址,该地址被base64编码后,硬编码在.data段。

解码后为search.webstie.net。


3 威胁指标(IOCs)

域名:

search.webstie.net

md5:

88eae0d31a6c38cfb615dd75918b47b1