аппаратно-программный снифер

Discussion in 'Электроника и Фрикинг' started by phoennix, 6 Feb 2012.

  1. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Доброго времени суток, уважабэ.
    Надеюсь веткой не ошибся.

    Предисловие

    Тема тут актуальна, насколько я смотрю, потому предлагаю обсудить некий универсальный вариант, который решил бы много проблем сразу.
    В сети достаточно много предложений на эту тему, но одного стабильного и универсального варианта я пока не встречал, а потому решил сам пораскинуть мудями над кафедрой)

    Итак, суть предложения:
    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 phoennix, 6 Feb 2012
    Last edited: 6 Feb 2012
    1 person likes this.
  2. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    491
    Likes Received:
    2,158
    Reputations:
    97
    Сразу задам несколько вопросов по теме (тема имхо интересная):

    1. Было ли проведено предварительное гугление по теме, ведь такая идея наверняка приходила во многие головы и до сегодняшнего дня?

    2. Подключение к физической линии "крокодилами" может негативно сказаться на согласовании линии, и как следствие, при длине кабеля более критической связь работать перестанет, что вызовет нездоровый интерес хозяина кабеля и затем коробку незамедлительно найдут. Возможно стоит рассмотреть индуктивный вариант подключения.

    3. При использовании готового роутера в качестве тупо приемника чужих пакетов возможно (не уверен) не захочет корректно работать его MAC (Media Access Controller). Скорее всего придется делать свою реализацию двойной цепочки "входной трансформатор -> PHY -> свой MAC на FPGA", хотя можно попробовать и на готовом.
     
  3. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Отвечаю по пунктам:
    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 памяти на данный девайс - схем его я пока найти не смог, так что буду признателен, если кто-то поделится.

    Как только будут результаты - выложу фото-отчет)

    ЗЫ: Хотел бы добавить, что если тема для кого-то кроме меня актуальна - прошу как-то это показать в теме. Спасибо.
     
    #3 phoennix, 9 Feb 2012
    Last edited by a moderator: 6 Mar 2012
  4. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    491
    Likes Received:
    2,158
    Reputations:
    97
    Что же, подпишусь, идея интересная, у меня есть разные ARM-железки под линуксом, тоже можно попробовать перевести их в режим сниффера, заодно и потребление померить.

    По поводу установки доп. памяти с Ubiquiti PicoStation я не знаком, есть ли у ней USB host? Если разъем не выведен надо посмотреть что там за проц и поискать как следует, возможно есть тестпоинты USB на плате. Туда и повесить флешку.

    Еще из первого поста не совсем понятно зачем делать bonding двум интерфейсам? Можно же заставить tcpdump читать с обоих одновременно (подразумевается что железка должна быть с двумя Ethernet-портами каждый со своим MAC, а не со свитч-чипом).
     
    #4 gpuhash, 9 Feb 2012
    Last edited: 9 Feb 2012
  5. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Был бы хост - делать было бы нечего)
    Завтра планирую забрать железку со склада и расковырять - там будет понятно. Хреновина собрана на Atheros, насколько я смог понять, так что есть вероятность, что будут тестпоинты или сервисный порт, в противном случае - думаю над тем, чтоб заменить родную флешку с контроллером.

    ЗЫ: Процессор Atheros MIPS 4KC, 180MHz
     
    #5 phoennix, 9 Feb 2012
    Last edited by a moderator: 6 Mar 2012
    1 person likes this.
  6. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    491
    Likes Received:
    2,158
    Reputations:
    97
    Посмотрел характеристики PicoStation - там анонсируется только один Ethernet порт.
    Тогда не понятно чем будет приниматься поток данных по второй паре, я так понимаю что для этого нужен второй порт со своим отдельным MAC, не так ли?
     
  7. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Да, этот момент меня тоже смущает, пока способов обхода не придумал.
     
  8. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    491
    Likes Received:
    2,158
    Reputations:
    97
    Тогда еще пара идей:

    В качестве платформы можно использовать любой 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 адаптер
     
  9. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Насчет USB-Ethernet да, есть очень даже мелких размеров, кстати. Хорошая идея! Если завтра обнаружу возможность USB в устройстве - можно попробовать. Но тогда под вопросом Flash.

    Насчет свича в разрыв - идея боян, +managed switch только многопортовый, все верно. Да и атака тогда становится ближе к MitM.

    Насчет плат - вчера думал, но пока не проработал. Сейчас посмотрю приведенные тобой примеры, спасибо.

    ЗЫ: Посмотрел. Офигенная вещь! Но не продается...
     
    #9 phoennix, 9 Feb 2012
    Last edited: 9 Feb 2012
  10. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    491
    Likes Received:
    2,158
    Reputations:
    97
    Обещают первую партию уже в конце февраля. А отлаживать идею и софт можно на любой платформе.
     
  11. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    У меня пока нет опыта кросс-платформенной компиляции, но есть ощущение, что придется приобрести))
     
  12. Alexander89

    Alexander89 Member

    Joined:
    30 Nov 2009
    Messages:
    30
    Likes Received:
    8
    Reputations:
    0
    Идея интересная. Но мне кажется не очень вкусным то что придется бегать за флешкой. Скорее всего если устройство спалят то и Вас подождут возле него. Да и актуальность данных может быть считанные минуты.

    Как насчет того что бы подкинуть к нему GPRS модем.
    Ну или передавать через туже сеть от имени ПК жертвы
     
  13. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Вы не внимательно ознакомились с тредом)
    В данном случае flash память рассматривается исключительно как место хранения дампа, т.к. на встроенные 8Мб будет записана ОС, и даже если останется 3-4Мб - этого слишком мало на дамп.
    А изымать дамп с девайса предполагается посредством WiFi, потому и платформа изначально выбиралась на оутерном железе + NIX-like система.

    В поисках платформы натолкнулся на проект Freeduino, единственное, что меня смущает - ATmega2560 = 8 бит на RISC архитектуре. В принципе можно собрать NIX под него, но пока вопрос скорости работы при этом остается открытым. Есть у кого-то опыт в использовании этой платформы?
     
    #13 phoennix, 9 Feb 2012
    Last edited by a moderator: 6 Mar 2012
  14. gpuhash

    gpuhash Elder - Старейшина

    Joined:
    22 Sep 2011
    Messages:
    491
    Likes Received:
    2,158
    Reputations:
    97
    AVR не годится для линукса, у него нет MMU (memory management unit) и чисто теоретически на нем можно запустить только ucLinux с плоской моделью памяти (и то я не уверен что есть порт ucLinux под 8-бит архитектуру). Из ATMEL я могу порекомендовать AT91RM9200, это 200МГц ARM платформа с MMU и богатой периферией, под этот проц наработано куча девкитов и есть драйвера практически под всё.
     
  15. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Таким образом мы приходим к полностью самостоятельному решению - от разработки железа до паяльника и системного программирования...)

    По ходу пьесы удалось выяснить, что 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

    О йа-йа! Сегодня счастливый день))

    Итак, устройство в моих кривых руках))
    Первый взгляд:

    [​IMG]

    Отрываем этикетку:

    [​IMG]

    Видим 2 крепящих шурупа, отворачиваем:

    [​IMG]

    Легко вынимаем плату из корпуса, и начинаем разглядывать:

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    Как стало известно из 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 паяльную станцию, посмотрю, что можно сделать.
     
    #15 phoennix, 10 Feb 2012
    Last edited by a moderator: 6 Mar 2012
  16. mszerg

    mszerg New Member

    Joined:
    1 Jan 2012
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    По ссылке 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 питание, требование к аккумулятору снижаются. Но это перекрывается ценой.

    Вот еще интересная тема по данному вопросу
     
    #16 mszerg, 16 Feb 2012
    Last edited: 16 Feb 2012
  17. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    На DIR-300 я это реализовал еще месяц назад, впаять в него флешку не пробовал, но на 320 это вообще не проблема.

    Сама реализация - вообще вопрос 2х минут, при таких размерах.

    Почему Picostatino - потому что он при всех доработках легко помещается в короб с кабелем, например, что удобно при установке в офисе, он запросто помещается в щель между косяком двери и стеной, под наличником, при установке в квартире ну и т.д. - примеров много. Сделать сам девайс - не проблема, сейчас для меня интереснее сделать его меньше, легче, быстрее и увеличить срок работы, чтоб я мог сказать: "Это универсальное и законченное решение". Потому что оно должно быть пригодно для любых целей и условий.

    Кстати, перешил его на dd-wrt, убрал лишние модули, добавил tcpdump, правда без записи и вывода в файл, просто для теста - более 4,5 Вт у меня на мультиметре не поднимался. Работаю над дальнейшим сокращением.
     
  18. mszerg

    mszerg New Member

    Joined:
    1 Jan 2012
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Ну тогда надо пикостайшин курить)). А по питанию, какие соображения?
     
  19. phoennix

    phoennix New Member

    Joined:
    17 Jun 2008
    Messages:
    15
    Likes Received:
    3
    Reputations:
    0
    Чем и занят. До понедельника-вторника на BGA станции смогу подпаяться к ногам - буду делать разводку и тестировать.

    По питанию - есть много вариантов, зависит от конкретного случая и варианта установки. В принципе запитаться можно от чего угодно, благо БП от любого источника на LM микрухах будет очень маленьким и прохладным
     
  20. NekoKoneko

    NekoKoneko Elder - Старейшина

    Joined:
    29 Oct 2010
    Messages:
    175
    Likes Received:
    141
    Reputations:
    20
    Подключусь к разговору.
    Для целей ТС пойдет вполне вот это
    Ничего лишнего на плате, второй интерфейс цепляем по USB (донглов usb->ethrnet полно и стоят копейки). Под плату есть доки и уже готовый bsp, собрать все - дело пары часов максимум. Вопрос один - зачем это? Соседские пароли добывать?

    Насчет питалова - на дилэкстриме есть PowerBank-и на 10А даже, разьем usb + переходники, этого за глаза хватит.