Hash - Tunkeutumistestaus viikkotehtävä 6
TLDR
Tässä tehtävässä tutustuin salasanatiivisteisiin, sekä eri tapoihin murtaa niitä. Kokeilin myös hydraa webbilomakkeeseen.
Katso ja tiivistä muutamalla sanalla - Tehtävä Z
- € Santos et al 2017: Security Penetration Testing - The Art of Hacking Series LiveLessons: Lesson 6: Hacking User Credentials
- “One ring to rule them all” ajattelutapa äärimmäisen haitallista salasanojen suhteen. Samaa salasanaa ei tulisi käyttää useassa eri paikassa
- Windows ei salttaa salasanojen tiivisteitä
- John the Ripper sekä Hashcat suosituimpia tiivisteiden purkajia
Tee 3 tiivistettä ja murra ne hashcatilla - Tehtävä B
Tässä tehtävässä tuli luoda 3 tiivistettä, sekä murtaa ne hashcatin avulla. Tätä varten asensin hashcatin pöytäkoneelleni, jotta pystyin käyttämään näytönohjaintani tiivisteiden murtamisen apuna. Näytönohjain on Nvidia Geforce 1070ti.
md5
Aloitin tekemällä md5 hashin password1
salasanasta md5sum
ohjelman avulla.
$ echo -n password1 |md5sum
Kopioin saadun tiivisteen tekstitiedostoon windows koneelle, ja ajoin hashcatin.
.\hashcat.exe -m 0 .\hash.txt .\rockyou.txt -O
Komento näyttää aikaisempiin verrattuna hieman takaperoiselta johtuen siitä, että tämä ajettiin windowsin powershellissä
.\hashcat.exe
ajaa hashcatin-m 0
määrittää tiivisteen tyyppikoodin, jotta hashcat tietää, mitä kokeilla.hashid -m [tiiviste]
komennolla linuxissa saa selville, minkä numeron -m kohtaan tulee laittaa.\hash.txt
tiedoston nimi joka sisältää tiivisteen.\rockyou.txt
sanalistan tiedostonimi-O
Tämä oli jonkinlainen kernelin optimointi vaihtoehto. Ensimmäisen testikerran jälkeen hashcat suositteli lisäämään tämän, jotta saa parempaa suorituskykyä aikaiseksi
Aikaa tämän salasanan murtamiseen meni huimat 8 sekuntia.
SHA-512
Edellisen kohdan tavoin loin SHA-512 tiivisteen. Tämän jälkeen tarkistin hashid
komennon avulla, minkä moden hashcat halusi itselleen ajoa varten.
$ echo -n 123456 |sha512sum
Ajettava komento pysyi muuten samana, mutta -m 0
vaihtui -m 1700
oikeaa tiivistetyyppiä varten.
Jälleen kerran hashcat hoiti hommansa muutamassa sekuntissa.
SHA-1
Viimeiseksi valitsin SHA-1 tiivisteen. Sama kaava toistui jälleen. Putkita sana sha1sum
komennolle ja tarkista ajettava mode hashid -m
komennolla.
Hashcatin modeksi valikoitui siis 100
.
Sanakirjasta tulosten löytämiseen hashcatillä ei kulu suuria aikoja.
Tee oma salasanalista - Tehtävä C
Vuorossa oli oman salasanalistan tekeminen keksitystä webbisivusta. Käytin cewl
ohjelmaa listan luomiseksi, ja tehtävää varten kopioin tämän sivuston etusivun
lähdekoodin paikalliseen ympäristöön, jotta cewl ei pääse vahingossakaan paikkoihin, johon sen ei pitäisi päästä.
Poistin varmuuden vuoksi vielä script tagit tehtävää varten. En usko, että niillä olisi vaikutusta mihinkään mutta niitä ei myöskään tätä varten tarvita.
Pyöräytin python3 -m http.server
komennolla paikallisen palvelun pystyyn, jotta localhost:8000
osoitteesta pystyin tarkastelemaan sivua.
Sivun linkit eivät vie mihinkään. Aika laittaa cewl töihin.
$ cewl -d 0 http://localhost:8000/etusivu.html > wordlist
-d 0
tarkoittaa, että “syvyys” on nolla. Cewl ei siis yritä klikkailla linkkejä, ja etsiä niiden takana olevilta sivuilta sanoja.
Poistin tiedoston alusta cewlin lisäämän automaattisen rivin ja näin salasanalista on valmis käytettäväksi.
Etusivulta sai irti 44 kappaletta salasanalistaa varten.
Kokeile sanakirjahyökkäystä lomakkeeseen - Tehtävä D
Tätä tehtävää varten käytin metasploitable 2 järjestelmän mukana tulevaa Damn Wulnerable Web applicationia. Sivulle siirtyessä vastaan tulee lomake sisäänkirjautumista varten.
Hydra tarvitsee toimiakseen tiedon kohteen ip osoitteesta, polun mihin kutsu tehdään, kutsujen muoto, sekä virheviesti jotta hydra tunnistaa epäonnistuneen yrityksen.
Aloitin tekemällä kirjautumisyrityksen syöttämällä satunnaisia kirjaimia molempiin kenttiin ja nappasin kutsun Burp suiten avulla.
Ylälaidassa olevan POST sanan jälkeen tuleva polku on se, johon hydran hyökkäys kohdistetaan. Alhaalla oleva rivi joka alkaa username
kohdalla on myös tärkeä.
Ensimmäisessä kuvassa näkyikin jo virheilmoitus, joka tulee vääristä sisäänkirjautumistiedoista.
Loin lyhyen käyttäjänimilistan, josta hydra ettii käyttäjänimiä
admin
user
root
administrator
Seuraavaksi olikin itse komennon vuoro jo
-f
tarkoittaa, että hydra lopettaa yrittämisen ensimmäisen onnistuneen kirjautumisen jälkeen-L
tarkoittaa listaa mahdollisista käyttäjänimistä. Mikäli käyttäjänimen tietää-l
flagillä tuodaan se hydran tietoon-P
on salasanalistaa varten. Samalla tavalla-p
on salasanaa varten jos sen jo tietäähttp-post-form
kertoo hydralle minkälaiseen lomakkeeseen hyökkäys kohdistuu- Post formin jälkeen syötetään ensin url polku, johon post tehdään. Tämän jälkeen syötetään http kutsun parametrit
- ^USER^ kohdistaa käyttäjänimilistan tähän kohtaan
- ^PASS^ tekee saman salasanalistalle
- Viimeiset kaksoispisteet erottavat virheviestin, jota hydra seuraa tietääkseen epäonnistuneet yritykset
Murra jonkin tiedoston salasanasuojaus - Tehtävä E
Salasanasuojatun zip kansion voi tehdä suoraan komentoriviltä
$ zip -e secret.zip users.txt
-e
flagillä salasana pysyy piilossa kirjoittamisen aikana
Seuraavaksi täytyy tunnistaa tiivisteen muoto, ja tulostaa se tiedostoon John the Ripperiä varten.
$ zip2john secret.zip > forjohn.txt
Ja viimeisenä ajaa John the Ripper
$ john forjohn.txt