Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы тестирования КИИ на проникновение. Учебное пособие.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
IS80jJWx461+AaiT+tvhskidPESl46WRL4A3eyqFy+3yqg2M8ZT5pImElX5XmU9SPxPK6rRug 1f34GvQ== | 2048 06:fd:95:47:8c:37:3a:61:a7:c4:85:ab:af:29:1f:e1 (RSA) |_ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAx81qw+G58JztjPcIvGUJqJiM9fw3Rxb0iEl7oIjKQWbIK TV+YdmZSKi dgy­PAMKNCC0lEssRaX38+YLKAX6eIL642BnfHRXQdjFaLRtVPTkHHym46kAB/rsrCRMMjhGd8Hxs KjSZuhk qrZCHwcSEIFlM3qJH5A/KN0n8q96xbfypXyNjPQC4A2uD4irezIrXUwx42ZL/mcHSyjlLqw3c wt0QAdRNKx PgIKBmuWx­lej4AvgnItaVRGC+AnO14y1a9SaXSQep/OEwPUPaxKRUSoR9oaux4cUP2b8Kasl7388nnFEun V 3bXJ4o/TgoFMyOzWIimZvocoEFNZkBETheAA4w==

4.3.2. Перечисление функций

Исследование открытых служб SSH с использованием Nmap и клиента OpenSSH в режиме отладки (verbose mode) позволит узнать поддерживаемые
алгоритмы и механизмы аутентификации, как описано далее.
Подобно протоколу TLS и протоколам VPN, SSH использует процесс ру­копожатия для обмена ключами, аутентификации и выбора алгоритмов для по­следующего шифрования передаваемых данных. В примере ниже показано пе­речисление поддерживаемых алгоритмов для задач обмена ключами, аутен
ти­фикации, шифрования и хеширования с использованием скрипта ssh2-enum­algos в Nmap:
root@kali:~# nmap -Pn -n -p22 --script ssh2-enum-algos 172.17.0.3 Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-05 20:42 UTC Nmap scan report for 172.17.0.3 Host is up (0.000090s latency).
PORT STATE SERVICE 22/tcp open ssh | ssh2-enum-algos: | kex_algorithms: (10) | curve25519-sha256 | curve25519-sha256@libssh.org | ecdh-sha2-nistp256 | ecdh-sha2-nistp384 | ecdh-sha2-nistp521 | diffie-hellman-group-exchange-sha256 | diffie-hellman-group16-sha512 | diffie-hellman-group18-sha512 | diffie-hellman-group14-sha256 | diffie-hellman-group14-sha1 | server_host_key_algorithms: (5) | ssh-rsa | rsa-sha2-512 | rsa-sha2-256 | ecdsa-sha2-nistp256 | ssh-ed25519 | encryption_algorithms: (6) | chacha20-poly1305@openssh.com | aes128-ctr | aes192-ctr | aes256-ctr | aes128-gcm@openssh.com | aes256-gcm@openssh.com
71
| mac_algorithms: (10) | umac-64-etm@openssh.com | umac-128-etm@openssh.com | hmac-sha2-256-etm@openssh.com | hmac-sha2-512-etm@openssh.com | hmac-sha1-etm@openssh.com | umac-64@openssh.com | umac-128@openssh.com | hmac-sha2-256 | hmac-sha2-512 | hmac-sha1 | compression_algorithms: (2) | none |_ zlib@openssh.com MAC Address: 02:42:AC:11:00:03 (Unknown)

4.3.3. Поддерживаемые механизмы аутентификации

Порядок поддерживаемых механизмов аутентификации перечисляется с использованием клиента OpenSSH в режиме отладки, как показано в примере ниже:
root@kali:~# ssh -v test@172.17.0.3 OpenSSH_7.9p1 Debian-4, OpenSSL 1.1.1 11 Sep 2018 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 172.17.0.3 [172.17.0.3] port 22. debug1: Connection established. debug1: SELinux support disabled debug1: identity file /root/.ssh/id_rsa type -1 debug1: identity file /root/.ssh/id_rsa-cert type -1 debug1: identity file /root/.ssh/id_dsa type -1 debug1: identity file /root/.ssh/id_dsa-cert type -1 debug1: identity file /root/.ssh/id_ecdsa type -1 debug1: identity file /root/.ssh/id_ecdsa-cert type -1 debug1: identity file /root/.ssh/id_ed25519 type -1 debug1: identity file /root/.ssh/id_ed25519-cert type -1 debug1: identity file /root/.ssh/id_xmss type -1 debug1: identity file /root/.ssh/id_xmss-cert type -1 debug1: Local version string SSH-2.0-OpenSSH_7.9p1 Debian-4 debug1: Remote protocol version 2.0, remote software version OpenSSH_7.6p1 Ubuntu-4ubuntu0.1 debug1: match: OpenSSH_7.6p1 Ubuntu-4ubuntu0.1 pat OpenSSH_7.0*,OpenSSH_7.1*,OpenSSH_7.2*,OpenSSH_7.3*,OpenSSH_7.4*,OpenSSH_
7.5*,OpenSSH_7.6*,OpenSSH_7.7* compat 0x04000002 debug1: Authenticating to 172.17.0.3:22 as 'test' debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: algorithm: curve25519-sha256 debug1: kex: host key algorithm: ecdsa-sha2-nistp256 debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: <implicit> compression: none debug1: expecting SSH2_MSG_KEX_ECDH_REPLY debug1: Server host key: ecdsa-sha2-nistp256 SHA256:5qTXRLmJM7hQl5g2z8JEYSdNEvyyAi7JNDi/kd1fBuk The authenticity of host '172.17.0.3 (172.17.0.3)' can't be established.
72
ECDSA key fingerprint is SHA256:5qTXRLmJM7hQl5g2z8JEYSdNEvyyAi7JNDi/kd1fBuk. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.17.0.3' (ECDSA) to the list of known hosts. debug1: rekey after 134217728 blocks debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: rekey after 134217728 blocks debug1: Will attempt key: /root/.ssh/id_rsa debug1: Will attempt key: /root/.ssh/id_dsa debug1: Will attempt key: /root/.ssh/id_ecdsa debug1: Will attempt key: /root/.ssh/id_ed25519 debug1: Will attempt key: /root/.ssh/id_xmss debug1: SSH2_MSG_EXT_INFO received debug1: kex_input_ext_info: server-sig-algs=<ssh-ed25519,ssh-rsa,rsa­sha2-256,rsa-sha2-512,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2­nistp384,ecdsa-sha2-nistp521> debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey debug1: Trying private key: /root/.ssh/id_rsa debug1: Trying private key: /root/.ssh/id_dsa debug1: Trying private key: /root/.ssh/id_ecdsa debug1: Trying private key: /root/.ssh/id_ed25519 debug1: Trying private key: /root/.ssh/id_xmss debug1: Next authentication method: password test@172.17.0.3's password:
В таблице 4.1 также подробно описаны механизмы аутентификации SSH, которые могут быть обнаружены во время тестирования.
4.1. Методы аутентификации в SSH
Имя Описание
Аутентификация пользователя на основе открытого ключа
publickey
(алгоритмы DSA, ECDSA или RSA)
hostbased Аутентификация хоста на основе открытого ключа
password Парольная аутентификация пользователя
Уровень абстракции, поддерживающий механизмы аутен-
keyboard-
тификации через PAM (например, Google Authenticator, Yu-
interactive
biKey, Duo Security)
gssapi-with-mic Аутентификация GSSAPI
gssapi-keyex Аутентификация GSSAPI
73
Тип поддерживаемого клавиатурно-интерактивного режима выводится при подключении. Например, режим может требовать пользователя предоста­вить пароль (т.е. пройти обычную проверку подлинности PAM), значение токе­на аутентификации или ответ на вызов. Следующий пример демонстрирует подобное поведение: сервер запрашивает токен YubiKey, за которым следует пароль:
root@kali:~# ssh test@129.93.244.200 Yubikey for `test': Password:

4.3.4. Подбор учётных данных

Как и протокол RDP, SSH уязвим для атак с перебором учётных данных доступа. Для примера используем инструмент Hydra. Программное средство Hydra, наверное, самый старый инструмент для перебора учётных данных и, безусловно, самый многофункциональный. Hydra поддерживает атаки против наибольшего числа протоколов.
Есть две версии утилиты Hydra: версия для командной строки (hydra) и версия с GUI (hydra-GTK). Для этого примера мы будем вызыват
ь Hydra из ко-
мандной строки с помощью следующей команды:
root@kali:~# hydra -s 22 -v -V -L file_path/name -P file_path/name -t 8 target protocol
Параметры команды описаны ниже:
− -s – обозначает порт, который должен использоваться для подключе-
ния. Параметр используется для устранения двусмысленности, хотя это и не всегда нужно (например, если используется порт по умолчанию), и в случае его применения ускоряет тестирование;
− -v и -V – обозначают максимальную подробность выводимых отчё-
тов;
− -L – указывает на файл с име
нами пользователей;
− -P – указывает на файл с паролями;
− -t – определяет количество параллельных соединений. Чем больше
их число, тем быстрее будет происходить тестирование. Тем не менее, если число слишком велико, могут появиться ошибки, а некоторые пароли могут быть вообще пропущены.
Следующий пример демонстрирует подробный вывод начала атаки пере­бором:
root@kali:~# hydra -s 22 -v -L users.txt -P passwords.txt -t 1 172.17.0.3 ssh Hydra v8.6 (c) 2017 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (http://www.thc.org/thc-hydra) starting at 2018-12-05 20:56:29 [DATA] max 1 task per 1 server, overall 1 task, 4 login tries (l:2/p:2), ~4 tries per task
74
[DATA] attacking ssh://172.17.0.3:22/ [VERBOSE] Resolving addresses ... [VERBOSE] resolving done [INFO] Testing if password authentication is supported by ssh://tets@172.17.0.3:22 [INFO] Successful, password authentication is supported by ssh://172.17.0.3:22
[22][ssh] host: 172.17.0.3 login: user password: user
[STATUS] attack finished for 172.17.0.3 (waiting for children to complete tests) 1 of 1 target successfully completed, 1 valid password found Hydra (http://www.thc.org/thc-hydra) finished at 2018-12-05 20:56:35
Когда удаётся произвести успешный вход, Hydra выводит номер порта, протокол, хост и учётные данные для входа. Затем она продолжит попытки подбора учётных данных, пока не будет проверен весь словарь для выявления других возможных аккаунтов.
Если вы знаете особенности пароля, заданного на целевой системе, вы можете также использовать Hydra для автоматического создания списка паро­лей на лету, используя следую
root@kali:~# hydra –L users.txt –V –x 6:8:aA1 <IP address> SSH
щую команду:
Параметры, используемые в этой команде, описаны далее:
− -x – предписывает Hydra автоматически создавать пароли, исполь-
зуемые в атаке методом перебора. Пароли будут созданы в соответствии с па­раметрами, которые следуют за этим ключом;
− 6:8 – указывает на минимальную и максимальную длины паролей,
6 и 8 символов соответственно;
− aA1 – будут генерироваться пароли, состоящие из комбинаций букв
и цифр, будут использоваться вс
е буквы в нижнем регистре (параметр а), все
заглавные буквы (параметр А), а также цифры от 0 до 9 (параметр 1).
Вы также можете добавлять специальные символы в алфавит для генера­ции паролей, добавляя их внутри одиночных кавычек после параметра -x, как показано в следующей команде:
root@kali:~# hydra -L users.txt –V –x '6:8:aA1 !@#$' <IP address> SSH
Другая утилита, которая может быть использована для перебора паролей к службе, SSH, – Medusa. Пример запуска утилиты приведён ниже:
root@kali:~# medusa -h 172.17.0.3 -U users.txt -P passwords.txt -M ssh Medusa v2.2 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>
ACCOUNT CHECK: [ssh] Host: 172.17.0.3 (1 of 1, 0 complete) User: tets (1 of 2, 0 complete) Password: pass (1 of 2 complete) ACCOUNT CHECK: [ssh] Host: 172.17.0.3 (1 of 1, 0 complete) User: tets (1 of 2, 0 complete) Password: user (2 of 2 complete) ACCOUNT CHECK: [ssh] Host: 172.17.0.3 (1 of 1, 0 complete) User: user (2 of 2, 1 complete) Password: pass (1 of 2 complete) ACCOUNT CHECK: [ssh] Host: 172.17.0.3 (1 of 1, 0 complete) User: user (2 of 2, 1 complete) Password: user (2 of 2 complete)
ACCOUNT FOUND: [ssh] Host: 172.17.0.3 User: user Password: user [SUCCESS]
75

4.4. КОМПРОМЕТАЦИЯ ПРОТОКОЛА VNC

Исследовательская лаборатория Olivetti&Oracle впервые опубликовала спецификацию протокола Remote Framebuffer (RFB) 3.3 в 1998 году. Virtual Network Computing (VNC) – это приложение, которое использует протокол RFB для обеспечения доступа к удалённым узлам. Вышеназванная лаборатория бы­ла закрыта в 2002 году, что позволило разработчикам создать компанию RealVNC Ltd. и опубликовать последующие спецификации протокола RFB.
Службы RFB обычно прослушивают TCP-порт 5900, но могут использо­вать другие (например, 4900 и 6000). Протокол расширяется за счёт внедрения произвол
ьных типов кодирования, которые поддерживают передачу файлов и сжатие в пакетах, включая программные решения UltraVNC и TightVNC. После подключения к серверу VNC он предоставляет строку протокола, как показано в примере ниже. Версии протокола включают в себя следующие варианты: 000 000, 003.003, 003.007, 003.008, 003.889, 004.000 и 004.001:
root@kali:~# telnet 121.163.21.135 5900 Trying 121.163.21.135... Connected to 121.163.21.135. Escape character is '^]'. RFB 004.000
В Nmap есть скрипт vnc-info, с помощью которого можно выполнить тес­тирование открытых VNC-серверов, с целью получения версии протокола RFB и информации о поддерживаемых типах безопасности, как показано в примере ниже. Библиотека VNC в Nmap (vnc.lua) распознает версии протокола 3.3, 3.7,
3.8 и 3.889. Таким образом, серверы, сообщающие о других версиях, должны быть исследованы вручную:
root@kali:~# nmap -Pn -n -sVC -p5900 128.32.147.121 Starting Nmap 6.46 ( http://nmap.org ) at 2014-12-09 13:05 UTC Nmap scan report for 128.32.147.121 PORT STATE SERVICE VERSION 5900/tcp open vnc Apple remote desktop vnc ...
Реализации протокола VNC уязвимы для следующих классов атак:
− подбор пароля методом грубой силы;
− анонимная эксплуатация известных программных уязвимостей.
Утилиты Nmap и Hydra можно использовать для реализации подбора паролей методом грубой силы с учётом использования механизма аутентифи­кации VNC (тип безопасности 2). Из-за реализации схемы DES запрос-ответ в RFB-протоколе пароли ограничены длиной в восемь символов (п
оследующие символы игнорируются), поэтому файлы словарей могут быть сильно умень­шены.
Для доступа к серверу VNC из командной строки в окне терминала вве-
дите следующую команду:
root@kali:~# vncviewer target
76
Сервис FTP обеспечивает удалённый доступ к файлам, как правило, при работе с веб-приложениями. Сервер FTP использует два порта для обмена дан­ными: TCP-порт 21 – порт управления входящим соединением, который обра­батывает FTP-команды от клиента, и порт TCP 20 – порт исходящих соедине­ний, используемый для отправки данных от сервера клиенту. Передача файлов

4.5. FTP

организуется посредством передачи команд управления че
рез порт управления (21), включая команду PORT для инициирования передачи данных с использо­ванием порта исходящих данных. RFC 959 подробно описывает FTP, включая поддерживаемые команды и режимы работы.
Сервисы FTP уязвимы для следующих классов атаки:
− подбор пароля методом грубой силы;
− анонимный доступ и использование программных уязвимостей;
− эксплуатация уязвимостей аутентификации (требует определённых
привилегий).
4.5.1. Определение FTP-сл
ужб
Nmap выполняет сетевое обнаружение и получение отпечатка ОС с фла­гом -A, как показано в примере ниже. Этот флаг вызывает скрипт ftp-anon NSE (среди прочего), который будет проверять анонимный доступ и возвращать структуру каталогов FTP после аутентификации. В примере ниже Nmap сооб­щает, что сервер работает под управлением приложения vsftpd 2.3.5 или новее:
root@kali:~# nmap -Pn -sS -p21 82.179.158.193 Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-05 21:25 UTC Nmap scan report for 82.179.158.193 Host is up (0.00021s latency).
PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.5 Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 3.X OS CPE: cpe:/o:linux:linux_kernel:3.11 OS details: Linux 3.11, Linux 3.2 - 3.16 Network Distance: 2 hops Service Info: OS: Unix
TRACEROUTE (using port 21/tcp) HOP RTT ADDRESS 1 0.08 ms 172.17.0.1 2 0.25 ms 82.179.158.193
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 7.24 seconds
Если вы получаете действующие учётные данные с помощью метода гру­бой силы или другими способами, особенно важно аутентифицироваться и оце-
77
нить привилегии. Особенности FTP-сервиса могут использоваться для загрузки вредоносных данных на сервер, поэтому возможность записи данных достаточ­но важна.

4.6. TFTP

Сервис TFTP прослушивает порт UDP 69 и не требует от клиентов про­верки подлинности: клиенты могут читать и записывать данные с использова­нием формата датаграмм, описанного в RFC 1350. Из-за недостатков в прото­коле TFTP (т.е. отсутствия аутентификации и отсутствия сервиса безопасности на транспортном уровне) найти такие серверы в общедоступном Интернете ма­ловероятно. Однако во внутр
енних сетях TFTP часто используется для хране­ния файлов конфигурации, прошивок ОС для телефонов VoIP и других сетевых устройств.
TFTP-серверы уязвимы для следующих классов атак:
− получение данных с сервера, таких как файлы конфигурации, содер-
жащие аутентификационную информацию;
− обход политики безопасности за счёт перезаписывания данных на
сервере (например, замена образа устройства);
− удалённое выполнение кода. Утилита tftp в Kali Linux может использоваться для подключения к TFTP-
серв
ерам вручную и выполнения операций чтения (get) и записи (put). Прото­кол не предоставляет никаких ссылок на содержимое каталога, и поэтому точ­ные имена файлов должны быть известны заранее или получены перебором.
Сценарий Nmap tftp-enum выполняет операции чтения с использованием встроенного словаря имён файлов (/usr/share/nmap/nselib/data/tftplist.txt в Kali Linux). В примере ниже показан запуск сценария в отношении доступного сер­вера и клиента tftp для извлечения файла SEPDefault.cnf:
root@kali:~# nmap -Pn -sU -p69 --script tftp-enum 192.168.10.250
Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-05 22:06 UTC Nmap scan report for 172.17.0.1 Host is up (0.000067s latency).
PORT STATE SERVICE 69/udp open tftp | tftp-enum: |_ SEPDefault.cnf MAC Address: 02:42:A9:40:7F:55 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 31.88 seconds root@kali:~# tftp 192.168.10.250 tftp> get SEPDefault.cnf Received 1738 bytes in 0.6 seconds tftp> quit
root@kali:~# cat SEPDefault.cnf
SIP Configuration Generic File (start)# Line 1 Settings line1 _ name: “502” ; Line 1 Extension\User ID
78
line1 _ displayname: “502” ; Line 1 Display Name line1 _ authname: “502” ; Line 1 Registration Authentication line1 _ password: “1234” ; Line 1 Registration Password # Line 2 Settings line2 _ name: “” ; Line 2 Extension\User IDs line2 _ displayname: “” ; Line 2 Display Name
line2 _ authname: “UNPROVISIONED” ; Line 2 Registration Authentication line2 _ password: “UNPROVISIONED” ; Line 2 Registration Password
... # Phone prompt/password for telnet/console session phone _ prompt: “Cisco7960” ; Telnet/Console Prompt phone _ password: “abc” ; Telnet/Console Password
# SIP Configuration Generic File (stop)
Многие конфигурации TFTP-сервера позволяют загружать файлы, как показано ниже:
root@kali:~# echo testing > test.txt
root@kali:~# tftp 192.168.10.250
tftp> put test.txt
Sent 9 bytes in 0.3 seconds
tftp> get test.txt
Received 9 bytes in 0.1 seconds
79

ЗАКЛЮЧЕНИЕ

Безопасность критической информационной инфраструктуры (КИИ) – это комплексный процесс по обеспечению устойчивого и бесперебойного функ­ционирования критичных бизнес-процессов организации. Данный процесс включает в себя мероприятия по защите информации в информационных сис­темах, автоматизированных системах и информационно-телекоммуникацион­ных сетях.
В данном пособии подробно рассматривается одно из направлений обес­печения безопасности КИИ – тестир части аудита безопасности. В пособии рассмотрены вопросы пассивного и ак­тивного аудита безопасности элементов КИИ, отдельное внимание уделяется работе с комплексными разведывательными средствами, изучаются подходы, используемые для тестирования типовых служб, работающих на популярных операционных платформах. Подходы к тестированию, представленные в посо­бии, могут быть использованы для получения оценки эффективности механиз­мов безоп
рый должна предпринять любая организация для решения задачи управления информационными рисками. Оценка эффективности механизмов безопасности сетевой инфраструктуры с позиции злоумышленника является более активным подходом к управлению рисками. Списки контрмер, созданные по результатам тестирования КИИ на проникновение, помогут разрабо скую стратегию безопасности и укрепить производственную среду на уровне сети и приложений.
асности элементов КИИ.
Оценка эффективности механизмов безопасности – это первый шаг, кото-
ование на проникновение как составной
тать чёткую техниче-
80
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]