Sömnlös och R00tad

I går klockan 22:22 fick jag larm på min telefon om att ett test för ”Defacement” på flera av de webbplatser vi driftar misslyckades. Eftersom jag tror på öppenhet så berättar jag vad som hänt.

Eftersom jag fick larm från flera sidor samtidigt och det bara var ”Defacement” som larmade förstod jag snabbt vad som var i görningen. Jag blockerade den aktuella servern, som vi kallar Joakim efter Joakim von Anka, i brandväggen och loggade in på den.

Jag har driftat servrar i över 10 år och har sett intrång förr. Det allvarligaste jag själv råkat ut för tidigare har varit att någon via ett trasigt CMS (oftast) lyckats köra kommandon som samma användare som webbservern och installerat en spamproxy. Denna gång tog det bara sekunder innan jag förstod att någon varit root på vår server. Tecknen var inte svåra att tyda, systemfiler saknades, /var/log var raderad, mm. Först utbryter en liten känsla av panik och man blir svag i knäna. Jodå även jag även om jag oftast är bra på att dölja det och ser ut som lugnet själv.

Efter ett tag när man insett vad som hänt börjar det mer taktiska artbetet. Är några andra system i direkt fara. Finns det några nycklar på denna maskin? Det fanns ssh-nycklar på maskinen men de var krypterade och jag spärrade dem i de system där deras publika motsvarighet finns. I övrigt finns inget riktigt känsligt på denna maskin då det bara är en webbserver, den har inte ens några användarkonton.

Sedan installerade jag en ny server samtidigt som jag tittade närmare på den som blivit rootad. En mystisk process /bin/mont (17341) snurrade och lysnade på de portar som webbservern normalt lyssnar på.


joakim:/etc/apache2/sites-enabled# ls -l /proc/17341
total 0
dr-xr-xr-x 2 root www-data 0 Nov 24 22:48 attr
-r-------- 1 root root     0 Nov 24 22:48 auxv
-r--r--r-- 1 root root     0 Nov 24 22:22 cmdline
-r--r--r-- 1 root root     0 Nov 24 22:48 cpuset
lrwxrwxrwx 1 root root     0 Nov 24 22:48 cwd -> /var/tmp
-r-------- 1 root root     0 Nov 24 22:48 environ
lrwxrwxrwx 1 root root     0 Nov 24 22:47 exe -> /bin/mount
dr-x------ 2 root root     0 Nov 24 22:44 fd
-r--r--r-- 1 root root     0 Nov 24 22:48 maps
-rw------- 1 root root     0 Nov 24 22:48 mem
-r--r--r-- 1 root root     0 Nov 24 22:48 mounts
-r-------- 1 root root     0 Nov 24 22:48 mountstats
-rw-r--r-- 1 root root     0 Nov 24 22:48 oom_adj
-r--r--r-- 1 root root     0 Nov 24 22:48 oom_score
lrwxrwxrwx 1 root root     0 Nov 24 22:48 root -> /
-r--r--r-- 1 root root     0 Nov 24 22:48 smaps
-r--r--r-- 1 root root     0 Nov 24 22:23 stat
-r--r--r-- 1 root root     0 Nov 24 22:48 statm
-r--r--r-- 1 root root     0 Nov 24 22:24 status
dr-xr-xr-x 3 root www-data 0 Nov 24 22:48 task
-r--r--r-- 1 root root     0 Nov 24 22:48 wchan

Den har startats som mount utan argument.

Jag stoppade den och stoppade även webbservern och andra demoner på maskinen. Det uppenbara som förövaren gjort var att byta ut alla filer som börjar med index, main, start eller default mot en ihopsnickrad webbsida. Olyckligtvis skedde detta intrång straxt före 22 och backuperna går cirka 23 så vi saknade en dags backup. Jag gjorde så att jag återskapade webbplatserna på den nya servern och lyfte sedan manuellt över de filer som ändrats under dagen och verifierade att dessa inte var modifierade av förövaren. Jag återskapade direkt de viktiga sidorna från backup på den nya servern och när klockan närmade sig 04:00 var allt väsentligt igång igen. Jag hoppade i säng en kort stund och sov gott mellan 04:30 och 06:30. Sedan begav jag mig till kontoret för att vara beredd ifall någon skulle ha problem med sina webbplatser. Men telefonerna höll sig tysta så när som på en kund som har sin webbplats gratis hos oss. Jag spenderade förmiddagen med att migrera även de lågprioriterade platserna. Jag sparade bara de som behöver patchas.

Sedan började jag titta vidare på den rootade Joakim.

Eftersom /var/log var raderad var det svårt att säga varifrån intrånget skett och hur det gått till. Men eftersom denna maskin står bakom en apache-proxy och även loggar via syslog till en remote-server så finns det en del loggar att gå efter. Intrånget skedde via en Joomla-site som inte patchats.

Det första vi kan se av intrånget är att förövaren besöker satjten från http://www.google.com.tr där han eller hon sökt på ”inurl:com_extcalendar .nu”. Den aktuella sidan har inte en .nu adress, men det måste stå någonstans på sidan. Förövaren kommer från en adress som tillhör TurkTelekom, som jag förstår det är det en ISP i Turkiet. Förmodligen en zombie, men jag skickar ett vänligt abuse-mail till dem.

Han eller hon har placerat en samling exploits i /var/tmp varav vi var sårbara för åtminstone ett.
joakim:/var/www# ls -l /var/tmp/
total 820
-rwxrwxrwx 1 www-data www-data 13298 Oct 11 04:12 05
-rwxrwxrwx 1 www-data www-data 8545 Oct 11 04:12 18
-rw-r--r-- 1 www-data www-data 8545 Oct 11 04:12 18.1
-rwxrwxrwx 1 www-data www-data 8548 Oct 11 04:13 2008
-rw-r--r-- 1 www-data www-data 8548 Oct 11 04:13 2008.1
-rwxrwxrwx 1 www-data www-data 10240 Oct 11 04:13 2009
-rwxrwxrwx 1 www-data www-data 7287 Oct 11 04:14 2009xx
-rwxrwxrwx 1 www-data www-data 10922 Oct 11 04:14 27704
-rwxrwxrwx 1 www-data www-data 8668 Nov 24 22:22 29
-rw-r--r-- 1 www-data www-data 4482 Nov 9 23:20 29.c
-rw-r--r-- 1 www-data www-data 4482 Nov 9 23:20 29.c.1
-rw-r--r-- 1 www-data www-data 4482 Nov 9 23:20 29.c.2
-rwxrwxrwx 1 www-data www-data 6418 Oct 11 04:14 30
-rwxrwxrwx 1 www-data www-data 9185 Oct 11 04:14 4a
-rwxrwxrwx 1 www-data www-data 6627 Oct 11 04:14 6b
-rwxrwxrwx 1 www-data www-data 6607 Oct 11 04:14 6x
-rw-r--r-- 1 www-data www-data 2346 Oct 11 04:14 6x.c
-rwxr-xr-x 1 www-data www-data 9003 Nov 24 22:22 6xa
-rwxrwxrwx 1 www-data www-data 6607 Oct 11 04:14 6xx
-rwxrwxrwx 1 www-data www-data 10958 Oct 11 04:14 7
-rwxrwxrwx 1 www-data www-data 11331 Oct 11 04:15 7-2
-rw-r--r-- 1 www-data www-data 10958 Oct 11 04:14 7.1
-rwxrwxrwx 1 www-data www-data 14096 Oct 11 04:15 8
-rwxrwxrwx 1 www-data www-data 15839 Oct 11 04:15 8a
-rwxrwxrwx 1 www-data www-data 28127 Oct 11 04:15 8bb
-rwxrwxrwx 1 www-data www-data 81375 Oct 11 04:15 8cc
-rwxrwxrwx 1 www-data www-data 11291 Oct 11 04:15 8x
-rwxrwxrwx 1 www-data www-data 10737 Oct 11 04:15 9
-rwxrwxrwx 1 www-data www-data 8058 Oct 11 04:15 armelf.x
-rwxrwxrwx 1 www-data www-data 7807 Nov 24 22:22 c
-rw-r--r-- 1 www-data www-data 2162 Oct 11 04:17 c.c
-rw-r--r-- 1 www-data www-data 29135 Oct 11 04:17 c2.c
-rwxrwxrwx 1 www-data www-data 9003 Nov 24 22:22 cx
-rw-r--r-- 1 www-data www-data 6438 Oct 11 04:17 cx.1
-rw-r--r-- 1 www-data www-data 2355 Oct 11 04:17 cx.c
-rw-r--r-- 1 www-data www-data 6924 Oct 11 04:17 cxx.c
-rwxrwxrwx 1 www-data www-data 10255 Nov 24 22:22 derle2
-rw-r--r-- 1 www-data www-data 7786 Oct 11 04:17 derle2.1
-rw-r--r-- 1 www-data www-data 7786 Oct 11 04:17 derle2.2
-rw-r--r-- 1 www-data www-data 2953 Oct 11 04:17 derle2.c
-rwxrwxrwx 1 www-data www-data 10825 Nov 9 23:45 exploit
-rwxrwxrwx 1 www-data www-data 10291 Oct 11 04:17 exploit2
-rwxrwxrwx 1 www-data www-data 7968 Oct 11 04:18 isko
-rwxrwxrwx 1 www-data www-data 11575 Oct 11 04:18 iskorpitx
-rwxrwxrwx 1 www-data www-data 222208 Oct 11 04:19 mremap_pte
-rwxrwxrwx 1 www-data www-data 5538 Oct 11 04:20 pwnkernel
-rw-r--r-- 1 www-data www-data 754 Oct 11 04:21 rootsh.c
-rwxrwxrwx 1 www-data www-data 9196 Oct 11 04:21 run
-rw-r--r-- 1 www-data www-data 2847 Nov 9 23:29 udev.c
-rwxrwxrwx 1 www-data www-data 8837 Nov 24 22:22 udevx
joakim:/var/www#

Det finns ockå ett perl-skript i /tmp som också ägs av www-data.

I loggservern kan jag se att kärnan attackerats för att förvärva bättre behörighet i systemet. Förövaren lyckas bli root klockan 22:21. De har använt sig av ett race-condition i Linux-kärnan i ptrace_attach() för att via en suid root fil (/bin/mount) i detta fall, bli root på systemet.

Med facit i hand så gick det skapligt. Det är alltid jobbigt när något sånt här händer men vi klarade oss bra, nertiden blev inte så lång och ingen data gick förlorad. Jag kan inte låta bli att tänka på vad otroligt onödigt det är.

Vi får så klart ta på oss och göra vår läxa och hålla våra system uppdaterade och ha våra kunder mer isolerade från varandra. Nu skall jag ta och återställa det sista och pactha CMS till våra kunder som slarvat med det. Detta ger mig dessutom en anledning att städa lite bland kunderna och ta bort de som är inaktiva. Så överlag kanske detta hade något gott med sig. Att jag bara sovit knappt två timmar inatt märks, men det funkar …

Kanske får anledning att återkomma …

6 reaktioner på ”Sömnlös och R00tad”

  1. Om man kunde ta en hundradel av den kompetenta arbetstid som gått åt att städa efter valfritt uselt PHP-baserat CMS så kunde man ha skrivit ett funktionsdugligt istället. Men nejdå, kör man inte Drupal/Joomla/Wordpress så är man bara sååå ute.

  2. Tråkigt, men riktigt intressant att läsa. Du ser ut att ha bra koll på systemen. 🙂

    Helt rätt att vara öppen, alltid kan det hjälpa någon annan!

  3. 5 timmar för att fixa intrång var inte så illa. Finns det någon lösning så att PHP script/webserver inte kan köra vilka kommandon som helst?

Kommentarer inaktiverade.