piątek, 28 maja 2010

Klucze RSA

Poniższa notka będzie jeszcze krótsza od poprzedniej ;>
Teraz do rzeczy. Tworzenie kluczy to dość prosty proces.
Przebiega następująco:

Wchodzimy do katalogu .ssh w naszym katalogu domowym i wpisujemy:

ssh-keygen

Generator zapyta najpierw o nazwę pliku,do którego zostanie zapisany klucz. Domyślnie będzie to id_rsa(klucz prywatny), jeśli chcemy zmienić nazwę pliku wpisujemy coś, jeśli nie wystarczy ENTER. Klucz publiczny będzie nazywać się prawie tak samo - dodatkowo posiada rozszerzenie "pub". Kolejnym krokiem jest wpisanie hasła(dwukrotnie), przy czym nie jest ono konieczne(jeżeli nie chcemy hasła wystarczy ENTER). W ten sposób utworzyliśmy klucz.
Teraz jeśli chcemy móc logować się na zdalnego hosta za pomocą klucza powinniśmy wysłać na niego nasz klucz publiczny(id_rsa.pub).
Na zdalnym hoście kopiujemy ten plik do katalogu .ssh(plikowi możemy zmienić nazwę - to nie ma znaczenia) i wykonujemy:

cat id_rsa.pub >> authorized_keys

(id_rsa.pub to oczywiście nasz plik z kluczem publicznym)

Od tej pory możemy bezpiecznie logować się na nasze konto shellowe.

czwartek, 27 maja 2010

Reverse Shell

To będzie bardzo krótki ale za to konkretny wpis. ;]
Chciałbym przedstawić ciekawą możliwość, którą daje protokół ssh o której pewnie nie każdy wie.

Rozważmy następującą sytuację:

Mamy dwa hosty - A i B. Komputer A znajduje się w sieci wewnętrznej za maskaradą, komputer B jest w sieci publicznej. Do wykonania poniższych operacji nie potrzebujemy konta administratora. Chcemy z komputera B zalogować się na shella komputera A. Sytuacja odwrotna jest oczywiście trywialna. Jak jednak dostać się do shella komputera znajdującego się w sieci prywatnej?

Rozwiązanie:

user@A:~$ ssh -NR 3333:localhost:22 user@B

W ten sposób ustanawiamy połączenie w trybie odwrotnego shella(-R), przełącznik -N służy do tego by nie otwierać shella w trybie interaktywnym. To połączenie będzie nam służyło jedynie do ustawienia ścieżki zwrotnej. Jak wiadomo nie możemy bez dodatkowych operacji połączyć się z hostem w sieci prywatnej. Pierwszy numer portu to port wejściowy komputera A(kiedy nie mamy roota musi być wyższy niż 1024), drugi to oczywiście port SSH.

user@B:~$ ssh user@localhost -p 3333

Z hostem w sieci wewnętrznej łączymy się tak jak powyżej. Przełącznik -p wskazuje port ten sam który ustawiliśmy wcześniej.

Jeżeli przeszkadza nam ciągłe wpisywanie haseł możemy skorzystać z kluczy RSA. Wtedy możemy nawet dołączyć pierwsze polecenie do skryptów startowych hosta A.
Zagadnienie to nie jest zbyt skomplikowane ale na wszelki wypadek opiszę je w następnej notce.

Źródło: http://www.plenz.com/reverseshell