Jelszó elleni támadások

A IT Biztonság kurzus wikiből
A lap korábbi változatát látod, amilyen Razor alpha (vitalap | szerkesztései) 2014. május 31., 17:35-kor történt szerkesztése után volt.


Tartalomjegyzék

Jelszó elleni támadások célja

Az ilyen támadásoknak alapvetően a jelszóval zárolt állományok, rendszerek, szóval a jelszóval védett erőforrások elérése a célja, így nem szükségszerűen törekszik a konkrét jelszó megismerésére, noha gyakorta a legegyszerűbb megoldás mégis Social Engineering eszközök által megszerezni az adott rendszerhez szükséges hozzáférési adatokat vagy lehallgatással kinyerni azokat egy közvetítő közegből.

Jelszó elleni próbálkozásos támadások

Arra épít a módszer, hogy véges sok próbálkozásból, melyben véletlenszerű jelszavakat generálunk (általában iterációval inkrementált karakteres keresés) eljuthatunk egy olyan jelszóig amely egyezik az eredetivel vagy legalább azonos hash-t állít elő az ellenőrző oldalon. Fontos információ hozzájuk a jelszóra vonatkozó megkötés halmaz, ezzel lényegesen csökkenthető a szükséges próbálkozások száma. Ha a felhasználó nevet is magunknak kell kitalálnunk az esélyeink radikálisan csökkennek, így érdemes előbb alaposan körülnézni, egy biztosan létező felhasználónév után kutatva. Megannyi program áll a rendelkezésünkre ehhez, többek között John the Ripper, Cain and Abel.

Brute Force

Ahogy a neve is mutatja, a nyers erőre épít, ez a legprimitívebb fajtája a próbálkozásos támadásoknak. A lehetséges jelszavakat iteratív sorrendjükben próbálja végig. Próbálkozás száma így horribilis lehet, így szükséges, hogy az ellenőrző oldal ne rendelkezzen próbálkozás számra vonatkozó megszorítással.

Dictionary Brute Force

A Brute Force támadások egy kicsit kifinomultabb változata, melyben tipikus jelszavakat, értelmes szavakat próbálunk csak ki, a neten rengeteg ilyen jelszógyüjtemény kering. Nagyban csökkenteni tudja a próbálkozások számát, így gyakran jobb alternatíva a sima Brute Force-nál.

Hybrid Password Guessing

A Dictionary Brute Force támadások egy javított változata, melyben feltételezzük, hogy a jelszavakra érvényesül a rendszergazdák által erőltetett elv is, miszerint az értelmes szavakat kis eltéréssel, manipulációval használjuk csak jelszóként. Például 1337 Speak szavakká alakítva: alma => 4lma, speciális karaktereket használva: alma => @lm@, kis és nagybetűs változatait is végigpróbálja. Sajnos ez azzal is együtt jár, hogy a Dictionary Brute Force-nál nagyobb kódtérből kell próbálkozzunk, így ezt akkor érdemes használni, ha tudjuk a jelszóra vonatkozó megkötéseket és azt a programunkban meg tudjuk adni pontosan.

Jelszó elleni kémkedéses támadások

Ez a módszer azon alapul, hogy sokszor a védelmi rendszer leggyengébb pontja a közvetítő közeg, azaz vezetéknélküli hálózatok, hálózati csomópontok, nyilvános hálózatok. Itt gyakran találhatunk kódolatlan vagy gyengén kódolt jelszavakat is, melyeket fel tudunk használni a behatoláskor. A lehetőséget a hálózati forgalmat monitorozó szoftverek jelentik, melyekkel csomag szinten megtekinthetjük a hálózat forgalmát, rengeteg alkalmazás van a célra minden platformra - ilyen például a Wireshark is. Sok ma is sebezhető protokoll létezik, mely nem vigyáz jelszavaink biztonságára, ilyenek lehetnek a régi e-mail protokollok, ftp szerverek, de a régi instant messenger alkalmazsok is problémaforrások lehetnek. Ezt a módszert gyakran használják más támadásokkal karöltve:

Man-In-the-Middle

Gyakori példa a Man-In-the-Middle módszer amikor két gép közé állunk be transzparens átjátszóként, és a teljes forgalom rajtunk halad át, mindent láthatunk amit küldenek egymásnak - ők azonban erről nem szereznek tudomást.

Keylogger

Közvetítő közeg nem csak a hálózat lehet, hiszen a jelszót a felhasználó egy gépnél kell megadja így tipikus támadási pont lehet az interface mellyel a felhasználó kommunikál - billentyűzet, érintőpad, operációs rendszer. A dolgunk csupán annyi, hogy fizikailag hozzáférünk a géphez és vagy hardveres vagy szoftveres Keyloggert csatolunk hozzá, mely naplózza az összes leütött billentyűt és inputot, utána már csak ebben a megszerzett adatbhalmazban kell keresnünk jelszavak után. Trójai vírusok és féreg vírusok gyakran hordoznak magukban egyszerűbb keyloggert, mely például ismert banki oldalak meglátogatásakor kapcsol be és küldi el számlaadatainkat az írójának.

Jelszó visszafejtéses támadások

Talán a legösszetettebb módszerek egyike a jelszó visszafejtés.

Matematikai hibák a kódolásban

A kódolások implementálásakor abba belekerülhetnek matematikai hibák, gyengeségek melyek az egész algoritmust kompromittálhatják - ez például a Base64-es kódolásnál jól megfigyelhető. Napjainkban ezek a hibák vagy gyengeségek jóval kevésbé szembeötlőek, kutatócsoportok sok éves munkájával kerülhetnek esetleg felszínre.

Implementációs problémák a kódolásban

Az implementáláskor nem csak matematikai hibák kerülhetnek a kódolásba, hanem a programozó óvatlanságából eredően programozási hibák is. Erre jó példa, hogy ha a legtöbb kódolásban jelen lévő primszámok megválasztása nem megfelelő körültekintéssel történik, akkor akár az egész kódolás értelmét veszítheti.

Szivárványtábla

Lényegében egy hatalmas lista jelszavakból és azok hash megfelelőiből, melyekben a hashekre keresve a hozzájuk tartozó jelszavakat kaphatjuk meg, előállítására két fő módszer létezik - a költségesebb a generált hash tábla, melyet kifejezetten erős gépek készítenek szótárakból vagy véletlenszerű szavakból - az olcsóbb és alattomosabb megoldással valószínűleg mindannyian találkoztunk már, legfeljebb nem tudtunk róla - ezek az encode-decode weboldalak, melyekbe egy példa jelszót beírva annak hash-ét kaphatjuk meg, amiről viszont nem tudunk, hogy a felvitt adatokat gyakran tárolja is a rendszer és így valós jelszavakat adunk a hackerek kezébe - ráadásul földrajzi helyzetünket, nyelvünket, ip címünket is tárolhatja hozzá a rendszer, ha óvatlanok vagyunk - így téve még értékesebbé az általunk ingyen a kezükre játszott adatot. A jó szivárványtáblák feketepiaci ára ugyanis elég magas. Ennek a módszernek nagy ellensége az úgynevezett sózás (salt), amikor a felhasználó által felvitt jelszót kiegészítjük, konkatenáljuk, megváltoztatjuk még a hash képzés alatt, mivel ilyenkor az eredetitől nagyon eltérő hash eredményt kapunk, továbbá hosszú és összetett jelszavak is csökkentik a szivárványtáblás visszafejtés sikerességét.

Authentikációs rendszer elleni támadások

A módszerhez szükséges alaptézis, axióma, hogy hibátlan rendszer nincs, és ez hatványozottan igaz az authentikációs rendszerekre is. A választott megközelítés nagyban függ a támadott szolgáltatás típusától, abban használt biztonsági megoldásoktól - alaposan fel kell mérni a célrendszer paramétereit, azon futó programokat, infrastruktúráját. Ezután a legygyengébbnek tűnő pont részletes felderítésével kell folytatnunk.

A komponensek ismeretében gyakran találhatunk elavult programokat, melyeknek már van felfedett gyengesége - ilyen lehet mondjuk az adatbáziskezelő rendszer authentikációja, mondjuk túlterheléskor előbb utóbb beenged, ekkor pedig szinte korlátlanul juthatunk felhasználói adatokhoz, többek között hashekhez, melyeket visszafejtve tipikusan még számos rendszerben felhasználható adatokhoz jutunk, mivel a felhasználók gyakran használnak csekély számú jelszót.

Esetleg lehetőséget találhatunk lehallgatásra is, vagy megtévesztésre is, előfordulhat az is, hogy egy rendszer például csak az intraneten kívülről érkezőktől követel meg azonosítást, ekkor pedig csak annyi a dolgunk, hogy az intranetre kerüljünk, akár saját gépünkkel, akár egy trójai vírussal, vagy elég lehet ezt csak elhitetnünk a rendszerrel és máris megkerültük az egész jelszó kérdést.

A használt kódolás kiderítése

A legelső lépés gyakran az alkalmazott jelszó kódolás kiderítése, hiszen alapvető ismeret a tovbbi próbálkozások irányában, persze ezt nem kötik az orrunkra - ráadásul pofonegyszerű dologról van szó. Nem kell mást tennünk csak a rendszer által felkínált eszközöket használnunk. Amennyiben szert tudunk tenni egy felhasználói fiókra regisztrációval vagy [[Social Engineering]gel, már csak pár lépés választ el attól, hogy megtudjuk milyen kódolást használnak az adott rendszeren. Mivel tudjuk a jelszavunkat, nincs más dolgunk, mint ahhoz keresni egy hash-szinonímát (más szó, de azonos hash). Tegyük fel, hogy az első kísérletünkben md5 kódolást próbálunk ki, ismert jelszavunkat úgy választjuk meg, hogy legyen egy általunk ismert másik szó is ami azonos hasht képez - illetve ha adott a jelszó változtassuk meg ilyenre. Ha nem tudjuk megváltoztatni kénytelenek leszünk keresni egy hash-szinonimát hozzá, ám ha ezzel megvagyunk elég kijelentkeznünk és a hash-szinonima szót próbálnunk ki a bejelentkezéshez. Ha ezzel is beenged akkor eltaláltuk a kódolást és nem használnak sózást az adott rendszerben, ha nem akkor vagy sóznak vagy más kódolást használnak. Általában elmondható, hogy minden felhasználási területhez vannak tipikus kódolási választások így érdemes ezekkel kezdenünk a próbálkozást, ezek között vannak mára már bizonyítottan veszélyesek, kompromittáltak is (példa: PHP - md5).