Глава 5. Поиск уязвимостей протокола

Содержание

Глава 5. Поиск уязвимостей протокола
Тестирование чёрного ящика, белого ящика и серого ящика
Чёрный ящик и распушение
Тестирование корпоративных сетевых сред
Тестирование поставщиков сетевых услуг
Этапы распушения
Этап 1 - идентификация цели распушения
Этап 2 - определение возможных входных данных
Этап 3 - выработка и исполнение данных распушения
Этап 4 - выполнение и наблюдение за результатами
Распространённые уязвимости
Уязвимости на основе 2 Уровня
Уязвимости на основе 3 Уровня
Уязвимости на основе 4 Уровня
Уязвимости на основе 5 Уровня
Уязвимости на основе 6 Уровня
Уязвимости на основе 7 Уровня
Инструменты распушения
Основы распушения
Windows
Linux
Взлом имён пользователей и паролей (атаки брутальной силой)
Windows
Linux
Сетевые протоколы распушения
Инструменты Windows
Инструменты Linux
Анализ крушений - что делать при обнаружении ошибки
Выводы
Вопросы

Проще говоря, наша цель при поиске уязвимостей протокола состоит в том чтобы выявить слабые места в своей сетевой среде до того как их обнаружит кто- то другой. Один из применяемых для этого инструментов носит название тестирования на пух (fuzz testing) или распушение (fuzzing).

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

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

В данной главе мы намерены рассмотреть следующие основные темы:

  • Тестирование чёрного ящика, белого ящика и серого ящика

  • Чёрный ящик и распушение

  • Распространённые уязвимости

  • Средства и код распушения

  • Анализ крушений - что предпринимать при обнаружении ошибки

Давайте начнём с чёрного ящика и распушения, рассмотрим что они собой представляют и изучим как ими пользоваться.

Тестирование чёрного ящика, белого ящика и серого ящика

Распушение (фаззинг) - это то, что называется тестированием чёрного ящика, но прежде чем мы углубимся в детали, давайте разберёмся с тестированием чёрного ящика, белого ящика и серого ящика.

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

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

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

Когда мы говорим о тестировании безопасности, при проверке проникновений в чёрный ящик сам тестировщик не снабжается никакими сведениями об имеющихся сетевых структуре и устройствах, а потому тестировщику приходится начинать с чистого листа, составлять карту целевой сети и пытаться выявить в ней уязвимости.

Чёрный ящик и распушение

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

  • Прорыв в эту систему в результате атаки

  • Получение секретных сведений из этого пребывающего под атакой устройства

  • Крушение данной подверженной атаке системы

Хотя классическое применение средств распушения (распыления) состоит в тестировании программного обеспечения, в данной главе мы рассмотрим особую его сторону, при которой мы пользуемся им для прорыва в устройства взаимодействия, их крушения и манипуляции ими.

Другой важной проблемой является то, что в отличие от серверов, оборудование взаимодействия соединяет сетевые среды и VLAN (Virtual Local Area Networks, локальные сети) и тем самым обычно обладает несколькими интерфейсами, которые соединены с несколькими VLAN и/ или с несколькими сетевыми средами. Риски могут происходить из одной из них, а потому тестирование следует осуществлять из различных мест по разным физическим портам.

Сетевые устройства могут настраиваться на приём или для отвержения конкретных запросов из определённых интерфейсов. Скажем, доступ через SNMP (Simple Network Management Protocol) может допускаться только со станции управления организацией, что определяется её IP адресом, протокол маршрутизации OSPF (Open Shortest Path First) может быть разрешён с определённых маршрутизаторов, регистрация Telnet или SSH (Secure Shell) могут позволяться из вашей внутренней сети и так далее. Сам процесс распушения должен выполняться через первичное сканирование самой сетевой среды и поиска открытых портов, а затем перехода на следующий уровень и применения средств распушения для манипуляции самим пребывающим под атакой устройством через прослушиваемые им порты TCP (Transport Control Protocol) и UDP (User Datagram Protocol).

Тестирование корпоративных сетевых сред

В корпоративных сетевых средах, как видно из Рисунка 5.1, нам надлежит выполнять такое тестирование:

 

Рисунок 5.1


Пункты атаки и корпоративные сетевые среды

  • Тестирование в межсетевых экранах, из самой внутренней сети, её DMZ (Demilitarized Zone) и из Интернета - при более сложных топологиях из сех сетевых сред, к которым подключён такой межсетевой экран.

  • В маршрутизаторах тестирование надлежит осуществлять из LAN (Local Area Network, локальной сети) и, когда это возможно, также и из интерфейсов WAN (Wide Area Network, глобальной сети). Например, когда мы подключаем своё устройство проверки, как правило, ноутбук с Windows или Linux в нём к коммутатору SZ (Secured Zone, зоны безопасности) в сети своего центра обработки данных (ЦОД), мы будем способны сканировать и распушать как межсетевые экраны, так и маршрутизаторы, которые соединяют нас с WAN и удалёнными офисами.

  • Доступ к коммутаторам локальной сети можно осуществлять когда вы напрямую подключены к ним или через доступ к управлению этим коммутатором из внешних сетевых сред.

  • Доступ к Wi-Fi (Wireless networks, беспроводным сетям) может осуществляться из любой точки, в которой вы наблюдаете эту сеть, которыми являются все места, которые допускают ваш адаптер Wi-Fi и видят в своём перечне эту сеть.

Тестирование поставщиков сетевых услуг

В сетевых средах поставщиков, как поставщики мобильной связи или соединений наземной линией связи, вся сетевая среда обычно делится на плоскость данных и плоскость управления. Как видно из Рисунка 5.2, существуют два прохода - проход данных и проход сигналов. В данном примере мобильная сеть соединена как с Интернетом, так и с нашей корпоративной сетью. Подключение к Интернету через мобильную сеть это то, что все мы осуществляем ежедневно (и ежечасно); подключение к нашей корпоративной сети требует выделенных VPN (Virtual Private Network, виртуальной частной сети) или n мобильных определений APN (Access Point Name, имён точек доступа), которые допускают подключение к ним. На нашей следующей схеме мы можем видеть саму структуру и все основные компоненты мобильной сети:

 

Рисунок 5.2


Пункты атаки и сетевые среды поставщика услуг

Мобильные сети составляются из двух типов устройств и проходов:

  • Самая первая часть такой сетевой среды состоит тех устройств и соединений, которые переправляют собственно данные пользователей. Она носит название плоскости данных (на нашем рисунке полные сплошные линии).

  • Вторая часть составлена из тех устройств, которые управляют этой сетью и ответственны за регистрацию пользователей, перенаправление вызовов, авторизацию действий пользователя и тому подобного. Она именуется плоскостью управления (на нашем рисунке прерывистая линия).

Когда мы подключаемся при помощи своего сотового телефона в соответствующей сетевой среде, в данном примере сотовая сеть 4G, наши данные проходят через прогон данных, а потому наши сведения проходят через соответствующий aGW, который содержит маршрутизаторы sGW и pGW, которыми являются маршрутизаторы сотовой сети. Короче говоря, sGW (Serving Gateway, обслуживающий шлюз) это подключённый к сотовой площадке маршрутизатор (eNodeB), который пересылает пакеты к пользователю и от него, в то время как PDN (Packet Data Network) Gateway (pGW, шлюз сети пакетов данных) это маршрутизатор, который отвечает за политику и улучшение качества обслуживания, фильтрацию пакетов и прочие функциональные возможности. Такой термин aGW (Access Gateway, шлюз доступа) относится к функциональным возможностям двух устройств - sGW и pGW. Проход сигналов, который содержит сотовые базы данных и серверы управления выходит из нашей зоны.

Хотя собственно сетевые компоненты в сотовых сетях 5G носят название функций, они обладают некой аналогией с 4G - сама сетевая площадка, которая имела название eNodeB становится gNodeB, необходимые функции sGW в 5G реализуются AMF (Access and Mobility Management Function, функциями доступа и мобильности), pGW реализуется SMF (Session Management Function, функциями управления сеансом) и UPF (User Plane Function, функциями плоскости пользователя) и так далее. Самым важным моментом является то, что всегда будут иметься маршрутизаторы, которые переносят необходимые пакеты пользователя, причём эти маршрутизаторы обязаны быть защищёнными.

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

Этапы распушения

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

  1. Идентификация цели распушения.

  2. Определение возможных входных данных.

  3. Выработка и исполнение данных распушения.

  4. Выполнение и наблюдение за результатами.

Давайте окунёмся в подробности и рассмотрим некоторые примеры.

 

Этап 1 - идентификация цели распушения

На данном этапе мы определяем где находится наша цель (IP адрес), какие службы в ней открыты (порты TCP/ UDP) и что представляет собой эта цель (характерные признаки ОС или прежние данные).

 

Этап 2 - определение возможных входных данных

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

В нашем следующем примере мы можем наблюдать образец Nmap (Network Mapper), применяемого для сканирования удалённого межсетевого экрана при помощи команды nmap -O -A <target-system> (по очевидным причинам адрес межсетевого экрана затёрт):

 

Рисунок 5.3


Базовое сканирование NMAP целевого межсетевого экрана

Из данного сканирования мы видим, что у нас имеется контрольная точка межсетевого экрана, мы можем наблюдать открытые порты TCP (80, 264, 443 и 500), мы можем видеть что там запущена операционная система OpenBSD версии 4.0 или 4.3 Unix/Linux, а относительно типа устройства, мы можем наблюдать что это версия программного обеспечения NGX.

Из этих сведений мы способны вывести базу данных уязвимостей и определить выявленные в этом типе устройства уязвимости.

[Замечание]Замечание

База данных уязвимостей это список общеизвестных уязвимостей кибербезопасности. Имеется большое число содержащих такие списки вебсайтов, среди них https://cve.mitre.org/index.html, в котором вам следует зайти в механизм поиска https://cve.mitre.org/cve/search_cve_list.html, https://www.securityfocus.com/vulnerabilities и прочие.

Например, в https://www.securityfocus.com/vulnerabilities, вы можете обнаружить различные уязвимости в оборудовании производителей (в нашем случае не так много) и вы способны начать наблюдать направления для тестов распыления:

 

Рисунок 5.4


Перечень уязвимостей

Как мы видели на Рисунке 5.3, воспользовавшись NMAP, мы обнаружили в изучаемом межсетевом экране такие открытые порты TCP:

  • 80 (HTTP): К нему может выполняться доступ различными приложениями анализа HTTP; вы можете найти их список в меню Kali Linux анализа веб приложений (номер 3 в перечне инструментов Kali Linux, представленного в разделе Инструменты коммерческие, с открытым исходным кодом и на основе Linux из Главы 4, Применение инструментов, сценариев и кода сетевой безопасности).

  • 264 (BGMP - Border Gateway Multicast Protocol, протокол группового обмена пограничного шлюза): Контрольные точки пользуются этим номером порта для безопасных удалённых клиентов - именно так удалённые клиенты устанавливают подключения к соответствующей сетевой среде организации.

  • 443 (Безопасный HTTP - HTTPS): Открыт для удалённого управления этим межсетевым экраном, Безопасный HTTP это подключение по HTTP, превращаемое в безопасное посредством SSL (Secured Socket Layer)/ TLS (Transport Layer Security).

  • 500 (ISAKMP - IP Security (IPSec)/Internet Security Association and Key Management Protocol, протокол ассоциации безопасности Интернета и управления ключами): Применяется для соединения VPN между этим межсетевым экраном и удалёнными межсетевыми экранами удалённых клиентов.

 

Этап 3 - выработка и исполнение данных распушения

На этом этапе мы создаём данные, которые будут отправляться в нашу тестируемую систему. Это могут быть предварительно определённые строки (скажем, заранее заданные сценарии NMAP), обычно применяемые таким устройством данные, тем не менее, изменённые, либо просто случайные данные, такие как пакеты SYN TCP, выбранные случайным образом команды HTTP и тому подобное.

 

Этап 4 - выполнение и наблюдение за результатами

На этом этапе мы отправляем свои сведения в тестируемую нами систему и наблюдаем за получаемыми результатами. Делаем выводы и размышляем о последующих замерах. Всегда есть ещё что- то.

Итак, давайте проследуем далее и обсудим некоторые распространённые уязвимости.

Распространённые уязвимости

Для сетевых протоколов мы ссылаемся на протоколы Уровней 2 - 7 OSI. На следующей схеме вы можете найти напоминание эталонной модели OSI и её функциональных возможностей:

 

Рисунок 5.5


Эталонная модель OSI

Вот подробности этой эталонной модели OSI:

  • Уровень 1, физический уровень: отвечает за физическую связь, такую как кабели, розетки и частоты для беспроводных и сотовых сетей.

  • Уровень 2, канальный уровень: ответственен за соединение между подключаемыми напрямую элементами. В наземных подключениях основным протоколом выступает Ethernet.

  • Уровень 3, сетевой уровень: это уровень, который отвечает за перенос сведений из конца в конец. Одним из протоколов данной уровня является IP.

  • Уровень 4, транспортный уровень: это отвечающий за подключение конечного процесса уровень. Основными протоколами данного уровня являются TCP и UDP, а в последние годы к ним также присоединились QUIC (Quick UDP Internet Connections) и GQUIC (Google QUIC) от Google.

  • Уровень 5, уровень сеанса: это уровень, который отвечает за подключение уровней более верхнего порядка (Уровней 5, 6 и 7). RPC (Remote Procedure Call) это пример протокола уровня сеанса.

  • Уровень 6, уровень представления: отвечает за структуру данных и представление самих данных. Типичными образцами уровня представления выступают протоколы шифрования и кодирования.

  • Уровень 7, уровень приложения: поддерживает сами приложения, например, HTTP, SMTP, (Simple Mail Transfer Protocol), SIP (Session Initiation Protocol) и тысячи прочих приложений.

Вооружившись имеющимися уровнями мы можем рассмотреть приводимые далее уязвимости каждого из них.

Уязвимости на основе 2 Уровня

В протоколах канального уровня присутствуют уязвимости, например в проводном и беспроводном Ethernet. Поиск по базе данных https://cve.mitre.org/cve/search_cve_list.html для Ethernet снабдит вас длинным перечнем уязвимостей.

Здесь вы можете обнаружить уязвимости в адаптерах Ethernet, такие как:

  • Уязвимость ACL (Access Control List) в программном обеспечении IOS XR Cisco, которая допускает доступ не прошедшему проверку подлинности удалённого злоумышленника к настроенным IP процессоре интерфейса Gigabit Etherne управления маршрутизатором (CVE-2020-3364).

  • Уязвимость в контроллере Medicon M340, при которой получаемые этим устройством усечённые SNMP пакеты по порту 161/UDP способны вызывать DoS.

[Замечание]Замечание

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

Уязвимости на основе 3 Уровня

В протоколах сетевого уровня, таких как протокол IP, имеются уязвимости, в том числе уязвимости в DHCP (Dynamic Host Configuration Protocol), ICMP (Internet Control Message Protocol), протоколах маршрутизации и протоколах группового обмена. Поиск для IP, ICMP, OSPF, BGP или DHCP снабдит вас большим числом проблем, обсуждаемым в системах различных производителей, включая лидирующих. Имеющиеся тут проблемы содержат такие моменты как:

  • Возможность того, что удалённо атакующий злоумышленник способен наблюдать чувствительные сведения в телефонах серии Cisco IP 7800 и 8800 (CVE-2020-3360). Устройства Juniper с некоторыми линиями карт могут становиться запрещёнными при получении больших требующих фрагментации пакетов (CVE-2020-1655).

  • Уязвимость в реализации BGP (Border Gateway Protocol) MD5 (Message Digest 5). Программное обеспечение Cisco NX-OS способно допускать удалённому атакующему злоумышленнику обходить аутентификацию MD5 и устанавливать соединение BGP с этим устройством, что может вызывать сетевые отказы (CVE-2020-3165).

Уязвимости на основе 4 Уровня

В протоколах транспортного уровня, таких как TCP, UDP, QUIC, GQUIC или SCTP существуют уязвимости, способные приводить к крушениям систем и допускают взлом соединений и прочие атаки. Вот некоторые примеры:

  • Поток отправляемых в RE (Routing Engine) устройства Junos OS из сетевых сред Juniper способен вызывать утечку памяти буфера, что влечёт за собой крах системы и её перезапуск (CVE-2020-1653).

  • Встроенное ПО версии 1.5 b и боле ранних Moxa NPort 5150A допускает атакующему получать различные сведения конфигурации отправляя пакет UDP на порт 4800 (CVE-2020-12117).

Уязвимости на основе 5 Уровня

В протоколах уровня сеанса, например, RPC, Telnet, SSH и прочих, присутствуют уязвимости. Вот некоторые образцы:

  • Уязвимость в службе Telnet межсетевых экранов VPN Cisco Small Business RV110W Wireless-N, которая способна позволять атакующему злоумышленнику получать полный контроль над устройством с учётной записью с наивысшими полномочиями (CVE-2020-3330).

  • Переполнение буфера на основе стека в Advantech WebAccess/SCADA версии 8.4.0 делает возможным для атакующего злоумышленника исполнение произвольного кода отправляя вызов RPC IOCTL 81024 (CVE-2019-3954).

Уязвимости на основе 6 Уровня

В протоколах уровня представления, которые определяют структуры и представления данных, таких как HTML, XML, протоколах шифрования и других, существуют уязвимости. Здесь имеется большое число проблем. Большинство из них заключено в веб приложениях, приложениях конференций и кооперации, таких как Webex и Zoom, доступе к веб браузерам и прочие выходящие за пределы этой книги проблемы. Вот некий пример:

  • Уязвимость в сетевом записывающем плейере Cisco Webex и в плейере для Microsoft Windows, которая, вероятно, позволяет атакующему вызывать крах процесса, что будет в результате приводить к условию DoS (Denial of Service) для приложения плейера в подверженной воздействию системе (CVE-2020-3322).

Уязвимости на основе 7 Уровня

На уровня приложения имеются уязвимости, а в контексте протоколов взаимодействия существуют проблемы доступа HTTP во взаимодействующих устройствах, уязвимости в серверах VoIP и серверах электронной почты, уязвимости DNS и многие прочие проблемы. Вот некоторые образцы:

  • Уязвимость в интерфейсе веб службы межсетевого экрана ASA (Adaptive Security Appliance) и в программном обеспечении FTD (Firepower Threat Defense). Это программное обеспечение позволяет удалённо атакующему злоумышленнику проводить атаки прослеживания каталога и считывать чувствительные сведения из целевых систем (CVE-2020-3452).

  • Настройка балансировщика нагрузок F5 BIG-IP с большим числом параметров может вызывать избыточную загрузку ЦПУ (CVE-2018-5541).

Давайте рассмотри какие средства могут применяться для поиска таких уязвимостей.

Инструменты распушения

При тестировании безопасности сетевых протоколов и устройств для ряда целей может применяться распыление:

  • Взлом имён пользователей и паролей (атаки перебором)

  • Вывод из строя целевого устройства или какой- то его функциональной возможности

  • Манипулирование выполняемым в данном устройстве процессами взаимодействия

Давайте окунёмся в подробности.

Основы распушения

В основе распыления может быть простая отправка данных в устройство и просмотр того что происходит. Для этого имеется ряд вариантов.

 

Windows

Для Windows/ Linux вы можете пользоваться функциональными возможностями NMAP, например, сканированием адресов IP, сканированием портов TCP и различными инструментами сценариев. NMAP для Windows обсуждался в разделе Инструменты получения сведений и анализа пакетов из Главы 4, Применение инструментов, сценариев и кода сетевой безопасности).

 

Linux

В Linux вы можете применять такие простые средства как Netcat. В приводимом далее примере вы можете наблюдать сценарий Netcat, который случайным образом производит обмен и отправляет его в <target-host> <target-port>:


while [ 1 ]; do cat /dev/urandom | nc -v <target-host> <targetport>; done
 	   

Что тут у нас есть:

  • while [ 1 ]: неограниченно отправляет данные (может присутствовать любое число или буква).

  • do cat /dev/urandom: выполняет выработку случайного числа.

  • nc или netcat: Netcat отправляет получателю данные.

  • -v - verbose: выдаёт на ваш экран подробный вывод.

  • target-host и target-port: то, что подразумевают названия.

  • done: для завершения данного сценария.

Эта простая команда для моего домашнего маршрутизатора, 10.0.0.138, как вы можете наблюдать на приводимом ниже снимке экрана, оказалась достаточной для того чтобы мой маршрутизатор забуксовал. Вы можете наблюдать это из индикаций Wireshark [TCP Window Full] по отправляемому от 10.0.0.23 (мой ноутбук Linux) к 10.0.0.138 (целевой маршрутизатор).

 

Рисунок 5.6


Применение образца Netcat

Отсюда вы можете заключить, что домашний маршрутизатор может быть перегружен простым сценарием, и это ещё до того как мы испробовали какие бы то ни было искушённые сценарии. Для реальной сетевой среды мы, естественно, испробуем нечто более жёсткое.

Взлом имён пользователей и паролей (атаки брутальной силой)

Для взлома имён пользователей и паролей в Windows мы всё ещё можем пользоваться NMAP или любым вариантом из меню 4 - Password Attach в Kali Linux. В своём следующем примере мы обнаружим некоторые распространённые средства для Windows и Linux.

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

Применение перечней слов превращает процесс взлома в намного более быстрый. Списки слов вы можете найти на вебсайте John the Ripper, в GitHub и в прочих местах, а кроме того, вы можете писать их самостоятельно. Чем лучше ваш список паролей, тем быстрее вы будете способны взломать своё целевое устройство. Имеются два предварительно заданных перечня, которыми вы можете воспользоваться. Эти файлы находятся в /usr/share/wordlists.

[Замечание]Замечание

Составление перечней слов это научная проблема, а как вам составлять его действенным это предмет для математиков и психологов. Скажем, если вы желаете угадать пароль из 8 символов, который выполнен только из английских букв в нижнем регистре, у нас имеется 268 возможностей (208 миллиардов вариантов). Когда мы добавляем заглавные буквы, мы получаем 528; если мы применяем заглавные и прописные буквы с паролями от 1 до 8 символов, мы имеем 521 + 522 + 523 + ... + 528; а когда мы добавляем специальные символы (!@#$....), у нас будет намного больше вариантов.

Имеется большое число сосредоточенных на этом вопросе площадок и это выходит за раки данной книги.

 

Windows

В Windows вы можете воспользоваться для взлома перебором вариантом NMAP (в закладке Scripting меню Profile, New Profile или Command, или Edit Selected Profile). На нашем следующем снимке экрана вы можете наблюдать атаку перебором на 10.0.0.138 с применением сценариев NMAP:

 

Рисунок 5.7


Применение образца NMAP

Для более интеллектуального взлома вы можете воспользоваться дополнительными средствами, такими как John the Ripper, которые можно найти на John the Ripper, Hydra и прочими. Вы также можете применять версию с графическим интерфейсом, Johnny. Файлы для её установки можно получить с johnny#Features.

 

Linux

Для взлома паролей в Linux имеются различные средства, включая NMAP, John the Ripper, Ncrack, Hydra, Crunch и иные. Давайте в качестве примера применим для взлома Telnet к 10.0.0.138 Hydra:


sudo hydra -l user -P /usr/share/wordlists/rockyou.txt telnet://10.0.0.138
 	   

Здесь мы применяем следующее:

  • sudo: переключаемся на superuser (пользователя с наивысшими полномочиями).

  • hydra: команда взлома.

  • nc или netcat: Netcat отправляет получателю данные.

  • -l user: имя пользователя user.

  • -P /usr/share/wordlists/rockyou.txt: используем файл паролей rockyou.txt.

  • telnet://10.0.0.138: имя службы и её IP адрес.

Давайте рассмотрим как пользоваться этими инструментами.

Сетевые протоколы распушения

Существует два пути атак на сетевые протоколы и устройства:

  • Распыление на основе перебора или на основе мутации: Здесь мы отправляем данные в атакуемое устройство, сосредотачиваясь на параметрах, о которых нам известно что они принимаются этим устройством, таких как имя пользователя и пароль или на полученных перед распушением сведениях, к примеру, перехваченных через Wireshark данных и принимаемых данным устройством и далее применяемым для манипуляций этим отправителем.

  • Интеллектуальное распыление протокола: Какие- то протоколы являются простыми, какие- то сложными, а некоторые совсем сложными, и существуют случаи (многие из которых я запомнил за свою тридцатилетнюю практику в этой отрасли), когда реализованы не все функциональные возможности протокола, а также такие присутствующие, которые не реализованы в точности с имеющимся стандартом. Интеллектуальное применение распушение в данном случае может проверять наличие уязвимостей, которые не ожидались их производителем.

В наших последующих разделах мы рассмотрим некоторые средства Windows и Linux, которые могут применяться для распушения протокола взаимодействия.

 

Инструменты Windows

Существует ряд ситуаций, в которых вы можете пользоваться NMAP для распушения сетевых протоколов и среди них dns-fuzz, который может применяться для атак на серверы DAN (не так успешно, могу сообщить), команду http-form-fuzzer, применяемую для найденных в вебсайте форм. Позднее в данной книге мы будем применять сценарии NMAP, когда будем обсуждать безопасность протоколов взаимодействия.

 

Инструменты Linux

Для сетевых протоколов в Linux мы будем пользоваться средством Spike с предопределёнными или с пользовательскими сценариями.

Spike это инструмент создания распыления, который может создавать персонализированные распушения для сетевых протоколов с применением языка программирования C. Spike определяет несколько примитивов, которые можно применять при помощи C, что позволяет ему строить сообщения распушения с названием экземпляров SPIKE, которые могут отправляться в сетевые службы для тестирования.

В /usr/share/spike/audits имеется большое число предварительно определённых сценариев Spike. Это файлы с расширением .spk. Для их нахождения наберите команду locate .spk.

Собственно команды spike расположены в /usr/bin. Мы сосредоточимся на таких командах:


Generic_send_tcp
Generic_send_udp
 	   

Вы можете исполнять эту команду следующим образом:


cd /usr/bin
./generic_send_tcp  <destination-port> <file-name> 0 0
 	   

Здесь мы применяем следующее:

  • ./generic_send_tcp: название команды.

  • <destination-address>: целевой адрес.

  • <destination-port>: целевой порт.

  • <file-name>: файл Spike для исполнения.

  • 0 0: параметры тайминга.

Вот реальный пример:


cd /usr/bin
./generic_send_tcp 10.0.0.138 80 /usr/share/spike/audits/SSL/ssl.spk 0 0
 	   

Здесь вы можете воспользоваться предварительно определёнными сценариями Kali Linux, выгрузить сценарии из Интернета или написать их самостоятельно. Давайте посмотрим некоторые образцы:


cd /usr/bin
./generic_send_tcp 10.0.0.16 139 usr/share/spike/audits/CIFS.netbios1.spk 0 0
 	   

Наш предыдущий пример распыляет протокол CIFS по порту 139 в 10.0.0.16.

Приводимая ниже команды будет делать то же самое с портом 137:


cd /usr/bin
./generic_send_tcp 10.0.0.16 137 usr/share/spike/audits/CIFS.netbios1.spk 0 0
 	   

В данном разделе мы обсудили какие средства применять и что отправлять в тестируемые устройства. Теперь мы рассмотрим что мы делаем с этими результатами.

Анализ крушений - что делать при обнаружении ошибки

Наиболее распространённый способ отчёта о уязвимости системы состоит в его публикации у соответствующего производителя и проверке того, что они опубликовали его с тем, чтобы все потенциально подвергающиеся ей пользователи смогут выгружать исправление для неё, когда оно будет опубликовано. Основная проблема здесь заключается в том, что не все производители имеют установленную методологию относительно того как они исправляют такую уязвимость, публикуют его и уведомляют своих потребителей.

[Замечание]Замечание

Важной проблемой является то, что во многих странах взлом систем незаконен. Например, в США это федеральное преступление, намеренно получать доступ без разрешения к защищённому компьютеру и в результате такого поведения по неосторожности причинить ущерб (раздел 5B) и в результате такого поведения причинять ущерб или убытки (раздел 5C) многое иное (Computer Fraud and Abuse Act: Fraud and related activity in connection with computers - 18 U.S.C. 1030). В таких странах как США будьте аккуратны и в идеале перед тем как действовать, проконсультируйтесь с адвокатом.

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

Вы также можете публиковать ошибки в таких местах как Zero Day Initiative (ZDI) или на прочих площадках, которые вознаграждают исследователей безопасности за поиск ошибок (на верхнем уровне вы можете получать до десятков тысяч долларов США). Например, Google заплатил исследователям безопасности и хакерам более 21 миллиона долларов вознаграждения за обнаружение ошибок, причём 6.5 миллионов долларов только в 2019 году. Microsoft заплатила исследователям безопасности и хакерам 13.7 миллионов долларов в качестве поощрения за выявление ошибок только за один год, аналогично Facebook и многие прочие.

Выводы

В этой главе мы обсудили специальные средства, которые применяются для взлома сетевых среди сетевых протоколов, а также то какие из них надлежит применять в каждом из уровней эталонной модели OSI. Знакомство с применением каждого из этих инструментов позднее поможет вам понимать где какой именно инструмент применять.

В своих следующих главах мы начнём погружаться в конкретные протоколы, начиная с Уровня 2, Wi-Fi и Ethernet, и продолжим с IP, TCP/ UDP и протоколами и приложениями верхних уровней.

Вопросы

  1. Тестирование чёрного ящика это когда:

    1. Известна вся информация об этой цели.

    2. Нет никаких сведений о данной цели.

    3. Сам цель остаются в тени.

    4. Известна лишь часть сведений о цели.

  2. Тестирование распушением или распыление (фаззинг) это

    1. Угадывание того чем является целевая система

    2. Отправка в подвергаемое тестированию устройство случайных данных и анализ получаемых результатов

    3. Отправка в подвергаемое тестированию устройство предварительно определённых данных и анализ получаемых результатов

    4. Угадывание паролей и попытка взлома тестируемого устройства

  3. Правильный порядок тестирования распушением (фаззингом) это

    1. Выявление самой цели, определение её входных данных, выработка данных, исполнение и отслеживание получаемых результатов.

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

    3. Попытка получить применяемый пароль, выявление самой цели, определение её входных данных, выработка данных, исполнение и отслеживание получаемых результатов.

    4. Поиск надлежащих средств, выявление самой цели, определение её входных данных, выработка данных, исполнение и отслеживание получаемых результатов.

  4. Уязвимостью Уровня 5 эталонной модели OSI может быть:

    1. Отказ в подключении к протоколам приложения

    2. Взлом сеансов и подключение с угаданным паролем

    3. Неверная настройка стека протокола TCP/IP

    4. Переполнение буфера

  5. Атака брутальной силой:

    1. Отправляет гигантский обмен для вызова крушения своей цели

    2. Сканирует свою целевую сетевую среду для поиска подходящего шлюза в эту сеть

    3. Это вид DDoS атаки

    4. Применяет механизмы угадывания паролей для взлома системы