Vanavond ontdekte ik op mijn laptop een hoge CPU load en ik vroeg me af waar dit vandaan kwam. Top gaf mij een output die erg verdacht was. Een accountje dat ik gebruik om dingen te testen die ik niet in mijn eigen user environment wil draaien had tientallen processen openstaan waarvan een find proces dat de CPU en disk zwaar belastte.
Laat ik eerst even de situatie schetsen zoals die nu al een maandje of drie is:
Wat mijn eerste onderzoekje heeft opgeleverd:
Wat nu verder?
Wat je me niet hoeft te vertellen/vragen:
Deze hack vind ik mega interessant om te gaan onderzoeken, maar tegelijkertijd heb ik relatief weinig tijd ervoor (tentamens).
edit: ik ben me ervan bewust dat dit topic wellicht beter geplaatst had kunnen worden in BV, maar ik acht dit onderzoek/impact analysis nauwer gerelateerd aan NOS.
Laat ik eerst even de situatie schetsen zoals die nu al een maandje of drie is:
- laptop met Ubuntu 9.04, met 1 'serieus' user account en 1 'test' account (met slap wachtwoord).
- Dat test account heeft zeer beperkte rechten (geen sudo - niet in groep 'admin'!)
- de /home/gert 'serieuze' user homedir was 'drwx------', i.t.t. default Ubuntu.
- alle security updates gedraaid
- SSH draait zonder aanpassingen
- Internetverbinding staat open most of the time (100/100 Mbit)
- ik was in de veronderstelling dat ik fail2ban draaide en ik alleen mijn serieuze account toegang had gegeven in sshd_config (AllowUsers). Blijkbaar was dat beide niet het geval.
- Ik draai nog 2.6.28-11, omdat ik met -12 en -13 in de jaunty-proposed repo problemen heb met VirtualBox.
- Wekelijks draai ik volledige backups van het / filesystem d.m.v. rdiff-backup dus ik backup ook binaries.
Wat mijn eerste onderzoekje heeft opgeleverd:
- /var/log/auth.log (en gerotate files) laat mij zien dat er voor het eerst succesvol is ingelogd vanochtend om 6u. en er wat is gebeurd dat ik niet helemaal begrijp.
Jun 18 06:36:51 gert-laptop sshd[16083]: Accepted password for test from 173.15.x.x port 24256 ssh2 Jun 18 06:36:51 gert-laptop sshd[16083]: pam_unix(sshd:session): session opened for user test by (uid=0) Jun 18 06:36:51 gert-laptop dbus-daemon: Rejected send message, 1 matched rules; type="method_call", sender=":1.4757" ([red]uid=1000[/red] pid=1987 comm="/usr/lib/indicator-applet/indicator-applet --oaf-a") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply=0 destination=":1.4905" (uid=0 pid=16083 comm="sshd: test [priv]")) Jun 18 08:01:02 gert-laptop sshd[16083]: pam_unix(sshd:session): session closed for user test
Let op uid=1000. Dat is het UID van user gert, niet van user test... Wat heeft die dbus-daemon log voor implicaties gehad of wat probeerde de bot/hacker? - Vanavond is hij weer verder gegaan onder een ander IP en wijzigde hij het wachtwoord:
Jun 18 21:50:40 gert-laptop sshd[3772]: Accepted password for test from 81.203.x.x port 2417 ssh2 Jun 18 21:50:40 gert-laptop sshd[3772]: pam_unix(sshd:session): session opened for user test by (uid=0) Jun 18 21:50:40 gert-laptop dbus-daemon: Rejected send message, 1 matched rules; type="method_call", sender=":1.5578" ([red]uid=1000[/] pid=23762 comm="/usr/lib/indicator-applet/indicator-applet --oaf-a") interface="org.freedesktop.DBus.Properties" member="Get" error name="(unset)" requested_reply=0 destination=":1.5689" (uid=0 pid=3772 comm="sshd: test [priv]")) Jun 18 21:51:58 gert-laptop passwd[3854]: pam_unix(passwd:chauthtok): password changed for test Jun 18 22:53:32 gert-laptop sshd[3772]: pam_unix(sshd:session): session closed for user test
- In syslog zie ik de volgende onheilspellende logs:
Jun 18 21:18:27 gert-laptop kernel: [505111.104073] CE: hpet increasing min_delta_ns to 33750 nsec Jun 18 21:18:27 gert-laptop kernel: [505111.104186] CE: hpet increasing min_delta_ns to 50624 nsec Jun 18 22:12:43 gert-laptop kernel: [508367.306102] atack[5446]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.345849] atack[5524]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.351134] atack[5516]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.379476] atack[5532]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.381049] atack[5505]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.406808] atack[5506]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.408992] atack[5453]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.423671] atack[5457]: segfault at 0 ip 0000000008048e33 sp 00000000ffbadc60 error 4 in atack[8048000+c0000] Jun 18 22:12:43 gert-laptop kernel: [508367.426600] atack[5469]: segfault at fffffffd ip 00000000080a3377 sp 00000000ffbadc30 error 4 in atack[8048000+c0000] Jun 18 22:12:48 gert-laptop kernel: [508372.315855] __ratelimit: 74 callbacks suppressed
en dit gaat nog zo even door... Tien minuten na die laatste melding heb ik mijn PPPoE verbinding verbroken en binnen tientallen seconden erna waren alle processen van de test user verdwenen. - Er zijn geen binaries of andere rare files geplaatst in /home/test
- Ook niet in /home/test/.ssh
- Bash_history laten ook alleen mijn commando's zien.
- Er draaien geen processen meer van de test user voor zover ik kan zien met ps en top.
- Of er veel traffic is geweest (met 100Mbit upload kan dat makkelijk in een paar uur). Ik heb mijn verbinding verbroken voordat ik keek wat de statistics van de interface waren.
- Of de 'atack' regels in mijn logs een falende kernel exploit weergeven of juist een slagende poging kunnen betekenen.
- Wat is 'atack' überhaupt?
- Gezien de tijd tussen de 'accepted password' en 'password changed' (1m18s) vermoed ik dat het om human-access gaat en niet een bot.
- Er is geen persoonlijke informatie buitgemaakt, gezien de beperkte rechten van de test user. Dit mits er geen kernel exploit is geslaagd.
- Omdat ik de 'kwade' processen nog kon zien draaien zijn mijn binaries niet overschreven met 'bogus' binaries. Ik kan eenvoudig checken of de binaries zijn overschreven (ik heb backups), maar het zijn er iets teveel om dit 'ff' te doen. Daarnaast moet ik dit doen middels een Live CD omgeving, omdat je in principe niks kan vertrouwen met de huidige draaiende kernel.
- De hacker heeft de logs niet gewist (had eenvoudig gekund - alle sshd vermeldingen verwijderen), wat duidt op slechts een userspace hack. Dit en het puntje erboven versterkt mijn vermoeden dat de kernel root exploit niet is gelukt.
Wat nu verder?
- Herinstallatie én alle keys revoken? (paranoid?)
- Alleen herinstalleren?
- Of kan ik ervan uitgaan dat er geen root exploit succesvol is geweest? En daarmee voldoende om de test user te verwijderen.
Wat je me niet hoeft te vertellen/vragen:
- Dat de hacker via SSH is binnengekomen.
- Wat SSH op mijn laptop doet,
- Waarom mijn laptop niet achter een router/firewall hangt
- Dat het een slap gebruikersnaam/wachtwoord combinatie was en dat dat dom is
- Dat je SSH kan afschermen met AllowUsers
- Dat er pakketten zijn als fail2ban om de brute force attacks tegen te gaan
- Dat SSH toegang in de firewall beperkt kan worden tot specifiek IPs
- Dat je SSH ook op een alternatieve poort kan draaien.
Deze hack vind ik mega interessant om te gaan onderzoeken, maar tegelijkertijd heb ik relatief weinig tijd ervoor (tentamens).
edit: ik ben me ervan bewust dat dit topic wellicht beter geplaatst had kunnen worden in BV, maar ik acht dit onderzoek/impact analysis nauwer gerelateerd aan NOS.
[ Voor 9% gewijzigd door gertvdijk op 19-06-2009 00:52 ]
Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.