Demontage

Gefährliche Kommandos erkennen und vermeiden

Mit dem Veröffentlichen der sieben angeblich tödlichsten Linux-Kommandos schlug der Informatikstudent Jun Auza vergangenen November einige Wellen im Internet [1]. Schnell sammelten sich in zahlreichen Diskussionen etliche weitere Killerbefehle. Trennen Sie jedoch die Spreu vom Weizen, bleibt lediglich eine Hand voll Kommandos übrig, die Sie zudem mit den richtigen Maßnahmen gekonnt entschärfen.

Auch wenn es reizt, sollten Sie die im Folgenden genannten Kommandos niemals auf einem Produktivsystem ausprobieren. Wie schon in Jun Auzas Blog dienen sie hier lediglich als Beispiel – denn nur wer um die Gefahren weiß, schafft es auch, sich gegen sie zu schützen. Möchten Sie doch eines der Kommandos testen, verwenden Sie unbedingt eine abgeschlossene, virtuelle Maschine mit einem nicht mehr benötigten Linux-System als Testobjekt.

Lösch mich

Zu den Klassikern der zerstörerischen Kommandos gehört der Befehl rm. Vielleicht haben Sie ihn schon öfter recht unbedarft verwendet, um eine Datei von der Festplatte zu putzen. Über den zusätzlichen Parameter -r löscht er allerdings auch Verzeichnisse mitsamt deren Inhalten. Warum also nicht einfach mal ins Wurzelverzeichnis wechseln (cd /) und dort alle Ordner tilgen:

$ sudo rm -rf *

Dieser Befehl wischt das gesamte System von der Platte. Das zusätzliche f sorgt dafür, dass alle lästigen Nachfragen entfallen. Im Internet findet man häufig auch die Alternative:

$ sudo rm -rf /

Diese fangen aktuelle Rm-Versionen jedoch standardmäßig ab. Daher birgt die erst genannte Variante mehr Gefahrenpotential, weil Sie sie bei Wartungsarbeiten schon mal gerne in Unterverzeichnissen absetzt. Wechseln Sie dann doch ins Wurzelverzeichnis, wandert das eigene System flugs ins Nirvana (Abbildung 1).

Abbildung 1

Abbildung 1: Das bleibt von Ubuntu 8.10 im Hauptspeicher übrig, nachdem rm -rf * im Hintergrund seine Arbeit verrichtet hat.

Hübsch verpackt

Wie das jeweils vorangestellte sudo schon dezent andeutet, benötigen Sie für die Löschaktionen glücklicherweise Administratorrechte – wie übrigens auch bei den meisten anderen der folgenden Befehle. Wer deshalb jetzt denkt, er wäre als normaler Benutzer weitgehend sicher, der hat die Rechnung ohne den Wirt und vor allem ohne die kleine, aber manchmal gemeine Bash gemacht. Dieses Programm stellt bei fast allen Linux-Distributionen die Kommandozeile bereit. Neben ein paar Zusatzfunktionen bietet sie auch die bequeme Verkettung von Befehlen. Damit basteln Sie auf die Schnelle folgendes:

$ sudo echo $'\x63\x64\x20\x2f\x3b\x20\x73\x75\x64\x6f\x20\x72\x6d\x20\x2d\x72\x66\x20\x2a' > /tmp/hrzdg; chmod 755 /tmp/hrzdg; /tmp/hrzdg;

Die kryptische Zeichenkette repräsentiert lediglich sudo /;rm -rf * in einer anderen Schreibweise. Versteckt eine böswillige Person sie beispielsweise in einem Installationsskript, und gestehen Sie diesem wiederum in aufgeregter Vorfreude Root-Rechte zu, nimmt das Unheil seinen Lauf. Gemeinerweise schaffen es noch nicht einmal Linux-Profis, den Klartext der obigen Zeile auf Anhieb zu entziffern.

Das gelingt erst recht nicht, wenn der Gauner die Zeile noch weiter ausschmückt – die Bash und viele andere Programmiersprachen halten dafür noch viel hübschere Methoden parat. Beim hier gezeigten Befehl übersetzt die Bash zunächst die Batterie aus Hexadezimalzahlen in den Befehl, den sie anschließend in der Datei /tmp/hrzdg speichert. Diese versieht das Kommando mit den Rechten zum Ausführen (chmod 755) und ruft die Datei direkt auf.

Schreibzeug

Ein weiterer Klassiker der gepflegten Linux-Vernichtung basiert auf dem Programm dd. Normalerweise nimmt es Daten aus einer Datei und schreibt sie in eine andere. Dummerweise behandelt Linux alles mögliche als eine Datei, wie etwa jede einzelne Festplatte:

$ sudo dd if=/dev/urandom of=/dev/sda

Die Gerätedatei /dev/urandom liefert Zufallszahlen, mit denen dd ohne Rücksicht auf Verluste brav die erste Festplatte (sda) befüllt. Anstelle von /dev/urandom wäre es auch möglich, eine andere Festplatte als Datenquelle zu verwenden. Das entwickelt sich insbesondere dann zur Gefahr, wenn Sie das Programm, wie häufig empfohlen, zum Datenretten und Sichern benutzen. Ein kleiner Dreher bei den Parametern, und Sie verlieren das Original oder die einzige Sicherheitskopie.

Das betrifft übrigens nicht nur dd: Schon der gute alte Kopierbefehl cp leistet genau dasselbe:

$ sudo cp /dev/urandom /dev/sda

Prüfen Sie daneben auch vor dem Umleiten jeglicher Daten genau, was Sie an welche Stelle im Dateisystem schicken:

$ sudo Kommando > /dev/sda

Damit leiten Sie die Ausgabe des Kommandos auf die erste Festplatte um. In der Regel segnet dabei auch gleich die Partitionstabelle das Zeitliche, was wiederum einen Neustart des Linux-System unmöglich macht. Wem das alles bislang zu kompliziert war, der formatiert kurzerhand mit einem der Mkfs-Befehle die Festplatte:

$ sudo mkfs.ext3 -F /dev/sda

Damit verpassen Sie der kompletten ersten Festplatte das Ext3-Dateisystem. Der Parameter -F sorgt wieder dafür, dass lästige Rückmeldungen ausbleiben.

Der Kniff mit dem Formatieren klappt allerdings nicht aus dem laufenden System heraus, sondern beispielsweise nur von einem Rettungsmedium. Gerade dann ärgert es aber meist besonders, wenn Sie durch einen Tippfehler statt der eigentlich zu formatierenden Partition sda5 gleich die gesamte Platte sda erwischen.

Bomben-Stimmung

Bislang haben Sie Daten immer nur gelöscht. Warum nicht einmal den umgekehrten Weg gehen und das Linux-System mit vielen Bits überfluten? Ein einfacher Hack verursacht ein wenig Chaos im Hauptspeicher:

$ :(){ :|:& };:

Achten Sie dabei penibel auf die Leerzeichen (nach der ersten und vor der zweiten geschweiften Klammer). Dieser – dank Bash wieder einmal ziemlich kryptische – Befehl erzeugt wie am Fließband immer weitere Prozesse, bis der Linux-Kernel in ihnen erstickt und schließlich komplett einfriert. Aufgrund seiner Arbeitsweise heißt das Kommando Forkbomb [2]. Zum Reanimieren hilft dann nur noch ein Druck auf die Reset-Taste am Computer.

Moderne Linux-Systeme verfügen in manchen Fällen jedoch über einen Mechanismus, der verhindert, dass der Rechner komplett einfriert. Ein passender Eintrag in der Datei /etc/security/limits.conf setzt hier für genau solche Zwecke Grenzen [3]. Einen ähnlichen Effekt wie mit einer Forkbomb erreichen Sie durch folgendes Kommando:

$ sudo dd if=/dev/urandom of=/dev/port

Damit schreiben Sie zufällige Zahlen in die I/O-Ports, mittels derer Treiber mit den eigentlichen Geräten sprechen, und setzen so das System komplett schachmatt. Alternativ killen Sie über sudo kill -9 -1 einfach alle Prozesse.

Volle Archive

Neben der gezeigten Forkbomb gibt es noch die Tarbomb und die Decompression-Bomb: Im ersten Fall entpacken Sie ein Tar-Archiv, das entweder mehrere Millionen Dateien auf die Festplatte spült oder einfach lebenswichtige Dateien überschreibt. Gerade letzteres passiert sehr leicht, wenn Sie im Archiv eine neue Software vermuten und diese wie gewohnt mit Root-Rechten einspielen:

$ sudo tar xvfz Tar-Archiv -C /

Bei der Decompression-Bomb handelt es sich um eine Variante der Tar-Bombe. Hier erhalten Sie ein sehr kleines Archiv mit hochkomprimierten Daten. Beim Entpacken bläht sich das Ergebnis wie ein Heißluftballon auf der Festplatte über Hunderte von Gigabyte auf und erstickt Linux so in den Daten. Was dabei passiert, probieren Sie leicht aus, indem Sie eine Datei so lange mit Zahlen füllen, bis Sie keinen freien Platz mehr auf der Platte haben:

dd if=/dev/urandom of=Dateiname

Anschließend versagen einige Anwendungen den Dienst, und es dürfte Ihnen schwer fallen, noch geöffnete Dokumente zu speichern (Abbildung 2). Beim nächsten Start weigert sich unter Umständen sogar das X-Window-System, den Desktop auf den Schirm zu holen. Einen ähnlichen Effekt erzielen Sie, indem Sie mit cd /; sudo chmod 000 -R * einfach allen Dateien im Linux-System alle Rechte entziehen. Falls Ihnen das zu dramatisch erscheint, entfernen Sie kurzerhand die Datei mit allen Passwörtern via sudo rm /etc/passwd und sperren so sämtliche Benutzer aus.

Abbildung 2

Abbildung 2: Läuft die Festplatte voll, verweigert unter anderem OpenOffice den Dienst.

Abhilfe

Den meisten tödlichen Befehlen nehmen Sie den Schrecken, indem Sie ausschließlich als normaler Benutzer im Linux-System arbeiten. Alle großen Distributionen setzen von sich aus schon die Zugriffsrechte so restriktiv, dass nur Root beziehungsweise ein Administrator die gefährlichen Kommandos absetzen darf.

Das Sudo-System, wie es bei den Ubuntu-Varianten zum Einsatz kommt, schützt Sie hier nicht: Haben Sie einmal das Passwort eingegeben, laufen direkt danach abgesetzte Befehle mit Sudo ohne weitere Rückfrage durch – auch solche mit zerstörerischem Potenzial. Zwingen die Umstände Sie also doch einmal dazu, Befehle mit Administratorrechten zu benutzen, helfen die drei goldenen Regeln weiter, die Sudo in alten Zeiten beim ersten Einsatz anzeigte:

  • Große Macht geht mit großer Verantwortung einher.
  • Respektiere die Privatsphäre anderer.
  • Erst denken, dann tippen.

Bei der Installation von Software gilt ohnehin: Wer sich Software aus nicht vertrauenswürdigen Quellen bezieht, der braucht sich nicht zu wundern, wenn er am Ende mit einem kaputten System dasteht.

Infos

[1] Jun Auza, "The 7 Deadly Linux Commands": http://www.junauza.com/2008/11/7-deadly-linux-commands.html

[2] Informationen zur Bash Forkbomb: http://www.cyberciti.biz/faq/understanding-bash-fork-bomb/

[3] Informationen zur limits.conf: http://www.linux-hamburg.de/limits.html

Tip a friend    Druckansicht beenden Bookmark and Share
Kommentare