Доброго времени суток, уважабэ. Надеюсь веткой не ошибся. Предисловие Тема тут актуальна, насколько я смотрю, потому предлагаю обсудить некий универсальный вариант, который решил бы много проблем сразу. В сети достаточно много предложений на эту тему, но одного стабильного и универсального варианта я пока не встречал, а потому решил сам пораскинуть мудями над кафедрой) Итак, суть предложения: 1. Устройство предназначено для пассивного перехвата и дешифровки трафика внутри Ethernet сети на витой паре. 2. Устройство используется для подключения без разрыва на физическом уровне, т.е. Т-образное подключение, например "крокодилами" на пару, как следствие - практически не может быть обнаружено на канальном уровне -> программно обнаружить нельзя. 3. Как следствие из всего сказанного выше - это абсолютно скрытый перехват, который можно обнаружить только при помощи специального оборудования, либо физически обнаружив устройство перехвата. Часть первая: теория Суть предложения достаточно проста: 1. В кабеле для передачи и приема используется только 2 пары - в зависимости от кроссировки кабеля это оранжевая (1 и 2 контакты коннектора) для отправки пакетов и зеленая (3 и 6 контакты) для приема. Мы вешаем "крокодилы" на них соответственно. 2. Каждую пару мы выводим на отдельный интерфейс, на 1 и 2 контакты, т.е. слушающую пару. Тем самым мы получаем прослушку исходящего и входящего трафика соответственно. В принципе уже на данном этапе можно собирать дамп и его анализировать, но на мой взгляд решение еще сырое. 3. Эти 2 интерфейса мы объединяем посредством Bonding, например (для Linux) или teaming (для Win), вследствие чего получаем единый виртуальный интерфейс, на котором у нас есть только (!) входящие пакеты, на которые мы уже можем натравить что-то вроде Wireshark. Часть вторая: упаковка 1. Иметь на месте постоянно включенный ноут - весьма неудобно. А потому необходима какая-то аьлтернатива ноуту – я рассматривал в этом качестве дешевый роутер, например D-Link с прошивкой DD-WRT, которая представляет из себя сильно урезаный Linux. Это позволит решить сразу все задачи – возможность слушать несколько интерфейсов, возможность объединения их на уровне ядра, возможность записи дампа на съемный flash-диск, а так же, что важно, возможность удаленного подключения с целью снятия дампа. При этом есть возможность фильтрации трафика до его записи в дамп, например если нам нужен только один протокол, то мы можем настроить запись и прослушку только этого протокола/порта, а не всего, что идет мимо. Есть предположение, что можно реализовать и «выжимку», т.е. запись готовых логинов/паролей, а не трафика целиком, но подозреваю, что аппаратных мощностей будет недостаточно. 2. Вопрос питания этого устройства. Учитывая, что девайс должен работать достаточно автономно, например на чердаке, в подвале, в шкафу, на подвесном потолке, далеко не всегда есть возможность организовать для него постоянное питание от сети. Как следствие – встает вопрос о автономном питании. Большинство роутеров марки D-Link работает от источников с рабочим напряжением 5 вольт и током от 1,2 до 2,5 ампер. Подозреваю, что достаточно и меньших токов, но выяснить это можно только тестовым путем – на днях займусь этим вопросом. Я исхожу из того, что устройство может быть нужно включенным в течение 1-2-5 денй запросто, но реализовать автономное питание от химического источника (например аккумулятора) при таких энергозатратах и компактном размере – не реально. Буду рад предложениям в этой области. На данный момент у меня есть 2 работающих прототипа, с которыми я и произвожу все эксперименты, актуальным остается лишь вопрос питания - чуть позже выложу фото-отчет + описание действий и исходники. ЗЫ: Кстати, если у кого-то будут идеи по замене связки 2lan+bonding или же просто более легкой замене бондинга - буду крайне признателен. Дополнения, предложения и конструктивная критика приветствуются.
Сразу задам несколько вопросов по теме (тема имхо интересная): 1. Было ли проведено предварительное гугление по теме, ведь такая идея наверняка приходила во многие головы и до сегодняшнего дня? 2. Подключение к физической линии "крокодилами" может негативно сказаться на согласовании линии, и как следствие, при длине кабеля более критической связь работать перестанет, что вызовет нездоровый интерес хозяина кабеля и затем коробку незамедлительно найдут. Возможно стоит рассмотреть индуктивный вариант подключения. 3. При использовании готового роутера в качестве тупо приемника чужих пакетов возможно (не уверен) не захочет корректно работать его MAC (Media Access Controller). Скорее всего придется делать свою реализацию двойной цепочки "входной трансформатор -> PHY -> свой MAC на FPGA", хотя можно попробовать и на готовом.
Отвечаю по пунктам: 1. Разумеется, внимательно изучил выдачу гугла на эту тему. Информации много, реализаций тоже достаточно, но все найденные решения - сырые и сделаны по одной модели, с одинаковыми недостатками. Так что работаю над собственным. 2. Что касается подключения - протяженность "последней мили" редко превышает 100-150 метров, хотя бывают и исключения. Внимательно изучив 802.1х пришел к выводу, что независимо от расстояний при подключении "крокодилами" на активный (!) интерфейс проблем быть не должно. Изучал возможность и индуктивного снятия, но т.к. опять же стандарт 802.1х подразумевает манчестерский код, то снятие с "закрытого" кабеля крайне затруднительно, т.к. боковые наводки крайне невелики + идентифицировать их из "пучка" на данный момент мне не представляется возможным. Единственный реалистичный вариант - вскрывать кабель, разводить жилы, делать экран каждой и снимать с каждого кабеля отдельно. Но учитывая, что это потребует дополнительного оборудования, а следовательно энергопотребления - нецелесообразно, т.к. при этом теряется автономность, либо резко (на порядок!) сокращается время автономной работы. А потому идею индуктивного снятия сигнала решил пока отложить до лучших времен. 3. Сперва у меня тоже были сомнения на этот счет, но как показала практика - напрасные, т.к. формат единый и достаточно поставить драйвер интерфейса в неразборчивый режим, что реализуется легко. Моя модель была мной успешно реализована на базе D-Link DIR-400 с WRT прошивкой = Linux. Девайс ловил все пакеты, tcpdump их фильтровал и писал в дамп на припаянной и смонтированной флешке. Теперь по развитию: На данный момент использование аппаратной базы от D-Link себя исчерпало и признанно мной нерациональным, т.к. стандартное питание устр-ва = 5В и ток от 1,5 до 2,5А, т.е. энергопотребление весьма немалое, что определяет либо постоянное питание, либо огромный танковый аккумулятор)), иначе работа будет сильно ограничена по времени. Взамен я решил остановиться на Ubiquiti PicoStation 2 - это устройство изначально имеет 32MB SDRAM и 8MB Flash, что позволяет залить на него WRT или собственную сборку, но при этом его максимальная мощность всего 4Вт, к тому же питается изначально по PoE, а потому очень большой разброс по рабочему напряжению - 15-24В, что весьма важно при работе от хим. источника. На данный момент экспериментирую с прошивкой - делаю свою сборку, которая будет иметь минимальный вес, только необходимый функционал, а следовательно минимальную нагрузку на CPU и энергопотребление. Так же остается важной возможность монтажа дополнительной Flash памяти на данный девайс - схем его я пока найти не смог, так что буду признателен, если кто-то поделится. Как только будут результаты - выложу фото-отчет) ЗЫ: Хотел бы добавить, что если тема для кого-то кроме меня актуальна - прошу как-то это показать в теме. Спасибо.
Что же, подпишусь, идея интересная, у меня есть разные ARM-железки под линуксом, тоже можно попробовать перевести их в режим сниффера, заодно и потребление померить. По поводу установки доп. памяти с Ubiquiti PicoStation я не знаком, есть ли у ней USB host? Если разъем не выведен надо посмотреть что там за проц и поискать как следует, возможно есть тестпоинты USB на плате. Туда и повесить флешку. Еще из первого поста не совсем понятно зачем делать bonding двум интерфейсам? Можно же заставить tcpdump читать с обоих одновременно (подразумевается что железка должна быть с двумя Ethernet-портами каждый со своим MAC, а не со свитч-чипом).
Был бы хост - делать было бы нечего) Завтра планирую забрать железку со склада и расковырять - там будет понятно. Хреновина собрана на Atheros, насколько я смог понять, так что есть вероятность, что будут тестпоинты или сервисный порт, в противном случае - думаю над тем, чтоб заменить родную флешку с контроллером. ЗЫ: Процессор Atheros MIPS 4KC, 180MHz
Посмотрел характеристики PicoStation - там анонсируется только один Ethernet порт. Тогда не понятно чем будет приниматься поток данных по второй паре, я так понимаю что для этого нужен второй порт со своим отдельным MAC, не так ли?
Тогда еще пара идей: В качестве платформы можно использовать любой single board computer с двумя полноценными ethernet (или роутер поддерживаемый OpenWRT, у роутера по любому будет 2 полноценных MAC), при наличии перспективы автономного питания базовую плату выбирать по потреблению. К сожалению, платы с двумя Ethernet нашпигованы всякими лишними прибамбасами, что тащит за собой размер и опять же потребление. Поэтому появилась идея подключить к однопортовой плате USB-Ethernet адаптер (интересно а такие бывают в природе??? и поддерживают ли Promiscuous mode???) или можно воткнуть Managed свитч в _разрыв_ слушаемой линии (что уже не здорово) и отмиррорить себе нужный порт. Managed свитчей менее чем на 8 портов я не встречал "вживую" поэтому будем считать эту идею мертвой. Кстати мне очень приглянулись платы Raspberry Pi (http://www.raspberrypi.org), особенно размером, ценой и потреблением (модель А без Ethernet-порта просит 300 мА по 5В, модель В - 700 мА по 5В). Для беспалевного слива накопленных данных можно подключить USB Wi-Fi адаптер
Насчет USB-Ethernet да, есть очень даже мелких размеров, кстати. Хорошая идея! Если завтра обнаружу возможность USB в устройстве - можно попробовать. Но тогда под вопросом Flash. Насчет свича в разрыв - идея боян, +managed switch только многопортовый, все верно. Да и атака тогда становится ближе к MitM. Насчет плат - вчера думал, но пока не проработал. Сейчас посмотрю приведенные тобой примеры, спасибо. ЗЫ: Посмотрел. Офигенная вещь! Но не продается...
Идея интересная. Но мне кажется не очень вкусным то что придется бегать за флешкой. Скорее всего если устройство спалят то и Вас подождут возле него. Да и актуальность данных может быть считанные минуты. Как насчет того что бы подкинуть к нему GPRS модем. Ну или передавать через туже сеть от имени ПК жертвы
Вы не внимательно ознакомились с тредом) В данном случае flash память рассматривается исключительно как место хранения дампа, т.к. на встроенные 8Мб будет записана ОС, и даже если останется 3-4Мб - этого слишком мало на дамп. А изымать дамп с девайса предполагается посредством WiFi, потому и платформа изначально выбиралась на оутерном железе + NIX-like система. В поисках платформы натолкнулся на проект Freeduino, единственное, что меня смущает - ATmega2560 = 8 бит на RISC архитектуре. В принципе можно собрать NIX под него, но пока вопрос скорости работы при этом остается открытым. Есть у кого-то опыт в использовании этой платформы?
AVR не годится для линукса, у него нет MMU (memory management unit) и чисто теоретически на нем можно запустить только ucLinux с плоской моделью памяти (и то я не уверен что есть порт ucLinux под 8-бит архитектуру). Из ATMEL я могу порекомендовать AT91RM9200, это 200МГц ARM платформа с MMU и богатой периферией, под этот проц наработано куча девкитов и есть драйвера практически под всё.
Таким образом мы приходим к полностью самостоятельному решению - от разработки железа до паяльника и системного программирования...) По ходу пьесы удалось выяснить, что Ubiquiti PicoStation2HP собран на чипе Atheros AR2313 SOC, модульную спецификацию и схему на который я пока найти ни как не могу. Так же, попутно, обнаружилось очень похожее устройство Senao eoc 5610, которое при примерно тех же ТТХ имеет на борту помимо Atheros AR2313 еще и AR5112, который крайне распространен. Так же, насколько я понимаю, на AR2313 построен Bullet, NanoStation, PowerStation, и много мало распространенных девайсов других производителей. Остается вопросом - есть ли в AR2313 поддержка USB? Насколько я смог понять на данный момент из спецификаций, найденных мной - нет, только FLASH и SDRAM. UP: Нашел спецификацию, на Atheros AR2313 нет поддержки USB UP2: На всех MIPS процессорах есть Serial Port, в т.ч. Atheros AR2313 Хо-хо!)) Есть весьма схожий девайс - PicoStation M2-HP, отличается помимо всего прочего тем, что построен на AR7240! Смотрим спецификацию: AR7240 Wireless Network Processor • Network Processor SOC for home, SMB, and enterprise access points, routers, and gateways. • 32-bit MIPS 24K processor core, operating at up to 400 MHz with 8 KB icache and 32 KB dcache • Integrated state-of-the-art Fast Ethernet switch core and five Fast Ethernet PHYs • Ethernet switch core features non-blocking switch fabric, highperformance address lookup unit, four-traffic-class Quality of Service (QoS) engine, and 512 KB of embedded memory and integrated frame buffer memory • Range of low-power states supported on Wired Ethernet, including cable detect, idle mode, and link length detect • PCI Express based specification 1.1 compliant • Supports DDR1 and DDR2 DRAM and serial flash • Integrated USB MAC/PHY • Spectrum Analysis О йа-йа! Сегодня счастливый день)) Итак, устройство в моих кривых руках)) Первый взгляд: Отрываем этикетку: Видим 2 крепящих шурупа, отворачиваем: Легко вынимаем плату из корпуса, и начинаем разглядывать: Как стало известно из wiki.openwrt.org для распайки USB на этом чипе нужны 73 и 74 пины под данные, под питалово остается только делать свою обвязку. В общем буду курить схему, результаты выложу. А вот и USB концы: http://spejlickari.wz.cz/fileget.php?file=AR7240.JPG первый порт находится снизу проца, если развернуть точкой слева верх, начиная с 9 - го слева направо по нижнему ряду ног проца. далее, 9,10,11,12 первый, затем 13 земля, 14,15,16,17, 18 земля и т.д. до конца ... Краткий итог: Девайс у меня, распиновка камня понятна, завтра начну паять. Под вопросом пока обвязка питания для USB - самому колхозить или найти готовую на плате. После- работа с прошивкой. UPD: Оказалось, что пайка на чипе = 0,05 технология, дома и с паяльником это делать почти невозможно. Завтра поеду в мастерскую на BGA паяльную станцию, посмотрю, что можно сделать.
По ссылке http://www.technotrade.com.ua/Products/Ubiquiti_PicoStation_M2-HP.php у этой пикостайшин максимальное потребление 8 Вт, У DIR-300 потребеление 4Вт. Дир дешевле в три раза, на него уже есть готовая прошивка dd-wrt, флешку я думаю тоже можно прикрутить. Разницу по цене лучше в аккумулятор вложить) А еще лучше dir-320, правда максимальное потребление 10вт, плюс есть готовый юсб-выход. Немного разобравшись можно накатить готовую прошивку с tcpdump, а можно и самомуму из оптваре поставить на флешку. Пока не вижу смылса в этой PicoStation, по мне так луше DIR-300 доковырять. Из плюсов PicoStation - меньший размер (по мне так не особо критично), и PoE питание, требование к аккумулятору снижаются. Но это перекрывается ценой. Вот еще интересная тема по данному вопросу
На DIR-300 я это реализовал еще месяц назад, впаять в него флешку не пробовал, но на 320 это вообще не проблема. Сама реализация - вообще вопрос 2х минут, при таких размерах. Почему Picostatino - потому что он при всех доработках легко помещается в короб с кабелем, например, что удобно при установке в офисе, он запросто помещается в щель между косяком двери и стеной, под наличником, при установке в квартире ну и т.д. - примеров много. Сделать сам девайс - не проблема, сейчас для меня интереснее сделать его меньше, легче, быстрее и увеличить срок работы, чтоб я мог сказать: "Это универсальное и законченное решение". Потому что оно должно быть пригодно для любых целей и условий. Кстати, перешил его на dd-wrt, убрал лишние модули, добавил tcpdump, правда без записи и вывода в файл, просто для теста - более 4,5 Вт у меня на мультиметре не поднимался. Работаю над дальнейшим сокращением.
Чем и занят. До понедельника-вторника на BGA станции смогу подпаяться к ногам - буду делать разводку и тестировать. По питанию - есть много вариантов, зависит от конкретного случая и варианта установки. В принципе запитаться можно от чего угодно, благо БП от любого источника на LM микрухах будет очень маленьким и прохладным
Подключусь к разговору. Для целей ТС пойдет вполне вот это Ничего лишнего на плате, второй интерфейс цепляем по USB (донглов usb->ethrnet полно и стоят копейки). Под плату есть доки и уже готовый bsp, собрать все - дело пары часов максимум. Вопрос один - зачем это? Соседские пароли добывать? Насчет питалова - на дилэкстриме есть PowerBank-и на 10А даже, разьем usb + переходники, этого за глаза хватит.