Як воювати в локальних мережах, Локальні мережі, статті

Djzlob, Журнал “Хакер”

Давним-давно в далекій-далекій локалці вирували мережеві війни … Ти ще не підключився до локалці? Так швидко підключайся, а якщо в окрузі такої ще немає, то швидко їдь на Митьку – купуй вагон 300 метрових бухт, хаби, мережевої, конннектори, обжімалка і збирай народ!

Підрубали? Е! Але, як виявилося, в натовпі мережевого народу є не тільки друзі … Іноді так і хочеться зробити щось бридке цього тупому лоху з сусіднього під’їзду ;). Я допоможу тобі здійснити цю заповітну мрію і розповім про варіанти атак і методи захисту в мережевій війні.

ARP Атаки

Коли в локалці кілька машин під управлінням WIN мають один і той же IP адреса, то в Windows’e вилітає табличка, що повідомляє про те, що даний IP адреса використовується іншим компом і інтерфейс буде відключений … А фішка в тому, що перед з’єднанням з мережею комп висилає ARP-запит, отримуючи відповідь, що потрібний йому IP – зайнятий. В результаті ти отримуєш саме це повідомлення. Цим можна скористатися і віддалено флудити машини, працюють під Win: сотнями вікон, які навряд чи комусь під силу закрити … простіше перезавантажиться ;). Занудно зазначу, що цей трюк прокатує тільки в межах сегмента мережі, не обмеженого маршрутизатором або мостом.

Виконати таку операцію досить просто, якщо в твоєму розпорядженні є UNIX або NT машина, тому що тільки під дані платформи доступна бібліотека libnet, дозволяє досить просто генерувати ARP пакети. Насправді програм такого класу, портірованних під NT, не існує, але … це у всіх інших, а у тебе буде!

ЕКСКЛЮЗИВ ВІД ЖУРНАЛУ – новий Х-реліз під назвою Bespredel, який ти можеш викачати з www.xakep.ru / articles / releases. Маючи цю штучку, разом з libnetNT, хаос можна буде влаштовувати не тільки користуючись * nix `ом ;).

Юніксової ж бійці качають це добро з:

conflictd – c5.hakker.com (Вимагає наявність бібліотеки libnet);

havoc – packetstorm.securify.com/DoS/havoc-0.1c.tgz

Анонімність

Як же залишитися непоміченим і продовжувати творити беззаконня в локалці? Існує всього два ідентифікатора, за якими тебе можуть розпізнати. Це MAC адресу мережевої карти і IP адрес. Складність зміни даних параметрів залежить від операційки, під якій ти працюєш. Якщо це UNIX, то IP адреса може бути зміненим швидко і без перезавантаження, MAC адреса також просто змінити, але не під кожним UNIX’ом …

В Linux’е і FreeBSD ти зможеш реалізувати цей фінт вухами за 1 хвилину, але, сидячи під OpenBSD, тобі доведеться страждати величезним гімора: (. Якщо ми збираємося сніффать локалку і адміністратор достатньо просунутий для того, щоб відстежувати пасивні атаки (сніффінг), – Доведеться трохи попрацювати. Але ми все одно налаштуємо нашу систему так, щоб її ніяк не можна було виявити в локалці, крім як подивитися на хаб – чи горить лампочка біля нашого порту чи ні ;).

Зміна IP адреси

Тут все просто: беремо і міняємо твій IP утилітою ifconfig:

ifconfig <інтерфейс> inet <потрібний IP адреса>

Зміна MAC адреси

під FreeBSD:

MAC адресу можна змінити також просто – командою ifconfig, набравши:

ifconfig <інтерфейс> lladdr <потрібний MAC адресу>

Під Linux це робиться так:

ifconfig <інтерфейс> down

ifconfig <інтерфейс> hw ether <потрібний MAC адресу>

ifconfig <інтерфейс> up

До речі, перші 3 байта MAC адреси – це ідентифікатор виробника мережевої карти, наприклад, 00: C0: 6F: 66:66:66. Такий MAC у мережевих карток фірми Komatsu Ltd ;). Так що якщо цікаво, то з цього УРЛу ти знайдеш велику таблицю ідентифікаторів виробників мережевих карт: www.cavebear.com/CaveBear/Ethernet/vendor.html

Під OpenBSD:

За ідеєю, MAC адресу можна змінити через bpf’шние sysctl’и, але це доступно тільки гуру (та й на фіга нам потрібні такі напряги?), які годинами копаються в сорца ядра. Так що для атак можна скористатися модулем etherspoof, який дозволяє замінювати MAC адресу в вихідних пакетах. Він доступний в пакеті libnet
www.packetfactory.net/Projects/Libnet.

До речі, перед завантаженням модуля не забудь встановити securelevel ядра на рівень 0, тому по замовчуванням використовується рівень 1, при якому неможлива завантаження lkm.

Ще один хороший спосіб збереження анонімності – правильна настройка firewall’a. Можна конфігурувати firewall таким чином, що твоя система не буде відповідати НА ВСЕ запити: немає відповіді на пінг, всі порти прикриті. При такому розкладі вже важко сказати: є машина в мережі чи ні. Якщо ти використовуєш Firewall IPfilter, то просто додай дану рядок “block out all” в список правил і потім примусь ipf перечитати правила.

Якщо ти використовуєш IPChains, то набери таку пургу:

ipchains -A output -j DENY -s 0/0 -d 0/0

В ipfwadm це буде виглядати так:

ipfwadm -O -p DENY

А в ipfw це буде виглядати так:

ipfw add deny from any to any out

Якщо ти використовуєш Linux і зовсім пропаща параноїк, то постав собі патч для ядра Stealth TCP / IP Stack, який зробить твою систему невидимою в локалці. Це підвищить твої шанси залишитися непоміченим. www.energymech.net/madcamel/fm/

Визначення снифферов

З існуючих в даний момент способів віддаленого визначення снифферов дійсно швидким та ефективним є ARP метод. З ним, якщо не зроблено спецзаходів, ймовірність виявлення сніффер –
99%.

Принцип дії такий: в мережу кидається ARP-запит на визначення IP лівого МАС-адреси. Якщо якась машина радісно відповідає, що такої адреси немає, то можна з упевненістю сказати, що на ній запущений сніффер.

Правда, знаючим людям (тепер ти один з них) з цим методом дуже просто боротися. Треба всього лише відключити використання протоколу ARP на інтерфейсі, набравши: ifconfig <інтерфейс>
-arp

Відмовлятися від використання протоколу ARP на інтерфейсі варто тільки на час сніффінга, т.к. без нього ти просто не зможеш використовувати iNet.

Ще один непоганий спосіб виявлення – DNS-метод. Для виявлення sniffer `a робиться купа запитів на неіснуючі адреси, а потім сніффается весь трафік на предмет спроб зарезолвіть ці

липові адреси в ім’я машини. До нещастя (кому як ;), це також просто обійти, відключивши в сніффер переклад IP адрес в імена (у більш-менш нормальних сніффер, таких як sniffit або dsniff, це є).

DoS атаки

На даний момент реально ефективними DoS `ами є як і раніше атаки фрагментованими IGMP пакетами (kod, pimp, voidozer).

До речі, для тих, хто не в курсі: voidozer в вихідних пакетах відсилає інформацію про системі, на якій працює атакуючий (ім’я юзера і директорія запуску).

Kod – packetstorm.securify.com/9907-xploits/windows_kod.txt

Pimp – packetstorm.securify.com/DoS/pimp.c

Voidozer – www.void.ru/toolz/xplo/29.html

Від усіх цих атак для віндів існують патчі. На www.microsoft.com (ВАУ, вперше щось корисне можна там знайти 😉 – в пошуку просто набираємо IGMP).

Oshare-атака

packetstorm.securify.com/9901-exploits/oshare_1_gou.c

Досить ефективна атака (патч недоступний?), що працює в сегментах мережі, не обмежених маршрутизаторами. Обмеження в зоні роботи пояснюється тим, що у пакета незакінчена структура і він не може пройти через роутер. Працює тільки на Linux’е. Як написав автор проги: “Linux не думає, що вона розумніша програміста “:). З-під * BSD ця штучка не буде орати, бо що * BSD системи не дозволяють відсилання пакетів з незакінченою структурою.

Флуд атаки

Флуд атаки як і раніше залишаються ефективними, особливо якщо в тебе 10-Мбітних локалки, дешеві хаби і великі відстані між комп’ютерами. В цьому випадку сильний пінг буде створювати велику колізію. Плюс до цього, ОС не встигає обробляти таке величезна кількість вхідних пакетів. Наприклад, я пінговать з машини під OpenBSD свій
notebook – Celeron433,

32ram, 10mbit PCMCIA мережева карта, коли на ньому був запущений win98se.

Результат: під час флуду машина не подавала ніяких ознак життя (навіть мишка не рухалася).

Здійснювати пінг-флуд краще за все з максимальним розміром пакету, який дорівнює 65000, з прапорами:

-L (використання максимальної можливої пропускної здатності).

-F (режим флуду).

Знову сніффер!

Я вважаю, ти читав статтю у 9-му номері, де розповідалося про сніфери … Так от, далі ми поговоримо трохи про сніфери і антісніффери і додамо дечого, що не було відображено в попередній статті.

Якщо хочеш визначити, хто ж там у вас сніффает, крім тебе, то скористайся, крім уже описаних AntiSniff і Sentinel, безкоштовною утилітою neped, що використовує arp-метод. Утиліта працює на всіх платформах, для яких є бібліотека libnet.

kalug.lug.net/coding/nettools/neped-libnet.tar.gz

А якщо, припустимо, твою машину зламали, встановили сніффер і підмінили ifconfig так, щоб він не показував, що карта знаходиться в PROMISC режимі? Вішатися? Ні! Викачуємо фірмову утиліту з паги Х-релізів: www.xakep.ru / articles / releases. Lordz називається :).

Головний міф адмінів локальних мереж, у яких багато грошей і мало мізків, такий, що “ніхто не зможе сніффать на світча”
(switch-hub).

Так ось це – повна маячня (майже)! На світча можна сніффать, перенаправляючи весь трафік до себе, використовуючи утиліту arpredirect з пакета dsniff, про який розповідалося у 9-му Х. Тепер пакет dsniff портований і під Windows. Лежить за адресою www.datanerds.net/~mike.

Портований цю тулзи Michael Davis, який також подарував користувачам Windows порт програми siphon, що реалізує техніку пасивного визначення операційної системи. Це аналог nmap для * nix. www.subterrain.net/projects/siphon/
.

Для сніффінга в мережах, побудованих на світча, існує кілька методів.

ARP Spoofing

В момент, коли ворожа машина буде по ARP’у резолвіть MAC адресу шлюзу, ми можемо послати їй у відповідь свій МАС адресу, неначе наша машина і є гейт ;). Шлюз теж відповість на цей запит. Таким

чином вийде, що пакети від ворожої тачки будуть йти одночасно

до нас і на гейт, тобто iNet працює і сніффер без справи не залишається ;). Цей метод називається Man in the Middle. До речі, цей спосіб може бути використаний як DoS атака. Наприклад, віддалено ти можеш повідомити жертві, що MAC адреса інтернет шлюзу, використовуваний в локалці, задається тобою як небудь неіснуючий. Відповідно, чуваку на цій машині не вдасться використовувати Інтернет> :). І “доступ до глобальної мережі Інтернет “він поверне тільки після скидання arp таблиці або перезавантажитеся. Адже він не знає, як скинути таблицю ;).

MAC Flooding

Найефективніший метод, заснований на те, що свитчи мають ліміт пам’яті. Тобто зафлуженний switch не зможе контролювати передачу пакетів і буде слати всі пакети на всі порти як звичайнісінький тупий хаб.

MAC Duplicating

Це метод заснований на тому, що ти встановлюєш собі MAC адресу жертви, трафік, який ти хочеш сніффать. Відповідно, всі пакети йдуть тобі і жертві одночасно. Найголовніше – на них не відповідати, а сидіти і тихо дудіти в трубочку: o).

Routing attacks

Даний метод заснований на посилці жертві фальшивих ICMP-редирект пакетів. Такі використовуються, наприклад, коли маршрутизатор бачить, що до запитуваної вузла є більш короткий маршрут. При такому розкладі він відсилає клієнтові адресу даного маршрутизатора. Ми кидаємо жертві дані пакети з адреси використовуваного нею маршрутизатора та адресу нового маршрутизатора, яким є наш комп’ютер. Отже, весь трафік від жертви буде йти через нас.

Відмінною утилітою, що реалізує дані методи, є:

parasite – packetstorm.securify.com/sniffers/parasite-0.5.tar.gz

MiM – packetstorm.securify.com/sniffers/MiM.c

dsniff – www.monkey.org/~dugsong/dsniff

Приколи:

Який чат використовується у вашій локалці? Напевно це Vypress Chat або IRC! Як же поприколюватися з чатами?

Спеціально для цієї статті я написав програмку, яка дозволяє тобі читати приватні повідомлення Vypress Chat’a. Вона доступна для * BSD, Linux і навіть під Windows (!) З нашого сайту www.xakep.ru в розділі релізів.

А якщо ж у твоїй локалці використовується ІЗК, то і тут можна пожартувати з допомогою утиліти irchijack, яка дозволяє тобі перехоплювати з’єднання

з irc сервером, творити що завгодно на сервері від імені цієї людини!

Використовується вона гранично просто: качаємо з c5.hakker.com/archives/, компілюємо і запускаємо з параметром у вигляді ника людини, з’єднання якого ми хочемо перехопити … А далі роби, що хочеш!

Хочеш читати ICQ повідомлення? Dug Song обіцяє в Незабаром додати в свій пакет dsniff утиліту msgsnarf, яка дозволить читати чужі ICQ-повідомлення і привати на IRC. Так що чекай> :).

Приколи c DNS

Як змусити комп’ютер сусіда повірити, що microsoft.com має твій IP? Дуже просто: качаємо з adm.freelsd.net/ADM/ набір утиліт ADMid-pkg.tgz, компілюємо і запускаємо:

. / ADMsniffID <інтерфейс> <бажаний IP> <потрібне ім'я хоста> <тип запису>

(Тип запису 1 = TYPE A (ім’я в IP) або 12 = TYPE PTR (IP в ім’я)). Ось так ми змусимо подумати комп’ютер Васі Пупкіна, що microsoft.com має IP адреса 192.168.6.66, коли він спробує запросити це ім’я.

./ADMsniffID eth0 192.168.6.66 microsoft.com 1

Підсумки

Підводячи підсумок, я хочу сказати, що, ІМХО, найефективнішою операційною системою для даного виду діяльності є Linux, в порівнянні з Windows, FreeBSD і OpenBSD. На жаль, я не можу порівнювати її з комерційними юнікс-клонами типу Solaris, AIX, UnixWare і т.д.

Linux дозволяє:

– Швидко змінювати IP адреса;

– Швидко змінювати MAC адресу;

– Відсилати пакети з нестандартною / незавершеною структурою (що потрібно для ДОС атак);

– Встановлювати бажаний зворотний MAC адресу у вихідних пакетах;

– Досить просто писати сніфери (все пакети можна ловити через RAW_SOCK). А під операційними системами * BSD, що використовують систему bpf (berkley packet filter), через RAW_SOCK можливо ловити всі пакети, окрім TCP, UDP і ICMP `їй восьмого типу (echo request).

Коротше, кукішь на БЗДЕ, що зробиш. Всякі розмови про те, що лінух – це UNIX для дітей, не зовсім коректні ;).

at last… let the wars begin!

ЕКСКЛЮЗИВ ВІД ЖУРНАЛУ – новий Х-реліз під назвою Bespredel, який ти можеш викачати з www.xakep.ru / articles / releases. Маючи цю штучку разом з libnetNT, хаос можна буде влаштовувати не тільки користуючись * nix `ом ;).

Головний міф адмінів локальних мереж, у яких багато грошей і мало мізків, такий, що “ніхто не зможе сніффать на світча”
(switch-hub).

Так ось це – повна маячня (майже)!

Термінологія:

MAC адреса – Ідентифікатор мережевої карти, даний їй виробником, який представляє 48 (6 байт) бітове число. На більшості карток MAC адресу фізично знаходиться в невеликий виступає микрухой, розташованої біля роз’ємів. Так що в випадках, коли мережевої здохла, а MAC адресу необхідно залишити колишній, – цю мікросхему можна безбоязно переставити в нову картку.

libnet – Бібліотека, що дозволяє досить просто генерувати пакети протоколів ARP / IP / TCP / UDP / ICMP / IGMP / RIP / OSPF. Бібліотека доступна для більшості UNIX-систем і також для WindowsNT/2000 (libnetNT – www.eeye.com, не зовсім дороблена версія)

libpcap – Бібліотека, створена для спрощеного написання програм перехоплення пакетів з мережного потоку. В даний час ця тулза входить в стандартну поставку більшості UNIX-клонів або доступна для них з пакетів (портів). Якщо ж ти так обламався і не здобув її, то можеш сміливо бігти на сайт www.tcpdump.org. Більшість снифферов написано з використанням libpcap (наприклад, tcpdump, dsniff, sniffit).

ifconfig – Стандартна програма в ОС UNIX, використовувана для конфігурації та зміни параметрів мережевих інтерфейсів.

ARP – Address Resolution Protocol. ARP використовується для визначення MAC адреси по IP адресою та навпаки. У сітці реально компи визначаються тільки по MAC адресам, і для того щоб з’єднатися з машиною, знаючи її IP, мережевої посилає в мережу пакет із запитом типу: “А у кого тут у нас IP-шник 192.168.0.1? “. Всі мовчать, на запит відповідає тільки 192.168.0.1 і повідомляє свій MAC адресу.

ARP-Таблиця. Щоб не засмічувати мережу незліченними ARP запитами на відповідність “IP -> MAC”, отримані раніше результати заносяться в спеціальну таблицю. Записи в цій таблиці бувають динамічними (часто оновлюються) і статичними, які не міняються ні за яких умов. Переглянути arp-таблицю можна командою arp-a.

Netmask – Маска підмережі. Це 48 бітне число, яке характеризує розмір сітки. Краще все це стане зрозуміло на такому прикладі: часто зустрічається маска 255.255.255.240 – означає, що в мережі знаходиться (або може перебувати) не більше ніж 16 компів. Як я це визначив? А ось як: ця ж маска в двійковій записи виглядає як 11111111.11111111.11111111.11110000. В Наприкінці бачимо чотири нуля, тому що в процесі розрахунків адрес маска інвертується, то у нас замість чотирьох нулів залишається чотири одиниці. 1111 це 16 в десятеричной системі. От і все ;). Щоб так сильно не морочитися, я можу порекомендувати прогу IPcalсulator (www.net3group.com/download.asp). Вона може розраховувати маски, броадкасти і іншу шняга.

Gateway / гейт (Шлюз). Якщо твій комп направляє пакет всередині локальної сітки, то тут все ясно. А що робити, якщо треба пульнути інфу в іншу мережу, в Інет, наприклад? А те, що потрібен шлюз, через який попрямує пакет у зовнішню Net.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*