In den letzten Wochen hielten uns vor allem zwei Würmer in Atem, die Sicherheitslöcher in Microsoft-Produkten – wo sonst? – ausnutzen, aber auch Remote Clients spielen diesmal eine Rolle.
Schadensursache Nummer eins ist zwar die Naivität oder gar Schusseligkeit von Administratoren aller Ebenen, aber auch die Strategien der Schädlinge selbst werden immer pfiffiger und sorgen stets für neue Überraschungen. Aber jetzt zum ersten Fall.
Remote-Hardware-Identifikation
Mancher Systemverwalter steht vor der Aufgabe herauszufinden, was denn tatsächlich in diesem oder jenem Arbeitsplatzrechner steckt, der ungünstigerweise in einem mehrere Kilometer entfernten Gebäude steht. Und sei es nur einmal im Jahr, der Inventur wegen. Hinfahren und den Rechner aufschrauben ist eine naheliegende, aber nicht die zeitsparendste Methode.
Hierfür wurde schon vor längerem das Desktop Management Interface (DMI) geschaffen, das sämtliche Werte auszugeben vermag. Erfreulicherweise kann Linux die DMI-Informationen zur Laufzeit auslesen. Das ist die Aufgabe des Tools Dmidecode [1] von Alan Cox. Dabei handelt es sich um eine einzelne C-Datei, die sich mit
gcc -o dmidecode dmidecode.c
übersetzen lässt. »dmidecode« liest die Daten aus »/dev/mem« und benötigt Leserechte auf diese Datei. Es erzeugt eine umfassende Liste der vorgefundenen Hardware.
Natürlich ist die Qualität dieser Informationen von einer sauberen Implementierung der DMI-Schnittstelle durch das BIOS abhängig. Bei einigen Ausgaben kann also gesundes Misstrauen nicht schaden – oder der Griff zum Schraubenzieher.
Tastatur mit Löchern
Bei Updates oder Neuinstallationen von Debian (Woody oder SID) funktionieren die Umlaute häufig nicht. »loadkeys sg-latin1« für die schweizer Tastatur bringt nichts, die deutsche Belegung auch nicht. Die richtigen Fonts waren gesetzt, das Lokalisieren mit der richtigen »locale« brachte im vorliegenden Fall aber nichts.
Abhilfe: In »/etc/enviroment« steht defaultmäßig »LANG=C«. Diese Zeile sollte man ändern in »LANG=de_DE« (oder »de_CH« für die Schweiz). Danach funktioniert alles wieder.
Hi! How are you?
Seit mindestens 17. Juli grassiert im Internet ein sehr hartnäckiger E-Mail-Wurm, der auf den Namen W32.Sircam.Worm@mm hört. Ebenso wie Melissa und Loveletter nutzt dieser Wurm Sicherheitslöcher in Microsoft Outlook; daher sind Linux-Nutzer mangels Binärkompatibilität zu Windows davon nicht unmittelbar betroffen.
Sircam funktioniert so: Er hält sich ausschließlich im Hauptspeicher auf und entgeht daher den meisten Virenscannern. Ab und an scannt er das private Adressbuch in Outlook, nimmt sich Dateien aus dem Ordner »Eigene Dateien« und verschickt sie (möglichst solche mit privaten oder vertraulichem Inhalt), nicht ohne sich selbst anzuhängen und auf diese Weise zu verbreiten.
Zu erkennen sind Mails dieser Art an bestimmten Zeilen im Body der Mail: »Hi! How are you?« oder »Hola como estas« sind ziemlich verlässliche Erkennungszeichen. Genaue Informationen zu diesem Wurm finden sich auf der Webseite von Symantec [2]. Von Microsoft gibt es bereits seit Mitte Juni einen Outlook-Fix für die hier benutzte Hintertür.
Wie gesagt sind Linux-Nutzer davon nur mittelbar betroffen, namentlich durch die entstehenden Download-Kosten für die Mail. Die versandten Dateien sind nach eigener Erfahrung bis zu 8 MByte groß. Wer seine Mail nach Größe oder anderen Kriterien auf dem Mailserver filtern kann, sollte das tun.
Es ist sinnvoll, die Absender solcher Mails höflich davon in Kenntnis zu setzen, dass sie infiziert sind. Flames oder Ähnliches bringen nichts – die meisten Absender sind selbst nur ahnungslose Opfer.
Dank Procmail ist es recht einfach, diesen Vorgang zu automatisieren. Einen kurzen Beispielausschnitt für die ».procmailrc« zeigt das Listing 1. »$OFFADDR« enthält meine offizielle E-Mail-Adresse und »$SENDMAIL« den vollen Pfad des »sendmail«-Binaries. Diese Variablen werden weiter oben in der ».procmailrc« definiert.
Mit Hilfe von »formail« generiert das Skript eine Antwortmail mit entsprechenden Mailheadern. Der Header »X-Loop« dient zur Vermeidung von Mailloops. Abschließend versenkt das Skript die empfangene Mail in »/dev/null«.
Die beiden Dateien »SirCam-Antwort.1« und »SirCam-Antwort.2« enthalten den ersten beziehungsweise zweiten Teil der Nachricht an den Absender, die man sich geschickt formulieren kann.
Auf diese Weise gelingt es vielleicht, Sircam weitgehend auszutrocknen – bis zum nächsten Wurm.
Interaktiv |
|
In loser Folge werden wir in dieser Kolumne alle möglichen Kniffe und Tricks (nicht nur) zu Linux und Systemverwaltung veröffentlichen. Die Leser sind ausdrücklich zur Mitwirkung aufgerufen – jeder veröffentlichte Beitrag wird mit 50 Mark honoriert. Schicken Sie Ihre Beiträge bitte an [hmilz@linux-magazin.de]. |
Noch `n Wurm
Während Sircam ja noch relativ harmlos ist und bis auf die Verschwendung von Bandbreite kaum Schaden anrichtet, ist Code Red richtig böse, zumindest zu den ahnungslosen Betreibern von Microsofts Internet Information Server IIS. Informationen zu Funktionsweise und Gefahrenpotenzial gibt es am umfassendsten auf der Incidents-Seite [3].
Auch wenn es uns Linux-Nutzer nur am Rande berührt – wir können helfen, den Wurm einzudämmen. Das Tool Code Red Neck [6] ist nichts anderes als eine Art Dummy-Server, der Verbindungsversuche auf Port 80 ins Leere laufen lässt und eine Weile bindet, bis der TCP-Stack des angreifenden Servers einen Timeout produziert (Teergrube). Das geht im Prinzip so (Zitat aus dem Readme):
»It works simply by responding to these connection attempts: a normal TCP port 80 connection works like this:
Client Port 1025:SYN ---> Server Port 80
The client sends a SYN from a ephemeral port to the servers well known port 80 to initiate a connection.
The server responds with a packet containing an acknowledgement flag and a SYN flag to set up the “reverse” connection.
Client Port 1025 <--- Server Port 80: SYN/ACK
The client then acknowledges the server’s SYN
Client Port 1025:ACK ---> Server Port 80
That is what is known as a “three way handshake”.
What CodeRedneck does, is provide clients with a three way handshake on IP addresses where there is no server. This causes the client to “hang” until its TCP/IP stack finally times-out the connection.« (Zitat Ende)
Code Red Neck liegt im Sourcecode vor und benötigt zur Übersetzung »libpcap« und »libnet«, die den meisten Distributionen beiliegen dürften. Um es zu benutzen, muss man mit der BPF-Syntax von »tcpdump(8)« vertraut sein. Auf meiner privaten Maschine lautet der Aufruf in »/etc/ppp/ip-up«:
/usr/local/sbin/CodeRedneck -s <$>Ó<a$> -i ippp0 tcp and dst port 80
In »/etc/ppp/ip-down« entferne ich den Prozess wieder mit »killall CodeRedneck«. Das ist selbstverständlich verfeinerbar und auch gegen Portscanner zu verwenden, die auf Port 25 (beispielsweise Spammer, die nach offenen Mailrelays suchen) oder Port 139 (eine Sicherheitslücke im SMB-Server von Windows NT nutzend) gehen wollen.
Der nächste Schritt wäre ein Skript, das regelmäßig die Logdatei »/var/log/messages« nach Einträgen von Code Red Neck durchsucht, die IP-Adressen der angreifenden Rechner ausfiltert und den zuständigen Administratoren eine höfliche Mail schickt, wie man IIS patcht – das Patch ist nämlich schon seit Wochen verfügbar [4] -, und ein Reinigungs-Tool von Microsoft [5]. Vorschläge für ein solches Benachrichtigungs-Skript werden dankbar angenommen.
Geisterhafte PDF-Zusammenführung
PDF als Lösung für alle Sicherheitsprobleme bei der Verbreitung von Dokumenten über alle Plattformen – schön wär’s. Manchmal wäre es aber noch schöner, mehrere PDF-Dateien zu einer einzigen zusammenfassen zu können. Klar, dass das mit dem Adobe Distiller funktioniert, aber erstens ist der nicht ganz kostenlos und zweitens sieht Adobe in Distiller auf Linux offenbar kein Geschäft, jedenfalls hat der Hersteller bisher nichts in dieser Richtung unternommen.
Es geht aber auch einfacher, und zwar mit Ghostscript: PDFs lesen kann das Programm ja schon eine ganze Weile, wenn auch nicht immer fehlerfrei und ohne Stackfehler. Mit dem Device »pdfwrite« kann Ghostscript PDFs aber auch schreiben. Beispiel für ein denkbares Tool »pdfcat«:
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -q Ó<a$> -dSAFER -sOutputFile=output.pdf file1<$>.pdf ...
Happy catting! (hmi)
Listing 1: Procmail gegen Sircam |
:0 BH
* !^X-Loop: $OFFADDR
* (Hi! How are you?|Hola como estas)
{
DEFAULT=|
FILENAME=`egrep Content-Type`
:0 c
| (formail -r -A"From: $OFFADDR"
-A"X-Loop: $OFFADDR" -A"Precedence: urgent" ;
cat tmp/SirCam-Antwort.1 ;
echo $FILENAME ;
cat tmp/SirCam-Antwort.2 ) | $SENDMAIL -t
:0
/dev/null
}
|
Infos |
|
[1] Dmidecode: [ftp://ftp.uk.linux.org/pub/linux/alan/DMI/dmidecode.c] [2] Symantecs Sircam-Seite: [http://www.symantec.com/avcenter/venc/data/w32.sircam.worm@mm.html] [3] Code-Red-Statistiken: [http://www.incidents.org/] [4] IIS-Patch nebst Anleitung: [http://www.digitalisland.net/codered/] [5] Code-Red-Reiniger: [http://www.microsoft.com/Downloads/Release.asp?ReleaseID=31878] [6] Code Red Neck: [http://www.hackbusters.net/CodeRedneck.tgz] |






