Hash

Hash - Tunkeutumistestaus viikkotehtävä 6

TLDR

Tässä tehtävässä tutustuin salasanatiivisteisiin, sekä eri tapoihin murtaa niitä. Kokeilin myös hydraa webbilomakkeeseen.

Tehtävänanto

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

md5

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

cracked

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

512id

Ajettava komento pysyi muuten samana, mutta -m 0 vaihtui -m 1700 oikeaa tiivistetyyppiä varten.

512donezo

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.

sha1hash

Hashcatin modeksi valikoitui siis 100.

sha1cracked

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ä.

curlpipe

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.

localhost

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.

cewl

Poistin tiedoston alusta cewlin lisäämän automaattisen rivin ja näin salasanalista on valmis käytettäväksi.

rivimäärä

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.

dwalogin

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.

burp

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

hydracommand

  • -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

hydradone

imin

Murra jonkin tiedoston salasanasuojaus - Tehtävä E

Salasanasuojatun zip kansion voi tehdä suoraan komentoriviltä

$ zip -e secret.zip users.txt

secret

  • -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

zip2john

Ja viimeisenä ajaa John the Ripper

$ john forjohn.txt

johndone

Linkkejä