Anon | 00500

Имя пользователя: Anon

Статус: Активен

Регистрация jabber:

Поток: Anon

TG канал: Канал для опретивных оповещений



Закрыть

Назад

Для доступа по shh нужно знать к кому подключаться (ip или host name), порт (по умолчанию 22), имя пользователя и пароль. Также нужен клиент, вообще все протоколы из стека TCP/IP это клиент-серверные протоколы, т.е. есть сервер, ожидающий подключения от клиента, и есть клиент, инициирующий подключение к серверу. Почти во всех дистрибутивах линукс клиент ssh идет в комплекте и доступен по команде «ssh»

$ ssh host -p 22 -l user

где -p это номер порта, -l — имя пользователя. Можно подключаться и так:

$ ssh user@host -p22

а если порт 22 то

$ ssh user@host

Все три команды идентичны и приведут к одному и тому же результату.

После успешного подключения тебе предоставляется доступ к shell`у удаленной машины. С этого момента все команды будут отправлены на сервер, выполнены и их результат будет отправлен обратно. Выглядит это так же как и при работе с эмулятором терминала на своей машине.

Конфигурационный файл сервера sshd находится по пути "/etc/ssh/sshd_config", доступ к которому имеет только администратор. А каждый пользователь, имеющий доступ по ssh, в домашнем каталоге хранит папку .ssh, в которой располагаются ключи аутентификации, файл с хешем открытых ключей клиентов и хеши открытых ключей серверов.

SSH поддерживает разные алгоритмы аутентификации мы разберем 2 основных - это авторизации по паролю и по ключу. С паролем все ясно, а вот с ключами интресенее. Для начала нам нужна своя пара ключей.

Очень часто администраторы забывают о том, что ssh поддерживает безпарольную аутентификацию по ключам. Если раз добавить на сервер свой ключ, то доступ сохранится даже после смены пароля.

Наверное тут надо сказать, что алгортмы шифрования делятся на 2 типа: симметричные и ассиметричные; симметричные алгоритмы шифрования (AES, Blowfish, DES) используют один ключ для шифрования и дешифрования информации (типо пароль), ассиметричные алгоритмы шифрования (RSA) использют пару ключей: открытый для шифрования и закрытый для дешифрования. Например Оля и Вася решили обмениваться зашифрованными с помощью RSA сообщениями. Для этого Вася генерирует себе пару ключей (открытый и закрытый) и Оля делает тоже самое. Чтобы начать общение Вася должен передать Оле свой открытый ключ и Оля должна передать вас свой открытый ключ. Теперь Вася шифрует свое сообщение открытым ключем Оли, а Оля может прочитать это сообщение дешифровав своим закрытым ключем. По открытому ключу невозможно расшифровать сообщение или восстановить закрытый ключ, в свою очередь зная закрытый ключ можно восстановить открытый. Т.е. для обеспечения защиты передаваемой информации оба должы обменяться открытыми ключами и обеспечить сохранность своих закрытых ключей.

Для того чтобы создать пару ключей для аутентификации по ssh нужно ввести команду

$ ssh-keygen

Менеджер спросит куда сохранить ключи и парольную фразу. Если ввести пароль то для работы с ключами надо будет его вводить. Если не менять путь сохранения ключей, то лежать они будут по пути "~/.ssh/", там "id_rsa" - приватный ключ, "id_rsa.pub" - публичный ключ. Теперь нужно передать этот ключ на ssh сервер. Можно воспользоваться командой

$ ssh-copy-id user@host

Синтаксис тут такой же как и у "ssh". Будет запрошен пароль сервера. После этого можно коннектиться к серверу как обычно, так как файлы ключей лежат по пути по умолчанию то

$ ssh user@host

если же нет то во-первых: приватный ключ должен иметь права 600, во-вторых: публичный - 644; и нужно добавить ключ "-i"

$ ssh user@host -i /path/to/id_rsa

При этом при подключении публичный ключ уже не нужен, хотя я настоятельно рекомендую хранить оба ключа в одной папке и настроить на нее правильный права.

Существует и другой способ прогрузки публичного ссш ключа.

К слову сказать, что один чел оказывал услугу по прогрузке ссш ключей на сервера с веб шелом. Только представь, ему платили за то что я сейчас рассказываю. Платили потому, что он прикрыл лавочку по неизвестным причинам.

Как я уже сказал у пользователя есть директория .ssh, кстати ее можно и создать, так вот в этой директории есть файл "authorized_keys" в котором и хранятся публичные ключи прогружаемые через "ssh-copy-id" и ничего не мешает тебе в ручную просто вставить свой публичный ключ в новую строку в этот файл. Результат будет одинаковый.

$ echo "your pub key" >> /home/user/.ssh/authorized_keys

Все, теперь даже если кто то сменит пароль пользователю, то мы все равно сохраним доступ, пока наш ключ не будет удален из файла authorized_keys.

Через ssh можно не только выполнять команды, а еще и серфить интернет, для этого трафик между локальной машиной и сервером туннелируется и во вне трафик идет уже с сервера. Для проброса одного порта (создания прокси) используется такая команда

$ ssh -T RPM@72.192.91.13 -D 8080

Параметр -T отключит псевдо терминал, а -D прибиндит порт. Таким образом на локал хосте у тебя будет висеть прокси на порту 8080. Пару скринов для POC

Вот такой ип у меня сейчас. Теперь включаю ссш туннель и биндю его на порт 44444

тут я еще указал путь до ключа. Теперь надо прописать прокси в браузер. Для менеджеринга прокси я юзаю FoxyProxy

Теперь мой внешний ип равен ип ссш сервера

Также поменялся провайдер и имя хоста и днс тоже, последнее потому что я указал что это SOCKS5 прокси, которые в свою очередь поддерживают форвардинг днс.

Еще один пример создания туннеля с порта на порт. К примеру на удаленном сервере запущен какой то сервис, например IP телефонии, который работает на порту 5901. И тебе нужно соединиться с сервером так чтобы трафик между клиентом и сервером был зашифрован, то ты будешь пробрасывать туннель на конкретный порт.

$ ssh user@host -L 5901:127.0.0.1:5901 -N

Теперь указываешь в клиенте SIP адрес хоста как 127.0.0.1 и он заработает. Магия! Такая практика используется для проброса порта сервера базы данных, когда настраивают горизонтальное масшабирование для балансировки нагрузки или когда 2 сервера юзают один сервер с БД или просто когда сервер с БД хостится отдельно, в общем в любой ситуации когда необходимо получить доступ к серверу БД удаленно. Это лучше чем светить порт сервера БД в интернет, по ряду причин, одна из очевидных - это безопасность.

Если и этого недостаточно и хочется большего, то встречайте sshuttle. Утилита легко и просто настроит тебе глобальное туннелирование всего системного трафика. Делается это так:

параметр --dns включит еще и форвардинг днс запросов, -e позволяет указать свою команду запуска ssh, в данном случае я указал путь до ключа. Выключаю прокси в браузере и результат, как говорится, на лицо ;-)

И как я уже сказал, трафик туннелируется весь

ifconfig.me упорно отказывается отвечать если юзер агент не указывать

Заметил, что при использовании sshuttle на вхуере не светится, что я использую прокси? Чем же туннелирование лучше ТОРа в котором тоже невозожно перехватить и дешифровать трафик между тобой и выходной нодой? SSH туннели не поднимают куча правительственных организаций, чтобы мониторить пользователей ssh - это раз, быстрее чем ТОР - это два. И все это исключительно мое мнение!

Если ты полюбишь ссш, то придется полюбить и брутить ссш любишь кататься люби и с санками ебаться. А для начала вспомним, как можно узнать кто работает на машине? Правильно w/who. А что же делать, спросишь ты? Все достаточно просто. SSH позволяет последним параметром указать команду, которая будет выполнена на удаленном сервере (такой тип параметров называется позиционным). Если сделать вот так:

$ ssh user@host "uname -a"

то ты увидишь информацию о системе на удаленном сервере и будешь отключен от него. Ну а чтобы не палить свою сессию можно подключиться к серверу вот так:

$ ssh user@host "/bin/sh -i"

и получить сессию sh в интерактивном режиме.

На гифке видно, что я подключился к серверу дважды, а в списке w видно только одну сессию, это как раз потому что вторую сессию я запускал с указанием "/bin/sh -i" последним параметром. Таким нехитрым способом можно скрыть свое присутствие. Хотя тебя все равно можно обнаружить, просто для этого придется затратить больше усилий. Кстати пробрасывать туннель тоже лучше с указанием "/bin/sh -i".

Теперь о бруте ssh. Брутить можно любым удобным способом, например гидрой. Тут ничего сложного нет, составить список для брута, взять пачку диапазонов и запустить софт. Можно уведичить конверсию запуская брут с захваченных серверов. Тут возникает несколько трудностей: отсутствие прав на установку гидры на сервер - это раз, наличие самой гидры уже палево - это два, если сервер потерять, то теряются все набрученные хосты - это три, ну и так далее.