Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы тестирования КИИ на проникновение. Учебное пособие.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
root@kali:/usr/share/nmap/nselib/data# nmap -sU --script=snmp-brute
192.168.1.2 -p 161
Starting Nmap 6.49BETA4 ( https://nmap.org ) at 2017-05-01 17:48 MSK Nmap scan report for 192.168.1.2 Host is up (0.0011s latency). PORT STATE SERVICE 161/udp open snmp | snmp-brute: |_ pub - Valid credentials MAC Address: 08:00:27:D8:85:49 (Cadmus Computer Systems)
Если не определён пользовательский словарь строк сообществ, то Nmap будет использовать словарь snmpcommunities.lst, располагающийся в каталоге /usr/share/nmap/nselib/dataselib/data. Если этого словаря нет, будет использован словарь passwords.lst, расположенный там же.
Подключение собственного словаря осуществляется следующим образом:
root@kali:~# nmap -sU --script=snmp-brute 192.168.1.2 –p 161 --script­args snmp-brute.communitiesdb=pass.txt
Словари фреймворка Metasploit также содержат стандартные учётные данные для строк сообществ SNMP v1 и v2. Путь к словарю:
/usr/share/metasploit-framework/data/wordlists/snmp_default_pass.txt
После подбора имени сообщества необходимо решить задачу извлечения данных с устройства по протоколу SNMP. Утилита snmpwalk из пакета snmp – популярный инструмент для тестирования SNMP. Этот инструмент действует как SNMP-клиент, и мы можем использовать его, когда нужно сделать запросы к службе SNMP на целевом хосте.
В рамках многих операционных систем по протоколу SNMP можно полу­чить полезную информацию (например, список запущенных процессов, имён пользователей и внутренние IP-адреса). В та
блице 2.1 показаны значения OID и
соответствующие им значения в системе Microsoft Windows.
Можно вручную просмотреть содержимое каждой ветки MIB, к которой вы имеете доступ во время тестирования, для получения полезной информации о системе.
2.1. Примеры значений OID
OID Информация
.1.3.6.1.2.1.1.5 Имя устройства
.1.3.6.1.4.1.77.1.4.2 Доменное имя
.1.3.6.1.4.1.77.1.2.25 Имена пользователей
.1.3.6.1.4.1.77.1.2.3.1.1 Список процессов
.1.3.6.1.4.1.77.1.2.27 Информация о системе
41
Для решения задачи перечисления имён пользователей в протоколе SNMP на устройствах, работающих под управлением версии 3, установите па­кет snmp-mibs-downloader и загрузите скрипт snmpv3enum.rb:
root@kali:~# apt-get install snmp-mibs-downloader root@kali:~# sudo download-mibs root@kali:~# wget https://raw.githubusercontent.com/raesene/TestingScripts/master/snmpv3enu m.rb root@kali:~# wget https://raw.githubusercontent.com/raesene/TestingScripts/master/usernames root@kali:~# chmod 755 snmpv3enum.rb
После того как скрипт установлен, запустите атаку со списком имён пользователей по умолчанию:
root@kali:~# ./snmpv3enum.rb -i 192.168.1.1 -u usernames

2.2.6. Задания

1. Настройте протокол SNMP версии 2с на маршрутизаторе и сервере
Ubuntu.
2. Осуществите атаку перебора строк сообществ утилитами onesixtyone и
Nmap.
3. Используйте утилиту snmpwalk для получения сведений о целевых сис-
темах. Выделите OID, в которых хранится информация о платформе, версии ОС, запущенных процессах, времени работы системы, адресах интерфейсов, установленных пакетах.

2.3. ПЕРЕЧИСЛЕНИЕ SMTP (SMTP ENUMERATION)

Название протокола SMTP расшифровывается как Simple Mail Transfer Protocol. SMTP работает на порту 25. В настоящее время протокол SMTP ис-
пользуется на большинстве почтовых серверов в Интернете.
В таблице 2.2 перечислены команды, поддерживаемые протоколом SMTP.
2.2. Команды протокола SMTP
Команда Описание
HELO Инициирует сеанс SMTP
EHLO Инициирует сеанс ESMTP
STARTTLS Инициирует зашифрованный сеанс TLS поверх сущест-
вующего
MAIL FROM Определяет адрес электронной почты отправителя
RCPT TO Определяет адрес электронной почты получателя
42
Команда Описание
DATA Указывает, что начинается тело сообщения
RSET Прерывает текущую транзакцию
MAIL Определяет адрес электронной почты отправителя
QUIT Завершает сеанс SMTP и закрывает соединение
HELP Помощь по командам
AUTH Поддержка аутентификации SMTP
BDAT Указание на бинарные данные
Протокол SMTP поддерживает большое количество команд, но мы рас­смотрим только основные:
Продолжение табл. 2.2
− HELO. После подключения к SMTP-серверу с помощью утилит
telnet, netcat или любого другого средства нужно поприветствовать сервер со- общением HELO;
− MAIL FROM. Этим сообщением задаётся адрес электронной почты
отправителя. Это электронный адрес, с которого будет отправляться сообщение;
− RCPT TO. Это адрес электронной почты получателя. Это адрес, на
который отправляется сообщени
е. В рамках лабораторной работы мы сможем отправлять электронные письма на внутренние адреса электронной почты в ло­кальном домене;
− DATA. Содержит тело отправляемого сообщения. Для изучения техник перечисления SMTP будет использоваться пакет
sendmail. Sendmail – один из старейших агентов передачи почты (MTA – Mail Transfer Agent). Распространяется бесплатно, существуют версии практически
для в
сех операционных систем и аппаратных платформ.
Создадим отдельного пользователя, учётную запись которого мы будем
использовать в процессе работы с почтовой службой:
user@ubuntu:~$ sudo useradd -m -s /bin/bash mailuser user@ubuntu:~$ sudo passwd mailuser
Установим пакет sendmail:
user@ubuntu:~$ sudo apt-get install sendmail
Для отправки почты сервер sendmail требует наличия доменного имени в
конфигурационных файлах. Внесём изменения в файл /etc/hosts:
user@ubuntu:~$ sudo nano /etc/hosts
127.0.0.1 domain.com
43
Перезапуск сервера производится командой:
user@ubuntu:~$ sudo service sendmail restart
Для чтения почты на сервере потребуется пакет mailutils. Установим его:
user@ubuntu:~$ sudo apt-get install mailutils
Для того чтобы прочесть почтовые сообщения, отправленные сущест­вующим пользователям, необходимо переключиться на нужного пользователя командой su - и с помощью утилиты mail прочесть сообщения:
user@ubuntu:~$ su - mailuser Password: mailuser@ubuntu:~$ mailuser@ubuntu:~$ mail
Рассмотрим процесс отправки почтового сообщения с использованием локального SMTP-сервера от пользователя user пользователю mailuser:
user@ubuntu:~$ telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ubuntu ESMTP Sendmail 8.14.4/8.14.4/Debian-4.1ubuntu1; Thu, 4 May 2017 19:20:09 +0300; (No UCE/UBE) logging access from: localhost(OK)­localhost [127.0.0.1]
HELO user
250 ubuntu Hello localhost [127.0.0.1], pleased to meet you
MAIL FROM: user@domain.com
250 2.1.0 user@domain.com... Sender ok
RCPT TO: mailuser
250 2.1.5 mailuser... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Subject: First mail
Hi, How are you? User
.
250 2.0.0 v44GK94i006270 Message accepted for delivery
QUIT
Обратите внимание, что символ точки является ограничением тела от­правляемого сообщения.
Для того чтобы прочесть почтовые сообщения, необходимо переключить­ся на пользователя mailuser:
user@ubuntu:~$ su - mailuser Password: mailuser@ubuntu:~$ mailuser@ubuntu:~$ mail "/var/mail/mailuser": 1 message 1 new >N 1 user@ubuntu Thu May 4 19:27 12/337 First mail ?
? 1
44
Return-Path: <user@ubuntu> Received: from user (localhost [127.0.0.1]) by ubuntu (8.14.4/8.14.4/Debian-4.1ubuntu1) with SMTP id v44GQOmY006413 for mailuser; Thu, 4 May 2017 19:26:46 +0300 Date: Thu, 4 May 2017 19:26:24 +0300 From: user@ubuntu Message-Id: <201705041626.v44GQOmY006413@ubuntu> Subject: First mail
Hi, How are you? User
Уязвимости протокола SMTP часто связаны с конкретными подсистема­ми. В примере ниже показано ручное перечисление поддерживаемых сервером команд с помощью команд HELP и EHLO, а также автоматическое тестирова­ние с использованием сценария nmap smtp-command.
user@ubuntu:~$ telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. 220 84ee9a2c79b3 ESMTP Sendmail 8.15.2/8.15.2/Debian-10; Wed, 21 Nov 2018 19:31:24 GMT; (No UCE/UBE) logging access from: domain.com(OK)-domain.com [127.0.0.1]
HELP
214-2.0.0 This is sendmail version 8.15.2 214-2.0.0 Topics: 214-2.0.0 HELO EHLO MAIL RCPT DATA 214-2.0.0 RSET NOOP QUIT HELP VRFY 214-2.0.0 EXPN VERB ETRN DSN AUTH 214-2.0.0 STARTTLS 214-2.0.0 For more info use "HELP <topic>". 214-2.0.0 To report bugs in the implementation see 214-2.0.0 http://www.sendmail.org/email-addresses.html 214-2.0.0 For local information send email to Postmaster at your site. 214 2.0.0 End of HELP info
EHLO user
250-84ee9a2c79b3 Hello domain.com [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 250-DELIVERBY 250 HELP QUIT 221 2.0.0 84ee9a2c79b3 closing connection Connection closed by foreign host.
root@kali:~# nmap -p25 --script smtp-commands 172.17.0.3 Starting Nmap 7.70 ( https://nmap.org ) at 2018-11-21 19:35 UTC
45
Nmap scan report for 172.17.0.3 Host is up (0.000090s latency).
PORT STATE SERVICE 25/tcp open smtp | smtp-commands: 84ee9a2c79b3 Hello [172.17.0.2], pleased to meet you,
ENHANCEDSTATUSCODES, PIPELINING, EXPN, VERB, 8BITMIME, SIZE, DSN, ETRN, AUTH DIGEST-MD5 CRAM-MD5, DELIVERBY, HELP, |_ 2.0.0 This is sendmail version 8.15.2 2.0.0 Topics: 2.0.0 HELO EHLO MAIL RCPT DATA 2.0.0 RSET NOOP QUIT HELP VRFY 2.0.0 EXPN VERB ETRN DSN AUTH 2.0.0 STARTTLS 2.0.0 For more info use "HELP <topic>". 2.0.0 To re-
port bugs in the implementation see 2.0.0 http://www.sendmail.org/email­addresses.html 2.0.0 For local information send email to Postmaster at your site. 2.0.0 End of HELP info MAC Address: 02:42:AC:11:00:03 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.86 seconds
В некоторых уязвимых конфигурациях почтовые серверы могут исполь­зоваться для сбора информации с помощью техник перечисления. Протокол
SMTP поддерживает несколько дополнительных команд, таких как VRFY и EXPN. Команда VRFY запрашивает у сервера подтверждение адреса электрон-
ной почты, в то время как EXPN запрашивает сервер о членстве адреса в списке рассылки. Эти команды можно использовать для проверки имён су
ществующих
пользователей на почтовом сервере. Рассмотрим следующий пример:
user@ubuntu:~$ telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ubuntu ESMTP Sendmail 8.14.4/8.14.4/Debian-4.1ubuntu1; Thu, 4 May 2017 19:39:13 +0300; (No UCE/UBE) logging access from: localhost(OK)­localhost [127.0.0.1]
HELO user
250 ubuntu Hello localhost [127.0.0.1], pleased to meet you
VRFY user
250 2.1.5 <user@ubuntu>
VRFY mailuser
250 2.1.5 <mailuser@ubuntu>
VRFY testuser
550 5.1.1 testuser... User unknown
QUIT
Обратите внимание на разницу в сообщении, полученном, когда пользо­ватель присутствует, и когда он отсутствует в системе. SMTP-сервер, реагируя на команду VRFY, проверяет, существует ли пользователь в данной системе. Эта процедура может использоваться для перечисления имён существующих пользователей.
Команду VRFY можно отключить, но прежде, чем выполнять этот защит­ный шаг на сервере электронной почты, выполните и
сследование на предмет
необходимости данной команды.
EXPN – ещё одна ценная команда для пентестера или злоумышленника. Результат выполнения команды похож на результат работы команды VRFY,
46
но вместо проверки существования одного пользователя команда EXPN может вернуть всех пользователей, входящих в некоторый список рассылки.
Для проверки работы команды EXPN нам понадобится создать группу для рассылки. Для этого отредактируем файл /etc/aliases, создав в нём группу mailgroup и добавив в неё несколько пользователей:
user@ubuntu:~$ sudo nano /etc/aliases mailgroup: mailuser,user
После внесения изменений в файл /etc/aliases демон sendmail необходимо перезагрузить:
user@ubuntu:~$ sudo service sendmail restart
Проверим технику перечисления с помощью команды EXPN:
user@ubuntu:~$ telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ubuntu ESMTP Sendmail 8.14.4/8.14.4/Debian-4.1ubuntu1; Thu, 4 May 2017 19:45:48 +0300; (No UCE/UBE) logging access from: localhost(OK)­localhost [127.0.0.1]
HELO user
250 ubuntu Hello localhost [127.0.0.1], pleased to meet you
EXPN testgroup
550 5.1.1 testgroup... User unknown
EXPN mailgroup
250-2.1.5 <user@ubuntu> 250 2.1.5 <mailuser@ubuntu>
QUIT
221 2.0.0 ubuntu closing connection Connection closed by foreign host.
Как и команда VRFY, в некоторых случаях команда EXPN может быть отключена, но перед этим убедитесь, что на вашем почтовом сервере это дейст­вительно необходимо сделать.
Следующая, уже известная команда RCPT TO идентифицирует получате­ля сообщения электронной почты в заголовке письма при его подготовке. Эта команда может повторяться несколько раз в пределах одного сообщения для доставки исходного сообщения сразу нескольки
user@ubuntu:~$ telnet localhost 25 Trying ::1... Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 ubuntu ESMTP Sendmail 8.14.4/8.14.4/Debian-4.1ubuntu1; Thu, 4 May 2017 19:48:08 +0300; (No UCE/UBE) logging access from: localhost(OK)­localhost [127.0.0.1]
HELO user
250 ubuntu Hello localhost [127.0.0.1], pleased to meet you
MAIL FROM: user@localhost
250 2.1.0 user@localhost... Sender ok
RCPT TO: mailuser
250 2.1.5 mailuser... Recipient ok
м получателям. Например:
47
RCPT TO: testuser
550 5.1.1 testuser... User unknown
QUIT
221 2.0.0 ubuntu closing connection Connection closed by foreign host.
Обратите внимание на разницу в сообщении, полученном, когда пользо­ватель присутствует, и когда он отсутствует в системе.
В составе дистрибутива Kali есть утилита Smtp-user-enum – инструмент для перечисления учётных записей пользователей SMTP. Перечисление выпол­няется путём проверки ответов на команды VRFY, EXPN и RCPT TO.
Варианты использования утилиты:
root@kali:~# smtp-user-enum.pl -M VRFY -U users.txt -t 10.0.0.1 root@kali:~# smtp-user-enum.pl -M EXPN -u admin1 -t 10.0.0.1 root@kali:~# smtp-user-enum.pl -M RCPT -U users.txt -T mail-server­ips.txt root@kali:~# smtp-user-enum.pl -M EXPN -D example.com -U users.txt -t
10.0.0.1
Утилиту также можно скачать по следующему адресу: https://raw.githubusercontent.com/pentestmonkey/smtp-user-enum/master/smtp-user­enum.pl
Утилита smtp-user-enum зависит от следующих модулей PERL, которые вам, возможно, потребуется установить в первую очередь:
− Socket;
− IO::Handle;
− IO::Select;
− IO::Socket::INET;
− Getopt::Std.
Если у вас установлен PERL, вы должны иметь возможность устанавли­вать модули из CPAN:
user@ubuntu:~$ sudo perl -MCPAN -e shell cpan> install Getopt::Std
В сканере портов Nmap есть несколько скриптов NSE, которые можно использовать для исследования хостов, на которых запущена служба SMTP. Все скрипты находятся в каталоге usr/share/nmap/scripts/:
root@kali:/usr/share/nmap/scripts# ls | grep smtp smtp-brute.nse smtp-commands.nse smtp-enum-users.nse smtp-open-relay.nse smtp-strangeport.nse smtp-vuln-cve2010-4344.nse smtp-vuln-cve2011-1720.nse smtp-vuln-cve2011-1764.nse
Для получения списка поддерживаемых сервером команд можно исполь­зовать скрипт smtp-commands.nse. Скрипт smtp-enum-users.nse служит для пе­речисления пользователей на SMTP-сервере путём использования команд VRFY, EXPN или RCPT TO. Цель этого скрипта – получение учётных записей
48
пользователей в удалённой системе. Сценарий выведет список найденных имён пользователей. Пользователь может указать, какие методы использовать и в ка­ком порядке. Если порядок явно не указан, скрипт сначала будет использовать метод RCPT, затем VRFY и EXPN. Пример того, как указать используемые ме­тоды и их порядок:
smtp-enum-users.methods={EXPN,RCPT,VRFY}
Пример запуска команды:
nmap --script smtp-enum-users.nse [--script-args smtp-enum-users.methods= {EXPN,...},...] -p 25,465,587 192.168.1.1

2.3.1. Задания

1. Установите сервер sendmail, создайте пользователя, группу для рас-
сылки и выполните атаку перечисления тремя способами, используя команды
VRFY, EXPN, RCPT TO.
2. Используйте скрипт smtp-user-enum.pl для автоматизации процесса пе-
речисления имён пользователей на локальном SMTP-сервере. Продемонстри­руйте его работу.
49

3. СКАНИРОВАНИЕ ПОРТОВ

Сканирование портов – это процесс проверки открытых TCP- или UDP­портов на удалённой цели. Обратите внимание, что сканирование портов во многих странах является незаконным и не должно выполняться вне лаборато­рий. Сканирование происходит в активной фазе, которая предполагает прямое взаимодействие с целевыми системами.
Далее мы обсудим различные методы сканирования целей, чтобы полу­чить как можно больше информации об активных устрой
Цели текущего раздела – узнать способы:
− обнаружения хостов;
− сканирования открытых портов;
− обнаружения сервисов и определения их версий;
− определения версий ОС;
− обхода файерволов.

3.1. ОБНАРУЖЕНИЕ ХОСТОВ

Первым шагом сетевой разведки является процесс определения активных целей. Можно использовать различные методы и инструменты для обнаруже­ния активных целей. Одним из наиболее простых методов является использова­ние ICMP-запросов, т.е. ping-запросов, для проверки, активна целевая система или нет. Если ICMP-ответ получен, то значит – цель активна. В утилите Nmap, о которой речь пойдё
т дальше, для осуществления ping-сканирования (ping sweep) необходимо использовать флаг -sP. Можно указывать не отдельный ад­рес, а диапазон адресов, или даже сеть для сканирования.
В простейшем случае команда Nmap выглядит следующим образом:
ствах в сети.
nmap -sP 192.168.1.100
Ниже приведены команды сканирования диапазона хостов с помощью
утилиты Nmap:
nmap -sP 192.168.1.1 192.168.1.2 192.168.1.3 nmap -sP 192.168.1.1-100 nmap -sP 192.168.1.1/24
В последнем примере утилита проверяет активность всех узлов в диапа-
зоне от 192.168.1.1 до 192.168.1.255 и возвращает список активных.
Из-за использования в сети систем IDS или IPS, файерволов и других со­временных средств защиты выявление активных хостов может быть не слиш­ком тривиальной задачей. Сетевые администраторы часто блокируют запросы ICMP, поэтому, даже если цель активна, с помощью ping-сканирования это вы­яснить не удастся.
м образом, необходимо использовать другие способы сканирования
Таки и другие протоколы, такие как TCP и UDP, чтобы выяснить, активна ли цель, или нет, поскольку TCP- или UDP-соединения процесса сканирования могут не выглядеть подозрительными для файерволов и устройств обнаружения/предот­вращения вторжений.
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]