Home Материалы сайта Большой Брат следит за тобой: как палят подмену MAC в локалке

Сегодня мы поговорим с вами на тему локального хака. Как это делается вы уже, наверное, знаете, вернее слышали, но попробовать не решались. И правильно делали! Почему? Об этом как раз я и расскажу в этой статье.
Знаете, еще до того, как я стал админом и начал с вами бороться, я просто глумился над своими собратьями по сетке. Что я делал? ;) 

Ну, вариант нумбер ван!

В сети очень распространены FTP-сервера. Догадываетесь? Нет, не правильно! Я
написал мини прокси на Дельфях и поменял иконку приложения на иконку обычной папки, обозвал приложение «XXX.exe»и выложил его у себя на FTP. Эффект был потрясающий! На мыло валилось огромное кол-во IP-шников, на которых был установлен мой прокси. Да я и сам не ожидал, что это прокатит, но… Далее я прикрутил к этому делу мини
FTP и на 21 порту в моем распоряжении оказались их логические диски. 

Вариант нумбер ту!

Социальная инженерия рулит! Огромное количество
людей, не знающих что такое Remote Administrator, попалось на идею тех поддержки. Как только в локальном IRC я видел, что кто-то просит о помощи… Далее можно не рассказывать, вы и сами такое можете делать. 

А теперь, вариант номер 3. Он же заключительный и самый важный.

Проанализировав итоги прошлой статьи (Маскируемся или как не платить деньги админу за лишний комп в локалке) я пришел к выводу, что на сегодняшний день самая актуальная для вас проблема это подмена МАС. Как это делать вы и сами знаете, но вот если пропалят
– будет плохо. Да, пропалят! Еще как пропалят! 

Погружаемся…

Немного теории для начала. Все вы знаете, что стек протоколов
TCP/IP разбит условно на 5 уровней: уровень приложений
(5), транспортный (4), сетевой (3), канальный (2) и, наконец, уровень
физический – оборудования (1). Так вот, товарищи, довожу до вашего сведения, что протокол, рассматриваемый в этой статье, работает между 3-м и 2-м уровнями. Дословно ARP (Address Resolution Protocol) переводится на русский, как Протокол Разрешения Адресов и предназначен для вычисления MAC адреса компа по известному IP адресу. Фактически, данный протокол не вписывается в рамки модели
TCP/IP. Все дело в том, что данные для ARP и его собрата RARP (о нем я расскажу далее) распространяются в дейтаграмме, являющейся частью
сетевого уровня (3), однако коды, которые указывают, что дейтаграмма содержит данные именно ARP или RARP, находятся в поле типа кадра Ethernet, входящего в уровень сетевого интерфейса (2). Сложно, не правда ли? Ничего, еще и не такое придется услышать. Поехали дальше. 

Как происходит передача данных от одного компа к другому? Итак, пропустим пока верхние уровни и перейдем сразу к 3-му. Здесь в заголовок пакета (в случае TCP) или дейтаграммы (для UDP) вписываются номера IP адресов и портов, куда пакет должен быть доставлен и откуда он идет. Далее пакет попадает на 2 уровень. Тут то и начинается все самое интересное. В пределах сегмента, т.е. от твоего компа до ближайшего роутера (если он есть, конечно), данные передаются от одного МАС адреса к другому. Как понять, есть ли искомый комп в сегменте или его нет? Для этого существует широковещательный ARP-запрос, ARP-кэш и ARP-таблица (обратите внимание на то, что последние 2 понятия это абсолютно разные вещи, далее вы поймете почему). Если твой компьютер отправляет пакет, например, твоему лучшему другу, находящемуся вместе с тобой в одной подсетке, то для начала он исследует ARP-таблицу. Если там уже есть запись о твоем друге, то все хорошо, данные о MAC записываются в заголовок пакета, и он благополучно уходит. Если же данных там нет, то компьютер обращается к ARP-кэшу. И только в крайнем случае, когда данные нигде не найдены, выполняется широковещательный ARP-запрос. Для особых любознательных: этот запрос уходит на MAC ff:ff:ff:ff:ff:ff. То есть он адресован всем компам подсети и содержит информацию, переводимую на человеческий язык, как: «У кого имя moy_drug_pc?». Коли ответ приходит, его заносят в кэш и отправляют пакет, коли нет
– генерируется сабж об ошибке. Итак, все становится уже значительно проще… 

Для обратной штуки как раз и нужен RARP (Reverse ARP) – Обратный ARP. Нужен он, как вы уже догадались, для определения IP по известному МАС. Историческое его применение – бездисковые терминалки, где нет возможности хранить конфигурационные файлы. 

А нафига оно все нада?

Ох… ;) Хороший вопрос. Ну, начнем с самого интересного. Ты знаешь в чем отличие
хаба от свича? Для тех, кто все еще не знает:
хаб отправляет пришедший пакет на все порты, кроме того, с которого этот пакет пришел.
Свич более интеллектуальная штука, он может запоминать в специальную таблицу соответствия МАС-порт. Тем самым он снижает нагрузку на сеть и не дает нам, паганцам, снифать трафик. Ничего… Что бы там ни стояло, мы всегда можем заняться атаками а-ля ARP-spoofing, ARP-poisoning (о них журнал уже неоднократно писал, так что повторяться я не буду). Есть еще такая штука, как подмена МАС. На ней и остановимся поподробнее. Заядлые сетевики уже давно знают, что админ всегда в курсе, кто меняет МАС.
Как? А вот сейчас и расскажу.

Как ЭТО делают админы

Эти 2 протокола очень важны борцам с вами, товарищи. Ибо они и помогают блокировать вам доступ в сеть и дают админам информацию о том, кто и когда был в сети. Все дело в том, что если ты, например, не заплатил админу в нужный срок, он создает на сетевухе роутера алиас на твой IP. Тем самым
порождается конфликт между тобой и роутером (твой IP принадлежит после этого МАСу сетевухи роутера). Тебя выкидывает из сетки, а восстановиться ты уже не можешь, т.к. твой IP уже кем-то занят. Поменять МАС и подключиться через IP ничего не знающего соседа? Хорошее решение, но тут надо быть осторожнее. Тем, кто хоть раз видел статистику по ARP кэшу в
*nix известно, что там обычно кроме IP и MAC’a можно получить и имя компьютера. Обратите на это внимание! Знаю админов, которые ловили вас на том, что вы забывали изменить имя своего компа на имя компа жертвы, за что, конечно, и были наказаны. Так ОТКУДА админы знают о подмене? Все дело опять же в этом ARP. Этот нехороший протокол позволяет собрать статистику по сегменту сети (я про табличку соответствия МАС-IP-имя_компа). Умные программки (назовем их ARP анализаторы), стоящие на роутерах админа, секут каждый ком в сети основываясь на этих таблицах. Если софтина поумнее, то она записывает в табличку еще время коннекта и дисконнекта по которым тоже несложно посмотреть, кого не было в сети пока у жертвы деньги на счету закончились. Время это обычно берется из логов биллинговой системы, которой админ $$$ считает. Сечет эта софтина и конфликты IP адресов,
ситуации, когда ты решил сменить МАС, пока жертва была еще в сети. В общем, вариантов туча. Мой знакомый даже и без этой хитрой системы догадался посмотреть в логи локального irc сервера, куда обычно коннектится автоматом мирка всех клиентов сети. Чувак просто забыл сменить ник и пропалился на том, что не со своего обычного IP подключился. 

Welcome to hell, товарищи…

Не хочу вас пугать, но если вы думаете, что админ лох (простите, не хотел), что он не может написать эту софтину или же у него нет бабла на найм программистов (в чем я очень сильно сомневаюсь), то вы ошибаетесь. И вот вам тому доказательство. Стандартный сниффер tcpdump может скинуть весь ARP трафик в файл, который будет обработан простейшим perl скриптом (уж этим языком все админы владеют). Данные полетят в мускул (mysql) и проведется несложный анализ, о котором упоминалось выше… Как видите, не нужно особо напрягаться, чтобы вас вычислить.
А еще есть мазохисты, которые готовы привязывать любой МАС в сегменте к определенному интерфейсу программируемого свича. Тогда все твои попытки сменить МАС просто пойдут псу под хвост, да еще и по голове получишь.

The END… 

Как ты узнал, ARP нужен не только для пакости, но и для отлова пакостников. Кроме этого его можно использовать как некоторое средство повышения безопасности твоего ПК. Как? 

1. Отключаешь прием широковещательных запросов и вообще всякое реагирование на ARP (это очень просто реализовано в *nix, а про винду не знаю, не было необходимости как-то…).

2. Очищаешь ARP таблицу и кэш (это уже везде приемлемо).

3. Прописываешь в ARP-таблицу только те МАС-и, которые имеют разрешение на общение с тобой по сети (в пределах сегмента, естественно, ибо далее они никому не нужны).

Это не даст твоему компу отвечать на пакеты не прописанных пользователей. Удобно. Не правда ли?

P.S. Менять МАС я вам настоятельно не рекомендую. Времена, когда админы были неграмотны, закончились. Теперь вы, я надеюсь, понимаете, зачем я привел вам пару примеров альтернативного хака. Сразу оговорюсь, что и они просекаются в 2 счета. Как? Об этом речь пойдет в другой раз. А сейчас, пейте пиво и честно платите за локалку… Аривидерчи!