Zusammenfassung vom Hacking-Contest
Als Betriebssystem kam OpenBSD im Release
3.6 zum Einsatz, aber nicht weil es am
sichersten ist, sondern weil es sehr schnell installiert und konfiguriert werden kann. Der
eingesetzte ftp-Server war vsftpd 2.0.1.
OpenSSH lief in der Version 3.9 in Verbindung mit OpenSSL 0.9.7d 17 Mar 2004 und als Loginshell hab ich die Zsh 4.2.0 installiert. Ansonsten habe ich keine zusaetzliche Software
eingesetzt.
Zusaetzlich zum GENERIC-Kernel habe ich noch Stephanie verwendet, damit ich die Loginclass h4x0r
weiter einschraenken konnte (die /etc/sysctl.conf ist hier zu finden).
Fuer genauere Informationen seht euch die Homepage
von Stephanie an. Den Start von sendmail (der Default-MTA von
OpenBSD) habe ich in der /etc/rc.conf unterbunden; gleiches gilt auch fuer den Apache, BIND und den
RPC. Die einzigen Daemons die liefen, waren also OpenSSH und vsftpd.
Der User h4x0r hatte eine eigene Loginclass, die wie folgt aussah:
h4x0r:\
:welcome=/etc/motd.h4x0rs:\
:path=/usr/bin /bin /usr/local/bin:\
:umask=077:\
:cputime:20s:\
:priority=2:\
:datasize=16M:\
:maxproc=32:\
:memoryuse=26M:\
:openfiles=82:\
:stacksize=5M:\
:tc=default:
Genauere Informationen sind in der Manpage login.conf(5)
zu finden.
Der User h4x0r unterlag zusaetzlich noch einem Quota, falls jemand auf die Idee gekommen waere, die
Partition zuzumuellen.
[root@hellfire:~]# quota -u h4x0r
Disk quotas for user h4x0r (uid 1001):
Filesystem blocks quota limit grace files quota limit grace
/home 250 1000 1050 19 0 0
[root@hellfire:~]#
Zudem habe ich noch bei einigen dateien das S-{UID,GID} Bit entfernt. Also
$ chmod a-s \
/sbin/ping \
/sbin/ping6 \
/sbin/shutdown \
/usr/bin/chfn \
/usr/bin/chfn \
/usr/bin/chsh \
/usr/bin/lpr \
/usr/bin/lprm \
/usr/bin/passwd \
/usr/bin/sudo \
/usr/sbin/traceroute \
/usr/sbin/traceroute6
und von folgenden Dateien das Lese/Schreibrecht genommen:
$ chmod o= \
/usr/bin/crontab \
/usr/bin/at \
/usr/bin/atq \
/usr/bin/atrm \
/usr/bin/batch \
/etc/fstab \
/etc/ftpusers \
/etc/group \
/etc/hosts \
/etc/inetd.conf \
/etc/login.conf \
/etc/newsyslog.conf \
/etc/rc.conf \
/etc/sysctl.conf \
/etc/syslog.conf \
/etc/ttys
/var/log
Fuer den unwahrscheinlichen Fall der Faelle, hab ich folgende chflags
gesetzt
$ chflags sappnd /var/log
$ chflags sappnd /var/log/*
$ chflags schg,uappnd /home/h4x0r/.{cshrc,exrc,login,mailrc.msgsrc,profile}
Einige haben es mit Exploits, BruteForce-Attacken, .. versucht, aber das war alles sinnlos. Fuer die
von mir eingesetzte Software gab es keine Exploits. BruteForce-Attacken
waren auch sinnlos, weil ein su
nicht funktioniert hat (lag daran, dass nur User ein 'su' machen koennen, die in der Gruppe
wheel eingetragen waren und das war niemand).
Vom Prinzip her war es ganz einfach. In der /etc/ssh/sshd_config war
folgender Eintrag zu finden PermitRootLogin without-password
. Wenn man sich jetzt sshd_config(5)
ansieht, wird man auf folgende stossen:
PermitRootLogin
Specifies whether root can login using ssh(1). The argument must
be ``yes'', ``without-password'', ``forced-commands-only'' or
``no''. The default is ``yes''.
If this option is set to ``without-password'' password authenti-
cation is disabled for root.
Ergo kann sich root nur via SSH einloggen, wenn er kein Password eingibt und das ist nur via
Authentifikation ueber einen Schluessel moeglich. Und der lag auf einem anderem Host. Welche
Hosts ins Netzwerk eingebunden waren, konnte man ganz leicht dadurch rauskriegen, indem man einen
kleinen Einzeiler schreibt, der alle Hosts im Subnet anpingt. Katze hat for ((i=1;i<=254;i++))
do ping -c 1 192.168.13.$i; done
verwendet und wurde schon auf 192.168.13.6 fuendig. Sie musste
sich jetzt nur noch den Useraccount auf 192.168.13.6 unter den Nagel reissen und von dort aus
dann eine Verbindung via SSH zurueck auf hellfire.hopto.org starten (der benoetigte Key fuer root
lag unter ${HOME}/.ssh/ rum).
Wie sich Katze eine Shell auf 192.168.13.6 besorgt hat, werde ich (und hoffentlich
auch Katze) nicht sagen. Das soll der geneigte Anwender selbst rausbekommen.
Die $HISTFILE kann hier eingesehen werden. Sollten Eintraege
fehlen, dann liegt das daran, dass einige die $HISTFILE kurzzeitig gegen /dev/null
verlinkt oder geloescht haben.
Note: Eine hab ich noch .. h4x0r-histfile2.txt
Sollten jetzt noch Fragen offen sein, auf die ich hier nicht eingegangen bin, dann schickt mir
einfach eine hacking-contest@strcat.de und ich werde
auf dieser Seite darauf eingehen.
$Id: contest/index.html,v 1.2 2003/06/23 10:51:25 dope Exp dope $
Send comments to hacking-contest@strcat.de.
Last modified: [ 2004-12-09 14:07:40 ]
© 2003-2004
Christian 'strcat' Schneider <hacking-contest@strcat.de>