环境:
Win 7 x32 专业版
工具:
Exeinfope、火绒剑、PCHunter32、Wireshark、OD、IDA、ImpREC
样本信息:
文件: Shipping Documents_pdf.exe
大小: 585728 bytes
MD5: 39472797F6E85849B9FD0E3C5D939681
SHA1: 07395D87B1F558C968D83E2F546E9C9874C9B706
SHA256:11d68fdd3d5011259d6fb21d0366efa80a27bd68a8ae559e8c5cd3b67693c3fe
CRC32: B666D2BE
一题面试题,见笑了,如有错误请各位朋友斧正。
首先开始
行为分析
行为分析可能有些主观臆断,或者猜测,可能不准确或者是完全错误的,但是至少能给我们一点线索和思路
扫一下看看,没有发现特别的信息
拖火绒剑里看一下行为
好像试试和设置代理服务器有关,看一下参数
下载到了一个脚本
还有github的地址
还有一些可能是窃取浏览器信息的行为,但是却没有保存或者通讯的行为
打开了一些设备可能是在检查通讯状况
还有一些打开键值,打开文件的操作,感觉都是像在判断运行环境
然后运行一段时间就主动退出了程序
IDA静态分析了一下也没看出什么
使用OD动态调试看看吧,跑了几次,发现代码段会被改变,在代码下写入断点,没断下来,可能有反调试,然后尝试VirtualAlloc下断点有没有解密出新的PE,然后发现一直在申请,取消了,跑起来后发现代码段的写入断点断了下来
清0
重新写入
CALL0x41A1F8就没有返回了
设置为OPE,dump,然后修复IAT
修改完成后dump,下来发现
变成了Delphi的程序了
IDA看一下
其中两个应该是库函数,主要分析4186C4看看
获取了GUID
获取版本
处理完成后
像base64
解密出了个地址
解密
像是加密了
后面有一段是IDA没有反汇编出来的那段分析 大概流程是这样
InternetCrackUrlA 分解URI http://sg-fujitsu.com/oshimili/index.php
InternetOpenA 返回一个有效句柄 该句柄将由应用程序传递给接下来的WinINet函数
InternetSetOptionA 设置Internet选项 6=INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT
InternetSetOptionA 设置Internet选项 5
InternetConnectA 建立 Internet 的连接 sg-fujitsu.com 服务类型3=HTTP 成功返回非0
HttpOpenRequestA 创建HTTP请求句柄,把请求参数送到HTTP服务器 请求POST /oshimili/index.php
HttpSendRequestA 将指定的请求发送到HTTP服务器 发送的是上面获取的信息总的加密数据
InternetReadFile HttpOpenRequest函数打开的句柄中读取数据
InternetCloseHandle 关闭一个Internet句柄
call sub_417820()
sub_417820()
{
获取了 wsock32.dll 的函数
WSAStartup Windows异步套接字的启动命令
socket 创建套接字 参数:2 1 0
gethostbyname 回对应于给定主机名的包含主机名字和地址信息的hostent结构的指针 参数 :sg-fujitsu.com 这里获取失败了,可能域名失效了,成功了会进行一些socket通讯
}
这里下面调用了个gethostbyname获取失败了
不然可能有些socket通讯
struct hostent
h_name – 地址的正式名称。
h_aliases – 空字节-地址的预备名称的指针。
h_addrtype –地址类型; 通常是AF_INET。
h_length – 地址的比特长度。
h_addr_list – 零字节-主机网络地址指针。网络字节顺序。
h_addr - h_addr_list中的第一地址。
这里对比了一个地址的大小来确定下面的恶意代码是否执行,但是地址是空的,判断失败了,经过回溯发现其实是
IDA里整体看这段
没看出来V162是传入sub17D84,但是在汇编里能看出来,这里IDA反汇编的有点错误
汇编里能看出来是传入了IDA里看到的V162,也能通过下面的参数推测出来
IDA对sub_41D84这个函数反汇编也有误,据我在OD里调试跟踪后面的流程大概是这样的
画出来的上面两步失败了,也就是请求没有返回相应的数据
现在有两个方法:
1.查找这个样本的攻击资料,然后自己搭设服务器尝试还原攻击
2.改掉判断,继续尝试分析
先尝试第一种
找到了一些资料,发现其实样本是Azorult病毒的变种:
最早发现在2016年,Azorult是一个特洛伊木马家族,通过垃圾邮件活动以恶意的宏文件形式攻击,近年攻击的频率非常高,而且变种非常迅速,攻击一般持续几天或者几个小时,攻击者搭设的主机就会失效。
但是从分析资料上来看,不论是攻击方式和病毒的架构,可以判断是同一个组织所为(据说组织为TA516),可以通过获取最新的样本的一些数据来尝试还原分析,或者直接分析最新的样本
这里由于时间的关系我选择第2种方法
改掉判断往下跑
解密的C2内容分为三部分。 </ n>标记内包含的部分包含48个用于信息窃取的合法DLL。 </ d>标记内的部分包含信息窃取的应用程序信息:应用程序路径,相关注册表和凭证文件名。 </ c>标记中的部分包含样本的C2配置,C2配置如下所示
“+”:启用特定的恶意功能。
“- “:禁用特定的恶意功能。
“I”:收集主机IP信息。
“L”:从远程服务器下载并执行文件
总的恶意行为大概分为12种,由于IDA反汇编的代码篇幅过长就不一下展开
1.窃取浏览器密码凭证;
2.窃取浏览器cookie、自动填充凭证,从FTP客户端、Email客户端窃取凭证;
3.窃取浏览器历史;
4.窃取比特币钱包;
5.窃取Skype聊天信息main.db;
6.窃取telegram凭证;
7.窃取steam凭证(ssfn)和游戏metadata(.vdf);
8.截图并发送给攻击者;
9.清除临时恶意软件;
10.从桌面收集文件;
11.发送GET请求到ip-api[.]com/json来获取主机IP信息;
12.下载和执行C2指定的文件;
信息偷取
样本会从32中浏览器中窃取凭证和用户数据,包括Chrome, Firefox和Qihoo 360等主流浏览器。为了从浏览器窃取凭证,样本会从C2响应中下载48个合法的dll文件到%AppData%\Local\Temp\2fd文件夹,是在sub_409668加载的
https://www.joesandbox.com/analysis/71598/0/irxml 在这里可以看到DLL的资料
这一动作的目的是加载nss3.dll和下面的函数:
sqlite3_open
sqlite3_close
sqlite3_prepare_v2
sqlite3_step
sqlite3_column_text
sqlite3_finalize
NSS_Init
PK11_GetInternal
KeySlotPK11_Authenticate
PK11SDR_Decrypt
NSS_Shutdown
PK11_FreeSlot
这些函数都用于复制敏感的浏览器信息。比如恶意软件会用sqlite3_*函数来获取Firefox浏览器历史信息,如下所示
使用nss3.dll中的APIs窃取Firefox敏感信息
下面是从保存的Chrome数据中窃取用户名和密码。恶意软件样本会在路径%LOCALAPPDATA%\Google\Chrome\User Data\下搜索Login Data。绕过搜索到,就复制Login Data文件到%AppData%\Local\Temp,并调用nss3.dll中的sqlite3_prepare_v2函数来窃取凭证
如下所示:
从窃取的浏览器凭证中选择字符串
恶意软件样本也会从前面提到的浏览器中提取cookie、书签和自动填充信息。凭证信息保存在PasswordsList.txt,cookies保存到CookieList.txt
样本还会从窃取以下加密货币钱包:
Ethereum
Electrum
Electrum-LTC
Jaxx
Exodus
MultiBitHD
恶意软件会找到含有加密货币钱包敏感信息的特定文件。比如,下面就是样本尝试在Coins\MultiBitHD中找到并发送mbhd.wallet.aes文件
恶意软件样本会从主流应用中窃取凭证和用户数据,包括Thunderbird, FileZilla, Outlook, WinSCP, Skype, Telegram, Steam。样本也会窃取桌面的文件。下面是样本从%appdata%\Telegram Desktop\tdata目录中找到D877F783D5*.map*文件来从Telegram中窃取敏感信息。
恶意软件样本会收集用户信息,包括当前进程,安装的软件,系统语言和时区。窃取的凭证和用户信息都会发送给C2。下面是收集的一些系统信息
恶意软件上传文件到C2响应中的路径。
发送GET请求到ip-api[.]com/json,来获取受害者主机IP信息。保存json响应到ip.txt。
收集以下信息,保存为system.txt:
机器GUID
Windows产品名
用户名
计算机名
系统架构
屏幕宽和高
系统语言
当前时区
CPU核数
调用CreateToolhelp32Snapshot来获取当前进程列表
显示版本
安装的软件(Software\Microsoft\Windows\CurrentVersion\Uninstall\)
获取当前账户权限
执行指定文件
攻击者可以通过Create Process或ShellExecute远程控制受感染的系统执行任意文件。恶意软件还访问恶意URL来获取文件
Azorult新变种还可以以本地系统权限执行恶意软件。通过以下逻辑来检查当前SID和token
如果当前级别是local_system
调用WTSQueryUserToken和CreateProcessAsUser来创建一个系统权限的新进程
检查SID和token
以本地系统权限创建进程
擦除痕迹和删除文件
恶意软件会擦除%temp%\2fda中的所有文件,并根据C2命令删除文件
根据C2命令删除文件
总结:
预防就是不要轻易打开不明邮件发送的文件,禁用office宏,及时升级系统和浏览器。
查杀可以通过MD5和静态字符串分析识别特征。
参考:
New Wine in Old Bottle: New Azorult Variant Found in FindMyName Campaign using Fallout Exploit Kit
https://unit42.paloaltonetworks.com/unit42-new-wine-old-bottle-new-azorult-variant-found-findmyname-campaign-using-fallout-exploit-kit/
Deep analysis of AZORult
https://blogs.quickheal.com/86983-2/