一、概述
Lokibot于2015年面世,持续活跃至今,是一种高度危险且隐匿的恶意软件,旨在窃取受害主机的敏感信息,包括存储的密码、浏览器登录凭据以及加密货币钱包等,并将这些信息上送到远程C2服务器上。本文将重点针对Lokibot家族的上线包进行分析,让读者可以更深入了解经典病毒Lokibot的流量特征,进行有效防御。
问题咨询和282G网络安全资料领取点击此处即可
二、本地行为分析
文件基本信息如下:
2.1 脱壳
使用反编译工具分析文件发现该文件使用了壳保护。为了更好的分析病毒行为,需要对样本进行脱壳处理。尝试在沙箱运行发现如下行为:
根据行为可知,文件调用WriteProcessMemory(),向进程中注入文件
WriteProcessMemory()作用:将数据写入指定进程中的内存区域。BOOL WriteProcessMemory([in]HANDLEhProcess,[in]LPVOIDlpBaseAddress,;目标地址[in]LPCVOID lpBuffer, ;预备写入的地址[in]SIZE_TnSize,;写入数据大小[out] SIZE_T*lpNumberOfBytesWritten);定位可疑函数位置,对该函数下硬件断点
查看stdcall窗口,主要关注2,3,4这三个参数,通过这三个参数可以判断出需要进行dump文件的起始地址以及文件大小。经调试确定WriteProcessMemory()被调用五次,整理可知写入数据大小为0x1A000。
通过savedata命令dump数据到文件中
savedata命令格式:文件名,起始地址,文件大小。实际命令如下:savedata 1234,0x040AF0F8,0x1A000
使用反编译工具查看保存的文件,可以看到清楚的逻辑,确定脱壳成功。
2.2 动态获取API
该样本未通过导入表使用关键API,只有当需要调用API时才会接收索引值以及名称的hash值获取对应API的地址直接调用,而非将API恢复或者存储到某个地方以后再运行。使用该方式可以防止分析者一次性恢复使用的所有API,实现细节见下文。
GET_dll_base函数会以a1作为索引值从包含DLL名称的内存数组中获取DLL名称,进而获取其基址。