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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 199
121  Seguridad Informática / Análisis y Diseño de Malware / Re: Ayuda con firma Win32:VBCrypt-VW !! en: 7 Diciembre 2014, 03:12 am
Hace mucho tiempo que modificar  Byte por byte no sirve de nada. Bueno esto es un tema largo pero no quita la diversión de hacer lo manual mente. Esta claro que programando llegas mas rápido a la meta pero el modding de binario sigue siendo el modding. Y sobre lo de VT... No se yo.. tal vez subes un FUD con 2 cojones y creo que pasaría desapercibido días... Tampoco lo e comprobado.


¿Hace mucho tiempo que no sirve de nada? ¿Desde cuando fue una solución en general? Incluso los escritores de virus desde los años de 1990 escribian motores polimorficos y metamorficos en virus para evadir firmas de AVs. Y el punto de subir a VirusTotal es la rapidez con la que los AVs pueden generar una firma estatica para un malware. Acerca del modding prefiero crackmes, packers... son más divertidos que estar removiendo firmas de AVs en un programa... pero bueno.

-
Ahora, si apesar de eso aún crees que remover firmas "manualmente" podria ser una solución hay cosas importantes en la modificación de malware ya que uno no sabe si se estaría modificando la infraestructura del mismo, dejandolo sin funcionar. Muchos casos por ejemplo: comprobadores de integridad, offsets fijos o cualquier situación en la que se considere algun valor fijo... Todo esto sin mencionar que si estas agregando código/datos a alguna sección es posible que sea necesario actualizar la sección y todas las posteriores y valores de la imagen PE y también saltos relativos, en otras palabras se necesitará una regeneración de toda la imagen PE lo cual todo eso en la mayoria de los casos es una tarea imposible de realizar, se necesitará información que sólo es disponible al programar el malware. En verdad que basuras como "AVfucker" nunca debieron existir.
122  Programación / ASM / Re: Programa que calcule multiplicaciones ASM en: 6 Diciembre 2014, 19:31 pm
Los opcodes equivalen a instrucciones en ensamblador...

Este es mi último mensaje en este post, puedes seguir dándole vueltas a los asuntos como siempre.
Entonces ¿puedo copiar y pegar en un .asm lo que me muestre en desensamblador? En algunos casos
podria, pero el punto es que no es una solución en general.
123  Seguridad Informática / Análisis y Diseño de Malware / Re: Ayuda con firma Win32:VBCrypt-VW !! en: 6 Diciembre 2014, 05:26 am
Porque una perdida de tiempo? acaso crees que no va a durar lo mismo una modificación de binario bien hecha que un recién programado desde 0? Por esa regla de tres... Ambas cosas son una perdida de tiempo.
Si te refieres al malware mismo entonces se programa un obfuscador, o si te refieres al obfuscador entonces tu obfuscador está mal diseñado.

PD:No se modifica por modificar o por el tiempo que dure,  es por placer, es competir con antivirus. Divertirte viendo como acabas con ellos es una manera de sentirte agusto, como  el que vulnera un servidor y una vez vulnerado se marcha a otro, acaso es una perdida de tiempo? No a el le gusta son retos que se pone la gente.
saludos
¿Y segun lo que piensas modificando bytes de programas significas que estas acabando con algun AV?
Si almenos te imaginaras cuanto malware es detectado en sitios como VirusTotal, llegan de cientos hasta más de mil al dia ahora imagina cuanto malware es cargado a los servidores de algun AV como Kaspersky que tiene millones de usuarios en todo el mundo, Antivirus como ese ya están preparados para manipular tal cantidad de malware al dia y crear una firma estatica lo más rapido posible.

Si quieres hacer una prueba sube algun malware que no sea detectado por ningun AV a VirusTotal te apuesto a que no ha pasado ni una hora cuando ya es detectado por más de un AV, y cuanto tiempo te toma para quitar todas las firmas de un troyano como Darkcomet? horas supongo no? sin mencionar que tienes que esperar a que el AV genere la firma para saber que bytes a rellenar. Asi que ¿quién está acabado con quién?

-

Si realmente queres joder a los AVs entonces crea un motor polimorfico para que genere código dinamico que te tome 5 seg para cifrar y dejar indetectable el malware o analizar los modulos de kernel de algun AV para encontrar como sus emuladores/VMs funcionan y crear un "Anti", esa es la manera de realmente saber joder a los AVs.
124  Programación / ASM / Re: Programa que calcule multiplicaciones ASM en: 6 Diciembre 2014, 01:23 am
Todo programa compilado acaba siendo pasado a ASM, da igual que haya sido compilado en C, C++, Delphi o VB6 (por decirte algunos).

El problema está en que para ver su código ensamblador tendrás que usar un debuger y el código no será limpio.

En resumidas cuentas, vas a tener que escribir tu código en ASM.

Aquí te dejo una ayudita.
ASM es un lenguaje de programación, los compiladores generan código maquina.

Me resultaría más fácil hacerla en C y convertirla a asm? Y si es asi, como haría esa conversión? Ya que cuando lo hago por teclado poniendo
Gcc -o programa.o -S programa.s
Me lo pasa a .s y al compilar no me funciona.
¿Qué hago?
Gracias
Si vas a hacer eso no seria mejor escribir desde el inicio en ASM?
125  Seguridad Informática / Bugs y Exploits / Re: Duda con findjmp.exe (no consigo entender su verdadera utilidad) en: 6 Diciembre 2014, 01:17 am
Hola x64Core,


Haber lo que me quieres decir es que se utiliza JMP ESP por que al machacar el EIP con esa
dirección me llevaría a la cima de la pila para ejecutar el shellcode(en el caso de que la
tenga apuntando a ESP) vale hasta ay creo estar en lo cierto.

Si cuando dices machacar te refieres a establecer el EIP con la dirección de esa instrucción,
entonces es correcto.

Con la otra parte que dices, significa que si no tuviera la shellcode apuntando en la cima y
la tuviera en cualquier otro lugar del stack debería de apañarmelas con otro juego de instrucciones
y utilizar la dirección de estas instrucciones para machar el registro EIP para que me lleve al lugar
exacto donde esta la shellcode para que sea ejecutada?

Yo estoy suponiendo que estamos hablando de un escenario donde se logra un stack overflow para
cargar el exploit, a menos que estes introducciendo más valores en la pila ESP apuntará a la shellcode.

1)Nunca hay que confiar en las direcciones del stack por que estas direcciones variaran dependiendo
únicamente del programa, contenido etc...Y esto repercutirá en las direcciones que haga uso en el stack.

De ningun programa, no veo razon de porqué considerar por ejemplo el valor 0x1000 como la dirección
de la pila o algo por el estilo.

2)Si confiamos en una librería del sistema, este exploit funcionara únicamente para el sistema que se
esta utilizando. Por decirlo de alguna manera el exploit dependerá del S.O en cuestión(teniendo en
cuenta lo que mencionaste, versión, sp, idioma etc...)
Dependerá de la libreria, es posible que el modulo se cargue en el mismo espacio de direcciones de diferentes sistemas operativos.

3)Esto es lo que yo deduzco. Lo lógico seria depender de una librería que haga uso el programa
vulnerable, ya que esta se cargara inmediatamente en el momento que se ejecute el programa y como la
dirección que contenga el JMP ESP de la librería se le abra asignado en el mismo instante
que se carga ya no me importaría saber de antemano la dirección ya que sea cual sea la dirección
podrá referenciar SIEMPRE(siempre y cuando no haya ASLR) a la cima de la pila. En este ultimo punto
estamos haciendo que el exploit ya no dependa del S.O si no de la aplicación vulnerable en cuestión,
de este modo nuestro exploit funcionara haya donde funcione la aplicación saltándonos como digo la
dependencia del S.O y ahora la dependencia sera sobre la aplicación asegurándonos así que la
explotación se realice con éxito en mas sistemas.
Supongo que esto ya se resuelve cuando respondí la 2.

Esto se mira simple pero hay que considerar ASLR y DEP.
126  Seguridad Informática / Análisis y Diseño de Malware / Re: # Nuevo Proyecto Malware Detector # en: 5 Diciembre 2014, 07:28 am
RMax y cjarles Es la misma persona los dos puntos le delatan :P
Bien hecho fijandote en eso...  

-

Vamos RMax, espero que no sea cierto...
127  Programación / Programación C/C++ / Re: Problema al compilar con struct en: 5 Diciembre 2014, 02:52 am
Viendo la logica de tu programa y usando el sentido cómun de lo que quieres lograr entonces no deberia de tener el campo "horario" de la estructura medico ser un array de 7 (7 dias supongo) además de tener un campo para determinar el numero de dias?
128  Programación / Programación C/C++ / Re: problema en dev c++ con windows.h en: 5 Diciembre 2014, 02:32 am
oyeee muchisimas gracias eres mi heroe, pero me resultan dos preguntas como hago para que esta ventana quede por fuera de la principal (a un lado) y como hago para que salga solo cuando se presione un boton seria dejandola oculta por defecto y despues al presionar el boton colocar el showwindow' y acerca del libro no hay algun otro en español

Eliminar la bandera WS_CHILD en la creación de la ventana hija:
Código:
    hChild = CreateWindowA(
        SzChildWindowClass,
        "REGISTRO NUEVO",
        WS_OVERLAPPEDWINDOW | WS_VISIBLE,
        CW_USEDEFAULT,
        CW_USEDEFAULT,
        400,
        400,
        hwnd,
        NULL,
        hInstancia,
        0);

Respecto a lo de ocultar la ventana podrias ocultar la ventana al momento de la creación usando ShowWindow con SW_HIDE:
Código:
ShowWindow(hChild, SW_HIDE);
Luego al presionar el boton usar la misma función ShowWindow con SW_SHOW para mostrarla de esa manera evitas estar creando el objeto siempre que se presiona el boton, nosé todo depende del diseño de tu aplicación... sino colocar el código para crear la ventana en el case del boton.

129  Seguridad Informática / Análisis y Diseño de Malware / Re: # Nuevo Proyecto Malware Detector # en: 5 Diciembre 2014, 01:53 am
Core eres gay se nota a la distancia..deja de ser peleonero para que te hagan la cola..
Usuario de cuenta creada hace ~40 mins, ¿quién esta siendo "peleonero" o algo por el estilo? Yo no soy el que crea las reglas aquí, lo siento por ti si no las has leido.
130  Programación / Programación C/C++ / Re: problema en dev c++ con windows.h en: 5 Diciembre 2014, 00:40 am
sólo agregue la creación de una segunda clase en tu código. El tema de la creación de ventanas en Windows es un asunto importante y creo que uno debería de sentarse a pensar en eso y leer un buen libro como este:
http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Developer-Reference/dp/157231995X
En el código he creado una nueva clase, no redirigi nada, al veces es conveniente crear nuevas clases o crear apartir de ya existentes todo va a depender de cómo será el diseño de tu aplicación.

Código
  1. #include <windows.h>
  2. #include <sstream>
  3.  
  4. using namespace std;
  5. /* La función ProcedimientoVentana() es necesaria porque es la
  6. encargada de recibir los eventos (movimientos del ratón,
  7. tecla, clics a un botón, etc). En este caso, solo monitorea
  8. el momento el que el usuario decide cerrar la ventana para
  9. descargar la aplicación de memoria                           */
  10.  
  11. HWND textbox;
  12. HWND Etiqueta;
  13. HWND hCTexto;
  14. void ventana_principal(HWND);
  15. void ventana_registroNuevo(HWND);
  16. void ventana_nueva(HWND hwnd);
  17. //void boton1;
  18.  
  19. LRESULT CALLBACK ProcedimientoVentana(HWND hwnd, UINT mensaje,
  20.    WPARAM wParam, LPARAM lParam)
  21.  
  22. {
  23.    switch (mensaje)
  24.    {
  25.  
  26.    case WM_DESTROY:{  //salir de la aplicacion
  27.        //MessageBox(hwnd, "¡Adiós mundo cruel!", "Cerrando...", MB_ICONERROR | MB_OK);
  28.        PostQuitMessage(0);//Manda WM_QUIT a la cola de mensajes que hará
  29.        //que el programa salga del bucle de mensajes              
  30.        return 0;
  31.        break;
  32.    }
  33.        /*case WM_COMAND:{
  34.         switch(wParam){
  35.  
  36.         case
  37.  
  38.         }
  39.  
  40.  
  41.         break;
  42.         }*/
  43.  
  44.    case WM_CREATE:
  45.    {
  46.        ventana_principal(hwnd);
  47.    }
  48.  
  49.    case WM_COMMAND: //Llamadas a funciones de cada boton
  50.    {
  51.        switch (LOWORD(wParam))
  52.        {
  53.        case 2:
  54.        {
  55.            break;
  56.        }
  57.        case 3:
  58.        {
  59.            //ventana_nueva(hwnd);
  60.            //MessageBox(hwnd,"elemento","ESTA ES LA FUNCION RESTA",MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  61.            break;
  62.        }
  63.        case 4:
  64.        {
  65.  
  66.            MessageBoxA(hwnd, "elemento", "ESTA ES LA FUNCION RESTA", MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  67.            break;
  68.        }
  69.        case 5:
  70.        {
  71.            ShowWindow(hwnd, SW_SHOWDEFAULT);
  72.            MessageBoxA(hwnd, "elemento", "Eborro pantallaA", MB_OK);//CAJA DE TEXTO TITULO DE LA VENTANA E INTRUCCION DENTRO
  73.            break;
  74.        }
  75.        case 6: //salir de la aplicacion
  76.        {
  77.            //MessageBox(hwnd, "¡Adiós !", "Cerrando...", MB_ICONERROR | MB_OK);
  78.            PostQuitMessage(0);//Manda WM_QUIT a la cola de mensajes que hará
  79.            //que el programa salga del bucle de mensajes              
  80.            return 0;
  81.        }
  82.  
  83.        }
  84.  
  85.  
  86.    }
  87.        /*case WM_LBUTTONUP:
  88.         {
  89.         int xPos = LOWORD(lParam);
  90.         int yPos = HIWORD(lParam);
  91.  
  92.         ostringstream os;
  93.         os << "Hizo clic con el botón izquierdo";
  94.  
  95.         if (wParam == MK_CONTROL)
  96.         os << " mientras oprimía la tecla CONTROL";
  97.         else if (wParam == MK_SHIFT)
  98.         os << " mientras oprimía la tecla SHIFT";
  99.         os << "\n\nCoordenadas: " << xPos << ", " << yPos;
  100.  
  101.         MessageBox(hwnd, os.str().c_str(), "Clic!", MB_ICONINFORMATION | MB_OK);
  102.         break;
  103.         }*/
  104.  
  105.    }
  106.    return DefWindowProc(hwnd, mensaje, wParam, lParam);
  107. }
  108.  
  109.  
  110.  
  111. LRESULT CALLBACK WndChildClass(HWND hwnd, UINT mensaje, WPARAM wParam, LPARAM lParam)
  112. {
  113.    switch (mensaje)
  114.    {
  115.    case WM_DESTROY:
  116.        PostQuitMessage(0);
  117.        break;
  118.    }
  119.    return DefWindowProc(hwnd, mensaje, wParam, lParam);
  120. }
  121.  
  122.  
  123.  
  124. /* Esta cadena se ocupa para la clase de ventana y la función
  125. CreateWindowEx() se refieran a un mismo nombre */
  126. char szNombreAplicacion[] = "Ejercicio2";
  127. char SzChildWindowClass[] = "MyChildWindowClass";
  128.  
  129.  
  130. int WINAPI WinMain(HINSTANCE hInstancia, HINSTANCE hInstanciaPrev,
  131.    LPSTR lpLineaCmd, int nEstadoVentana)
  132. {
  133.    //Los 4 pasos para crear una ventana...
  134.    //1. Establecer los 12 campos de la "clase de ventana"
  135.    WNDCLASSEXA ventana;
  136.  
  137.    ventana.cbSize = sizeof(WNDCLASSEXA);
  138.    ventana.style = CS_HREDRAW | CS_VREDRAW;
  139.    ventana.lpfnWndProc = ProcedimientoVentana; //recibe y maneja los eventos de la ventana como clics movimientos cierre de ventana etc. con punteros
  140.    ventana.cbClsExtra = 0;
  141.    ventana.cbWndExtra = 0;
  142.    ventana.hInstance = hInstancia;
  143.    ventana.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  144.    ventana.hCursor = LoadCursor(NULL, IDC_ARROW);
  145.    ventana.hbrBackground = (HBRUSH)(COLOR_WINDOWTEXT + 8);//CreateSolidBrush( RGB(0xa0, 0x60, 0xf8) );
  146.    ventana.lpszMenuName = NULL;
  147.    ventana.lpszClassName = szNombreAplicacion;//nombre de la clase de ventana
  148.    ventana.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  149.  
  150.    //2. Dar de alta en el sistema a la "clase de ventana"
  151.    if (!RegisterClassExA(&ventana))
  152.    {
  153.        MessageBoxA(NULL,
  154.            "No fue posible dar de alta a la ventana, abortando ejecución",
  155.            "¡Error!", MB_ICONEXCLAMATION | MB_OK);
  156.        return FALSE;
  157.    }
  158.  
  159.    ventana.cbSize = sizeof(WNDCLASSEXA);
  160.    ventana.style = CS_HREDRAW | CS_VREDRAW;
  161.    ventana.lpfnWndProc = WndChildClass;
  162.    ventana.cbClsExtra = 0;
  163.    ventana.cbWndExtra = 0;
  164.    ventana.hInstance = hInstancia;
  165.    ventana.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  166.    ventana.hCursor = LoadCursor(NULL, IDC_ARROW);
  167.    ventana.hbrBackground = (HBRUSH)(COLOR_WINDOWTEXT + 8);
  168.    ventana.lpszMenuName = NULL;
  169.    ventana.lpszClassName = SzChildWindowClass;
  170.    ventana.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
  171.  
  172.    if (!RegisterClassExA(&ventana))
  173.    {
  174.        return FALSE;
  175.    }
  176.  
  177.    //3. Crear la ventana en base a la "clase de ventana" anteriormente registrada
  178.    HWND hwnd;
  179.    hwnd = CreateWindowExA(
  180.        1,                      //dwExEstilo
  181.        szNombreAplicacion,     //Nombre de clase de la ventana a la que pertenece
  182.        "Tienda de videos",  //Título de la ventana
  183.        //variables que permiten editar intefaz con usiario habilitando o desabilitando botones
  184.        WS_OVERLAPPED |
  185.        WS_CAPTION |
  186.        WS_SYSMENU,   //poner | despues de cada opcion y coma al final
  187.        //WS_THICKFRAME |
  188.        // WS_MINIMIZEBOX  |
  189.        //WS_MAXIMIZEBOX
  190.  
  191.  
  192.        //WS_OVERLAPPEDWINDOW,    //Tipo de ventana es igual a dwEstilo
  193.        CW_USEDEFAULT,          //Posición de la ventana en pantalla en "x"
  194.        CW_USEDEFAULT,          //Posición de la ventana en pantalla en "y"
  195.        500,                    //Ancho
  196.        450,                    //Alto
  197.        HWND_DESKTOP,
  198.        NULL,
  199.        hInstancia,
  200.        NULL);
  201.  
  202.    if (hwnd == NULL)
  203.    {
  204.        MessageBoxA(NULL, "Error al crear la ventana, abortando ejecución",
  205.            "¡Error!", MB_ICONEXCLAMATION | MB_OK);
  206.        return FALSE;
  207.    }
  208.  
  209.    HWND hChild = 0;
  210.  
  211.    hChild = CreateWindowA(
  212.        SzChildWindowClass,
  213.        "REGISTRO NUEVO",
  214.        WS_OVERLAPPEDWINDOW | WS_CHILD | WS_VISIBLE,
  215.        CW_USEDEFAULT,
  216.        CW_USEDEFAULT,
  217.        400,
  218.        400,
  219.        hwnd,
  220.        NULL,
  221.        hInstancia,
  222.        0);
  223.  
  224.  
  225.    //4. Mostrar la ventana en pantalla
  226.    ShowWindow(hwnd, SW_SHOWDEFAULT);
  227.    ShowWindow(hChild, SW_SHOWDEFAULT);
  228.  
  229.    //Necesario para manipular los mensajes o eventos de la ventana
  230.    MSG mensaje;
  231.    while (GetMessage(&mensaje, 0, 0, 0) > 0)  //bucle de mensajes para cola de mensajes entrantes
  232.    {
  233.        TranslateMessage(&mensaje);
  234.        DispatchMessage(&mensaje);
  235.    }
  236.  
  237.    return mensaje.wParam;
  238. }
  239.  
  240. void ventana_principal(HWND hwnd)//se crea ventana principal
  241. {
  242.    //MessageBox(hwnd, "Se creó la ventana", "Ejemplo",MB_ICONINFORMATION | MB_OK);
  243.  
  244.    Etiqueta = CreateWindowExA(0, "STATIC", "MENU PRINCIPAL",
  245.        WS_CHILD | WS_VISIBLE,
  246.        180,//posicion en x
  247.        200,//posicion en y
  248.        150,//ancho
  249.        30,//alto
  250.        hwnd,
  251.        NULL, 0, 0
  252.        );
  253.  
  254.    /*textbox= CreateWindow("edit",
  255.     " Menu principal", //nombre de la ventana
  256.     WS_BORDER | WS_CHILD|
  257.     WS_VISIBLE,
  258.     120,//posicion en x
  259.     180,//posicion en y
  260.     115,//ancho
  261.     20,//alto
  262.     hwnd,
  263.     NULL,NULL,NULL);*/
  264.  
  265.    CreateWindowA("BUTTON",
  266.        "Registro Nuevo",
  267.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  268.        | WS_CHILD |
  269.        WS_BORDER, //MARGEN AL TEXTO
  270.        90, //x
  271.        240,//y
  272.        130,//ancho
  273.        30,//alto
  274.        hwnd,
  275.        (HMENU)2, NULL, NULL
  276.        );
  277.    CreateWindowA("BUTTON",
  278.        "Buscar pelicula",
  279.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  280.        | WS_CHILD | WS_BORDER,
  281.        240, //x
  282.        240,//y
  283.        130,//ancho
  284.        30,//alto
  285.        hwnd,
  286.        (HMENU)3, NULL, NULL
  287.        );
  288.    CreateWindowA("BUTTON",
  289.        "Editar Registro",
  290.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  291.        | WS_CHILD | WS_BORDER,
  292.        90, //x
  293.        290,//y
  294.        130,//ancho
  295.        30,//alto
  296.        hwnd,
  297.        (HMENU)4, NULL, NULL
  298.        );
  299.    CreateWindowA("BUTTON",
  300.        "Eliminar Registro",
  301.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  302.        | WS_CHILD | WS_BORDER,
  303.        240, //x
  304.        290,//y
  305.        130,//ancho
  306.        30,//alto
  307.        hwnd,
  308.        (HMENU)5, NULL, NULL
  309.        );
  310.    CreateWindowA("BUTTON",//boton salir
  311.        "Salir",
  312.        WS_VISIBLE//VIsIBILIDAD DEL OBJETO
  313.        | WS_CHILD | WS_BORDER,
  314.        180, //x
  315.        340,//y
  316.        110,//ancho
  317.        30,//alto
  318.        hwnd,
  319.        (HMENU)6, NULL, NULL
  320.        );
  321.  
  322. }
  323.  
  324.  
  325.  



Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ... 199
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines