Viikkotehtävä 2(Pen test)

Etusivulle

Kone: HP ProBook 6560b, johon asennettu Kali linux käyttöjärjestelmä versio 2020.3. CPU: Intel Celeron B810 1.60GHz

VK2 Penetration Testing Course 2020 Autumn

Tehtävän annot otettu Tero Karvisen kurssi sivulta

”Lue opiskelumateriaali jokaisen läksyn yhteydessä. Tämän kerran lukupaketti L2 tutustuttaa OWASP 10 sekä hakkerointia opettaviin videoihin O’Reilly Learningissa (läpinäkyvyyden nimissä: sen omistava yritys on julkaissut useita kirjojani).” (Karvinen, 2020)

”a) Kirjaa muutamalla ranskalaisella viivalla per artikkeli muistiinpanot kustakin lukuläksyn osasta. OWASP 10 osalta 3-5 bullettia per haavoittuvuus. Bulleteista on hyvä selvitä, miten haavoittuvuutta käytetään; sekä olla niin yksilöivä, että eri haavoittuvuudet erottuvat toisistaan.” (Karvinen, 2020)

”b) Kybertappoketju. Mainitse esimerkkejä työkaluista, jotka soveltuvat Hutchins et al kybertappoketjun kuhunkin vaiheeseen. Tee esimerkkiajo niillä työkaluilla, joita osaat käyttää turvallisesti ja muita verkkoja häiritsemättä.” (Karvinen, 2020)

”b) Ratkaise WebGoatista tehtävät

  • A2 ”Broken Authentication”: Authentication Bypasses, Secure passwords (Eli ”JWT tokens” ja ”Password reset” voi tehdä myöhemmin).
  • A3 ”Sensitive Data Exposure”
  • A7 ”Cross Site Scripting”: What is XSS?, Try It! Reflected XSS (Eli ”Identify potential for DOM-Based XSS” ja siitä eteenpäin jäävät myöhemmäksi)
  • A8:2013 Request Forgeries: Cross-Site Request Forgeries: kohdat ”Basic Get CSRF Exercise” ja ”Post a review on someone else’s behalf”.” (Karvinen, 2020)

”Vinkkejä: Authentication Bypasses: F12 Inspector muokkaa myös HTML-lomakkeita. Insecure login: snifferin käyttö on tässä realistisempaa kuin F12, joten esim ’wireshark’, ”tshark -i any -V -Y ’http.request.method == POST'” tai ’sudo ngrep -d lo assword’. A7 Cross Site Scripting: JavaScript-bookmarkletit eivät oletuksena toimi enää monissa selaimissa, käytä JavaScriptin ajamiseen F12 Console. Cross Site Scripting: script-tagit. ”Try It! Reflected XSS” on läpi, kun yllä numeron tausta muuttuu vihreäksi, vaikka se sanoo ”Well done, but … Please continue.”. ”Identify potential for DOM-Based XSS”: jos löysit jo oikean kohdan JavaScriptistä ja kokeilit yhtä monta vaihtoehtoa kuin moolissa on rakenneyksiköitä, lunttaa oikea palautusmuoto netistä ja jatka eteenpäin. Basic Get CSRF Exercise: tee oma weppisivu. Jos file:// ei toimi, ’python3 -m http.server’.” (Karvinen, 2020)

”k) Vapaaehtoinen: Kokeile totetuttaa käytännössä joitakin MITRE ATT&CK -kehikon tekniikoita. Nimeä selkeästi, mitä tekniikkaa käyttät. Yksittäisten tekniikoiden kokeilu riittää.” (Karvinen, 2020)

”Vinkki: Jos jostain syystä päädyt tekemään kokonaisen ohjelman, katso, ettei siitä ole haittaa muille. Esim jos ohitat virustorjunnan, laita joku selkeä merkki siitä, että ohjelma on olemassa. Älä anna ohjelman levitä automaattisesti. Jos tarpeen, lisää ohjelmaan rajoitus (toimii vain koneella, jolla on /etc/tama_on_testikone -tiedosto) ja automaattinen sammutus jonkin päivän jälkeen. Älä tee tuhoisia operaatioita täydellä mittakaavalla, voit simuloida esimerkiksi kryptausta tai päällekirjoitusta yksittäisillä tiedostoilla.” (Karvinen, 2020)

”Vinkki: mainitse, mitkä tunnetut hyökkäykset hyödynsivät samoja tekniikoita ja miksi.” (Karvinen, 2020)

”l) Vapaaehtoinen: Korkkaa jokin Hack the Boxin kone, mutta lue HTB:n säännöt ensin. VPN-tunnelin luominen ja oikean IP-avaruuden käyttö on tärkeää.” (Karvinen, 2020)

”Vinkki: kannattaa aloittaa koneista, joita HTB on listannut helpoiksi.” (Karvinen, 2020)

*Päivitetty 28.1.2021*

Tehtävä a)

Tehtävänä oli lukea OWASP 10 raporttiin eri haavoittuvuuksista ja kerätä niistä 3-5 bullettia per haavoittuvuus.

Injection A1

Tietoturva-aukkojen hyödyntämistä tunkeutumisessa. Esiintyy yleisesti tietokantapohjaisissa sovelluksissa.

  • Injectointi varsinkin vanhoihin ja päivittämättömiin sovelluksiin, joissa omien komentojen lisääminen kenttään on mahdollista
  • Hyökkäys on tehokas, jos sillä saadaan arkaa tietoa selville, kuten Vastaamo tapauksessa.
  • Sovellus on erittäin haavoittuva, jos käyttäjien syötteitä ei suodateta tai estetä millään tavoin
  • Hipsuja käyttämällä pystytään lisäämään heikosti suojattuihin tietokantoihin omia lausekkeita.

Broken Authentication A2

Rikkinäinen todennus on laaja käsite haavoittuvuuksille, joita hyökkääjät käyttävät ja esiintyvät näin ollen laillisina käyttäjinä.

  • Sivustot, joilla on heikko tunnistautuminen niin näihin on hyökkääjän helppo käyttää hyväksi.
  • Jos järjestelmä sallii esimerkiksi heikkojen salasanojen käytön ja sallii esim syöttää salasanaa useaan kertaan, vaikka olisi virheellinen tai sallia useamman tunnistautumisen.
  • Helposti estettävissä, jos järjestelmässä on kaksivaiheinen tunnistautuminen, joka tulee kirjautujan puhelimeen koodina ja pitkien salasanojen, jotka pitävät sisällään Isoja, pieniä kirjaimia ja numeroita ja erikoismerkkejä.

Sensitive Data Exposure A3

Sensitiivisen datan paljastuminen liikennettä seuraamalla.

  • Haavoittuvuus syntyy, jos kryptaamatonta tietoa lähetetään palveluiden tai järjestelmien välillä.
  • Kryptattu tietokaan ei ole välttämättä turvallinen, koska nykyajan sovelluksilla pystytään murtamaan joitakin kryptokieliä helposti.
  • Haavoittuvuuden löytämiseksi liikennettä pystytään haistelemaan useilla työkaluilla kuten wireshark yms. josta näet liikenteen ja esim. POST pyyntöjä, joista voi ilmetä käyttäjätunnuksia ja salasanoja.

XML External Entities A4

  • Järjestelmän on altis hyökkäyksille, jos hyökkäyksessä päästään laittamaan ei toivottuja XML-tiedostoja kohde järjestelmään.
  • XML haavoittuvuus on nykyisin paljon harvinaisempi ja ei niin käytetty kuin aikaisemmin.
  • Jos järjestelmässä havaitaan, että se on haavoittuvainen XML hyökkäyksille niin järjestelmä voi suurella mahdollisuudella myös haavoittuvainen DDOS hyökkäyksille, jotka ovat nykyisin erittäin yleisiä.

Broken Access Control A5

  • Access controllia eli kulunvalvonta toteutetaan siten, että tietyt käyttäjät eivät pysty toimimaan omien käyttöoikeuksien ulkopuolella.
  • Yleisiä haavoittuvuuksia voi olla, jos muokataan URL osoitteita tai HTML sivuja, jolloin hyökkääjä pääsee näkemään käyttäjän tiedot.
  • Primary keyn vaihtaminen, joka sallii toisen käyttäjän muokkaamisen tai tiedustelun.

Security Misconfiguration A6

Turvallisuuden väärät määritykset, voivat ja ovatkin vakava haavoittuvuus.

  • Järjestelmä voi olla haavoittuvainen, jos asianmukaiset suojaukset eivät ole kunnossa tai pilvipalveluissa on väärin määritetyt käyttöoikeudet.
  • Joissakin järjetelmissä, jotka päivitetään uuteen niin osa turvallisuus asetuksista on laitettu defaultiksi eli ei välttämättä ole päällä, jolloin järjestelmä on haavoittuvainen.
  • Järjetelmässä ei ole vaihdettu oletus käyttäjätunnuksia tai salasanoja uusiin. Monet järjestelmät nykyään vaativat, jos luodaan uusi tunnus, että salasana vaihdetaan uuteen.

Cross-Site Scripting A7

  • Yleensä hyökkäys on suunnattu käyttäjän nettiselaimeen.
  • Heijastuvassa XSS hyökkäyksen onnistuttua hyökkääjä voi mielivaltaisesti ajaa HTML koodia ja javascriptiä uhrin selaimessa.
  • Varastoidussa XSS hyökkäyksessä ohjelmaa tallentaa käyttäjän antamia syötteitä, joita voidaan käyttää ulkopuolisen toimesta.
  • Haavoittuva järjetelmä voi sallia hyökkääjän käyttää joidenkin yritysten web-palveluita tai muita sivustoja.

Insecure Deserialization A8

Tämä kohta jäi itselleni epäselväksi enkä ymmärtänyt tätä kohtaa.

Using Components with Known Vulnerabilities A9

  • Monille haavoittuvuuksille on helppo löytää kirjoitettuja hyödykkeitä(exploit), joita voi käyttää haavoittuvuuksia vastaan.
  • Yrityksille, joilla ei ole tietoa uudesta raudasta tai nykyisestä niin se on riski, koska niissä voi mahdollisesti olla haavoittuvuuksia.
  • Säännöllinen järjestelmän skannaus haavoittuvuuksien varalta ja mahdollisten korjauksien tekeminen.
  • Tärkeää on pitää sovellukset ja järjestelmät päivitettyinä ja päivittää ne aina uusien päivitysten tullessa.

Insufficient Logging & Monitoring A10

Riittämätön kirjaaminen ja monitorointi, on kriittinen jos hyökkääjä pääsee sisälle ilman, että kukaan huomaa.

  • Hyökkäykset pyritään yleensä tekemään huomaamattomasti ja pyrkivät olla laukaisematta mahdollisia hälyjä järjestelmissä ja tämä voi myös kertoa haavoittuvuudesta, jos järjestelmä ei huomioi tuntemattomia pyyntöjä.
  • Lokien ylläpito on tärkeää, jos esim kirjautumisista ei pidä kirjaa, niin kuka vain voisi kirjautua ilman kenenkään tietämättä.
  • Lokien säilyttäminen pilvessä voisi olla järkevä ratkaisu, jolloin lokien poisto olisi entistä vaikeampaa.

Lähteet: https://portswigger.net/web-security/cross-site-scripting
http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3006-autumn-2020/
https://resources.infosecinstitute.com/topic/xml-vulnerabilities/
OWASP 10 2017 (pdf)

Tehtävä b)

Cyber kill chain

Reconnaissance, Eli tiedustelu cyber kill chainissa. Yritetään etsiä haavoittuvuuksia kohde järjestelmästä.

HTTrack – Website copier: Tällä työkalulla pystyt kopioimaan ”offline” kopion mistä vaan nettisivusta. Tämä kopioi sisältää kaikki kuvat, sivut linkit ja alkuperäisen sivun koodin. Tämän työkalun avulla sinun ei tarvitse viettää sivulla paljoa aikaa, ettei sivun monitorointi työkalut kirjaa aktiivisuuttasi sivulla.

The Harvester: Tämä työkalu on Christian Martorellan kehittämä python scripti, joka tekee systemaattisen listan sähköposteista ja sub-domaineista (aliverkkotunnus). Tämä työkalu löytyy valmiiksi asennettuna kali linuxista.

Weponization, eli aseistautuminen. Kill chainin osa kaksi, jossa etsitään haittaohjelmia kohdettasi vastaan. Esimerkiksi voit kehittää malware tiedoston, joka sisältää hyötykuormaa.

Metasploit framework: Tällä työkalulla saadaan tietoa tietoturva-aukoista ja tämä soveltuu hyvin Weponization kohtaan. Metasploit työkalusta löytyy myös toinen työkalu nimeltä mfsvenom, jolla pystytään tekemään viruksia, matoja, botteja yms. eli voisi hyvin sanoa ettet ole vain aseistautumassa vaan kehittämässä omat aseet.

Delivery: Kolmas vaihe cyber killchainissa on itse kuljetus, eli vaihe jossa paketit tai hyötykuormat kuljetetaan kohteeseen. Yleisimpiä tapoja on lähettää nämä sähköpostitse, luoda nettisivu tai päästä fyysisesti kohteen koneelle.

Exploitation: Eli hyökkäyksen hyväksikäyttövaiheessa kohde kone vaarannetaan ja tässä vaiheessa kuljetus suorittaa yhden kahdesta toimenpiteestä: Asentaa haittaohjelma(dropper), joka mahdollistaa hyökkääjän komentojen suorittamisen tai asentaa haittaohjelma (downloader), joka asentaa internetistä malwaren kohde koneelle, joka mahdollistaa hyökkääjän komentojen suorittamisen.

BeEF: eli Browser Exploitation Framework työkalu joka sopii hyväksikäyttövaiheeseen jos se tehdään nettiselaimessa. Ohjelma suorittaa komennot verkkoselaimessa.

Installation: Eli asennus vaihe, jossa ohjelma pyritään asentamaan kohteen koneelle ilman, että sitä huomataan. Tässä kohdassa voidaan käyttää tiedustelussa löytyneitä haavoittuvuuksia kuten backdooreja yms.

Command and control: eli vaarantuneiden resurssien käyttö, beaconien avulla joita käytetään verkon sallitun polun kautta. Beaconit yleensä esittävät olevinaan HTTP tai HTTPS pohjaisia. Ne on tehty näyttämään hyvälaatuiselta liikenteeltä väärennettyjen HTTP otsikkojen kautta. Jos kommunikointi on kryptattua beaconit yrittävät käyttää itse allekirjoitettuja sertifikaatteja tai kustomoitua kryptausta.

Actions: Eli viimeinen kohta cyber kill chainissa ja tällä voidaan tarkoittaa kuinka hyökkääjä on onnistunut hyökkäyksessä ja hänellä on niinsanotusti sormet näppäimistöllä. Hyökkääjän lopullinen tavoite voi olla mikä vain aina lunnaidein pyytäminen, jotta arkaluontoiset tiedot poistetaan ja kryptataan tai ihan vain kiusanteko kohde koneelle.

***En ajanut esimerkkiajoja työkaluilla, koska en niitä osaa käyttää turvallisesti***

Lähteet: http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3006-autumn-2020/#L2
https://www.secjuice.com/cybersecurity-for-beginners-part-3-weaponization/
https://www.geeksforgeeks.org/reconnaissance-and-its-tools/
https://www2.deloitte.com/content/dam/Deloitte/sg/Documents/risk/sea-risk-cyber-101-july2017.pdf
https://www.geeksforgeeks.org/kali-linux-exploitation-tools/
https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html

Tehtävä b) Webgoat

Broken Authentication

Authentication Bypasses

Aloitin tehtävän tekemisen lukemalla ohjeita ja skenaarion, jonka webgoat tarjosi minulle. Tunnistautumis tehtävässä aloitin tarkastelemalla f12 HTML lomaketta, josta halusin löytää skenaarion tapaisen Security Question scriptin. Kun olin löytänyt HTML lomakkeesta secQuestion kohdan yritin laittaa valueksi ensiksi ”test” ja kokeilla menisikö ne läpi, mutta eivät menneet. Hetken mietiskelyn jälkeen päädyin kokeilemaan ja vaihtamaan SecQuestion:in nimet, jonka jälkeen tehtävä meni läpi. Vaihdoin siis vain numerot.

Secure Passwords

Secure password tehtävässä täytyi vain luoda uusi vahva salasana, johon käytin Strong password generaattoria joka tuli näyttämään tältä : nvU<Lz]52?’8gc9 ja WebGoatin salasanan tarkistaja antoi salasanalleni arvion missä ajassa se murrettaisiin ja arvioksi tuli: + 31 milj. vuotta.

Sensitive Data Exposure

Insecure Login

Tässä tehtävässä oli tarkoituksena sniffata paketteja ja löytää kirjautumiseen tarvittavat tiedot. Aloitin ensimmäiseksi miettimällä millä työkalulla haluan tehdä tämän pakettien sniffaamisen. Päädyin sitten Wiresharkkiin, koska se oli kaikista tutuin työkalu. Aloitin ensiksi avaamalla wiresharkin laitoin sen päälle ja kävin klikkaamassa ”Login” WebGoatista ja sen jälkeen sammutin wiresharkin ja rupesin tutkimaan paketteja. Tiesin, että haluan löytää HTTP paketit ja jotka ovat POST, joten aloitin karsimisen noilla ehdoilla. Hetken etsiskelyn jälkeen löysin oikean paketin josta löytyi selkotekstiä, jossa oli tehtävään tarvittava käyttäjätunnus ja salasana.

Wireshark

Cross-Site Scripting (XSS)

Cross Site Scripting

Tehtävä 2

Ensimmäisessä tehtävässä eli tehtävä 2 piti saada kahdelle eri tabille avatulle sivulle sama JSESSIONID. Avasin consolen kummassakin tabissa ja kirjoitin tehtävä kuvauksessa annetun tekstin alert(document.cookie); kumpaankiin tabin consoleen, jolloin sain JSESSIONID näkyviin ja vertasin, että ne on samat ja vastasin kysymykseen.

Tehtävä 7

Aloitin tehtävän lukemalla ohjeet ja tarkoituksena oli etsiä haavoittuva kenttä. Aloitin tutkimalla taulua, että minne pystyn kirjoittamaan ja tekemään, joten painoin ensiksi vain purchase nappia, jolloin tapahtui osto. Tämän jälkeen päätin kokeilla aikaisemmassa tehtävässä käytettyä scriptiä ensiksi card numberin ja sitten digitin tilalle.

Koodi: <script>alert(document.cookies)</script>

Sain kaksi eri vastausta tehtävälle. Tässä ohjelma tunnisti XSS attackin ja sanoit yritä uudelleen.

Digit

Ja sitten kokeilin credit card numbering kohdalle ja silloin sanoin, että well done!

Credit

Credit carding lisätessäni tehtävä sanoi Well done ja muuttui vihreäksi, mutta sanoi ettei alertti ole kovin vaikuttava? Tehtävän tarkoitus jäi itselleni epäselväksi.

Cross-Site Request Forgeries

Tehtävä 3

Tässä tehtävässä täytyi tehdä oma html sivu, josta pystyt tekemään pyynnön erilliseltä hostilta ja saada flag value näkyviin.
Ensimmäiseksi aloitin laittamalla apache2 ohjelman päälle, sekä luomalla uuden index.html sivun kansioon /var/www/html, sekä kokeilin, että apache toimii. Kopioin WebGoat sivun ”Submit Query” napin HTML- koodin käyttäen F12 ja inpect ja lisäsin sen omaan index.html tiedostoon.

Apache sivu ja HTML

Sitten muokkasin koodia sen verran, että vaihdoin action kohtaan oman local IP osoitteen ja porttinumeron, jota käytän WebGoatissa eli ”127.0.0.1:8080” . Tämän jälkeen tallensin sivun ja avasin uudessa välilehdessä Apache sivun ja painoin ”Submit Querry” nappia, joka ohjasi minut uudelle sivulle, mutta ei heti toiminut vaan vei minut Webgoatin kirjautumis sivulle, joten rupesin tarkastelemaan uudelleen actions kohtaa, jossa huomasin osoitteessa olevan /WebGoat/WebGoat/, joten poistin toisen webgoatin ja kävin kokeilemassa uudelleen, jolloin sivu toimi ja vei minut oikealle sivulle, josta sain Flag Valuen.

Flag Value

Tehtävä 4

Tämä tehtävä oli aika pitkälti samanlainen kuin edellinen tehtävä, mutta nyt vain kopioin ”Submit review” laatikon omalle apache sivulleni, jotta pystyn kirjoittamaan sieltä käsin arvosteluita webgoatin myynti ilmoituksen arviointi laatikkoon.

Aloitin tehtävän avaamalla index.html sivuni kansiosta /var/www/html ja liitin webgoatista saamani ”Submit review” laatikon HTML koodin omalle index.html sivulle. Tein siihen saman muutoksen kuin aikaisemmassa tehtävässä ja liitin local IP osoitteeni action kohtaan eli ”127.0.0.1:8080” ja tallensin html sivun ja päivitin sivun firefoxissa, jolloin sivulleni oli ilimestynyt ”Submit review” nappi ja kentät.

Review ja HTML

Lähdin kokeilemaan sivua ja kirjoitin arvostelu kenttään ja painoin submit, jolloin tuli ilmoitus, että arvostelu on mennyt onnistuneesti toiselle sivulle ja kävin vielä tarkistamssa webgoatista, että onko ne mennyt sinne ja siellä ne oli.

Submit sivu
Review sivu

Lähteet: http://terokarvinen.com/2020/tunkeutumistestaus-kurssi-pentest-course-ict4tn027-3006-autumn-2020/
https://passwordsgenerator.net

Jätä kommentti

Design a site like this with WordPress.com
Aloitus