iptables "Schlechtes Argument" MASQUERADE ""

503
user21303

Ich versuche mit VirtualBo in Kali Linux einen "bösen Zwilling" Zugangspunkt zu schaffen. Ich versuche, mein iPhone dazu zu bringen, eine Verbindung herzustellen und zu einer gefälschten "Nutzungsbedingungen" -Seite umgeleitet zu werden. Hier ist was ich bisher mache

$apt=eth0 $wifi=wlan0 #when monitor mode is enabled, the enviroment varible will adapt the name wlan0mon   sudo sysctl -w net.ipv4.ip_forward=1 sudo systemctl start apache2 sudo ifconfig $wifi down sudo ifconfig $wifi mode monitor sudo ifconfig $wifi up sudo airmon-ng check sudo airmon-ng start $wifi 

Beenden und öffnen Sie das Terminal für $ wifi, um den Namen wlan0mon anzupassen

sudo airodump-ng $wifi  sudo airbase-ng -a $gatewayBSSID -e $gatewayESSID -c $ch $wifi  sudo cp /etc/dhcp/dhcpd.et.conf /etc/dhcp/dhcpd.conf #et.conf is the non-original. sudo ifconfig at0 up sudo ifconfig at0 192.168.2.1 netmask 255.255.255.0 sudo dhcpd -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid at0 sudo service isc-dhcp-server restart  sudo iptables --table nat --append POSTROUTING --out-interface $atp -j MASQUERADE 

Jetzt stehe ich hier fest. Die Ausgabe meines iptables-Befehls ist

Schlechtes Argument "MASQUERADE"

Ich kann mir nicht vorstellen warum. Ich habe alle Anforderungen erfüllt. MASQUERADE ist ein echtes Argument, aber es wird einfach nicht erkannt. Es gibt keine weiteren Informationen, also habe ich nichts zu arbeiten. Ich weiß auch sehr wenig über iptable Weiterleitungsregeln. Ich habe es versucht, aber ich habe 2 Stunden lang versucht, die TCP / IP-Struktur zu entwirren, und ich weiß jetzt genauso viel wie zu Beginn, was sehr wenig ist. Wie kann ich die Ursache dieses Problems weiter diagnostizieren?

1

1 Antwort auf die Frage

2
Kamil Maciorowski

Die Fehlermeldung erwähnt, MASQUERADEaber die Ursache Ihres Problems ist $atp. Es gibt einen Tippfehler. Dein Befehl

sudo iptables --table nat --append POSTROUTING --out-interface $atp -j MASQUERADE 

ist wirklich

sudo iptables --table nat --append POSTROUTING --out-interface -j MASQUERADE 

denn du definierst $apt=eth0dann aber nicht Anführungszeichen $atp(nicht $apteinen Tippfehler!), was sich auf nicht zitierte leere Zeichenfolge auflöst und verschwindet.

Der Effekt -jwird als Schnittstellenname verwendet, MASQUERADEerscheint also als eigenständiges Argument und verhält sich nicht so, wie -j MASQUERADEes normalerweise der Fall wäre.

Wenn Sie eine bewährte Methode befolgen, um Variablen zu zitieren, --out-interface "$atp"würde Empty interface is likely to be undesireddies Ihre Aufmerksamkeit auf das "$atp"Argument lenken, in dem das eigentliche Problem liegt. Eine leere Zeichenfolge in Anführungszeichen erzeugt ein leeres Argument für den Befehl ( iptablesin diesem Fall wird das Aufheben der sudoSeite hier gerechtfertigt). Wenn die leere Zeichenfolge unerwartet ist, kann der Befehl entsprechend reagieren und dies ist gut.

Eine nicht zitierte leere Zeichenfolge verschwindet einfach. Dies "verschiebt" die folgenden Argumente. Sie iptableswussten nie, dass etwas zwischen --out-interfaceund war -j. Der Befehlszeilen-Parser wird getäuscht und der Befehl kann sich nur über ein anderes Argument beschweren, wie MASQUERADEin Ihrem Fall. Die Alternative ist schlimmer: Wenn diese "verschobenen" Argumente eine korrekte Fortsetzung bilden, wird der Befehl mit dem Array von Optionen ausgeführt, die Sie niemals an ihn übergeben wollten. Das kann schlecht sein; mit sudodiesem kann sehr schlecht sein.

Die Lektion lautet: Zitieren Sie Ihre Variablen.

Können Sie das bitte näher ausführen? Ich habe eth0 ohne die Variable ausprobiert und es hat funktioniert, aber warum? Wenn ich ein zitiertes „$ apt“ machen würde, gibt es mir nur den wörtlichen Wert, der ungültig wäre. user21303 vor 5 Jahren 0
@ user21303 Es gibt nichts zu erarbeiten. Ein Tippfehler: `$ atp` vs.` $ apt`. Kamil Maciorowski vor 5 Jahren 0
Erwischt. Ich hatte das Gefühl, dass das Verstehen des OSI-Modells eine wilde Verfolgungsjagd war. Die Lösung für Leute wie mich war immer etwas Einfaches. Danke, Mann! Gibt es irgendwelche guten Erklärungen zu OSI für Idioten wie mich? Ich bin echt neugierig user21303 vor 5 Jahren 0
Alle Tutorials, die ich gesehen habe, sind waaaaaaayyyy für ne fortgeschritten. Ich bin mir sicher, dass es nicht schwer ist. Die Leute erklären es einfach komisch. user21303 vor 5 Jahren 0
@ user21303 Ich kann Ihnen nicht mit dem OSI-Modell helfen, nicht mit meinem Fachwissen. Hier habe ich gerade einen Tippfehler entdeckt und mein Wissen über das Verhalten der Shell und ein generisches Verfahren zum Analysieren von Befehlszeilenoptionen wie "-j" angewandt. Dieser Ansatz würde mit fast jedem Befehl funktionieren, bei dem ein solcher Tippfehler auftritt. Ich denke, diese spezielle Frage ist gelöst. Wenn Sie nach einer Lernmaterialempfehlung in einer * separaten * Frage fragen möchten, beachten Sie, dass dies bei Super User nicht Thema ist. Kamil Maciorowski vor 5 Jahren 1