March 19, 2023

SSH - Secure Shell

SSH (Secure Shell) — это протокол сетевой безопасности, который используется для защищенного удаленного доступа к компьютерам и другим устройствам. Он шифрует весь сетевой трафик между клиентом и сервером, что делает его безопасным для передачи конфиденциальной информации.

Несмотря на то, что SSH обычно считается безопасным, существует несколько уязвимостей, которые могут быть использованы хакерами. Рассмотрим некоторые из них и способы их устранения.

Слабые пароли

Самая распространенная уязвимость SSH — это использование слабых паролей. Хакеры могут использовать атаку «Brute-force» (перебор паролей) или атаку «Dictionary» (атака на основе словаря), чтобы угадать пароль и получить доступ к системе. Чтобы уменьшить уязвимость, нужно применять политики надежных паролей, включая использование длинных и сложных паролей, а также двухфакторную аутентификацию или аутентификацию с открытым ключом.

Атаки «Brute-force»

Хакеры могут использовать автоматизированные инструменты для проведения атак на SSH-серверы, пытаясь угадать username&password или открытый ключ. Для защиты от этой уязвимости можно использовать инструменты, которые могут обнаруживать и блокировать подозрительные попытки входа в систему, а также ограничивать скорость входа в систему. Часто используюмый словарь хакеров является rockyou. Rockyou.txt - это список из более чем 14 миллионов паролей в открытом виде, полученных в результате взлома сайта RockYou в 2009 году. Пароли из этого списка часто используются в заданиях по тестированию на проникновение и CTF-соревнованиях. По умолчанию файл находится в директории /usr/share/wordlists/ на установках Kali Linux. Вы можете проверить командой, находится ли ваш пароль в этом списке :

cat rockyou.txt | grep "вашпароль"
Атаки «Man-in-the-middle»

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

Некорректно настроенные серверы

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

Компрометация ключа

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

Чтобы уменьшить риски компрометации закрытых ключей, необходимо принимать следующие меры:

  1. Защитите закрытые ключи паролем: при генерации ключей следует указывать парольную фразу, которая будет запрашиваться при использовании закрытого ключа. Это позволит убедиться в том, что только вы сможете использовать ваш закрытый ключ, даже если он будет скомпрометирован.
  2. Используйте несколько ключей: вместо того, чтобы использовать один и тот же ключ для всех серверов, следует генерировать отдельные ключи для каждого сервера. Если один ключ будет скомпрометирован, это не повлияет на безопасность других серверов.
  3. Храните закрытые ключи в безопасном месте: закрытые ключи следует хранить в безопасном месте, например, на отдельном компьютере или на защищенном носителе, который доступен только вам.

Примеры команд:

  1. Генерация нового SSH-ключа:
ssh-keygen -t rsa -b 4096 -C "email@example.com"
  1. Копирование открытого ключа на удаленный сервер:
ssh-copy-id user@remote_host
  1. Удаление открытого ключа с удаленного сервера:
ssh-keygen -R remote_host
  1. Использование агента SSH для управления закрытыми ключами:
ssh-agent bash
ssh-add /путь/к/private_key
  1. Использование параметра -i для указания пути к закрытому ключу при подключении к удаленному серверу:
ssh -i /путь/к/private_key user@remote_host

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

Nmap команда для поиска уязвимости системы:
nmap -A -T5 --script=vuln 0.0.0.0/24

Nmap команды

Список из 10 наиболее критических уязвимостей протокола SSH:

  1. CVE-2018-15473 - данная уязвимость позволяет хакерам пройти аутентификацию на сервере без ввода пароля.
  2. CVE-2016-6210 - уязвимость, которая позволяет злоумышленникам выполнить произвольный код на сервере.
  3. CVE-2016-0777 и CVE-2016-0778 - эти уязвимости позволяют атакующему производить man-in-the-middle атаки и перехватывать данные между клиентом и сервером.
  4. CVE-2015-8325 - данная уязвимость позволяет злоумышленнику производить отказ в обслуживании (DoS) путем отправки специально сформированного пакета.
  5. CVE-2014-2532 - эта уязвимость позволяет атакующему пройти аутентификацию на сервере с использованием недействительного ключа.
  6. CVE-2014-1692 - данная уязвимость позволяет атакующему выполнить произвольный код на сервере.
  7. CVE-2013-1896 - уязвимость, которая позволяет атакующему получить удаленный доступ к файлам на сервере.
  8. CVE-2012-0814 - данная уязвимость позволяет злоумышленнику получить доступ к файлам, которые не должны быть доступны удаленно.
  9. CVE-2010-5107 - эта уязвимость позволяет атакующему производить DoS атаки на сервер.
  10. CVE-2008-0166 - уязвимость, которая позволяет атакующему производить man-in-the-middle атаки и перехватывать данные между клиентом и сервером.

Список критических уязвимостей SSH может изменяться со временем, поэтому необходимо следить за новостями и выпусками обновлений для SSH. Кроме того, важно применять рекомендуемые практики безопасности, такие как использование сильных паролей, двухфакторную аутентификацию, использование открытых ключей и т.д. Однако следует помнить, что безопасность SSH зависит не только от безопасности ключей, но и от других факторов, таких как политики паролей, защита от атак «Brute-force» и «Man-in-the-middle», настройки серверов и другие.

Следите за безопаностью!

CyberDome