https://chacker.pl/
Covenant to framework C2 napisany w języku C#, który może działać zarówno w systemie Linux, jak i Windows. Wraz z popularnością języka C# w działaniach zespołu czerwonego, Covenant zyskał na popularności, ponieważ ma natywną obsługę języka C# do tworzenia plików binarnych i może korzystać z wielu popularnych narzędzi C# po eksploatacji. Ponadto możliwość wykonywania dodatkowych zestawów C# w pamięci i możliwość łatwego rozszerzania frameworka ułatwia dodawanie ulubionych narzędzi C# do frameworka w celu wykonywania operacji. Covenant można również wdrożyć za pośrednictwem Dockera i ma przyjazny interfejs sieciowy. Jest dostarczany z przykładowymi profilami do wykorzystania w sieci i nasłuchiwaniach mostkowych, których można używać w protokołach niestandardowych i zewnętrznym C2. Ponadto posiada funkcje, które są świetne dla czerwonych zespołów, takie jak możliwość śledzenia artefaktów używanych podczas operacji, a także tworzenia wykresów ataków, które pokazują ścieżkę, jaką pokonał tester podczas operacji.
Covenant to framework C2 napisany w języku C#, który może działać zarówno w systemie Linux, jak i Windows. Wraz z popularnością języka C# w działaniach zespołu czerwonego, Covenant zyskał na popularności, ponieważ ma natywną obsługę języka C# do tworzenia plików binarnych i może korzystać z wielu popularnych narzędzi C# po eksploatacji. Ponadto możliwość wykonywania dodatkowych zestawów C# w pamięci i możliwość łatwego rozszerzania frameworka ułatwia dodawanie ulubionych narzędzi C# do frameworka w celu wykonywania operacji. Covenant można również wdrożyć za pośrednictwem Dockera i ma przyjazny interfejs sieciowy. Jest dostarczany z przykładowymi profilami do wykorzystania w sieci i nasłuchiwaniach mostkowych, których można używać w protokołach niestandardowych i zewnętrznym C2. Ponadto posiada funkcje, które są świetne dla czerwonych zespołów, takie jak możliwość śledzenia artefaktów używanych podczas operacji, a także tworzenia wykresów ataków, które pokazują ścieżkę, jaką pokonał tester podczas operacji.
Covenant ma pewne konwencje nazewnictwa, które różnią się od wielu innych systemów C2. Grunty są klientami C2. Grunt łączy się ze słuchaczem, który jest usługą obsługującą komunikację C2. Za każdym razem, gdy wydajesz polecenie Gruntowi, jest ono traktowane jako Zadanie i jest śledzone na liście Zadań, gdzie możesz zobaczyć, jakie polecenia zostały wysłane i jakie zwrócone wartości. Aby dodać nowego słuchacza, kliknij łącze Słuchacze po lewej stronie i wybierz opcję Utwórz, aby przejść do ekranu Utwórz słuchacza.
Dla pola HttpProfile wybieramy CustomHttpProfile i następnie musimy wypełnić kilka dodatkowych pól. Pierwszym z nich jest Imię; domyślna nazwa nie jest łatwa do zapamiętania, więc nazwijmy ją http1. Pole BindAddress ma same zera, ponieważ chcemy, aby akceptowało dowolny adres IP znajdujący się na komputerze hosta, ale musimy zmienić pole ConnectAddresses. Jest to adres, z którym będą się łączyć klienci i domyślnie będzie miał jeden z adresów IP Dockera, dlatego musimy ustawić go na wewnętrzny adres IP Kali, 10.0.0.40. Następnie klikamy przycisk Utwórz, aby uruchomić Listener. Kiedy spojrzymy na zakładkę Odbiorniki, powinno pojawić się, że Odbiornik http1 jest „Aktywny”, co oznacza, że ten Odbiornik został poprawnie skonfigurowany. Naszym następnym krokiem jest stworzenie sposobu, aby obiekt docelowy mógł uruchomić nasz plik binarny. W tym celu przejdziemy do zakładki Launchery po lewej stronie i wybierzemy opcję Binary. Zostanie wyświetlony ekran programu uruchamiającego pliki binarne, w którym możemy wprowadzić odpowiednie informacje.
Dla pola HttpProfile wybieramy CustomHttpProfile i następnie musimy wypełnić kilka dodatkowych pól. Pierwszym z nich jest Imię; domyślna nazwa nie jest łatwa do zapamiętania, więc nazwijmy ją http1. Pole BindAddress ma same zera, ponieważ chcemy, aby akceptowało dowolny adres IP znajdujący się na komputerze hosta, ale musimy zmienić pole ConnectAddresses. Jest to adres, z którym będą się łączyć klienci i domyślnie będzie miał jeden z adresów IP Dockera, dlatego musimy ustawić go na wewnętrzny adres IP Kali, 10.0.0.40. Następnie klikamy przycisk Utwórz, aby uruchomić Listener. Kiedy spojrzymy na zakładkę Odbiorniki, powinno pojawić się, że Odbiornik http1 jest „Aktywny”, co oznacza, że ten Odbiornik został poprawnie skonfigurowany. Naszym następnym krokiem jest stworzenie sposobu, aby obiekt docelowy mógł uruchomić nasz plik binarny. W tym celu przejdziemy do zakładki Launchery po lewej stronie i wybierzemy opcję Binary. Zostanie wyświetlony ekran programu uruchamiającego pliki binarne, w którym możemy wprowadzić odpowiednie informacje.
W polu Listener wybieramy http1 i pozostawiamy wszystko bez zmian, z wyjątkiem DotNetVersion, który ustawiamy na Net40. Wersja DotNet jest ważna, ponieważ starsze systemy mogą nie mieć DotNet 4.0, a nowsze systemy mogą nie mieć DotNet 3.5. Pomocne może być tutaj wykonanie krótkiego rozpoznania celu przed wybraniem typu ładunku. Ponieważ wiemy, że naszym docelowym boxem jest Windows Server 2016, możemy śmiało wybrać opcję Net40. Po kliknięciu przycisku Generuj ładunek zostanie wygenerowany w aplikacji, mimo że nie będzie informacji zwrotnej, ale teraz musimy dotrzeć do celu. Następnie widzimy ekran Binary Launcher. W polu Host możemy określić lokalizację, w której będzie hostowany nasz plik binarny. Aby to ułatwić, po prostu określimy lokalizację jako /grunt1.exe, a następnie klikniemy Host
Nie otrzymasz żadnej opinii, ale plik jest teraz hostowany. Możesz przejść do karty Słuchacze, kliknąć swój odbiornik, a następnie kliknąć opcję Hostowane pliki, aby sprawdzić, czy plik jest hostowany, jeśli masz problemy. Aby wykonać Grunt w naszym polu docelowym, przejdź do wiersza polecenia PowerShell, pobierz i wykonaj Grunt:
Gdy to zrobisz, w prawym górnym rogu przeglądarki może na krótko pojawić się alert informujący, że masz nowego Grunta. Aby wyświetlić Grunta, przejdź do zakładki Grunt i kliknij nazwę nowego Grunta. Zakładka Informacje, pokazana obok, zawiera podstawowe informacje o zaatakowanym systemie. Wiemy, że jest to HTTP Grunt działający jako użytkownik GHH\target na WS20 z adresem IP 10.0.0.20. Mamy wersję systemu operacyjnego, datę nawiązania połączenia i godzinę ostatniego zameldowania. Daje nam to podstawowe informacje na temat zdrowia i kontekstu Grunta, ale rzadko jest to to, co chcemy zrobić. Aby wykonać nasze czynności poeksploatacyjne należy przejść do zakładki Zadanie.
Zakładka Zadanie pokazuje różne wbudowane moduły Covenant, które możemy uruchomić. Wybranie zadania spowoduje wyświetlenie opcji dla tego zadania. Aby zrozumieć podstawy, uruchomimy moduł WhoAmI, który pobiera bieżący kontekst użytkownika. Widzieliśmy to już na ekranie Grunt Info, ale za pomocą tego modułu możemy łatwo zweryfikować te informacje.
Gdy uruchomimy zadanie, wyświetli się okno Interakcja. Widzimy polecenie zostało wysłane, ale odpowiedź musi minąć kilka chwil. Dzieje się tak dlatego, że nasz Grunt nie jest Gruntem działającym w czasie rzeczywistym i zamiast tego ma interwał sygnalizacyjny. W przypadku tego interwału udzielenie odpowiedzi może zająć do 10 sekund (5 sekund, aby Grunt zarejestrował się i otrzymał żądanie, a następnie kolejne 5 sekund, zanim zwróci odpowiedź). Dzieje się tak dlatego, że opóźnienie Launchera zostało ustawione na 5 sekund.
Kiedy skończysz z Covenantem, wydaj następującą komendę w Kali, aby zamknąć serwer: