In meinem letzten Beitrag habe ich diskutiert Leerlauf-Scan und wie es einem Angreifer erlauben, ihre IP-Adresse während einer Port-Scan-Maske. In dieser Ausgabe werden wir uns einige Spuren suchen, als auch darüber diskutieren, wie zu erkennen, wenn ein Leerlauf-Scan hat sich gegen das Netzwerk verwendet.
Die Überwachung der IP-ID Inkrement
Lassen Sie uns, indem Sie die Pakete, die Überwachung der IP-ID-Feld auf dem Windows-System waren zu starten. Hier ist, was unser Testpaket aussah:
07:22:15.367140 IP (tos 0 × 0, ttl 64, id 63897, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.1.2203> 192.168.100.2.0:., Cksum 0xeca2 (richtig) gewinnen 512
Ein paar dieser Felder sind schon interessant. Der TTL-Wert auf "64", die eine Linux-oder UNIX-System schlägt gesetzt. Da wir Rohstoffe schriftlich das Paket direkt an den Draht ist dieser Wert tatsächlich hping gesteuert. 64 nur zufällig das Programm standardmäßig werden, aber wir konnten den Wert auf alles, was wir wollen mit dem "-t"-Schalter ändern.
Die Zieladresse wird als "192.168.100.2.0", die das Paket an TCP-Port 0 war unter der IP-Adresse 192.168.100.2 geschickt bedeutet gedruckt. Windows nicht bieten Dienste auf TCP-Port 0, aber das ist OK. Wir sind nicht wirklich versuchen, den Windows-Systemordner zu verbinden. Wir müssen nur sie, um uns ein IP-Paket, so dass wir die IP-ID-Wert überprüfen können. Wenn wir an einen anderen Port schlagen wollte, könnten wir hping die "-p"-Schalter.
Die ".," Nach der Soll-Vorgabe bedeutet, dass keine TCP-Flags innerhalb des Paketes gesetzt wurden. Dies wird als ein Null-Paket bezeichnet und nie während des normalen IP-Kommunikation auftreten. Aus diesem Grund wird möglicherweise NIDS, NIPS und Firewalls flag it. Wir haben eine Null-Paket, weil wir nicht sagen, hping einem der TCP-Flags gesendet. Zum Beispiel das Hinzufügen der Option "-S"-Schalter würde das SYN-Flag aktiviert haben, "-A" wäre auf der Anerkennung Flagge wiederum und so weiter.
Alle unsere Testpakete auf die Windows-Systemen würde ähnlich aussehen wie diese. Die einzigen Werte, würde sich ändern, sind die Zeitstempel (natürlich), der TCP-Quellport und der CRC-Prüfsumme Wert.
Hier ist, was die Antworten wie frisch aus dem Windows-System aussehen:
07:22:15.367296 IP (tos 0 × 0, ttl 128, id 108, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.0> 192.168.100.1.2203: R, cksum 0xc431 (richtig), 0:0 (0) ack 918250228 win 0
07:22:16.367453 IP (tos 0 × 0, ttl 128, id 109, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.0> 192.168.100.1.2204: R, cksum 0xfa78 (richtig), 0:0 (0) ack 2127488152 win 0
07:22:17.367763 IP (tos 0 × 0, ttl 128, id 110, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.0> 192.168.100.1.2205: R, cksum 0x2b9f (richtig), 0:0 (0) ack 1611256374 win 0
Der wichtigste Wert ist hier die IP-ID, wie "id" identifiziert. In das erste Paket ist auf 108 gesetzt, und dann wird der Wert Schritten von +1 für jedes weitere Paket (109 dann 110). Solange wir auf eine ununterbrochene Folge in die IP-ID finden Sie weiter, wir wissen, das Windows-System überträgt keine andere Pakete außer denen, die Teil dieser Sitzung.
Probing einen geschlossenen Port
Denken Sie daran, dass im Rahmen unseres Scan, werden wir Spoofing werden die Quell-IP-Adresse des Windows-Systems bei der Ziel-Ports auf einem entfernten System. Eine Änderung der IP-ID Inkrement ist, was sagt uns, wir fanden einen offenen Port.
Werfen wir einen Blick auf eines dieser Pakete können:
10:30:28.852602 IP (tos 0 × 0, ttl 64, id 41256, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.1266> 192.168.100.3.79: S, cksum 0x97a6 (richtig), 1704542340:1704542340 (0) win 512
Beachten Sie die Quell-IP-Adresse ist, dass der Windows-System (192.168.100.2). Wir wissen das nicht aus dem Windows-System kommen aber, weil die TTL auf 64 eingestellt ist. Das ist also ein Paket, das wir von 192.168.100.1 erzeugt mit Hilfe einer zweiten Instanz von hping.
Beachten Sie auch, haben wir TCP Port 79 gezielte und auf das SYN-Flag aktiviert. Hier ist die Antwort, die wir aus dem fernen Ziel erhalten:
10:30:28.852839 IP (tos 0 × 0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), Länge 40) 192.168.100.3.79> 192.168.100.2.1266: R, cksum 0xbb1a (richtig), 0:0 (0) ack 1704542341 win 0
Beachten Sie die "R"-Wert, der uns sagt, die Reset-Flag wurde auf im TCP-Header eingeschaltet. Wir sehen auch "ack" die uns sagt, die Anerkennung Flagge wurde auch gedreht. Das ist ein Fehler-Paket informiert die Quelle, die den TCP-Port in einem geschlossenen Zustand befindet. Beachten Sie auch das Paket ist, das Windows-System übertragen, da das war die Quell-IP-Adresse in das Testpaket.
Wie also wird das Windows-System reagieren? Sie können von meinem letzten Beitrag vergessen, dass die RFCs Zustand sollte man sich nie zu einem Fehler-Paket antworten. Auch wenn das Windows-System hat keine Ahnung, was das Ziel spricht, wird es ruhig verwerfen diesen Fehler Paket. In anderen Worten, das Windows-System keine Antwort senden. Das heißt, wir sollten keine Änderung der IP-ID Inkrement zu sehen.
Probing einen offenen Port
Werfen wir nun einen Blick auf, was passiert, wenn wir einen Hafen, der tatsächlich in einem geöffneten Zustand Ziel. Hier ist das Testpaket. Hinweis: Es ist ziemlich ähnlich wie die letzte, außer jetzt sind wir überprüfen TCP-Port 80.
10:29:46.947964 IP (tos 0 × 0, ttl 64, id 15249, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.1984> 192.168.100.3.80: S, cksum 0x476b (richtig), 947341260:947341260 (0) win 512
Hier ist die Antwort vom Ziel. Beachten Sie, dass wir ein "S" statt eines "R", die sie SYN-Flag auf, anstatt die Reset-Flag eingeschaltet bedeutet zu sehen. Dies ist das Ziel Weise der Unterrichtung der Quelle, die den TCP-Port 80 offen ist und eine Anwendung sitzt dahinter Service-Verbindungen.
10:29:46.953333 IP (tos 0 × 0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), Länge 44) 192.168.100.3.80> 192.168.100.2.1984: S, cksum 0x0de6 (richtig), 262246932:262246932 (0) ack 947341261 win 5840 <mss 1460>
Also dieses Mal das Windows-System ein Paket empfängt, sagt: "Sicher, Sie können den TCP-Port 80 zu verbinden." Dies ist ein Problem für die Windows-System, weil es keine Verbindung Eintrag sagen, dass es tatsächlich versucht, an Port 80 auf dem Ziel verbinden hat. Ohne die Verbindung Eintrag, hat Windows keine Möglichkeit zu wissen, welche Anwendung forderte die Sitzung. In diesem Sinne, ist es das einzige, was sie tun können, übermitteln ein Reset-Paket an das Ziel zu töten die Sitzung. Hier ist, was das Paket aussah:
10:29:46.953439 IP (tos 0 × 0, ttl 128, id 176, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.1984> 192.168.100.3.80: R, cksum 0x5df1 (richtig), 947341261:947341261 (0) win 0
Beachten Sie, dass Windows das nächste verfügbare IP-ID in der IP-Header (176) gestempelt. So hatten wir die Überwachung der IP-ID Zuwachs auf dem Windows-System in einer anderen Sitzung, würden wir sehen: 173, 174, 175, 177, 178, 179. In anderen Worten, wir würden erkennen, dass 176 wurde vermisst (+2 aus dem vorherigen Paket) zu haben. Dies würde unsere Indiz dafür sein, dass die TCP/80 Sonde geschickt, um das Ziel einen offenen Port zu treffen.
Identifizieren eines Leerlauf-Scan
So eine müßige Scan hat eine ausgezeichnete Arbeit der Maskierung der wahre Quell-IP-Adresse eines Port-Scan. Dies bedeutet, dass ohne Zugang zu Informationen über die Windows-Host (etwas, das nicht vorhanden sein wird, wenn der Angriff ihre Hausaufgaben gemacht hat) anmelden, werden wir niemals in der Lage sein, den wahren Quell-IP-Adresse des Angriffs zu entdecken.
Gibt es eine Möglichkeit, um eine inaktive Scan wurde als ein straight forward Port-Scan durchgeführt, so dass wir sagen, ob es sich lohnt die Untersuchung der Quell-IP-Adresse ist wissen? Es gibt in der Tat ein paar Hinweise, wir suchen können.
Prüfwiederholungen
Ist der betroffene System hinter einer Firewall sitzen, werden Sie feststellen, einen Unterschied in der Anzahl der Prüfwiederholungen im Vergleich zu einem normalen Port-Scanner. Wenn jemand einen normalen Port-Scanner läuft, wird der Scanner in der Regel getroffen offene Ports nur einmal, sondern Firewall-Ports mehrfach. Dies liegt daran, die Firewall-Ports keine Antwort zurück. Der Scanner macht mehrere Versuche, um sicherzustellen, dass die Pakete nicht nur verloren gehen. Da die offenen Ports tatsächlich reagieren wird, ist nur ein Testpaket erforderlich.
Wenn ein Leerlauf-Scan durchgeführt wird, ist das Gegenteil der Fall. Wenn ein Firewall-Port wird untersucht es wird keine IP ID Inkrement ändern auf dem Windows-System sein. So nur eine Prüfung erforderlich ist, um zu bestätigen dies nicht durch aktives Zuhören Port. Wenn ein offener Port ist jedoch sondiert werden wir eine Veränderung der IP-ID des Windows-Systems zu erhöhen. Während denke, dass wir dies auf uns zu finden einen offenen Port, könnte es genauso gut sein, weil das Windows-System geschickt ein Broadcast. Wir werden also wollen mehrere Sonden gegen die offene Schnittstelle, um sicherzustellen, das Windows-IP-ID-Daten konstant bleibt durchzuführen.
Also:
- Probe Firewall-Ports häufiger als offene Ports = normal Port-Scanner
- Probe offenen Ports immer häufiger, dass Firewall-Ports = idle-Scan
Timing
Normaler Port-Scans werden extrem schnell. Es ist nicht ungewöhnlich, dass Hunderte von Sonde Pakete pro Sekunde zu sehen. Mit einem Leerlauf-Scan haben wir aber die Dinge ein wenig langsamer zu nehmen. Das ist, weil wir die IP-ID der gefälschten Adresse muss überprüfen, senden Sie das Testpaket erlauben genügend Zeit für die Sonde, um eine Antwort zu entlocken, geben die gefälschte System genug Zeit, um mit einem Reset zu reagieren, wenn erforderlich (also mit einer IP-ID ), und überprüfen Sie dann die IP-ID wieder zu sehen, ob der Zuwachs hat sich geändert.
Versuchen Sie, alle diese Schritte zu schnell führen, und Sie werden die Kosten der Genauigkeit zu zahlen. Zum Beispiel nmap unterstützt Idle-Scans mit der "-SI"-Schalter. Der Standardwert extrem schnelle Scangeschwindigkeit funktioniert gut, wenn alle Systeme auf dem gleichen vermittelten Netzwerk befinden. Wenn die Hosts 15 Hops entfernt voneinander auf dem Internet jedoch ist meine Erfahrung die Richtigkeit Rating fällt erheblich, wenn Sie verlangsamen die Scan-Geschwindigkeit.
Also:
- Hunderte von Paketen pro Sekunde = normal Port-Scanner
- Ein Dutzend oder weniger Pakete pro Sekunde = möglich im Leerlauf zu scannen, könnte nur eine Slow-Scan werden
TTL-Feld
Sehen wir uns wieder auf die gefälschte Testpaket sowie die legitimen Resetverhalten durch das Windows-System gesendet:
10:29:46.947964 IP (tos 0 × 0, ttl 64, id 15249, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.1984> 192.168.100.3.80: S, cksum 0x476b (richtig), 947341260:947341260 (0) win 512
10:29:46.953439 IP (tos 0 × 0, ttl 128, id 176, offset 0, flags [none], proto TCP (6), Länge 40) 192.168.100.2.1984> 192.168.100.3.80: R, cksum 0x5df1 (richtig), 947341261:947341261 (0) win 0
Sie können die TTLs bemerkt haben, sind weg von einander. Wenn diese beiden Pakete waren in der Tat von 192.168.200.2 entstand dann würden sie beide den gleichen Ausgangspunkt TTL-Wert. Die Tatsache, dass sie anders sind sagt uns, dass einer von ihnen gefälschte ist.
Wenn Sie die Überwachung des Umfangs des Zielsystems und feststellen, dass die SYN-und Reset-Pakete unterschiedlichen TTL-Werten haben, ist das ein Hinweis darauf, dass es sich eventuell um eine müßige scannen. Nun, wie bereits erwähnt, ist es durchaus möglich, die TTL auf das, was wir wollen in unserer gefälschten Paket gesetzt. So eine intelligente Angreifer ist einfach gehen zu ihrem Ausgangspunkt TTL auf 128 gesetzt, um besser zu imitieren das Windows-System. Wenn sie dies tun, ist Ihre einzige Hoffnung, dass der Angreifer und das Windows-System eine unterschiedliche Anzahl von Hops entfernt sind. In anderen Worten, wenn Sie konsequent die SYN-Pakete mit einer TTL von 115, aber das setzt konsequent eine TTL von 113, sind Sie wahrscheinlich Blick auf ein Leerlauf-Scan.
Wenn die TTLs übereinstimmen, können wir nicht ausschließen, eine müßige scannen. Der Angreifer kann nur sein, dass gut.
Also:
- TTLs von SYNs und RST stimmen aber nicht überein = idle-Scan
- TTLS von SYNs und RST match = normale Port-Scanner oder Smart Idle-Scanner
IP ID Wert
Der beste Weg, eine inaktive Scan-Tag nutzen die gleiche Sache der Angreifer verwendet, nämlich die IP-ID-Wert. Nehmen Sie einen Blick auf die beiden letzten decodierten Paketen. Beachten Sie, dass die IP-ID in der ersten 15249 ist aber in der zweiten ist es 176. Wenn Sie sehen, eine müßige scannen sind, werden Sie feststellen, der Rest Pakete konsequent über eine IP-ID von +2 (dasselbe der Angreifer sieht), aber die SYN-Pakete werden einige völlig unabhängig Wert haben. Die IP-ID Zuwachs in der SYN-Pakete könnte vorhersehbar oder es könnte zufällig sein. Ganz ehrlich, es spielt keine Rolle. Was zählt ist, dass man einige Muster in IP-ID der Rest-Pakete, die nicht jive mit der IP-IDs in der SYN-Pakete vor Ort.
Also:
- IP-ID des SYN und RST-Pakete erscheinen im Zusammenhang = normal Port-Scanner
- IP ID Zuwachs von RST entspricht nicht SYNs = idle-Scan
Exec Zusammenfassung
Ich hoffe, Sie haben nun ein besseres Verständnis dessen, was auf dem Draht geschieht, wenn ein Angreifer führt einen Leerlauf-Scan. Wenn wir mit einer Leerlauf-Scan ausgerichtet sind, können wir nicht bestimmen, der wahre Quell-IP-Adresse des Angreifers. Das Beste, was wir zu erreichen hoffen kann, ist festzustellen, dass die Scan-Leerlauf-Scan im Vergleich zu einem normalen Port-Scan ist. Es gibt eine Reihe von verräterischen Spuren in Paketen, von denen die besten der IP ID Wert ist.