Ты мастер взлома и шпионского софта, ты знаешь самые изощренные
дырки и эксплойты. Твой сосед подключен к другой локалке, но тебе так
хочется поснифать его траф, что зудит во всех местах сразу. Немного
разведки и затык: он юзает исключительно витую пару. «Как быть?» -
крутится у тебя в голове. Вот тут я собираюсь поведать тебе, что все
возможно в нашем мире. Для начала определимся с тем, что не будем лезть
в мельчайшие подробности стандарта IEEE Std 802.3. Этот стандарт о том
самом Ethernet, который тебе знаком по витухе, торчащей из всех щелей
твоего убежища. Зато уделим больше внимания возможностям незаметного
снятия данных с той самой витой пары, что вызывает хакерский зуд. Я
соседскую имею в виду. Используй эти возможности с умом и осторожностью.
Флешбэк о хорошем прошлом
Если бы ты решил воплотить в жизнь подобную затею лет так 10 назад,
то все было бы относительно просто, так как в большинстве случаев
использовался коаксиальный кабель. Его даже не нужно было резать -
достаточно было аккуратно добраться до центральной жилы и подключить
свой кабель параллельно: центр к центру, оплетка к оплетке – и вуаля,
можно тихо снифать траф, ну или не тихо, варианты имелись.
А сейчас у нас тотальное распространение TP (Twisted Pair – витая
пара). Замечу, что не единой витой парой живет сеть – помимо множества
ее видов есть еще и оптика, но ее мы рассматривать не будет из-за
сложности и дороговизны работы с ней.
Итак, у нас только один путь – разбираться с работой витой пары.
Железная теория витой пары
«Ну витая, что с нее взять?» - спросишь ты. А я с улыбкой достану
почти 20 тысяч страниц спецификаций и упомяну о паре десятков
дисциплин, требуемых для понимания этой заурядной витухи. Ну, попугал и
хватит. На самом деле все не так сложно, если уяснить основы.
Вся сетевая технология, которая окружает тебя, описана стандартами.
Витая пара не исключение. Полное название стандарта - IEEE 802.3
LAN/MAN CSMA/CD Access Method. Вообще, стандарт IEEE 802 очень
интересен и продуман. В интернете довольно много информации на эту
тему, но в чаще всего она англоязычная. Я постараюсь объяснить тебе
самое необходимое.
Стандарт под номером 802 включает в себя практически все сетевые
протоколы. К примеру, 802.11 – WiFi, 802.15.1 – Bluetooth, 802.16 –
WiMax. Нас же интересует 802.3 – Ethernet.
В основе стандарта лежит так называемая модель OSI. Каждый уровень отвечает за свое взаимодействие. Всего их семь:
- Прикладной уровень (Application layer) – доступ к сетевым службам
- Уровень представления (Presentation layer) – представление и кодирование данных
- Сеансовый уровень (Session layer) – управление сеансами связи
- Транспортный уровень (Transport layer) – безопасное и надежное соединение «точка-точка»
- Сетевой уровень (Network layer) – определение пути и IP (логическая адресация)
- Канальный уровень (Data Link layer) – физическая адресация
- Физический уровень (Physical layer) – кабель, сигналы, бинарная передача
Конечно, это чисто теоретическое представление модели, и во многих
пунктах она реализована иначе, но для наглядности ее вполне достаточно.
Ее ругают, говорят о ее неудачности, несостоятельности и громоздкости.
Но именно на нее ориентируются все разработчики и производители
сетевого оборудования. Нас интересует седьмой уровень – физический. Вот
иллюстрация применительно к Ethernet:
На диаграмме представлена модель OSI и нижние уровни в стандарте
802.3 Канальный уровень состоит из двух частей: МАС (сноска в
глоссарий) клиента, который обеспечивает доступ к нижним уровням, и
следующий за ним Media Access Control, который отвечает за доступ к
физическому уровню. В самом низу находится физически уровень, в каждом
устройстве он может быть выполнен по-своему, но сверху у него
обязательно будет привязка к MAC, а снизу - физический коннект (в нашем
случае витая пара).
На схеме показан физический уровень (PHY), отвечающий за
согласование сетевой модели с физическим каналом, который может быть
как витой парой, так и оптоволокном или другим носителем. Наглядно
можно увидеть работу этой схемы в стандарте 10BASE5. Этот стандарт -
одна из первых реализаций 802.3. В качестве физического носителя здесь
использовался коаксиальный кабель толщиной 9 мм. Его оболочка была
выполнена из огнестойкого пластика желтого цвета, отчего его называли
еще «желтым Ethernet’ом». Так вот примечательно, что сетевая карта была
двухкомпонентная: первая ее часть устанавливалась на законное место в
системе, вторая вешалась на сетевой кабель специальным устройством, в
котором сигналы с кабеля преобразовывались в формат, понятный первой
части сетевой карты. Фактически вторая часть и была воплощением
физического уровня – впоследствии ее можно было заменять другими
интерфейсами. Желтый кабель практически не применяется (если найдешь
место, где этот раритет трудится, сообщи мне, плиз), но идея о
разделении сетевого устройства по функциям еще живет, например, в
высокоскоростных сетевых коммутаторах, где на каждый порт можно
поставить свою плату, отвечающую за работу с каким-то одним носителем
(оптика и другие).
Кстати, присмотрись к этому девайсу, висящему на желтом кабеле.
Называется он в народе «трезубцем» или «вампирчиком», поскольку
прокусывает кабель так, что средний шип контактирует с центральной
жилой коаксиального кабеля, а два боковых шипа входят в контакт с
экраном основного кабеля. Заметь, это фактически железный снифер, но, к
сожалению, только для этого типа сети.
Ali@gwc.org.uk
@wikipedia.org
Приемопередающий модуль для «желтого Ethernet’a»
Вернемся к схеме, где показан PHY. Проведя аналогию с «желтым
Ethenet’ом», можно сказать, что LINK – это сам коаксиальный кабель.
Уровень, зависящий от среды передачи (Physical medium dependent layer),
к каналу подключен через MDI. Кстати, коробочка с трезубцем как раз и
содержит в себе этот уровень. Далее уже по цифровому каналу он
подключен к уровню, не зависящему от среды передачи. На диаграмме этому
уровню соответствует MII. Сейчас же MII является стандартом для
подключения микросхем PHY к чипу (это может быть как чипсет, так и
полноценный проц). Кстати, не ищи MII на современных сетевухах – там
уже давно все интегрировали в один чип. «Но где же тут витая пара?» -
спросишь ты. «Правильный вопрос», - отвечу я и продолжу. В стандарте
есть множество оговорок на случай подключения витой пары, но я исхожу
из того, что ты живешь в обычном доме с обычными провайдерами, которые
не станут проводить в квартиры гигабитную сеть. В классическом
варианте, к которому привык ты, подключение полностью соответствует
10-мегабитному стандарту:
Соединение двух устройств витой парой, справедливо для 10- и 100-мегабитного канала
Для связи используются две витые пары, каждая работает только в одну
сторону. Для полноценной передачи требуются 2 канала – туда и обратно.
В технической литературе такие каналы называются TX и RX – это
аббревиатуры от передачи (transmit) и приема (receive). При подключении
двумя парами, каждая обозначается как передающая (TX) или принимающая
(RX). Какая именно из них выполняет свои функции, зависит от типа
кабеля (точнее, от того, как его обжать): прямого и кросс-овер. Первый
тип используется для соединения компьютера со свитчем/хабом, второй -
для соединения двух компьютеров напрямую.
Концы TX- и RX-пар обжимаются разъемами по специальной схеме,
которую несложно найти в инете. Думаю, тебе эта схема давно знакома.
Кстати, MDI зачастую и обозначает физический разъем (MDI-разъем для
витой пары и есть всем известный RJ-45).
Но не подумай, что по проводам битики перекачивают как есть. И тут
не все так просто. Главная особенность витой пары заключается в том,
что сигнал передается дифференциальный, то есть разностный. Другими
словами, он сформирован таким образом, что суммарное напряжение между
проводами пары около нуля. Для примера - на одном проводе 2,5 В, тогда
на другом однозначно -2,5 В, а сумма равна нулю. При таком способе
передачи проводник сигнала (в нашем случае витая пара) излучает сигнал
во внешнюю среду намного меньше и это излучение уловить тяжелее. Также
он довольно устойчив к внешним помехам, так как их легко отфильтровать
и воспринимать только сигналы, в сумме дающие только 0.
Каждый бит передается сменой сигнала с одного уровня на другой;
такое кодирование известно как манчестерский код. При таком кодировании
бит фиксируется при переходе от одного логического уровня в другой.
Единица - при переходе с нижнего логического уровня на верхний, ноль -
наоборот. В нашем случае с витой парой каждый бит формируется сменой
полярности в паре. Например, на проводе TX+ было 2,5 В, а на TX- - -2,5
В, это соответствует верхнему логическому уровню. При смене на нижний
(TX+=-2,5; TX-=2,5) передали ноль. TX+ - передающая пара, положительный
провод, а TX- - передающая пара, отрицательный провод. Плюс и минус
введены, чтобы различать провода при их подключении. Если перепутать их
- это не фатально, но в большинстве случаев сигнал будет принят
неправильно.
Вот иллюстрация манчестерского кода:
В чистом виде такой код практически не используют из-за сложности
передачи большого количества нулей и единиц. На практике же применяют
дополнительное кодирование, когда группу битов кодируют с избытком,
подмешивая нули и единицы. Такой способ позволяет не только нормально
поддерживать передачу сигнала, но и проверять его целостность (смотри
информацию на тему 8b/10b encoding).
С ножом и крокодилами идем к соседскому щитку
Ну как? Не отказался еще от своей идеи? Небось, голова уже пухнет (у
литреда точно пухнет – примечание литреда). Ну ничего, это только
вначале – со временем привыкнешь. Придется. Я поведал тебе только
теорию, не касаясь практики. Хотя все на самом деле намного проще –
нынешняя промышленность дошла то такой унификации, что можно позволить
делать многие вещи, даже не задумываясь о побочных эффектах и
недостатках, которые непременно бы вылезли пару лет назад.
Так вот теперь перейдем к практике. Для успешного снятия сигнала нам
потребуется хороший нож (вполне подойдет обычный канцелярский -
примечание dlinyj), два крокодила с острыми зубцами, обжатая с одного
конца витая пара, ноутбук с сетевой картой и софтом для снифинга. Я
юзал SoftPerfect Network Protocol Analyzer – в течение 30 дней будет
работать без проблем, хотя есть и бесплатные сниферы (пользователи
никсов правят балом). Берем обжатую витую пару и освобождаем необжатый
конец от внешней изоляции. Рекомендую взять провод длиной не менее двух
метров. В ходе экспериментов я пользовался полуметровым обрубком, но
его даже для опытов оказалось мало. Здесь тебе нужно найти RX (входящий
сигнал) пару (третий и шестой контакты у разъема твоей сетевухи). Если
ты обжимал по всем правилам, то крокодилы нужно цеплять либо к
оранжевой (оранжево-белой) (схема A), либо к зеленой (зелено-белой)
паре (схема B). Инструкцию по обжиму легко нагуглить. Допустим, у тебя
обжато в соответствии со схемой А, тогда получается, что крокодилы
висят на оранжевом и оранжево-белом проводах.
Теперь с таким своеобразным проводом и лэптопом идем к месту врезки.
Не забудь острый ножик - вдруг отбиваться придется (шутка). Аккуратно
сними внешнюю изоляцию с провода, не повредив жилу. Это можно сделать
продольным надрезом. Для этого изогни провод и сделай совершенно
неглубокий надрез длиной сантиметров 5-10. При этом старайся не
зацепить и тем более не повредить и не перемкнуть пары внутри провода.
Вынув витые пары из надреза, необходимо их развить, причем не все, а
наиболее вероятные, например оранжевую.
Далее тебе придется немного подумать – ведь нужен исходящий канал от
человека, а не от провайдера, поскольку именно он отсылает пароли, а не
они идут к нему (хотя всякое бывает). Надеяться на прямые руки наших
монтажников не стоит, поэтому надо попробовать 2 варианта: оранжевую и
зеленую пару (в особо запущенных случаях цвета могут быть совсем
перепутаны). Схема присоединения крокодилов проста: плюс к плюсу, минус
к минусу. То есть одноцветный провод к одноцветному, полосатый к
полосатому. Все это также придется делать с оглядкой на инструкцию по
обжиму: положительный провод - полосатый, отрицательный - однотонный.
Если монтажники не соблюдали инструкцию, то определить, какой из них
какой, без сложной и громоздкой аппаратуры не представляется возможным
– только перебор. Не забывай об усилии при зажиме крокодилами, иначе
они не прокусят изоляцию провода и ты будешь еще долго маяться в
поисках неисправности. Если крокодилы никак не хотят прокусывать
провод, то можешь срезать вдоль него несколько миллиметров изоляции и
подцепить их уже к уже голой меди.
Найти исходящий канал можно по пакетам, передаваемым от юзера к
провайдеру. Особенность их такова, что адресованы они обычно
вышестоящим коммутаторам (IP пункта назначения заканчивается на
единицу, например 10.2.14.1) или прямиком в инет, ну а в отправителе
стоит один и тот же IP.
Ну что, хорошо стоять с ноутом у разрезанной чужой витой пары? Сосед
еще не вышел? Если тебя это не заботит, то продолжай снифать и тебе
обязательно повезет, ведь большинство прог передает пароли в открытом
виде. От тебя требуется только настроить фильтр в снифере. А вот если
тебя не устраивает торчать с ноутом возле чужой двери, то можешь
запихнуть его в близлежащую нычку, запитать и поднять Wi-Fi канал, а
дамп принимать на другом ноуте. Проблема Wi-Fi в том, что весь дамп ты
передать не сможешь, даже при идеальной связи – пропускная способность
беспроводного канала в разы меньше. Но есть выход – настроить снифер на
выявление лишь нужных тебе пакетов (например, аськи или ирки) и
передавать только их – в таком случае можно обойтись не только Wi-Fi,
но даже GPRS. Это как вариант. Товарищ dlinyj загорелся идей
использования Wi-Fi роутера, но поспешу его огорчить – он (роутер) не
будет передавать дамп, потому что это фактически управляемый свитч.
Поясню: и роутеры, и свитчи анализируют данные и передают адресованные
пакеты исключительно их адресатам. Другой вариант – прокинуть витой
провод с крокодилами до более спокойного места, хотя такой способ
врезки с длинным проводом может принести разве что только мусор в
дампе, ну и постоянно падающий коннект у соседа – тут поможет только
эксперимент. Вышеописанную инструкцию я опробовал сам на своем брате,
выудив его пароль к аське. Хоть мы и пользуемся одним инетом и
находимся в одной квартире, его комп запаролен и подключен к роутеру.
Ставить кейлоггер было неспортивно, а снифать сетку из-за роутра -
бесполезно, поэтому я и использовал метод ножа и крокодила.
Потенциальные способы, стоящие денег и/или больших усилий
Проблемой перехвата информации в первую очередь озадачиваются те,
кому это позарез нужно. А если позарез нужно, то и в ресурсах
недостатка нету. Вот такие люди и снабжают в дальнейшем своими
разработками спецслужбы всего мира, ну или сами юзают - кто их знает.
До меня доходят только слухи и обрывки из публичных источников. Сам
понимаешь, такой информацией никто делиться добровольно не станет. Но я
не рассказать не могу, так как эти зарисовки девайсов стоят того, чтобы
быть озвученными. Предупреждаю, это могут быть домыслы и плоды моего
(или чьего-то) воображения.
Начну с простого, это бесконтактный съем данных с витой пары –
девайс был выставлен на CeBIT 2007. Но сам я его в руках не держал и
работоспособность не проверял. Могу лишь предположить, что
чувствительным элементом является индуктивность или датчик Холла
(датчик Холла – полупроводниковый элемент, чувствительный к магнитному
полю). Оба варианта могут быть реализованы в железе.
Следующий способ – это сканирование и последующее выявление сигнала
Ethernet по побочным электромагнитным излучениям. Недавно по сети
прокатилась волна научных (и не очень) публикаций на тему перехвата
видеоизображения с ЖК-экранов ноутбуков. Особенность видеосигнала,
передаваемого от видеочипа ноута к ЖК-панели, в том, что он тоже
дифференциальный (как у витой пары). Видео передается сразу по
нескольким таким каналам. А перехватить и успешно декодировать этот
видеосигнал на приличном расстоянии удалось даже лучше, чем в
эксперименте с ЭЛТ-мониторами (sic!). Так что, вполне вероятно, где-то
в строго засекреченной каморке лежит девайс и… слушает весь Ethernet в
округе :).
И, наконец, фактически тот же самый метод с прямой врезкой в кабель,
но вместо ноута используется одноплатный компьютер с Wi-Fi картой. Сам
по себе одноплатный компьютер является уменьшенным и переработанным
вариантом обычного и предназначен для нужд промышленности, скажем, для
управления станками или сбором и обработкой информации с датчиков
(именно это я и предлагаю, только собирать он будет дамп из сети).
Такие компьютеры могут быть как х86-совместимыми, выполненными на 386-м
и более мощных процах, так и на других процессорных архитектурах,
например RISC, ARM или MIPS. И я уверен, что если у тебя есть роутер,
то в нем стоит подобный комп, только софт его заточен под управление
сетью. Если тебе удастся поставить на него Линукс или он уже
установлен, то настроить Линукс на сниф и анализ дампа будет легко. А
запитать его зачастую можно даже от 12-В аккумулятора.
Все подключили, запитали и спрятали в естественных нычках (нишах,
шкафчиках, щитках, темном углу под потолком и т.д.). А дамп сливается
по радиоканалу. Просто и сердито, а главное - не нужно лично
присутствовать на месте. Если уж совсем помечтать, то можно дать
задание компьютеру фильтровать пакеты и даже выискивать пароли. А
передать пару строчек можно и по GPRS, например, отправив
соответствующее письмо на анонимный ящик.
Итог
Ты теперь представляешь, как работает Ethernet, на каких принципах
построен и с чем его едят. Конечно, в рамках журнальной статьи
невозможно раскрыть все тонкости, но даже этой информации тебе хватит,
чтобы начать эксперименты, а может быть даже, ловить реальные пакеты в
чужой Ethernet-сети. Возможно, прочитанное подтолкнет тебя к
самостоятельным поискам в заданном направлении.
Думай, товарищ, и действуй осторожно. А если надумаешь что-нибудь
дельное, не молчи, а сообщи общественности, ну или свяжись со мной,
будет, что обсудить вместе.
Warning!
Информация предоставлена исключительно в целях ознакомления. Ни
авторы, ни редакция не несут ответственности за последствия
использования материалов этой статьи.
|