|
71
|
Seguridad Informática / Seguridad / Algo extraño con Login de Facebook :/
|
en: 23 Septiembre 2013, 01:01 am
|
Buenas señores y señoras! Como andan? Bueno, el problema es el siguiente,, cuando me logeo en facebook, siempre, siempre se recarga la ventana, o mejor dicho, se limpian los campos de ingreso de correo y de password, con lo que lo que hay que escribir nuevamente los campos,, al poner nuevamente los datos, ingresa a facebook, pero con el siguiente mensaje: "Su solicitud no se ha podido procesar, intentelo mas tarde" o algo asi.. y si la segunda vez que ingresamos los datos ponemos cualquier otra cosa ingresa igual.. o sea que hay algo raro.. Bueno, si alguien sabe que puede ser, o como funciona este stealer (calculo yo) me seria de gran ayuda para erradicarlo de mi pc Muchas gracias!!
|
|
|
72
|
Programación / Programación C/C++ / Problema con Inyector Dll
|
en: 21 Septiembre 2013, 02:13 am
|
Hola Gente!! Alguien podria probar este codigo a ver por que no funca? Al parecer, los valores que retornan las funciones y los valores de GetLastError() estan bien, pero el programa no funciona.. Estoy teniendo el mismo problema con un programa en VB.NET que postie en Analisis y Diseño de Malware. Bueno, ahi va.. #include <windows.h> #include <iostream> using namespace std;
int main() {
//********* ESTRUCTURAS *********** PROCESS_INFORMATION Process_Info = {0}; STARTUPINFO StartUpInfo = {0}; //********** VARIABLES ************
HMODULE Modulo; FARPROC Funcion; LPCVOID Virtual; HANDLE ThreadId; int Ret;
wchar_t App_Name[] = L"Hola.exe"; wchar_t Dll_Name[] = L"dllvirus.dll"; //************ INICIO *************
StartUpInfo.cb = sizeof(StartUpInfo); cout << endl; Modulo = LoadLibraryA("kernel32.dll"); cout << "Kernel32 BaseAddress: " << Modulo << endl; Funcion = GetProcAddress(Modulo, "LoadLibraryA"); cout << "LoadLibraryA BaseAddress: " << Funcion << endl; cout << endl;
// NORMAL_PRIORITY_CLASS // CREATE_SUSPENDED Ret = CreateProcess(App_Name, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &StartUpInfo, &Process_Info); cout << "CreateProcess ERROR CODE: " << GetLastError() << endl; cout << "CreateProcess return value: " << Ret << endl;
cout << endl; cout << "*************************" << endl; cout << "* hProcess: " << Process_Info.hProcess << "\t*" << endl; cout << "* hThread: " << Process_Info.hThread << "\t*" << endl; cout << "* dwThreadId: " << Process_Info.dwThreadId << "\t*" << endl; cout << "* dwProcessId: " << Process_Info.dwProcessId << "\t*" << endl; cout << "*************************" << endl;
cout << endl; int DllLen = 12; cout << "dllvirus.dll" << " LEN: " << DllLen << endl; cout << endl;
Virtual = VirtualAllocEx(Process_Info.hProcess, NULL, DllLen, MEM_COMMIT, PAGE_EXECUTE_READWRITE); cout << "VirtualAllocEx ERROR CODE: " << GetLastError() << endl; cout << "VirtualAllocEx: " << Virtual << endl;
cout << endl;
Ret = WriteProcessMemory(Process_Info.hProcess, &Virtual, &DllLen, DllLen, NULL); cout << "WriteProcessMemory ERROR CODE: " << GetLastError() << endl; cout << "WriteProcessMemory return value: " << Ret << endl;
cout << endl;
ThreadId = CreateRemoteThread(Process_Info.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)Funcion, &Virtual, 0, NULL); cout << "CreateRemoteThread ERROR CODE: " << GetLastError() << endl; cout << "CreateRemoteThread Handle: " << ThreadId << endl;
cout << endl; cout << "Waiting for CreateRemoteThread..." << endl; cout << endl;
WaitForSingleObject(Process_Info.hProcess, 1000); cout << endl; cout << "Lunching App..." << endl; cout << endl;
ResumeThread(Process_Info.hProcess); cout << endl; cout << "Closing Handle..." << endl; cout << endl;
CloseHandle(Process_Info.hProcess); cout << endl; cout << "End :)" << endl; cout << endl;
cin.get();
return 0; }
Ha,, me olvidaba,, Hola.exe es un "Hola mundo" en un MessageBox echo en ASM y dllvirus.dll lo que hace es sobreescribir el texto del mensaje con otro texto, pero bueno, la idea se entiende, por que no inyecta? :/
|
|
|
73
|
Seguridad Informática / Análisis y Diseño de Malware / Ayuda con Inyector DLL en VB 2008
|
en: 18 Septiembre 2013, 02:51 am
|
Bueno, hace 16 Hs que le meto a esto y no puedo encontrar el error,, o mejor dicho, como solucionarlo!! Ahi les va genios... Private Sub BtnLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnLoad.Click
Dim LoadLibHandle As Integer Dim GetProcHandle As Integer Dim StartUp As New STARTUPINFO Dim ProcessInfo As New PROCESS_INFORMATION Dim DllTam As Integer Dim VirtualRet As Integer
Dim bytes() As Byte bytes = System.Text.Encoding.Unicode.GetBytes(DllName)
Dim Retorno As Integer
LoadLibHandle = LoadLibraryA("kernel32.dll") GetProcHandle = GetProcAddress(LoadLibHandle, "LoadLibraryA")
Retorno = CreateProcess(txtExeF.Text, vbNullString, vbNullString, vbNullString, vbNullString, PROCESS_CREATION_FLAG.CREATE_SUSPENDED, vbNullString, vbNullString, StartUp, ProcessInfo)
DllTam = Len(txtDllName.Text)
VirtualRet = VirtualAllocEx(ProcessInfo.hProcess, vbNullString, DllTam, MEM_COMMIT, PROCESS_ALL_ACCESS) WriteProcessMemory(ProcessInfo.hProcess, VirtualRet, bytes, DllTam, vbNullString)
Try
CreateRemoteThread(ProcessInfo.hProcess, 0, 0, GetProcHandle, VirtualRet, 0, 0)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
ResumeThread(ProcessInfo.hProcess)
End Sub
Claro esta que esto es una porcion del codigo,, txtDllName es el textbox que tiene el nombre de la dll, txtExeF es el textbox que tiene la ruta del exe.. El error que me salta es: Intento de leer o escribir en la memoria protegida.. Ya no se que hacer con esto!! Jaja Saludos!!
|
|
|
74
|
Programación / ASM / Ayuda! Problema con MASM Inline
|
en: 27 Agosto 2013, 23:38 pm
|
Hola amigos! Alguien con un poco de tiempo se anima a revisar por que no funciona este code! El error salta cuando busco la direccion de "socket",, me da mal el Ordinal de la funcion, y no me devuelve la direccion... Gracias! #include <windows.h> #include <stdio.h> #include <iostream> using namespace std;
int Kernel32(); DWORD GetOffset(DWORD Modulo, char *Funcion, DWORD Tamaño); int LoadLibrari(char *Modulo);
DWORD Krn32 = 0; DWORD Ws2_32 = 0; //************************** DWORD GetProcA = 0; DWORD LoadLibA = 0; DWORD Sock = 0; //************************** DWORD Contador; DWORD PEHeader = 0; DWORD ET = 0; WORD PosicionEAT = 0;
DWORD Retorno = 0;
int main() {
Kernel32(); printf("\n\nLa direccion de Memoria de Kernel32.dll es: %8X", Krn32); printf("\nLa direccion de Memoria de Kernel32.dll con LoadLibraryA es: %8X", LoadLibraryA("Kernel32.dll")); cout << "\n\n*****************************************************************" << endl;
GetProcA = GetOffset( Krn32, "GetProcAddress", 14 ); printf("La direccion de Memoria de GetProcAddress es: %8X", GetProcA); printf("\nLa direccion de Memoria de GetProcAddress con GetProcAddress es: %8X", GetProcAddress((HMODULE)Krn32,"GetProcAddress"));
cout << "\n\n*********************************************************************" << endl;
LoadLibA = GetOffset( Krn32, "LoadLibraryA", 12 ); printf("La direccion de Memoria de LoadLibraryA es: %8X", LoadLibA); printf("\nLa direccion de Memoria de LoadLibraryA con GetProcAddress es: %8X", GetProcAddress((HMODULE)Krn32,"LoadLibraryA"));
cout << "\n\n*********************************************************************" << endl;
Ws2_32 = LoadLibrari("ws2_32.dll"); printf("\nLa direccion de Memoria de Ws2_32.dll es: %8X", Ws2_32); printf("\nLa direccion de Memoria de Ws2_32.dll con LoadLibraryA es: %8X", LoadLibraryA("Ws2_32.dll"));
cout << "\n\n*********************************************************************" << endl; Sock = GetOffset( Ws2_32, "socket", 6 ); printf("\nLa direccion de Memoria de socket es: %8X", Sock); printf("\nLa direccion de Memoria de socket con GetProcAddress es: %8X", GetProcAddress((HMODULE)Ws2_32,"socket"));
cin.get(); }
int Kernel32() {
__asm{ mov eax, fs:[0x30] mov eax, [eax + 0x0C] lea eax, [eax + 0x0C] NextModule: mov eax, [eax] mov ebx, [eax + 0x30] cmp byte ptr[ebx + 6*2], '3' jne NextModule mov ebx, [eax + 0x18] mov Krn32, ebx } return 0; } DWORD GetOffset(DWORD Modulo, char *Funcion, DWORD Tamaño) {
__asm {
mov Contador, -1
mov eax, Modulo add eax, [eax+3Ch] mov [PEHeader], eax add eax, 78h mov eax, [eax] add eax, Modulo mov [ET], eax add eax, 20h mov eax, [eax] add eax, Modulo
bucle:
inc Contador mov ebx, [eax] add ebx, Modulo mov esi, ebx add eax, 4 mov edi, Funcion mov ecx, Tamaño repe cmpsb jnz bucle
mov ecx, [ET] mov ecx, [ecx+24h] add ecx, [Modulo] mov eax, [Contador] add eax, eax add ecx, eax mov ax, word ptr [ecx] mov [PosicionEAT], ax
mov eax, [ET] mov eax, [eax+1Ch] add eax, Modulo mov ebx, [Contador] rol ebx, 2 add eax, ebx mov eax, [eax] add eax, Modulo mov Retorno, eax
} cout << "\nEl Ordinal es: " << Contador << endl; return Retorno; } int LoadLibrari(char *Modulo) { __asm{ push [Modulo] call [LoadLibA] mov Retorno, eax }
return Retorno; }
|
|
|
75
|
Programación / ASM / PEB y funciones de kernel32
|
en: 8 Agosto 2013, 02:39 am
|
Hola amigos!! Alguien podria ayudarme a entender bien como funciona el tema de encontrar funciones en kernel32 y utilizarlas? Hace 3 dias que le dedico 8hs diarias y no he podido encontrar las funciones!! Es muy estresante jaja Lei todos los post que hablan del PEB del foro y muchos otros mas! Pero a mi humilde entender, casi todos llegan hasta la parte de encontrar la direccion de kernel32,, eso lo entendi.. pero no logro una vez ahi parado (en la direccion de memoria de kernel32) seguir buscando dentro las funciones, y mucho menos ejecutarlas!! Como recorro el modulo kernel32??? Muchas gracias!! PD: Algo de la info que rescate, la que entendi mejor -> http://el-blog-de-thor.blogspot.com/2011/05/obtener-la-direccion-base-de.htmlAhi estan muy bien detalladas las estructuras que vamos recorriendo http://el-blog-de-thor.blogspot.com/2011/05/usando-getprocaddress-y-loadlibrary_07.htmlAhi esta explicado como recorrer y buscar la funcion GetProcAddress (Pero creo que utiliza otro metodo, porque recurre a la cabezera del PE y no entiendo para que) :/ http://www.projectshellcode.com/node/22Ahi hay una shellcode pero entiendo nada EDITADO: Bien,, desde que escribi la consulta hasta recien, conoci una herramienta que se llama dumpbin! Excelente! Pero igual preciso ayuda jaja
|
|
|
76
|
Seguridad Informática / Análisis y Diseño de Malware / Troyanos con Cliente Web
|
en: 4 Agosto 2013, 05:43 am
|
Buenas amigos!! Hoy se me antojo programar un rato en plataforma web,, y que mejor que una especie de botnet? Bueno,, como ya sabrán algunos, la mayoría del hosting gratuito no ofrece sql remoto, ni sockets en php,, entonces pensé,, bueno, de alguna forma se tiene que poder! Si Zeus puede, yo también :p Alguien que me pueda dar una idea de como funciona la conexión entre cliente C++ y server web? Pd: Algunos pensaran que estoy equivocado con los términos cliente y server,, pero no se porque los suelen llamar al revés :/
|
|
|
77
|
Seguridad Informática / Hacking Wireless / Duda con Wireshark
|
en: 1 Agosto 2013, 20:15 pm
|
Hola amigos del foro! Primero que nada, perdon si no deberia estar aca la consulta, y segundo que probablemente ya este aclarada esta misma duda en algun otro hilo, pero no lo he encontrado... Bueno, el asunto es que necesito sniffar mi red, solamente para aprender un poco de ese asunto :p El problema es que no se si se puede hacer como yo quiero,, yo me conecto a mi red por wifi desde una notebook,, la duda es.. se puede leer los paquetes que pasan por el router hacia otra pc que se conecta con cable? O sea,, algo asi es la red:
PC1 (conectada al router por cable) --> [ROUTER] <-- PC2 (conectada al router por wifi)
Podria la PC2 ver los paquetes de la PC1? Bueno,, eso nomas.. Si no se entiende lo trato de explicar mejor!! Gracias!! Saludos
EDITADO: Bien, leyendo un poco mas,, veo que si se puede.. con ettercap. Puede ser que este en lo correcto? De ser asi, alguna sugerencia? Algun buen tuto para los novatos..? Gracias!
|
|
|
78
|
Seguridad Informática / Análisis y Diseño de Malware / Expongamos opiniones de diseño :)
|
en: 23 Mayo 2013, 06:04 am
|
Buenas amigos!! Hoy tengo una tema sobre "gustos". Abrí este tema porque estoy por empezar a diseñar el cliente de un programa "Cliente\Servidor", no estoy seguro si es el lugar indicado para plantear el tema, pero como esta es la parte de análisis y diseño, supuse que la parte de diseño "gráfico" de un programa podría estar incluida en este sector del foro... Bueno, me gustaría leer sus opiniones acerca del diseño que mas les haya gustado de los troyanos.. claro esta, siempre hablando del cliente ( Mal llamado cliente por ser conexión inversa ) Empiezo yo, para dar el ejemplo... A mi personalmente me gusto mucho el diseño del Sub7 o al menos, este Sub7 También, en su momento estaba bueno algo así como el diseño del Bifrost, ese estilo ListView, sin casi ningún elemento en la ventana, todo escondido atrás del click derecho del mouse.. Bueno, los dejo con eso.. y de sus opiniones e ideas poder hacer un lindo cliente Saludos!!!
|
|
|
79
|
Programación / ASM / [Ayuda] Problema con funcion send y pisar datos
|
en: 22 Mayo 2013, 20:36 pm
|
Buenas amigos, como andan ? Últimamente estoy haciendo muchas preguntas, pero bueno, veamos el lado positivo, hay rotatividad en el foro Bueno, tengo el siguiente problema : Buscar proc FtoF:DWORD
invoke FindFirstFile, FtoF, addr SFile cmp eax, -1 je NoEncontrado mov Hand, eax
Buccle: invoke wsprintf, addr Bufi, addr Envio, addr SFile.cFileName invoke send, sock, addr Bufi, sizeof Bufi, 0 cmp eax, SOCKET_ERROR je ErSo invoke FindNextFile, Hand, addr SFile cmp eax, 0 je Salida jmp Buccle
ErSo: invoke WSAGetLastError invoke dwtoa, eax, addr ErrNa invoke MessageBox, 0, addr ErrNa, addr Titulo, MB_OK
Salida: invoke FindClose, addr Hand jmp Fin
NoEncontrado: invoke send, sock, addr NoE, sizeof NoE, 0
Fin: ret Buscar endp
El problema al parecer es que el "Buccle" se ejecuta mas rápido de lo que el cliente puede procesar, o algo asi.. porque si pongo un mensaje entre ciclo y ciclo del bucle los datos llegan, pero si dejo la rutina asi, sin pausa alguna, al parecer algo se pisa el palito,, pero tampoco sale error de send..
|
|
|
80
|
Programación / ASM / Problema con Función..
|
en: 20 Mayo 2013, 23:58 pm
|
Hola amigos! Alguien me puede aclarar por que pasa esto ? Tengo una rutina asi: mov ecx, sizeof String1 lea esi, [String1] lea edi, [String2] cld repe cmpsb je Igual jmp NoIgual
Esto seria un strcmp, bien.. eso funciona.. ahora si yo quiero meter eso dentro de una funcion, para luego llamarla pasandole string1 y string2 no funca.. digamos asi: invoke strcmp, addr String1, addr String2
strcmp proto str1:DWORD, str2:DWORD
mov ecx, sizeof str1 lea esi, [str1] lea edi, [str2] cld repe cmpsb je Igual jmp NoIgual
Igual: mov eax, 0 jmp Exit NoIgual: mov eax, 1 Exit: ret strcmp endp
Bueno, eso es todo... ¿Por que no funca?
|
|
|
|
|
|
|