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:
OWASP Top 10
Mikä on OWASP?
OWASP (Open Web Application Security Project)
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.
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
(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.Bonus Question:
Show step by step how you identify and recover the deleted rootkit from the / partition.- What files make up the deleted rootkit?
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.
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