某攻防钓鱼样本分析

https://xz.aliyun.com/news/91931

基础静态分析

拿到样本解压目录看只有lnk和一个Word文档,基本确定为LNK钓鱼马了,看下lnk执行的命令:如下图

图片[1]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


打开查看目录结构发现LNK执行命令指向exe,查看属性发现存在有效签名,判断为白加黑木马,目录中文件如下:

图片[2]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
data_1.db    猜测为shellcode
Script.dll   有效签名白DLL
Setup.exe    有效签名白文件
SetupXML.dll 无签名黑DLL

微步沙箱检测

图片[3]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

die分析

图片[4]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

pestudio分析

图片[5]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

简要总结:

钓鱼木马、微步检测到LNK告警但黑DLL没有报毒,VT静态检测也没报毒,无加壳,shellcode做了分离处理,免杀效果不错,有一线红队水准!

微步检测:1/28检出率

VT检测:0/71检出率

基础行为分析

图片[6]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


DLL导入表挺多高危函数,DLL导入表没有做隐藏处理。

CreateFileW + GetFileSize + ReadFile  //获取文件写入
VirtualAlloc + WaitForSingleObject   //内存执行操作
GetSystemInfo + GetSystemTimeAsFileTime + Sleep  //猜测反沙箱

简要总结

从导入表来看,基本确定为黑DLL,再根据使用的导入函数,熟悉微软API的师傅大概明白这个木马做了什么操作,那么下面就来详细分析!

样本详细分析

第一次用户执行样本

首先进行初始化反沙箱操作:线程状态检查、退出代码验证、sleep延时。

图片[7]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
图片[8]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


sub_10004330()函数下图进行移动木马文件到C:ProgramDataSangfor目录进行隐藏:

图片[9]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


下面木马样本进行powershell维权,进行持久化操作,创建名为WpdfUpdate_XXX的Windows计划任务,每隔59分钟执行一次白文件程序(Setup.exe)

图片[10]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


维权成功后会创建标记文件success,成功维权。最后执行C:ProgramDataSangfor目录中的Setup.exe,退出当前进程。重新执行一遍Setup.exe。

图片[11]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
图片[12]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

第二次样本自执行

首先进行初始化反沙箱操作后,判断当前木马是否在C:ProgramData,在的话执行下一步shellcode上线:sub_10003620()函数。

图片[13]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


下图获取路径C:ProgramDataSangfor。

图片[14]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


首先尝试加载data.db文件,如果加载成功就把data.db的shellcode写入到内存中。

图片[15]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


如果找不到就尝试寻找分片文件 data_1.db ~ data_9.db,把文件中的shellcode写入到内存中。

图片[16]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


然后从内存中进行解密shellcode,16字节块XOR加密,可能使用CBC模式。

图片[17]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
图片[18]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

总结来看sub_10003620()函数负责从本地C:ProgramDataSangfor目录文件系统中加载并解密恶意shellcode代码的。

下图就是加载解密后的shellcode进行线程执行上线,但木马逻辑中还有备用加载error.log文件的shellcode上线操作,进入的逻辑是要求找不到data_1.db等文件才会进入。

图片[19]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
图片[20]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

总结分析

进程链信息:

图片[21]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
首次执行 (用户运行恶意程序)
    ├─ 休眠2秒
    ├─ 复制自身到C:\ProgramData\Sangfor\
    ├─ 创建计划任务持久化
    └─ 返回0,不执行恶意代码
    
第二次执行 (或者计划任务触发)
    ├─ 检查线程状态
    ├─ 延迟对抗沙箱
    ├─ 尝试加载data_x.db(加密Shellcode)
    ├─ 失败则加载error.log(明文Shellcode)
    ├─ 分配可执行内存
    ├─ 创建线程执行Shellcode
    └─ 等待执行完成

动态样本分析

写到这里其实已经明了,剩下就是提取解密后的shellcode即可!

断点到执行内存部分,找到这块要执行的解密内存。

图片[22]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享


转储内存即可得到shellcode文件。

图片[23]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

逮捕CS

域前置:douying.com

图片[24]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
图片[25]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享
图片[26]-某攻防钓鱼样本分析-渗透云记 - 专注于网络安全与技术分享

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容