Всем привет, меня зовут Катя, я QA Engineering Manager в inDriver. В этой статье расскажу про свой опыт использования Proxyman, а также о том, почему считаю его лучшей программой-сниффером. Приятного чтения!
Содержание
Что мы хотим от снифферов?
Итак, что вообще такое «сниффер»? Снифферами называют инструменты, позволяющие перехватывать, анализировать и модифицировать все запросы, которые через них проходят. Они позволяют исследовать сетевое взаимодействие клиента и сервера (это, грубо говоря, высветляет наш черный ящик), а также эмулировать различные тестовые сценарии, модифицируя трафик.
Основной запрос к снифферам — мониторинг трафика. Нам необходимо знать, что происходит на сетевом уровне. Что мы проверяем? По пунктам:
- Что запрос вообще уходит.
- Блокирующий ли запрос — очень важно на старте приложения.
- Время между действием и уходом запроса.
- Правильно ли составлен запрос — URL, формат, параметры, данные.
- Что запрос не дублируется.
- Что порядок отправляемых запросов верный.
- Время ответа, тайм-аут и формат ответа.
Если мы будем видеть, на каком этапе произошла ошибка — фактически, баг локализован.
Работа с программой-сниффером WireShark (Work with sniffer program WireShark)
Принцип работы
Снифферы работают по принципу man in the middle. У нас есть промежуточный сервер, через который проходят запросы и ответы. Сниффер запускается на компьютере, который находится в той же локальной подсети, что и мобильное устройство с тестируемым приложением.
Как правило, соединение настраивается по Wi-Fi. В настройках Wi-Fi мобильного устройства в качестве прокси-сервера указывается IP-адрес компьютера и порт инструмента. IP-адрес можно узнать через командную строку (ifconfig) или в самом сниффере.
С HTTPS немного сложнее — нужно установить SSL-сертификат сниффера на устройство и разрешить девайсу доверять сертификату, чтобы трафик расшифровывался.
Но есть нюанс с SSL-пиннингом — процессом сверки полученного сертификата с вшитым в приложение. Если в вашем приложении есть SSL-пиннинг, потребуется обратиться к разработчикам для его отключения на тестовой версии приложения. Иначе не получится подсмотреть трафик приложения.
Выбор оптимального сниффера
Давайте пройдемся по широко используемым в тестировании мобильных приложений инструментам.
1. Первый парень — Wireshark. Он низкоуровневый, поддерживает сотни протоколов — можно засниффать различные виды трафика: HTTP, VoIP, BLE и другие. С ним чувствуешь себя настоящим хакером, он кроссплатформенный и классный.
Минус — Wireshark не расшифровывает HTTPS-трафик в режиме реального времени. Сначала нужно записать пакеты, скормить ему их и сертификат — и тогда можно посмотреть трафик.
Дмитрий Ильинов, «Стать миллионером за 5 минут, или для чего нужен сниффер трафика»
2. Следующий — Charles. Он мировая звезда, знаком тестировщикам, разработчикам и системным аналитикам. У него много функций, инструкций и статей. В том числе, на русском. Опять-таки, он кроссплатформенный.
Минус — в бесплатной версии выключается каждые полчаса.
3. Дальше — Fiddler. Здесь я рассматриваю классический Fiddler, не Fiddler Everywhere. Он резво работает на Windows, мне в нем безумно нравится, что между функциями можно переключаться парой кликов. Также плюсами назову регулярные выражения на подмены (Autoresponder) и довольно гибкий инструмент Scripting.
Минус — интерфейс у него немного гиковатый, и он работает только на Windows.
Мини-бонус: мне в свое время настолько нравился Fiddler, что последний пункт не был для меня минусом: на рабочий макбук я поставила VirtualBox с виндой и настроенным в ней Fiddler’ом.
4. Гвоздь программы — Proxyman. Он хорош тем, что нативен на MacOS и использует все интерфейсные преимущества данной операционной системы. Proxyman молодой, развивающийся, к нему часто выходят новые версии. Он сделан так, чтобы быть интуитивно понятным.
Минус — в бесплатной версии обрезается количество возможных подмен и правил. А еще на винду его не поставить.
Есть, конечно, и другие снифферы: mitmproxy, Fiddler Everywhere, Burp Suite и так далее. Но они не настолько распространены среди QA-инженеров.
Почему Proxyman?
Расскажу подробнее, чем же хорош Proxyman. Я поработала с ним примерно год и хочу поделиться с вами преимуществами этого инструмента.
1. Киллер-фича — инструкция буквально на каждый чих. Например, мы хотим установить сертификат на реальное iOS-устройство. Как это сделать? Жмем «Install certificate on iOS».
Идем дальше -> Physical Devices — и перед нами инструкция, где буквально расписан каждый шаг, плюс ссылочка на траблшутинг, плюс запомните слово Atlantis — оно вам пригодится. Такая же инструкция есть на Android, также есть инструкция для разработчиков, как разрешить приложению использовать подменный сертификат.
2. Скрипт для эмуляторов и симуляторов. Если надо поставить сертификат на эмулятор и сниффать трафик с него — просто открываем Install certificate on Android -> Emulators, жмякаем кнопочку Override Emulator, выполняется скрипт — готово.
Аналогично на iOS: Install certificate on iOS -> Simulators, жмякнуть кнопочку Install and Trust, посмотреть, перезапустить эмулятор — done. Единственное, трафик эмуляторов будет считываться как отдельное устройство, а симуляторов — как приложение, его нужно поискать в списке приложений:
3. Возможность запинить домены, приложения, на которых необходимо сфокусироваться. Очень удобно, чтоб не потерять нужное в огромном числе реалтайм-запросов.
4. Группировка девайсов по IP, плюс возможность задать никнеймы. Можно не париться, от какого девайса запрос, кто и почему крашнулся. У нас все сгруппировано. Must have при мобильном тестировании на куче разных девайсов.
5. Группировка всех запросов по дереву. Вот у нас хосты, кликаем дальше, и по пути постепенно приходим к нужному запросу. Если хотим обратно переключиться на все запросы — кликаем на девайс, только на хост — кликаем хост. Это примерно также, как Structure в Charles, только на стероидах.
6. Классный поиск. Во-первых, можно выбрать, по каким параметрам мы ищем: URL, запрос, тело, метод, даже цвет. Во-вторых, можно использовать разные параметры, в том числе, мои любимые регулярки. Супер.
7. Скриптинг. Это использование JavaScript для каких-либо манипуляций. Здесь также есть регулярка, такие же фильтры.
Либо вот, например, можно менять запросы/ответы. Это чем-то схоже с рерайтом в Charles — я подменяю заголовок или статус-код по правилу.
Можно написать кучу всего по любым параметрам. Но код — казалось бы, сложно, непонятно, учить JavasScript, oh no! Ах, да, киллер-фича номер 1: кликаем Snippet Code, и вот у нас документация с готовыми кусочками кода на разные задачи, сгруппированная по категориям (вот ссылка на коллекцию этих кусочков).
Подумала: может, я свихнулась на Proxyman? Всем рассказываю про него, многие коллеги уже на него перешли. Опросила разных людей — бывших коллег, разработчиков, тестировщиков. Мнения плюс-минус совпали: интерфейс удобный, достаточно резво работает, меньше ошибок, многое продумано.
Казалось бы, по плану все. Но есть кое-что еще.
Бонус 1
Ребята, которые пилят Proxyman, сделали клевый фреймворк для iOS. Он встраивается в приложение — чтобы засниффать трафик, не нужно каждый раз настраивать устройство, прописывать хост, ставить сертификат, разрешать его в одном месте, разрешать в другом.
Берешь девайс, в Proxyman находишь кнопочку «Найти девайс». Девайс и компьютер с поднятым на нем Proxyman должны находиться в одной сети — и все перехватывается само.
Правда, таким образом можно только инспектировать трафик: подменять запросы, ответы и прочие манипуляции не получится. Но это все равно экономит время, особенно с учетом того, что просмотр трафика — основной запрос к снифферам.
Бонус 2
Есть мобильная версия для iPhone! Заходим в AppStore, качаем. Работает через VPN-сертификат, настраиваем согласно инструкции — и можно смотреть трафик без компьютера.
Чтобы посмотреть, кликаем на запрос. Тело запроса вынесено в отдельный экран, потому что в мобильной версии неудобно, если все будет одной простыней. Также здесь можно запинить домены для удобства.
Опять же, доступен только мониторинг трафика, никаких модификаций сделать не получится. Зато плюс – лицензия с десктоп-версии включает в себя и лицензию на мобильную версию.
Подытоживая, подчеркну, что мониторинг трафика суперважен. Он спасает жизни, продукт от багов, разрабов от долгих попыток разобраться в причинах ошибок. Proxyman же делает данный процесс более удобным.
Спасибо, что дочитали статью до конца. Буду рада вашей обратной связи в комментариях.
- Блог компании inDrive.Tech
- Тестирование IT-систем
- Тестирование мобильных приложений
Источник: habr.com
Сниффер — что за зверь
Снифферы — это проги, которые перехватывают
весь сетевой трафик. Снифферы полезны для диагностики сети (для админов) и
для перехвата паролей (понятно для кого:)). Например если ты получил доступ к
одной сетевой машине и установил там сниффер,
то скоро все пароли от
их подсети будут твои. Снифферы ставят
сетевую карту в прослушивающий
режим (PROMISC).То есть они получают все пакеты. В локалке можно перехватывать
все отправляемые пакеты со всех машин (если вы не разделены всякими хабами),
так
как там практикуется широковещание.
Снифферы могут перехватывать все
пакеты (что очень неудобно, ужасно быстро переполняется лог файл,
зато для более детального анализа сети самое оно)
или только первые байты от всяких
ftp,telnet,pop3 и т.д. (это самое веселое, обычно примерно в первых 100 байтах
содержится имя и пароль:)). Снифферов сейчас
развелось. Множество снифферов есть
как под Unix, так и под Windows (даже под DOS есть:)).
Снифферы могут
поддерживать только определенную ось (например linux_sniffer.c,который
поддерживает Linux:)), либо несколько (например Sniffit,
работает с BSD, Linux, Solaris). Снифферы так разжились из-за того,
что пароли передаются по сети открытым текстом.
Таких служб
уйма. Это telnet, ftp, pop3, www и т.д. Этими службами
пользуется уйма
народу:). После бума снифферов начали появляться различные
алгоритмы
шифрования этих протоколов. Появился SSH (альтернатива
telnet, поддерживающий
шифрование), SSL(Secure Socket Layer — разработка Netscape, способная зашифровать
www сеанс). Появились всякие Kerberous, VPN(Virtual Private
Network). Заюзались некие AntiSniff’ы, ifstatus’ы и т.д. Но это в корне не
изменило положения. Службы, которые используют
передачу пароля plain text’ом
юзаются во всю:). Поэтому сниффать еще долго будут:).
Windows реализации снифферов
CommView — www.tamos.com
Довольно продвинутый сниффер
производства TamoSoft. Можно установить свои правила на сниффинг
(например
игнорировать ICMP, а TCP сниффать, также кроме Internet протоколов
имеется поддержка Ethernet протоколов, таких как ARP,SNMP,NOVELL и
т.д.). Можно например сниффать только входящие пакеты,
а остальные
игнорить. Можно указать лог-файл для всех пакетов с лимитов размера в
мегах. Имеет две tools’ы — Packet Generator и NIC Vendor
Indentifier. Можно посмотреть все подробности
посланных
/полученных пакетов (например в TCP пакете можно просмотреть Source
Port, Destination Port, Data length, Checksum, Sequence, Window, Ack, Flags,
Urgent). Радует еще
то, что она автоматически устанавливает CAPTURE
драйвер. В общем тулза
очень полезная для снифа, рекомендую всем.
SpyNet —
packetstorm.securify.com
Довольно известный сниффер производства Laurentiu
Nicula 2000:). Обычные функции — перехват/декодинг пакетов.
Хотя декодинг
развит прикольно (можно например по пакетам воссоздавать
странички,
на которых
побывал юзер!). В общем на любителя:).
Analyzer — neworder.box.sk
Analyzer
требует установку специального драйвера, вложенного в
пакет (packet.inf, packet.sys). Можно посмотреть всю инфу о вашей сетевой
карте. Также Analyzer поддерживает работу с командной строкой.
Он
прекрасно работает с локальной сетью. Имеет несколько
утилит: ConvDump,GnuPlot,FlowsDet,Analisys Engine. Ничего
выдающегося.
IRIS
— www.eeye.com
IRIS продукт известной фирмы
eEye. Представляет обширные возможности по фильтрации.
Меня в нем сильно
порадовало три фишки:
1.Protocol Distribution
2.Top hosts
3.Size
Distribution
Также имеется Packet Decoder. Он поддерживает развитую систему
логов. А доступные возможности фильтрации превосходят
все снифферы
обзора. Это Hardware Filter, который может ловить либо все
пакеты (Promiscious), либо с различными ограничениями
(например захватывать
только multicast пакеты или broadcast пакеты, либо только Mac фреймы).
Можно
фильтровать по определенным MAC/IP адресам, по портам,
по пакетам, содержащим
определенные символы. В общем неплохой
сниффак. Требует
50comupd.dll.
WinDUMP
Аналог TCPdump for Unix. Этот сниффак действует через
командную строку и представляет минимальные возможности по конфигурации и еще
требует библиотеку WinPcap. Мне не очень.
SniffitNT
Тоже требует WinPcap. Работа только как командной строкой,
так и в интерактивном режиме. Со
сложными опциями. Мне не очень.
ButtSniff
Обычный пакетный
сниффер созданный
известнейшей группой CDC(Cult of the Dead Cow). Фишка его в том,
что его можно использовать, как плагин к BO:)(Очень полезно:)).Работа из командной
строки.
Существуют еще множество снифферов,
таких как NatasX, NetXRay, CooperSniffer, LanExplorer, Net Analyzer и т.д.
Пойдем
дальне.
Unix’овые снифферы
Все снифферы данного обзора можно найти на
packetstorm.securify.com.
linsniffer
Это простой сниффер для перехвата
логинов/паролей. Стандартная компиляция (gcc -o linsniffer
linsniffer.c).
Логи пишет в tcp.log.
linux_sniffer
Linux_sniffer
требуется тогда, когда вы хотите
детально изучить сеть. Стандартная
компиляция. Выдает всякую шнягу дополнительно,
типа isn, ack, syn, echo_request (ping) и т.д.
Sniffit
Sniffit — продвинутая модель
сниффера написанная Brecht Claerhout. Install(нужна
libcap):
#./configure
#make
Теперь запускаем
сниффер:
#./sniffit
usage: ./sniffit [-xdabvnN] [-P proto] [-A char] [-p
port] [(-r|-R) recordfile]
[-l sniflen] [-L logparam] [-F snifdevice]
[-M plugin]
[-D tty] (-t | -s) |
(-i|-I) | -c]
Plugins Available:
0 — Dummy
Plugin
1 — DNS Plugin
Как видите, сниффит поддерживает множество
опций. Можно использовать сниффак в интерактивном режиме.
Сниффит хоть и
довольно полезная прога, но я ей не пользуюсь.
Почему? Потому что у Sniffit
большие проблемы с защитой. Для Sniffit’a уже вышли ремоутный рут и дос для
линукса и дебиана! Не каждый сниффер себе такое позволяет:).
HUNT
Это
мой любимый сниффак. Он очень прост в обращении,
поддерживает много прикольных
фишек и на данный момент не имеет проблем с безопасностью.
Плюс не особо
требователен к библиотекам (как например linsniffer и
Linux_sniffer). Он
может в реальном времени перехватывать текущие соединения и под
чистую дампить с удаленного терминала. В
общем, Hijack
rulezzz:). Рекомендую
всем для усиленного юзания:).
Install:
#make
Run:
#hunt -i [interface]
READSMB
Сниффер READSMB вырезан из LophtCrack и портирован под
Unix (как ни странно:)). Readsmb перехватывает SMB
пакеты.
TCPDUMP
tcpdump — довольно известный анализатор пакетов.
Написанный
еще более известным челом — Вэн Якобсоном, который придумал VJ-сжатие для
PPP и написал прогу traceroute (и кто знает что еще?).
Требует библиотеку
Libpcap.
Install:
#./configure
#make
Теперь запускаем
ее:
#tcpdump
tcpdump: listening on ppp0
Все твои коннекты выводит на
терминал. Вот пример вывода на пинг
ftp.technotronic.com:
02:03:08.918959
195.170.212.151.1039 > 195.170.212.77.domain: 60946+ A?
ftp.technotronic.com.
(38)
02:03:09.456780 195.170.212.77.domain > 195.170.212.151.1039: 60946*
1/3/3 (165)
02:03:09.459421 195.170.212.151 > 209.100.46.7: icmp: echo
request
02:03:09.996780 209.100.46.7 > 195.170.212.151: icmp: echo
reply
02:03:10.456864 195.170.212.151 > 209.100.46.7: icmp: echo
request
02:03:10.906779 209.100.46.7 > 195.170.212.151: icmp: echo
reply
02:03:11.456846 195.170.212.151 > 209.100.46.7: icmp: echo
request
02:03:11.966786 209.100.46.7 > 195.170.212.151: icmp: echo
reply
В общем, снифф полезен для отладки сетей,
нахождения неисправностей и
т.д.
Dsniff
Dsniff требует libpcap, ibnet,
libnids и OpenSSH. Записывает только введенные команды, что очень удобно.
Вот пример лога коннекта
на unix-shells.com:
02/18/01
03:58:04 tcp my.ip.1501 ->
handi4-145-253-158-170.arcor-ip.net.23
(telnet)
stalsen
asdqwe123
ls
pwd
who
last
exit
Вот
dsniff перехватил логин с паролем (stalsen/asdqwe123).
Install:
#./configure
#make
#make
install
Защита от снифферов
Самый верный способ защиты от
снифферов —
использовать ШИФРОВАНИЕ (SSH, Kerberous, VPN, S/Key, S/MIME,
SHTTP, SSL и т.д.). Ну
а если не охота отказываться от plain text служб и установления дополнительных
пакетов:)? Тогда пора юзать антиснифферские пекеты.
AntiSniff for Windows
Этот продукт выпустила известная группа
Lopht. Это был первый продукт в своем роде.
AntiSniff, как сказано в
описании:
«AntiSniff is a Graphical User Interface (GUI) driven tool for
detecting promiscuous Network Interface Cards (NICs) on your local network
segment». В общем, ловит карты в promisc режиме.
Поддерживает огромное
количество тестов (DNS test, ARP test, Ping Test, ICMP Time Delta
Test, Echo Test, PingDrop test). Можно сканить как одну машину,
так и сетку. Здесь имеется
поддержка логов. AntiSniff работает на win95/98/NT/2000,
хотя рекомендуемая
платформа NT. Но царствование его было недолгим и уже в скором
времени появился сниффер под названием AntiAntiSniffer:),
написанный Майком
Перри (Mike Perry) (найти его можно по адресу www.void.ru/news/9908/snoof.txt).Он
основан на LinSniffer (рассмотренный далее).
Unix sniffer detect:
Сниффер
можно обнаружить командой:
#ifconfig -a
lo Link encap:Local
Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP
LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:2373 errors:0
dropped:0 overruns:0 frame:0
TX packets:2373 errors:0 dropped:0
overruns:0 carrier:0
collisions:0 txqueuelen:0
ppp0 Link
encap:Point-to-Point Protocol
inet addr:195.170.y.x
P-t-P:195.170.y.x Mask:255.255.255.255
UP POINTOPOINT PROMISC
RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:3281
errors:74 dropped:0 overruns:0 frame:74
TX packets:3398 errors:0
dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
Как
видите интерфейс ppp0 стоит в PROMISC mode. Либо оператор
загрузил снифф для
проверки сети, либо вас уже имеют. Но помните,
что ifconfig можно спокойно
подменить, поэтому юзайте tripwire для обнаружения
изменений и всяческие проги
для проверки на сниффы.
AntiSniff for Unix.
Работает на
BSD, Solaris и
Linux. Поддерживает ping/icmp time test, arp test, echo test, dns
test, etherping test, в общем аналог AntiSniff’а для Win, только для
Unix:).
Install:
#make linux-all
Sentinel
Тоже полезная прога для
отлова снифферов. Поддерживает множество тестов.
Проста в
использовании.
Install : #make
#./sentinel
./sentinel [method] [-t
] [options]
Methods:
[ -a ARP test ]
[ -d DNS test
]
[ -i ICMP Ping Latency test ]
[ -e ICMP Etherping test
]
Options:
[ -f ]
[ -v Show version and
exit ]
[ -n ]
[ -I
]
Опции настолько просты, что no
comments.
Источник: xakep.ru
Что такое сниффер пакетов? Как работают пакетные снифферы?
Программное обеспечение
Автор Петров Денис На чтение 3 мин Просмотров 25 Опубликовано 20.10.2021
Сетевой трафик — один из самых ресурсоемких потоков, который содержит все, о чем мы говорим в Интернете. Если вы можете получить данные из него, вы можете узнать мой пароль или даже пароль Google; техническими словами, это называется сетевой сниффинг, а программное обеспечение, используемое для сниффинга данных, называется пакетные снифферы. Таким образом, если вы установите сниффер на маршрутизатор (маршрутизатор — это оборудование, которое отправляет данные по назначению), вы сможете увидеть все данные и записать их. Представьте себе, какая это мощь.
Что такое сниффер пакетов?
Сниффер пакетов — это программа , которая работает тихо и отслеживает данные в сетевом потоке. Он называется пассивным, так как он не посылает вам никакой информации, а собирает и хранит ее где-то. Если вы запустите такой сниффер на своей системе, он может сообщить вам ваш собственный IP-адрес и IP-адреса других сайтов, которые вы посещаете.
Как работают снифферы пакетов?
По сути, снифферы — это небольшие программы с одной целью — перехват данных . Они могут просматривать все незашифрованные данные , которые идут с вашего компьютера, или, если они находятся на маршрутизаторе, они могут просматривать все данные, проходящие через сеть. Теперь вопрос в том, как они могут читать данные. Это возможно из-за самой архитектуры.
Видите ли, наши карты Ethernet или то, что обычно называют LAN Card, являются открытыми соединениями. Это означает, что если вы пошлете какие-то данные, я их прочитаю, но приму их только тогда, когда данные будутобратился ко мне. Но теперь подумайте: у нас есть 4-5 компьютеров в сети. Вы посылаете сообщение на компьютер A, у которого нет никакого сниффера. Но у компьютера B он есть.
Предположим, вы посылаете какую-то информацию на компьютер А. В этом случае сообщение будет отправлено всем, у кого есть IP-адрес компьютера А, поэтому все компьютеры, кроме А, должны его отклонить. Тем не менее, у меня есть один сниффер на компьютере B. Поэтому, хотя сам компьютер отвергает его, но сниффер принимает данные.
Таким образом, если вы отправляете незашифрованные данные по сети, существует большая вероятность того, что ваши данные будут украдены.
Каковы типы снифферов пакетов?
- Администратор сети использует коммерческие снифферы, чтобы контролировать тип и видеть узкие места в данных.
- Подпольные снифферы используются для кражи данных, чтобы получить доступ к хранящимся данным, которые могут быть использованы во зло.
Каковы области применения пакетных снифферов?
Packet Sniffers никогда не создавались для взлома или кражи информации. У них была другая цель — сделать вещи безопасными. Но у всего есть темная сторона. Вот несколько вариантов использования:-
- Анализ сети для поиска трафика и его проблем в сети.
- Обнаружение злоумышленников если какой-то ресурс используется в больших объемах и трафик приходит с одного и того же IP снова и снова.
- Поиск незашифрованного текста, например, пароля.
- Преобразование данных в человекочитаемый формат, в основном используется на войне, чтобы завладетьвраги.
Снифферы очень трудно обнаружить из-за их пассивности, но всегда есть способ. Это был основной пост о пакетных снифферах, подумайте об этом, а мы продолжим обсуждение в следующем посте.
Источник: gud-pc.com