Главная

Thursday, 8 April 2021

Проводим пентест, часть 1 - проникаем в сеть.

Всем привет.

Сегодня я открываю серию публикаций Андрея Бирюкова, посвященных проведению аудита и теста на проникновение(пентест) с помощью свободно распространяемого ПО прежде всего с помощью инструментов, входящих в состав дистрибутива Kali Linux. Оригинал статьи был опубликован в журнале "Системный администратор" №04(161), апрель 2016.

Часть 1. Проникаем в беспроводную сеть.

Насколько защищена ваша беспроводная сеть? Изучим различные способы проведения тестов на проникновение в нее.

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

Этой статьей я открываю серию публикаций, посвященных проведению аудитов и тестов на проникновение с помощью свободно распространяемого ПО. В основном речь пойдет об инструментах, входящих в состав дистрибутива Kali Linux [1]. Статьи будут носить практический характер, на реальных примерах разберем особенности реализации тех или иных техник проведения тестов на проникновение (пентестов). Для самостоятельной проработки данного материала я рекомендовал бы читателю развернуть Kali Linux на ноутбуке, так как по крайней мере для этой статьи нам потребуется физический беспроводной адаптер. Для последующих статей рекомендую установить ВМ с ОС Windows XP SP2. Использование столь старой ОС обусловлено тем, что имеющиеся в ней уязвимости широко известны, и их легко  можно  эксплуатировать  в  учебных  целях.  Поиск  уязвимостей в более новых системах может повлечь ненужную критику со стороны разработчиков и привести к реальным взломам рабочих бизнес-приложений.

Как будем ломать?

Существуют различные подходы к проверке защищенности сети. В некоторых случаях используют методику «черного ящика», когда взломщик ничего не знает об атакуемой сети и  ему  необходимо  произвести  «тест  на  проникновение» (пентест).  Как  правило,  это  делается  удаленно.  В  других случаях  аудиторам  предоставляется  возможность  проникнуть  на  территорию  предприятия,  но  не  предоставляется никаких прав, только сетевой порт («серый ящик»). Далее взломщику необходимо осуществить тот же пентест. И, наконец, вариант «белого ящика», когда аудитору предоставляется доступ ко всем настройкам сетевых устройств и приложений, и в таком случае необходимо проанализировать правильность настроек безопасности и выдать соответствующие рекомендации.

В  своих  статьях  я  буду  использовать  преимущественно  методику  «черного  и  серого  ящиков»,  предполагая, что  мы  ничего  не  знаем  о  целевых  системах.  Это  полезно  даже  для  системных  администраторов  и  специалистов по безопасности – взглянуть на сеть своей организации глазами взломщика, посмотреть на то, как он может попытаться проникнуть в сеть и как от этого защититься. Прежде  чем  начать,  напомню  о  существовании  статьи 272 УК РФ «Неправомерный доступ к компьютерной информации». Соответствующие статьи закона есть и в других государствах. Поэтому все описанное ниже носит исключительно ознакомительный характер и рекомендуется к проведения аудита исключительно собственных беспроводных сетей.

Ищем вход.

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


Начинаем работу с Kali Linux.

Для  начала  аудита  нам  потребуется  дистрибутив  Kali Linux,  ISO-образ  которого  необходимо  развернуть на флешку или DVD-диск и загрузиться с данного носителя.  При  этом  устанавливать  ОС  на  диск  не  обязательно, хотя  если  есть  свободный  ноутбук,  то  лучше  это  сделать, так как многим программам требуется дополнительная настройка при запуске. Учетные данные по умолчанию root/toor.

Посмотрим список всех доступных беспроводных интерфейсов:

# airmon-ng

Выбираем беспроводную сетевую карту и запускаем ее:

# airmon-ng start wlan1

Далее необходимо перевести ее в режим мониторинга:

# ifconfig wlan1mon down

# iwconfig wlan1mon mode monitor

# ifconfig wlan1mon up

# airodump-ng wlan1mon

Теперь  можем  просмотреть  доступные  беспроводные сети:


Из приведенного на рисунке вывода команды нам наиболее интересно содержимое полей BSSID, ESSID и CH (номер канала). Также в поле ENC (шифрование) указан алгоритм, который используется для шифрования. Далее необходимо нажать <Ctrl> + <C> для остановки работы утилиты. В случае если сеть открытая (OPN), к ней можно пробовать подключиться сразу. Если же используется шифрование WEP, WPA или WPA2, то придется воспользоваться дополнительными утилитами для взлома ключа.


Такой безопасный WPA.

Сначала рассмотрим ситуацию, когда используется шифрование WPA/WPA2, так как на сегодняшний день это наиболее распространенная защита Wi-Fi [2].

Для осуществления атаки нам необходимо скопировать нужные BSSID и выполнить следующую команду:

# airodump-ng -c [номер_канала] -bssid [bssid] ?

  -w /root/Desktop/ wlan1mon

Например:

# airodump-ng -c 11 --bssid 01:01:01:01:01:01 ?

  -w /root/Desktop/ wlan1mon

Утилита airodump начала мониторинг выбранного канала. Нам нужно собрать информацию об установке соединения. Для этого можно, конечно, дождаться, что к сети подключится другой пользователь, а можно просто сбросить сессию уже подключившегося пользователя (deauth) для того, чтобы он вынужден был подключиться заново, и в результате нам удалось бы собрать необходимую информацию.

 # aireplay-ng -0 2 -a [router bssid] ?

  -c [client bssid] wlan1mon

Рисунок 1. Обнаруженные сети


Здесь:

> параметр -0 – означает переход в режим deauth,

> 2 – число передаваемых для деаутентификации пакетов,

> параметр -a – указывает BSSID,

> параметр -c – это MAC-адрес клиента.


Например:

# aireplay-ng -0 2 -a 01:01:01:01:01:01 ?  -c 02:02:02:02:02:02 wlan1mon

В  результате  наших  манипуляций  с  пользовательскими сессиями был перехвачен некоторый зашифрованный трафик, который сохранили в /root/Desktop/*.cap файлах. Расшифровка данного трафика позволит узнать ключ сети. Попробовать взломать можно несколькими способами. Сейчас мы попробуем вскрыть шифр с помощью перебора по словарю. О других методах мы поговорим чуть позже.

# aircrack-ng -a2 -b [router bssid] -w [path to wordlist] ?

  /root/Desktop/*.cap

Здесь:

> a2 >– это взламываемый алгоритм шифрования (WPA),

> -b >– BSSID,

> -w >– это словарь.

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

Черный ход WPS.

Вернемся  к  выводу  команды  airodump-ng  wlan1mon. На рис. 1 можно увидеть, что на некоторых точках доступа включен режим WPS. В случае правильного введения пина точка доступа сама предоставит данные для аутентификации  (в  т.ч.  WPA  PSK).  Для  подбора  IPN  в  состав  Kali  Linux входит утилита Reaver. Собственно PIN – это восьмизначное число, которое можно вводить в любое время – каких-либо действий на стороне точки доступа не требуется. Для восьмизначных  чисел  возможно  108  (100  000  000)  вариантов. Но последняя цифра не является случайно, она рассчитывается по алгоритму, т.е., говоря простым языком, последнюю цифру мы всегда знаем, и количество возможных вариантов сокращается до 107 (10 000 000). При этом искомый PIN делится на две половины, и каждая из этих половин проверяется индивидуально. Это означает, что для первой половины 104 (10 000) возможных вариантов, а для второй – всего 103 (1 000), т.к. последняя цифра не является случайной. Как видно, здесь в отличие от подбора ключа шифрования по словарю шансов на успех гораздо больше.

Утилита  Reaver  работает  следующим  образом:  сначала подбирается  первая  половина  кода  PIN,  а  затем  вторая. Скорость, с которой Reaver тестирует номера пинов, полностью зависит от скорости, с которой точка доступа может обрабатывать  запросы.  Некоторые  достаточно  быстрые  – можно тестировать по одному пину в секунду, другие – медленнее, они позволяют вводить только один пин в 10 секунд. Но по собственному опыту могу сказать, что некоторые модели точек доступа, используемые провайдерами для доступа в интернет по GPON, при переборе PIN начинают мигать красным сигналом, который при обычной работе не горит. Это может стать дополнительным сигналом о подозрительной активности в сети.

Запустим перебор PIN:

# reaver -i wlan1mon -b [BSSID]

По умолчанию Reaver имеет задержку в 1 секунду между попытками пина. Для отключения этой задержки необходимо добавить -d 0 к командной строке, но некоторые точки доступа не любят этого:

# reaver -i wlan1mon -b [BSSID] –d 0

Другая опция, которая может ускорить атаку, это -dh-small.  С  помощью  этой  опции  Reaver  способен  несколько  ускорить перебор с использованием групп Диффи-Хелманна:

# reaver -i wlan1mon -b 01:01:01:01:01:01 --dh-small

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

Когда WPS-a нет.

Что  делать  в  случае  если  используется  WPA,  но  пароль не из словаря и WPS не включен? То есть мы собрали пакеты с помощью airodump, и у нас имеется cap-файл. Здесь  нам  поможет  входящая  в  состав  Kali  утилита Hashcat [3], которая позволяет существенно ускорить процесс  восстановления  паролей  с  помощью  графического процессора.  Программа  бесплатна,  хотя  она  содержит проприетарную кодовую базу. Доступны версии для Linux, OSX  и  Windows,  есть  варианты  для  использования  центрального вычислительного процессора и для использования графического процессора. Hashcat в настоящее время поддерживает  огромное  количество  алгоритмов  хеширования, включая Microsoft LM Hashes, MD4, MD5, семейство SHA, форматы Unix Crypt, MySQL, Cisco PIX и многие другие (их там сотни). Полагаю, что в последующих статьях цикла я еще буду к ней возвращаться при проведении аудита пользовательских паролей.

Но вернемся к WPA. Hashcat имеет несколько режимов атак:

> Атака брутфорсом (перебором)

> Комбинаторная атака

> Атака по словарю

> Атака по отпечаткам

> Гибридная атака

> Атака по маске

> Перестановочная атака

> Атака, основанная на правиле

> Табличная атака

> Атака с переключением раскладки


В рамках решения задачи взлома WPA/WPA2, вероятнее всего,  потребуется  атака  по  словарю.  Конечно,  если  чтото известно о том, из чего состоит пароль, можно использовать другие способы, однако в случае полной неизвестности нужен полный перебор. У нас имеется cap-файл, однако Hashcat имеет собственный формат для расшифровки, поэтому необходимо предварительно очистить cap-файл:

# wpaclean <out.cap> <in.cap>

Обратите  внимание,  что  сначала  идет  выходной  файл, 

а потом входной <out.cap> <in.cap>.

Например:

# wpaclean /root/Desktop/ wlan1mon_out.cap /root/Desktop/ ?

  wlan1mon.cap

Теперь  необходимо  конвертировать  очищенный  файл 

в формат .hccap с помощью aircrack-ng –J.

# aircrack-ng <out.cap> -J <out.hccap>

Пример:

# aircrack-ng /root/Desktop/ wlan1mon_out.cap ?

  -J /root/Desktop/ wlan1mon_out.hccap

Когда исходные файлы подготовлены, можно приступать непосредственно к взлому. Для взлома файла рукопожатия WPA/WPA2 с Hashcat вводим:

# hashcat -m 2500 -a 3 файл.hccap

где:

> -m> 2500 > –  означает  атаку  на  файл  рукопожатия  WPA2/WPA;

> -a>3 >– означает использование брутфорса (она также совместима с атакой по маске);

> файл.hccap >– конвертированный файл .cap, после обработки программами wpaclean и aircrack-ng.


Для  нашего  примера  эта  команда  будет  иметь  следующий вид:

# hashcat -m 2500 -a 3 /root/Desktop/ wlan1mon_out.hccap


У  Hashcat  имеются  также  редакции  для  работы с графическими ускорителями cudaHashcat или oclHashcat. При использовании данных утилит синтаксис команд будет несколько отличаться от приведенного в примерах, поэтому перед их использованием необходимо внимательно ознакомиться  с  документацией.  Также  не  стоит  забывать, что  предварительно  должен  быть  корректно  установлен драйвер видеокарты. По собственному опыту могу сказать, что графический ускоритель позволил увеличить скорость расшифровки в семь-восемь раз по сравнению с использованием центрального процессора. Еще одним средством взлома WPA являются утилиты Pyrit и coWPAtty. Подробное описание работы с ними приводится в статье [4].

Развитие облачных технологий не обошло стороной и информационную безопасность. В частности, в интернете появился сервис, позволяющий взламывать различные зашифрованные  данные  [5].  В  том  числе  с  его  помощью  можно попробовать вскрыть WPA/WPA2 cap-файл. Стоимость данной услуги составляет $17. Я не использовал данный сервис, поэтому ничего о его эффективности сказать не могу. На этом, я думаю, с аудитом WPA можно закончить. Если даже непрерывная работы машины с графическим ускорителем в течение нескольких недель не привела к положительным результатам, то можно сделать вывод о надежности беспроводной сети.


Старый добрый WEP.

Теперь  рассмотрим  случай,  когда  используется  алгоритм WEP.  Данный  алгоритм  шифрования  появился  гораздо раньше,  чем  WPA,  и  в  настоящее  время  является  небезопасным [6, 7]. Сам факт использования данного алгоритма является серьезной уязвимостью в корпоративной беспроводной сети, поэтому его настоятельно рекомендуется заменить на WPA2.

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

# airodump-ng -c (channel) -w (file name) --bssid (bssid) ?

  (interface)

Здесь:

> channel >– это канал из столбца CH,

> file>name >– имя файла, в который все будет записываться,

> bssid >– это идентификатор сети.

Пример использования:

# airodump-ng -w wep -c 1 -- bssid 01:01:01:01:01:01 wlan0.

Отправляем запросы к атакуемой сети в целях установки соединения (ассоциирования).

# aireplay-ng -1 0 -a (bssid) -h 01:01:01:01:01:01 ?

  -e (essid) (interface)

Здесь essid – это имя атакуемой сети. После этого нам необходимо  дождаться  появления  сообщения  «Association successful». Так как взлом шифрования WEP основан на получении статистики от большого числа пакетов, нам нужно собрать необходимое для взлома количество пакетов.

# aireplay-ng -3 -b (bssid) -h 01:01:01:01:01:01 (interface)

Этот  процесс  может  занять  продолжительное  время, все зависит от интенсивности работы беспроводной сети. Нам нужно дождаться, пока число в столбце #Data не перейдет отметку в 10 000. При достижении требуемого количества собранных данных запускаем процесс взлома собранных зашифрованных данных.

# aircrack-ng -b (bssid) (file name-01.cap)

В качестве имени вводится выбранное вами ранее имя для файла.

# aircrack-ng -b (bssid) (wlan0mon.cap)

В случае успеха получим строку «KEY FOUND», содержащую ключ.


Делаем выводы.

Мы посмотрели на проблему проникновения в корпоративную сеть глазами злоумышленника. Конечно, если в вашей сети Wi-Fi отсутствует в принципе, этот канал проникновения для хакера будет закрыт. (Экзотические варианты с «поднятием» несанкционированных точек доступа внутри контролируемой зоны мы пока рассматривать не будем.) Но сейчас таких организаций становится все меньше. Использование мобильных устройств и концепция BYOD (принеси устройство свое с собой) требуют наличия Wi-Fi на рабочем месте. Поэтому беспроводной доступ нужно сделать максимально защищенным. Первым  делом  необходимо  правильно  настроить  мощность  сигнала.  Дело  в  том,  что  слишком  «хороший»  Wi-Fi на всей территории – это не всегда хорошо. Нужно убедиться, что за пределами контролируемой зоны сигнал не ловится.  При  необходимости  нужно  перенести  точки  доступа  подальше  от  границ  контролируемой  зоны.  Возможно, при этом придется пожертвовать качеством работы беспроводной сети в некоторых помещениях компании. Но слишком  рассчитывать  на  мощность  сигнала  не  стоит.  Так, с помощью недорогой внешней антенны ALFA AWUS036NH (которая, кстати, полностью совместима с Kali) мне удалось обнаружить большое количество сетей, которые не видел встроенный адаптер. Существует  весьма  спорная  рекомендация,  скрывать ESSID для того, чтобы сеть не была видна потенциальным злоумышленникам.  Однако  утилиты,  которые  мы  использовали в этой статье, позволяют обнаруживать и скрытые Wi-Fi,  поэтому  считать  этот  способ  хоть  сколько-нибудь эффективной  защитой  не  стоит.  Также  не  стоит  рассчитывать на фильтрацию по MAC-адресам. Во-первых, MAC-адрес можно легко подделать. Подробно тему подмены MAC мы рассмотрим в одной из следующих статей. А во-вторых, в  корпоративных  сетях,  где  количество  клиентских  устройств больше 30, фильтровать по MAC будет крайне сложно. А в гостевых сетях, где устройства постоянно меняются, такая фильтрация вообще невозможна. Наиболее  эффективным  средством  защиты  является использование  протокола  802.1х  и  инфраструктуры  открытого  ключа.  В  случае  если  установить  сертификат не  представляется  возможным,  необходимо  в  дополнение к WPA2-шифрованию использовать также аутентификацию через веб. Тогда злоумышленник даже в случае взлома Wi-Fi не сможет получить доступ к другим ресурсам сети.

Отдельная тема, о которой мы поговорим особо в следующих статьях, – это настройки и пароли по умолчанию. Здесь я лишь хочу напомнить, что после установки оборудования необходимо обязательно сменить заводской пароль. Также необходимо ограничить доступ к средствам администрирования сетевого оборудования на сетевом уровне. Все интерфейсы управления точками доступа и маршрутизаторами должны быть помещены в отдельный VLAN управления, доступ к которым должен быть только у административного персонала. Многим данные рекомендации могут показаться очевидными, однако мне приходилось наблюдать в сетях крупных организаций  доступные  из  пользовательской  сети  вебинтерфейсы управления точками доступа с заводскими паролями. Также  нелишним  будет  использование  специализированных  средств  обнаружения  атак  в  беспроводных  сетях (WIPS). В некоторых моделях оборудования такой функционал встроен. С помощью WIPS можно обнаруживать принудительные  разрывы  соединений,  которые  мы  делали для сбора шифрованного трафика, а также попытки подбора PIN при атаках на WPS.

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

[1]  Сайт проекта Kali Linux – https://www.kali.org.

[2]  Статья  по  взлому  WPA/WPA2  –  http://www.pentestingshop.com/how-to-pentest-your-wpawpa2-wifi-with-kali-linux.

[3]  Статья по работе с Hashcat – https://webware.biz/?p=3799.

[4]  Использование Pyrit и coWPAtty – https://webware.biz/?p=2984.

[5]  Облачный  сервис  по  взлому  шифров  –  https://www.wpacracker.com.

[6]  Подробная инструкция по взлому WEP – http://goo.gl/1X3tBy.

[7]  Статья по WEP – http://lifehacker.ru/2012/10/27/kak-vzlomat-wi-fi-set-s-wep-shifrovaniem.

Продолжение следует.

No comments:

Post a Comment

А что вы думаете по этому поводу?