【流行威胁追踪】深度分析DarkSide勒索软件

  • A+
所属分类:逆向工程


1.样本简介


2020年8月监测到一个新的流行勒索软件家族出现,且自称为DarkSide,得知该运营团队同样通过定点攻击机构来获利。深信服安全团队在捕获相关样本后对其进行了深度分析发现暂无缺陷,无法采用非正常方式对其解密。


该勒索软件文件加密结果如下,后缀名是不唯一的,采用与受害机器信息有关的信息来随机选取。

【流行威胁追踪】深度分析DarkSide勒索软件



2.详细分析


样本采用VS2015平台编写,编译时间为2020年8月8日,如下。

【流行威胁追踪】深度分析DarkSide勒索软件


采用动态API方式进行调用,调用的API函数如下。


ntdll_12._wcsicmpntdll_12.wcscpyntdll_12.wcscatntdll_12.wcsstrntdll_12.wcsrchrntdll_12.wcslenntdll_12._wcslwrntdll_12.swprintfntdll_12.RtlInitUnicodeStringntdll_12.LdrEnumerateLoadedModulesntdll_12.RtlRandomExntdll_12.RtlComputeCrc32ntdll_12._allshrntdll_12._alldivntdll_12._allmulntdll_12.ZwQuerySystemInformationntdll_12.ZwQueryInformationFilentdll_12.ZwQueryInformationProcessntdll_12.strlenntdll_12.RtlGetVersionntdll_12.RtlWow64EnableFsRedirectionEx
kernel32.LoadLibraryAkernel32.FreeLibrarykernel32.CreateFileWkernel32.CreateProcessWkernel32.CreateThreadkernel32.ReadFilekernel32.WriteFilekernel32.GetFileSikernel32.CloseHandlekernel32.OpenMutexWkernel32.CreateMutexWkernel32.GetUserDefaultLangIDkernel32.GetSystemDefaultUILanguagekernel32.GetCommandLineWkernel32.GetModuleFileNameWkernel32.GetShortPathNameWkernel32.GetEnvironmentVariableWkernel32.GetWindowsDirectoryWntdll_12.RtlInitializeCriticalSectionntdll_12.RtlEnterCriticalSectionntdll_12.RtlLeaveCriticalSectionntdll_12.RtlDeleteCriticalSectionkernel32.CreateIoCompletionPortkernel32.GetQueuedCompletionStatuskernel32.PostQueuedCompletionStatuskernel32.OpenProcesskernel32.CreateToolhelp32Snapshotkernel32.Process32FirstWkernel32.Process32NextWkernel32.SetFileAttributesWkernel32.GetLogicalDriveStringsWkernel32.GetDriveTypeWkernel32.WaitForSingleObjectkernel32.GetSystemDirectoryWkernel32.IsWow64Processkernel32.TerminateProcesskernel32.Wow64DisableWow64FsRedirectionkernel32.Wow64RevertWow64FsRedirectionkernel32.SetThreadExecutionStatekernel32.GetNativeSystemInfontdll_12.RtlAllocateHeapntdll_12.RtlReAllocateHeapkernel32.HeapFreekernel32.GetProcessHeapkernel32.FindFirstFileExWkernel32.FindNextFileWkernel32.FindClosekernel32.Sleepkernel32.MoveFileExWkernel32.WaitForMultipleObjectskernel32.SetFilePointerExkernel32.InterlockedIncrementkernel32.GetCurrentProcessIdkernel32.DuplicateHandlekernel32.TerminateThreadkernel32.GetExitCodeThreadkernel32.RemoveDirectoryWkernel32.DeleteFileWkernel32.WideCharToMultiBytekernel32.GetCurrentDirectoryWkernel32.SetCurrentDirectoryW
advapi32.OpenProcessTokenadvapi32.DuplicateTokenExadvapi32.ImpersonateLoggedOnUseradvapi32.GetTokenInformationadvapi32.LookupAccountSidWadvapi32.AdjustTokenPrivilegesadvapi32.OpenSCManagerWadvapi32.EnumServicesStatusExWadvapi32.OpenServiceWadvapi32.ControlServiceadvapi32.DeleteServiceadvapi32.CloseServiceHandleadvapi32.GetNamedSecurityInfoWadvapi32.SetNamedSecurityInfoWadvapi32.SetEntriesInAclWadvapi32.RegOpenKeyExWadvapi32.RegCreateKeyExWadvapi32.RegSetValueExWadvapi32.RegCloseKeyadvapi32.RegDeleteValueWadvapi32.RegFlushKey
shell32.CommandLineToArgvWshell32.ShellExecuteWshell32.IsUserAnAdminshell32.ShellExecuteExW
ole32.CoInitializeole32.CoUninitializeole32.CoGetObjectole32.CoInitializeSecurityole32.CoCreateInstanceole32.CoSetProxyBlanket
oleaut32.VariantClear
mpr.WNetOpenEnumWmpr.WNetEnumResourceWmpr.WNetCloseEnum
IPHLPAPI.GetAdaptersInfo
shlwapi.PathIsDirectoryWshlwapi.PathIsDirectoryEmptyW


加密过程会排除的文件夹如下:

$recycle.bin.config.msi.$windows.~bt.$windows.~ws.windows.appdata.application data.boot.google.mozilla.program files.program files (x86).programdata.system volume information.tor browser.windows.old.intel.msocache.perflogs.x64dbg.public.all users.default


加密过程会排除的文件如下:

.autorun.inf、boot.ini、bootfont.bin、bootsect.bak、desktop.ini、iconcache.db、ntldr、ntuser.dat、ntuser.dat.log、ntuser.ini、thumbs.db


加密后缀如下:

.386.adv.ani.bat.bin.cab.cmd.com.cpl.cur.deskthemepack.diagcab.diagcfg.diagpkg.dll.drv.exe.hlp.icl.icns.ico.ics.idx.ldf.lnk.mod.mpa.msc.msp.msstyles.msu.nls.nomedia.ocx.prf.ps1.rom.rtp.scr.shs.spl.sys.theme.themepack.wpx.lock.key.hta.msi.pdb


搜索时会结束的服务名称如下:

backup.here_backups.sql.sqlite.vss.sql.svc$.memtas.mepocs.sophos.veeam.backup


搜索时会排除的进程名称如下:

.vmcompute.exe.vmms.exe.vmwp.exe.svchost.exe.TeamViewer.exe.explorer.exe.sql.oracle.ocssd.dbsnmp.synctime.agntsvc.isqlplussvc.xfssvccon.mydesktopservice.ocautoupds.encsvc.firefox.tbirdconfig.mydesktopqos.ocomm.dbeng50.sqbcoreservice.excel.infopath.msaccess.mspub.onenote.outlook.powerpnt.steam.thebat.thunderbird.visio.winword.wordpad.notepad


通过解密,获取的勒索信如下。

【流行威胁追踪】深度分析DarkSide勒索软件


勒索信中附带的用户Key,如下。

【流行威胁追踪】深度分析DarkSide勒索软件


判断是否为管理员权限,采用"SoftwareClassesexefileshellopencommand","C:Windowssystem32slui.exe"设置注册表项值,利用slui程序劫持并绕过UAC机制。

【流行威胁追踪】深度分析DarkSide勒索软件

【流行威胁追踪】深度分析DarkSide勒索软件


在快速加密模式下一共开启4个线程进行协作,如下。

线程1

使用线程3产生的密钥对文件进行加密

线程2

将线程1的文件末尾写入加密的密钥数

线程3

对每个待加密的文件产生随机的密钥并使用内置的RSA公钥加密

线程4

将结束状态写入日志文件


得到加密文件后缀,如下。

【流行威胁追踪】深度分析DarkSide勒索软件


产生的日志文件命名:"LOG.38c3d708.TXT",会对勒索母体文件的内容计算CRC32后得到结果并拼接成Global508735bb4dc2cc5c86f67b08c223f381作为互斥量,之后利用PowerShell命令删除卷影服务。


powershell -ep bypass -c "(0..61)|%{$s+=[char][byte]('0x'+'4765742D576D694F626A6563742057696E33325F536861646F77636F7079207C20466F72456163682D4F626A656374207B245F2E44656C65746528293B7D20'.Substring(2*$_,2))};iex $s"


采用RtlRandomEx产生随机数,每个文件都存在唯一的密钥,如下。

【流行威胁追踪】深度分析DarkSide勒索软件

【流行威胁追踪】深度分析DarkSide勒索软件

【流行威胁追踪】深度分析DarkSide勒索软件

【流行威胁追踪】深度分析DarkSide勒索软件


读取文件的末尾倒数0x90个字节数据后只取0x80大小进行CRC32计算值,便于解密时进行比对是否正确解密。

【流行威胁追踪】深度分析DarkSide勒索软件


采用Salsa20算法进行加密,后续将0x90大小数据(被RSA加密后的密钥)写入文件末尾。

【流行威胁追踪】深度分析DarkSide勒索软件


加密完成,写入状态至日志文件。

【流行威胁追踪】深度分析DarkSide勒索软件


加密文件数据区域布局,如下。

【流行威胁追踪】深度分析DarkSide勒索软件



3.加密方式


采用RtlRandomEx产生随机数拼接得到0x40大小字节数据作为初始密钥,每个待加密文件都存在唯一的密钥,之后被内置的RSA-1024公钥进行加密,对文件采用Salsa20算法进行加密完成后,后续将0x90大小字节数据(被RSA加密后的密钥)写入文件末尾,由于RtlRandomEx为微软官方提供的安全随机数,以及RSA1024算法的公开特性,暂无法对其破解解密。



4.ATT&CK匹配

【流行威胁追踪】深度分析DarkSide勒索软件



5.威胁情报


HASH

f87a2e1c3d148a67eaeb696b1ab69133


发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: