Mythic
Reading time: 7 minutes
Czym jest Mythic?
Mythic to otwartoźródłowy, modułowy framework dowodzenia i kontroli (C2) zaprojektowany do red teaming. Umożliwia specjalistom ds. bezpieczeństwa zarządzanie i wdrażanie różnych agentów (ładunków) na różnych systemach operacyjnych, w tym Windows, Linux i macOS. Mythic oferuje przyjazny interfejs webowy do zarządzania agentami, wykonywania poleceń i zbierania wyników, co czyni go potężnym narzędziem do symulowania rzeczywistych ataków w kontrolowanym środowisku.
Instalacja
Aby zainstalować Mythic, postępuj zgodnie z instrukcjami na oficjalnym Mythic repo.
Agenci
Mythic obsługuje wiele agentów, które są ładunkami wykonującymi zadania na skompromitowanych systemach. Każdy agent może być dostosowany do specyficznych potrzeb i może działać na różnych systemach operacyjnych.
Domyślnie Mythic nie ma zainstalowanych żadnych agentów. Oferuje jednak kilka otwartoźródłowych agentów w https://github.com/MythicAgents.
Aby zainstalować agenta z tego repo, wystarczy uruchomić:
sudo ./mythic-cli install github https://github.com/MythicAgents/<agent-name>
sudo ./mythic-cli install github https://github.com/MythicAgents/apfell
Możesz dodać nowe agenty za pomocą poprzedniego polecenia, nawet jeśli Mythic już działa.
Profile C2
Profile C2 w Mythic definiują jak agenty komunikują się z serwerem Mythic. Określają protokół komunikacji, metody szyfrowania i inne ustawienia. Możesz tworzyć i zarządzać profilami C2 za pomocą interfejsu webowego Mythic.
Domyślnie Mythic jest zainstalowany bez profili, jednak możliwe jest pobranie niektórych profili z repozytorium https://github.com/MythicC2Profiles uruchamiając:
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/<c2-profile>>
sudo ./mythic-cli install github https://github.com/MythicC2Profiles/http
Apollo Agent
Apollo to agent Windows napisany w C# z użyciem .NET Framework 4.0, zaprojektowany do wykorzystania w szkoleniach SpecterOps.
Zainstaluj go za pomocą:
./mythic-cli install github https://github.com/MythicAgents/Apollo.git
Ten agent ma wiele poleceń, które czynią go bardzo podobnym do Beacona Cobalt Strike z dodatkowymi funkcjami. Wśród nich obsługuje:
Common actions
cat
: Wyświetl zawartość plikucd
: Zmień bieżący katalog roboczycp
: Skopiuj plik z jednego miejsca do drugiegols
: Wyświetl pliki i katalogi w bieżącym katalogu lub określonej ścieżcepwd
: Wyświetl bieżący katalog roboczyps
: Wyświetl uruchomione procesy na systemie docelowym (z dodatkowymi informacjami)download
: Pobierz plik z systemu docelowego na lokalną maszynęupload
: Prześlij plik z lokalnej maszyny do systemu docelowegoreg_query
: Zapytaj o klucze i wartości rejestru w systemie docelowymreg_write_value
: Zapisz nową wartość do określonego klucza rejestrusleep
: Zmień interwał snu agenta, który określa, jak często sprawdza połączenie z serwerem Mythic- I wiele innych, użyj
help
, aby zobaczyć pełną listę dostępnych poleceń.
Privilege escalation
getprivs
: Włącz jak najwięcej uprawnień na bieżącym tokenie wątkugetsystem
: Otwórz uchwyt do winlogon i zdubluj token, skutecznie eskalując uprawnienia do poziomu SYSTEMmake_token
: Utwórz nową sesję logowania i zastosuj ją do agenta, umożliwiając podszywanie się pod innego użytkownikasteal_token
: Ukradnij główny token z innego procesu, umożliwiając agentowi podszywanie się pod użytkownika tego procesupth
: Atak Pass-the-Hash, umożliwiający agentowi uwierzytelnienie się jako użytkownik przy użyciu ich hasha NTLM bez potrzeby posiadania hasła w postaci tekstowejmimikatz
: Uruchom polecenia Mimikatz, aby wyodrębnić dane uwierzytelniające, hashe i inne wrażliwe informacje z pamięci lub bazy danych SAMrev2self
: Przywróć token agenta do jego głównego tokena, skutecznie obniżając uprawnienia do pierwotnego poziomuppid
: Zmień proces nadrzędny dla zadań poeksploatacyjnych, określając nowy identyfikator procesu nadrzędnego, co pozwala na lepszą kontrolę nad kontekstem wykonania zadańprintspoofer
: Wykonaj polecenia PrintSpoofer, aby obejść środki bezpieczeństwa spooling drukarki, umożliwiając eskalację uprawnień lub wykonanie kodudcsync
: Synchronizuj klucze Kerberos użytkownika z lokalną maszyną, umożliwiając łamanie haseł offline lub dalsze atakiticket_cache_add
: Dodaj bilet Kerberos do bieżącej sesji logowania lub określonej, umożliwiając ponowne użycie biletu lub podszywanie się
Process execution
assembly_inject
: Umożliwia wstrzyknięcie loadera zestawu .NET do zdalnego procesuexecute_assembly
: Wykonuje zestaw .NET w kontekście agentaexecute_coff
: Wykonuje plik COFF w pamięci, umożliwiając wykonanie skompilowanego kodu w pamięciexecute_pe
: Wykonuje niezarządzalny plik wykonywalny (PE)inline_assembly
: Wykonuje zestaw .NET w jednorazowym AppDomain, umożliwiając tymczasowe wykonanie kodu bez wpływu na główny proces agentarun
: Wykonuje binarny plik na systemie docelowym, używając PATH systemu do znalezienia pliku wykonywalnegoshinject
: Wstrzykuje shellcode do zdalnego procesu, umożliwiając wykonanie dowolnego kodu w pamięciinject
: Wstrzykuje shellcode agenta do zdalnego procesu, umożliwiając wykonanie kodu agenta w pamięcispawn
: Uruchamia nową sesję agenta w określonym pliku wykonywalnym, umożliwiając wykonanie shellcode w nowym procesiespawnto_x64
ispawnto_x86
: Zmień domyślny plik binarny używany w zadaniach poeksploatacyjnych na określoną ścieżkę zamiast używaćrundll32.exe
bez parametrów, co jest bardzo hałaśliwe.
Mithic Forge
To pozwala na ładowanie plików COFF/BOF z Mythic Forge, który jest repozytorium wstępnie skompilowanych ładunków i narzędzi, które mogą być wykonywane na systemie docelowym. Dzięki wszystkim poleceniom, które można załadować, będzie możliwe wykonywanie typowych działań, uruchamiając je w bieżącym procesie agenta jako BOF (zwykle bardziej dyskretnie).
Zacznij je instalować za pomocą:
./mythic-cli install github https://github.com/MythicAgents/forge.git
Następnie użyj forge_collections
, aby pokazać moduły COFF/BOF z Mythic Forge, aby móc je wybrać i załadować do pamięci agenta w celu wykonania. Domyślnie w Apollo dodawane są następujące 2 kolekcje:
forge_collections {"collectionName":"SharpCollection"}
forge_collections {"collectionName":"SliverArmory"}
Po załadowaniu jednego modułu, pojawi się on na liście jako inna komenda, jak forge_bof_sa-whoami
lub forge_bof_sa-netuser
.
Wykonanie Powershell i skryptów
powershell_import
: Importuje nowy skrypt PowerShell (.ps1) do pamięci podręcznej agenta do późniejszego wykonaniapowershell
: Wykonuje polecenie PowerShell w kontekście agenta, umożliwiając zaawansowane skrypty i automatyzacjępowerpick
: Wstrzykuje zestaw ładujący PowerShell do procesu ofiary i wykonuje polecenie PowerShell (bez logowania PowerShell).psinject
: Wykonuje PowerShell w określonym procesie, umożliwiając celowe wykonanie skryptów w kontekście innego procesushell
: Wykonuje polecenie powłoki w kontekście agenta, podobnie jak uruchamianie polecenia w cmd.exe
Ruch Lateralny
jump_psexec
: Używa techniki PsExec do ruchu lateralnego do nowego hosta, najpierw kopiując plik wykonywalny agenta Apollo (apollo.exe) i wykonując go.jump_wmi
: Używa techniki WMI do ruchu lateralnego do nowego hosta, najpierw kopiując plik wykonywalny agenta Apollo (apollo.exe) i wykonując go.wmiexecute
: Wykonuje polecenie na lokalnym lub określonym zdalnym systemie za pomocą WMI, z opcjonalnymi poświadczeniami do impersonacji.net_dclist
: Pobiera listę kontrolerów domeny dla określonej domeny, przydatne do identyfikacji potencjalnych celów do ruchu lateralnego.net_localgroup
: Wyświetla lokalne grupy na określonym komputerze, domyślnie na localhost, jeśli nie określono komputera.net_localgroup_member
: Pobiera członkostwo lokalnej grupy dla określonej grupy na lokalnym lub zdalnym komputerze, umożliwiając enumerację użytkowników w określonych grupach.net_shares
: Wyświetla zdalne udostępnienia i ich dostępność na określonym komputerze, przydatne do identyfikacji potencjalnych celów do ruchu lateralnego.socks
: Włącza proxy zgodne z SOCKS 5 w sieci docelowej, umożliwiając tunelowanie ruchu przez skompromitowany host. Kompatybilne z narzędziami takimi jak proxychains.rpfwd
: Rozpoczyna nasłuchiwanie na określonym porcie na docelowym hoście i przekazuje ruch przez Mythic do zdalnego adresu IP i portu, umożliwiając zdalny dostęp do usług w sieci docelowej.listpipes
: Wyświetla wszystkie nazwane potoki w lokalnym systemie, co może być przydatne do ruchu lateralnego lub eskalacji uprawnień poprzez interakcję z mechanizmami IPC.
Różne polecenia
help
: Wyświetla szczegółowe informacje o konkretnych poleceniach lub ogólne informacje o wszystkich dostępnych poleceniach w agencie.clear
: Oznacza zadania jako 'wyczyszczone', aby nie mogły być przejęte przez agentów. Możesz określićall
, aby wyczyścić wszystkie zadania lubtask Num
, aby wyczyścić konkretne zadanie.
Poseidon Agent
Poseidon to agent Golang, który kompiluje się do Linux i macOS wykonywalnych.
./mythic-cli install github https://github.com/MythicAgents/Poseidon.git
Kiedy użytkownik korzysta z systemu Linux, ma do dyspozycji kilka interesujących poleceń:
Common actions
cat
: Wyświetl zawartość plikucd
: Zmień bieżący katalog roboczychmod
: Zmień uprawnienia plikuconfig
: Wyświetl bieżącą konfigurację i informacje o hościecp
: Skopiuj plik z jednego miejsca do drugiegocurl
: Wykonaj pojedyncze żądanie webowe z opcjonalnymi nagłówkami i metodąupload
: Prześlij plik do celudownload
: Pobierz plik z systemu docelowego na lokalną maszynę- I wiele więcej
Search Sensitive Information
triagedirectory
: Znajdź interesujące pliki w katalogu na hoście, takie jak pliki wrażliwe lub poświadczenia.getenv
: Pobierz wszystkie bieżące zmienne środowiskowe.
Move laterally
ssh
: SSH do hosta przy użyciu wyznaczonych poświadczeń i otwórz PTY bez uruchamiania ssh.sshauth
: SSH do określonego hosta(y) przy użyciu wyznaczonych poświadczeń. Możesz również użyć tego do wykonania konkretnego polecenia na zdalnych hostach za pomocą SSH lub użyć go do SCP plików.link_tcp
: Połącz się z innym agentem przez TCP, umożliwiając bezpośrednią komunikację między agentami.link_webshell
: Połącz się z agentem używając profilu P2P webshell, umożliwiając zdalny dostęp do interfejsu webowego agenta.rpfwd
: Rozpocznij lub zatrzymaj odwrócone przekierowanie portów, umożliwiając zdalny dostęp do usług w sieci docelowej.socks
: Rozpocznij lub zatrzymaj proxy SOCKS5 w sieci docelowej, umożliwiając tunelowanie ruchu przez skompromitowany host. Kompatybilne z narzędziami takimi jak proxychains.portscan
: Skanuj hosty w poszukiwaniu otwartych portów, przydatne do identyfikacji potencjalnych celów do ruchu lateralnego lub dalszych ataków.
Process execution
shell
: Wykonaj pojedyncze polecenie powłoki za pomocą /bin/sh, umożliwiając bezpośrednie wykonanie poleceń na systemie docelowym.run
: Wykonaj polecenie z dysku z argumentami, umożliwiając wykonanie binariów lub skryptów na systemie docelowym.pty
: Otwórz interaktywny PTY, umożliwiając bezpośrednią interakcję z powłoką na systemie docelowym.