Атака на цели IPv6 с использованием Hydra

HydraHydraBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии вы научитесь атаковать цели IPv6 с использованием Hydra. Лабораторная работа сосредоточена на настройке сервера с IPv6-адресом и последующем использовании Hydra для атаки на его SSH-сервис.

Лабораторная работа начинается с настройки сервера с IPv6-адресом 2001:db8:1::1/64 на интерфейсе eth0 с помощью команды ip. Затем вы включите интерфейс и проверите настройку. Наконец, вы используете Hydra с опцией -6 для атаки на IPv6 SSH-сервис и проверите результаты атаки.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/single_username -.-> lab-550759{{"Атака на цели IPv6 с использованием Hydra"}} hydra/single_password -.-> lab-550759{{"Атака на цели IPv6 с использованием Hydra"}} hydra/target_ip -.-> lab-550759{{"Атака на цели IPv6 с использованием Hydra"}} hydra/target_service -.-> lab-550759{{"Атака на цели IPv6 с использованием Hydra"}} hydra/ssh_attack -.-> lab-550759{{"Атака на цели IPv6 с использованием Hydra"}} hydra/success_detection -.-> lab-550759{{"Атака на цели IPv6 с использованием Hydra"}} end

Настройка сервера с IPv6-адресом

На этом этапе мы настроим сервер с IPv6-адресом. Это важный этап для включения IPv6-коммуникации и подготовки к последующей атаке на IPv6 SSH-сервис.

Сначала разберемся с основами адресации IPv6. IPv6-адреса представляют собой 128-битные адреса, обычно записываемые в шестнадцатеричной нотации. Типичный IPv6-адрес выглядит так: 2001:0db8:85a3:0000:0000:8a2e:0370:7334.

Для упрощения настройки мы будем использовать простой IPv6-адрес для нашего сервера. Мы присвоим адрес 2001:db8:1::1/64 интерфейсу eth0.

Примечание: Интерфейс eth0 - это общее имя сетевого интерфейса в системах Linux. Если ваша система использует другое имя интерфейса (например, ens33), замените eth0 на правильное имя интерфейса в следующих командах. Вы можете использовать команду ip addr, чтобы проверить свои сетевые интерфейсы.

Теперь настроим IPv6-адрес. Мы будем использовать команду ip, которая является мощным инструментом для управления сетевыми интерфейсами.

  1. Добавление IPv6-адреса к интерфейсу eth0:

    Откройте терминал в виртуальной машине LabEx. Выполните следующую команду:

    sudo ip addr add 2001:db8:1::1/64 dev eth0

    Эта команда добавляет IPv6-адрес 2001:db8:1::1/64 к интерфейсу eth0. /64 указывает длину префикса сети, которая определяет размер подсети IPv6.

  2. Включение интерфейса eth0:

    sudo ip link set dev eth0 up

    Эта команда включает интерфейс eth0, позволяя ему отправлять и получать сетевой трафик.

  3. Проверка настройки IPv6-адреса:

    Чтобы убедиться, что IPv6-адрес настроен правильно, используйте команду ip addr еще раз:

    ip addr show eth0

    В выводе должна быть строка с IPv6-адресом 2001:db8:1::1/64 в разделе inet6. Вы должны увидеть что-то вроде следующего:

    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:xx:xx:xx brd ff:ff:ff:ff:ff:ff
        inet 192.168.xx.xx/24 brd 192.168.xx.255 scope global dynamic eth0
           valid_lft 85781sec preferred_lft 85781sec
        inet6 2001:db8:1::1/64 scope global
           valid_lft forever preferred_lft forever
        inet6 fe80::20c:29ff:fexx:xxxx/64 scope link
           valid_lft forever preferred_lft forever

    Строка inet6 2001:db8:1::1/64 scope global подтверждает, что IPv6-адрес успешно настроен.

  4. Добавление маршрута по умолчанию для IPv6 (необязательно, но рекомендуется для полноценной IPv6-связи):

    Если вы хотите, чтобы ваш сервер мог общаться с другими IPv6-сетями, вам нужно настроить маршрут по умолчанию для IPv6. Этот этап предполагает, что у вас есть маршрутизатор в вашей сети, который обеспечивает IPv6-связь. Замените 2001:db8:1::254 на фактический IPv6-адрес вашего маршрутизатора.

    sudo ip -6 route add default via 2001:db8:1::254

    Чтобы проверить маршрут по умолчанию для IPv6, используйте команду ip -6 route:

    ip -6 route

    В выводе должна быть строка, похожая на следующую:

    default via 2001:db8:1::254 dev eth0 metric 1024 pref medium

    Важное примечание: Вышеописанная настройка не сохраняется после перезагрузки. Чтобы сделать настройку IPv6-адреса постоянной, обычно нужно изменить файлы сетевой конфигурации (например, /etc/network/interfaces в системах на основе Debian или /etc/sysconfig/network-scripts/ifcfg-eth0 в системах на основе Red Hat). Однако, из-за ограничений среды виртуальной машины LabEx (в частности, невозможности использовать systemctl и временного характера контейнера), мы пропустим этап сохранения настройки. В рамках данной лабораторной работы IPv6-адрес будет настроен только на текущую сессию.

Использование опции -6 для предпочтения IPv6

На этом этапе мы подготовимся к атаке на IPv6 SSH-сервис, изучив и использовав опцию -6 с сетевыми инструментами. Опция -6 обычно используется для указания предпочтения IPv6 при взаимодействии с сетевыми службами. Это важно, так как по умолчанию некоторые инструменты могут предпочитать IPv4, если доступны как IPv4-, так и IPv6-адреса.

Чтобы убедиться, что мы нацелены на IPv6-адрес, настроенный на предыдущем этапе, мы используем команду ping с опцией -6. Это позволит проверить, что мы можем достичь сервера по его IPv6-адресу.

  1. Проверка доступности IPv6-адреса с помощью ping:

    Откройте терминал в виртуальной машине LabEx. Выполните следующую команду:

    ping -6 2001:db8:1::1

    Эта команда отправляет ICMP Echo Request пакеты по IPv6-адресу 2001:db8:1::1. Если сервер доступен по IPv6, вы должны увидеть ответы от сервера. Вывод должен быть похож на следующий:

    PING 2001:db8:1::1(2001:db8:1::1) 56 data bytes
    64 bytes from 2001:db8:1::1: icmp_seq=1 ttl=64 time=0.020 ms
    64 bytes from 2001:db8:1::1: icmp_seq=2 ttl=64 time=0.018 ms
    64 bytes from 2001:db8:1::1: icmp_seq=3 ttl=64 time=0.019 ms
    ...

    Если вы не видите никаких ответов, перепроверьте настройку IPv6-адреса на предыдущем этапе и убедитесь, что интерфейс eth0 включен. Также убедитесь, что нет правил брандмауэра, блокирующих ICMPv6-трафик.

  2. Понимание опции -6:

    Опция -6 сообщает команде ping использовать IPv6. Многие другие сетевые инструменты, такие как ssh, curl и wget, также поддерживают опцию -6. Использование этой опции гарантирует, что инструмент пытается подключиться к целевому узлу по IPv6.

    На следующем этапе мы будем использовать Hydra для атаки на SSH-сервис. Мы будем использовать опцию -6 с Hydra, чтобы конкретно нацелиться на IPv6-адрес SSH-сервера. Это позволяет проверить безопасность настройки IPv6 SSH.

  3. Тестирование SSH-соединения с использованием опции -6 (необязательно):

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

    ssh -6 testuser@2001:db8:1::1

    Вам, вероятно, будет предложено принять отпечаток SSH-ключа. Введите yes и нажмите Enter. Затем введите пароль password при запросе. В случае успеха вы войдете в SSH-сервер. Введите exit, чтобы отключиться.

    Примечание: Этот этап является необязательным, так как мы будем атаковать SSH-сервис на следующем этапе, что неявно тестирует SSH-соединение. Однако это хороший способ проверить, что SSH слушает на IPv6-адресе перед началом атаки. Если у вас нет запущенного SSH-сервера или тестовой учетной записи пользователя, вы можете пропустить этот этап.

Атака на IPv6 SSH-сервис

На этом этапе мы используем Hydra для выполнения брутфорс-атаки на SSH-сервис, работающий по IPv6-адресу, который мы настроили ранее. Hydra - это мощный инструмент для взлома паролей, поддерживающий различные протоколы, в том числе SSH.

Перед началом создадим простой список паролей. Этот список будет содержать пароли, которые Hydra попытается использовать для аутентификации на SSH-сервисе.

  1. Создание списка паролей:

    Откройте терминал в виртуальной машине LabEx. Используйте редактор nano для создания файла с именем passwords.txt в директории ~/project:

    nano ~/project/passwords.txt

    Добавьте в файл следующие пароли, по одному на каждой строке:

    password
    123456
    qwerty
    admin
    secret

    Сохраните файл и выйдите из nano (Ctrl+X, затем Y, затем Enter).

  2. Запуск Hydra для атаки на IPv6 SSH-сервис:

    Теперь мы используем Hydra для атаки на SSH-сервис. Мы используем опцию -6, чтобы указать, что мы хотим нацелиться на IPv6-адрес. Также мы укажем имя пользователя, на которого будем атаковать (например, root), список паролей, который мы создали (passwords.txt), и IPv6-адрес SSH-сервера (2001:db8:1::1).

    Выполните следующую команду:

    hydra -6 -l root -P ~/project/passwords.txt ssh://2001:db8:1::1

    Разберем эту команду по частям:

    • hydra: Команда для запуска инструмента Hydra.
    • -6: Указывает, что мы хотим использовать IPv6.
    • -l root: Указывает имя пользователя, на которого будем атаковать. В данном случае это пользователь root.
    • -P ~/project/passwords.txt: Указывает список паролей, который нужно использовать. В данном случае мы используем файл passwords.txt, который мы создали в директории ~/project.
    • ssh://2001:db8:1::1: Указывает целевой SSH-сервис. Префикс ssh:// указывает, что мы атакуем SSH-сервис, а 2001:db8:1::1 - это IPv6-адрес сервера.

    Теперь Hydra начнет пытаться подобрать пароли из файла passwords.txt для SSH-сервиса. Если Hydra найдет правильный пароль, он отобразит учетные данные. Вывод должен быть похож на следующий:

    Hydra v9.1 (c) 2020 by van Hauser/THC - Use freely but only for legal purposes.
    
    Hydra starting at 2023-10-27 10:00:00
    [DATA] 1 task, 5 hosts, 5 tries per host
    [DATA] attacking ssh://2001:db8:1::1:22
    [22][ssh] host: 2001:db8:1::1   login: root   password: password
    Hydra finished.

    Этот вывод показывает, что Hydra успешно подобрал пароль для пользователя root, и этот пароль - password.

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

Проверка результатов атаки на IPv6

На этом этапе мы проверим результаты атаки Hydra на IPv6 SSH-сервис. Проверим, успешно ли Hydra подобрал пароль, и в случае успеха попробуем войти в SSH-сервис с использованием подобранных учетных данных.

  1. Просмотр вывода Hydra:

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

    [22][ssh] host: 2001:db8:1::1   login: root   password: password

    Если вы видите такую строку, это означает, что Hydra успешно подобрал пароль для пользователя root, и этот пароль - password. Если Hydra не нашел правильный пароль, вам нужно будет скорректировать список паролей или проверить возможные проблемы с настройкой SSH-сервиса.

  2. Попытка входа в SSH-сервис с использованием подобранных учетных данных:

    Теперь, когда у нас есть подобранные учетные данные, мы попытаемся войти в SSH-сервис с помощью команды ssh. Мы используем опцию -6, чтобы указать, что хотим подключиться по IPv6-адресу.

    Выполните следующую команду, заменив password на фактический пароль, который подобрал Hydra:

    ssh -6 root@2001:db8:1::1

    Когда вас попросят ввести пароль, введите подобранный пароль (например, password). Если вход выполнен успешно, вы войдете в SSH-сервер.

    The authenticity of host '[2001:db8:1::1]:22 ([2001:db8:1::1]:22)' can't be established.
    ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added '[2001:db8:1::1]:22' (ECDSA) to the list of known hosts.
    root@2001:db8:1::1's password:
    Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-91-generic x86_64)
    
     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage
    
    ...

    Если вы можете успешно войти, это подтверждает, что атака Hydra была успешной и что SSH-сервис уязвим для подбора паролей.

  3. Рекомендации по безопасности:

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

    • Используйте надежные пароли: Используйте пароли длиной не менее 12 символов, содержащие комбинацию заглавных и строчных букв, цифр и символов.
    • Отключите аутентификацию по паролю: Рассмотрите возможность отключения аутентификации по паролю и использования SSH-ключей вместо этого. SSH-ключи более безопасны, чем пароли, так как их гораздо сложнее подобрать.
    • Реализуйте ограничение скорости (rate limiting): Используйте такие инструменты, как fail2ban, чтобы реализовать ограничение скорости попыток входа в SSH. Это поможет предотвратить атакующих от попыток подбора слишком большого количества паролей за короткий период времени.
    • Обновляйте программное обеспечение: Убедитесь, что ваше программное обеспечение SSH-сервера обновлено до последних версий с учетом последних патчей безопасности.

Резюме

В этой лабораторной работе мы настроили сервер с IPv6-адресом, что является важным этапом для включения IPv6-коммуникации. Это включало в себя изучение основ IPv6-адресации и использование команды ip для назначения адреса 2001:db8:1::1/64 интерфейсу eth0.

Затем мы активировали интерфейс и проверили настройку с помощью команды ip addr show eth0, убедившись, что IPv6-адрес был правильно назначен. Эта настройка готовит сервер к последующим атакам на IPv6 SSH-сервис.