环境:Windows 7 32位
工具:Ollydbg、Wireshark、IDA Pro、WinHex
文件信息:930d293e5c1ed1da2c8bb638f582d509
Sality背景
Sality是一种感染型的病毒,它会感染Microsoft Windows系统上的文件。 Sality最初于2003年被发现,并且多年来已经发展成为一种动态,持久且功能齐全的恶意代码形式。 感染Sality的系统可以通过P2P网络通信,进行中继垃圾邮件的发送及恶意软件的传播,导致敏感数据泄露。 自2010年,Sality的某些变种还使用了rootkit技术。 由于其多样的功能与频繁的变种更新,Sality被认为是迄今为止最复杂和最强大的恶意软件之一。
一、病毒定义
计算机病毒(Computer Virus)是编制者在计算机程序中插入的破坏计算机功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者程序代码。
计算机病毒具有传播性、隐蔽性、感染性、潜伏性、可激发性、表现性或破坏性。计算机病毒的生命周期:开发期→传染期→潜伏期→发作期→发现期→消化期→消亡期。 计算机病毒有独特的复制能力,它们能够快速蔓延,又常常难以根除。它们能把自身附着在各种类型的文件上,当文件被复制或从一个用户传送到另一个用户时,它们就随同文件一起蔓延开来。
二、行为流程
三、具体功能
样本运行后,在内存中申请一段内存空间,通过自身的解密函数,实现自解密脱壳操作,并将解密脱壳后的PE文件存储到内存空间内,随后在内存中运行该PE文件。
样本首先将调整系统策略,将系统中的隐藏文件设置为不可见,并关闭安全中心提示。需关闭的提示的具体参数如下图所示:样本将关闭用户控制提醒与通知提示,并修改应用程序在防火墙中的通过策略。样本将添加并设置注册表项HKCU\Software\[randomname]的键值,”randomname”为长度与主机名相同、使用特定算法得到的随机字符串,值内数据如下。该注册表项用以记录并更新可供连接的控制端与被感染的主机。样本随后将创建8个子线程进行病毒的核心恶意操作,子线程的起始地址如截图中所示,分别为0040D570、004053B2、0040E507、00403FAA、004057A0、00401189、00403911、00403D9B。
1、线程0040D570
该线程将遍历所有进程,若进程所属用户不属于system、local service、network service,则进行远程线程注入。
该线程进行远程线程注入时,样本将创建互斥体来确保只进行单次注入,互斥体格式为:”进程名”+”M_”+”进程ID”+”_”。
2、线程004053B2
该线程将修改注册表键值来禁用安全模式,使病毒无法通过进入安全模式被清除。
该线程随后将加载驱动C:\Windows\system32\drivers\ipfltdrv.sys并以服务形式启动,该驱动用来进行流量包过滤,若流量包中含有安全厂商的链接,则丢弃该流量包,从而使系统无法得到及时的安全软件更新。该线程将创建名为amsint32的服务,该服务启动的文件为样本释放在C:\Windows\System32\drivers\文件夹中的.sys驱动文件,该次运行中该驱动名称为ptsjpq.sys。通过查询该.sys文件的md5,可知该文件为Sality病毒所使用的RootKit组件,可用于持久感染主机。
3、线程0040E507
该线程将在C:\Users\root\AppData\Local\Temp\文件夹下释放文件,文件名以win字符串起始,释放成功后将该文件保存至内存中并删除自身。
该线程将在磁盘根目录下创建autorun.inf文件,若用户双击磁盘图标进入磁盘驱动器,则会自动执行该文件中的代码。该文件内容如下图所示,可知inf文件将自动执行同目录下名为sdjkb.pif的文件。该线程将在磁盘驱动器根目录创建文件,该文件即为之前C:\Users\root\AppData\Local\Temp\文件夹下恶意文件自删除前释放在内存中的文件,该文件将在双击磁盘驱动器后被autorun.inf自动执行,文件名后缀可能为exe或pif。下图中注册表的键值记录了系统曾经运行过的可执行文件的绝对路径,该线程将尝试通过读取键值感染该注册表项中的可执行文件。该线程将尝试通过读取注册表中开机自启动项中的键值来感染该注册表项中的可执行文件。该线程将遍历磁盘驱动器中的文件,感染后缀名为exe与scr的文件。
若即将被感染的文件的文件名中含有下列字符串,则删除该文件。
4、线程00403FAA
该线程将尝试访问下文中的子URL向控制端获取后续恶意文件,子URL由母URL与随机字符串拼接而成,可供选取的母URL共4个,分别为http://89.119.67.154/testo5、http://kukutrustnet777.info/home.gif、http://kukutrustnet888.info/home.gif、http://kukutrustnet987.info/home.gif。
该线程将调用两次GetTickCount()函数,记为a与b,随后对参数a作一次运算,记为c,子URL的格式为:”母URL”+”?”+”b=c”。该线程从控制端下载的文件将保存在C:\Users\root\AppData\Local\Temp\文件夹下,文件名的其中一种情况是一个”win”开头的字符串。该线程下载的文件经过了加密处理,根据版本的不同使用不同的密钥,密钥的可能值为”kukutrusted!.”与”GdiPlusdll”。成功获取该文件后,创建该文件的进程来执行已下载的文件。
5、线程004057A0
该线程将遍历C:\Users\root\AppData\Local\Temp\文件夹,删除后缀名为exe与_Rar的文件。
6、线程00401189
该线程将遍历所有句柄,在样本执行多线程时进行线程资源的分配调度。
7、线程00403911
该线程将绑定指定端口5579接收从服务端发送的信息。
成功接收数据后,该线程将创建新的新线程与控制端进行通信,来更新可供连接的控制端与已被感染的主机。随后修改先前设置的注册表项HKCU\Software\[randomname]的键值,将更新的数据写入注册表中进行存储记录。
8、线程00403D9B
该线程将创建一个新的子线程,子线程将与控制端进行通信交互 ,功能大致与线程00403911类似,用以更新可供连接的控制端与已被感染的主机,并将数据写入注册表。四、IOCs
MD5
930d293e5c1ed1da2c8bb638f582d509
beee12e05b4e75b0eba4a1d6bff7e083
bf31a8d79f704f488e3dbcb6eea3b3e3
C&C
http://kukutrustnet777.info/home.gif
http://kukutrustnet888.info/home.gif
http://kukutrustnet987.info/home.gif
五、防护措施
1、禁用自动播放功能,尽量使用”右击磁盘图标à打开”的方式进入磁盘驱动器;
2、不轻易运行来历不明的软件;
3、及时更新病毒库,查杀主机中的恶意病毒;
4、推荐使用“铁穹高级持续性威胁系统”(简称”铁穹“)发现潜在的攻击行为。