ICMP-Injektionsfehler mit Nemesis unter Mac OS

1

Dies begann mit einer einfachen Aufgabe: Senden Sie ein ICMP-Paket vom Typ 8 und Code 0 an einen Host in meinem Netzwerk. Da ich meinen Mac für alles benutze, habe ich Nemesis mit macports installiert und den folgenden Befehl ausprobiert.

sudo nemesis icmp -i 8 -c 0 -P ./payload -D 172.16.148.133

Dies führte zu einem Fehler.

ERROR: Incomplete packet injection.  Only wrote -1 bytes.

ICMP Injection Failure

Und seitdem konnte ich Nemesis icmp von zwei bekannten, guten Mac-Computern nicht verwenden, ich bekomme immer denselben Fehler.

Als ich bemerkte, dass ich dies bemerkte, kompilierte ich es einfach auf einem FreeBSD 8.2-System aus Ports, Nemesis 1.4 Build 26, genauso wie unter OS X.

Funktioniert wie es sollte, keine Fehler, glücklicher Benutzer. :)

Aber ich möchte mich nicht jedes Mal bei einem FreeBSD-System anmelden, wenn ich Nemesis verwenden möchte. Was ist also hier los? Ich habe versucht, Nemesis 1.4 Build 26 aus dem Quellcode von Sourceforge zu kompilieren und eine Verknüpfung zu dem von MacPorts in / opt installierten libnet herzustellen, was jedoch keinen Unterschied machte.

Hinweis: Ich habe versucht, diesen Nemesis-Befehl auf beiden Systemen über ein Root-Terminal auszuführen, nicht nur über Sudo.

Stefan Midjich
quelle
Nur hier fischen, aber wenn Sie es versuchen sudo -s und dann den Befehl ausführen?
squircle
@squircle dasselbe Problem. Unter FreeBSD verwende ich nicht einmal sudo, ich habe nur ein Root-Terminal geöffnet. Ich habe dies auch unter OS X versucht, dasselbe Problem.
Stefan Midjich
Nun, das ist was sudo -s tut; Öffnen Sie ein Root-Terminal. Ich denke also, es ist kein Berechtigungsproblem ...
squircle

Antworten:

0

Das sieht aus wie ein Versagen von libnet. Aus dem Quellcode der Nemesis:

if (got_link)
    n = libnet_write_link_layer(l2, device, pkt, icmp_packetlen);
else
    n = libnet_write_ip(sockfd, pkt, icmp_packetlen);

if (verbose == 2)
    nemesis_hexdump(pkt, icmp_packetlen, HEX_ASCII_DECODE);
if (verbose == 3)
    nemesis_hexdump(pkt, icmp_packetlen, HEX_RAW_DECODE);

if (n != icmp_packetlen)
{
    fprintf(stderr, "ERROR: Incomplete packet injection.  Only wrote "
            "%d bytes.\n", n);
}

Der Fehler liegt also vor libnet_write_ip() oder libnet_write_link_layer().

Ich würde empfehlen, libnet manuell neu zu kompilieren und Nemesis mit dieser neuen Kopie zu verknüpfen.

Majenko
quelle
Sie haben meine Gedanken gelesen und auch den Quellcode. Vielen Dank.
Stefan Midjich