Jan 20

Jetzt weiss ich auch warum netcat das “Schweizer Taschenmesser” der Netzwerktechnik genannt wird. Gewaltig das Ding.

Doch von vorne – Folgende Ausgangssituation:

Man hat eine Maschine (BOB), die irgendwo hinter einer (SOHO-)Firewall steht. Diese SOHO-Speedport-Dingsdas sind meist so konfiguriert das nix reindarf, aber alles raus. Jetzt möchten wir aber gerne von einer anderen Kiste (die irgendwo im Internet hinter einem etwas eleganter konfigurierten Linux-Router steht, und hier mal ALICE heissen soll) per ssh auf BOB zugreifen. Ferner nehmen wir an, wir hätten gerade (temporär) Zugriff auf BOB (lokal, wie auch immer) und könnten auch auf ALICE rumtoben.

Problem: Direkt von einem Client hinter ALICE gehts nicht, weil unserer Client (Nennen wir ihn PLUTO – der der hinter ALICE geNATted sitzt) zwar durch ALICE rauskommt, aber an BOB’s SOHO-Router scheitert. Wäre doch prima wenn wir irgendwie eine Remoteshell von BOB aus aufmachen könnten. Wir trauen BOB aber nicht, und wollen Ihm auch nicht den SSH-Key/Password für ALICE rausrücken. SSH von BOB nach PLUTO/ALICE ist also doof – Was tun ??

Man nehme: Netcat und Named Pipes. Im einzelnen sieht das dann wie folgt aus:

  1. Brücke auf ALICE bauen:
    netcat -v -l -p 4711 -c "/bin/nc -l -p 4712"
    ALICE wartet jetzt also auf Port 4711. Alles was sich dort verbindet, wird dann mit einem neuen Listener, der auf 4712 horcht verbunden.
  2. Auf BOB erzeugen wir ein Device (Pipe) damit wir bidirektional den ssh-Datenstrom ins Netcat rein und auch wieder rausbekommen:
    mknod backpipe p
  3. Nun nehmen wir das ganze von BOB aus in Betrieb:
    netcat -vv ALICE 4711 <backpipe |netcat -v localhost 22 >backpipe
  4. Wenn wir auf PLUTO nun ein ssh root@ALICE -p 4712 ausführen, sind wir auf BOB angekommen. Voila

Sehr elegant, wie ich finde.

User die auf BOB meinetwegen root-rechte haben und Memdumps machen können, kommen nicht weiter, weil die ja keinen Key oder ähnliches von PLUTO oder ALICE haben, das netcat auf ALICE ist schon dicht mit einer Connection – da kann also auch nichts passieren. Und wir können prima von PLUTO aus auf BOB weiterarbeiten/remote unterstützen/whatever bis jemand die Pipe oder den Netcat tötet…

 

Tagged with:
preload preload preload