Tunkeutumistestaus vko. 6

Raportissa on vastaukset Haaga-Helia Ammattikorkeakoulu Tunkeutumistestaus -opintojakson tehtäviin. Kurssi perustuu Tero Karvisen materiaaleihin.

Kirjoittamani materiaali saa muuttaa, jakaa, käyttää ja kopioida GNU General Public License v.3.0 mukaisesti.

Tehtävänanto

Vinkkejä

  • Youtube-videoiden katseluun kännykällä SkyTube (tai NewPipe, jos se on päivitetty), molemmat F-Droidista. Youtube-videoiden nopeuden säätöön codebicycle Video Speed Controller addon Firefoxille.
  • Voit avata esimerkiksi zip tai pdf-tiedoston salakirjoituksen. Yksi helppo vaihtoehto on zip2john.
  • Salatun zip-paketin saa tehtyä ‘zip –encrypt -r tero.zip tero/’ (iirc)
  • Voit kokeilla THC Hydraa esim. Metasploitable 2:n.
  • Weppilomakkeeseen hyvä työkaluja ovat Hydra tai Fuff. Tarvittaessa voit tallentaa HTTP-pyynnön (request) ZAP:lla tai mitmproxylla.
  • Voit koodata lomakkeen itse vaikkapa Python Flask:illa. Jos haluat valmiin lomakkeen, voit esim. asentaa Juice Shop -harjoitusmaalin.
  • Voit muuttaa sivun sanalistaksi vaikkapa cewl:lla tai omalla skriptillä. Älä käytä muiden sivuja esimerkkinä vaan tee oma sivu.
  • Tiedostojen salasanojen murtaminen onnistuu mukavasti John the Ripperillä. Ks esim. https://github.com/openwall/john/tree/bleeding-jumbo/run
  • Jos korkkaat Machines-verkon koneita, älä laita niiden raportteja nettiin. Niissä on muillakin kilpailu kesken kuin vain meillä kurssilaisilla.
  • Aloita helpoista koneista. HTB:n sisäänkirjatuneen käyttäjän sivulla näkyy, kuinka helppoina koneita on pidetty.

z) Lue artikkelit ja katso videot, tee kustakin muistiinpanot (muutama ranskalainen viiva per artikkeli/video). Tässä z-kohdassa ei tarvitse tehdä mitään kokeita koneella.

Hacking user credentials

  • Oletussalasanoja ei vaihdeta
    • netissä valmiita sivuja, joille on listattu palvelu-/laitekohtaisia oletussalasanoja
  • Salasanojen kuljetus verkon yli pitää kryptata
  • Salasanat tietokannassa pitää olla kryptattuina
  • MITM, julkiset wifit ja hotspotit,
    • käytä vpn aina jos liityt näihin
  • Hyökkääjä haluaa identifioida mahdollisten kohteiden käyttäjänimet
    • enum users
  • miksi salasanojen hakkerointi on nykyään helpompaa?
    • suuret ja vuodetut tietokannat, joissa salasanat selkäkielisinä
    • tietokoneet kehittyvät ja niiden laskentateho kasva koko ajan
    • käytetään heikkoja algoritmeja
  • Heikot salasanat
    • käyttäjät käyttävät samoja salasanoja monissa palveluissa
  • john the ripper
  • hashcat
  • vahvemmat salasanat
    • organisaatiot
      • vahvojen salausten käyttö
      • suolaus
      • suojaa salasanojen talletus ja varastointi
      • vaadi pidempiä salasanoja
    • käyttäjä
      • 2fa, mfa
      • eri salasanat eri palveluihin

HackTheBox – Luke (IppSec)

  • Porttiskannaus ja tulosten tarkastelu
    • 21 ftp, 22 ssh, 80 http, 3000 http (node express), 8000 http
  • testasi että shh daemoni vastaa
  • loi ftp yhteyden, tutki sisällön ja otti talteen löytyneen tiedoston
  • avasi selaimessa web-palvelun
  • gobusterilla hakemistojen etsimistä
    • haku ilman portimääritystä, portille 80 ja 3000
    • tulokset omiin output-tiedostoihin
  • löydettyjen hakemistojen tutkimista
    • /management löytyi autentikointilomake
  • /config.php
    • myslq käyttäjätunnukset
  • oikean POST-syntaksin kokeilu
    • oletustunnuksilla kirjautumista
    • oikeilla tunnuksilla sai JWT
    • Katso ippsecin “offshore”
  • Burpsuite scopen määritys
  • käyttäjien dumppaaminen endpointista /users
    • salasanat
  • käyttäjätunnus:salasana testaaminen löydettyihin kirjautumislomakkeisiin
    • sisään web-adminilla
      • löysi jsonista uuden salasanan
      • sisään ajenti-webdashboardille
      • uusi terminal
      • reverse shell
  • salausavaimen löytäminen ja JSON Web Tokeneiden tekeminen

a) Tee 3 tiivistettä eri ohjelmilla ja arvaa ne hashcatilla. Tiivistä jokin oma sana, ei sanaa ‘hashcat’. Voit käyttää tässä demossa itse tehtyä sanakirjaa, jossa on oikea ratkaisu muutaman väärän joukossa. Kuvaile myös, miten teit tiivisteet.

Loin uuden sanalistan

$ nano h6-sanalista.txt
mikkihiiri
minnihiiri
akuankka
hessuhopo
iinesankka
roopeankka

Tein muutaman erilaisen hashin sanasta “akuankka” käyttäen Linuxin tarjoamia valmiita hash-työkaluja. echo vivulla -n ei tulosteta uutta rivinvaihtoa.

──(sami㉿pentest)-[~/h6]
└─$ echo -n "akuankka" | md5sum  
5c54fe614285a0e57ecb54c05c016108  -
                                                                                                                                
┌──(sami㉿pentest)-[~/h6]
└─$ echo -n "akuankka" | sha256sum
f163256800aa49f3d191ddceb9188ddeab2f84c85dd59212921ceada9bbac2e5  -
                                                                                                                                
┌──(sami㉿pentest)-[~/h6]
└─$ echo -n "akuankka" | sha512sum
960578ec5f0a0cc78a34a3fecc76a3e964eb4a2039b53a06103807e01ec65536092135adbb4a5939fc4dd3866432263be7bf08ae52d3f98cbb329946bae87ca3  -

Vertasin kutakin hashia sanakirjaa vastaan. hashcat ei halua suorittaa samoja komentoja uudelleen. Vivulla -m määrittelin käytetyn algoritmin ja vivulla --show tulostin suoritettujen komentojen tulokset jälkikäteen.

Näinkin lyhyen listan suoritusajoissa oli huomattavaa eroa:

  • MD5 suoritus kesti 4 sekuntia
  • SHA256 suoritus kesti 24 sekuntia
  • SHA512 suoritus kesti 34 sekuntia
┌──(sami㉿pentest)-[~/h6]
└─$ hashcat 5c54fe614285a0e57ecb54c05c016108 -m 0 h6-sanalista.txt --show                             
5c54fe614285a0e57ecb54c05c016108:akuankka
                                                                                                                                
┌──(sami㉿pentest)-[~/h6]
└─$ hashcat f163256800aa49f3d191ddceb9188ddeab2f84c85dd59212921ceada9bbac2e5 -m 1400 h6-sanalista.txt --show 
f163256800aa49f3d191ddceb9188ddeab2f84c85dd59212921ceada9bbac2e5:akuankka
                                                                                                                                
┌──(sami㉿pentest)-[~/h6]
└─$ hashcat 960578ec5f0a0cc78a34a3fecc76a3e964eb4a2039b53a06103807e01ec65536092135adbb4a5939fc4dd3866432263be7bf08ae52d3f98cbb329946bae87ca3 -m 1700 h6-sanalista.txt --show
960578ec5f0a0cc78a34a3fecc76a3e964eb4a2039b53a06103807e01ec65536092135adbb4a5939fc4dd3866432263be7bf08ae52d3f98cbb329946bae87ca3:akuankka

b) Kokeile Hydraa ssh:ta vastaan.

Käynnistin Metasploitable 2-koneen, jota vastaan kokeilen Hydraa. Kirjauduin maalikoneeseen sisään ja tarkasin sen ip-osoitteen $ ifconfig. Metasploitable2-koneen oletustunnukset ovat msfadmin/msfadmin. Etsin lisätietoa hydra käytöstä.

Testaan työkalua muutamalla eri tavalla

  • bruteforce salasanoilla
  • bruteforce käyttäjätunnukselle
  • bruteforce molemmille

Tein lyhyet sanalistat sekä käyttäjätunnuksille että salasanoille.

Testisanalistat

Vivulla -l määritetään tiedetty käyttäjätunnus. Vivulla -P lista salasanoista.

$ hydra -l msfadmin -P passwords.txt 192.168.56.101 ssh

Vivulla -L määritetään lista käyttäjätunnuksista. Vivulla -p tiedetty salasana.

$ hydra -L users.txt -p msfadmin 192.168.56.101 ssh

Vivulla -L määritetään lista käyttäjätunnuksista. Vivulla -P määritetään lista salasanoista. Oletuksena hydra ajaa 16 samanaikaista tehtävää. Monet ssh-konfiguraatiot rajoittavat rinnakkaisia toimintoja. Hydra kehottaa määrittämään vivulla -t rinnakkaiset toiminnot neljään.

$ hydra -L users.txt -P passwords.txt 192.168.56.101 ssh

c) Kokeile salasanoja omaan weppilomakkeeseen.

Testasin hydraa Metasploitable 2-koneella pyörivää Damn Vulnerable Web Applicationia vastaa. Testasin, että yhteys maalikoneeseen on ja varmistin, ettei hyökkäyskone ole internetissä. Seurasin ohjeita (infinitelogins.com) login-bruteforceen.

Katsoin sivun lähdekoodista lomakkeessa käytetyt parametrit ja metodin. Syötin väärän tunnus-salasana-parin, jotta, saan selville sovelluksen ilmoittaman virheilmoituksen.

Lomakkeella lähetetän tietoa palvelimelle, joten metodi on POST. Tarvitsin myös parametrit username, password sekä Login.

Developer Tools -> Network -> Request näin missä muodossa POST-metodi lähti palvelimelle.

username=foo&password=bar&Login=Login

Haluan jättää molemmat kentät hydran ratkottavaksi ja käyttää Kalin mukana tulleita sanalistoja: username=^USER^&password=^PASS^&Login=Login.

sudo hydra <Username/List> <Password/List> <IP> <Method> "<Path>:<RequestBody>:<IncorrectVerbiage>"

https://infinitelogins.com/2020/02/22/how-to-brute-force-websites-using-hydra/

Em. syntaksin perusteella loin käyttämäni komennon.

$ hydra -L /usr/share/wordlists/dirb/small.txt -P /usr/share/wordlists/dirb/small.txt 192.168.56.101 http-post-form "/dvwa/login.php:username^USER^&password=^PASS^&Login=Login:Login failed"

Uhkaavasti alkoi näyttämään siltä, että murtamiseen menee tovi suunniteltua pidempään.

Tapoin komennon ja muokkasin komentoa siten, että käytän brute forcea vain salasanaa kohtaan.

$ hydra -l admin -P /usr/share/wordlists/dirb/small.txt 192.168.56.101 http-post-form "/dvwa/login.php:username=admin&password=^PASS^&Login=Login:Login failed"
hydran selvittämä salasana

d) Tee oma sanalista itse tekemästäsi ja keksimästäsi weppisivusta.

Tein jo 4. viikon tehtävissä sanalistan, mutta harjoituksen vuoksi lisäsin puppulausegeneraattorilla lisää sisältöä ja tein sanalistan pidemmille sanoille nelimerkkisten sijaan. Potkaisin Apache2 käyntiin $ sudo systemctl restart apache2.service ja komensin cewl ryömimään sivulleni tekemään sanalistaa sanoista, jotka ovat -m vähintään viiden merkin mittaisia tulostaen -w sanalistan tiedostoon.

$ cewl -m 5 -w h6-sanalista-webista.txt http://localhost/~sami 
$ cat h6-sanalista-webista.txt                                
about
contact
Tapahtumat
viime
aikoina
osoittavat
homepage
asennekasvatuksen
yleinen
käynnistäminen
järkeistää
...

cewl kerää myös email-osoitteita, joita voidaan käyttää esimerkiksi sivustoon kohdistuvissa brute-force hyökkäyksissä. Vivulla -w tulostetaan tiedostoon, -e etsitään email-osoitteita ja -n ohitetaan tavallisen sanalistan tekeminen.

$ cewl -w h6-emailit.txt http://localhost/~sami -e -n  

e) Murra zip-paketin salajanasuojaus.

Loin pakattavan hakemiston ja loin sinne tiedoston. Tein kryptatun zipin komennolla

$ zip --encrypt -r secret.zip secret 

Testasin, että zip on kryptattu.

Loin linuxconfigin artikkelin neuvomana zipistä hash-tiedoston.

$ zip2john secret.zip > ziphash.txt

Hashista näki zipin hakemistopuun.

Määritin john parametreiksi käyttämäni salasanalistan ja hash-tiedoston.

$ john --wordlist=/usr/share/wordlists/dirb/small.txt ziphash.txt

Zip murtui ja salasana password tuli selville. Nyt zipin pystyi purkamaan.

f) Murra jonkin muun tiedoston salasanasuojaus.

Otin kuvakaappauksen ja loin siitä pdf-tiedoston. Kloonasin johnin repon, jotta saan pdf2john työkalun käyttööni.

Asensin qpdf, jolla voin kryptata tiedoston

$ sudo apt-get install -y qpdf

Kryptasin tiedoston /usr/share/wordlists/dirb/big.txt löytyvällä salasanalla. Kryptaus tehtiin heikolla salausmenetelmällä RC4, joka määriteltiin avaimen pituudella 40. Muut mahdolliset parametrit ovat 128 ja 256.

$ qpdf --encrypt CYBERDOCS25 CYBERDOCS25 40 -- 1.pdf 1-encrypted.pdf
qpdf: writing a file with RC4, a weak cryptographic algorithm
Please use 256-bit keys for better security.
Pass --allow-weak-crypto to suppress this warning.
This will become an error in a future version of qpdf.

Loin kryptatusta tiedostosta hashin

$ ./pdf2john.pl /home/sami/h6/1.pdf.cpt > /home/sami/h6/hash.txt

Annoin john parametreiksi sanalistan ja murrettavan hashin

$ john --wordlist=/usr/share/wordlists/dirb/big.txt /home/sami/h6/hash.txt
john mursi salasanan hyvin nopeasti

g) Salasanan taakse / ei julkiseen nettiin: Tiedustele perusteellisesti jokin HTB Machines verkon kone. Selitä tulokset. Luettele lähestymistavat, joilla murtautumista voisi aloittaa. (Tämä pitää laittaa piiloon, koska HTB:lla on näistä kilpailu, emmekä halua spoilata sitä)

Tehtävä salasanan takana täällä.

Leave a Reply