elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 47
281  Programación / Ingeniería Inversa / Re: Safebox Crackme en: 7 Mayo 2016, 23:09 pm
La verdad que el fallo en el codigo ha sido una mancada, eso me pasa por no comprobar el funcionamiento completo :$

Hombre eso sí, no te vendría mal depurar antes de liberar jeje, pero igual no te tienes q complicar tanto la vida, VS tiene depurador integrado  ;D
282  Programación / Ingeniería Inversa / Re: Safebox Crackme en: 6 Mayo 2016, 20:29 pm
Ademas de lo que ya ha dicho MCKSys (valores aleatorios como valores de comprobación mmmmm...no, a ver, es impensable usar eso en un sistema de registro en la vida real, así que por lo de innovador...mmm como que no, sin que te lo tomes a mal)
Luego esta el tema de que ademas cometes un error muy grande en el código para generar los cinco valores aleatorios, a ver, usas:

Código
  1. this.numAleatorio1 = new Random();
  2. this.valor1 = this.numAleatorio1.Next(0, 9);
  3. this.numAleatorio2 = new Random();
  4. this.valor2 = this.numAleatorio2.Next(0, 9);
  5. this.numAleatorio3 = new Random();
  6. this.valor3 = this.numAleatorio3.Next(0, 9);
  7. this.numAleatorio4 = new Random();
  8. this.valor4 = this.numAleatorio4.Next(0, 9);
  9. this.numAleatorio5 = new Random();
  10. this.valor5 = this.numAleatorio5.Next(0, 9);

Lo que siempre te dará cinco valores "aleatorios" idénticos, pues estas usando cinco clases Random que daran el mismo numero inicial  :-\. La cosa deberia ser algo como:

Código
  1. int valor1, valor2, valor3, valor4, valor5;
  2. Random numAleatorio;
  3.  
  4. numAleatorio = new Random();
  5. valor1 = numAleatorio.Next(0, 9);
  6. //numAleatorio2 = new Random();
  7. valor2 = numAleatorio.Next(0, 9);
  8. //numAleatorio3 = new Random();
  9. valor3 = numAleatorio.Next(0, 9);
  10. //numAleatorio4 = new Random();
  11. valor4 = numAleatorio.Next(0, 9);
  12. //numAleatorio5 = new Random();
  13. valor5 = numAleatorio.Next(0, 9);

Debido a ese error, la fuerza bruta se hace mas que sencilla, pues solo deberemos probar 10 combinaciones idénticas en los controles hasta dar con la correcta, y ya que recortas la cantidad de intentos a 10, pues en el peor de los casos (valores 9-9-9-9-9), lo solucionaríamos en el ultimo intento :P

Resumiendo, debes pensar bien cuando desees hacer un sistema de registro, el algoritmo o método que utilizas, pues al final puede que crees algo "inviable". Todo repito, con buen rollo, no te tomes a mal las criticas  :rolleyes:
Igual en este caso, aun si se quiere una solución al reto, solo puede crearse un selfkey, no hay mas opciones. En mi caso dejo una versión parchada de tu binario
Saludos y espero que sigas practicando

http://www.mediafire.com/download/2m4edpk8sv88h99/SafeBox_Crackme.SelfKey.rar
283  Programación / Ingeniería Inversa / Re: Ollydbg no muestra el codigo de una APP en VB6 en: 4 Mayo 2016, 01:07 am
A que te refieres con que "no me sale el codigo"?, yo veo bien el desensamblado del binario en el Olly. Prueba dejando que el motor del debugger analise el exe, dandole que si al mensaje que te tira al cargar la aplicacion.
284  Seguridad Informática / Análisis y Diseño de Malware / Re: Virus de macro en archivo .rtf en: 13 Abril 2016, 06:21 am
Aqui esta un adelanto, pero me falto no halle al 100 el codigo completo
saludos Flamer y le puse musica para que no se aburran  jajajaj

Creo que este link te puede ayudar a terminar el trabajo  ;)
https://reversec0de.wordpress.com/2016/04/13/accediendo-a-codigo-vba-protegido/
285  Programación / Programación C/C++ / Re: [Help] LoadLibraryA C++ en: 7 Marzo 2016, 04:08 am
Hola, compis.

Estoy por aca para que me ayudeis a resolver un problemita. He conseguido un programa el cual carga una dll de un juego para hacer un dump, haciendo ingenieria inversa al ejecutable el hace uso de LoadLibraryA y funciona todo.

Ahora quiero codificar un programa que haga exactamente lo mismo, aca el Codigo.

Código:
#include "windows.h"
#include <iostream>

int main()
{
DWORD err;
HINSTANCE CShell= LoadLibraryA("CShell.dll");             
if(CShell!= NULL) {
printf("Libreria Cargada\n");
        }
else {
        err = GetLastError();
printf("Error\n");
}
system("pause");
return 0;
}

OllyDBG al programa que les mencione que existe y hace su trabajo.

subir fotos gratis

Cuando compilo y ejecuto el programa me tira este error.



Visual Basic 2010
Dev-C++

debe ser una tonteria pero ya tengo ranto en eso y nada, espero me puedan ayudar.
otra pregunta, porque el compilado de Dev-c++ pesa mucho mas que el de Visual Basic ?.

Gracias.


No utilices la version ASCII de la API, simplemente usa LoadLibrary o LoadLibraryEx y que el compilador se encargue del resto.
Código
  1. int main() {
  2. DWORD err;
  3. HINSTANCE hDLL = LoadLibrary("mydll.dll"); // Handle to DLL
  4.  
  5. if(hDLL != NULL)
  6. {
  7. printf("Library has been loaded\n");
  8.        }
  9. else
  10. {
  11.                err = GetLastError();
  12. printf("Couldn't load dll: Error %d\n", err);
  13. }
  14. }
286  Seguridad Informática / Análisis y Diseño de Malware / Re: virus? en: 7 Marzo 2016, 03:45 am
Buenos días, alguien sabe como eliminar este molesto virus Ground.exe que se hace residente y se inicia con un usuario especifico al inicio de windows. ya leí información en google al respecto  y ofrecen programas antimalware y soft de análisis y eliminación pero con ninguno se ha podido eliminar, acudo a ustedes para que me orienten con su valiosa ayuda y colaboracion; muchisimas gracias. 

Espero que esto te ayude  :huh:
http://bfy.tw/4cPp
287  Programación / Programación General / Re: Cómo depurar Malware en VBS o JScript con Visual Studio (Tutorial) en: 1 Marzo 2016, 00:12 am
Gracias por la info, se agradece  ;)
Saludos
288  Programación / Programación C/C++ / Re: Como Puedo Copiar Archivo en: 27 Febrero 2016, 01:10 am
-Para Windows te recomiendo usar API's, en este caso: CopyFile/CopyFileEx
-Para usar con ANSI C++ tienes que abrir el fichero, leerlo en memoria y luego escribirlo en el lugar de destino, en este caso podrias usar las funciones: fopen/fread/fwrite/fclose

Saludos
289  Seguridad Informática / Análisis y Diseño de Malware / Re: [PoC] Infección de ficheros a través del registro de Windows en: 17 Febrero 2016, 03:56 am
Esto tiene ya mucho tiempo

Personalmente no conocía o había leído al respecto antes, pero gracias por aclarar, si pudieras dar algun link donde leer y abarcar mas en el tema te lo agradeceria  ;-)

y no es un fallo, ya que para que esto funcione, primero tienes que haber conseguido ejecutar codigo por lo que esta caracteristica no es un fallo de seguridad en si.

Igual no asegure nunca que fuera un fallo, solo en mi opinión personal, me parece muy mal que esto no este controlado por el sistema, ya que como se ve, puede ser usado por malware con otros propósitos. Por otra parte, creo que el correcto funcionamiento de la llave "Position: Top" es el que se lleva en la clave "HKLM\\SOFTWARE\\Classes\\SystemFileAssociations\\", cuando creamos la misma estructura de llaves y claves que en HKCR, vemos que en esta ocasión no interfiere para nada en la llamada correcta de la aplicación predeterminada para abrir el fichero (En base a esto me refiero para clasificarlo como un "fallo" [VEASE LAS COMILLAS]).
Con respecto a lo de "tienes que haber conseguido ejecutar código", bueno hombre...todo exploit, malware, bug, etc, para ser aprovechado necesita ejecutar código en el sistema host, nada sale de la nada, sin acción del user  :rolleyes:

Esto es lo que te permite que puedas configurar con que programa vas a abrir cada cosa al hacer doble click
Saludos

Para especificar las aplicaciones predeterminadas para abrir un fichero, Windows nunca utiliza esto que dices, en cambio utiliza la asociación de tipos de ficheros en el registro, esto que yo expongo es totalmente diferente a lo que te refieres, de hecho, esta opción "Abrir" es la que se supone que llama a la aplicación por defecto para el tipo de fichero que quieres abrir, el cual esta configurado de antemano en el mismo registro, en otras palabras, la opción "Abrir" nunca debe ser modificada o superpuesta por otra, como es el caso (tomar en cuenta el funcionamiento correcto que se lleva a cabo en la ruta de registro que di anteriormente) si no quieres que código malintencionado se aproveche de esta brecha, pero como dije, son solo opiniones personales.  :-\

Saludos y gracias por comentar a todos
290  Seguridad Informática / Análisis y Diseño de Malware / [PoC] Infección de ficheros a través del registro de Windows en: 13 Febrero 2016, 20:19 pm
Intro

En esta entrada pretendo dejar una idea o una PoC de un posible método de infección en sistemas operativos Windows siendo las versiones afectadas desde XP a 10. El sistema se basa en interceptar el inicio de una aplicación ligada a tipo de fichero especifico en el sistema y lanzar nuestro binario como intermediario antes de la ejecución del mismo. No se necesita tener nuestro binario en memoria o ejecución previa, ni siquiera se necesitan métodos de infección de ficheros de usuario o del sistema para lograr esto, solo una llave en el registro de Windows que hará la función de Hook o Interceptora.

Principios de Funcionamiento

El método se basa en el uso de llaves del registro de Windows para establecer nuestro binario como objetivo principal en lugar de la aplicación destinada o ligada a un tipo de ficheros en el SO. Windows basa gran parte de su funcionamiento en un archivo denominado Registro de Windows. El registro de Windows es una base de datos jerárquica que almacena los ajustes de configuración y opciones en los sistemas operativos Microsoft Windows. Contiene la configuración de los componentes de bajo nivel del sistema operativo, así como de las aplicaciones que hay funcionando en la plataforma: hacen uso del registro el núcleo (kernel, en inglés), los controladores de dispositivos, los servicios, el SAM, la interfaz de usuario y las aplicaciones de terceros. El registro también proporciona un medio de acceso a los contadores para generar un perfil del rendimiento del sistema.

Claves y valores

El registro contiene dos elementos básicos: claves y valores.
Las claves del registro son similares a carpetas: además de los valores, cada clave puede contener subclaves, que a su vez pueden contener más subclaves, y así sucesivamente. Las claves están referenciadas con una sintaxis parecida a los nombres de las rutas de Windows, y usan barras diagonales inversas para indicar los distintos niveles jerárquicos. Cada subclave tiene obligatoriamente un nombre: una cadena que no puede contener barras diagonales inversas y en la que no se distingue entre mayúsculas y minúsculas.

HKEY_CLASSES_ROOT (HKCR)

HKEY_CLASSES_ROOT, abreviado como HKCR, contiene información sobre aplicaciones registradas, como asociaciones de archivos e Id. de clase de objetos OLE, ligándolos a las aplicaciones utilizadas para identificar estos elementos. En Windows 2000 y versiones superiores, HKCR es una compilación de HKCU\Software\Classes basada en el usuario y de HKLM\Software\Classes basada en el equipo. Si un valor dado existe en las dos subclaves anteriores, la contenida en HKCU\Software\Classes prevalece.

Explicación del PoC

Tomando como base lo anterior para nuestra prueba de concepto, se toma la premisa que en esa raíz tenemos un listado de tipos de ficheros en el sistema y las aplicaciones ligadas a los mismos. En las claves de dichos tipos de archivos existe una subclave llamada “shell” la cual a su vez contiene otras subclaves. Dicha clave “shell” puede controlar partes de la interfaz de usuario del “shell menú” en aplicaciones y a lo largo de todo el SO. Las subclaves dentro de la clave “shell” especifican entradas adicionales en el menú para la aplicación asociada, vamos como ejemplo las siguientes imágenes



Ejemplo de clave Shell para el tipo de ficheros “txt”


Como se observa estamos en la clave referente a los tipos de fichero “.txt” y vemos a su vez la clave “shell” y las subclaves que contiene “open”, “print”, “printto”. Como dijimos anteriormente estas entradas serán añadidas al menú de todos los ficheros “.txt” a lo largo de todo el sistema, veamos otra imagen



Entradas en el menú para tipos de ficheros “txt”


Añadiendo entradas personalizadas

Teniendo todo lo anterior en cuenta podríamos nosotros crear nuestras propias entradas en el Shell Menu de este tipo de ficheros, el procedimiento es sencillo, solo tendríamos que añadir algunos valores al registro de Windows. La estructura y tipos de claves seria la siguiente:

Clave Principal: Indica la entrada añadida
Subclave “command”: Contiene una cadena especificando el comando a ejecutar una vez se ha seleccionado dicha opción del menú.
Valor MUIVerb: Contiene el titulo de la entrada
Valor Position: Posición de la entrada en el menú, posibles valores (Top/Bottom/Default)

Existen otros tipos de valores que controlan otros aspectos de la entrada en el menú contextual del fichero, pero para nuestros propósitos con estos estamos bien, veamos unas imágenes.



Nueva entrada “myentry” añadida al menu contextual de los ficheros “txt”



Entrada añadida “MiEntrada”


Vemos que la entrada se ha añadido correctamente, ha tomado el titulo que le dimos y si le damos clic se ejecutara el comando o aplicación que especificamos en la clave “command/default”. Hasta aquí todo estaría bien y no hay problemas de ningún tipo, el problema surge cuando usamos un valor diferente en el valor “Position”.

Explicación del “bug”

Modificando este valor y estableciendo el nuevo como “Top”, causaría un efecto no deseado para el tipo de ficheros donde radica dicha entrada. Si nos fijamos en la imagen anterior podemos ver que la primera opción del menú es la que está en negritas “Abrir” y es dicha opción la que se ejecutara por defecto al hacer doble clic en el tipo de fichero, en este caso invoca la clave “open” que se encarga a su vez de lanzar la aplicación asociada. Cuando ponemos nuestra entrada como “Position:Top”, veamos lo que sucede



Entrada agregada “MiEntrada” como opción por defecto


Como vemos en la imagen, dicha entrada se ha colocado como opción por defecto, por lo que si al hacer doble clic al fichero, nuestra entrada será invocada en vez de la opción “Abrir”. En este punto no se si es algún tipo de “bug”, problema de diseño del SO, o lo que sea por parte de Microsoft, el tema es que este tipo de comportamientos no creo que deberían ser posibles.

Aprovechando las fallas

Aprovechando lo que anterior he expuesto podemos entonces proceder a crear un binario especial que será ejecutado como opción predeterminada al intentar ejecutar un tipo de fichero especifico, seguiremos tomando como ejemplo los ficheros “txt” y veamos ahora una entrada camuflada al usuario y un ejecutable de prueba que será usado.

Entrada de Registro
Código:
[HKEY_CLASSES_ROOT\txtfile\shell\myentry]
“MUIVerb”=”Open”
“Position”=”Top”
[HKEY_CLASSES_ROOT\txtfile\shell\myentry\command]
@=”C:\\open.exe \”%1\””

He usado como target del comando un ejecutable creado en VC++ con propósitos solamente demostrativos, el código del mismo es bien sencillo y es el siguiente:

Codigo fuente binario

Código
  1. #include <wtypes.h>
  2. #include <winuser.h>
  3. #include <shellapi.h>
  4.  
  5. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, LPSTR lpCmdLine, int nShowCmd)
  6. {
  7.    LPWSTR *szArgList;
  8.    int argCount;
  9.  
  10.    szArgList = CommandLineToArgvW(GetCommandLine(), &argCount);
  11.    if (szArgList == NULL)
  12.    {
  13.       MessageBox(NULL, L"Unable to parse command line", L"Error", MB_OK);
  14.       return 10;
  15.    }
  16.  
  17.    /*Start on index 1 coz index 0 contains my own exe path*/
  18.    for (int i = 1; i < argCount; i++)
  19.    {
  20.       MessageBox(NULL, szArgList[i], L"Execution Intercepted!", MB_OK);
  21.       ShellExecute(NULL, L"open", szArgList[i], NULL, NULL, SW_SHOWNORMAL);
  22.    }
  23.  
  24.    LocalFree(szArgList);
  25.    return 0;
  26. }
  27.  

A modo groso de explicación, el binario toma lo que se le pasa por parámetro, que en nuestro caso es el fichero que se está intentando ejecutar, lanza un mensaje de intercepción de la ejecución (en cualquier otro caso pudiera existir cualquier tipo de payload o acción maliciosa o de infección), para finalmente lanzar la aplicación predeterminada y abrir el fichero y el usuario no note nada extraño.
Al tener lo anteriormente intentamos ejecutar el fichero txt y obtenemos lo siguiente.


Mensaje de intercepcion de la ejecución del fichero

Al aceptar el mensaje veremos cómo se ejecuta el notepad con el contenido del fichero que abrimos.

Palabras finales

Esto ha sido todo por esta prueba de concepto, como dije anteriormente, veo muy mal que cosas como estas se puedan hacer en el sistema, a lo mínimo, todo esto debería estar controlado, pero bueno, sabemos que no hay nada perfecto en este mundo, y quizás esto ni llegue a ser una falla, aunque si puede ser usado y aprovechado por mucho malware allá afuera. Sin más que añadir, nos vemos en otra, quizás….quien sabe.

Descarga del PoC
[Poc]RegInfection.rar
password: 123456

PD: Dudas, comentarios, etc, responder al hilo
Entrada original: hxxps://reversec0de.wordpress.com/2015/12/31/poc-infeccion-de-ficheros-a-traves-del-registro-de-windows/
Páginas: 1 ... 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 ... 47
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines