Capturing FTP password with Wireshark   Захват паролей с помощью Wireshark

Захват паролей с помощью Wireshark

Многие задают вопрос: может ли 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:

Capturing FTP password with Wireshark   Захват паролей с помощью Wireshark

Извлечение файлов с FTP с помощью Wireshark

Поскольку FTP — это простой текстовый протокол, мы также можем фиксировать фактические данные, передаваемые по этому протоколу. Мы можем извлечь все файлы (например, изображения, документы, аудиофайлы и т. д.) из сети с помощью Wireshark.

Захват пароля Telnet

Протокол Telnet, использующий порт tcp / 23, безусловно же, в представлении не нуждается. Он используется в основном для административных целей и известен своей небезопасностью. Поскольку нет шифрования, нет ни конфиденциальности, ни защиты от подслушивания. Тем не менее Telnet используется и сегодня.

Имеется множество всевозможных устройств, использующих telnet в качестве протокола для администрирования. Для некоторых устройств telnet — один-единственный вариант, у которого отсутствуют варианты (например, нет доступных веб-интерфейсов SSH или HTTPS). Из-за этого системам очень непросто абсолютно освободиться от него. Telnet просто возможно заметить на:

      • Сетевое оборудование (роутеры, коммутаторы ..)
      • Системы видеоконференцсвязи (например, Cisco TelePresence)
      • Системы контроля доступа (например, считыватели карт доступа)
      • Системы хранения и ленты
      • Принтеры и устройства обработки изображений
      • Устаревшие IP-телефоны
      • Мэйнфреймы

Поскольку telnet — это несложный текстовый протокол, отлично позиционированный соперник сможет подслушать обмен информацией и перехватить все, включительно пароли. Образец telnet-связи с захваченным паролем можно увидеть на последующем фото экрана:

Capturing Telnet password with Wireshark  Захват паролей с помощью Wireshark

Захват пароля SMTP

Несложный протокол передачи почты (SMTP) также применяется на протяжении  многих десятилетий. Он использует порт tcp / 25, и хотя имеется неопасная альтернатива для порта tcp / 464, порт tcp / 25 ныне открыт практически на любом почтовом сервере благодаря обратной совместимости.

Большинству серверов на порту tcp / 25 требуется команда «STARTTLS», для того что бы инициировать шифрование SSL / TLS до любой попытке аутентификации. впрочем почтовые серверы в отдельных организациях по-прежнему поддерживают аутентификацию в варианте обыкновенного текста по незашифрованному каналу. В основном это связано с устаревшими системами в их внутренних сетях.

Когда некто применяет аутентификацию в виде обыкновенного текста во время SMTP-транзакции, неплохо позиционированный преступник сможет обнюхать учетные данные. Все, что необходимо сделать злоумышленнику, — это расшифровать base64 имя пользователя и пароль. Это связано с тем, что SMTP применяет кодировку base64 ради кодирования имени пользователя и пароля во время транзакции.

На следующем фото экрана мы видим захваченные учетные данные SMTP с использованием Wireshark и дальнейшее декодирование base64 с поддержкой утилиты base64 в Linux:

Capturing SMTP password with Wireshark  Захват паролей с помощью Wireshark

В Windows мы могли бы использовать команду certutil. exe ради декодирования захваченных учетных данных следующим образом:

echo base64encodedstring >file.b64

certutil -decode file.b64 file.txt >NUL

type file.txt

Decoding base64 with certutil.exe on Windows  Захват паролей с помощью Wireshark

Обратите внимание, что мы вдобавок можем употреблять онлайн-инструменты, такие как base64decode. org либо base64decode. net, для декодирования base64. Но мы должны быть осмотрительны с этим — возможно, мы не хотим открывать личные учетные данные прочим сторонам в Интернете. Это особенно существенно во время тестов на проникновение и других агрессивных упражнений, когда критичность и конфиденциальность имеют главное значение.

Захватываем пароль IMAP4

Протокол доступа к сообщениям Интернета (IMAP) еще один протокол, связанный с электронной почтой. Он использует порт tcp / 143 и обычно запрашивает команды «STARTTLS» для пуска шифрования SSL / TLS до любых попыток аутентификации. Но так же, как и SMTP, кое-какие компании по-прежнему поддерживают «простую» аутентификацию по незашифрованному каналу. В таких вариантах аутентификация видима каждому хорошо позиционируемому злоумышленнику.

На следующем снимке экрана показаны учетные данные IMAP, полученные из сети с помощью Wireshark:

Capturing IMAP4 authentication with Wireshark

Обратите внимание, что IMAP4 также использует кодировку base64 аналогично SMTP. Следовательно, необходимо снова декодировать захваченную аутентификацию, чтобы получить имя пользователя и пароль в виде открытого текста. Обратите внимание на NULL-байт (\ 0) между именем пользователя и паролем, разделяющим их на приведенном выше снимке экрана.

Захват HTTP-пароля

Протокол передачи гипертекста (HTTP) также не нуждается в представлении. Обычно он функционирует на порту 80 / tcp, и, поскольку это простой текстовый протокол, он практически не обеспечивает конфиденциальности для взаимодействующих сторон. Любой, кто имеет возможность слушать общение, сможет записывать все по данному каналу, включая пароли.

Несмотря на то, что все основные поставщики браузеров приложили громадные усилия, дабы как можно более не стимулировать применение HTTP, мы все еще можем видеть, как HTTP применяется во внутренних сетях во время тестов на проникновение. Вот пример учетных данных, записанных в HTTP-сообщении в запросе POST:

Capturing HTTP password with Wireshark

Вот еще один образец регистрации базисной аутентификации в HTTP-запросе GET. Обратите внимание, что строка аутентификации опять закодирована в base64, как и в протоколах SMTP или IMAP4. Но в случае базисной аутентификации HTTP Wireshark декодирует ее автоматически:

Capturing www basic authentication over HTTP with Wireshark

Захват файлов cookie сеанса HTTP

Подслушивая незашифрованные 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:

Capturing SNMP community string with Wireshark

Теперь злоумышленник мог использовать строку сообщества и собирать подробную информацию об удаленной системе. Это может позволить злоумышленнику узнать конфиденциальные сведения о системе и спланировать дальнейшие атаки против нее. Обратите внимание, что иногда строка сообщества также позволяет изменять конфигурацию в удаленной системе (доступ для чтения / записи).

Захват пароля LDAP

Облегченный протокол доступа к каталогам (LDAP) реализует протокол для доступа и обслуживания информационных служб каталога. Обычно он работает на порту tcp / 389 как незашифрованный текстовый сервис. Следовательно, он подвержен подслушиванию, как и любой другой протокол открытого текста.

LDAP может использовать несколько методов аутентификации. Самый простой метод называется «простым» и заключается в том, чтобы ввести имя пользователя и пароль в виде открытого текста. Следовательно, любой, кто имеет возможность проверять сетевой трафик, может очень легко перехватить простую аутентификацию LDAP.

Вот пример аутентификации LDAP, полученный с помощью Wireshark:

Capturing LDAP password with Wireshark

Кроме того, в средах Windows Active Directory контроллеры домена обычно открывают интерфейс LDAP через порт tcp / 389. Обычно в сети есть несколько систем, интегрированных с Active Directory с использованием интерфейса LDAP, например системы посещаемости, системы контроля доступа, принтеры и т. д. В таких случаях эти системы могут позволить злоумышленнику перехватить действительные учетные данные пользователя домена через LDAP, если они не защищены должным образом. Посмотрите здесь пример из одного из наших пентестов.

Захват пароля SOCKS

SOCKS — очень универсальный и популярный прокси-протокол, который позволяет пересылать (или туннелировать) любой TCP- или UDP-трафик между клиентом и сервером. SOCKS версии 5 также поддерживает аутентификацию. Поскольку SOCKS не выполняет никакого шифрования, все данные, проходящие через туннель, идут «как есть». Вдобавок ко всему, если мы в состоянии захватить сетевой трафик между клиентом и сервером, мы также можем захватить аутентификацию SOCKS.

Протокол SOCKS5 поддерживает несколько методов аутентификации. Один из них — имя пользователя и пароль, и поскольку нет шифрования, хорошо позиционированный злоумышленник может перехватить его с помощью анализатора пакетов.

На следующем снимке экрана показан пример аутентификации SOCKS5, полученной с помощью Wireshark:

Capturing SOCKS authentication with Wireshark

Теперь злоумышленник может использовать прокси-сервер SOCKS и получить доступ к системам на стороне сервера.

Захватить пароль MSSQL

Сервер Microsoft SQL обычно работает на порту tcp / 1433, и это еще одна служба, для которой мы можем захватывать пароль с помощью Wireshark. Если сервер не настроен с опцией «ForceEncryption», можно перехватить аутентификацию в виде обычного текста либо напрямую, либо с помощью атаки перехода на более раннюю версию. «Человек посередине» может очень легко получить учетные данные MSSQL.

Вот пример захваченного пароля MSSQL пользователя sa с помощью Wireshark:

Capturing MSSQL password with Wireshark

Обратите внимание, что в MSSQL пользователь «sa» — это учетная запись системного администратора — пользователь с наивысшими привилегиями. Следовательно, это окажет критическое воздействие, позволяя злоумышленнику получить полный контроль над сервером базы данных. Это также может привести к удаленному выполнению команд (RCE) через функциональность xp_cmdshell (ссылка, ссылка, ссылка …).

Захватить пароль PostgreSQL

PostgreSQL — еще один очень популярный сервер баз данных SQL. Он работает на порту tcp / 5432 и поддерживает различные методы аутентификации. Обычно он настроен на запрет проверки подлинности открытым текстом, но иногда он настроен так, чтобы разрешить это. В таких случаях хорошо позиционированный злоумышленник может перехватить имя пользователя и пароль, перехватывая сетевой трафик.

Обратите внимание, что аутентификация PostgreSQL идет в виде нескольких пакетов. Сначала идет имя пользователя и имя базы данных:

Capturing PostgreSQL username and dbname with Wireshark

В последующем сетевом пакете мы также можем увидеть пароль PostgreSQL:

Capturing PostgreSQL password with Wireshark

Захват пароля IRC

Internet Relay Chat (IRC) — это протокол чата, обычно использующий порт tcp / 6667. IRC был очень популярен еще в 90-е годы. Хотя сегодня он уже не так популярен, некоторые люди все еще используют его, и он все еще существует. Кроме того, создатели вредоносных программ и операторы бот-сетей также используют его для управления своими армиями ботов. Обычно у них есть частный IRC-сервер, защищенный паролем, или частный канал (чат) где-нибудь на публичном IRC-сервере.

Поскольку IRC — это протокол открытого текста, очень легко получить учетные данные, передаваемые по этому каналу. Вот пример пароля IRC, полученного с помощью Wireshark:

Capturing IRC password with Wireshark

С этими учетными данными мы теперь могли подключиться к защищенному паролем IRC-серверу.

Захват пароля OSPF

Open Shortest Path First (OSPF) — это протокол маршрутизации для IP-сетей. Наиболее распространенным является OSPF версии 2, которая была указана в 1998 году. Этот протокол обычно используется в очень больших сетях и в магистральных сетях различных поставщиков услуг (например, ISP).

OSPF поддерживает несколько методов аутентификации, один из которых — простой текст. В таком случае хорошо позиционированный злоумышленник, который может подслушать обмен данными, может прослушать пароль OSPF из сети с помощью Wireshark:

Capturing OSPF password with Wireshark

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

Захват пароля BFD

Протокол Bidirectional Forwarding Detection (BFD), указанный в 2010 году, используется для предоставления диагностической информации между двумя подключенными системами. Обычно он используется вместе с протоколами маршрутизации, такими как BGP или OSPF, для быстрого обнаружения сбоев в канале. Этот протокол обычно используется в очень больших сетях и в магистральных сетях различных поставщиков услуг (например, ISP).

Протокол BFD поддерживает несколько методов аутентификации, один из которых также является обычным текстом. В таком случае хорошо позиционированный злоумышленник, который может подслушать коммуникацию, может вынюхать пароль BFD из сети с помощью Wireshark:

Capturing BFD password with Wireshark

Теперь злоумышленник может отправить ложную диагностическую информацию и потенциально нарушить работу служб.

Захват аутентификации STUN

Утилиты обхода сеанса для NAT (STUN), указанные в 2003 году, представляют собой набор методов для выполнения обхода NAT. Обычно он используется различными системами аудио, видео, обмена сообщениями и другими интерактивными коммуникационными системами в реальном времени (например, VoIP-телефония). Хорошо расположенный злоумышленник может легко перехватить пароль STUN с помощью Wireshark.

Вот пример захваченной аутентификации STUN с использованием Wireshark:

Capturing STUN authentication with 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:

Example of captured PostgreSQL password using 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:

Example of captured PostgreSQL password using Tshark

Создание правил брандмауэра с помощью Wireshark

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

      • Инструменты -> Правила ACL брандмауэра

Create firewall ACL rules with Wireshark

Теперь мы можем скопировать и вставить выбранные правила прямо в наш брандмауэр. Wireshark поддерживает синтаксис следующих межсетевых экранов:

      • Cisco IOS (стандартный / расширенный)
      • IP-фильтр (ipfilter)
      • IPFirewall (ipfw)
      • Netfilter (iptables)
      • Пакетный фильтр (pf)
      • Брандмауэр Windows (netsh)

Вывод

Существует множество сетевых протоколов, для которых мы можем выполнить аутентификацию с помощью Wireshark. Пока мы в состоянии подслушивать сетевое общение и пока оно не зашифровано, существует риск. Хорошо позиционированный злоумышленник может перехватывать не только пароли, но и буквально любую информацию, передаваемую по сети.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.