22 - Pentesting SSH/SFTP
Bug bounty tip: sign up for Intigriti, a premium bug bounty platform created by hackers, for hackers! Join us at https://go.intigriti.com/hacktricks today, and start earning bounties up to $100,000!
Основна інформація
SSH (Secure Shell або Secure Socket Shell) - це мережевий протокол, який забезпечує безпечне з'єднання з комп'ютером через незахищену мережу. Він є важливим для підтримки конфіденційності та цілісності даних при доступі до віддалених систем.
Порт за замовчуванням: 22
SSH сервери:
openSSH – OpenBSD SSH, постачається в BSD, дистрибутивах Linux та Windows з Windows 10
Dropbear – реалізація SSH для середовищ з обмеженими ресурсами пам'яті та процесора, постачається в OpenWrt
PuTTY – реалізація SSH для Windows, клієнт зазвичай використовується, але використання сервера є рідкісним
CopSSH – реалізація OpenSSH для Windows
Бібліотеки SSH (реалізація на стороні сервера):
wolfSSH – бібліотека сервера SSHv2, написана на ANSI C та призначена для вбудованих, RTOS та ресурсно обмежених середовищ
Apache MINA SSHD – бібліотека Apache SSHD на Java базується на Apache MINA
paramiko – бібліотека протоколу SSHv2 на Python
Перерахування
Захоплення банера
Automated ssh-audit
ssh-audit - це інструмент для аудиту конфігурації ssh-сервера та клієнта.
https://github.com/jtesta/ssh-audit - це оновлений форк з https://github.com/arthepsy/ssh-audit/
Особливості:
Підтримка протоколів SSH1 та SSH2;
аналіз конфігурації SSH-клієнта;
отримання банера, розпізнавання пристрою або програмного забезпечення та операційної системи, виявлення стиснення;
збір алгоритмів обміну ключами, ключів хоста, шифрування та коду автентифікації повідомлень;
вивід інформації про алгоритми (доступно з, видалено/вимкнено, небезпечно/слабко/старе тощо);
вивід рекомендацій щодо алгоритмів (додати або видалити на основі розпізнаної версії програмного забезпечення);
вивід інформації про безпеку (пов'язані проблеми, призначений список CVE тощо);
аналіз сумісності версій SSH на основі інформації про алгоритми;
історична інформація з OpenSSH, Dropbear SSH та libssh;
працює на Linux та Windows;
без залежностей
Публічний SSH ключ сервера
Слабкі алгоритми шифрування
Це виявляється за замовчуванням за допомогою nmap. Але ви також можете використовувати sslcan або sslyze.
Скрипти Nmap
Shodan
ssh
Брутфорс імен користувачів, паролів та приватних ключів
Перерахування імен користувачів
В деяких версіях OpenSSH ви можете здійснити таймінгову атаку для перерахування користувачів. Ви можете використовувати модуль metasploit для експлуатації цього:
Деякі загальні ssh облікові дані тут та тут і нижче.
Брутфорс приватного ключа
Якщо ви знаєте деякі ssh приватні ключі, які можуть бути використані... давайте спробуємо. Ви можете використовувати скрипт nmap:
Або модуль допоміжних засобів MSF:
Or use ssh-keybrute.py
(native python3, lightweight and has legacy algorithms enabled): snowdroppe/ssh-keybrute.
Відомі погані ключі можна знайти тут:
Слабкі SSH ключі / Прогнозований PRNG Debian
Деякі системи мають відомі недоліки в випадковому насінні, яке використовується для генерації криптографічного матеріалу. Це може призвести до значного зменшення простору ключів, який можна зламати. Попередньо згенеровані набори ключів, згенеровані на системах Debian, які підлягають впливу слабкого PRNG, доступні тут: g0tmi1k/debian-ssh.
Вам слід шукати тут, щоб знайти дійсні ключі для машини жертви.
Kerberos
crackmapexec використовуючи протокол ssh
може використовувати опцію --kerberos
для автентифікації через kerberos.
Для отримання додаткової інформації запустіть crackmapexec ssh --help
.
Стандартні облікові дані
SSH-MitM
Якщо ви знаходитесь у локальній мережі як жертва, яка збирається підключитися до SSH сервера, використовуючи ім'я користувача та пароль, ви можете спробувати виконати атаку MitM, щоб вкрасти ці облікові дані:
Шлях атаки:
Перенаправлення трафіку: Зловмисник відволікає трафік жертви на свою машину, ефективно перехоплюючи спробу підключення до SSH сервера.
Перехоплення та ведення журналу: Машина зловмисника діє як проксі, захоплюючи дані для входу користувача, видаючи себе за легітимний SSH сервер.
Виконання команд та реле: Нарешті, сервер зловмисника реєструє облікові дані користувача, пересилає команди на реальний SSH сервер, виконує їх і надсилає результати назад користувачу, роблячи процес безперервним і легітимним.
SSH MITM робить саме те, що описано вище.
Щоб виконати фактичний MitM, ви можете використовувати такі техніки, як ARP спуфінг, DNS спуфінг або інші, описані в Атаках на спуфінг мережі.
SSH-Snake
Якщо ви хочете пройти через мережу, використовуючи виявлені приватні SSH ключі на системах, використовуючи кожен приватний ключ на кожній системі для нових хостів, тоді SSH-Snake - це те, що вам потрібно.
SSH-Snake автоматично та рекурсивно виконує такі завдання:
На поточній системі знайти будь-які приватні SSH ключі,
На поточній системі знайти будь-які хости або призначення (user@host), які можуть приймати приватні ключі,
Спробувати SSH підключитися до всіх призначень, використовуючи всі виявлені приватні ключі,
Якщо призначення успішно підключено, повторити кроки #1 - #4 на підключеній системі.
Це повністю самовідтворюється і саморозповсюджується - і повністю безфайлове.
Неправильні конфігурації
Вхід як root
Зазвичай SSH сервери дозволяють вхід користувача root за замовчуванням, що становить значний ризик для безпеки. Вимкнення входу root є критично важливим кроком у забезпеченні безпеки сервера. Несанкціонований доступ з адміністративними привілеями та атаки грубої сили можуть бути зменшені шляхом внесення цієї зміни.
Щоб вимкнути вхід root в OpenSSH:
Редагуйте файл конфігурації SSH за допомогою:
sudoedit /etc/ssh/sshd_config
Змініть налаштування з
#PermitRootLogin yes
наPermitRootLogin no
.Перезавантажте конфігурацію за допомогою:
sudo systemctl daemon-reload
Перезапустіть SSH сервер для застосування змін:
sudo systemctl restart sshd
SFTP Груба сила
Виконання команд SFTP
Існує загальне недогляд, яке виникає з налаштуваннями SFTP, де адміністратори мають намір, щоб користувачі обмінювалися файлами без увімкнення доступу до віддаленого терміналу. Незважаючи на те, що користувачі налаштовані з неінтерактивними оболонками (наприклад, /usr/bin/nologin
) і обмежені певним каталогом, залишається прогалина в безпеці. Користувачі можуть обійти ці обмеження, запитуючи виконання команди (такої як /bin/bash
) відразу після входу, до того, як їх призначена неінтерактивна оболонка візьме на себе. Це дозволяє виконувати несанкціоновані команди, підриваючи заплановані заходи безпеки.
Ось приклад безпечної конфігурації SFTP (/etc/ssh/sshd_config
– openSSH) для користувача noraj
:
Ця конфігурація дозволить лише SFTP: відключаючи доступ до оболонки, примушуючи команду запуску та відключаючи доступ до TTY, а також відключаючи всі види переадресації портів або тунелювання.
SFTP Тунелювання
Якщо у вас є доступ до SFTP сервера, ви також можете тунелювати свій трафік через це, наприклад, використовуючи звичайну переадресацію портів:
SFTP Symlink
Команда sftp має команду "symlink". Тому, якщо у вас є права на запис у якійсь папці, ви можете створювати symlink на інші папки/файли. Оскільки ви, ймовірно, застрягли всередині chroot, це не буде особливо корисно для вас, але, якщо ви зможете доступитися до створеного symlink з no-chroot сервісу (наприклад, якщо ви можете доступитися до symlink з вебу), ви могли б відкрити symlinked файли через веб.
Наприклад, щоб створити symlink з нового файлу "froot" на "/":
Якщо ви можете отримати доступ до файлу "froot" через веб, ви зможете переглянути кореневу ("/") папку системи.
Методи аутентифікації
У середовищах з високим рівнем безпеки звичайною практикою є увімкнення лише аутентифікації на основі ключів або двофакторної аутентифікації, а не простого фактору на основі пароля. Але часто більш сильні методи аутентифікації увімкнені без вимкнення слабших. Частим випадком є увімкнення publickey
у конфігурації openSSH і встановлення його як методу за замовчуванням, але не вимкнення password
. Таким чином, використовуючи режим детального виводу клієнта SSH, зловмисник може побачити, що увімкнено слабший метод:
Наприклад, якщо встановлено обмеження на кількість невдалих спроб автентифікації і ви ніколи не отримуєте можливості дійти до методу пароля, ви можете використовувати опцію PreferredAuthentications
, щоб примусити використовувати цей метод.
Перегляд конфігурації SSH-сервера є необхідним для перевірки, що лише очікувані методи авторизовані. Використання режиму детального виводу на клієнті може допомогти побачити ефективність конфігурації.
Config files
Fuzzing
References
Ви можете знайти цікаві посібники про те, як зміцнити SSH на https://www.ssh-audit.com/hardening_guides.html
Bug bounty tip: зареєструйтесь на Intigriti, преміум платформі для bug bounty, створеній хакерами, для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні, і почніть заробляти винагороди до $100,000!
HackTricks Automatic Commands
Last updated