@punto infinito
aqui te lo adjunto
http://www.mediafire.com/?gt3h10g8aj9i6okaqui los pasos:
como verás, no es nada diferente de lo que te comentaba
1)entrypoint
0040F1E0 > $ 60 PUSHAD
0040F1E1 . BE 15E04000 MOV ESI,Recover_.0040E015
0040F1E6 . 8DBE EB2FFFFF LEA EDI,DWORD PTR DS:[ESI+FFFF2FEB]
salto al oep
0040FD3F . 39C4 CMP ESP,EAX
0040FD41 .^75 FA JNZ SHORT Recover_.0040FD3D
0040FD43 . 83EC 80 SUB ESP,-80
0040FD46 .-E9 B592FFFF JMP Recover_.00409000
despues vemos esto
00409106 68 94CA4000 PUSH Recover_.0040CA94
0040910B FF15 E2D04000 CALL DWORD PTR DS:[40D0E2] ; kernel32.CreateFileA
00409111 3B05 C0CE4000 CMP EAX,DWORD PTR DS:[40CEC0]
00409117 A3 C0CE4000 MOV DWORD PTR DS:[40CEC0],EAX
0040911C 6A 00 PUSH 0
0040911E 68 C4CE4000 PUSH Recover_.0040CEC4
00409123 68 96280000 PUSH 2896
00409128 68 00A04000 PUSH Recover_.0040A000
0040912D FF35 C0CE4000 PUSH DWORD PTR DS:[40CEC0]
00409133 FF15 EED04000 CALL DWORD PTR DS:[40D0EE] ; kernel32.WriteFile
00409139 813D C4CE4000 96>CMP DWORD PTR DS:[40CEC4],2896
createFileA y writeFile
luego termina ejecutando mediante
00409175 6A 00 PUSH 0
00409177 FF15 1CD24000 CALL DWORD PTR DS:[40D21C] ;
shell32.ShellExecuteA0040917D FF35 C4CE4000 PUSH DWORD PTR DS:[40CEC4]
00409183 FF15 EAD04000 CALL DWORD PTR DS:[40D0EA] ; kernel32.ExitProcess
claramente ejecutará un 2do exe:
C:\DOCUME~1\APUROM~1\CONFIG~1\Temp\1D.tmp\b2e.exe
ahora si lo miro de otra forma: desempaco con upx -d de cff explorer
miro con un editor hexadecimal y veo el codigo
esto es mediante la direccion 0000A800 con un tamaño no mayor a 95bytes
sigamos en shell execute
0006FFA4 00000000 |hWnd = NULL
0006FFA8 00409170 |Operation = "open"
0006FFAC 0040CA94 |FileName = "C:\DOCUME~1\APUROM~1\CONFIG~1\Temp\1D.tmp\b2e.exe"
0006FFB0 0040CD5A |Parameters = "C:\DOCUME~1\APUROM~1\CONFIG~1\Temp\1D.tmp\b2e.exe "C:\Documents and Settings\Apuromafo\Escritorio" "C:\Documents and Settings\Apuromafo\Escritorio\Recover Gold v1.2.exe""
0006FFB4 0040C896 |DefDir = ""C:\Documents and Settings\Apuromafo\Escritorio""
0006FFB8 00000001 \IsShown = 1
tenemos el directorio..no lo ejecutare..ahora cierro y tengo el exe
luego de la estructura
0040145E |> 68 00000000 |PUSH 0 ; /hTemplateFile = NULL
00401463 |. 68 80000000 |PUSH 80 ; |Attributes = NORMAL
00401468 |. 68 02000000 |PUSH 2 ; |Mode = CREATE_ALWAYS
0040146D |. 68 00000000 |PUSH 0 ; |pSecurity = NULL
00401472 |. 68 00000000 |PUSH 0 ; |ShareMode = 0
00401477 |. 68 00000040 |PUSH 40000000 ; |Access = GENERIC_WRITE
0040147C |. FF35 94344000 |PUSH DWORD PTR DS:[403494] ; |FileName = NULL
00401482 |. E8 030C0000 |CALL <JMP.&KERNEL32.CreateFileA> ; \CreateFileA
00401487 |. A3 88344000 |MOV DWORD PTR DS:[403488],EAX
0040148C |. 68 00000000 |PUSH 0 ; /pOverlapped = NULL
00401491 |. 68 80344000 |PUSH b2e.00403480 ; |pBytesWritten = b2e.00403480
00401496 |. FF35 74344000 |PUSH DWORD PTR DS:[403474] ; |nBytesToWrite = 0
0040149C |. 8B1D A4344000 |MOV EBX,DWORD PTR DS:[4034A4] ; |
004014A2 |. 031D 98344000 |ADD EBX,DWORD PTR DS:[403498] ; |
004014A8 |. 83C3 68 |ADD EBX,68 ; |
004014AB |. 53 |PUSH EBX ; |Buffer
004014AC |. FF35 88344000 |PUSH DWORD PTR DS:[403488] ; |hFile = NULL
004014B2 |. E8 EB0B0000 |CALL <JMP.&KERNEL32.WriteFile> ; \WriteFile
que es la comentada tenemos denuevo las 2
y tenemos a este nivel
00401544 |. FF35 78344000 PUSH DWORD PTR DS:[403478]
0040154A |. BA 30304000 MOV EDX,b2e.00403030 ; ASCII "batchfile.bat"
0040154F |. 59 POP ECX
00401550 |. E8 EB2C0000 CALL b2e.00404240
00401555 |. 74 0A JE SHORT b2e.00401561
la ejecucion de este
osea un bp en 40154f y tenemos en el directorio el "bat"
pero ojo ahora no es la misma ruta sino otra
2D.tmp
y al revisar %tmp% tengo el bat tal igual como el que habia copiado antes