Ficker
警惕程度 ★★★
影响平台: Windows 2000/7/8/10/ 95 /98/Me/NT/Server 2003/Server 2008/Vista/XP
病毒执行体描述
Ficker窃密木马具备多种窃密功能,包括窃取系统信息、窃取浏览器信息、窃取应用程序凭证、屏幕截图等功能,并且可以窃取多个加密货币钱包。该窃密木马通过检测计算机语言环境,如果为俄罗斯、乌兹别克斯坦、乌克兰、亚美尼亚、哈萨克斯坦、阿塞拜疆、白俄罗斯的语言环境,则不会执行恶意代码。2021年1月,该窃密木马开始在俄语黑客论坛上公开售卖,传播方式由于购买者的不同逐渐产生了变化,例如通过伪装成主题为DocuSign的Word文档进行传播。与此同时,多个攻击组织实施过该木马的分发。例如,Hancitor恶意软件在感染独立主机时,选择使用Ficker窃密木马窃取数据。
攻击者首先制作了一个推广在线国际象棋应用程序的广告。当用户点击广告时,会跳转到攻击者伪造的Mircosoft Store页面。网页会自动跳转到一个AWS亚马逊服务器,并下载一个名为“xChess_v.709.zip”的zip文件,压缩包内是伪装成“xChess3”国际象棋的Ficker窃密木马。
攻击者首先制作并投放了一个推广在线国际象棋应用程序的广告。当用户点击广告时,会跳转到攻击者事先伪造的Mircosoft Store页面。
攻击者设置网页延时2秒后,自动跳转到一个AWS亚马逊服务器,并下载一个名为“xChess_v.709.zip”的zip文件。
解压后,得到一个伪装成国际象棋应用程序的可执行文件,诱导用户执行。
样本分析
样本标签
样本详细分析
该样本运用Shellcode技术规避检测,样本中包含了大量对抗分析的技术,如进程镂空、代码自解密等。样本窃取系统信息、浏览器信息、应用程序凭证、屏幕截图、加密钱包等,并将窃取的信息回传到攻击者指定的C2服务器。
解密Shellcode
样本运行后,通过Shellcode技术规避检测,将Shellcode写入申请的内存空间并解码执行。
Shellcode解码完成后,样本会运行自身,创建一个挂起的进程,卸载该进程占用的内存,将解密完成的核心代码注入到新创建的进程里,最后恢复挂起的进程。攻击者使用这种进程镂空的攻击技术以规避杀软检测。
窃密回传
注入的核心代码是一个PE文件,运行后会创建一个名为“serhershesrhsfesrf”的互斥量。
检测计算机的语言环境,如果为以下国家的语言环境,则不会执行恶意代码。
访问www.ipify[.]org/查询外部IP地址,并将返回的信息下载到C:\ProgramData\kaosdma.txt。
获取系统用户名、系统版本、Windows序列号等信息。
窃取Web浏览器中的保存的用户名称、登陆凭证、Cookie等信息。
窃取多个加密货币钱包,如下表所示:
窃取Pidgin、Steam、Discord等应用程序客户端和FTP客户端中保存的登陆凭证。
对当前计算机上正在运行的活动应用程序进行截图。
将窃取的信息回传到攻击者指定的C2服务器188.120.251.192。
Ficker窃密木马于2020年10月末发现,并衍生多个版本,该家族其他版本曾下载其他流行远程控制木马。该窃密木马对用户的数据安全造成了极大的威胁,一旦感染,用户应及时清除,并且立即修改相关应用程序密码,通过反病毒扫描检查计算机中是否存在其他恶意软件。
预防和清除:
不要点击不明网站;打开不明邮件附件;定时经常更新杀毒软件病毒数据库,最好打开杀毒软件的病毒数据库自动更新功能。关闭电脑共享功能,关闭允许远程连接电脑的功能。安装最新的系统补丁。
FormBook
警惕程度 ★★★
影响平台: Windows 2000/7/8/10/ 95 /98/Me/NT/Server 2003/Server 2008/Vista/XP
病毒执行体描述
FormBook是一种恶意软件,旨在从受害者的设备窃取敏感信息,并接收控制命令,在该设备上执行额外的恶意任务。
一个FormBook有效负载被注入到一个新创建的进程AddInProcess32.exe中,相关的寄存器被设置为指向注入的FormBook的条目。之后,在执行API ResumeThread()之后,AMe8模块将调用入口点,这也是我将在这篇文章中开始的。
FormBook恶意软件的有效载荷文件是一个32位的Native Code PE文件(一个EXE文件),而不是一个.net模块。
在讨论FormBook主模块之前,我需要引入一个全局配置对象(ConfigObj)或配置块,它在整个FormBook恶意软件中经常被读取和写入。它占用0xC9C字节,其中包含许多配置选项,例如:
FormBook的基本地址,以及许多Dll模块(ntdll.dll, kernel32.dll, advapi32.dll等)
加密的Dll名称,如kernel32.dll和advapi32.dll等。
显示FormBook是否在分析设备中运行的标志组
许多使用字符串散列代码的加密块用于检索api
显示它是在32位还是64位平台上的标志
许多API地址(ExitProcess(),CreateProcessInternalW()等)
FormBook使用的反分析技术
1. 导入的api是隐藏的
在FormBook中,所有api都对分析师隐藏。它们由一个具有api名称散列代码的特殊函数检索。一些哈希码是由常量值给出的,一些是从ConfigObj解密的。
如您所见,图2.2所示的代码段是一个示例,它通过重命名的函数get_API_by_name_hashcode()获得两个api,它们的名称的哈希码是0C84882B8h =CoCreateInstance() and 44E954F9h =CreateDirectoryW()。
2. 复制ntdll.dll模块
DLL是Windows上提供NT内核api的内核层DLL。FormBook在其内存中部署了一个重复的ntdll.dll,提供内核api函数,而不是原来的阻止研究人员识别api的函数。图2.3显示了在上面的重复的ntdll.dll (0x810000)和在底部的原始加载的ntdll.dll (0x77140000)。
3.检测它是否在分析环境中运行
FormBook将从ConfigObj解密的列表中的预定义哈希码与正在运行的进程名哈希码进行比较。它使用参数SystemProcessInformation调用API ZwQuerySystemInformation()来将所有正在运行的进程的信息收集到一个链接结构中。
然后,它逐个计算进程名的哈希码,并将其与那些预定义的哈希码进行比较。与预定义哈希码对应的进程名是关于VMware、Virtual Box、sandbox、Parallels Desktop和其他用于监控文件、进程、网络和系统注册表事件的分析工具的。以下是这些过程的列表:
vmwareuser.exe, vmwareservice.exe, VBoxService.exe, VBoxTray.exe, sandboxiedcomlaunch.exe, sandboxierpcss.exe, procmon.exe, filemon.exe, wireshark.exe, NetMon.exe, prl_tools_service.exe, prl_cc.exe, vmtoolsd.exe, vmsrvc.exe, vmusrvc.exe, python.exe, perl.exe, regmon.exe
它还将任何匹配结果作为ConfigObj标志组中的标志记录下来。
4. 检测文件名,用户名,路径
然后,它计算从当前进程名(进程名可能会被研究人员重命名)、用户名(著名的沙箱使用固定的用户名)和已加载模块路径字符串(分析工具模块)的拆分字符串列表中检索到的字符串的哈希码。然后,它用FormBook中的预定义哈希码检查这些哈希码。结果影响到标志组。
5. 发现任何调试器
接下来,它从重复的ntdll.dll中检索API ZwQueryInformationProcess(),并使用不同的参数调用它以获得SystemKernelDebuggerInformation数据。它用于检查内核调试器和ProcessDebugPort数据,以确定一个ring3调试器。图2.4显示了用于获取调试器信息的两个参数。
6. 检测执行指令的时间间隔
此检测在此变体中已被禁用。通过比较执行ASM指令的间隙时间来确定FormBook是否正在调试;300h(应小于300h)。它将该值硬编码为50h以禁用此检测。它还将结果记录在ConfigObj的标志组中。
7. 加密的关键功能
在注入到目标进程之前,有五个密钥函数段被加密和解密。这五个分段由48909090h、49909090h、4A909090h、4B909090h、4C909090h这五个magic code标识。
8. 使用许多未记录的api
FormBook使用了很多低级的无文档的api,比如LdrGetProcedureAddress(), LdrLoadDll(), ZwOpenProcessToken(), ZwAdjustPrivilegesToken(), NtOpenProcessToken(), ZwReadVirtualMemory(), RtlQueryEnvironmentVariable(), RtlDosPathNameToNtPathName_U(), ZwDelayException(), ZwQueueApcThread()等等。
所谓的“未记录的API”仅仅意味着该API对Windows用户是隐藏的。您无法从MSDN获得API的任何官方描述。
有一个特殊的函数来检查在某些检测中设置的标志组的结果。一旦触发了一个检测,它返回0,否则返回1。下面是这个函数的伪代码,它的参数是ConfigObj。标志组占用偏移量40 (0x28)到55 (0x37)的字节。
如果函数的结果是0,那么它将退出进程而不做任何事情。
您不能简单地更改结果(从0到1)来忽略检测并更改代码流 原因是在下一步中,标志组(10H长)将是一个RC4种子,用于生成RC4密钥,最终解密其他数据,如模块名,如kernel32.dll和advapi32.dll 如果标志组错误,也可能无法加载这些模块
FormBook的任务概述
上图概述了在受害者的设备上执行的大多数FormBook动作。FormBook的AddInProcess32.exe可执行文件将自己注入到一个通过Explorer.exe(步骤1,2,和3)创建的新创建的Windows进程中(如ipconfig.exe)。包括iexplorer.exe, chrome.exe, skype.exe, outlook.exe, whatsapp.exe等),从它窃取受害者输入和剪贴板数据不时(步骤4)。
它还使用一个较大的共享内存段来存储从运行在目标进程中的FormBook实例和运行在Windows进程中的FormBook实例收集的数据(第5步)。
被盗的数据然后通过运行在Explorer.exe中的FormBook实例发送到C2服务器(步骤6)。
通过Explorer.exe部署FormBook到Windows进程
运行在AddInProcess32.exe中的FormBook有效载荷通过比较运行进程名称的哈希码来查找Explorer.exe,它通过调用带有参数0x5 (SystemProcessInformation)的API ZwQuerySystemInformation()来获得。
exe的哈希码是19996921h。如下图所示,这是一个ASM代码片段,展示了FormBook如何通过一个调用match_hashcode()的函数,将其哈希代码与其他进程的哈希代码进行比较,从而找到explorer.exe。
一旦匹配explorer.exe,函数返回1,FormBook继续下一步。否则,它将在循环中检索下一个要匹配的运行进程名。
接下来,FormBook打开Explorer.exe的进程句柄,分配内存给它,然后将整个FormBook有效负载复制到Explorer.exe内存中。然后它继续从一个新启动的线程Explorer.exe中的不同入口点执行FormBook。
为此,它调用了许多api,包括ZwOpenProcess(), ZwCreateSection(), ZwMapViewOfSection(), ZwOpenThread(), zwsuspenendthread (), ZwGetContextThread(), ZwSetContextThread()和ZwResumeThread()。
注入Explorer.exe的FormBook实例的逻辑和特性非常清晰和简单。它将以挂起模式运行一个随机选择的Windows进程(位于%Windir%\system32\),并返回进程状态和信息。
Windows进程名列表在ConfigObj中加密(从offset +6Bh开始),并通过它的索引进行选择。它总共有38个这样的Windows进程名(字符串索引范围从0x3到0x29),它们被解密并在下面列出:
"svchost.exe", "msiexec.exe", "wuauclt.exe", "lsass.exe", "wlanext.exe", "msg.exe", "lsm.exe", "dwm.exe", "help.exe", "chkdsk.exe", "cmmon32.exe", "nbtstat.exe", "spoolsv.exe", "rdpclip.exe", "control.exe", "taskhost.exe", "rundll32.exe", "systray.exe", "audiodg.exe", "wininit.exe", "services.exe", "autochk.exe", "autoconv.exe", "autofmt.exe", "cmstp.exe", "colorcpl.exe", "cscript.exe", "explorer.exe", "WWAHost.exe", "ipconfig.exe", "msdt.exe", "mstsc.exe", "NAPSTAT.EXE", "netsh.exe", "NETSTAT.EXE", "raserver.exe", "wscript.exe", "wuapp.exe", "cmd.exe".
上图显示了它的随机函数和解密函数,以及刚刚解密的名为ipconfig.exe的Windows进程,它的随机字符串索引为0x20。我将使用ipconfig.exe来解释FormBook如何与Windows进程一起工作。
它首先使用ipconfig.exe全路径和0x800000C的dwCreationFlags参数调用API CreateProcessInternalW(),这意味着CREATE_NO_WINDOW|CREATE_SUSPENDED|DETACHED_PROCESS。这将在没有窗口和挂起模式下启动ipconfig.exe。
在Explorer.exe中的FormBook实例将继续收集ipconfig.exe的进程信息(例如它的完整路径,进程ID,线程ID,加载的基地地址等),并将它们返回到AddInProcess32.exe中的FormBook。此时,FormBook在Explorer.exe中的工作就完成了。
为什么不直接运行Windows进程,而不是通过Explorer.exe?在一些分析工具中,这样做表明Windows进程(ipconfig.exe)是从Explorer.exe启动的,与受害者启动的正常进程相同。这有助于让自己既不被分析师发现,也不被受害者发现。它使用的另一个技巧是,这些进程都是Windows的默认进程,这使得用户和分析人员不太可能将其与恶意软件连接起来。如图4.3所示,从Explorer进程中可以看到,ipconfig.exe在Explorer .exe下被识别,这与其他进程(如notepad.exe和calc.exe)相同,我通过双击它们的图标打开它们。
然后AddInProcess32.exe中的FormBook获取从Explorer.exe返回的挂起的ipconfig.exe的进程信息。然后,它就能够将FormBook有效负载文件复制到ipconfig.exe中,并将其主线程的入口点代码修改为注入的FormBook的新入口点。它最终调用API ZwResumeThread()来恢复ipconfig.exe以执行FormBook的恶意代码。同时,它调用ExitProcess()来终止注入到AddInProcess32.exe中的FormBook实例的生命周期。
FormBook在Windows进程中被注入到目标进程
注入的FormBook实例运行在Windows进程中,比如ipconfig.exe,控制在受害者的设备上维持其生命。
首先,它初始化自己的ConfigObj并执行我在前面反分析部分中解释过的检测。
接下来,FormBook需要解密五个关键函数,这些函数将在注入FormBook后在目标进程中被调用。它对每个函数都有一个神奇的代码,分别是48909090h、49909090h、4A909090h、4B909090h和4C909090h。
FormBook通过搜索整个代码段中的魔法代码找到加密的代码,然后使用RC4算法解密它们。RC4解密密钥是从ConfigObj中的数据生成的。图5.1左边显示了魔术代码48909090h的密钥函数的加密代码,右边显示了解密代码。
这5个解密的密钥函数用于执行与C2相关的工作,比如解密C2主机字符串、加载网络api以及与C2服务器通信等。
FormBook中的一个函数主要通过使用SystemProcessInformation参数调用API ZwQuerySystemInformation(),将进程名的哈希码与保存在ConfigObj中的FormBook中的预定义哈希码进行比较,从收集到的当前进程中过滤目标进程。一旦一个进程的哈希代码与其预定义的哈希代码相匹配,它就会启动一个函数将FormBook注入到匹配的进程中,然后从不同的入口点集内嵌钩子执行代码以窃取数据。
下图显示了一个代码流结构的伪代码,该代码描述了FormBook如何过滤目标进程,并在进程名称与预定义的散列代码匹配时调用一个函数将FormBook注入该进程。FormBook每5秒执行一次检查,以便更好地覆盖新打开的目标进程。
在这个FormBook变体中总共有92个预定义的目标进程,它有一个保存在ConfigObj中的进程名的加密散列代码列表,从offset + 444h开始。我还没有通过它们的哈希码定义所有的目标进程名。然而,通过我的分析,我已经确定了目标流程所属的大多数产品。根据它们的特点,可以分为以下几类:
Web browsers:
谷歌Chrome,微软IE和Edge, Mozilla Firefox, Opera浏览器,苹果Safari,火炬浏览器,Maxthon浏览器,SeaMonkey浏览器,Avant浏览器,Comodo Dragon和IceDragon, K-Meleon浏览器,黑鹰浏览器,Cyberfox浏览器,Vivaldi浏览器,lunscape浏览器,史诗浏览器,Midori浏览器,Pale Moon浏览器,QtWeb浏览器,Falkon浏览器,UCBrowser, Waterfox Browser,等等。
Email clients:
Microsoft Outlook, Pocomail, Opera Mail,腾讯Foxmail, IncMail, Mozilla Thunderbird,谷歌Gmail Notifier Pro等。
IM clients:
Yahoo Messenger, ICQ, Pidgin, Trillian, Microsoft Skype, FaceBook WhatsApp等等。
FTP clients:
Estsoft ALFTP, NCH Classic FTP, Core FTP, FAR Manager, FileZilla, FlashFXP, NCH Fling, FTP Voyager, WinSCP等。
Others:
Windows Notepad and “Explorer.exe”。
详细的目标进程是:
它先调用API ZwOpenProcess(),然后调用ZwCreateSection()来打开目标进程,然后在其中创建内存段。接下来,它将整个FormBook以及已解密的五个密钥函数传输到该节中。然后,它从目标进程中新创建的线程中的新入口点执行它。
预防和清除:
不要点击不明网站;打开不明邮件附件;定时经常更新杀毒软件病毒数据库,最好打开杀毒软件的病毒数据库自动更新功能。关闭电脑共享功能,关闭允许远程连接电脑的功能。安装最新的系统补丁。
钓鱼网站提示:
1、假冒亚马逊类钓鱼网:
https://www-drv.com/site/tkqcyrr0mdjbxcscn6agiq/page/
危害:骗取用户邮箱账号及密码信息。
2、假冒PDF类钓鱼网:
http://www.capelini.com.br/adobeCom/inc/
危害:骗取用户账号及密码信息。
3、假冒Paypal类钓鱼网:
http://www.skblibrary.org.in/cottonlibrary/a
危害:骗取用户账号及密码信息。
4、假冒腾讯游戏类钓鱼网站:
http://www.dnf233.com/
危害:骗取用户信用卡号及密码信息。
5、假冒Gmail类钓鱼网站
http://www.ilona.com/wcmilona/wp-includes/SimplePie/Data/
危害:骗取用户邮箱账号及密码信息。
请勿打开类似上述网站,保持计算机的网络防火墙打开。
以上信息由上海市网络与信息安全应急管理事务中心提供