Linux Palvelimet: Harjoitus 5 raportti

Tässä postauksessa raportoin Tero Karvisen Linux Palvelimet-kurssin tehtävää 5.

Käyttämäni tietokoneet ovat HP:n 655 G1 läppäri ja virtuaalipalvelin DigitalOceanilta ($5/kk paketti ilman mitään herkkuja). Käyttöjärjestelmä läppärissä on Xubuntu 16.04 LTS ja virtuaalipalvelimessa Ubuntu 16.04.3.

Ennen tehtävien aloittamista annoin terminaaliin komennot

$ sudo apt-get update
$ sudo apt-get upgrade -y

päivittääkseni kaiken ajan tasalle.

Raportin aloitus klo 23.34 27.2.2018

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

a) Asenna SSH-demoni

Asennetaan SSH komennolla

$ sudo apt-get install -y ssh

Testataan vaikka kirjautumalla virtuaalipalvelimeen

$ ssh käyttäjä@palvelin

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

b) Suojaa kone tulimuurilla, mutta tee ensin reikä SSH:lle

Avataan tulimuurin portti 22 (SSH) ja laitetaan se lopuksi päälle

$ sudo ufw allow 22/tcp
$ sudo ufw enable

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 c) Siirrä tiedostoja SSH:lla

Tähän käytetään komentoa scp. Tehdään ensin kansio ja sinne muutama tiedosto

$ mkdir sendmepls
$ cd sendmepls/
$ touch yes no maybe

Siirretään kansio ja tiedostot palvelimelle

$ cd ..
$ scp -r sendmepls/ käyttäjä@palvelin:hakemisto

Tsekataan vielä palvelimen puolella, että tiedostot ovat tulleet

scp.png

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 d) Automatisoi kirjautuminen julkisen avaimen menetelmällä

Luodaan julkinen avain komennolla

$ ssh-keygen

Tyydytään perusasetuksiin ja kopioidaan se palvelimelle

$ ssh-copy-id käyttäjä@palvelin

Kokeillaan kirjautua palvelimelle

julkinenavain.gif

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 j) Asenna, konfiguroi ja käynnistä sysstat-paketti. Tutki kuormitushistoriaa ja analysoi tuloksia.

Asensin sysstatin palvelimeen jo 23.2.2018 klo 21.03, eli se on rullannut jo hetken päällä. Tämä tapahtui seuraavasti

$ sudo apt-get update
$ sudo apt-get install -y sysstat

Konfiguroidaan vähän ja sallitaan datan keräys

$ sudoedit /etc/default/sysstat

Vaihdetaan arvo ENABLE falsesta trueksi ja tallennetaan.

Laitetaan viimeiseksi sysstat päälle

$ sudo systemctl start sysstat

Tutkitaan nyt näiden muutaman päivän tuloksia

$ pidstat

pidstat.png

Komennolla saa esiin prosessit ja niiden tietoja. (katsoin tätä ohjetta kun hetken pähkäilyn jälkeen keksinyt muuta kuin arvauksia)

  • Kellonaika on kaksi tuntia jäljessä omasta kellostani
  • UID: olettaisin että lyhenne UserID:stä
  • PID: prosessin ID-numero
  • %usr, system%, %guest ja %CPU: liittyvät kaikki prosessorin kuormitukseen eri profiileilla
  • CPU: Prosessorin numero johon prosessi on liitetty
  • Command: Prosessin command-nimi
$ iostat

Jos yhtään ymmärrän oikein, iostat näyttää infoa prosessorista ja kovalevystä.

iostat.png

Katsoin tähän apua täältä.

  • %user: kertoo prosessorin käyttöasteesta sovellusta suorittaessa.
  • %nice: tarkoittaa prosessorin käyttöastetta kun ajettiin käyttäjäasteella “nice”
  • %system: kertoo järjestelmätasolla (kernel) ajetuista käytöistä
  • %iowait: imoittaa ajan, jolloin prosessori oli käyttämättömänä kun järjestelmällä oli ratkaisematon levy I/O pyyntö. I/O tulee sanoista input/output ja liittyy muistaakseni hyvin läheisesti prossun bottleneckaukseen (pullonkaula).
  • %steal: ilmoittaa ajan, kun prosessori oli haluamattaan odotustilassa kun hypervisori (kun koneella ei ole ihan fyysistä omaa prosessoria, hypervisori muistaakseni jakelee tehoa fyysisestä prossusta virtuaaliprossuille) palveli jotain toista virtuaalikonetta
  • %idle: ohjetta lukematta voisin luvun suuruudesta ja nimestä päätellä, että tämä kertoo kuinka kauan kone on ollut tekemättä mitään
  • Sen jälkeen infoa kovalevystä (joka tässä tapauksesa on tosin SSD), sen kirjoitus- ja lukunopeuksista ja viimeisenä ehkä kuinka paljon levy on tehnyt töitä (sinä aikana kun sysstat on ollut päällä)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 i) Ratkaise Scan of the Month 15

Tarkoituksena on löytää levykuvasta poistettu rootkitti. Viralliset tehtävät löytyvät täältä.

Eli tavoitteena on:

  1. Show step by step how you identify and recover the deleted rootkit from the / partition.
  2. What files make up the deleted rootkit?
  3. Bonus Question: Was the rootkit ever actually installed on the system? How do you know?

Ennen tehtävään siirtymistä pitää kiittää KristianiaViliäJaakkoa ja Roopea joiden kanssa ratkaisin tehtävää Discordissa.

Aloitin tehtävän jo lähiopetustunneilla. Käytin apunani runsaasti tätä ohjetta.

Aloitin tekemällä tehtävälle oman hakemiston, latasin honeynet.tar.gz-tiedoston täältä ja siirsin sen sille tehtyyn hakemistoon.

Latasin Sleuthkitin

$ sudo apt-get install -y sleuthkit

Tein Teron ohjeen mukaisesti allocated ja deleted-hakemistot

$ mkdir allocated deleted

Purin levykuvan hakemistoihin

$ tsk_recover -a honeypot.hda8.dd allocated/
$ tsk_recover honeypot.hda8.dd deleted/

Loin aikajanan tiedostoille ja lähdin tarkastelemaan aikajanaa

$ tsk_gettimes sda1.dd >rawtimes
$ mactime -b rawtimes|less

Löysimme runsaasti tapahtumia aivan lopusta 15. ja 16. helmikuuta 2001.

Silmääni iski poikkeavan suurehko tiedosto lk.tgz, joka ilmeni googletuksen jälkeen olevan jonkinlainen tervapallo. Tiedoston ensimmäisen merkinnän jälkeen filesysteemissä tapahtui runsaasti kummallisuuksia, joista viimeisimpien joukossa oli taas sama lk.tgz.

Hetken spekuloinnin jälkeen (että onko filu relevantti tehtävään liittyen) ryhdyimme tutkimaan sitä tarkemmin. En kuitenkaan halunnut purkaa tervapalloa joten käytin komentoa

$ find|less deleted/lk.tgz

Ilmeni että sen sisältö oli harvinaisen epäilyttävää tavaraa.

Purin tervapallon

$ tar xf deleted/lk.tgz

ls_last.png

Sisältä löytyi hakemisto last ja sen jo ennestään find|less kautta tuttu sisältö. Käytetään samaa taktiikkaa uudelleen ja katsotaan mitä tiedostoista löytyy

$ find|less install

alku.png

Filen ajamalla tapahtuu hirveitä. Se poistaa ja korvaa last-hakemistosta löytyvillä valmiiksi pahantekijän muokkaamilla tiedostoilla huomattavan tärkeitä tiedostoja ( esim. ssh_host_key ja sshd_config) ja senjälkeen ajaa lisää skriptejä kuten linsniffer joka muistaakseni haistelee ethernet-paketteja, logclear ja cleaner jotka poistavat lokimerkinnät pahantekijän hommista.

Viimeiseksi on rivi

rm -rf last lk.tgz computer lk.tar.gz

joka poistaa itse rootkitin.

Koko rootkitti on selvästi koottu eri työkaluista ja ilkeyksistä, eikä pahantekijä ole itse tehnyt niistä kaikkia. Muokannut ehkä, mutta tiedostoissa on käytetty useaa eri kieltä (Saksaa ja yhtä tai kahta muuta joista en ole täysin varma).

install-tiedostosta löytyy myös pari kiinnostavaa riviä

tyypinemail.png

En ole varma mitä tietoja mail komento lähettää tässä tapauksessa. Pääponttina on silti se, että tekijän sähköpostiosoitteet löytyivät (oletettavasti).

Vastataan kysymyksiin:

2. What files make up the deleted rootkit?

lk.tgz-tervapallo ja sen hakemisto last sisältöineen.

3. Bonus Question: Was the rootkit ever actually installed on the system? How do you know?

Oli asennettuna. Se on tullut koneelle ja poistanut itsensä juuri niinkuin install-tiedostosta käy ilmi, jos aikajana on oikeassa. Asian voisi myös varmistaa menemällä tarkastelemaan rootkitin muokkaamia hakemistoja ja tiedostoja käsin.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Virallisen raportin lopetus klo 2.02 28.2.2018

EDIT klo 13.55 28.2.2018: korjasin pari typoa
EDIT klo 13.37 6.3.2018: typo ja käyttiksien lisäys alkuun lisäselvennykseksi

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 Ajattelin taas tehdä vapaaehtoisia ainakin yhden tai kaksi mutten juuri nyt, eli

soon™

 

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s