Есть у меня знакомый - он подкинул задачку, которую я пока не решал за ненадобностью.
Задача:
легальный (входит в полиси компании), но незаметный сбор пользовательского трафика и auth pairs на unix-like gate. Траф логгировать, а auth pairs хранить зашифрованными на случай каких либо разбирательств со стороны СБ. При этом часть windows машин за gateway не в домене и вовсе не microsoft + мобильники android/apple. Законность всего этого выходит за рамки этого поста и, по словам товарища, реализована подписью работника под каким-то набором документов при поступлении на работу. Количество устройств меньше сотни, но со временем будет расти. Предпочтительна реализация не требующая доинсталяции софта на клиентских машинах, необходимая для mitm функциональность по установке корневого сертификата должна быть кросплатформенной и мультибраузерной + не зависеть от включения ПК в домен. Покупка целевой DLP системы из существующих рассматривалась, но по каким-то соображениям была отклонена (подробностей не знаю).
update: всвязи с отсутсвием комментов вывожу из подзамков.
Выводы:
По мотивам найденного и хотелкам товарища пока делаю вывод - вероятно надо допиливать существующие решения с открытым кодом установив на первых порах наилучшее из существующего.
Поскольку я сейчас собрался изучать яву, то, возможно, возьмусь патчить именно java исходники, если конечно на ней можно сделать вменяемое по скорости решение. Кстати, а как Вы думаете - возможно ли будет сделать что-то не вносящее больших задержек в работу с сетью за гейтом? Всвязи с чем хотелось бы заодно узнать - а что по Вашему должна уметь подобная тулза чтобы быть удобной или иными словами - чего Вам не хватает в том, чем вы пользуетесь в аналогичных случаях?
Доп-вопросы: в своё время утекали сорцы каспера и семантека - был ли в них на тот момент в них реализован mitm для проверки пользовательского трафа? Сорцы я из любопытства скачал, но времени на них глянуть не было. Может кто копался подробно - стоит их вообще открывать чтобы посмотреть как сделано "у больших корпораций"?
Из пока не гугленных вопросов - реально ли использовать попадавший в паблик сниффер skype чатов или в Skype давно сменили протокол и нового реверса никто не делал? Может быть кто знает open source тулзы использующие skype API - есть ли что либо вытягивающее контент history чатов?
Сборище ссылок по тематике с аннотациями:
Из того что нагуглено:
http://www.thoughtcrime.org/software/sslsniff/ , судя по описанию - то что надо, однако последний раз (на 13год) тулза моифицировалась в 11м году, так что могла частично устареть. Если кто пользовался - есть ли нарекания?
Вот ещё:
http://www.roe.ch/SSLsplit , поновее.
Какие нибудь рекомендации/предпочтения?
В интернете кстати полно дохлых ссылок на нечто которое называлось wsniff, но за 5 минут ничего подходящего под исходник не попало - не знаю даже стоит ли тратить время на дальнейший поиск всилу уже найденного. Может у кого есть исходники этой утилиты времён (если я не ошибаюсь) 9го года? Все попавшиеся текущие ссылки ведут на рекламный домен без искомого контента.
Куча исходников по теме mitm:
http://www.codeforge.com/s/0/mitm-proxy на 15 экранов одних заголовков с кратким описанием - mitn для разных протоколов. Перед написанием собственных утилит есть резон сначала глянуть сюда.
http://sourceforge.net/projects/airjack/ - во многих источниках упоминается как утилита полезная для mitm в wifi, но описание на sourceforge не содержит хоть что либо внятное на эту тему.
ликбез по mitm для начинающих:
http://corte.si/posts/code/mitmproxy/howitworks/ , тулза для вброса в http/https поток фэйковых ответов сервера (например редиректов):
http://corte.si/posts/code/pathod/announce0_9.html , тулза для вброса в http/https стрим фэйковых запросов от клиента (например запросов на выдачу каких нибудь прав в админке).
Куча ссылок на proxy/mitm:
http://www.linux-sec.net/Sniffer/ , часть из них присутствуюет тут с комментариями.
Утилиты для ручной генерации сертификатов и управления ими, имеющие к subj только опосредованное отношение.
http://sourceforge.net/projects/xca/?source=directoryhttp://sourceforge.net/projects/openca/?source=directory Unsorted
ftp://ftp.cerias.purdue.edu/pub/tools/unix/netutils/nfswatch/ - сниффер nfs трафика. Для корпоративной среды где все сервера свои нафик не нужен, но пусть будет.
Мультиязычное
http://sniffit.sourceforge.net/ - позволяет разносить снифающий кусок и морду на разные машины. В остальном, если смотреть по описанию обычный сниффер, Java и C++.
https://github.com/mdp/middlefiddle - умеет модифицировать запросы + автогенерировать ssl certs - javascript, ruby, shell, coffee script.
http://sourceforge.net/projects/xplico/?source=directory - forensic утилита позволяющая извлекать из дампов траффика данные на OSI application level, например email.
C
http://freecode.com/projects/groink - реализация mitm на Си с расширением функционала на Lua. Что он умеет и не умеет - хз - надо покопать исходники..
http://www.monkey.org/~dugsong/dsniff/ , классика жанра - написан на Си, словленное выводит в stdout. Насколько я понимаю - больше не развивается с 2001го года, адрес списка рассылки режектится. Интересно - что он не умеет из популярного сегодня?
www.theta44.org/karma/ - набор для сбора auth данных при попытке логина в wifi сеть. При живой корпоративной сети малополезен, да и вообще думается мне будет вызывать вопросы у пользователей, которые увидят на работе домашнее имя сети.
http://ettercap.github.io/ettercap/index.html - использует ssl strip, который доступен по
http://www.thoughtcrime.org/software/sslstrip/ . Насколько я понимаю это не https прокси - трафик до жертвы преобразуется из ssl в http, то есть на сколько-нибудь внимательном человеке не сработает.
http://www.rtfm.com/ssldump/ , позволяет при наличии ключей расшифровать стрим из вывода tcpdump или вживую и сохранить контент.
http://www.ex-parrot.com/~chris/driftnet/ - выдирает из трафика графический контент (изображения и видео). Автор, к сожалению уже умер. RIP, chris.. :(
http://tcpxtract.sourceforge.net/ - ещё одна вытягивалка файлов из libpcap файлов, но с возможонстью описать типы данных через конфиг.
www.phenoelit.org/phoss/PHoss_src.tar.gz - граббер auth data из трафика для нескольких протоколов.
http://sourceforge.net/projects/hexinject/?source=directory - ещё один пакет умеющий до кучи снифать.
C++
http://www.imspector.org/wordpress/ , заточен под логгирование instant messaging, есть поддержка ssl mitm.
https://kismetwireless.net/index.shtml, исходники:
https://www.kismetwireless.net/gitweb/ - пассивный снифф wifi трафика с возможностью расширять плагинами. Никакого mitm как я понимаю.
https://github.com/moxie0/sslsniff - умеет динамически генерировать сертификаты.
http://www.roe.ch/SSLsplit - умеет тоже что утилита moxie + ещё.
Perl
http://sourceforge.net/projects/chaosreader/ - вытаскивает из tcpdump логов контент и сохраняет для удобного просмотра.
http://stein.cshl.org/~lstein/talks/WWW6/sniffer/ - простенький сниффер на perl.
Python
http://mitmproxy.org/ и
http://honeyproxy.org/ - написано на питоне частично общая кодовая база - вот тут
https://github.com/mhils/HoneyProxy/wiki/Features пишут что второе добавляет функционал к первому.
http://www.isecpartners.com/tools/application-security/tcpprox.aspx - ещё одна proxy на питоне - попроще, но с возможностью ssl mitm - исходник:
https://github.com/iSECPartners/tcpprox http://intrepidusgroup.com/insight/mallory/ - malory tcp/udp mitm proxy tool, на сайте есть готовые виртуалки с преднастроенной средой. Написано на питоне.
http://www.gnucitizen.org/blog/python-ssl-mitm-proxy-and-more/ https://code.google.com/p/sslmimic/ - ещё одна прокси с заявленной возможностью ssl mitm, но есть issue на ssl mitm не сресолвленное ещё с 10го года..
https://code.google.com/p/subterfuge/ - ещё одна mitm тулза на питоне, ssl mitm не заявлено, зато есть граббер пользовательских auth pairs.
Вот тут список известных проксей написанных на питоне, часть которых умеет ssl mitm:
http://proxies.xhaus.com/python/ http://packetstormsecurity.com/files/120802/MF-Sniffer-TN3270-Password-Grabber.html - экзотика для mainframe'ов.
Go
http://gc.codehum.com/p/tlsproxy/ C#
http://research.sensepost.com/tools/web/suru - старенькая MitM proxy с bsd-лицензированными исходниками на C#.
Java
mitm proxy на java с закрытым кодом
http://www.milescan.com/hk/ , но есть бесплатная версия:
http://www.parosproxy.org/index.shtml и её форк:
https://code.google.com/p/andiparos/ и ещё:
http://sourceforge.net/projects/paros/ и ещё один, заточенный на pentester'ов:
https://owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project#Functionality с динамической генерацией ssl сертификатов,
по ходу он на code.google.com:
http://code.google.com/p/zaproxy/ - OWASP ZAP .
в качестве библиотеки для построения своих mitm проксей можно использовать
https://owasp.org/index.php/Category:OWASP_Proxy, к которой вроде не сложно прикрутить ssl, а вот тут подробные инструкции по замене сертификатов в paros proxy:
http://www.paralint.com/blog/2007/01/16/change-paros-proxy-mitm-ssl-certificate/ вот тут список проксей с открытым кодом на java, часть умеет ssl mitm:
http://proxies.xhaus.com/java/ Конструктор на ява:
https://www.owasp.org/index.php/Category:OWASP_WebScarab_Project - ява-фреймворк с плагинами который можно приспособить по ssl mitm,
а вот его форк для андроида:
https://code.google.com/p/sandrop/ (подробнее о нём тут:
http://forum.xda-developers.com/showthread.php?t=1483925)
https://crypto.stanford.edu/ssl-mitm/ - mitm прокси на яве, closed source, двольно древний - 2007го года. Наверное можно декомпилировать, но зачем - он сделан на основе
http://grinder.sourceforge.net/index.html - open source bsd licensed tcp sniffer capable for ssl mitm, но всё равно это конструктор, а не грабилка access tokens. Когда я выучу яву может и пригодится на что )
Руби
Конструкторы на руби:
https://github.com/igrigorik/em-proxy ,
http://postrank-labs.github.io/goliath/ - насколько я понимаю не имеют готовых mitm, но позволяют их писать.
http://usefulfor.com/security/files/2008/06/xmitm.rb - xml mitm specific script
JavaScript
https://github.com/horaci/node-mitm-proxy -open source mitm proxy на основе Node.js для любителей жабаскрипта. Так же им понравится браузер без UI -
http://phantomjs.org/ , суммарно можно использовать эту связку для тестирования web-всячины. Возможность использовать как ready to use прозрачную грабилку access tokens сомнительна - ещё один конструктор для программиста.
Вотещё линк на код java svript для mitm:
https://nodejsmodules.org/tags/mitm Commercial or Closed Source or Windows only
http://www.tcpcatcher.org/ на java, но без исходников - можно декомпилировать, но незачем.
http://intercepter.nerf.ru/ - решение исключительно для виндузятников (XP-W8) и Android (!) от Ares.
http://fiddler2.com/ - решение исключительно для виндузятников (XP-W8).
https://www.bluecoat.com/products/proxysg - коммерческое решение для компаний желающих мониторить https трафик пользователей.
http://portswigger.net/burp/download.html - коммерческий proxy с mitm, люди хвалят. Лицензия на июль 2013 стоит около $300.
http://www.charlesproxy.com/download/ - есть под линух, венду и OSX, коммерческий(closed source), есть триал на 30 дней на 4х пользователей на июль 2013 стоит $50, Multi-Site License - US$700 .
Старенькая mitm proxy с поддержкой ssl под венду и без исходников:
http://www.bindshell.net/tools/odysseus.html , по ссылкам оттуда можно найти современные но коммерческие проекты.
Ну и немного по вариантам противодействия и борьбе с ними:
http://ha.ckers.org/blog/20090621/detecting-mitmhacking-proxies-via-ssl/ Welcome в комменты - пишите на что стоит обратить внимание - наверняка я что-то упустил - тема объёмная.