https://chacker.pl/
Jednym z bardzo tradycyjnych mechanizmów trwałości w standardowym systemie operacyjnym jest zaplanowane zadanie. W systemie Windows masz harmonogram zadań, a w systemie Linux masz demona cron. Każdy z tych systemów ma zdarzenie wyzwalające; zazwyczaj jest ono oparte na czasie i działaniu. Co by było, gdybyśmy mogli dowiedzieć się, jak wyzwolić zadanie w ekosystemie AWS, które zapewniłoby nam trwałość? Ryan Gerstenkorn z Rhino Security Labs napisał narzędzie oparte na Go, które może pomóc symulować dokładnie taką sytuację. Narzędzie nazywa się UserDataSwap. Może być bardzo przydatne, jeśli masz odpowiednie uprawnienia i wiesz, jak modyfikować źródło. Narzędzie napisane w Go ma statyczne polecenie rozruchu, które doda statycznie skompilowaną wersję Netcata i otworzy nasłuchiwacza tylnych drzwi. Port nasłuchiwacza pozostaje otwarty w systemie hosta. Pomyśl o tym jako o połączeniu bootloadera tylnych drzwi i modułu trwałości w systemie operacyjnym.


Jak zauważysz, najpierw uruchamiamy polecenie wyjściowe terraform (1), aby znaleźć lokalizację kontenera S3 dla naszego narzędzia. Robimy to w samym katalogu terraform. Następnie musimy zmodyfikować plik samconfig.toml (2) w katalogu UserDataSwap znajdującym się w instancji Kali w AWS. Plik wymaga modyfikacji jednego wpisu, którym jest wpis s3_sam_bucket (3):

Gdy plik samconfig.toml zostanie ukończony, możemy wykonać polecenia kompilacji i wdrożenia:


Pierwsze polecenie, make build (4), skompiluje aplikację lokalnie. Następnie uruchomienie polecenia make deploy (5) spowoduje utworzenie funkcji Lambda, która przyjmie most zdarzeń jako wyzwalacz. Będzie ona szukać instancji EC2, które się uruchamiają, a te instancje EC2, które się uruchamiają, wyzwolą most zdarzeń, aby wyzwolić funkcję Lambda. Po wyzwoleniu funkcji Lambda przyjmie ona identyfikator instancji jako cel i zapisze dane użytkownika. Funkcja Lambda poinstruuje serwer EC2, aby się wyłączył, zamienił dane użytkownika i uruchomił instancję. Po zakończeniu tego procesu wykona tę samą operację, aby zamienić z powrotem oryginalne dane użytkownika. Administratorowi będzie się wydawać, że EC2 po prostu działa znacznie wolniej niż zwykle. Ważne jest również, aby zauważyć, że skalowanie automatyczne nie zostało przetestowane i może spowodować, że sytuacja wymknie się spod kontroli. Nie włączaj skalowania automatycznego w tej konfiguracji. Implant, którego używamy, to port nasłuchujący Netcat na każdej instancji EC2 na porcie 1234. Teraz musimy zbudować serwer EC2 do testów! Na szczęście możemy przejść do innego katalogu Terraform, aby zbudować urządzenie ofiary (4):

W tym momencie musimy odczekać około 5 lub 6 minut, aby UserDataSwap wykonał wszystkie operacje, których potrzebuje. Możesz sprawdzić w grupie logów CloudWatch (https://console.aws.amazon.com/cloudwatch/home?region=us-east-1#logsV2:log-groups), która byłaby najnowszą grupą ze słowami „UserDataSwap-UserDataSwapFunction”, aby zobaczyć status wykonania funkcji. Teraz spróbujemy połączyć się z systemem, który otworzyliśmy. Powłoka będąca surową powłoką gniazda może być połączona za pomocą netcat.

Teraz możemy połączyć się z naszą maszyną z tej samej sieci VPC, aby zobaczyć, że port jest rzeczywiście otwarty. Tutaj uruchamiamy polecenie nc (7) na maszynie docelowej; pamiętaj, że nie będzie żadnego monitu z netcat. Możemy uruchomić ls (8) i whoami (9), aby przetestować działanie.
Podsumowanie
Amazon Web Services to bardzo potężny i użyteczny zestaw narzędzi, który daje nam możliwość dostarczania usług, oprogramowania, aplikacji i innych rzeczy na taką samą skalę jak sam Amazon. Powinniśmy jednak patrzeć na Amazon Web Services nie jako na środowisko usług w chmurze, ale jako na system operacyjny. Dzieli wiele właściwości tradycyjnego systemu operacyjnego, eksponowanych w unikalny sposób. Ma model uprawnień podobny do naszych systemów operacyjnych, ma zestaw systemów plików i może uruchamiać, planować i pracować z aplikacjami i procesami. Mając to na uwadze, możemy również atakować i nadużywać Amazon Web Services w bardzo znajomy sposób. Mamy nadzieję, że ten rozdział rozpocznie Cię ścieżką bliższego przyjrzenia się Amazon Web Services.