Running the paxtest program…
Linux Vanilla Kernel or Debian Kernel
Linux 2.6.32.25 #4 SMP Thu Nov 11 17:04:46 CET 2010 i686 Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux
Executable anonymous mapping : Vulnerable
Executable bss : Vulnerable
Executable data : Vulnerable
Executable heap : Vulnerable
Executable stack : Vulnerable
Executable shared library bss : Vulnerable
Executable shared library data : Vulnerable
Executable anonymous mapping (mprotect) : Vulnerable
Executable bss (mprotect) : Vulnerable
Executable data (mprotect) : Vulnerable
Executable heap (mprotect) : Vulnerable
Executable stack (mprotect) : Vulnerable
Executable shared library bss (mprotect) : Vulnerable
Executable shared library data (mprotect): Vulnerable
Writable text segments : Vulnerable
Anonymous mapping randomisation test : 12 bits (guessed)
Heap randomisation test (ET_EXEC) : 13 bits (guessed)
Heap randomisation test (PIE) : 16 bits (guessed)
Main executable randomisation (ET_EXEC) : No randomisation
Main executable randomisation (PIE) : 12 bits (guessed)
Shared library randomisation test : 10 bits (guessed)
Stack randomisation test (SEGMEXEC) : 19 bits (guessed)
Stack randomisation test (PAGEEXEC) : 19 bits (guessed)
Return to function (strcpy) : Vulnerable
Return to function (memcpy) : Vulnerable
Return to function (strcpy, PIE) : Vulnerable
Return to function (memcpy, PIE) : Vulnerable
Gentoo Hardened with Grsecurity v2 + PaX
Linux 2.6.32-hardened-r22 #1 SMP Fri Nov 12 11:43:28 CET 2010 i686 Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux
Executable anonymous mapping : Killed
Executable bss : Killed
Executable data : Killed
Executable heap : Killed
Executable stack : Killed
Executable shared library bss : Killed
Executable shared library data : Killed
Executable anonymous mapping (mprotect) : Killed
Executable bss (mprotect) : Killed
Executable data (mprotect) : Killed
Executable heap (mprotect) : Killed
Executable stack (mprotect) : Killed
Executable shared library bss (mprotect) : Killed
Executable shared library data (mprotect): Killed
Writable text segments : Killed
Anonymous mapping randomisation test : 17 bits (guessed)
Heap randomisation test (ET_EXEC) : 13 bits (guessed)
Heap randomisation test (PIE) : 23 bits (guessed)
Main executable randomisation (ET_EXEC) : No randomisation
Main executable randomisation (PIE) : 15 bits (guessed)
Shared library randomisation test : 17 bits (guessed)
Stack randomisation test (SEGMEXEC) : 23 bits (guessed)
Stack randomisation test (PAGEEXEC) : 23 bits (guessed)
Return to function (strcpy) : Vulnerable
Return to function (memcpy) : Vulnerable
Return to function (strcpy, PIE) : Vulnerable
Return to function (memcpy, PIE) : Vulnerable
Ich habe grade die Mitteilung von einem Kunden erhalten, dass sein Linux Plesk Hostingserver massiv überlastet ist. in.proftpd Prozesse lasteten die CPU des Systems so aus, dass der Load auf über 40 nach oben schoss.
Ein ps aux zeigte Prozesse mit den Namen httpd, apache die vom Verzeichnis /tmp/.ICE-unix/.root aus gestartet wurden. Diese öffneten eine IRC Verbindung zu einem Server um von dort aus “Mitglied” eines Botnetzes zu werden.
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
perl 19715 root cwd DIR 9,0 4096 54214771 /tmp/.ICE-unix/.root
perl 19715 root rtd DIR 9,0 4096 2 /
perl 19715 root txt REG 9,0 1253828 7983805 /usr/bin/perl
perl 19715 root mem REG 9,0 41631748 /lib/i686/cmov/libresolv-2.7.so (path inode=41633634)
perl 19715 root mem REG 9,0 41631755 /lib/i686/cmov/libnss_dns-2.7.so (path inode=41633648)
perl 19715 root mem REG 9,0 41631757 /lib/i686/cmov/libnss_files-2.7.so (path inode=41633630)
perl 19715 root mem REG 9,0 19816 8144232 /usr/lib/perl/5.10.0/auto/Socket/Socket.so
perl 19715 root mem REG 9,0 41631753 /lib/i686/cmov/libcrypt-2.7.so (path inode=41633627)
perl 19715 root mem REG 9,0 41631762 /lib/i686/cmov/libc-2.7.so (path inode=41633638)
perl 19715 root mem REG 9,0 41631754 /lib/i686/cmov/libpthread-2.7.so (path inode=41633647)
perl 19715 root mem REG 9,0 41631752 /lib/i686/cmov/libm-2.7.so (path inode=41633631)
perl 19715 root mem REG 9,0 41631756 /lib/i686/cmov/libdl-2.7.so (path inode=41633640)
perl 19715 root mem REG 9,0 16548 8144230 /usr/lib/perl/5.10.0/auto/IO/IO.so
perl 19715 root mem REG 9,0 41615628 /lib/ld-2.7.so (path inode=41615384)
perl 19715 root 0u IPv4 112238056 TCP xxx.de:58255->ichsuchesex.info:45295 (CLOSE_WAIT)
perl 19715 root 1u IPv4 112238056 TCP xxx.de:58255->ichsuchesex.info:45295 (CLOSE_WAIT)
perl 19715 root 2u IPv4 112238056 TCP xxx.de:58255->ichsuchesex.info:45295 (CLOSE_WAIT)
perl 19715 root 3u IPv4 112239334 TCP xxx.de:38139->ns.free-vidz.com:ircd (ESTABLISHED)
perl 19715 root 4u REG 9,0 49416 46776325 /var/run/proftpd_scoreboard
perl 19715 root 5u IPv4 112238056 TCP xxx.de:58255->ichsuchesex.info:45295 (CLOSE_WAIT)
Die Hacker nutzen dabei folgende Lücke aus: http://bugs.proftpd.org/show_bug.cgi?id=3521
Das miese an der Geschichte ist, dass die Hacker dadurch sofort root Rechte auf dem System hatten.
Da das Paket psa-proftpd von Plesk direkt bereitgestellt wird und nichts mir der Distribution zu tun hat, muss man das Update über die Plesk Oberfläche einspielen. Es sind alle Plesk Versionen von 9.5.x bis 10.x betroffen. Dazu existiert bereits eine Nachricht auf der Parallels Webseite: http://www.parallels.com/de/products/plesk/ProFTPD
Also wirklich dringend Updaten, die Lücke wird bereits automatisiert genutzt und ein Angreifer erhält root Rechte.
Man stelle sich vor als root auf einem Linux Rechner unterwegs zu sein und folgendes zu erleben:
~/# rm -rf dateiname
rm: cannot unlink `dateiname': Operation not permitted
Bei root entfallen ja bekanntlich sämtliche andere Kriterien wie z.B.
- Ist man Besitzer der Datei?
- Sind Owner- oder Gruppenschreibrechte vorhanden?
Daher gibt es eigentlich nur zwei logische Erklärungen warum man die Datei nicht löschen kann. Entweder es stimmt gewaltig etwas nicht (z.B. Rechner gehackt rm Binary ausgetauscht) oder es wurde mittels Dateisystem Attributen für ext2, ext3 oder ext4 gearbeitet. Diese werden mittels ls nicht angezeigt.
Wenn man sich diese Attribute der o.g. Datei anzeigen lässt, ergibt sich folgendes Bild:
~/# lsattr dateiname
-u-ia--------- dateiname
Erst wenn man alle Attribute entfernt hat, kann man mit der Datei so arbeiten wie man möchte.
Das erledigt man wie folgt:
~/# chattr -i -a -u dateiname
.. und siehe da, der anschließende rm Befehl meldet sich erfolgreich.
Wie man genau mit chattr und lsattr arbeiten kann, ist unter folgendem Wiki Eintrag schön dargestellt und erklärt: http://wiki.ubuntuusers.de/chattr