Heimliche Scans und falsche Fährten
Seite 2: Idle-Scans
Idle-Scans
Aus Sicht eines Angreifers sind all diese Techniken unbefriedigend, da sie nicht zuverlässig verhindern können, dass seine IP-Adresse registriert wird. Ideal wäre es, wenn er gar keine Pakete mit seiner wahren Adresse an sein Opfer schicken müsste. Und genau das ermöglicht der so genannte Idle-Scan.
Dabei bedient sich der Scanner eines zweiten Systems, das derzeit keine eigenen Internet-Aktivitäten aufweist ("idle" heißt auf Deutsch soviel wie "untätig"). Das äußert sich bei Windows-Systemen (und einigen anderen) so, dass die IP-IDs der Pakete des Idle-Hosts sequenziell ansteigen. Jedes IP-Paket trägt eine eigene ID, damit der Empfänger eventuell fragmentierte Paketschnipsel richtig zuordnen kann. Die meisten Systeme setzen sie für jedes Paket um eins hoch:
# hping2 -S -p 80 192.168.0.2
...id=9289 sport=80 flags=SA ...
...id=9290 sport=80 flags=SA ...
...id=9291 sport=80 flags=SA ...
Dieses Feature lässt sich unter anderem auch zu heimlichen Lastmessungen ausnutzen (Details dazu finden Sie in c't 23/03, S. 212: "Wer zählt gewinnt").
Dann deckt der Scanner den Idle-Host mit einem kontinuierlichen Strom von Paketen ein, die eine Antwort erzeugen und wertet deren IP-IDs aus. Das können beispielsweise Ping-Anfragen und die dazughörigen Antworten sein. Jedes weitere Paket, das der Idle-Host jetzt verschickt, bewirkt einen Sprung in der IP-ID-Sequenz: 3, 4, 6, 7 bedeutet, dass der Rechner ein Paket mit der ID 5 an eine andere Adresse geschickt hat (sofern das Paket nicht verloren gegangen ist, was aber recht selten geschieht).
Im nächsten Schritt schickt der Scanner ein SYN-Paket mit der Absender-Adresse des Idle-Hosts an sein eigentliches Opfer, den Server. Ist auf dem angesprochenen Port ein Dienst aktiv, antwortet der Server mit SYN/ACK an den Idle-Host. Dieser weiß jedoch nichts von einer Verbindungs-Anfrage seinerseits und antwortet deshalb mit einem Reset-Paket. War der Port jedoch geschlossen, schickt der Server ein Reset an den Idle-Host, das dieser jedoch ignoriert.
Der Scanner sieht also bei einem offenen Port einen Sprung in der IP-ID-Sequenz des Idle-Hosts (das RST-Paket), bei einem geschlossenen Port tut sich nichts. Eventuelle Paketverluste kann man durch Wiederholen der Scans auf den fraglichen Ports erkennen.
Offener Port
Geschlossener Port
Dieser doch recht komplizierte Vorgang lässt sich natürlich automatisieren. Der Port-Scanner nmap hat diese Scan-Technik sogar soweit perfektioniert, dass er selbstständig erkennt, ob ein designierter Idle-Host tatsächlich linear ansteigende IP-IDs liefert.
Da es kein Problem darstellt, solche Idle-Hosts aufzupüren, sind Port-Scan-Alarme nutzlos geworden. Die einzigen, die man damit noch fängt, sind Script-Kiddies -- Klingelputzer eben. Echte Einbrecher kennen und nutzen die Idle-Scan-Technik längst. Bei einer Strafverfolgung beziehungsweise bei disziplinarischen Maßnahmen gegen vermeintliche Verursacher von Port-Scans ist zu beachten, dass die Fährten auch bewusst falsch gelegt worden sein können.
Statt Zeit und Mühe auf Port-Scans zu verschwenden, sollte man sich statt dessen auf die Log-Einträge konzentrieren, bei denen tatsächlich ein Verbindungsaufbau erfolgt ist, also beispielsweise eine Web-Seite abgerufen wurde. Ein solcher Verbindungsaufbau lässt sich nur dann mit einer gefälschten IP-Adresse durchführen, wenn der Angreifer die sogenannte Sequenzstartnummer (Initial Sequence Number) erraten kann. Das ist erstens nicht mehr ohne weiteres möglich und zweitens auch nicht effizient, weil der Angreifer die abgerufenen Daten nicht bekommt.
Siehe dazu auch:
- Fyodors Beschreibung des Idle-Scans in nmap
- Der Port-Scanner nmap
- Universelles Ping
(ju)