Метод брутфорса логина, то есть, перебор множества комбинаций пароля, пока верная не будет найдена, может быть удобен для таких сервисов, как SSH или Telnet. Для чего-то вроде страницы логина веб-сайта, мы должны сперва идентифицировать различные элементы страницы. Благодаря утилите на Python для брутфорса веб-сайтов, названной Hatch, этот процесс был упрощен до такой степени, что даже новичок может опробовать его.
Как работают брутфорс атаки
Брутфорс атаки имеют преимущество автоматизации перебора большего количества вариантов паролей, нежели у человека, взламывающего систему методом проб и ошибок. Более целенаправленные брутфорс атаки, называемые перебором по словарю, используют список общих паролей для ускорения данного процесса, а так же использование этой техники для проверки слабых паролей чаще является первой атакой, которую хакер предпримет против системы.
В брутфорс атаке на сервис вроде SSH, это можно сделать из командной строки с помощью таких инструментов, как Sshtrix. В одной строке в терминале легко запустить атаку по словарю на обнаруженный SSH-сервер, используя встроенный список паролей, что делает сервисы с плохими паролями крайне уязвимыми для взлома.
Самым большим недостатком перебора по словарю является то, что если пароль не существует в списке паролей, — атака не удастся. Если пароль, на который мы нацелены, является надежным, брутфорс атаки могут быстро стать слишком дорогими по времени и ресурсам, поскольку мы начинаем испытывать каждую возможную комбинацию символов. Другим недостатком является то, что многие сервисы в настоящее время применяют метод ограничения скорости, который обнаруживает слишком много неудачных попыток входа в систему и блокирует дальнейшие попытки на определенный период, что может существенно замедлить атаку.
В чем сложность брутфорс атаки на веб-сайт
Несмотря на то, что довольно просто атаковать сервис, который получает имя пользователя и пароль через командную строку, в коде веб-сайта происходит гораздо больше. Чтобы спланировать эту атаку, нам нужно подумать о том, что скрипт должен знать, чтобы выполнить свою работу.
Мы хотим, чтобы скрипт нашел верный пароль, связанный с конкретной учетной записью, введя предположительный вариант в поля страницы входа и отправляя его до тех пор, пока мы не получим успешный результат. Для этого мы должны взаимодействовать с графическим интерфейсом пользователя на странице входа в систему, чтобы вводить информацию в поля логина и пароля.
После того, как мы это сделаем, нам нужно отправить предположение, нажав кнопку «Войти» на странице. Наконец, нам нужен скрипт, чтобы узнать разницу между неудачей и успехом, чтобы мы могли остановить скрипт и определить верный пароль.
Все это большой объем работы и очень запутывает новичков, но в последствии автоматизировать атаки на странице входа в систему большинства веб-сайтов можно аналогично брутфорсу SSH.
Hatch для брутфорса веб логинов
Python является идеальным языком для автоматизации атак такого рода, и Hatch использует Python2 для автоматизации Chromium и организации атаки по словарю через логин на любой странице с видимым полем ввода. Хотя некоторые веб-сайты со скрытыми формами входа в систему, которые требуют прокрутки или щелчка для отображения, могут запутать скрипт, большинство сайтов легкая цель для этой утилиты.
После запуска, Hatch скрипт открывает окно Chromium, где вы можете просмотреть элементы страницы, на которую вы нацеливаетесь. После того, как вы сообщите скрипту, на каком сайте вы хотите ввести логин, он проверит, существует ли страница и доступна ли она. Если это так, Hatch спросит, на какой логин вы хотите запустить брутфорс атаку, а затем запросит список паролей, которые нужно перебрать в процессе.
Получив необходимую информацию, Hatch откроет второе окно Chromium и начнет автоматизировать атаку. Вы можете сидеть сложа руки и наблюдать, как разворачивается атака, либо в окне Chromium, либо в терминале, на котором выполняется атака. В терминале вы можете наблюдать за каждой попыткой ввода пароля по мере продвижения скрипта по списку. Хотя эта атака является мощной и полезной для широкого круга целей, она также может быть предотвращена путем ограничения скорости и других методов блокировки чрезмерных попыток входа в систему.
Что вам нужно
Хотя Hatch является кроссплатформенным, в некоторых системах его было немного сложно настроить. Мы закончили тем, что Hatch работал на системе Linux.
Чтобы следовать этому руководству, вам потребуется система Linux с установленными Chromium и Python 2. Текущая современная версия Python — Python3, поэтому вам нужно убедиться, что вы используете правильную версию при выполнении скрипта. Если вы запустите Hatch с Python3, он не будет работать правильно.
Вы можете скачать Hatch со страницы GitHub, открыв окно терминала и напечатав следующее:
~$ git clone https://github.com/MetaChar/Hatch
Если вы планируете устанавливать Hatch на системе Windows, вам необходимо загрузить форк Hatch с официального репозитория:
~$ git clone https://github.com/nsgodshall/Hatch.git
Эта версия Hatch была модифицирована для работы с Windows.
Теперь, когда в нашей системе установлен Hatch пришло время запустить его и посмотреть, как он работает. Сначала давайте посмотрим на help-файл, выполнив следующее из директории Hatch:
~$ python2 main.py -h
Затем вы увидите список параметров:
-h, --help Показать это справочное сообщение и выйти
-u USERNAME, --username=USERNAME
Выбрать имя пользователя
--usernamesel=USERNAMESEL
Выбрать css-селектор имени пользователя
--passsel=PASSSEL Выбрать css-селектор пароля
--loginsel=LOGINSEL Выбрать css-селектор кнопки логина
--passlist=PASSLIST Указать директорию со списком паролей
--website=WEBSITE Выбрать веб-сайт
Для начала давайте выберем цель в нашей локальной сети для атаки. Подходящим устройством в вашей локальной сети для тестирования будет что-то вроде маршрутизатора, принтера или другого устройства со страницей входа в сеть. Вы можете выбрать его, запустив сканирование Nmap в сети, чтобы найти любые IP-адреса с открытым портом 80. Хотя порт 80 является наиболее распространенной страницей для веб-доступа, вы также можете выполнить поиск портов 81, 8080, 8081, 443, чтобы найти страницы входа в систему различных устройств.
Далее нам нужно найти диапазон подсети, чтобы мы могли сканировать локальную сеть. Вы можете использовать ipcalc для расчета диапазона подсети после нахождения локального IP-адреса вашего компьютера. Если ваш компьютер, например, имеет IP-адрес 192.168.0.3, вы можете запустить ipcalc 192.168.0.3, чтобы получить диапазон IP-адресов для всех возможных адресов в этой сети. В данном случае это будет 192.168.0.0/24.
Когда вы узнаете диапазон, запустите следующее сканирование Nmap в своей сети, изменив часть iprange, чтобы добавить диапазон IP вашей сети.
~$ sudo nmap -p 80,8080,81,8081,443 iprange
По завершении сканирования, любой сервис с открытым портом должен быть хостом веб-сайта. Перейдите к такому устройству, как принтер или маршрутизатор, к которому у вас есть права доступа, введя IP-адрес, двоеточие и номер порта, который мы обнаружили в Nmap. Вы должны увидеть страницу входа в систему.
Теперь мы можем запустить Hatch, но нам все еще понадобится дополнительная информация, чтобы осуществить атаку. Запустите Hatch, введя следующую команду, после перехода в директорию, в которую вы сохранили программу ранее:
~$ python2 main.py
Затем откроется окно Chromium, позволяя нам перейти на веб-сайт и начать идентифицировать части веб-страницы, с которыми мы будем взаимодействать.
Введите URL-адрес страницы входа на веб-сайт в первом запросе от Hatch. Он проверит, чтобы убедиться, что веб-сайт существует и доступен. Далее нам нужно проидентифицировать элементы логина и пароля сайта, на который мы нацелились.
Нажмите правой кнопкой мыши на поле ввода имени пользователя, после чего нажмите «Inspect».
Затем нажмите на многоточие (•••) слева от окна, и появится раскрывающееся меню. Нажмите «Copy» и «Copy selector», чтобы скопировать css-селектор элемента, с которым Hatch нужно будет взаимодействовать.
Введите css-селектор имени пользователя в поле ввода Hatch и проделайте тоже самое с селектором пароля.
Наконец, щелкните правой кнопкой мыши кнопку «Войти», чтобы получить css-селектор кнопки логина, и добавьте его в Hatch.
Теперь, когда у нас есть все селекторы, мы укажем имя пользователя, чей пароль мы будем перебирать. В этом случае мы просто введем admin. Последним шагом будет выбор списка паролей, который идет с Hatch. По умолчанию это «passlist.txt», поэтому мы будем использовать этот список в нашей первой атаке.
Этот список паролей не очень большой, но он содержит много стандартных паролей. Нажмите Enter, и Hatch откроет новое окно, чтобы начать перебор пароля. Вы можете наблюдать за ходом процесса из окна терминала или из окна Chromium, которое автоматизирует Hatch.
Если вас не устраивает список слов, включенный в Hatch, вы можете дополнить его, открыв в текстовом редакторе, таком как Nano, или добавив другой список из любого репозитория со списками слов. Загрузив список на ваш выбор, вы можете добавить его в папку «Hatch» и указать его вместо списка по умолчанию.
Если у вас есть список паролей, который вас устраивает, давайте проверим его на стандартном веб-сайте. Создайте одноразовую учетную запись на Reddit.com или любом другом сайте и запомните имя пользователя. Установите пароль учетной записи, который входит в один из списков слов.
После настройки учетной записи повторно запустите Hatch и введите reddit.com/login (или страницу входа на выбранный вами веб-сайт). Затем укажите селекторы. Наконец, введите имя пользователя и выберите список паролей, содержащий верный пароль. Нажмите Enter, и скрипт должен открыть окно Chromium и начать атаку.
Когда скрипт обнаружит успешный вход в систему, он выдаст верный пароль.
Как защититься от брутфорс атак
Сейчас веб-сайты обладают наилучшей способностью защищаться от таких атак, обеспечивая реализацию мер безопасности, основанных на здравом смысле. Может ли обычный пользователь совершать попытки входа в систему с неверным паролем со странного IP-адреса 100 раз? Ответ, вероятно, нет. Будьте особенно внимательны с веб-сайтами, которые не предпринимают таких мер предосторожности, из-за чего ваши данные могут быть утеряны.
Со стороны пользователя, выбор надежных паролей, а так же использование менеджера паролей, может помочь убедиться, что ваша учетная запись никогда не подвергнется успешной брутфорс атаке. Использование двухфакторной аутентификации зачастую, является лучшей защитой от подобных атак, поскольку вы будете предупреждены о попытке входа в систему. Для учетных записей, хранящих важные данные, всегда должна быть включена двухфакторная аутентификация.
Надеюсь, вам понравилось это руководство по использованию Hatch для автоматизации брутфорс атак! Задавайте свои вопросы в комментариях, отвечу на все по возможности.