22 - Pentesting SSH/SFTP
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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
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;
без залежностей
Це виявляється за замовчуванням за допомогою nmap. Але ви також можете використовувати sslcan або sslyze.
ssh
В деяких версіях OpenSSH ви можете здійснити таймінгову атаку для перерахування користувачів. Ви можете використовувати модуль metasploit для експлуатації цього:
Деякі загальні ssh облікові дані тут та тут і нижче.
Якщо ви знаєте деякі ssh приватні ключі, які можуть бути використані... давайте спробуємо. Ви можете використовувати скрипт nmap:
Або модуль допоміжних засобів MSF:
Or use ssh-keybrute.py
(native python3, lightweight and has legacy algorithms enabled): snowdroppe/ssh-keybrute.
Деякі системи мають відомі недоліки в випадковому насінні, яке використовується для генерації криптографічного матеріалу. Це може призвести до значного зменшення простору ключів, який можна зламати. Попередньо згенеровані набори ключів, згенеровані на системах Debian, які підлягають слабкому PRNG, доступні тут: g0tmi1k/debian-ssh.
Вам слід подивитися сюди, щоб знайти дійсні ключі для жертви.
crackmapexec використовуючи протокол ssh
може використовувати опцію --kerberos
для автентифікації через kerberos.
Для отримання додаткової інформації запустіть crackmapexec ssh --help
.
Виробник
Імена користувачів
Паролі
APC
apc, device
apc
Brocade
admin
admin123, password, brocade, fibranne
Cisco
admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin
admin, Admin123, default, password, secur4u, cisco, Cisco, _Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme
Citrix
root, nsroot, nsmaint, vdiadmin, kvm, cli, admin
C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler
D-Link
admin, user
private, admin, user
Dell
root, user1, admin, vkernel, cli
calvin, 123456, password, vkernel, Stor@ge!, admin
EMC
admin, root, sysadmin
EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc
HP/3Com
admin, root, vcx, app, spvar, manage, hpsupport, opc_op
admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin
Huawei
admin, root
123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123
IBM
USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer
PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer
Juniper
netscreen
netscreen
NetApp
admin
netapp123
Oracle
root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user
changeme, ilom-admin, ilom-operator, welcome1, oracle
VMware
vi-admin, root, hqadmin, vmware, admin
vmware, vmw@re, hqadmin, default
Якщо ви в локальній мережі як жертва, яка збирається підключитися до SSH сервера, використовуючи ім'я користувача та пароль, ви можете спробувати виконати атаку MitM, щоб вкрасти ці облікові дані:
Шлях атаки:
Перенаправлення трафіку: Атакуючий відхиляє трафік жертви на свою машину, ефективно перехоплюючи спробу підключення до SSH сервера.
Перехоплення та ведення журналу: Машина атакуючого діє як проксі, захоплюючи дані для входу користувача, видаючи себе за легітимний SSH сервер.
Виконання команд та реле: Нарешті, сервер атакуючого реєструє облікові дані користувача, пересилає команди на реальний SSH сервер, виконує їх і надсилає результати назад користувачу, роблячи процес безперервним і легітимним.
SSH MITM робить саме те, що описано вище.
Щоб захопити фактичний MitM, ви можете використовувати такі техніки, як ARP спуфінг, DNS спуфінг або інші, описані в Атаках на спуфінг мережі.
Якщо ви хочете пройти через мережу, використовуючи виявлені приватні SSH ключі на системах, використовуючи кожен приватний ключ на кожній системі для нових хостів, тоді SSH-Snake - це те, що вам потрібно.
SSH-Snake автоматично та рекурсивно виконує такі завдання:
На поточній системі знайти будь-які приватні SSH ключі,
На поточній системі знайти будь-які хости або призначення (user@host), які можуть приймати приватні ключі,
Спробувати підключитися до всіх призначень, використовуючи всі виявлені приватні ключі,
Якщо призначення успішно підключено, повторити кроки #1 - #4 на підключеній системі.
Це повністю самовідтворюється та саморозповсюджується - і повністю безфайлове.
Зазвичай 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, де адміністратори мають намір, щоб користувачі обмінювалися файлами без увімкнення доступу до віддаленого терміналу. Незважаючи на те, що користувачі налаштовані з неінтерактивними оболонками (наприклад, /usr/bin/nologin
) і обмежені до певного каталогу, залишається прогалина в безпеці. Користувачі можуть обійти ці обмеження, запитуючи виконання команди (такої як /bin/bash
) відразу після входу, до того, як їх призначена неінтерактивна оболонка візьме на себе. Це дозволяє виконувати несанкціоновані команди, підриваючи заплановані заходи безпеки.
Ось приклад безпечної конфігурації SFTP (/etc/ssh/sshd_config
– openSSH) для користувача noraj
:
Ця конфігурація дозволить лише SFTP: відключаючи доступ до оболонки, примушуючи команду запуску та відключаючи доступ до TTY, а також відключаючи всі види переадресації портів або тунелювання.
Якщо у вас є доступ до SFTP сервера, ви також можете тунелювати свій трафік через це, наприклад, використовуючи звичайну переадресацію портів:
Команда sftp має команду "symlink". Тому, якщо у вас є права на запис в якійсь папці, ви можете створювати symlink для інших папок/файлів. Оскільки ви, ймовірно, застрягли всередині chroot, це не буде особливо корисно для вас, але, якщо ви зможете доступитися до створеного symlink з no-chroot сервісу (наприклад, якщо ви можете доступитися до symlink з вебу), ви могли б відкрити symlinked файли через веб.
Наприклад, щоб створити symlink з нового файлу "froot" на "/":
Якщо ви можете отримати доступ до файлу "froot" через веб, ви зможете переглянути кореневу ("/") папку системи.
У середовищах з високою безпекою звичайною практикою є увімкнення лише аутентифікації на основі ключів або двофакторної аутентифікації, а не простого фактору на основі пароля. Але часто більш сильні методи аутентифікації увімкнені без вимкнення слабших. Частим випадком є увімкнення publickey
у конфігурації openSSH та встановлення його як методу за замовчуванням, але не вимкнення password
. Таким чином, використовуючи режим детального виводу клієнта SSH, зловмисник може побачити, що увімкнено слабший метод:
Наприклад, якщо встановлено обмеження на кількість невдалих спроб автентифікації і ви ніколи не отримуєте можливості дійти до методу пароля, ви можете використовувати опцію PreferredAuthentications
, щоб примусити використовувати цей метод.
Перегляд конфігурації SSH-сервера є необхідним для перевірки, що лише очікувані методи авторизовані. Використання режиму детального виводу на клієнті може допомогти побачити ефективність конфігурації.
Ви можете знайти цікаві посібники про те, як зміцнити SSH на https://www.ssh-audit.com/hardening_guides.html
Bug bounty tip: зареєструйтесь на Intigriti, преміум платформі для bug bounty, створеній хакерами, для хакерів! Приєднуйтесь до нас на https://go.intigriti.com/hacktricks сьогодні та почніть заробляти винагороди до $100,000!
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)