Sunday, February 9, 2014

OWASP + Sleuthkit: recovering deleted files | Linux palvelimena


AIHEALUE: Rosvoja ja kunnon kansalaisia - dd


Tehtävänanto Tero Karvisen blogista:
URL: http://terokarvinen.com/2013/aikataulu-%E2%80%93-linux-palvelimena-ict4tn003-11-ja-12-kevaalla-2014


h3: a) Ratkaise HoneyNet Scan of the Month 15.
b) Selitä omin sanoin tiiviisti valitsemasi hyökkäys OWASP Top 10 -listalta. Pelkkä sanallinen kuvaus riittää, tässä OWASP alakohdassa ei tarvitse tehdä mitään kokeiluja.
ps. Käsittele haittaohjelmia sisältäviä levykuvia huolellisesti, älä laita niitä tuotantokoneille äläkä aja niiltä löytyviä ohjelmia. Noudata hyviä tapoja ja lakeja, älä hyökkää kenenkään koneisiin. Katso myös http://terokarvinen.com/2013/forensic-file-recovery-with-linux
ps2. Jos on vaikea valita tutustuttava hyökkäys, tutustu SQL injektioon.



*******************************************************************************


Harjoitusympäristönä: 

HP Elitebook 8530p kannettava tietokone
Intel Core 2 Duo CPU P8600 @ 2.40GHz
4GB RAM

Käyttöjärjestelmä:

Linux xubuntu 3.11.0-12-generic i686  (Live-CD:eeltä ajettuna)
(Linuxin käyttöjärjestelmäversion saa selville Terminalin kautta komennolla  
$ uname -a)





      RAPORTTI

 HoneyNet Scan of the Month 15
 (Lähde: old.honeynet.org/scans/scan15 )

Käytetyt ohjelmat:
-sleuthkit (sudo apt-get install sleuthkit)





Tehtävänä oli siis ratkaista honeynut.org-sivuston "Scan Of the Month 15" -tehtävä:


The Challenge:


On 15 March. 2001, a Linux honeypot was successfully compromised, a rootkit was download to the / partition and then deleted from the system. Your mission is to find and recover the deleted rootkit.
  1. Show step by step how you identify and recover the deleted rootkit from the / partition.
  2. What files make up the deleted rootkit?
Bonus Question:
Was the rootkit ever actually installed on the system? How do you know?

Ensiksi selvitin itselleni vähän mitä eri termit tarkoittivat, perehdytin itseäni asiaan, ettei joka toinen asia tuntuisi vieraalta.

Mikä on rootkit?

Rootkit is an application (or set of applications), that hides its presence or presence of another application (virus, spyware, etc.) on the computer, using some of the lower layers of the operating system (API function redirection, using of undocumented OS functions, etc.), which makes them almost undetectable by common anti-malware software.”

Mikä on Linux honeypot?

A honeypot is a computer software or device that exists simply to be attacked.”

“They can easily capture zero-day exploits, freshly minted malware, and roaming APT hackers. Honeypots are great at detecting malicious activity from both outsiders and insiders; they turn up rogue exploits the other tools miss.”
- Roger Grimes, security adviser, www.infoworld.com

Lähde:


Guidelinenä käytin seuraavaa blogikirjoitusta:



     md5

Aloitin tehtävän lataamalla tar.gz-muotoon pakatun imagen honeynet.org-sivulta. Tämän jälkeen vertasin tiedoston md5-tarkistuslukua honeynet-sivustolla ilmoitettuun tarkistuslukuun varmistaakseni, että lataus oli onnistunut virheettömästi. Tämä onnistui “md5sum”-ohjelmalla syöttämällä $ md5sum komento ja tiedoston nimi. (md5sum-ohjelma tulee vakiona linux-käyttöjärjestelmissä mukana http://fi.wikipedia.org/wiki/MD5Sum ).

$ cd ~/Downloads
$ md5sum honeynet.tar.gz
0dff8fb9fe022ea80d8f1a4e4ae33e21 honeynet.tar.gz

Tarkistusluku täsmäsi. Tämän jälkeen purkasin .tar.gz-pakkaustiedostomuodossa olleen imagen ~/Downloads/honeynet-hakemistoon.


$ sudo tar -xzvf honeynet.tar.gz

-x extract files from an archive
-z tells the tar command that the extracted file is in tar.gz-type (gunzip)
-v verbosely list files that are extracted
-f use archive file or device ARCHIVE, f means to extract it here in the filesystem (and the need for it is an artifact of the older common use of tar, to create and extract tape archives).”

Tämän jälkeen Downloads-hakemistoon ilmestyi honeynet-kansio, joka sisälsi imagen: honeypot.hda8.dd sekä tekstitiedoston README, joka sisälsi ohjeistusta. Testasin imagen md5-tarkistusluvun, joka täsmäsi.

Seuraavaksi käytin hyväkseni vinkkejä blogikirjoituksesta “Forensic file recovery with linux”. Lähde: http://terokarvinen.com/2013/forensic-file-recovery-with-linux


   Sleuthkit

Tehtävänantoon kuului näyttää askel kerrallaan miten identifioin ja palautan takaisin poistetun rootkitin / partitiolta: Ensiksi kokeilin palauttaa imagen sisältämät ei-poistetut tiedostot ilman “mounttausta”.

$ tsk_recover -a honeypot.hda8.hdd ~/Downloads/honeynut/normaalit

Sain ilmoituksen: “The program 'tsk_recover' is currently not installed. You can install it by typing:
apt-get install sleuthkit ”. Sleuthkit on kokoelma tietokoneeseen kohdistuvaan rikostekniseen tutkimukseen soveltuvia linux-työkaluja.Tehtyäni tämän kokeilin uudestaan nyt asennetun sleuthkit-ohjelman komennolla ja nyt normaalit-kansioon oli ilmestynyt seuraavat linuxin filesystem hiearchyn mukaiset hakemistot:

bin
dev
etc
lib
root
sbin
tmp

Terminal myös ilmoitti: “Files Recovered: 1614”


Tämän jälkeen kokeilin palauttaa imagelta poistetut tiedostot sleuthkit”-työkalupaketin avulla. Palautin tiedostot "palautetut"-nimiseen hakemistoon.

$ tsk_recover honeypot.hda8.hdd ~/Downloads/honeynut/palautetut

Files recovered: 37”

Menin palautetut-kansioon komennolla $ cd palautetut. Ja tarkastin sen sisällön. $ ls -la

total 512
drwxr-xr-x 4 root root 100 Feb 9 21:07 .
drwxr-x--- 4 500 500 120 Feb 9 21:07 ..
drwxr-xr-x 5 root root 140 Feb 9 21:07 etc
-rw-r--r-- 1 root root 520333 Feb 9 21:07 lk.tgz
drwxr-xr-x 2 root root 560 Feb 9 21:07 $OrphanFiles

Siellä oli etc-kansio, sekä lk.tgz-tiedostomuotoon pakattu tiedosto sekä dollarin merkki edessään “OrphanFiles”.



TIEDOSTOJEN ANALYSOINTI

En tiedä mitä tehdä, joten kokeilen vain oppimateriaalissa esiteltyjä työkaluja/komentoja, koska haluan testata niitä.

Kokeilin komentoja. Ensimmäinen komento kerää imagelta löytyvistä tiedostoista (sisältäen myös poistetut tiedostot) aikatiedot ja toinen komento taas avaa tiedot less-sovelluksella aikajärjestyksessä:

$ tsk_gettimes honeypot.hda8.dd >rawtimes
$ mactime -b rawtimes|less


Seurasi aika monta riviä aikatietoja. Ensimmäinen merkintä oli vuodelta 1970?:

Thu Jan 01 1970 00:00:00 1024 ...b d/drwxr-xr-x 0 0 10041 etc/sysconfig/console

Kun viimeinen merkintä taas oli vuodelta 2002:

Fri Feb 08 2002 13:08:13 611931 m... -/rrwxr-xr-x 0 0 2039 $OrphanFiles/OrphanFile-2039 (deleted)
(END)





Kokeilin “mountata” imagen turvallisesti mount-pisteeseen “~/Downloads/honeynut/honeynutmount”. “nodev” osa komennosta pitää huolen siitä, että “Do not interpret character or block special devices on the file system”. Ja noexec taas piti huolen sitä, että “mounttaukselta” ei pysty ajamaan mitään ohjelmia:

$ sudo mount -o "loop,nodev,noexec,ro" honeypot.hda8.hdd honehoneynutmount/

Mountatulla imagella olevien “ei-poistettujen” tiedostojen timelinen voi saada selville seuraavalla “helposti muistettavalla” komennolla. (Mountatun imagen poistetuista tiedostoista ei voi saada timeline-tietoja):

$ sudo find -printf '%T+ M %p\n%A+ A %p\n%C+ C %p\n'|sort|less

komento palautti alkupäästä seuraavaa:

1994-07-14+01:57:49.0000000000 M ./root/.bash_logout
1994-07-14+02:05:25.0000000000 M ./etc/skel/.bash_logout
1995-08-23+15:56:14.0000000000 M ./etc/skel/.bashrc
1995-08-23+19:02:38.0000000000 A ./root/.Xdefaults
1995-08-23+19:02:38.0000000000 M ./root/.Xdefaults
1995-08-23+19:03:58.0000000000 M ./root/.bash_profile
1995-08-23+19:04:30.0000000000 M ./root/.bashrc
1996-02-06+21:04:01.0000000000 M ./mnt/floppy
1996-03-04+15:07:42.0000000000 M ./root/.tcshrc
1997-09-16+14:12:06.0000000000 A ./etc/ppp/ip-down
1997-09-16+14:12:06.0000000000 M ./etc/ppp/ip-down

Ensimmäinen MAC timeline-merkintä on vuodelta 1994 ja siitä näkee, että sen tyyppi on M eli modified. Vuonna 1995 taas yhden tiedoston kohdalla on A eli Accessed timeline-merkintä. Myös olisi vielä kolmas C, status Changed. Katsotaanpa vielä viimeisimmät lokimerkinnät.

2001-03-16+16:28:30.0000000000 C ./dev/ida/.drag-on/tcp.log
2001-03-16+16:28:30.0000000000 M ./dev/ida/.drag-on/tcp.log
2001-03-16+16:28:39.0000000000 A ./etc/localtime
2001-03-16+17:01:00.0000000000 A ./etc/cron.hourly
2001-03-16+17:01:00.0000000000 A ./etc/cron.hourly/inn-cron-nntpsend
2001-03-16+17:01:00.0000000000 A ./etc/rc.d/rc3.d
2001-03-16+17:01:00.0000000000 A ./sbin/chkconfig
2001-03-16+17:01:00.0000000000 A ./sbin/runlevel
2001-03-16+17:20:00.0000000000 A ./bin/bash
2001-03-16+17:20:00.0000000000 A ./bin/sh
2001-03-16+17:20:00.0000000000 A ./etc/group
2001-03-16+17:20:00.0000000000 A ./etc/ld.so.cache
2001-03-16+17:20:00.0000000000 A ./lib/ld-2.1.3.so
2001-03-16+17:20:00.0000000000 A ./lib/ld-linux.so.2
2001-03-16+17:20:00.0000000000 A ./lib/libc-2.1.3.so
2001-03-16+17:20:00.0000000000 A ./lib/libc.so.6
2001-03-16+17:20:00.0000000000 A ./lib/libdl-2.1.3.so
2001-03-16+17:20:00.0000000000 A ./lib/libdl.so.2
2001-03-16+17:20:00.0000000000 A ./lib/libtermcap.so.2
2001-03-16+17:20:00.0000000000 A ./lib/libtermcap.so.2.0.8
2001-03-16+17:20:00.0000000000 A ./sbin/insmod
2001-03-16+17:20:00.0000000000 A ./sbin/rmmod
(END)


Nyt olen kuluttanut tehtävien tekemiseen jo monta tuntia lukien  aiheeseen liittyvää materiaalia  yrittäen ymmärtää perusteet mutta nyt pakko mennä nukkumaan. Aikaa sai kyllä helposti kulumaan vain perusasioihin perehtymiseen ja artikkelien lukemiseen.

Tämä olisi vaatinut minun osalta huomattavasti enemmän aikaa, jotta olisin päässyt enemmän kärryille. Minun tasolleni melkoisen vaativa (ainakin tarvittavan aikamäärän suhteen).

Lopputuloksena sain siis:
-tarkistettua ladatun pakatun image-tiedoston MD5-tarkistusluvut, 
-jonka jälkeen onnistuin palauttamaan image-tiedostolta poistetut tiedostot omaan kansioonsa ja pystyin tutkailemaan niitä hieman. 
-Käytin sleuthkit-työkaluja sitä varten, että pystyin lukemaan tiedostojen timeline-merkintöjä. En osannut niistä tehdä sen kummemmin johtopäätöksiä liittyen tehtävänantoon. Jos aikaa olisi ollut niin olisin voinut purkaa palautetuista tiedostoista lk.tgz-tiedoston ja selvittää mikä sen tarkoitus oli.







       OWASP Top 10

Mikä on OWASP?
 

OWASP (Open Web Application Security Project)



"The primary aim of the OWASP Top 10 is to educate developers, designers, architects, managers, and organizations about the
consequences of the most important web application security weaknesses. The Top 10 provides basic techniques to protect
against these high risk problem areas – and also provides guidance on where to go from here."
- www.owasp.org
 URL: https://www.owasp.org/index.php/Top_10_2013

Owasp-sivustojen mukaan kyseessä on avoimen yhteisön perustama voittoa tavoittelematon projekti, jonka tarkoituksena on valistaa organisaatioita yleisimmistä tietoturvariskeistä ja siitä miten niiltä voidaan suojautua. OWASP-yhteisöön kuuluu yrityksiä, koulutusorganisaatioita sekä yksilöitä ympäri maailmaa ja se julkaisee vapaasti-saatavilla olevia artikkeleita, metodeja, dokumentaatiota, työkaluja ja teknologioita.
"The OWASP community includes corporations, educational
organizations, and individuals from around the world. This
community works to create freely-available articles, methodologies,
documentation, tools, and technologies."
- (Lähde: wikipedia)


Vuoden 2013 OWASP Top 10-listan yksi vaarallisimmista/yleisimmistä/tärkeimmistä hyökkäyksistä oli kohta A1, "Injektiot" (A1-Injections). (Esimerkiksi  SQL-injektiot.) Erilaiset injektiovirheet järjestelmien koodissa ovat hyvin yleisiä. 



Mikä on SQL-injektio?

Injektiovirheet ovat tapahtumia, joissa pystytään ujuttamaan korkeampia oikeuksia vaativia komentoja/hakuja web-applikaation kautta, jota ei siihen ole tarkoitettu (Esim. selaimen URL-kenttä.)

Esimerkki SQL-injektiosta: Hyökkääjä menee jonkun tietyn sivuston sisäänkirjautumissivulle ja ujuttaa käyttäjänimikenttään SQL-injektion joka päätyy järjestelmän ajettavaksi sellaista reittiä mitä ei siihen ole tarkoitettu.

Normaalitilanteessa kun käyttäjä syöttää tietonsa kirjautumisikkunaan ja painaa "Kirjaudu sisään"-nappia niin siitä lähtee tiedustelu SQL-tietokantataulukkoon, joka tarkistaa löytyykö taulukosta kyseinen käyttäjä ja täsmääkö syötetty salasana. Jos sisäänkirjautumistapahtumaan liittyvää koodia ja tapahtumaketjua ei ole suojattu asianmukaisella tavalla voidaan käyttäjänimen perään ujuttaa pätkä haitallista SQL-komentoa, joka päätyy järjestelmän ajettavaksi kun painetaan kirjautumisnappia. Komento voidaan ujuttaa myös selaimen URL:in kautta.

Tällaisessa tilanteessa hyökkääjä voisi siis lähettää SQL-injektioita kyseiseen järjestelmään aiheuttaen arkaluontoisen datan varastetuksi joutumista, tietojen muokkausta tai  koko SQL-tietokannan tuhoutumista. Joissain tapauksissa Injektio on johtanut jopa host-takeoveriin.


Miten tätä vastaan voidaan suojautua?

-Pitämällä huoli siitä, että järjestelmien koodi on ajantasalla
-Helpoiten injektiovirheet pystyy löytämään tutkimalla koodia ja varmistamalla, että datan tulkitsijat applikaatioissa erottelevat selkeästi "epäluotettavan" datan komennosta tai hausta (query).
-ottamalla käyttöön OWASP:in julkaisemia ohjeita ja safeAPIa





No comments:

Post a Comment