Evilginx czyli Adversary in the Middle

how2hax.pl 1 miesiąc temu

W dzisiejszym wpisie zaprezentuję możliwości związane z wykorzystaniem systemu Evilginx do przeprowadzania testów socjotechnicznych. Jest to doskonałe narzędzie, które można wykorzystać w (etycznych) testach socjotechnicznych oraz działaniach Red Team w celu uzyskania dostępu do zasobów chronionych przez 2FA. Zapraszam!

Wstęp teoretyczny

Program Evilginx to narzędzie będące serwerem proxy, które umożliwia wykonanie ataku MiTM (lub jak kto woli AiTM – Adversary in the Middle). Jego zadaniem jest przekierowywanie zapytań od użytkownika końcowego do serwera docelowego i odwrotnie, a w międzyczasie udostępnianie potencjalnemu adwersarzowi wartościowych danych w postaci:

  • ciasteczek sesyjnych
  • danych logowania
Schemat działania serwera evilginx

Idea Evilginxa polega na tym, iż serwer ten nie terminuje połączenia SSL. Użytkownik jest w rzeczywistości połączony do złośliwej domeny login-outloook.com (w dalszej części zwanej również jako nasza-domena,pl), a wyświetlana jest mu zawartość z login.outlook.com na takiej samej zasadzie na jakiej dowolny serwer reverse proxy (Nginx) przekierowuje ruch.

Ponieważ cały ruch przechodzi przez serwer Evilginx, który terminuje połączenie SSL i otwiera oddzielne z docelowym serwerem, możliwe jest logowanie wszelkich danych przesyłanych przez użytkownika, jak również przesłanie atakującemu ciasteczek, które Użytkownik otrzymuje od docelowego serwera (np. od poczty Outlook.com).

Przygotowanie infrastruktury – praktyka

Aby serwer Evilginx działał poprawnie, musi być on serwerem DNS dla naszej domeny. Dlaczego? W przypadku logowania z wykorzystaniem usług Microsoft, „pod spodem” dzieje się dosyć dużo w kontekście ruchu HTTP/S. Wysyłanych jest bardzo dużo danych, do różnych domen i subdomen związanych z Microsoftem. Połączenia wykonywane są do takich subdomen jak:

  • account
  • cdn
  • login
  • www
  • live

Aby każda z tych subdomen (np. login.nasza-domena.pl) była rozwiązana na adres IP naszego serwera Evilginx, najlepiej aby był on sam dla siebie serwerem DNS i dowolne zapytanie rozwiązywał na swój adres IP.

W tym celu, na OVH, należy dokonać kilku zmian:

  • utworzyć wpis GLUE który wskazuje na nazwe ns1.nasza-domena.pl na adres IP evilginxa
  • utworzyć dwa wpisy w strefie DNS, które będą wskazywać na serwer evilginx. Dlaczego dwa? Ponieważ OVH nie pozwoli na dodanie jednego serwera DNS. Więc możemy go oszukać podając dwie nazwy wskazujące na ten sam adres IP
    • ns1.nasza-domena.pl
    • ns2.nasza-domena.pl
  • Zmienić serwer DNS na evilginxa

Niektóre z powyższych kroków (lub ich rezultaty) przedstawiłem na poniższych zrzutach ekranu:

Konfiguracja serwerów DNS dla phishingowej domeny
Utworzenie wpisów DNS dla serwerów ns1 i ns2
Zmiana serwerów DNS na ns1.nasza-domena.pl oraz ns2.nasza-domena.pl

Należy pamiętać, iż OVH (nie wiem jak inni providerzy) nie pozwolą na dodanie serwerów DNS, które nie odpowiadają prawidłowo na zapytania DNS. Aby pokonać ten problem należy przepuścić na firewallu ruch na portach 53 (UDP oraz TCP) na naszym VPSie. Powinniśmy również dopuścić ruch HTTPS (rzecz jasna) i dla spokoju – HTTP.

Konfiguracja firewalla dla Evilginxa

Konfiguracja Evilginxa

Działanie Evilginxa w głównej mierze oparte jest o pliki zwane phishletami. Jest to plik konfiguracyjny, szablon, w którym ustawiane są parametry zachowania serwera proxy (Evilginx oparty jest, niespodzianka, na Nginxie). Możemy zdefiniować w nim jakie parametry zapytań i jakie ciasteczka chcemy przechwytywać, jak przekierowywać zapytania do docelowego serwera, jakie nagłówki trzeba dołączać, a jakich nie należy.

Struktura phishletu oparta jest o składnię YAML, w której definiujemy poszczególne elementy w oparciu o dokumentację. Samodzielne tworzenie phishletu od zera nie jest łatwe, a sam twórca Evilginxa usunął gotowe phishlety ze swojej strony, odsyłając do społeczności na Githubie lub do swojego kursu ;-).

Phishlety do popularnych usług

Phishlety do popularnych usług możemy bardzo łatwo znaleźć w sieci. Część działa od lat, a używanie innych jest regularnie mitygowane przez dostawców usług. Microsoft od czasu do czasu zmienia network flow procesu uwierzytelnienia, nazwy ciasteczek i na moment pisania tego tekstu nie znalazłem gotowego phishletu, który działałby z usługą Microsoft 365. Możemy jednak względnie gwałtownie doprowadzić te dostępne w Internecie do działania (regexy w auth_tokens Twoim przyjacielem ;)).

Ściągnięcie gotowych phishletów

Mając przygotowany phishlet, przenosimy go do katalogu ./phishlets i uruchamiamy Evilginxa:

make sudo ./build/evilginx -p ./phishlets -t ./redirectors

W kolejnym kroku konfigurujemy domenę i wskazujemy adres IP naszego hosta, a także włączamy nasz phishlet

config domain nasza-domena.pl config ipv4 [adres IP Evilginxa] phishlets hostname [Twój Phishlet] nasza-domena.pl phishlets enable [Twój Phishlet]
Phishlety i ich status – jak widać, eksperymentowałem z kilkoma!

Gdy włączamy phishlet po raz pierwszy, program automatycznie pozyskuje wszelkie niezbędne certyfikaty z wykorzystaniem certbota. W chwilę po uzyskaniu certyfikatow, w logach programu pojawiają się dziesiątki (o ile nie setki) połączeń od publicznie znanych botów i crawlerów różnych dostawców. Uważam, iż skuteczne blokowanie tych botów jest prawdziwym kluczem do sukcesu w powodzeniu kampanii phishingowej. o ile nasza domena zostanie oflagowana jako złośliwa – nici z naszego Red Teamu.

Po pozyskaniu certyfikatów i włączeniu phishleta, tworzymy tzw. lures, czyli linki do wysłania.

lures create [Twój phishlet] lures get-url 0
Stworzenie adresu URL do phishingu

Po stworzeniu URLa nie pozostaje nam nic innego jak wysłać go w wiadomości phishingowej. Legendę i pretekst pozostawiam Wam

No ale jak to wygląda w praktyce?

W praktyce, ofiara po wejściu na phishingowy link otrzymuje prawdziwą stronę logowania, przeproxowaną zgodnie z regułami zapisanymi w phishlecie. Działa to jak zwykłe reverse proxy, więc w oknie przeglądarki mamy naszą, złośliwą domenę i jej certyfikat.

Wpisaniu danych logowania bez problemu przechwytujemy wpisane credentiale – końcu cały ruch przechodzi przez nasz serwer. Po chwili ofiara przepisuje też kod 2FA z telefonu i zostaje przekierowana na docelową stronę (w tym przypadku www.office.com), a my cieszymy się z przejętych ciasteczek.

W ostatnim kroku, aby wykorzystać ww. ciasteczka należy skorzystać z wtyczki cookie-editor w programie Firefox. Czyścimy stare ciasteczka, klikamy „Import” i zaznaczamy wszystkie ciasteczka przejęte przez program Evilginx, wklejamy w oknie cookie-editora i klikamy „Import”.

Importowanie ciasteczek do programu Firefox

Po zaimportowaniu ciasteczek wchodzimy na stronę www.office.com i cieszymy się sesją użytkownika 8-).

Jak się bronić? Dla strony Blue

Przede wszystkim powinniśmy korzystać z drugiego składnika uwierzytelnienia, który jednoznaczenie identyfikuje stacje kliencką, dzięki czemu połączenie do docelowego serwera wykonywane de-facto przez serwer Evilginxa nie będzie traktowane jako zaufane. Przykładem mogą być klucze sprzętowe FIDO2 (Yubikey etc.), które chronią przed tym scenariuszem. Możej wklejam dobrze znaną tabelkę, która pokazuje która metoda dostarczania drugiego składnika chroni przez atakiem AiTM:

Co chroni przed AiTM? (źródło: https://cognisys.co.uk/blog/how-to-protect-against-aitm-evilginx-phishing-attacks/)

Co jeszcze możemy zrobić? Z pomocą przychodzi nam też Microsoftowy Conditional Access Policies, za pomocą którego możemy ograniczyć połączenia z wykorzystaniem:

  • Trusted Locations
  • Compliant devices only

Te dwie metody, które intuicyjnie rozumiemy, pozwalają na ograniczenie możliwości logowania do firmowych zasobów z określonych lokalizacji, a drugi pozwala na logowanie tylko sprzętu spełniającego określone warunki. Ubuntu Linux adwersarza, na którym wystawiony jest Evilginx prawdopodobnie nie będzie spełniać tych warunków

Jak się lepiej atakować? Dla strony Red

Domena z uruchomionym Evilginxem nie przeżyje długo przy domyślnej konfiguracji. Crawlery takich firm jak Microsoft, Palo Alto czy innych dużych korporacji związanych z bezpieczeństwem gwałtownie oflagują naszą infrastrukturę. Skorzystaj z porad zawartych w tym tekście aby ograniczyć to ryzyko

Idź do oryginalnego materiału