NFsec Logo

Brezent na SSH

25/03/2019 (4 tygodnie temu) w Administracja, Bezpieczeństwo Brak komentarzy.  (artykuł nr 685, ilość słów: 553)

B

rezent (ang. tarpit), czyli płachta na usługę. Jest usługą sieciową, która celowo wprowadza opóźnienia w obsługiwanym protokole spowalniając w ten sposób klientów i zmuszając ich do oczekiwania przez określony czas. Zachowanie to spowalnia lub zatrzymuje sondowanie i atakowanie systemów / usług. Skanery, skrypty i inne narzędzia atakującego są związywane z konkretną usługą / portem i nie mają możliwości ruszyć dalej (zazwyczaj działają synchronicznie wykonując pracę host po hoście / port po porcie). Nakłada to na atakującego większy koszt pod względem czasu i zasobów niż ponosi go obrońca.

Ostatnio Christopher Wellons napisał mały programik (endlessh), który bazuje na paragrafie 4.2 protokołu SSH. Po tym, jak połączenie TCP pomiędzy klientem i serwerem zostanie nawiązane, ale przed negocjacją szyfrowania obydwie strony wysyłają sobie łańcuch identyfikacyjny:

SSH-protoversion-softwareversion SP comments CR LF

W RFC możemy przeczytać również:

Serwer MOŻE wysyłać inne linie danych przed wysłaniem łańcucha tekstu z wersją.

Nie ma nic powiedziane o liczbie i limicie linii, tylko tyle, że linie te nie mogą zaczynać się od frazy „SSH-„, ponieważ byłoby to dwuznaczne z łańcuchem identyfikacyjnym. Linie nie mogą być też dłuższe niż 255 znaków (w tym znak końca bieżącej linii tekstu CRLF). Tak więc, endlessh wysyła niekończący są strumień losowo generowanych linii z innymi danymi bez zamiaru wysłania łańcucha identyfikacyjnego. W domyślnej konfiguracji czeka 10 sekund między kolejnymi wierszami. Spowalnia to cały protokół SSH, ale nie pozwala na przekroczenie limitu czasu połączenia. W dodatku oznacza to, że program ten nie musi wiedzieć nic o kryptografii lub w zdecydowanej większości o protokole SSH. Proste, jak drut. Jeśli połączymy się z nim klientem ssh z dodaną opcją -v (verbose) to zobaczymy na konsoli pojawiające się, co 10 sekund ciągi:

debug1: ssh_exchange_identification: ZcNa;@g)j@l^G9H+ADRdDj/&fW
debug1: ssh_exchange_identification: .9oBJ`a+.]pFZI)v

Instalacja programu jest bardzo prosta. Pobieramy jego źródła, kompilujemy i umieszczamy w ścieżce: /opt/endlessh/. Przed jego uruchomieniem w testowym systemie dodałem jeszcze reguły iptables (domyślna polityka dla łańcucha INPUT to DROP) pozwalające na połączenie się tylko jednemu, unikalnemu adresowi IP w ciągu godziny z usługą SSH:

IPT="/sbin/iptables -v"
ETH0="X.X.X.X"

$IPT -N SSHSCAN
$IPT -A INPUT -i eth0 -p tcp -d $ETH0 --dport 22 -m state --state NEW -j SSHSCAN
$IPT -A SSHSCAN -i eth0 -p tcp -d $ETH0 --dport 22 -m state --state ESTABLISHED -j ACCEPT
$IPT -A SSHSCAN -m recent --set --name SSH --rsource
$IPT -A SSHSCAN -m recent --update --seconds 3600 --hitcount 2 --name SSH --rsource -j LOG --log-prefix "SSH-BRUTEFORCE: " --log-level 6
$IPT -A SSHSCAN -m recent --update --seconds 3600 --hitcount 2 --name SSH --rsource -j DROP
$IPT -A SSHSCAN -j ACCEPT

Oryginalna usługa SSH została przeniesiona wcześniej na inny port (co, rozwiązuje 99% ataków na nią). Po uruchomieniu endlessh na standardowym porcie o godzinie 22:20 pierwsi goście pojawili się o 23:03 i 23:17 bawiąc aż do rana będąc związanymi z portem przez prawie 7 godzin:

root@darkstar:~# /opt/endlessh/endlessh -f /etc/endlessh/endlessh
2019-03-24T22:20:38.493Z Port 22
2019-03-24T22:20:38.493Z Delay 10000
2019-03-24T22:20:38.493Z MaxLineLength 32
2019-03-24T22:20:38.493Z MaxClients 4096
2019-03-24T23:03:42.330Z ACCEPT host=::ffff:X.X.X.X port=51350 fd=4 n=1/4096
2019-03-24T23:17:19.013Z ACCEPT host=::ffff:Y.Y.Y.Y port=36817 fd=5 n=2/4096
2019-03-25T05:49:40.339Z CLOSE host=::ffff:X.X.X.X port=51350 fd=4 time=24358.009
2019-03-25T06:04:51.237Z CLOSE host=::ffff:Y.Y.Y.Y port=36817 fd=5 time=24452.224

Jeśli chcemy uruchomić tą usługę na systemie produkcyjnym lub honeypot warto zadbać, aby po związaniu się z portem zrzuciła ona uprawnienia administratora.

Więcej informacji: Fałszujemy rozpoznania skanerów #1, Endlessh: an SSH Tarpit, iptables „recent” module and hit limits

Kategorie K a t e g o r i e : Administracja, Bezpieczeństwo

Tagi T a g i : , , , , , ,

Podobne artykuły:

  • Brak tematycznie powiązanych artykułów.

Komentowanie tego wpisu jest zablokowane.