Tietoturva : Hacker Playbook

Tietoturva-arjen kysymyksiä ja vastauksia kirjan perusteella

Ohje: Valitse nimikoimaton tehtävä (sellaisen numero) alla olevasta luettelosta. Nimikoi se eli kirjoita nimesi sen alkuun numeron jälkeen ja nimen jälkeen toteutuskerran tunnus muodossa (201*-x), missä x=s tai k. Tämän voit tehdä jo ennen kuin edes saat kirjaa haltuusi. Laadi noin 150 sanan mittainen vastaus määräaikaasi mennessä tehtävän alle. Jos käytät myös jotain muuta kuin omaa ja kirjan tietämystä, merkitse lähdeviite.

Peter Kim: The Hacker Playbook: Practical Guide To Penetration Testing

Tämä on yksi monista tunkeutumistutkimuksen eli eettisen hakkeroinnin opaskirjoista. Teksti on hyvin käytännönläheistä ja käsittelee paljon työkalujen eli ohjelmistojen käyttöä. Oikolukua ei ole viety loppuun asti.

Alkuperäinen tehtävä koski kirjan ensimmäistä laitosta vuodelta 2014: Tutustu valitsemaasi kirjan lukuun. Yritä ymmärtää sen asema "pelin" kokonaisuudessa ja keskity sitten yhteen työkaluun tai prosessiin, jota luku kuvailee. Kirjoita siitä omalla otsikolla tiivistelmä siten, että lukija saa käsityksen millaista taitoa hakkeri tarvitsee, kuinka vaivalloista työ on, mikä siinä voi mennä pieleen ja millainen on onnistuneen prosessin tulos. Tehtäviä oli luvuista 3-8. Kun kaikista oli tehty yksi esitys, aloittiin toinen kierros.

Kirjasta ilmestyi uudistetty ja laajennettu laitos vuonna 2015. Tuomas T. laati siitä kysymyksiä syksyn 2016 kurssilla. Ne on sijoitettu aiempien lukujen lomaan sekä kahden uuden luvun alle, tunnuksilla [2nd ed.]. Uudet kysymykset käsittelevät asioita, jotka tulivat kirjaan uuden laitoksen myötä. Uusi laitos on lähes samanlainen kuin edellinen kuitenkin niin, että uutta sisältöä on tullut kohtuullisen paljon.

Chapter 2. Building Your Penetration Testing Box

[2nd ed. #1] Riku Lehto (2018-s): Millainen testilaboratorio kirjassa pystytetään ja miten arvioisit sitä?

Kirjassa esitetty testilaboratorio koostuu kahdesta eri virtuaalikoneesta, joista toinen on linux ja toinen windows. Kirjoittaja suosittelee, että näistä virtuaalikoneista pidetään snapshotteja puhtaasta järjestelmästä, koska mikäli halutaan uusi puhdas kone, se on helppo vain päivittää suoraan snapshotista muutaman päivityksen kanssa.

Rauta, jota kirjoittaja suosittelee käytettäväksi, koostuu läppäristä, jossa on vähintään 8 gigaa muistia, 500 gigaa levytilaa (mielellään SSD), intelin i7 Quad Core ja ulkoinen USB-langaton verkkokortti. Vaihtoehtoisina lisinä suositellaan näytönohjainta salasanojen kräkkäämiseen, CD:itä ja USB-tikkuja social engineeringiä varten ja Odroid U2 käytettäväksi drop boxina.

Kirjoittaja esittelee useamman eri sovelluksen, joita suosittelee käytettäväksi. Osa näistä on kaupallisia, kuten Nessus, Nexpose ja Burp-suite, mutta suurin osa on ilmaiseksi saatavilla olevaa softaa.

Linuxiksi kirjoittaja suosittelee Kali-linuxia, koska se sisältää suurimman osan tarvittavista työkaluista valmiiksi ja penetraatiotestaajat käyttävät sitä yleisesti.

Windows 7 on kirjoittajan valinta windows-imageen ja tätä tarvitaan linuxin rinnalle, koska jotkin hyökkäykset ja työkalut toimivat joko paremmin tai pelkästään windowsilta tehtynä. Kuitenkin se on vain tarkoitettu täydentämään linuxia.

Luvussa annetaan yksityiskohtaiset ohjeet tarvittavien ohjelmistojen ja resurssien asennukseen. Kirjoittaja suosittelee, että virtuaalikoneiden pystyttäjä kovettaa järjestelmiään niin paljon kuin mahdollista, koska takaisinhyökkäys on harmillisen todellinen asia.

Itse pidän myös virtuaalikone-lähestymistavasta. Suoraan koneen omalta käyttöjärjestelmältä ei kannata hyökätä, koska jotain voi mennä helposti vikaan. Kone on myös helppo palauttaa alkutilaansa snapshottien avulla ja mahdollisen vastahyökkäyksen vaikutus rajautuu suhteellisen tehokkaasti virtuaalikoneen sisälle. Erillinen läppäri näiden pyörittämiseen on myös hyvä idea, koska silloin järjestelmä on mahdollista ottaa mukaan ja omalle oikealle tietokoneelle ei aiheudu turvariskejä. Kali-linux on myös mielestäni hyvä valinta, koska se tosiaan sisältää tarvittavat työkalut melkein suoriltaan ja tukea penetraatiotestaukseen löytyy varsinkin tälle jakelulle runsaasti. Windows 7 on ehkä hieman omituinen valinta, mutta en itse tiedä, onko jokin muu windowsin versio yhtään sen parempi valinta tähän tarkoitukseen. En yleisellä tasolla pahemmin tiedä windowsilla penetraatiotestauksesta hirveästi, joten en osaa sanoa. Myöskin softakavalkadi tuntuisi sisältävän ainakin suurimman osan hyvistä työkaluista, mitä itsekin tiedän, joten siitäkään ei ole huonoa mainittavaa. Sanoisin siis kokonaisarvosanaksi, että ihan kelpo ympäristö on tässä rakennettu, mutta kirjoittaja tuntuukin tietävän mitä tekee.

Chapter 3. Before the Snap – Scanning the Network

1. JK (2014-s): Scanning the Network asema "pelin" kokonaisuudessa ja Burp Suite Pro

Luku 3. Before the Snap – Scanning the Network kertoo tietoverkon murtautumisen tiedonhakuvaiheesta, jossa pyritään etsimään kohteesta tietoa ja haavoittuvuuksia erilaisilla tavoilla. Luku jakautuu ulkoiseen, sisäiseen ja web-sovellusten skannaukseen. Näitä käsitellään aktiiviselta ja passiiviselta näkökannalta. Aktiivisessa tutkitaan itse kohdejärjestelmään ja passiivisessa kerätään tietoja kohdejärjestelmään koskematta. Vaikka tiedonhakuvaiheessa käytetään paljon valmiita työkaluja, niin myös luovuudella ja osaamisella on merkittävä osa prosessissa. Burp Suite Pro on ohjelma, jolla skannataan web-sovelluksia verkon tunkeutumistutkimuksen aikana. Sen käyttö vaati seuraavien askelien toteuttamisen:

  1. Verkon välityspalvelimen konfigurointi ja Burp Suite:n ottaminen käyttöön. Tässä vaiheessa ohjelma käynnistetään JAR-tiedostosta ja aktivoidaan proxy kuuntelemaan porttia 8080. Tämän jälkeen asennetaan Foxy Proxy for Firefox ja säädetään se lähettämään liikenne portin 8080 läpi. Jos kaikkki onnistui, niin Burpissa avautuu välilehti, kun selaimella menee jollekin internetsivulle.
  2. Hakuindeksin luominen sivusta. Tässä vaiheessa luodaan tallenne kaikista kohdesivun sisältämistä tiedostoista, muodoista ja HTTP-metodeista. Tämä tapahtuu klikkaamalla Spider this host -painiketta. Jos tapahtuma onnistuu, niin site map -välilehdessä pitäisi näkyä sivuston rakenne.
  3. Sisällön löytäminen. Tämä vaihe suoritetaan klikkaamalla hiiren oikeaa painiketta kohdesivun URL:n päällä site map -välilehdessä. Nyt avautuu valikko, josta valitaan Engagement tools ja tämän jälkeen avautuvasta valikosta valitaan Discover content. Seuraavaksi Discover content -moduulista valitaan Session is not running. Jos kaikki onnistui, niin ohjelma tarjoaa listan piilotiedostoista, ylläpitosivuista, asetustiedostoista ja muista hyödyllisistä sivuista.
  4. Aktiivisen skannerin ajaminen. Aktiivinen skannaus suoritetaan klikkaamalla hiiren oikeaa painiketta kohdesivun URL:n päällä site map -välilehdessä. Nyt avautuu valikko, josta valitaan Actively scan this host. Skannauksen tulokset ilmaantuvat Scan-välilehteen. Tuloksista voi mm. nähdä sivun haavoittuvuuksia.

2. ML (2015-k): The Process for Network Scanning

Verkkoskannauksen prosessiin annetaan vinkiksi käyttää useita eri työkaluja, prosesseja ja tekniikoita, joilla varmistetaan tehokas skannaus. Kirjan tekijän prosessin kuuluu yleensä neljä vaihetta/prosessia.

  1. Verkon haavoittuvuuden skannaus. Tässä vaiheessa etsitään verkosta ja sivustosta haavoittuvuuksia ja vaikka työkalut tähän tuottavatkin ”meteliä” ja hälytyksiä sivustolla, on tämä tehokkain tapa aloittaa skannaus. Sekä Nexpose ja Nessus ovat hyviä ohjelmia ja kirjan tekijä suositteleekin käyttämään kumpaakin, mikäli siihen on mahdollisuus. Tuloksena ohjelmat antavat erityyppisiä ja -tasoisia haavoittuvuuksia.
  2. Skannaus Nmap-ohjelmalla. Nmap-ohjelmalla etsitään palveluita jokaisesta yleisesti käytössä olevasta portista tai mikäli aikaa on kaikista 65535 portista.
  3. Skannaus kustomoidulla Nmap-ohjelmalla. Tavallisen kokonaisen haavoittuvuusskannauksen tekeminen vie aikaa, mutta kustomoitu skannaus lyhentää sitä. Tämä tarkoittaa sitä, että ajetaan Nmap ja katsotaan onko portti auki. Tällä skannauksella saadaan nopeasti tarkasteltua muuttuuko portin tila tietyin aikavälein, kun sitä verrataan vanhaan. Onnistuneella skannauksella ja vertailulla saadaan joukko tuloksia, joista on hyvä lähteä etsimään haavoittuvuuksia.
  4. Kuvakaappaus Peeping Tom -ohjelmalla. Skannauksissa on yleensä suuri peittoalue ja Peeping Tom on työtä helpottava sovellus, sillä se ottaa jokaisesta sivustosta kuvakaappauksen ja esittää ne helposti luettavalla tavalla. Näin aikaa säästyy, kun ei tarvitse katsoa jokaista yksittäistä sivua manuaalisesti. Tällä tavalla haetaan tiettyjä haavoittuvuuksia ja päällekkäisyyksiä, joiden kautta saadaan mahdollisesti pääsy dataan.

[2nd ed. #2] Eetu Vuori (2017-k): Mitä tarkoittaa ZAP Proxyn yhteydessä mainittu "spidering"?

Spidering-termillä viitataan toimeen, jossa tiettyä web-sivustoa skannataan automatisoidusti, osana hyväksikäytettävien heikkouksien löytämistä. Spidering-skannauksen avulla saadaan selville mm. sivuston sisältämät yksittäiset sivut, muut tiedostot, kaavakkeet, linkit ja suoritettavissa olevat HTTP-pyynnöt. Tätä myöten saadaan siis käsitys sivuston yleisestä toteutuksesta ja sen mahdollisista haavoittuvuuksista. Huomionarvoista on kuitenkin se, että mikäli sivusto sisältää sivun tai sivuja, joihin ei löydy mitään linkkiä, spidering-skannaus ZAP Proxylla ei tällaisia sivuja automaattisesti löydä. Tällaisia sivuja voivat olla esimerkiksi ylläpitäjän login-ruudut.

Yksinkertaisen spidering-skannauksen toteuttaminen onnistuu ZAP Proxylla pelkän skannattavan sivuston urlin avulla, jossa voi käyttää suoraan IP-osoitetta. Skannauksen jälkeen ZAP Proxy antaa käyttäjälle myös listauksen sivuston heikkouksista, jotka se on itsenäisesti havainnut. Työkalulla on siis mahdollista tehdä tuloksellista penetraatiotestausta, vaikka testaajan ammattitaito ei olisikaan erityisen korkea. Kirja myös suosittelee käyttämään useampia eri työkaluja spidering-skannauksen toteuttamiseen, sillä eri työkalut löytävät erilaisia haavoittuvuuksia ja täten penetraatiotestauksesta saadaan kattavampi.

Chapter 4. The Drive – Exploiting Scanner Findings

3. Ilpo Rantanen (2014-s): Exploiting Scanner Findings asema "pelin" kokonaisuudessa ja Metasploit

Luku 4 kertoo siitä, miten löydettyjä haavoittuvuuksia käytetään hyväksi järjestelmään tunkeuduttaessa. Luvussa käydään läpi kaksi perustapaa hyödyntää yleisiä haavoittuvuuksia. Asioita käsitellään melko yleisellä tasolla, koska haavoittuvuuksia on hyvin monen tyyppisiä, samoin kuin on tapoja käyttää niitä hyväksi.

Ehkä yleisin työkalu haavoittuvuuksien hyväksikäytössä on Metasploit, josta löytyy versiot sekä Windowsille että Linuxille. Metasploit frameworkia käytetään yleisesti työkaluna penetraatiotestauksessa. Käyttö on periaatteessa melko yksinkertaista:

  • valitaan käytettävä moduuli
  • laitetaan asetukset kuntoon
    • ”uhrin” osoite ja portit
    • hyökkääjän osoite ja portit
  • tarvittavat versiot, käyttäjätilit yms.
  • Konfiguroidaan hyötykuorma
    • hyötykuorma on se osa joka tekee ”jotain” sen jälkeen kun on päästy haavoittuvuuteen kiinni ja sen ohi
    • hyötykuormia on erilaisia sen mukaan mitä niiden halutaan tekevän
  • Asetetaan encoders (en keksinyt mitään järkevää käännöstä tälle)
    • Perustapa jolla pyritään peittämään hyökkäys mutta jonka virustorjuntaohjelmat nykyään jo melko hyvin tunnistavat
  • Laitetaan muut tarvittavat asetukset kuntoon
  • Suoritetaan hyökkäys

Esimerkkeinä on käytetty haavoittuvuuksia MS08-067 ja WARFTP.

Luvussa luodaan yleiskatsaus siitä, miten skannerin löytämiä tietoja ja haavoittuvuuksia voidaan käyttää hyväksi. Valmiit netistä löydettävät työkalut eivät välttämättä aina toimi. Jos haluaa päästä hyviin tuloksiin, tulisi oikeasti ymmärtää, mitä ja miten ollaan tekemässä. Kannattaa opetella muokkaamaan valmiita työkaluja sen mukaan, mitä skannerilla on löydetty, tai jopa tekemään itse omia.

4. Leo Heinsuo (2015-s): Skannerin havaintojen hyödyntäminen ja skriptit

Metasploitin lisäksi luku käsittelee skriptejä ja sitä, kuinka niihin liittyviä haavoittuvuuksia voi välillä jäädä Metasploitiltakin huomaamatta. Luvussa korostetaan, että penetraatiotestaajien on ymmärrettävä ja kyettävä muokkaamaan koodia sen kielestä riippumatta, olkoon se sitten Ruby, Python, Perl tms. Ideana on siis käyttää hyödyksi jotain löydettyä verkon tai järjestelmän aukkoa ja päästä ajamaan koodia palvelimella. Tämä avaa ovia uusiin sfääreihin, mutta sillä on myös mahdollista tehdä (turhaa) vahinkoa (esimerkkinä shell-koodin tapaus, joka tyhjentää palvelimen tiedot ajon lopuksi). Kirjoittaja kertoo internetistä löytyvän paljon valmista koodia, mutta suosittelee jokaisen vähintään testaavan sen ensiksi itse, ja parhaimmassa tapauksessa kirjoittamaan aina omansa tapauskohtaisesti.

Tässä on muutama pointti kirjoittajalta siitä, mitä tulee ottaa huomioon netistä löydetyn koodin käyttämisessä (esimerkkinä WarFTP-palvelimen exploit):

  • Miten hyödynnettävä koodi ajetaan? Mitä kirjastoja tarvitaan?
  • Mitä riippuvuuksia sillä on (käyttöjärjestelmä, hyökkäystenesto-ohjelmat)?
  • Täytyykö koodia muokata? Onko siinä esim. jotain kovakoodattuja rekisteriarvoja tai muita muuttujia?
  • Kaataako yritys palvelimen? Onko yrityksiä vain yksi?

Kirjoittaja painottaa etenkin, että monet skriptit toimivat vain tietyillä järjestelmillä, tietyllä versiolla.

Lopuksi yhteenvedossa suositellaan kirjaa The Shellcoder's Handbook niille, jotka haluavat oppia käyttämään skriptejä ja exploitteja paremmin. Kirjoittaja kertoo myös oppineensa itse paljon ottaessaan mallia internetistä löytämistään exploiteista ja koodatessaan ne itse uudelleen haluamalleen skriptikielelle.

[2nd ed. #3] Samuli Määttä (2017-k): Miten Heartbleed-hyökkäys toimii?

Heartbleed oli tietoturvan näkökulmasta ylivoimaisesti yksi suurimmista uhista tietojärjestelmiä kohtaan vuonna 2014. Heartbleed-nimi tuli OpenSSL:n kirjastosta Heartbeat, jonka tarkoituksena on toteuttaa avoimen lähdekoodin yksinkertaisia kryptografisia funktioita. Ei ole tarkkaa tietoa siitä, kuinka monta järjestelmää oli haavoittuneena, mutta huhtikuussa tehty zmap-skannaus paljasti ainakin yli miljoonan tietojärjestelmän olevan haavoittunut.

Yksinkertaisuudessaan Heartbleed-hyökkäyksen mahdollistama bugi johtui siitä, ettei palvelinpuolella tarkistettu pyyntöjen pituuksia. Mikäli käyttäjä lähettää pyynnön, joka sisältää pienen hyötykuorman, mutta väittää tämän hyötykuorman olevan kokoaan suurempi, palauttaa palvelin hyötykuormaa myös seuraavista muistiosoitteista. Nämä voivat sisältää käytännössä mitä tahansa. Ohjelmointivirhe tapahtuu, kun ohjelma ei automaattisesti laske hyötykuorman pituutta, vaan saa sen käyttäjältä manuaalisesti syötettynä.

Ei-tekninen esimerkki: Hyökkäyksessä käyttäjä haluaisi palvelimelta vastauksen ”HAT”, joka on 500 kirjainta pitkä. Tällöin palvelin lähettäisi 500 kirjaimen mittaisen hyötykuorman.

Palvelimen palauttama hyötykuorma saattoi olla turvallinen ja sisältää ainoastaan irrelevanttia dataa, mutta pahimmillaan se saattoi palauttaa käyttäjätunnuksia ja salasanoja sekä jopa SSL-sertifikaatteihin liittyviä yksityisiä avaimia. Jälkimmäisillä pystytään purkamaan kaiken liikenteen salaus.

Yleisesti ottaen Heartbleed-hyökkäys soveltui HTTPS-kutsujen kanssa käytettäväksi, mutta sitä saattoi käyttää myös OpenLDAP-kutsuihin. LDAP eli Lightweight Directory Access Protocol on TCP/IP-pinon yläpuolella toimiva protokolla, jonka avulla hoituu esimerkiksi autentikointi. Näiden kutsujen manipuloiminen voi olla erittäin vaarallista. Tässäkään ei ollut vielä kaikki, vaan Heartbleed-hyökkäystä voitiin toteuttaa myös VPN-yhteyksiin, jolloin VPN-yhteydet olivat myös vaarassa.

Kirjan ulkopuolelta mainittavan arvoista on, että suomalainen Codenomicon oli yksi suurimmista tekijöistä, joka saattoi Heartbleedin koko maailman julkisuuteen.

[2nd ed. #4] Iiro Nykänen (2017-k): Kuvaile Shellshock-hyökkäystä

Shellshock (tunnetaan myös nimellä Bashdoor) oli yksi vuoden 2014 suurimmista tietoturva-aukoista. Se mahdollisti etäkoodin suorituksen hyökkäyksen kohteena olevalla tietokoneella hyödyntämällä ympäristömuuttujien parsintasääntöjä Bash-shellissä, tarkemmin vielä merkkijono "() { :;};" aiheutti haavoittuvuuden. Vaikka Shellshockia oli mahdollista hyödyntää muillakin keinoilla, web-teknologia CGI oli yleisin tapa johtuen Bashin kyvystä parsia CGI-scriptejä.

Kirjassa kuvaillussa tapauksessa luodaan bruteforce-skripti, joka käy läpi yleisimmät CGI-polut ja -tiedostot. Mikäli havaitaan validi shell-skripti, voidaan järjestelmään injektoida haittakoodia. Kirjan tapauksessa kohdetietokone vain heitti ping-viestin hyökkääjälle, jolloin kohteen tiedetään olevan altis hyökkäykselle, mutta jatkona kohteessa olisi mahdollista avata netcatin avulla suora remote shell -yhteys hyökkääjän ja kohteen välillä, jolloin hyökkääjällä olisi täysi pääsy järjestelmään.

CGI:n lisäksi Shellshockia oli ilmeisesti mahdollista käyttää esimerkiksi SSH:n ja DHCP:n avulla.

[2nd ed. #5] Joona Lepola (2018-k) Miten tulostimia ja monitoimilaitteita hyödynnetään hyökkäyksissä?

On mahdollista, että monitoimitulostimet vaarantavat yrityksen tietoturvallisuuden, koska monesti näille laitteille unohdetaan vaihtaa vakiosalasanat uusiin, tai ne ovat helposti arvattavissa.

Nykyään yrityksillä käytössä olevissa monitoimitulostimissa on mahdollisuus käyttää LDAP:ta (Lightweight Directory Access Protocol), eli hakemistopalvelujen käyttöön tarkoitettua verkkoprotokollaa, jolla tulostin voi tiedustella verkkopalvelulta käytössä olevia sähköpostiosoitteita. Tulostin tarvitsee tiedustelulle oman käyttäjätilin, jolla kyseinen tiedustelu on sallittua. Tätä palvelua voidaan käyttää oikean sähköpostiosoitteen löytämiseen saajan nimen perusteella, eli kun valitaan nimilistasta kenelle skannattu sivu lähetetään. LDAP:n käyttämän käyttäjätilin tiedot on kuitenkin mahdollista saada selville.

Tulostimen LDAP-käyttäjätunnuksen tietojen vieminen:

Ensiksi on päästävä samaan verkkoon, jossa tulostin sijaitsee. Tämän jälkeen on kirjauduttava tulostimen verkkosivulle, joka onnistuu usein vakiosalasanoilla tai muuten helposti arvattavissa olevalla salasanalla. Kun tulostimeen on kirjauduttu, tarvitsee vaihtaa LDAP-palvelimen osoite, eli siirretään tulostimen lähettämä tiedustelu, joka sisältää käyttäjätilin tunnuksen ja salasanan, jollekin omalle laitteelle. Tätä tiedustelua on mahdollista valvoa esimerkiksi Linuxin netcat-ohjelmalla. Mikäli LDAP:ssa ei käytetä SSL-tunnelointia, tulostimen käyttämä käyttäjätunnus ja salasana näkyvät selkokielisinä netcat-ohjelmassa. Tästä saadaan itselle käyttöön yrityksen X-tason käyttäjätunnus, jonka avulla on mahdollista hankkia toisia käyttäjätunnuksia, paremmilla oikeuksilla.

Tulostimesta on myös mahdollista viedä tietoja hyödyntäen ”praedasploit”-ohjelmia.

Chapter 5. The Throw – Manual Web Application Findings

5. Valtteri Naskali (2015-k): Selainten tietoturva-aukot

Luku käsittelee erilaisia tekniikoita internet-sivustojen tietoturva-aukkojen löytämiseksi. Luvun tarkoituksena on ymmärtää, miten nämä haavoittuvuudet internet-sivustosta havaitaan ja miten niitä voidaan testata käsin. Näitä tekniikoita on esimerkiksi SQLi, XSS, CSRF, istunnon kaappaaminen, syötteen pakottaminen ja bisnes-logiikan harhauttaminen.

Käsittelen tekniikkaa, miten istunto otetaan haltuun. Tässä käytetään hyväksi http-protokollan tilattomuutta. Poistamalla omat historiatiedot saadaan poistettua evästeet, jotka ovat käytössä. Tämän suodatuksen jälkeen saadaan selville serverin tarjoama eväste. Tämä eväste on poistettava käytöstä Burp Suite -ohjelmalla, jonka jälkeen lähetetään serverille Sequencer. Burp suite tarvitsee vielä tietoonsa istunnon ID:n. Tämä tapahtuu samalla tavalla kuin alussa eli poistamalla eväste Burp Suitesta ja lähettämällä tieto serverille. Tämän jälkeen Burp Suite saa Sequencer-välilehden alle istunnon ID:n ja tämän tiedon avulla saadaan luetuksi toisen sivun istuntojen ID:t.

Kaikki nämä toiminnot perustuivat evästeiden ominaisuuksiin. Internetsivustoilla on erilaisia algoritmeja sekä toteutuksia, joilla istuntojen ID -tietoja generoidaan ja sijoitellaan. Näiden purkamiseen voi käyttää Burp Suiten tarjoamia tilastollisia analyyseja.

Istunnon haltuunotossa käytettiin siis yhtä ohjelmaa, jolla käskyt hyökättävälle sivustolle lähetettiin. Tästä on hyvä tutorial-video Youtubessa: https://www.youtube.com/watch?v=kNSAhKiXctA

6. MF (2015-k): SQLi

Valitsin luvusta 5 kohteeksi aiheen SQL-injektion. Lyhyesti ja ytimekkäästi tämän voisi kuvata niin, että laiskuus kostautuu. Eli jos web-sivuun syötettyä informaatiota ei tarkisteta kunnolla niin ongelmia voi tulla. Tämä artikkeli antaa hyvän taustoituksen aiheeseen: https://www.us-cert.gov/sites/default/files/publications/Practical-SQLi-Identification.pdf. Kirjassa taustoitusta ei ole vaan siinä kuvataan suoraan kuinka laiskuutta päästään hyödyntämään. [SQL-injektiota on selostettu WAHH-kirjan vastauksesta luvussa 9.]

Esiin nostetaan kolme työkalua toiminnan helpottamiseen: SQLmap, SQLninja ja Burp. Burbin avulla tunnistetaan heikkous (eo. US-gov -materiaalin esimerkissä on käytetty ZAPiä). Burbista saatu kohdedata syötetään SQLmapiin ja/tai SQLninjaan ja hyökkäys pääsee eteenpäin. Kummankin ohjelman käyttöä suositellaan, koska ohjelmat tekevät periaatteessa saman, mutta yksityiskohdissa on merkittävää eroavaisuutta. Tämän myötä ne voivat löytää paremmin oikean lähestymisen tai niiden tunnistettavuus voi olla herkempi (mikä olisi huono asia tunkeutujalle).

Yleisimmät hyödynnettävät parametrit ovat GET ja POST. Kahta eri heikkouden sisältävää parametriä käytetään, koska niiden välitystapa on erilainen (URL/data). GETin käyttöön liittyy rajoitteita kuten logi-kirjaus sekä koko.

SQLmapin ja SQLninjan käytössä viilataan eri parametrejä, kunnes joko luovutaan yrityksestä tai päästään läpi. Prosessin haastavuutta kuvaa tuon Us Gov artikkelin määrittely SQLi haavoittuvuuden löytämiselle eli kyseessä on epätarkka tiede (imprecise science). Läpi pääsyn jälkeen arvioidaan mille tasolle läpipääsy onnistui. Esimerkiksi jos päästään lähettämään ping-komento omalle koneelle tiedetään omattavan komentojen anto-oikeus, muttei välttämättä ulospäin pääsyä verkkoon.

[2nd ed. #6] Petri Holopainen (2018-k) Mitä ovat noSQL-tietokannat ja miten niihin tehdään injektioita?

NoSQL on ei-relationaalinen tietokanta, jossa SQL-tietokannan tiedon käsittelyn atomisuuden, eheyden, eristyneisyyden ja pysyvyyden vaatimuksista (ACID-ominaisuudet) on luovuttu ainakin osittain. Näin saadaan tietokannasta tehokkaampi, ja se pystyy käsittelemään isoja tietomääriä nopeammin kuin SQL-tietokanta. Tähän auttaa varsinkin horisontaalinen skaalautuvuus ja hajautettavuus, eli saadaan lineaarisesti lisää kapasiteettia vain lisäämällä tietokoneita tietokannan käsittelyyn, vaikka ne olisivat fyysisesti kaukana toisistaan. Tämän takia isot internetin palveluiden tarjoajat kuten Amazon, Google sekä Facebook suosivat NoSQL-tietokantoja. NoSQL:ssä ACID on korvattu CAP-ominaisuuksilla: eheys, saatavuus ja pirstoutumisen sietokyky, joista kaikkia ei edes taata samaan aikaan.  Haittana taas on skeemattomuus, kun tietoa kirjoitetaan moneen paikkaan ja tiedon eheyden takaaminen tulee vaikeammaksi. Karkeasti ottaen lukeminen on nopeampaa ja kirjoittaminen ongelmallisempaa. Nimi NoSQL johtaa tietyllä tavalla harhaan. Se ei tarkoita, että tietokantoja ei käytettäisi SQL:n kaltaisilla kielillä, vain että ei nimenomaan SQL:llä. Tästä päästään vihdoin tehtävän kysymykseen. Eli noSQL-injektio toteutetaan täsmälleen samalla tavalla kuin SQL-injektio, mutta injektoitava kieli riippuu NoSQL-tietokannasta. SQL-injektion kirjoittaminen on aavistuksen verran helpompaa, koska kaikki SQL-tietokannat toteuttavat lähes saman SQL-käskykannan ja taas NoSQL-kielet eroavat toisistaan huomattavastikin. NoSQL-injektio on siis aina mukautettava kyseiseen tietokannan kieleen, jolloin sen tunnistaminen on suoritettava ensin. The Hackers Playbook 2 mainitsee nimeltä kaksi NoSQL-tietokantaa, CouchDB ja MongoDB, joista MongoBD:hen esitellään hyökkäys NoSQLMapin avulla käyttäen NoSQL-injektiota.

Lähteet:

Tuomas-Matti Soikkeli, NoSQL-tietokannat: perusominaisuudet ja luokittelu, 2015, 31s, Viitattu 22.1.2018, Saatavissa: https://jyx.jyu.fi/dspace/bitstream/handle/123456789/47624/URN:NBN:fi:jyu-201511103621.pdf?sequence=1

Chapter 6. The Lateral Pass – Moving Through the Network

7. Sami Sjöblom (2015-k): Verkossa eteneminen ilman valtuuksia ja Responder.py

Luku 6 käsittelee sitä, kuinka tunkeutuja pääsee etenemään verkossa saavuttaen ensin rajoitetut käyttöoikeudet ja päätyen lopulta koko verkon omistajaksi. Lähtökohtana on tilanne, jossa tunkeutuja on verkossa mutta ilman oikeuksia ja valtuutuksia niin sanotusti jumissa. Luvussa käsitellään runsaasti erilaisia tekniikoita ja kuvaukset ovat varsin käytännönläheisiä. Tässä katsauksessa keskitytään ”On the network without Credentials” -osioon.

Luvussa esitellään Responder.py (Python Responder), joka on passiivinen työkalu valtuuksien keräämiseksi. Responder.py on ensimmäisiä työkaluja, joka pystyy kuuntelemaan ja vastaamaan LLMNR:lle (Link Local Multicast Name Resolution) ja NBT-NS:lle (NetBIOS over TCP/IP Name Service). Se hyödyntää myös WPAD:n (Web Proxy Autodiscovery Protocol) heikkouksia.

Toiminta perustuu siihen, että silloin kun "uhrin" selain on asetettu havaitsemaan asetukset automaattisesti, se pyrkii hakemaan konfiguraatiotiedoston verkosta. Koska tunkeutuja kuitenkin toimii samassa verkossa kuin uhri, voi tunkeutuja vastatata nimenselvitykseen (Name Resolution) ja syöttää oman PAC-tiedoston (Proxy-Auto Config file). Tämä mahdollistaa sen, että käyttäjä voidaan pakottaa autentikoimaan itsensä tunkeutujan SMB-palvelimille (Server Message Block). Tämä tarkoittaa käytännössä sitä, että tunkeutuja voi pyytää NTLM-todennusprotokollan (NT LAN Manager; Windowsin integroidun autentikoinnin oletusprotokolla, joka muun muassa varmistaa autentikoinnin, eheyden ja luotettavuuden käyttäjilleen) haaste-vastesarjan (challenge-response) ilman, että käyttäjä saa hälytystä.

8. Tähän jäi vielä vapaa kohta äskeistä täydentävälle luvun 6 alkuperäiselle asialle.

[2nd ed. #7] Matias Töyrylä (2019-k) Miksi postgresille voidaan kirjan esimerkissä syöttää salasanojen sijasta salasanan hasheja onnistuneesti?

PostgreSQL on avoimen lähdekoodin tietokannan hallintajärjestelmä. Kirjassa esitellään haavoittuvuus tietokannan versioon 9.5 ja sitä aikaisempiin versioihin. Haavoittuvuus liittyy Postgresin salasanoihin ja autentikointiin. Tietokanta autentikoi virheellisesti joissain tilanteissa käyttäjän päästettäväksi sisään pelkän salasanan hashin perusteella. Tämä tarkoittaa sitä, että jos onnistuu saamaan jotain kautta käyttäjät ja salasanan hashit, esimerkiksi sql-injektion avulla, pystyisi Postgresiin kirjautumaan sisään pelkästään näiden avulla. Haavoittuvuus toimii, kun PostgreSQL käyttää md5-tiivistealgoritmia HBA:ssa (Host Based Authentication).

”Pass-the-hass” haavoittuvuus esitellään tarkemmin kirjassakin annetulla lähteellä [1]. PostgreSQL serveri käyttää md5-algoritmia salasanan hashiin, jossa käyttäjänimi toimii suolauksena. Merkitään tätä salasana hashia H(P).  Autentikointi lähtee liikkeelle, kun palvelin tuottaa neljän tavun verran random dataa, jonka se lähettää clientille, eli asiakasohjelmalle. Tämän jälkeen asiakasohjelma tuottaa uuden hashin (F_c), jossa hashataan jo hashattu salasana, sekä tämä palvelimelta saatu 4 tavun data keskenään H(H(P).4BytesData). Kun tämä on tehty, hashi lähetetään takaisin palvelimelle, jossa palvelin muodostaa samanlaisen hashin (F_s). Sen jälkeen se vertaa hasheja F_c ja F_s keskenään. Ongelmaksi muodostuu kuitenkin F_c -hashin muodostaminen. Sen tekemiseen ei tarvitse tietää salasanaa, vaan pelkkä salasanan hash riittää. Hyökkääjän ei tarvitse siis missään vaiheessa tietää selvätekstistä salasanaa. [1]

Lähteet:

[1] https://hashcat.net/misc/postgres-pth/postgres-pth.pdf

[2nd ed. #8] Samu Reilimo (2019-k) Miten sticky keys -ominaisuutta voi hyödyntää hyökkäyksessä?

Sticky Keys on varmasti monelle tuttu ominaisuus Windowsista. Sen saa avattua painamalla Shift-näppäintä viidesti. Ominaisuutta pystyy kuitenkin manipuloimaan ja täten sitä voi hyödyntää hyökkäyksessä muuttamalla alkuperäistä Sticky Keysin ohjelmatiedostoa, siten että sen tilalle laitetaan shellin avaaminen. Näin sitä voidaan käyttää persistence metodina, eli metodina, jolla murtauduttuun järjestelmään päästään jatkuvasti käsiksi ilman autentikointia.

Kirjassa kerrotaan kaksi tapaa, joilla Sticky Keysin ohjelmatiedostoa voidaan muuttaa. Toinen niistä on manuaalisesti sethc.exen, eli Sticky Keysin ohjelmatiedoston paikantaminen ja cmd:n liittäminen sen tilalle. Toinen keino on tehdä tämä rekisterin asetuksissa, joka käydään läpi kirjassa. Lisäksi kirjassa käydään läpi, miten WMI:n avulla saadaan sama toimimaan etänä. Kun tämä on tehty, on hyökkääjällä järjestelmässä pääsy lähestulkoon kaikkeen, kuten esimerkiksi Kerberokseen.

Näin ollen Sticky Keys -ominaisuutta voidaan hyödyntää pääsynä järjestelmään niin etänä kuin halutessa paikallisestikin ’system’-käyttäjänä ilman mitään kirjautumistietoja. Tämä onkin käytännössä hyvin yksinkertainen keino toteuttaa. Mikäli itse haluaa suojautua tältä, voi Sticky Keysin käynnistymisen estää rekisteristä. Toki hyökkääjä voi tämänkin muuttaa murtauduttuaan järjestelmään. Metodia voi henkilökohtaisesti myös käyttää tietokoneen käyttäjien salasanojen resetointiin, mikäli ne ovat unohtuneet.

Chapter 7. The Screen – Social Engineering

9. Janne Tuomisto (2014-s): Social Engineering asema "pelin" kokonaisuudessa ja SMTP Attack

Luku 7 keskittyy ns. ”go to” -hyökkäyksiin. Social Engineering vaatii luovuutta, ja erilaisia keinoja harjoittaa tätä on esimerkiksi domain-hyökkäyksistä kalastelujen jakamiseen tai jopa USB-muistitikkujen pudottamiseen.

Yksi luvussa kuvatuista tekniikoista (tai prosesseista) on ns. doppelganger domains, eli domainin ”kaksoisolento”. Tällä tarkoitetaan esimerkiksi alidomainien merkitystä domainissa; jos yritys company.com käyttää alidomainia us.company.com, mutta ei ole rekisteröinyt käyttöönsä uscompany.com, tarjoaa tämä domainin yhdennäköisyys herkullisen alustan hyökkääjälle. Tämä perustuu siihen, että piste saatetaan usein jättää vahingossa kirjoittamatta. Tämä hyökkäys perustuukin pääasiassa inhimilliselle virheelle, mikä on toisaalta sen heikkous.

Kun tällainen doppelganger domain on varattu, voidaan siihen pystyttää SMTP-palvelu, konfiguroida se kaappaamaan liikennettä ja välittämään sähköposteja. Tällöin kaappaus ei välttämättä heti tule lähettäjille huomatuksi. Esimerkkitapauksessa john@us.company.com lähettää viestin bob@rubank.com -osoitteeseen (tässä tapauksessa ru.bank.com olisi oikea). Osoitteeseen rubank.com pystytetty palvelin vastaanottaa viestin, välittää sen lähettäjänään john@uscompany.com (huomaa pisteen puutos domainissa) ja kaappaa koko viestityksen, mikäli viestittelijät  eivät huomaa osoitteiden virheitä. Tällainen on kohtalaisen työlästä lähtökohtaisesti, mutta onnistuessaan mainio keino kaapata sähköpostiliikennettä. Toki PGP-salaus estää tällaisen hakkeroinnin hyödyntämisen, joten hyökkäystä vastaan voi suojautua.

10. Miikka Myyry (2015-K): Social Enigneering with Microsoft Excel

On tilanteita, jossa ei voi käyttää JAVAan tai verkkoon perustuvia hyökkäyksiä. Näitä tilanteita voi olla, jos halutaan käyttää sähköpostia tai fyysistä laitetta (USB-tikku tai CD-levy). Tällöin hyökkääjän on saatava uhri luottamaan itseensä. Kirjoittaja on kokenut parhaaksi väärentää jonkun sellaisen sähköpostin, jonka kanssa uhri viestittelee usein ja lähettää tämän nimissä Excel-tiedoston, jossa on Meterpreter-tietosisältö. Metasploitilla tehdyt Excel-tiedostot laukaisevat yleensä virusvaroituksen, joten siksi kannattaa ottaa käyttöön PowerShell.

Seuraavaksi luodaan itse Excel-tiedosto. Siihen tehdään makro, joka annetaan nimi Auto_Open. Tämä tarkoittaa, että makro käynnistetään heti tiedoston auettua. Makron sisällöksi kirjoitetaan koodi, jossa käynnistetään PowerShell luomaan yhteys Meterpreter-istunnon kuuntelijalle.

Tämän jälkeen tiedosto tallennetaan .xls-tiedostoksi. Tässä ei käy .xlsx, koska tämä ei aja makroja automaattisesti. Seuraavaksi tiedosto lähetetään uhrille. Uhri tulee avatessaan näkemään turvavaroituksen, jossa mainitaan makroista. Tässä kohtaa tulee esiin miksi luottamussuhde täytyy luoda uhriin. Uhri ei varmasti hyväksyisi varoitusta, jos tiedosto olisi lähetetty jostain hänelle tuntemattomasta osoitteesta. Kun uhri hyväksyy varoituksen, saat käyttöösi Meterpreter-shellin tähän hostiin. Tämä yleensä kiertää virustorjunnan, koska PowerShell tekee hyökkäyksen muistissa.

[2nd ed. #9] Mitä eroja on erilaisilla phishing-työkaluilla?

[2nd ed.] The Quarterback Sneak - Evading AV

[2nd ed. #10] Elias Haapamäki (2017-k) Mitä Backdoor Factorylla voi tehdä?

Luvun tarkoitus on kertoa tavoista, joilla voi estää virustorjuntaa huomaamasta haitallista koodia. Monet virustorjuntaohjelmistot etsivät ohjelmista tiettyjä digitaalisia sormenjälkiä, joilla ne tunnistavat haitalliset ohjelmat. Virustorjuntaohjelmistojen on hankala toimia, mikäli koodi on piilotettu normaalisti hyvätahtoiseen ohjelmaan. Backdoor factory (BDF) on ohjelma, jolla ohjelmatiedostoon voi syöttää omaa ohjelmakoodia, joka ajetaan kun ohjelma suoritetaan. Ohjelma on tarkoitettu kokeiluhyökkääjälle, joka on saanut jo haltuunsa esimerkiksi yhden tietokoneen ja haluaa varmistaa pääsyn jatkossakin. Yleensä koodi on esimerkiksi meterpreter shell, joka yrittää yhdistää takaisin kokeiluhyökkäälle. Kokeiluhyökkääjä mahdollistaa pysyvyyden laittamalla ohjelmakoodin tiedostoon, joka ajetaan usein.

Backdoor Factory on tarkoitettu ajettavaksi hyökkääjän omassa ympäristössä. Kokeiluhyökkääjä etsii kohteen koneelta jonkin sopivan binäärin, lataa sen itselleen ja syöttää sen BDF:lle. BDF syöttää binääriin hyökkääjän koodin ja muunnettu binääri kopioidaan takaisin kohteeseen, jossa se myöhemmin tulee suoritetuksi ja näin hyökkääjä saa takaoven kohteeseen.

Backdoor factoryn toiminta perustuu shell-koodiin, joka on binäärimuodossa olevaa konekoodia. BDF muokkaa ohjelman suoritusta siten, että se suorittaa myös ohjelmaan injektoidun koodin tavallisen koodin lisäksi. Ohjelman suorittaminen ei eroa mitenkään tavallisesta versiosta. Suoritettava ohjelmatiedosto on binäärikoodia, jossa on usein tyhjiä kohtia, johon BDF voi syöttää omaa koodiaan.

Chapter 8. The Onside Kick – Attacks that Require Physical Access

11. Altti Hiironen (2014-s): Attacks that Require Physical Access "pelin" kokonaisuudessa ja kismet

Kuten luvun nimi kertoo, luvussa käsitellään hyökkäyksiä, jotka vaativat fyysisen pääsyn laitteisiin. Ne tuottavat yleensä erittäin hyödyllisiä tuloksia, mutta ongelmaksi kerrotaan, että uhrin on helppo havaita hyökkäys ja itse hyökkääjän tarvitsee olla fyysisesti lähistöllä. Näihin hyökkäyksiin kuuluu langattomien verkkojen murtaminen, pääsykorttien kopioiminen, pienen tietokoneen ujuttaminen murrettavaan ympäristöön ja CD/USB-laitteiden jättäminen siinä toivossa, että joku kytkee ne laitteisiin, jolloin medialta asentuu salaa esimerkiksi Meterpreter.

Langattoman lähiverkon murtaminen alkaa passiivisella vaiheella, jossa identifioidaan ja tiedustellaan mm. mahdolliset verkot, asiakkaat, signaalin vahvuudet ja salaustyypit. Passiivisessa vaiheessa ei olla siis vuorovaikutuksessa muihin laitteisiin.

Kali Linuxista löytyy työkalu nimeltään kismet, jolla passiivinen tiedustelu onnistuu. Käynnistyksessä kismet kysyy, mitä verkkolaitetta käytetään, jonka jälkeen työkalu listaakin jo havaitut langattomat verkot ja niiden tiedot. Listasta on helppo nopeasti identifioida verkot lukemalla värikoodeja, keltainen tarkoittaa että verkkoa ei ole salattu, punainen että tehdasasetukset ovat käytössä, vihreä että verkko on salattu ja sininen tarkoittaa että kyseisen verkon SSID-mainostus on otettu pois käytöstä. Kismet osaa näyttää myös Access Pointin BSSID:n, valmistajan, salauksen tyypin, signaalinvahvuuden sekä pakettihäviön. Kaiken tämän lisäksi työkalu osaa näyttää myös kaikki asiakkaat, jotka ovat yhdistyneenä valittuun verkkoon.

Passiivisessa vaiheessa kerätty informaatio on tärkeää aktiivisessa vaiheessa, jossa siirrytään itse hyökkäykseen. Olennaista tämän tyyppisessä hyökkäyksessä on myös käyttää tarpeeksi vahvaa WLAN-antennia.

12. Joni Karvonen (2015-s): Physical, "pelin" fyysinen osuus

Korttien kopiointi on hankalaa ja kallista. Välillä kuitenkin on tilanteita, jolloin tämä on helpoin tapa murtautua organisaatioon. Internetistä voi ostaa rfid-lukijoita, joita voi muokata haluamaallaan tavalla. Kirja antaa esimerkkinä Internetsivun, jonka ohjeilla voit tehdä kortinlukijan, joka lukee kortin jopa metrin päästä. Vieläpä ilman, että kortin haltija huomaa asiaa mitenkään. Tässä on yksi tapa päästä organisaatioon sisälle turvallisesti, mutta se on kallista.

Kuitenkin on yleensä helpompaa päästä sisälle käyttäjän manipuloinnilla. Lyöttäytymällä työntekijöiden sekaan, kun nämä palaavat ruokatauolta, pääsee sisään rakennukseen ihmismassan aiheuttamalla kaaoksella. Tämän jälkeen ujuttaa pienen ja halvan tietokoneen tyhjään toimistoon ja laittaa sen Internetiin kiinni. Näin saa toimivan Kalin yritykseen.

Toinen vaihtoehto, mitä kirjassa suositellaan on cd-levyjen jättäminen sinne tänne. Laittamalla sopivan nimen kanteen, kuten vaikka: "Spring break pictures [year]", niin joku katsoo levyn varmasti. Kun sopivan suoritteen nimeää IMG_1011.jpg.exe, niin on taatusti joku, joka ei huomaa tätä. Tämä on halpa ja turvallinen tapa suorittaa isku.

[2nd ed. chapter]: Special Teams - Cracking, Exploits and Tricks

[2nd ed. #11] Ville Aarnio (2018-k) Millaisia salasanojen murtotyökaluja kirja esittelee?

Salasanojen murtamista varten on olemassa paljon työkaluja. Salasanan murrossa on kolme pääpiirrettä, sanalistat, säännöt ja hash-algoritmit. Sanalistat ovat nimensä mukaisesti listoja salasanoista selväkielisinä. Salasanan murtotyökalu muuttaa näitä sanoja hasheiksi ja vertaa niitä hashiin, jota yritetään murtaa. Kirjassa esitellään muutamia sanalistoja, mm. RockYou, Crackstation-human-only, Crackstation-Full ja List of 122 million passwords. Hash-algoritmia käytetään generoimaan salasanan hash. Näissä on tärkeä käyttää oikeata hash-algoritmia, sillä väärän käyttö ei löydä oikeaa hashia koskaan. Kirjassa myös mainitaan sateenkaaritaulut, mutta kirja sivuuttaa ne melko nopeasti maininnalla, että ne eivät nykyään ole enää kovinkaan hyödyllisiä, sillä sateenkaaritaulujen tekeminen yli 10 merkkisille salasanoille on niin kallista, ettei niitä nykyisessä penetraatiotestauksessa enää kovinkaan paljoa käytetä. 

John The Ripper on salasananmurtotyökalu, jonka tarkoitus on arvata salasana. Ohjelma voisi ottaa esimerkiksi suuren listan suolaamattomia MD5-hasheja ja yrittää arvata niihin sopivia salasanoja. Seuraava kirjassa esitelty ohjelma on OclHashcat. Kirjoittaja pitää tätä ohjelmaa parempana, sillä se käyttää salasanojen purkamiseen GPU:ta CPU:n sijaan. Tämä ohjelma John The Ripperin lailla pyrkii arvaamaan salasanan. Tällä ohjelmalla voi murtaa myös WPAv2-salasanoja. Seuraavaksi kirja esittele ohjelman nimeltään Prince. Tämä ohjelma on salasanojen "arvailua" varten. Tämä ohjelma ottaa yhdestä sanakirjasta sanoja ja tekee niistä jonoja. Esimerkiksi jos sanakirjassa on sanat a, cat, house, niin Prince muodostaa näistä kaikki mahdolliset kombinaatiot, esim. acat, ahouse, acathouse, housecat jne.

[2nd ed. #12] Kuvaile yhden uuden Powershell-skriptin toimintaa