Májusi vadászidény a Gyümölcstárhelynél


A hónap közepén akadt egy kellemetlen rejtőzködő ellenségünk. De elfogtuk. Megmutatjuk hogyan, és azt is, mivel segíthetsz te is néhány figyelmes lépéssel kirekeszteni a hasonló kártevőket a jövőben.

vadaszatA “vad” jelen esetben szikora.lanten.hu szerveren egy rejtélyes folyamat, ami miatt a napokban több alkalommal felkerültünk a CBL spamlistájára. Ilyenkor ugyan azonnal jeleztünk a lista üzemeltetője felé, hogy levegyék az érintett IP címet, azonban a rejtélyes folyamat miatt újra és újra vissza-visszakerültünk. Ez azért volt kellemetlen, mert a szerverről működő tárhelyek levelezésében ez fennakadásokat okozhatott az érintett időszakban.

Ezért aztán vadászni indultunk. Csak annyit tudtunk, hogy szikora.lanten.hu egy úgynevezett sinkhole-ra kapcsolódik a 80-as porton. A sinkhole-ok csali szerverek, gépek, amikkel a spamhez hasonlóan vírusokat keres a CBL. Nálunk talált is valamit.

Nekiláttunk felderíteni, mit. De nem volt egyszerű dolgunk, mert a gyanús vírusnak nyomát sem találtuk. Nem voltak olyan fájlok, friss módosítási dátumok, amik azonosíthatták volna a problémát.

Így egy kicsit gondolkodtunk: “Próbáljuk meg a hálózati forgalom alapján kiszűrni a ludast!”

Mivel korlátozottak voltak az eszközeink, nem az ágyúval verébre, hanem a vizipisztollyal elefántra esete állt fenn. Viszont sokat segített a gondolkodás. 🙂

Így jutottunk el a végtelen ciklushoz. Általában a programozóknak mindig elmondják az iskolában, hogy a legnagyobb ellenséged a végtelen ciklus. Akik esetleg nem tudják elképzelni mi az, egy kis segítség: http://kocka.blog.hu/2011/08/11/a_vegtelen_ciklus_elmagyarazasa

Bár iskolapélda szerint a végtelen ciklus ellenség, most mégis segített nekünk. Hogy hogyan? Elindítottunk két parancsot végtelen ciklusban. Ez azt jelenti, hogy amint befejeződött a parancs(ok) futása, kezdte elölről a rendszer, és ez mehetett volna a végtelenségig (de szerencsére hamarabb meglett a megoldás – lásd később. ;)). Mindeközben pedig a parancsok eredményét naplóztuk, ami alapján reméltük, meg fogjuk találni a bujdoklót.

Erre a szép parancsra bíztuk a vadászatot, és reméltük hamarosan fog is nekünk valamit:

while [ 1 ]; do d=`date`; nice -n 17 netstat -apne | awk -v d=”$d” ‘{if ($5 ~ “:80$” && $4 ~ “212.52.167.11” && $5 !~ “212.52.167.11*” && $6 != “TIME_WAIT”) print d,$0}’; done > /backup/tmp/netstat.20150513.log

Ő figyelte folyamatosan a szerverről kifelé létesített kapcsolatokat, amik a 80-as portra mentek, és mindegyik sor elejére beszúrt egy időbélyeget is. A másik parancs pedig végtelenül naplózta a futtatott php scripteket.
Az előbbi naplóban szereplő, számunkra gyanús sorok szerint beazonosíthattuk a másik parancs naplójában megtalálható infók alapján a ügyfelet és a php scriptjét.

Addig is, míg elő nem került a „Vad” ideiglenes IP címmel mentek ki a levelek a szerverről, mert az ügyfeleink nem várhatták meg működő levelezés nélkül, hogy lefüleljük a bajok okozóját.

Meddig tartott a vadászat és mi lett a megoldás?

Másnapra meglett a bujkáló script. A két végtelen ciklus tette a dolgát, amíg szükségünk volt rá. Azután végük lett… – A vadnak is.

Mi volt a probléma?

wordpressvirusEgyik ügyfelünk WordPress oldalán a témában volt a vírus. Ezt ő már eleve így töltötte fel a tárhelyére, tehát eredetileg is tartalmazta a biztonsági rést, és nem oldalfeltörés okozta a gubancot.

Azért kerültünk fel a listára olyan sűrűn, mert mindezek mellett betörési kísérletek voltak az admin felületére folyamatosan. Így ezzel mindig betöltődött a kártékony fájl is, ami tette a saját dolgát, és szépen nyitotta a kapcsolatot a sinkhole felé.

Miután ezt a problémát orvosoltuk, már minden rendben volt.

Mi ebből a tanulság?

Akár egy ártatlan sablon is okozhat viszonylag nagy galibát, ha nem vagyunk elég körültekintőek.

Mit lehet tenni megelőzésképp?

Lehet, hogy meglepő, de mi, mint szolgáltató nem tudunk tenni szinte semmit. Na jó, ez nem egészen igaz, és nem is lóbáljuk a lábunkat. De sajnos a biztonsághoz az ügyfeleinkre is szükség van. (Máris mondjuk, mit tehetsz te, hogy a honlapod ne váljon űzött vaddá!)

Tehát, mi arra koncentrálunk, hogy mielőbb felismerjük a kártékony fájlokat az ügyfelek tárhelyén. Erre van többféle saját fejlesztésű miniprogramunk. Ilyenek a látogatók által futtatott programok víruskeresése mind a ClamAV szoftverrel, mind saját keresővel, ami a már általunk korábban felfedezett kártékony kódokat keresi.

Ezek mellett figyeljük a szerverek terheltségét. Hiszen az láthatóan megnő bizonyos feltörési kísérletek alkalmával. Ilyenkor azonnal intézkedünk, és kitiltjuk az IP-t vagy akár egész IP tartományokat is ideiglenesen.

A napi biztonsági mentésünk is segíthet feltörés esetén. De fontos kihangsúlyozni, hogy az sem a tökéletes megoldás, mert a biztonsági rés a visszaállítás után is megmarad, és újra kihasználható, ha nem javítják. Ezt úgy kell elképzelni, mint mikor valaki megszerzi a Facebook jelszavunkat, kiderül, erre jelszót változtatunk. Akkor nem tud belépni a profilunkra. De ha később visszaállítjuk az eredeti jelszót, újra szabad utat hagyunk a belépésre.

Bár az ügyfeleink nagy része kizárólag tőlünk várja a védekezést, megelőzést, sajnos, amit mi tehetünk, csak akkor működik, ha a weboldal üzemeltetője is teszi a dolgát.

Hogy védekezhetsz te, mint a weboldal tulajdonosa? Néhány tipp:

Frissíts folyamatosan! – A honlapod keretrendszerét (jelen esetben pl. a WordPress motort), a témát és a bővítményeket is!
Készíts folyamatosan biztonsági mentést! – A mentés gyakorisága használatfüggő, általánosságban heti rendszerességű elég lehet, de az új tartalmak felvitele vagy frissítés előtt is érdemes megtenni ezt. (Ugyan mi is készítünk mentést, de az napi mentés 30 napra visszamenőleg, amiből adott esetben nehéz lehet kibogarászni, melyikre is van szükség, hogy a rések, kártékony fájlok eltűnjenek, de adatvesztés nélkül úszd meg az ügyet.)
Legyél körültekintő a nem saját sablonokkal, bővítményekkel! – A harmadik féltől származó témák és bővítmények mindig nagy kockázatot jelentenek, hiszen ahogy jelen esetben is, eleve hordozhatnak vírusokat. Ezért sem mindegy, hogy honnan tölti le az ember ezeket. Csak megbízható forrásból származóakkal dolgozz.
Ha nem vagy biztos a letöltött témákban, bővítményekben, ellenőrizd őket még offline! – Érdemes minden új témát és bővítményt feltelepítés előtt a saját gépünkön kicsomagolni és víruskeresővel átvizsgáltatni, mert az ismertebb vírusokat azért kiszűrik ezek is.

Mivel te ismered a saját magad által üzemeltetett oldalt, te tudod a legjobban, hogy milyen kiegészítőket, témákat, keretrendszert telepítettél fel, így neked tűnhet fel először, ha valami nem stimmel, nem úgy működik, mint korábban. Ezért elsősorban mi is csak rád, a hibajelzéseidre tudunk támaszkodni.

Ez nem csak azért fontos, mert akár több hozzád hasonló ügyfelünk életét keserítheti meg akár a te honlapod – a legtöbb esetben azért nem is hathatnak így egymásra az oldalak, hiszen egymástól elszeparáltan üzemelnek a tárhelyek. Ezek a fenti biztonsági intézkedések elsősorban saját magad miatt fontosak, hiszen neked okozhatnak azonnali kárt (presztízsveszteség, kényszerleállás, adatvesztés, felesleges bosszúság, ha keresni és törölni kell a kártékony fájlokat stb.).

Vagyis legyél körültekintő, figyelj az oldalaidra, és bármi szokatlant tapasztalsz, jelezz felénk (és a honlapod készítője, karbantartója felé is adott esetben), hogy segíteni tudjunk!

Kártevőmentes weboldalt kívánunk!

3 Comments

Add yours
  1. 1
    Tóth László

    Sziasztok!

    Végig olvastam a technikátokat. Sajnos gyakori és visszatérő probléma lesz amíg warezelt templateket szednek le a felhasználók.

    Minden domain host fájljába bele kell tenni melyik domainről történik emailküldés.
    pl.: php_admin_value sendmail_path “/usr/sbin/sendmail -t -fhello@domain.tld
    Így a mail queue -ban azonnal látszik melyik domain küldi. Azon belül lehet keresgélni, vagy a maldet -et használva lehet gyorsan meg is lesz.

    Egyébként az általatok használt megoldás sem rossz.

    Üdv,
    Laci

+ Leave a Comment