Verjetno ga ni skrbnika strežnika za gostovanje spletnih strani, ki se nebi vsaj nekajkrat v svoji karieri srečal s takšnim sporočilom:
[note color="#FAFAFA"]Subject: [SpamCop (208.80.152.201) id:5761003264]=MEN'S SEX HEALTH!=
[ SpamCop V4.6.2.001 ]
This message is brief for your comfort. Please use links below for details.
Email from 208.80.152.201 / 14 July 2015 17:52:21 -0000
http://www.spamcop.net/w3m?i=z5761003264za8b7dc20f52d291989cf2f18bf68a21bz
208.80.152.201 is open proxy, see: http://www.spamcop.net/mky-proxies.html[/note]
Po prejemu takega sporočila nam običajno naraste krvni tlak in preklinjamo tistega malopridneža, ki nam bo skrajšal noč. OK, globoko vdihnemo, opravimo obisk najbližjega kavnega avtomata in zavihamo rokave. Kje, za vraga, bi zlikavci namestili zlonamerno kodo?
Ker ni vse zlato kar se sveti
V večini primerov so tarče tovrstnih napadov spletne strani, ki vsebujejo neposodobljeno odprtokodno CMS rešitev kot so Wordpress, Joomla, Magento, Typo3 in Drupal. Ljudski rek: "ni vse zlato kar se sveti", v tem primeru drži. Zato se je za raziskovanje najbolje osredotočiti na gostovane spletne strani, ki so izdelane s pomočjo teh platform. Včasih nam že sporočilo, poslano s strani SpamCopa namigne na katero domeno se je potrebno osredotočiti. To nam olajša iskanje, vendar ni nujno, da je domena odhodnih nezaželenih sporočil ista kot okužena stran sama.
Splunk za zmago nad spletnimi nepridipravi
Običajno je najboljša pot, da odkrijemo programsko kodo za pošiljanje nezaželene pošte, s pomočjo pregleda dnevniških datotek spletnega strežnika (apache, nginx...). Ročno pregledovanje takšnih datotek je zamudno in mukotrpno, zato je najbolje, da uporabimo Splunk> Enterprise. Za enkraten pregled nam bo zadoščala že namestitev brezplačne različice. Nato si iz spletnega strežnika prenesemo dnevniške datoteke in jih uvozimo v Splunk. Po prvi prijavi v Splunk nas na osnovnem zaslonu pričaka ikona "Add data". Po kliku nanjo se odpre čarovnik za dodajanje vira podatkov. Na naslednjem zaslonu izberemo "monitor files and ports on this Splunk indexer". Nadaljujemo z izbiro "Files & Directories" in nato izberemo pot, kamor smo si prenesli dnevniške datoteke spletnega strežnika. Kliknemo Next. Na naslednjem zaslonu nastavimo vrsto podatkov, metapodatke in lokacijo hrambe v Splunku. Kot sourcetype navedemo vrsto dnevniških datotek - v večini primerov access_combined - razen za IIS, ki ima svoj sourcetype (iis).
Potrdimo naslednje korake in v nekaj trenutkih se bodo podatki uvozili v Splunk. V nadaljevanju odpremo aplikacijo "Searching & reporting" in si ogledamo dnevniške datoteke. V primeru, da smo dnevnik našega Apache strežnika shranili v privzet indeks, je iskalni ukaz sledeč:
[note color="#FAFAFA"]index=main sourcetype=access_combined[/note]
Iskanje šivanke v kopici sena?
Podatke smo uspešno uvozili v Splunk. Naša naslednja naloga je najti skripte za razpošiljanje nezaželene pošte. V našem primeru smo iskali okužene skripte v spletni trgovini, ki teče na platformi Magento Community edition. Najprej smo poiskali zahtevke, ki imajo zelo dolg URL, zaradi možnosti t.i. "injectiona". Iz rezultatov smo filtrirali vse zahtevke iskalnikov - Google, Majestic, Bing in Ahrefs ter se osredotočili na php skripte.
Iskalni niz:
[note color="#FAFAFA"]index=main sourcetype=access_combined NOT "*googlebot*" NOT "*majestic*" NOT "*bingbot*" NOT "*ahrefs*" (uri="*.php*" OR uri="*.html*") | eval urilenght = len(uri) | stats count by uri urilenght | sort - urilenght[/note]
V našem primeru med rezultati ni bilo sumljivih poizvedb, ki bi preko GET zahtevka izvajale morebiten "code injection" ali "sql injection". Zato se lotimo raziskovanja POST zahtevkov.
Uporabimo lahko sledeč iskalni niz:
[note color="#FAFAFA"]index=main sourcetype=access_combined method=POST | stats count by uri | sort - count[/note]
Tokrat so rezultati pokazali zanimivejšo sliko:
Med rezultati najdemo vse skripte, klicane s POST zahtevkom, s katerimi lahko zlonamerneži pošiljajo nezaželeno pošto. Sedaj nas čaka preverjanje teh skript. Hekerji so v zadnjih letih postali precej premeteni in akcije, ki so v skriptah šifrirajo, zato je večina zlonamernih skript za neuke programerje precej težko berljiva.
V demonstracijskem primeru so bile okužene sledeče datoteke:
/downloader/lib/Mage/System/search.php
/downloader/skin/sql.php
/skin/frontend/article.php
/downloader/skin/install/sql.php
/downloader/skin/install/sql.php
/downloader/js/article.php
Šivanko smo našli, kako pokrpati spletno stran?
V kolikor te datoteke niso ključnega pomena za delovanje vaše spletne strani (torej vsebujejo samo zlonamerno kodo), jih lahko brez slabe vesti pobrišete. V nasprotnem primeru pa bo potrebno odstraniti le del kode iz skripte. Po odstranitvi datotek je potrebno posodobiti tudi platformo, na kateri teče spletna stran.
Proaktivno spremljanje ali gašenje požarov?
V tem prispevku je opisan primer enostavnega čiščenja Magento spletne trgovine kot reakcija na sporočilo servisa SpamCop, ki je strežnik že uvrstil na seznam "grešnikov". Temu bi se lahko izognili s sprotnim spremljanjem obnašanja spletnega strežnika, ki bi že vnaprej opozoril na sumljive pokazatelje.
Nekaj uporabnih virov, katere bi lahko spremljali s Splunk> Enterprise:
Dolžino čakalne vrste za odpošilanje e-pošte
Nove skripte prožene preko POST zahtevka
Obremenjitev (load) strežnika
Na podlagi zbranih podatkov smo lahko v realnem času obveščeni, da je gostovana spletna stran postala žrtev hekerskega napada. Zlonamerno kodo lahko nato najdemo mnogo hitreje, ogledati si je potrebno le skripte, ki so bile spremenjene v zadnjih nekaj urah/dneh. Tako se čas za odkritje napake in morebitna škoda zaradi blokade IP naslova za odhodno pošto bistveno zmanjša.