Многие задают вопрос: может ли Wireshark перехватывать пароли? Что ж, однозначно да! Wireshark может захватывать не только пароли, но и любую информацию, передаваемую по сети — имена пользователей, адреса электронной почты, личную информацию, изображения, видео, что угодно. Пока мы можем захватывать сетевой трафик, Wireshark может перехватывать проходящие пароли. Но вот вопрос — какие пароли? А точнее — пароли из каких сетевых протоколов мы можем перехватить? Вот в этой статье мы и рассмотрим захват паролей с помощью Wireshark.
Сетевые протоколы с обычным текстом
Так как же возможно, что Wireshark может перехватывать пароли? Это связано с тем, что некоторые сетевые протоколы не используют шифрование. Такие протоколы называются обычными текстовыми протоколами. А поскольку протоколы открытого текста не шифруют обмен данными, все данные, включая пароли, видны невооруженным глазом. Любой, кто может видеть общение, в конечном итоге может видеть все.
В следующей таблице перечислены некоторые из наиболее популярных протоколов с открытым текстом, которые все еще используются сегодня, а также некоторые другие протоколы, которые обеспечивают аутентификацию с открытым текстом:
Port | Service | Name |
tcp/20, tcp/21 | FTP | File Transfer Protocol |
tcp/23 | Telnet | Teletype Network Protocol |
tcp/25 | SMTP | Simple Mail Transfer Protocol |
tcp/80 | HTTP | Hyper Text Transfer Protocol |
tcp/110 | POP3 | Post Office Protocol |
tcp/143 | IMAP4 | Internet Message Access Protocol |
udp/161, udp/162 | SNMP | Simple Network Management Protocol |
tcp/389 | LDAP | Lightweight Directory Access Protocol |
tcp/1080 | SOCKS | SOCKetS Proxy Protocol |
tcp/1433 | MSSQL | Microsoft SQL Database |
tcp/5222 | XMPP | Extensible Messaging and Presence Protocol (Jabber) |
tcp/5432 | PostgreSQL | PostgreSQL Database |
tcp/6667 | IRC | Internet Relay Chat |
В следующих разделах мы более подробно рассмотрим эти протоколы и увидим примеры перехвата паролей с помощью Wireshark.
Отказ от ответственности: все скриншоты были отредактированы и / или изменены для защиты данных клиентов.
Захватить пароль FTP
Протокол передачи файлов (FTP) родился в 1971 году и обычно использует порты tcp / 20, tcp / 21. Хотя это очень старый протокол, некоторые организации все еще используют его в своих сетях. FTP — это простой текстовый протокол, поэтому хорошо обученный злоумышленник может очень легко перехватить учетные данные FTP с помощью Wireshark. На следующем снимке экрана показан пример пароля FTP, полученного с помощью Wireshark:
Извлечение файлов с FTP с помощью Wireshark
Поскольку FTP — это простой текстовый протокол, мы также можем фиксировать фактические данные, передаваемые по этому протоколу. Мы можем извлечь все файлы (например, изображения, документы, аудиофайлы и т. д.) из сети с помощью Wireshark.
Захват пароля Telnet
Протокол Telnet, использующий порт tcp / 23, безусловно же, в представлении не нуждается. Он используется в основном для административных целей и известен своей небезопасностью. Поскольку нет шифрования, нет ни конфиденциальности, ни защиты от подслушивания. Тем не менее Telnet используется и сегодня.
Имеется множество всевозможных устройств, использующих telnet в качестве протокола для администрирования. Для некоторых устройств telnet — один-единственный вариант, у которого отсутствуют варианты (например, нет доступных веб-интерфейсов SSH или HTTPS). Из-за этого системам очень непросто абсолютно освободиться от него. Telnet просто возможно заметить на:
-
-
- Сетевое оборудование (роутеры, коммутаторы ..)
- Системы видеоконференцсвязи (например, Cisco TelePresence)
- Системы контроля доступа (например, считыватели карт доступа)
- Системы хранения и ленты
- Принтеры и устройства обработки изображений
- Устаревшие IP-телефоны
- Мэйнфреймы
-
Поскольку telnet — это несложный текстовый протокол, отлично позиционированный соперник сможет подслушать обмен информацией и перехватить все, включительно пароли. Образец telnet-связи с захваченным паролем можно увидеть на последующем фото экрана:
Захват пароля SMTP
Несложный протокол передачи почты (SMTP) также применяется на протяжении многих десятилетий. Он использует порт tcp / 25, и хотя имеется неопасная альтернатива для порта tcp / 464, порт tcp / 25 ныне открыт практически на любом почтовом сервере благодаря обратной совместимости.
Большинству серверов на порту tcp / 25 требуется команда «STARTTLS», для того что бы инициировать шифрование SSL / TLS до любой попытке аутентификации. впрочем почтовые серверы в отдельных организациях по-прежнему поддерживают аутентификацию в варианте обыкновенного текста по незашифрованному каналу. В основном это связано с устаревшими системами в их внутренних сетях.
Когда некто применяет аутентификацию в виде обыкновенного текста во время SMTP-транзакции, неплохо позиционированный преступник сможет обнюхать учетные данные. Все, что необходимо сделать злоумышленнику, — это расшифровать base64 имя пользователя и пароль. Это связано с тем, что SMTP применяет кодировку base64 ради кодирования имени пользователя и пароля во время транзакции.
На следующем фото экрана мы видим захваченные учетные данные SMTP с использованием Wireshark и дальнейшее декодирование base64 с поддержкой утилиты base64 в Linux:
В Windows мы могли бы использовать команду certutil. exe ради декодирования захваченных учетных данных следующим образом:
echo base64encodedstring >file.b64
certutil -decode file.b64 file.txt >NUL
type file.txt
Обратите внимание, что мы вдобавок можем употреблять онлайн-инструменты, такие как base64decode. org либо base64decode. net, для декодирования base64. Но мы должны быть осмотрительны с этим — возможно, мы не хотим открывать личные учетные данные прочим сторонам в Интернете. Это особенно существенно во время тестов на проникновение и других агрессивных упражнений, когда критичность и конфиденциальность имеют главное значение.
Захватываем пароль IMAP4
Протокол доступа к сообщениям Интернета (IMAP) — еще один протокол, связанный с электронной почтой. Он использует порт tcp / 143 и обычно запрашивает команды «STARTTLS» для пуска шифрования SSL / TLS до любых попыток аутентификации. Но так же, как и SMTP, кое-какие компании по-прежнему поддерживают «простую» аутентификацию по незашифрованному каналу. В таких вариантах аутентификация видима каждому хорошо позиционируемому злоумышленнику.
На следующем снимке экрана показаны учетные данные IMAP, полученные из сети с помощью Wireshark:
Обратите внимание, что IMAP4 также использует кодировку base64 аналогично SMTP. Следовательно, необходимо снова декодировать захваченную аутентификацию, чтобы получить имя пользователя и пароль в виде открытого текста. Обратите внимание на NULL-байт (\ 0) между именем пользователя и паролем, разделяющим их на приведенном выше снимке экрана.
Захват HTTP-пароля
Протокол передачи гипертекста (HTTP) также не нуждается в представлении. Обычно он функционирует на порту 80 / tcp, и, поскольку это простой текстовый протокол, он практически не обеспечивает конфиденциальности для взаимодействующих сторон. Любой, кто имеет возможность слушать общение, сможет записывать все по данному каналу, включая пароли.
Несмотря на то, что все основные поставщики браузеров приложили громадные усилия, дабы как можно более не стимулировать применение HTTP, мы все еще можем видеть, как HTTP применяется во внутренних сетях во время тестов на проникновение. Вот пример учетных данных, записанных в HTTP-сообщении в запросе POST:
Вот еще один образец регистрации базисной аутентификации в HTTP-запросе GET. Обратите внимание, что строка аутентификации опять закодирована в base64, как и в протоколах SMTP или IMAP4. Но в случае базисной аутентификации HTTP Wireshark декодирует ее автоматически:
Подслушивая незашифрованные HTTP-сообщения, преступник еще сможет свободно перехватить сеансовые файлы cookie с помощью Wireshark. Прием файла cookie сеанса из сети имеет абсолютно такое же влияние, как и анализ учетных данных.
Захват файлов из HTTP-трафика
Используя Wireshark, мы также можем легко извлекать из сетевого трафика такие файлы, как изображения, документы и аудиофайлы. Брэд Дункан из PaloAlto Networks написал отличную статью, описывающую, как извлекать данные из различных сетевых протоколов с помощью Wireshark. Существует также инструмент Chaosreader, который позволяет извлекать данные из файла PCAP.
Захват строки сообщества SNMP
Простой протокол управления сетью (SNMP) обычно работает на порту udp / 161. Его основная цель — управлять и контролировать сетевые устройства и их функции. Существует 3 версии протокола SNMP, и первые 2 версии (v1 и v2c) представляют собой текстовые протоколы. SNMP использует так называемую строку сообщества, что эквивалентно аутентификации. Следовательно, захват строки сообщества SNMP практически такой же, как захват учетных данных.
Хотя протокол SNMPv3 существует уже почти два десятилетия, на это нужно время. Большинство организаций по-прежнему используют v1 или v2c в своих внутренних сетях. Обычно это связано с обратной совместимостью с устаревшими системами в их сетях.
Вот пример захваченной строки сообщества SNMP с помощью Wireshark:
Теперь злоумышленник мог использовать строку сообщества и собирать подробную информацию об удаленной системе. Это может позволить злоумышленнику узнать конфиденциальные сведения о системе и спланировать дальнейшие атаки против нее. Обратите внимание, что иногда строка сообщества также позволяет изменять конфигурацию в удаленной системе (доступ для чтения / записи).
Захват пароля LDAP
Облегченный протокол доступа к каталогам (LDAP) реализует протокол для доступа и обслуживания информационных служб каталога. Обычно он работает на порту tcp / 389 как незашифрованный текстовый сервис. Следовательно, он подвержен подслушиванию, как и любой другой протокол открытого текста.
LDAP может использовать несколько методов аутентификации. Самый простой метод называется «простым» и заключается в том, чтобы ввести имя пользователя и пароль в виде открытого текста. Следовательно, любой, кто имеет возможность проверять сетевой трафик, может очень легко перехватить простую аутентификацию LDAP.
Вот пример аутентификации LDAP, полученный с помощью Wireshark:
Кроме того, в средах Windows Active Directory контроллеры домена обычно открывают интерфейс LDAP через порт tcp / 389. Обычно в сети есть несколько систем, интегрированных с Active Directory с использованием интерфейса LDAP, например системы посещаемости, системы контроля доступа, принтеры и т. д. В таких случаях эти системы могут позволить злоумышленнику перехватить действительные учетные данные пользователя домена через LDAP, если они не защищены должным образом. Посмотрите здесь пример из одного из наших пентестов.
Захват пароля SOCKS
SOCKS — очень универсальный и популярный прокси-протокол, который позволяет пересылать (или туннелировать) любой TCP- или UDP-трафик между клиентом и сервером. SOCKS версии 5 также поддерживает аутентификацию. Поскольку SOCKS не выполняет никакого шифрования, все данные, проходящие через туннель, идут «как есть». Вдобавок ко всему, если мы в состоянии захватить сетевой трафик между клиентом и сервером, мы также можем захватить аутентификацию SOCKS.
Протокол SOCKS5 поддерживает несколько методов аутентификации. Один из них — имя пользователя и пароль, и поскольку нет шифрования, хорошо позиционированный злоумышленник может перехватить его с помощью анализатора пакетов.
На следующем снимке экрана показан пример аутентификации SOCKS5, полученной с помощью Wireshark:
Теперь злоумышленник может использовать прокси-сервер SOCKS и получить доступ к системам на стороне сервера.
Захватить пароль MSSQL
Сервер Microsoft SQL обычно работает на порту tcp / 1433, и это еще одна служба, для которой мы можем захватывать пароль с помощью Wireshark. Если сервер не настроен с опцией «ForceEncryption», можно перехватить аутентификацию в виде обычного текста либо напрямую, либо с помощью атаки перехода на более раннюю версию. «Человек посередине» может очень легко получить учетные данные MSSQL.
Вот пример захваченного пароля MSSQL пользователя sa с помощью Wireshark:
Обратите внимание, что в MSSQL пользователь «sa» — это учетная запись системного администратора — пользователь с наивысшими привилегиями. Следовательно, это окажет критическое воздействие, позволяя злоумышленнику получить полный контроль над сервером базы данных. Это также может привести к удаленному выполнению команд (RCE) через функциональность xp_cmdshell (ссылка, ссылка, ссылка …).
Захватить пароль PostgreSQL
PostgreSQL — еще один очень популярный сервер баз данных SQL. Он работает на порту tcp / 5432 и поддерживает различные методы аутентификации. Обычно он настроен на запрет проверки подлинности открытым текстом, но иногда он настроен так, чтобы разрешить это. В таких случаях хорошо позиционированный злоумышленник может перехватить имя пользователя и пароль, перехватывая сетевой трафик.
Обратите внимание, что аутентификация PostgreSQL идет в виде нескольких пакетов. Сначала идет имя пользователя и имя базы данных:
В последующем сетевом пакете мы также можем увидеть пароль PostgreSQL:
Захват пароля IRC
Internet Relay Chat (IRC) — это протокол чата, обычно использующий порт tcp / 6667. IRC был очень популярен еще в 90-е годы. Хотя сегодня он уже не так популярен, некоторые люди все еще используют его, и он все еще существует. Кроме того, создатели вредоносных программ и операторы бот-сетей также используют его для управления своими армиями ботов. Обычно у них есть частный IRC-сервер, защищенный паролем, или частный канал (чат) где-нибудь на публичном IRC-сервере.
Поскольку IRC — это протокол открытого текста, очень легко получить учетные данные, передаваемые по этому каналу. Вот пример пароля IRC, полученного с помощью Wireshark:
С этими учетными данными мы теперь могли подключиться к защищенному паролем IRC-серверу.
Захват пароля OSPF
Open Shortest Path First (OSPF) — это протокол маршрутизации для IP-сетей. Наиболее распространенным является OSPF версии 2, которая была указана в 1998 году. Этот протокол обычно используется в очень больших сетях и в магистральных сетях различных поставщиков услуг (например, ISP).
OSPF поддерживает несколько методов аутентификации, один из которых — простой текст. В таком случае хорошо позиционированный злоумышленник, который может подслушать обмен данными, может прослушать пароль OSPF из сети с помощью Wireshark:
Теперь злоумышленник может отправлять ложные объявления о маршруте, перенаправлять потоки сетевого трафика или нарушать предоставляемые услуги (подключение).
Захват пароля BFD
Протокол Bidirectional Forwarding Detection (BFD), указанный в 2010 году, используется для предоставления диагностической информации между двумя подключенными системами. Обычно он используется вместе с протоколами маршрутизации, такими как BGP или OSPF, для быстрого обнаружения сбоев в канале. Этот протокол обычно используется в очень больших сетях и в магистральных сетях различных поставщиков услуг (например, ISP).
Протокол BFD поддерживает несколько методов аутентификации, один из которых также является обычным текстом. В таком случае хорошо позиционированный злоумышленник, который может подслушать коммуникацию, может вынюхать пароль BFD из сети с помощью Wireshark:
Теперь злоумышленник может отправить ложную диагностическую информацию и потенциально нарушить работу служб.
Захват аутентификации STUN
Утилиты обхода сеанса для NAT (STUN), указанные в 2003 году, представляют собой набор методов для выполнения обхода NAT. Обычно он используется различными системами аудио, видео, обмена сообщениями и другими интерактивными коммуникационными системами в реальном времени (например, VoIP-телефония). Хорошо расположенный злоумышленник может легко перехватить пароль STUN с помощью Wireshark.
Вот пример захваченной аутентификации STUN с использованием Wireshark:
Теперь злоумышленник может выполнить обход NAT и потенциально создать каналы для доступа к внутренним системам извне.
Лучший подход к захвату паролей
Хотя захват паролей с помощью Wireshark может выглядеть эффективным, во время тестов на проникновение это не очень практично. Это потому, что мы должны проверять каждый пакет собственными глазами, чтобы найти пароли.
Намного лучший подход — записать сетевой трафик в файл PCAP с помощью Wireshark (или Tcpdump, Dumpcap, Tshark или аналогичного инструмента), а затем обработать файл PCAP в автономном режиме с помощью автоматических инструментов, таких как Ngrep, Ettercap или других.
Захват паролей с Ngrep
Ngrep (network grep) — один из наших любимых инструментов, когда дело доходит до быстрого анализа сети. Это похоже на программу grep (или программу findstr.exe в Windows), но для сетевого уровня. Ngrep позволяет искать в сетевом трафике и находить любые строки или шаблоны. Он поддерживает регулярные выражения, а также шестнадцатеричные выражения (двоичные строки). Ngrep был написан Джорданом Риттером.
Вот как мы можем использовать Ngrep для поиска в файле PCAP:
ngrep -I file.pcap -q -i "pattern"
-
-
- -I (читать файл PCAP)
- -q (тихий режим)
- -i (совпадение без учета регистра)
-
Вот как мы можем прослушивать пароли с помощью Ngrep из файла PCAP:
ngrep -I file.pcap -q -i ‘pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass |user |auth'
Вот еще один пример использования Ngrep с дополнительным шаблоном регулярного выражения, заимствованным отсюда:
ngrep -I file.pcap -q -i ‘[&\s?](?:login|user(?:name|)|p(ass(?:word|wd|)|w|wd))[\s:=]\s?([^&\s]*)'
Хотя Ngrep очень мощный, это не лучшее решение для сбора паролей. Не каждый сетевой протокол использует легко сопоставимый формат аутентификации (например, имя пользователя = что-то или пароль = что-то и т. д.). Кроме того, мы также, вероятно, получим много шума (ложных срабатываний) с нашими шаблонами. В конце концов, мы не сможем сопоставить все пароли, которые мы записали выше, с Wireshark.
Захват паролей с Ettercap
Проект Ettercap — еще один инструмент, который мы можем использовать для сбора паролей. Это комплексный пакет для атак «злоумышленник посередине», специально разработанный для перехвата паролей из сетевого трафика. Первоначально Ettercap был написан Альберто Орнаги и Марко Валлери.
Ettercap поддерживает целый ряд сетевых протоколов, а не только текстовые — он поддерживает также множество бинарных сетевых протоколов. Он может распознавать многие методы аутентификации и вынюхивать не только пароли, но и хэши паролей, которые впоследствии можно взломать с помощью hashcat, john the ripper или аналогичного инструмента.
Вот как мы можем прослушивать пароли с помощью Ettercap из файла PCAP:
ettercap -T -q -r file.pcap
-
-
- -T (только текстовый интерфейс)
- -q (тихий режим)
- -r (читать файл PCAP)
-
Ettercap автоматически обнаруживает интересные части пакетов — нет необходимости предоставлять ему какие-либо дополнительные аргументы. Вот пример захваченного пароля PostgreSQL с использованием Ettercap:
К сожалению, по нашему опыту, Ettercap иногда не может распознать учетные данные. К сожалению, это верно и для последней версии Ettercap (0.8.3). С другой стороны, ни один другой инструмент не может распознавать хэши и выводить их в формате, удобном для взлома, чтобы, например, взломать их с помощью John the ripper.
Захват паролей с Tshark
Tshark, вероятно, является лучшим решением для автоматического захвата паролей из сети. Несмотря на то, что он может создавать много шума, у Tshark меньше всего шансов что-то пропустить, потому что он использует те же библиотеки и диссекторы, что и Wireshark. Это означает беспрецедентное количество поддерживаемых протоколов.
Вот как мы можем прослушивать пароли с помощью Tshark из файла PCAP. Мы просто передаем его команде grep и ищем шаблоны, связанные с аутентификацией:
tshark -n -V -r file.pcap | grep -i 'authentication\|plain *text\|pass *word\|user *name\|simple:\|parameter name:\|parameter value:\|credentials:'
-
-
- -n (отключить разрешение имен)
- -V (подробный режим / развернуть все поля пакета)
- -r (читать файл PCAP)
-
Вот пример того же захваченного пароля PostgreSQL, но на этот раз с использованием Tshark:
Создание правил брандмауэра с помощью Wireshark
Хотя Wireshark не может блокировать сетевое соединение, он может помочь нам создать правила брандмауэра для нашего брандмауэра. На основе трафика, который мы смотрим, Wireshark может сгенерировать для него правило брандмауэра. Все, что нам нужно сделать, это просто выбрать пакет, который мы хотим заблокировать, и перейти в меню:
-
-
- Инструменты -> Правила ACL брандмауэра
-
Теперь мы можем скопировать и вставить выбранные правила прямо в наш брандмауэр. Wireshark поддерживает синтаксис следующих межсетевых экранов:
-
-
- Cisco IOS (стандартный / расширенный)
- IP-фильтр (ipfilter)
- IPFirewall (ipfw)
- Netfilter (iptables)
- Пакетный фильтр (pf)
- Брандмауэр Windows (netsh)
-
Вывод
Существует множество сетевых протоколов, для которых мы можем выполнить аутентификацию с помощью Wireshark. Пока мы в состоянии подслушивать сетевое общение и пока оно не зашифровано, существует риск. Хорошо позиционированный злоумышленник может перехватывать не только пароли, но и буквально любую информацию, передаваемую по сети.