Zawsze korzystałem z prostej sztuczki, aby ominąć większość zapór ogniowych, co uniemożliwiało mi korzystanie z jakichkolwiek portów. Po prostu otworzyłem ssh na jednym z moich serwerów na porcie 443 i tunelowałem cały ruch.
Jednak jestem teraz w sieci, która ma zaporę ogniową, której nigdy wcześniej nie widziałam i nawet nie wiedziałam, że to możliwe.
W tej sieci można używać portu 443 tylko do legalnego ruchu na serwerze WWW. Jeśli otworzę ssh lub cokolwiek innego na porcie 443 i spróbuję połączyć się tam z tej sieci, zostanie on natychmiast zabity. Jeśli uruchomię apache na tym serwerze, to działa.
Jak to w ogóle jest możliwe? Czy istnieją jakieś bardzo wyrafinowane zapory ogniowe, które potrafią nawet analizować zaszyfrowany ruch w celu zweryfikowania, czy jest to legalny ruch https? W jaki sposób?
źródło
Odpowiedzi:
Tak i nie potrzebują tutaj żadnej magii, po prostu trywialne dopasowanie zawartości pakietu TCP. Mimo że SSH i TLS (SSL) szyfrują swoje ładunki , same nagłówki protokołów są nadal rozróżnialne i bardzo się od siebie różnią. Na przykład połączenie SSHv2 zawsze rozpoczyna się od wysłania przez klienta
SSH-2.0-(client name and version)
. Podobnie, mimo że zapora sieciowa nie może naprawdę wiedzieć, czy połączenie TLS przenosi HTTP wewnątrz, może rozpoznać sam TLS .Takie sprawdzanie warstw powyżej TCP zazwyczaj wchodzi w zakres „Głębokiej kontroli pakietów”, stosunkowo częstej funkcji.
Jednym z oczywistych sposobów na ominięcie tego jest tunelowanie SSH w TLS - na przykład za pomocą stunnela, haproxy lub sniproxy. (Oprócz zwykłego tunelowania, gdzie port 443 jest dedykowany SSH-over-TLS, mogą również multipleksować SSH / HTTP / inne protokoły przez ten sam port w oparciu o SNI i ALPN.)
Chociaż nie zawsze pokonuje to naprawdę skomplikowaną analizę ruchu, nadal omija większość filtrów, które jedynie sprawdzają „czy to wygląda jak nagłówek TLS”.
Są też denerwujące zapory ogniowe - takie, które przechwytują TLS w celu odszyfrowania i ponownego zaszyfrowania całego ruchu. Mogą one faktycznie zobaczyć wewnątrz TLS i mogą przekazywać żądania HTTP, jednocześnie blokując wszystko inne. (Pamiętaj, że niektóre programy antywirusowe również robią to samo.) Możesz rozpoznać tego rodzaju, patrząc na certyfikaty serwera; wszystkie certyfikaty generowane przez proxy wyglądają tak samo i często nie przechodzą walidacji, podczas gdy prawdziwe certyfikaty są wydawane przez różne różne urzędy certyfikacji.
źródło