Az átlagember számára elég nagy homály fedi azt, hogy egy hacker mi is csinál valójában. Erre természetesen rásegítenek a filmek, sorozatok is – ahogy régebben ebben a facebook bejegyzésben írtam. Kicsit oszlassuk a ködöt, és nézzük meg hogy hogyan is történik egy weboldal támadása. (persze a hacker célja nem feltétlenül a weboldal, lehet hogy bizalmas adatokat akar megszerezni… De ebben a példában koncentráljunk a webes támadásra.)
Tudnod kell, hogy az etikus hacker ugyanazokat az eszközöket használja, mint a rosszindulatú. A célja viszont nem a károkozás, hanem a hiba meglétének bizonyítása (proof-of-concept), méghozzá olyan módon, hogy azt csak a megbízó felé kommunikálja.
Legyen képzeletbeli hackerünk célja az, hogy megszerezze a Gipsz Jakab Kft. (gipszjakab.hu) adminisztrációs felülethez tartozó jelszót. Íme, egy lehetséges lépéssorozat a támadó részéről:
Információgyűjtés
Google keresések segítségével kideríthetőek a következők:
- Milyen e-mail címeket használ az áldozat?
- Milyen további aldomainek, szerverek állnak a cég szolgálatában? (pl.: szamlazas.gipszjakab.hu)
- Van-e olyan könyvtár a weboldalon, amit elfelejtettek levédeni, így ott értékes tartalmat találhatunk? (tipikus Google keresés: intitle:”index of” site:gipszjakab.hu)
- Találunk-e bármilyen dokumentumot (PDF, DOC és társai. pl.: filetype:pdf site:gipszjakab.hu)
A következő lépés előtt az etikus hacker előnyben van, mert nem kell rejtőzködnie – hiszen teljesen legálisan végzi a tevékenységét. A feketekalapos hacker számára itt van 1-2 lépés, amivel biztosítja, hogy a büdös életben ne akadjanak a nyomára. (egyszerűbben kivitelehező, mint gondolnád!)
Hackerünk egy egyszerű program segítségével megtudhatja, hogy milyen szolgáltatások futnak a célzott rendszeren. Van-e rajta levelezés, FTP, esetleg kívülről elérhető-e az adatbázis? A kapott válaszokból pedig nagy pontossággal megállapítható a talált szolgáltatásokat biztosító programok neve és verziója.
Szintén ingyenes, és aprócska program meg tudja mondani, hogy a gipszjakab.hu egy egyedi rendszer, vagy esetleg valamilyen elterjedt portálmotorra épül? (Joomla, WordPress, Drupal, stb.). Ha meg tudja mondani, hogy milyen rendszer adja a honlap alapját, akkor jó eséllyel annak verzióját – sőt: a telepített modulokat, és verziójukat is meg tudja mutatni.
Mihez kezd a támadó az információkkal?
Sokszor az első lépés során megszerzett információk már odaadják a kulcsot a hacker kezébe:
- A feltérképezett programok és verziók ismeretében kikeresheti, hogy van-e valamilyen ismert sérülékenysége a rendszernek? (mondjuk egy elhanyagolt Joomla-val van dolga, amit nem frissítettek)
Ha megvan a sérülékenység – heuréka! – lehet hogy nincs is több dolga. - A megtalált kiegészítő domaineket, szervereket is megvizsgálhatja, hátha ott követtek el valami hanyagságot (tehát az információgyűjtés folyamata előlről kezdődik a szamlazas.gipszjakab.hu oldallal)
- A PDF, DOC és egyéb fájlokban sok hasznos információ található (létrehozó neve, esetleg felhasználóneve, de akár még a használt nyomtatók típusa is). Ha itt találunk felhasználóneveket, rögtön támpontot adhat ahhoz, hogy milyen felhasználóneveket próbálgasson végig a támadó.
- A listázható, védelem nélküli könyvtárakban könnyen találhat hackerünk ott felejtett biztonsági mentéseket, vagy akár olyan fájlokat, amelyekből kideríthető a jelszó.
Tegyük fel, hogy hackerünk nem járt szerencsével. Mit tehet még?
Automatizált eszközök bevetése
Az automatizált eszközök lényege, hogy akár a Google, feltérképezik a teljes oldalt. Az így megtalált aloldalakon viszont mindenféle csúnya dolgot próbálnak ki. Olyan szövegekkel próbálják meg kitölteni az űrlapokat, ami a hibás weboldalakat “lebuktatja”. Több tucat ilyen teszt van, több ezer szövegmintával. Az ellenőrzés a válasz elemzésével lehetséges. Tipikus példa, hogy ha egy keresőmezőbe bármilyen karaktert beírhatok, és a találati oldalon szerepel a szöveg, hogy “Találatok a ….. szóra”, akkor a kipontozott rész ellenőrzésével megállapítható, hogy tényleg minden betű – amit a keresőmezőbe írtunk – visszaköszön-e a találati oldalon. Ha visszaköszön, akkor máris örül a hacker, talált egy úgynevezett XSS sérülékenységet.
Az XSS-nek a programozók nem nagyon látják veszélyét. Pedig ha a támadó ezt kihasználja, akkor csak némi türelemre van szüksége. Ha az adminisztrátor belép az oldalra, erről a támadó értesítést kap – és jó eséllyel Ő is be tud lépni adminisztrátorként – mégpedig a jelszó ismerete nélkül! Innentől kezében van az oldal.
Másik hiba, amire pezsgőt pukkant a hacker, az úgynevezett SQL injection. Szintén automatizált eszközökkel ellenőrizhető. Ha van ilyen hiba, akkor lehetséges manipulálni úgy a program működését, hogy mondjuk a termékek listája helyett a felhasználók listáját (és esetleg jelszavát) mutassa az oldal a támadó felé. Ha a programozó hanyag volt, és nem titkosította a jelszavakat (láttunk már ilyet…), akkor gyakorlatilag minden felhasználó neve, és jelszava ismertté vált a hacker számára. Hurrá, jöhet megint a pezsgő.
Ha még mindig nem talált fogást az oldalon, akkor jöhet a jelszótörés – tipikusan szótári szavak, illetve azok toldalékolt, számokkal ellátott alakjait próbálgatja végig egy kis program – hátha az egyik jó lesz. Az ilyen kis programok, támadások (Dictionary Attack) miatt van szükség arra, hogy megfelelő jelszót válassz! Hiába atombiztos a weboldal, az “almafa11” jelszót elég gyorsan ki lehet deríteni egy ilyen kis programmal.
Azért van itt munka…
Persze az automatizált eszközök egyik nagy hátránya, hogy sokszor (nagyon sokszor) hibás eredményeket adnak. Lehet hogy sérülékenységet jeleznek ott, ahol nincs. És persze az is lehet, hogy nem jeleznek egy valós sérülékenységet – bár ez utóbbi ritkább. Így aztán a hacker, ha még nem érte el célját, elkezdi a temérdek találat visszaellenőrzését – kézzel. Ez bizony időrabló tevékenység, és korántsem olyan izgalmas, mint a filmeken.
Etikus hackerként itt hátrányban vagyok a feketekalaposokhoz képest – ugyanis nekem kötelességem mindent leellenőriznem akkor is, ha már az első pontban kritikus hibát találtam a rendszerben.
Logikai buktatók
Persze nem lehet mindent automatizálni. A programozás során elkövetett logikai hibákat az automatizált tesztek nem tudják jól szűrni. Éppen ezért fontos, hogy szakképzett, és türelmes etikus hacker vizsgálja az oldalt. Látni kell az összefüggéseket az egyes elemek / menüpontok között, és ki kell próbálni olyan rafkós adatkapcsolásokat, amit csak kézi erővel lehet.
Etikus befejezés
Ha mindent feltérképeztem, ellenőriztem (itt már E/1-ben beszélek, hiszen egy feketekalapos ezzel nem foglalkozik), akkor jöhet a jelentés megírása. A jelentésbe belekerül, hogy milyen oldalakon találtam hibát, azokat milyen módon lehet kihasználni, mi rá a bizonyíték, hogy valóban kihasználható. Az összeállított dokumentumot átadom a megbízó (jelen esetben Gipsz Jakab Kft) számára. A hibák kijavításához segítséget nyújtok, akár tanácsadással, akár programozási feladatok elvégzésével. Ha minden rendben, akkor egy újabb ellenőrzés következik – annak bizonyítására, hogy a biztonsági réseket valóban sikerült befoltozni, és hogy a foltozás nem nyitott-e kiskaput máshol.
Mint láthatod, a hacker munkája nem abból áll, hogy folyamatosan gépel, vagy hogy 3 próbálkozásból kitalálja a jelszavadat. Ennél azért sokkal összetettebb, időigényesebb a folyamat. Egy oldal teljes ellenőrzése akár 2-3 hetet is igénybe vehet – dokumentáció elkészítése nélkül.
Lehet, hogy számodra nem érthető minden, amit írtam – ezért kérlek, ha valami nem tiszta, írd be a poszt alá kommentbe, hogy választ adhassak a kérdésekre! (Ne légy szégyenlős! Valószínűleg nem Te vagy az egyetlen, aki nem érti!)