分析一款病毒程序

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaoyuai1234/article/details/51820020

首先要谢谢吾爱的@Youngs提供的样本,我用自己的思路在分析一遍

首先对行为进行分析,发现他在运行本身的同时还释放了一个小程序

程序本身创建了开机自启动项


还原一部分代码如下:

void AddReg()
{
	char RegName[]="SoftWare\\Microsoft\\Windows \\CurrentVersion\\Run";
	char szBuffer[MAX_PATH];
	char hKey=NULL;

	strcpy(szBuf,"%windir%\\2.exe");
	RegOpenKey(HKEY_CURRERNT_USER,RegName,&hkey);
	RegSetValueEx(hkey,
		"2",
		0,
		REG_EXPAND_SZ,
		(LPBYTE)szBuf,
		strlen(szBuf)+1);
	RegCloseKey(hkey);
}

在c盘用户目录下创建了desktop.ini的配置文件和其他的DLL文件,个人认为它们为病毒运行所需的文件


接下来载入OD,IDA进行调试

我发现程序中call sub_40E58中调用了GetModuleHandleA,GetCommandLineA,GetProcAddress等函数,所以应该是对病毒进行获取路径或者句柄进行操作

F8单步运行程序,会发现GetModuleHandleA对文件的路径进行了读取,在F8单步运行,我发现了一个cmp的比较函数,用'22',作为对病毒初始化的结束


接下来继续通过,继续分析call_sub405684,发现了一个CharNext函数,这个函数将病毒的路径重新的读取一遍,至此出现‘’‘’结束,这个函数应该和刚才的cmp相连


通过IDA继续分析,发现一个路径为 C:\DOCUME~1\ADMINI~1.GON\LOCALS~1\Temp\nst13.tmp的临时文件,说句实话,我也不知道他有什么用,先放一边,call00403208为提供路径的主要call(关键call)


接下来是字符串的链接起来,将C://WINDOWS和\temp链接起来

发现又重建了nss14.tmp的文件,然后又删除了,不过这样分析也分析不出什么有价值的东西,继续向下。


发现了一些新出现的东西C:\Documents and Settings\Administrator.GONG-EE1FB81712\Local Settings\Application Data\NVIDIA Corpo,我们跟过去看看


一路跟过去,发现出现的地方,可以明显的看到在C:\Documents and Settings\Administrator.GONG-EE1FB81712\Local Settings\Application Data\NVIDIA Corpo\update

,而copyfile则将母体进去进去


关闭句柄

00403502 |. 50 |push eax ; /hObject

00403503 |. FF15 EC704000 |call dword ptr ds:[<&KERNEL32.CloseHandle>] ; \CloseHandle 

设置注册表的键值
.text:00402333                 push    ebx             ; lpSecurityAttributes
.text:00402334                 push    ecx             ; samDesired
.text:00402335                 push    ebx             ; dwOptions
.text:00402336                 push    ebx             ; lpClass
.text:00402337                 push    ebx             ; Reserved
.text:00402338                 push    eax             ; lpSubKey
.text:00402339                 push    edi             ; hKey
.text:0040233A                 mov     [ebp+var_4], 1
.text:00402341                 call    ds:RegCreateKeyExA
.text:00402347                 test    eax, eax
.text:00402349                 jnz     loc_40288B      ; jumptable 00401489 default case
.text:0040234F                 cmp     esi, 1
.text:00402352                 mov     edi, offset Data
.text:00402357                 jnz     short loc_402367

利用SHFILEOperationA使母体变名,变成C:\Documents and Settings\Administrator\Local Settings\Application Data\Microsoft\WinUpdate


删除母体

004055A0  |.  57            |push edi                                ; /FileName
004055A1  |.  FF15 44714000 |call dword ptr ds:[<&KERNEL32.DeleteFil>; \DeleteFileA

这就是我的分析

编写一个小的查杀伪代码

void Kill2File()  
{  
        char szWindows2[MAX_PATH] = {0};  
        char szSystem2[MAX_PATH] = {0};  
  
        GetWindowsDirectory(szWindows2,MAX_PATH);  
        GetSystemDirectory(szSystem2,MAX_PATH);  
  
        strcat(szWindows2,"\\2.exe");  
        strcat(szSystem2,"\\2.exe");  
  
        DeleteFile(szWindows2);  
        DeleteFile(szSystem2);  

如有不足,还请多指教。















展开阅读全文

教你编写病毒程序

08-05

教授如何编写病毒是一个很敏感的话题。这会不会引起病毒泛滥?到底有没有学习编写病毒的必要?这就牵涉到一个问题,引起病毒泛滥的原因到底是什么?是因为会编写病毒的人太多还是因为懂得对付病毒的人太少?当骗子到处横行,我们到底应该让每个人都懂得骗子行骗的手段以防止受骗还是应该隐瞒骗子的行径呢?使人们懂法是否是教唆人们违法呢? rn怎样编写主引导记录和BOOT区病毒 rn  什么是主引导记录?主引导记录存放在何处?主引导记录是用来装载硬盘活动分区的BOOT扇区的程序。主引导记录存放于硬盘0道0柱面1扇区,长度最大为一个扇区。从硬盘启动时,BIOS引导程序将主引导记录装载至0:7C00H处,然后将控制权交给主引导记录。一般的,BOOT区病毒存在于软盘。因为软盘不存在分区,可以将其看成为软盘的主引导记录。软盘的BOOT区存在于其0道0面1扇区,长度为一个扇区。  rn一般的主引导记录病毒的原理。  rn  一般的,这类病毒是把原来的主引导记录保存后用自己的程序替代掉原来的主引导记录。启动时,当病毒体得到控制权,在做完了自己的处理后,病毒将保存的原主引导记录读入0:7C00,然后将控制权交给原主引导记录进行启动。这类病毒对硬盘的感染一般是在用带毒软盘启动的时候,对软盘的感染一般是在当系统带毒时对软盘操作时。  rn编写主引导记录病毒需要了解的几点  rn1、用什么来保存原始主引导记录。  rn  众所周知的,文件型病毒用以保存被感染修改的部分是文件。引导型病毒是否也可以使用文件存储被覆盖的引导记录呢?答案是否定的。由于主引导记录病毒先于操作系统执行,因而不能使用操作系统的功能调用,而只能使用BIOS的功能调用或者使用直接的IO设计。一般的,使用BIOS的磁盘服务将主引导记录保存于绝对的扇区内。由于零道零面二扇区是保留扇区,因而通常使用它来保存。  rn2、需要掌握的BIOS磁盘服务功能调用。  rnINT 13H 子功能 02H 读扇区  rn其调用方法为:  rn入口为:  rnAH=02H  rnAL=读入的扇区数  rnCH=磁道号  rnCL=扇区号(从1开始)  rnDH=头号  rnDL=物理驱动器号  rnES:BX-->要填充的缓冲区  rn返回为: 当CF置位时表示调用失败  rnAH=状态  rnAL=实际读入的扇区数  rnINT 13H 子功能03H写扇区  rn其调用方法为:  rn入口为:  rnAH=03H  rnAL=写入的扇区数  rnCH=磁道号  rnCL=扇区号(从1开始)  rnDH=头号  rnDL=物理驱动器号  rnES:BX-->缓冲区  rn返回为: 当CF置位时表示调用失败  rnAH=状态  rnAL=实际写入的扇区数  rn3。这类病毒通过什么来进行感染  rn  通常的,这类病毒通过截获中断向量INT 13H 进行系统监控。当存在有关于软盘或硬盘的磁盘读写时, 病毒将检测其是否干净,若尚未感染则感染之。  rn4。驻留的位置  rn  通常病毒通过修改基本内存的大小来获取自己驻留的空间。基本内存大小的存储位置在40H:13H,单位为KB。病毒体存在于最后的几K内存中。 rnrnrn 论坛

没有更多推荐了,返回首页