1、背景
近日,腾讯反病毒实验室从一些物理隔离,大区域超大局域网内发现一蠕虫样本,该蠕虫已在该网络中扩散,甚至渗透到该网络核心服务器上。
该蠕虫利用微软MS10-061打印机服务远程代码执行漏洞在局域网络内疯狂传播。该漏洞首次被发现并被应用于著名的Stuxnet蠕虫(俗称“震网”),后广泛被各种蠕虫利用。由于该网络被物理隔离,无法连接网络并修复该漏洞,从而让该蠕虫有可剩之机。
该样本最早出现于2011年,历经多个变种,目前控制该蠕虫的黑客服务器已经失效。失去了黑客的控制该蠕虫并不具备直接侵害用户的能力,但并没有失去像脱缰的野马一样感染传播的能力。一直到现在该蠕虫也一直存在并危害着网络的安全。
1)当蠕虫值入机器后,把自己设置成开机自启动,并释放驱动文件,把该驱动设置为服务自启动。该驱动负责突破系统TCP半开连接数限制,以方便蠕虫通过网络传播。 2)感染系统的可移动驱动器(即U盘等),可通过U盘传播自身。 3)通过MS10-061打印机服务远程代码执行漏洞在局域网传播自身。并尝试利用一些弱口令企图猜解并取得主机权限,危及整个网络的安全。 4)为计算机设置了一个后门,不断尝试连接远程黑客服务器,收集用户信息,接收黑客指令,并可获取黑客远程服务器木马并执行,带来严重安全隐患。
(基本流程图)
1)蠕虫运行后会进行一系列的判断,反调试,沙箱,VM虚假机,监控软件等检测。若发现不对劲马上退出。
其所需用到的API是通过解释kernel32.dll导出表获得LoadLibrary和GetProcAdress地址,从而获得其他所需的API地址。
在蠕虫后续的运行过程中,还会效验当前机器的用户名是否包含”sandbox”,”vmware”等敏感字符串,若存在则马上退出。
2)蠕虫在运行过程中,会使用很多字符串,大部份字符串都被其异或加密起来,在使用前解密,使用后马上清空字符串。
对字符串的两组加密解密函数多达40多个。大大增加其静态分析的难度。
3)当蠕虫运行环境检测通过后,会创建一个自身的傀儡进程,并读取自身shellcode资源,把shellcode注入傀儡进程,然后把后续的工作都交给傀儡进程然后退出。
蠕虫在创建的傀儡进程地址0x29a00000处写入0×22000字节的shellcode,然后把线程入口设置在shellcode处。后续的所有操作都在这个傀儡进程里的这段shellcode里内完成。
4)Shellcode运行后会对自身进行解密,解密完成后跳到真正的入口0x29a07e20处执行。接下来一个重要的操作是隐藏进程本身。
蠕虫通过LoadLibrary读取内核ntoskrnl.exe文件,然后得到PsInitialSystemProcess在内核的偏移。PsInitialSystemProcess是内核的一个全局变量,指向系统进程SYSTEM的EPROCESS结构。每一个进程在内核中都有一个对应的EPROCESS结构,EPROCESS+0×88处可以取得系统活动进程链表ActiveProcessLinks,EPROCESS+0×88处可得到进程PID。通过删除自己在该链表上的位置,可以达到隐藏进程的目的,除非使用专业内核检测工具,否则难以看到。
蠕虫通过ZwSystemDebugControl可直接在R3层对内核空间进行读写操作。传入要读或写的内核地址空间和buffer,即可使用。
通过遍历系统活动进程链表和PID找到自己的EPROCESS结构并从该链表中删除。
3.2 传播性(网络传播:加驱动,服务线程,漏洞线程;U盘传播)
为了自身传播,蠕虫运行后会创建4个相关线程,其中3个线程用于网络渗透传播,另一个为U盘感染线程。
驱动加载线程判断系统版本,并释放合适的驱动文件到system32/drivers/sysdrv32.sys并为其创建服务以加载驱动。
驱动加载初始化完成后会创建一内核线程,该内核线程通过ZwQuerySystemInformation获得tcpip.sys的基址,再利用特征码搜索定位到变量ActiveOpenProgressThreshold(TCP半开连接数),并把它的值从10增大到0xfc。该变量限制系统的TCP半连接数量。为了防止震荡波等蠕虫病毒的网络传播,加强系统安全,防止系统资源浪费,微软把TCP半连接数上限设置为10,即同一时刻TCP的半连接最多只能有10个。蠕虫增大了该值,使其更能发辉系统网络潜能传播蠕虫。
网络服务器线程在本地搭建一个服务器,为配合接下来的网络渗透感染线程工作。局域网内的机器被感染后会连接攻击者机器,该线程用作发送蠕虫文件到连接来的被感染机器中。
网络渗透感染线程取得机器所在网段,然后开始利用MS10-061后台打印程序服务漏洞对网络内其他主机进行攻击。该漏洞是一个远程执行代码漏洞,通过构造特殊的RPC请求可以完全控制目标机器。对于已打补丁或各种原因漏洞攻击失败的机器,蠕虫试图用一些弱口令字典去取得远程机器权限。
U盘感染线程不断监视系统是否存在U盘等移动设备,发现U盘后往其复制自己的副本命名为win.com,并修改u盘autorun.inf文件使其在插入U盘后能自动运行。
3.3 留下后门,听命于黑客
该蠕虫最后的目的只是为了在机器上留下后门,并听命于黑客的控制。可窃取用户信息,并下载木马运行,为系统安全留下严重隐患。
蠕虫成功运行后会连接的服务器mail.vspcord.com,通过查询该域名下的IP地址归属为葡萄牙。但在分析时无法连接上该服务器,蠕虫的后门功能已丧失。
通过分析,若连接上黑客服务后,会不断等待读取并解释黑客的指令,进行不同的操作,并返回各种信息。甚至会根据指令从远程服务器上下载木马并运行。
* 作者/腾讯电脑管家(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)