Salasanahyökkäykset

OTP-koodien arvailu brute force -tekniikalla

Helppo
30 min

OTP-koodi

OTP (One Time Password) viittaa kertakäyttökoodiin. Niitä löytyy pankkitunnuksista, monivaiheisesta kirjautumisesta (tekstarikoodit, tunnistus-sovellukset, yms), ja tämän harjoituksen tapauksessa salasananpalautuksesta.

Brute force

Brute force -tekniikka viittaa yleensä siihen, että salasanalistojen tms. sijaan käytämme vain raakaa laskentatehoa ja kokeilemme jokaista yhdistelmää numeroita, kirjaimia, jne. mitä on olemassa.

Harjoitus

Tässä harjoituksessa on salasananpalautus, jota ei ole tehty kovin turvallisesti. Käyttäjä saa sähköpostissa koodin väliltä 0-9999, ja oikealla koodilla pääsee asettamaan uuden salasanan.

0-9999 on ensinnäkin vähän pieni alue, mutta ennen kaikkea sovellus ei rajoita arvausyrityksiä!

Hyökkäys on siis:

  • Tilaa admin-käyttäjälle salasanan palautus
  • Mene palautus-sivulle ja kokeile koodia 0000-9999 kunnes koodi menee oikein.
  • Vaihda admin-käyttäjän salasana ja kirjaudu käyttäjänä sisään.

Koodilistan generointi

Aloita luomalla tiedosto, jossa on riveittäin numerot 0000, 0001... 9999. Voit tehdä sen seq-komennolla:

seq -w 0 9999 > koodit.txt

head-komennolla voit tarkastaa että tiedosto muodostui oikein.

head koodit.txt 
0000
0001
0002
0003
0004
0005
...

Hydran konfigurointi

Kuten salasanojen arvailun, tämänkin voi tehdä hydralla. Prosessi on käytännössä identtinen, käytetään vain https-post-form-moduulin sijasta https-get-form-moduulia (koska kyseessä on GET-pyyntö).

Ensin pitää kuitenkin selvittää, minkälainen HTTP-pyyntö koodin arvailusta tulee, ja taas käytämme ensin omaa tunnustamme koekappaleena ennen kuin yritämme murtautua admin-käyttäjän tilille.

Aloita tilaamalla salasananpalautuslinkki itsellesi:

Tarkista sitten sähköpostisi, ja klikkaa linkkiä.

Pyynnön voi nähdä jo URL-osoitteesta. Kyseessä on GET-pyyntö, joka ottaa kaksi URL-parametria: email ja code. Vastauksesta löytyy teksti "Reset password", jos koodi on oikea. Käytämme siis F-kirjaimen (F: Fail) sijasta S-kirjainta (S: Success).

Tämä riittää ensimmäiseen hydra-kokeiluun!

hydra -l student@ha-target.com -p 0092 www-vumuovrles.ha-target.com https-get-form "/reset-password:email=^USER^&code=^PASS^:S=Reset password"

Seuraava vaihe on tilata salasananpalautus admin-käyttäjälle (sähköposti löytyy sovelluksen kirjautumissivulta).

Kun linkki on tilattu, emme tietenkään saa sitä itse, vaan se menee adminille. Mutta tiedämme URL-osoitteen jonka admin saa, emme vain tiedä koodia.

Ajetaan siis hydra uudestaan, tällä kertaa käyttäen adminin sähköpostiosoitetta, ja salasanan sijasta salasanalistaa jonka loimme aiemmin.

hydra -l stephanie.long@ha-target.com -P koodit.txt www-vumuovrles.ha-target.com https-get-form "/reset-password:email=^USER^&code=^PASS^:S=Reset password"

Saatko koodin selville? Jos hyökkäys onnistuu, mene selaimella salasananpalautusosoitteeseen ja laita siihen oikea koodi ja sähköposti.

Palvelun suojaaminen

Jos käytät OTP-koodeja, huolehdi että koodi on vähintään 6 merkkiä pitkä, ja että virheelliset arvaukset johtavat mekanismin lukkiutumiseen.

Ennen kaikkea, älä turvaudu OTP-koodeihin ellei käyttäjän tarvitse itse kirjoittaa niitä johonkin. Tällaisessa linkissä on parempi käyttää pitkää, satunnaista arvoa. On myös tärkeä huolehtia siitä että linkki vanhenee, ja ettei sitä voi käyttää kuin kerran.

OTP-koodien Arvailu Brute Force -Tekniikalla

Tässä labrassa pääset harjoittelemaan OTP-koodien arvailua bruteforce -tekniikalla.

Tavoite

Login as the admin.

Vihje

Tehtävät

Flag

Löydä lippu (flag) labraympäristöstä ja syötä se alle.

hakatemia pro

Valmis ryhtymään eettiseksi hakkeriksi?
Aloita jo tänään.

Hakatemian jäsenenä saat rajoittamattoman pääsyn Hakatemian moduuleihin, harjoituksiin ja työkaluihin, sekä pääset discord-kanavalle jossa voit pyytää apua sekä ohjaajilta että muilta Hakatemian jäseniltä.