6. hash

Kurssisivu ja tehtävät: https://terokarvinen.com/2021/hakkerointi-kurssi-tunkeutumistestaus-ict4tn027-3005/

Santos et al 2017: Security Penetration Testing – The Art of Hacking Series LiveLessons: Lesson 6: Hacking User Credentials 

Authentication and Authorization mechanisms

user credentials are stored in database or textfiles, for webapplications in SQL database, in active directory domain in proprietary database

Petya – exploited system using EternalBlue exploit, payload used mimikatz to dump credentials out of memory, then used the stolen credentials to attack other systems on the network using well known protocols PsExec and WMI (normal traffic in Windows)

Passwords need protection on both storage and when transmitted over the network -> encryption + limit access to storage + intrusion protection, endpoint protection, auditing – user: longer passwords + two-factor authentication

Authentication and Authorization attacks

  • default passwords
  • password reuse – one password to rule them all
  • simple passwords generated by humans
  • domain admin password – compromise all computers on network

capture credentials

  • sniffing – public hotspots, usually not encrypt traffic between network nodes
  • man-in-the-middle – capture traffic: telnet, ftp, pop3, imap, http etc.
  • attack encryption – spoof SSL certificate, downgrade SSH, spoof keys
  • physical connection – directly from network device
  • brute force – dictionary, table of credentials or hashes: automatically and systematically test against target
    • tools: Medusa, THC-Hydra, Brutus, Metasploit (auxiliary modules)
    • tools for brute forcing directories and files: Dirbuster, wfuzz

Credential attack

  • identify valid users -> attack passwords
    • enumerate users on network
      • SMB/NetBIOS/SAMBA – enumerate users in a Windows share using the Security Accounts Manager by brute forcing the RPC interface
      • Metasploit auxiliary scanner SMB module – smb_enumusers
      • Nmap – scripts especially for enumerating users via smb and snmp

Password storage mechanisms – hashing

  • one-way hashing is not encryption
  • hashing can be used to protect passwords
  • not reversible
  • computed quickly
  • always use salt when hashing
$ echo "cleartextpassword" | sha256sum

Password storage vulnerability

  • clear text passwords
  • crack passwords – faster CPUs and GPUs, distribute computations, weak algorithms, dictionaries built from password breaches, rainbow tables
    • linux passwords are salted – harder to crack

John the Ripper

  • Built in to Kali – john
  • Usage: john [options] [password files]
  • stores cracked password in john.pot

Hashcat

-m --hash-type
-a --attack-mode - brute force, wordlist
--show - show cracked passwords
--username - show usernames for cracked password
--potfile-path - choose where cracked passwords are stored

Improving password security

  • hashing algorithms are not enough
  • use salted hashes
  • secure password storage
  • strong passwords everywhere – longer passwords, better randomness
  • use two-factor authentication
  • use certificate based authentication

——————————————————————————————————————-

hashcat

Tietoa hashcatista löytyy https://github.com/hashcat/hashcat ja https://hashcat.net/hashcat/

hashcat is the world’s fastest and most advanced password recovery utility, supporting five unique modes of attack for over 300 highly-optimized hashing algorithms. hashcat currently supports CPUs, GPUs, and other hardware accelerators on Linux, Windows, and macOS, and has facilities to help enable distributed password cracking.

https://github.com/hashcat/hashcat

hashID

Identify the different types of hashes used to encrypt data and especially passwords. hashID is a tool written in Python 3 which supports the identification of over 220 unique hash types using regular expressions.

https://github.com/psypanda/hashID

Nämä kaksi työkalua kulkee käsi kädessä salasanojen murtaamisessa.

hashcatin syntax on: hashcat [options]… hash|hashfile|hccapxfile [dictionary|mask|directory]…

——————————————————————————————————————-

a) Googlen kärkeen – Vapaaehtoinen, mutta helppo ja suositeltava: lisää linkki tehtäviisi tämän sivun perään kommentiksi. Autat samalla kavereitasi, jotka voivat katsoa raporteistasi mallia.

Linkki julkaistu 🙂

——————————————————————————————————————-

b) Tee 3 tiivistettä eri ohjelmilla ja murra ne hashcatilla.

Ensin vähän teoriaa.

Hyvä artikkeli tiivisteiden ymmärtämiseen!

The hashdump post module will dump the local users accounts on the compromised host using the registry.

https://www.offensive-security.com/metasploit-unleashed/windows-post-gather-modules/

mimikatz is a tool I’ve made to learn C and make somes experiments with Windows security.

It’s well known to extract plaintexts passwords, hash, PIN code and kerberos tickets from memory.

mimikatz can also perform pass-the-hashpass-the-ticket, build Golden tickets, play with certificates or private keys, vault, … maybe make coffee?

https://github.com/gentilkiwi/mimikatz/wiki

Loin ensin pari käyttäjää.

Tunnukset löytyvät sen jälkeen /etc/shadow tiedostossa.

Tässä vaiheessa pohdin haluanko yksinkertaisesti kopioida pelkät tiivisteet uuteen tiedostoon, vai haluanko samalla tehdä ns. unshadow . Toiminto löytyy näköjään Johntheripperissä.

Kokeilin ensin copy paste metodilla.

Tässä vaiheessa tiivisteet ovat nyt tallennettuna omaan tiedostoon, ja haluan nyt tarkistaa millä metodilla tiivisteet on luotu. Tähän käytän hashID:tä.

hmm, eli ilmeisesti käyttäjätunnukset ei saisi olla mukana..Sekään ei kuitenkaan auttanut. Yritin vielä tehdä hashcatilla brute forcen, mutta ei onnistunut.

Ilmeisesti /etc/shadowin tiivisteet ovat erikoisesti suojattu, sillä yritin myös googlaamalla selvittää millä tiivisteet on luotu, mutta ei selvinnyt, eli en voinut tehdä hashcatilla tarkempaa hyökkäystä.

Päätin sittenkin luoda tiivisteet helpommin, sillä en halunnut tuhlata turhan paljon aikaa tiedostojen kanssa tappelemiseen.

Seuraavaksi tarkistin miten hashID tulkitsee tiivisteet.

Seuraavaksi murran tiivisteet hashcatilla. HashIDn tuloksista saan myös poimittua hashcatin modet. Päätin käyttää sanalistaa, sillä brute force varmaankin kestää liian kauan. Brute force hyökkäystyypin saa argumentilla -a3.

$ hashcat -m0 -m1700 -m100 hashes rockyou.txt -o solved.txt

En tiedä jos hashcat suostuu ottamaan vastaan kolme moodia, mutta näyttipä onnistuvan. Tajusin kuitenkin tässä vaiheessa, etten ollut lisännyt salasanat rockyou-listaan…

Päätin kuitenkin luoda uuden pienemmän listan, johon kopioin rockyoun 100 ensimmäistä ja lisäsin vielä omat salasanat.

Tällä kertaa hashcat onnistui murtamaan yhden kolmesta salasanasta… Näköjään kuitenkin löytyi myös toinen solved.txt tiedostossa, en nyt oikein ymmärrä tätä tulostuslogiikka. Käsittääkseni hashcatin pitäisi tulostaa kaikki murretut salasanat tiedostoon (jo on määritelty) tai outputina, eikä näin, että osa tulostetaan tiedostoon ja osa outputina, se on kummallista.

Jos sen jälkeen ajan komennon uudelleen, sillä kolmannesta salasanasta ei löytynyt merkintää, saan ilmoituksen “INFO: All hashes found in potfile!” Mutta kun tarkistan sen, sieltä löytyy ainoastaan yksi.

Jotain tietoa aiheesta löysin täältä. Ehkä se vain johtuu siitä, että samassa tiedostossa on eri tyyppisiä tiivisteitä.

——————————————————————————————————————-

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

Ensin luon oman sivun, käytin apuna nämä ohjeet.

Luon yksinkertaisen html sivun, jonka julkaisen yksinkertaisen python webserverin avulla. Tein ensin kansion Omasivu johon tallensin index.html tiedoston ja käynnistin palvelimen kyseisestä kansiosta, jolloin se automaattisesti hakee index.html tiedoston.

$ mkdir Omasivu
$ cd Omasivu/
$ vim index.html
$ python -m SimpleHTTPServer

CeWL is a ruby app which spiders a given url to a specified depth, optionally following external links, and returns a list of words which can then be used for password crackers such as John the Ripper.

https://digi.ninja/projects/cewl.php

Seuraavaksi tutustun Cewliin, ja löysin sitä varten Raj Chandel’s Comprehensive Guide on Cewl Tool, joka vaikuttaa hyvältä.

Tarkistan ensin, että cewl jo löytyy Kalista.

Halusin tallentaa sanalistan tiedostoon, ja käytän sitä varten argumentin -w.

$ cewl http://localhost:8000/ -w dict.txt

——————————————————————————————————————-

d) Kokeile sanakirjahyökkäystä verkon yli omaan weppilomakkeeseen. (Vain omaan, eristetyssä verkossa olevaan lomakkeeseen. On kiellettyä tehdä näin kenenkään toisen koneelle.)

Halusin testata Juice Shopia. Python ei ole vielä kovin tuttu, ja vaikka löysin monta Python Flaskin tutorialeja, päätin antaa sen kuitenkin vielä hautua.

Juice Shopille löytyi asennusohjeet GitHubista.

$ sudo apt install nodejs
$ git clone https://github.com/bkimminich/juice-shop.git
$ cd juice-shop
$ sudo apt npm install
$ npm start

Törmäsin tässä kohtaa ongelmaan..

Jotain tietoa aiheesta löysin täältä ja Githubista. Tarkistin, että noden versio oli 12.21.0 ja käsittääkseeni pitäisi olla sama kuin juice shopissa. Eli poistan noden (sudo apt purge nodejs) ja kokeilen asentaa version 12.7.2.. Se oli kuitenkin vaikeampaa kuin kuvittelin, ja pitkän tutkistelun ja mietiskelyn jälkeen tajusin kokeilla toisin päin, eli asensin noden uusimman version ja latasin Juice-Shopin yhteensopivan version täältä.

$ mkdir Juice-shop
$ tar zxvf Downloads/juice-shop-12.2.1_node12_linux_x64.tgz -C Juice-shop\n
$ cd Juice-shop
$ sudo apt install npm
$ cd juice-shop_12.2.1
$ npm start

Tämän jälkeen Juice-shop löytyy vihdoinkin kohteessa http://localhost:3000

Seuraavaksi tuktin työkaluja

Hydra is a parallelized login cracker which supports numerous protocols to attack. It is very fast and flexible, and new modules are easy to add. This tool makes it possible for researchers and security consultants to show how easy it would be to gain unauthorized access to a system remotely.

https://tools.kali.org/password-attacks/hydra

Hydra brute forcing tutorial

Hydra on GitHub

hydra [some command line options] [-s PORT] TARGET PROTOCOL [MODULE-OPTIONS]

ffuf – Fuzz Faster U Fool

A fast web fuzzer written in Go.

https://github.com/ffuf/ffuf

Everything you need to know about fuff

Päätin kokeilla Hydraa, sillä siitä oli tunneilla niin paljon puhetta. Varmistan taas, että Hydra on jo asennettu Kalille.

Dictionary Attack will use a precompiled list of words or word list, this will speed up the cracking process over brute force because the program will only run through each word in the wordlist but if the word is not in said word list your attack will fail.

https://securitytutorials.co.uk/brute-forcing-passwords-with-thc-hydra/

Brute Force will crack a password by trying every possible combination of the password so, for example, it will try aaaa then aaab, aaac, aaae . This quite considerably increases the time the attack takes but reduces the likeliness of the attack to fail.

In hydra, you can use the -x to enable the brute force options.

https://securitytutorials.co.uk/brute-forcing-passwords-with-thc-hydra/
Hyvä cheat sheet – https://securitytutorials.co.uk/brute-forcing-passwords-with-thc-hydra/

Kokeilen tutorialin esimerkkiä ensin. Mutta ensin pitää löytää jonkun adminin käyttäjätunnusta. Se löytyikin helposti, sillä admin@juice-sh.op on arvostellut jotain etusivun tuotetta.

Tajusin, että tuohon pitää määritellä se nimenomainen palvelu, jota halutaan murtaa, eli tässä tapauksessa lomake. Muutaman kokeilun ja etsinnän jälkeen löysin täältä tarkentavat ohjeet. Jouduin kuitenkin vielä etsimään netistä ja man sivuilta ennen kuin lopulta löysin toimivan komennon.

$ hydra -t 4 -V -f -l admin@juice-sh.op -P rockyou.txt localhost -s 3000  http-form-post '/#/login:email=^USER^&password=^PASS^:Invalid email or password.'

Eipä kuitenkaan ollut oikea salasana, niinpä teen uuden murtoyrityksen ja poistan -f argumentin, sillä haluan, että se etsii kaikki mahdollisia.

hmm, eipä nämäkään toimineet.. Tämä tarkoittaa varmaankin sitä, että kyseinen salasana ei löydy rockyou sanalistalla. Kokeilen seuraavaksi brute forcea. Löysin Juice-shopista tiedon, että salasana on 5-20 merkkiä pitkä, muita vaatimuksia ei nähtävästi ollut. Tämä kuitenkin luo liian laajan scopen, eli hydra ei suostu tekemään sellaista.

Kokeilin vielä sanakirjahyökkäystä siten, että poistin argumentin -t 4. Mielestäni hydra ajoi hyökkäykset aika nopeasti ja en halunnut turhia rajoituksia. Nyt löytyikin sitten 16 salasanaa.

Mikään niistä ei kyllä toiminut… googlasin aihetta, ja löysin oikean salasanan täältä.

Salasana vaikuttaa mielestäni sellaiselta, että pitäisi löytyä rockyou listalla, joten tutkiskelin hieman sitä. Todistettavasti se myös löytyy, joten en nyt ymmärrä miten Hydra ei voinut sitä löytää…

———————————————————————————————————————–

e) Murra jonkin tiedoston salajanasuojaus.

Löysin taas Raj Chandel’s blogikirjoituksen aiheesta.

Loin uuden ensin file.txt tiedoston, johon asetin salasanan.

$ zip -er file.zip file.txt
    e = Encrypt
    r = Recurse into directories (tässä turha)

Jotta tiedoston voisi murtaa, täytyy ensin muuttaa sen muoto.

Sen jälkeen varmistin vielä, että valitsemani salasana löytyy rockyou listalla, ja tein murtoyrityksen Johntheripperilla.

Onnistui!

———————————————————————————————————————–

f) Vapaaehtoinen bonus: Kokeile sanakirjahyökkäystä verkon yli johonkin muuhun maaliin kuin weppiin.

Kokeilin hieman hydraa Metasploitable 2:een ssh palveluun. Ensin testasin brute forcea sanalla admin, ei löytynyt mitään. Sen jälkeen testasin vielä sanakirjaa, joka oli hidas.

Koska koko rockyou listan läpikäyminen näytti vievän aivan liian kauan, keskeytin sen ja kokeilin pienemällä listalla, mutta siinä ei näköjään ollut oikeata salasanaa mukana.

———————————————————————————————————————–

g) Vapaaehtoinen bonus: Murra useiden tiedostojen salasanasuojaukset.

RAR

Käytin aikaisempaa file.txt tiedostoa

$ rar a -hppassword123 file.rar file.txt

    a = Add files to archive
    hp[password] = Encrypt both file data and headers

Muutetaan taas ensin tiedoston muotoa. Käytän sen jälkeen Johntheripperia ja rockyou sanalistaa tiedoston murtamiseen.

One thought on “6. hash

Leave a comment

Design a site like this with WordPress.com
Get started