Введение
В этом лабе вы научитесь определять SSL-сертификаты с использованием скрипта ssl-cert в Nmap. Лаба проведет вас через процесс сканирования IP-адресов и доменных имен для получения и отображения информации о SSL/TLS-сертификате, включая субъекта, издателя и срок действия.
Вы выполните команды, такие как nmap --script ssl-cert 192.168.1.1 и nmap --script ssl-cert scanme.nmap.org в терминале Xfce, исследуя параметры для указания портов, повышения подробности и сохранения результатов в файл. Наконец, вы изучите детали сертификата и сравните их с результатами обнаружения сервисов.
Запустить сканирование SSL - сертификата с помощью nmap --script ssl-cert 192.168.1.1
В этом шаге мы будем использовать Nmap для выполнения сканирования SSL-сертификата на указанном IP-адресе. Nmap - это мощный инструмент сканирования сети, а его скриптовый движок позволяет расширять его функциональность. Скрипт ssl-cert предназначен для получения и отображения информации о SSL/TLS-сертификатах с целевого сервера.
Сначала давайте разберемся с основной структурой команды:
nmap --script ssl-cert <target_ip>
Здесь <target_ip> - это IP-адрес сервера, который вы хотите отсканировать. В данном случае мы будем сканировать IP-адрес 192.168.1.1.
Теперь откройте терминал Xfce. Убедитесь, что вы находитесь в директории ~/project. Если нет, перейдите в нее с помощью команды cd:
cd ~/project
Далее выполните следующую команду для запуска сканирования SSL-сертификата:
sudo nmap --script ssl-cert 192.168.1.1
Возможно, вас попросят ввести пароль. Поскольку пользователь labex имеет права sudo без пароля, просто нажмите Enter.
Примечание: 192.168.1.1 - это частный IP-адрес и может быть недоступен из вашей текущей сети. Если у вас нет сервера по этому адресу, сканирование может не вернуть никаких результатов или может истекать время ожидания. Для тестирования можно использовать публичный IP-адрес, о котором вы знаете, что он имеет SSL-сертификат, например, scanme.nmap.org или 8.8.8.8.
Попробуем вместо этого отсканировать scanme.nmap.org:
sudo nmap --script ssl-cert scanme.nmap.org
Эта команда попытается подключиться к scanme.nmap.org и получить информацию о его SSL-сертификате. Вывод будет показывать детали, такие как субъект сертификата, издатель, срок действия и любые альтернативные имена субъектов (SAN).
Пример вывода (фактический вывод может отличаться):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.031s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
PORT STATE SERVICE
22/tcp open ssh
| ssl-cert: Subject: commonName=scanme.nmap.org
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-03-18T14:23:03+00:00
| Not valid after: 2020-06-16T14:23:03+00:00
| MD5: ...
| SHA1: ...
| -----BEGIN CERTIFICATE-----
| ...
| -----END CERTIFICATE-----
Nmap done: 1 IP address (1 host up) scanned in 2.18 seconds
Этот вывод показывает детали SSL-сертификата для scanme.nmap.org, включая субъект, издателя и даты срока действия.
Просканировать порт 443 с помощью nmap --script ssl-cert -p 443 127.0.0.1
В этом шаге мы сосредоточимся на сканировании конкретного порта, 443, с использованием Nmap и скрипта ssl-cert. Порт 443 - это стандартный порт для трафика HTTPS (Hypertext Transfer Protocol Secure), который используется для безопасного общения по интернету. Задав порт, мы можем уточнить сканирование и получить информацию о SSL-сертификате конкретно для сервисов, работающих на этом порту.
Команда, которую мы будем использовать, выглядит так:
nmap --script ssl-cert -p 443 127.0.0.1
Разберём эту команду:
nmap: Командная строка сканера Nmap.--script ssl-cert: Указывает, что мы хотим использовать скриптssl-certдля получения информации о SSL-сертификате.-p 443: Эта опция сообщает Nmap только сканировать порт 443.127.0.0.1: Это адрес петли, также известный как localhost. Это относится к вашему собственному компьютеру.
Теперь откройте терминал Xfce и убедитесь, что вы находитесь в директории ~/project:
cd ~/project
Выполните следующую команду, чтобы отсканировать порт 443 на localhost:
sudo nmap --script ssl-cert -p 443 127.0.0.1
Поскольку 127.0.0.1 относится к вашему собственному компьютеру, эта команда попытается получить SSL-сертификат от любого сервиса, работающего на порту 443 на вашей виртуальной машине LabEx. Если на порту 443 не слушает никакой сервис, Nmap сообщит, что порт закрыт.
Если у вас настроен веб-сервер или другой сервис, использующий HTTPS на вашей виртуальной машине LabEx, вы должны увидеть вывод, похожий на следующий (фактический вывод может отличаться в зависимости от сертификата и конфигурации сервера):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000086s latency).
PORT STATE SERVICE
443/tcp closed https
Nmap done: 1 IP address (1 host up) scanned in 0.07 seconds
В этом примере вывод показывает, что порт 443 закрыт. Это означает, что на localhost на этом порту не слушает никакой сервис. Если бы сервис был запущен, вывод содержал бы детали SSL-сертификата, аналогично предыдущему шагу.
Если вы хотите протестировать эту команду на сервере, о котором вы знаете, что он имеет HTTPS, включенный на порту 443, вы можете заменить 127.0.0.1 на IP-адрес или доменное имя этого сервера. Например:
sudo nmap --script ssl-cert -p 443 scanme.nmap.org
Это отсканирует порт 443 на scanme.nmap.org и получит информацию о его SSL-сертификате.
Добавить подробность с помощью nmap -v --script ssl-cert 192.168.1.1
В этом шаге мы добавим подробность в нашу команду Nmap. Подробность в Nmap означает увеличение количества отображаемой информации в ходе сканирования. Это может помочь в понимании того, что делает Nmap, и при устранении любых проблем. Параметр -v увеличивает уровень подробности. Использование -v несколько раз (например, -vv или -vvv) увеличивает подробность ещё больше.
Команда, которую мы будем использовать, выглядит так:
nmap -v --script ssl-cert 192.168.1.1
Разберём эту команду:
nmap: Командная строка сканера Nmap.-v: Эта опция увеличивает уровень подробности, предоставляя более детальный вывод.--script ssl-cert: Указывает, что мы хотим использовать скриптssl-certдля получения информации о SSL-сертификате.192.168.1.1: Это целевой IP-адрес.
Теперь откройте терминал Xfce и убедитесь, что вы находитесь в директории ~/project:
cd ~/project
Выполните следующую команду, чтобы запустить сканирование SSL-сертификата с подробностью:
sudo nmap -v --script ssl-cert 192.168.1.1
Как уже упоминалось, 192.168.1.1 - это частный IP-адрес и может быть недоступен. Если у вас нет сервера по этому адресу, сканирование может не вернуть никаких результатов или может истекать время ожидания. Для тестирования можно использовать публичный IP-адрес, о котором вы знаете, что он имеет SSL-сертификат, например, scanme.nmap.org.
Попробуем отсканировать scanme.nmap.org с подробностью:
sudo nmap -v --script ssl-cert scanme.nmap.org
Теперь вывод будет включать больше информации о процессе сканирования, таких как различные этапы, которые проходит Nmap, порты, которые он проверяет, и любые ошибки или предупреждения, которые возникают.
Пример вывода (фактический вывод может отличаться):
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
NSE: Loaded 1 script for scanning.
Initiating Ping Scan at 10:00
Scanning scanme.nmap.org (45.33.32.156) [2 ports]
Completed Ping Scan at 10:00, 0.03s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 10:00
Completed Parallel DNS resolution of 1 host. at 10:00, 0.01s elapsed
Initiating Connect Scan at 10:00
Scanning scanme.nmap.org (45.33.32.156) [1000 ports]
Discovered open port 22/tcp on 45.33.32.156
Completed Connect Scan at 10:00, 2.15s elapsed (1000 total ports)
NSE: Script scanning scanme.nmap.org (45.33.32.156)
NSE: Starting runlevel 1 (of 1) scan.
Initiating NSE at 10:00
Completed NSE at 10:00, 0.02s elapsed
Nmap scan report for scanme.nmap.org (45.33.32.156)
Host is up (0.031s latency).
Other addresses for scanme.nmap.org (not scanned): 2600:3c01::f03c:91ff:fe18:bb2f
PORT STATE SERVICE
22/tcp open ssh
| ssl-cert: Subject: commonName=scanme.nmap.org
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-03-18T14:23:03+00:00
| Not valid after: 2020-06-16T14:23:03+00:00
| MD5: ...
| SHA1: ...
| -----BEGIN CERTIFICATE-----
| ...
| -----END CERTIFICATE-----
NSE: Script Post-scanning.
Initiating NSE at 10:00
Completed NSE at 10:00, 0.00s elapsed
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.34 seconds
Обратите внимание на дополнительную информацию о процессе сканирования, такую как "Initiating Ping Scan," "Completed Connect Scan" и "NSE: Script scanning." Эта дополнительная деталь может быть полезна для понимания того, как работает Nmap, и для диагностики любых проблем.
Сохранить результаты SSL с помощью nmap --script ssl-cert -oN ssl.txt 127.0.0.1
В этом шаге мы узнаем, как сохранять результаты сканирования Nmap в файл. Это полезно для последующего анализа или для передачи результатов другим. Nmap предоставляет несколько вариантов сохранения вывода в различных форматах. Параметр -oN сохраняет вывод в "обычный" человекочитаемый формат.
Команда, которую мы будем использовать, выглядит так:
nmap --script ssl-cert -oN ssl.txt 127.0.0.1
Разберём эту команду:
nmap: Командная строка сканера Nmap.--script ssl-cert: Указывает, что мы хотим использовать скриптssl-certдля получения информации о SSL-сертификате.-oN ssl.txt: Эта опция сообщает Nmap сохранить вывод в обычном формате в файл с именемssl.txt.127.0.0.1: Это целевой IP-адрес (localhost).
Теперь откройте терминал Xfce и убедитесь, что вы находитесь в директории ~/project:
cd ~/project
Выполните следующую команду, чтобы запустить сканирование SSL-сертификата и сохранить результаты в ssl.txt:
sudo nmap --script ssl-cert -oN ssl.txt 127.0.0.1
После завершения сканирования в директории ~/project вы найдете файл с именем ssl.txt. Этот файл содержит вывод сканирования Nmap, включая информацию о SSL-сертификате (если есть) для целевого объекта.
Для проверки того, что файл был создан и содержит результаты сканирования, вы можете использовать команду cat для отображения содержимого файла:
cat ssl.txt
Если на 127.0.0.1 запущен сервис с SSL-сертификатом, вы увидите детали сертификата в выводе. Если сервис не запущен, файл будет содержать информацию о сканировании, но не будет деталей сертификата.
Например, если порт 443 закрыт, файл ssl.txt может содержать:
## Nmap 7.80 scan initiated Tue Oct 27 10:00:00 2023
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000086s latency).
PORT STATE SERVICE
443/tcp closed https
## Nmap done at Tue Oct 27 10:00:00 2023 -- 1 IP address (1 host up) scanned in 0.07 seconds
Если вы хотите отсканировать другой целевой объект и сохранить результаты, просто замените 127.0.0.1 на нужный IP-адрес или доменное имя. Например:
sudo nmap --script ssl-cert -oN ssl.txt scanme.nmap.org
Это отсканирует scanme.nmap.org и сохранит результаты в ssl.txt. Не забудьте проверить содержимое ssl.txt с помощью cat ssl.txt, чтобы подтвердить результаты сканирования.
Просмотреть детали сертификата в терминале Xfce
В этом шаге мы рассмотрим детали SSL-сертификата, которые мы сохранили в файле ssl.txt на предыдущем шаге. Мы будем использовать команду cat для отображения содержимого файла в терминале Xfce и затем изучить информацию о сертификате.
Во - первых, убедитесь, что вы находитесь в директории ~/project:
cd ~/project
Теперь используйте команду cat для отображения содержимого файла ssl.txt:
cat ssl.txt
Вывод покажет результаты сканирования Nmap, включая детали SSL - сертификата, если на целевом объекте был обнаружен сервис с SSL - сертификатом.
Рассмотрим вывод. Важные части информации о SSL - сертификате обычно включают:
- Subject (Тема): В этом поле содержится доменное имя или сущность, для которой выдан сертификат. Ищите атрибут
commonName(CN) внутри поля Subject. - Issuer (Выдаватель): Это поле идентифицирует Certificate Authority (CA), выдавшую сертификат. Опять же, ищите атрибут
commonName(CN). - Public Key type (Тип публичного ключа): Указывает тип алгоритма публичного ключа, используемого (например, RSA, DSA, ECDSA).
- Public Key bits (Разрядность публичного ключа): Указывает размер ключа в битах (например, 2048, 4096). Большие размеры ключей обычно обеспечивают более высокую безопасность.
- Signature Algorithm (Алгоритм подписи): Указывает алгоритм, используемый для подписи сертификата (например, sha256WithRSAEncryption).
- Not valid before (Действителен начиная с): Дата и время, когда сертификат становится действительным.
- Not valid after (Не действителен после): Дата и время, когда сертификат истек. Важно убедиться, что сертификаты не истекли.
- MD5/SHA1: Это хэш - значения сертификата. Хотя MD5 считается слабым, SHA1 также постепенно вытесняется. Предпочтительными являются SHA256 или выше.
- -----BEGIN CERTIFICATE-----... -----END CERTIFICATE-----: Это фактические закодированные данные сертификата в формате PEM.
Например, если вы сканировали scanme.nmap.org и сохранили вывод в ssl.txt, соответствующая часть вывода может выглядеть так:
PORT STATE SERVICE
22/tcp open ssh
| ssl-cert: Subject: commonName=scanme.nmap.org
| Issuer: commonName=Let's Encrypt Authority X3
| Public Key type: rsa
| Public Key bits: 2048
| Signature Algorithm: sha256WithRSAEncryption
| Not valid before: 2020-03-18T14:23:03+00:00
| Not valid after: 2020-06-16T14:23:03+00:00
| MD5: ...
| SHA1: ...
| -----BEGIN CERTIFICATE-----
| ...
| -----END CERTIFICATE-----
В этом примере можно увидеть, что сертификат предназначен для scanme.nmap.org, выдан Let's Encrypt Authority X3, использует RSA - ключ размером 2048 бит и подписан с использованием SHA256.
Просмотрев эти детали, вы можете получить представление о безопасности и валидности SSL - сертификата, используемого целевым сервисом.
Если вы сканировали 127.0.0.1 и не было запущено SSL - сервиса, файл ssl.txt не будет содержать детальную информацию о сертификате. В этом случае вы можете захотеть установить простой веб - сервер с включенным SSL (за пределами этого лабораторного занятия) для генерации сертификата для тестирования.
Сравнить с обнаружением сервисов в терминале Xfce
В этом шаге мы сравним информацию о SSL - сертификате, которую мы получили, с возможностями обнаружения сервисов Nmap. Это позволяет проверить, соответствует ли обнаруженный сервис деталям сертификата, и выявить любые возможные расхождения.
Во - первых, запустим стандартное сканирование обнаружения сервисов Nmap на целевом объекте. В этом примере мы будем использовать 127.0.0.1 в качестве целевого объекта. Убедитесь, что вы находитесь в директории ~/project:
cd ~/project
Выполните следующую команду:
sudo nmap -sV 127.0.0.1
Параметр -sV включает обнаружение версии сервиса. Nmap будет пытаться определить, какой сервис запущен на каждом открытом порту.
Вывод покажет открытые порты и обнаруженный сервис. Например:
Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:30 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000058s latency).
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.4 (protocol 2.0)
443/tcp open ssl/http ## Example: If a web server with SSL is running
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.23 seconds
Теперь сравните результаты обнаружения сервисов с деталями SSL - сертификата, которые вы рассмотрели на предыдущем шаге (из файла ssl.txt).
Например, если обнаружение сервисов Nmap идентифицирует порт 443 как запускающий ssl/http и commonName в теме SSL - сертификата соответствует доменному имени, связанному с веб - сервером, то результаты обнаружения сервисов и детали сертификата совпадают.
Однако, если есть несоответствие, это может указывать на потенциальную проблему:
- Неверная идентификация сервиса: Nmap может неправильно идентифицировать сервис, запущенный на порту.
- Некорректно настроенный сертификат: Сертификат может быть выдан для другого доменного имени, чем тот, который обслуживается.
- Атака в中间人: Атака может перехватывать соединение и предъявлять другой сертификат.
Для дальнейшего исследования расхождений вы можете использовать более специфические скрипты Nmap или инструменты, такие как openssl, для непосредственного изучения сертификата.
Например, если обнаружение сервисов показывает http на порту 443, а SSL - сертификат предназначен для другого домена, это сигнал о проблеме. Это может указывать на неправильную настройку или потенциальную атаку.
Кратко говоря, сравнение обнаружения сервисов Nmap с деталями SSL - сертификата помогает вам проверить целостность и безопасность сервисов, запущенных на целевом объекте.
Резюме
В этом лабораторном занятии мы использовали Nmap с скриптом ssl-cert для сканирования и извлечения информации о SSL/TLS - сертификате с целевых серверов. Мы узнали, как выполнить базовую команду nmap --script ssl-cert <target_ip> для сканирования определенного IP - адреса, и решили потенциальные проблемы с приватными IP - адресами, используя публичный адрес, такой как scanme.nmap.org, для тестирования.
Мы также практиковали запуск сканирования с использованием sudo и изучали вывод, который включает в себя такие детали, как тема сертификата, выдаватель и срок действия. Это奠定ет основу для дальнейшего исследования возможностей Nmap в анализе SSL - сертификатов.



