NFsec Logo

Podpisywanie commitów git za pomocą klucza SSH

28/11/2022 (2 tygodnie temu) w Administracja, Bezpieczeństwo Możliwość komentowania Podpisywanie commitów git za pomocą klucza SSH została wyłączona

W

raz z wersją git 2.34.0 każdy nasz commit do kodu lub jego tag będzie mógł zostać podpisany kluczem SSH. Możliwość podpisywania dowolnych danych za pomocą SSH została dodana już w 2019 roku z wydaniem OpenSSH 8.0. Jednak, aby używać tej funkcjonalności bez żadnego problemu najlepiej używać OpenSSH w wersji 8.8. Nasz proces zaczynamy od instalacji i konfiguracji klienta git i SSH:

sudo apt install -y git

Kolejnym krokiem jest wygenerowanie klucza SSH, który będzie używany do podpisywania:

ssh-keygen -t ed25519 -C "agresor@nfsek.pl" -f ~/.ssh/code_commit_signing

Odpowiadamy na pytania i upewniamy się, że wpisaliśmy silne i unikalne hasło do klucza. Klucz ten będzie domyślnie przechowywany w naszym katalogu domowym pod katalogiem .ssh:

agresor@darkstar:~$ cat .ssh/code_commit_signing.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMzu8wjcnyAorVVtEjddoG2gaYjmRnHiZHvElYFcl/s/ 
agresor@nfsek.pl

[ czytaj całość… ]

Siphon – przechwytywanie strumieni wejścia / wyjścia / błędów dla dowolnego procesu

09/11/2022 (4 tygodnie temu) w Bezpieczeństwo Możliwość komentowania Siphon – przechwytywanie strumieni wejścia / wyjścia / błędów dla dowolnego procesu została wyłączona

L

iam Galvin napisał w języku Go ciekawe narzędzie o nazwie siphon, które za pomocą ptrace potrafi przechwycić strumień wejścia (stdin) wyjścia (stdout) i błędów (stderr) dla dowolnego procesu podając tylko jego PID:

root@darkstar:~# wget 'https://github.com/liamg/siphon/releases/download/v0.0.2/siphon'
root@darkstar:~# chmod +x siphon-linux-amd64
root@darkstar:~# ps xuaw| egrep ^agresor.*bash
agresor     2297  0.0  0.1   8728  5536 pts/2    Ss+  19:38   0:00 -bash
root@darkstar:~# ./siphon-linux-amd64 2297
agresor@darkstar:~$ echo elemelek
elemelek
agresor@darkstar:~$ export
declare -x DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
declare -x HOME="/home/agresor"
declare -x LANG="en_US.UTF-8"
declare -x LC_ALL="en_US.UTF-8"
declare -x LC_CTYPE="UTF-8"
declare -x LC_TERMINAL="iTerm2"
declare -x LC_TERMINAL_VERSION="3.4.16"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="agresor"

Podobnie możemy zrobić z strace. W celu powstrzymania przechwytywania za pomocą ptrace – wystarczy wyłączyć tą możliwość:

root@darkstar:~# sysctl -w kernel.yama.ptrace_scope=3
kernel.yama.ptrace_scope = 3
root@darkstar:~# ./siphon-linux-amd64 2297
Error: could not attach to process with pid 2297: 
operation not permitted - check your permissions

Więcej informacji: Siphon

Używanie utmpdump do wykrywania manipulacji plikami logowań

30/10/2022 w Bezpieczeństwo Możliwość komentowania Używanie utmpdump do wykrywania manipulacji plikami logowań została wyłączona

Z

narzędziem utmpdump spotkaliśmy się pierwszy razy przy okazji ściągawki z informatyki śledczej w wykrywaniu włamań za pomocą linii poleceń Linuksa. W tym wpisie rozwinę trochę użycie tego narzędzia i pokażę jak można go użyć od strony defensywnej, jak i ofensywnej. Pozornie nieznane przez wielu polecenie utmpdump jest doskonałym narzędziem do wykrywania manipulacji na plikach logowań. Jeśli chodzi o system Linux to często możemy polegać na następujących trzech artefaktach w celu określenia czynności logowania i wylogowywania użytkowników:

  • /var/run/utmp – plik utmp pozwala odkryć informacje o tym, kto aktualnie korzysta z systemu.
  • /var/log/wtmp – plik wtmp rejestruje wszystkie logowania i wylogowania. Jego format jest dokładnie taki jak utmp, z tą różnicą, że pusta nazwa użytkownika wskazuje na wylogowanie z powiązanego terminala. Co więcej, nazwa terminala „~” z nazwą użytkownika „shutdown” lub „reboot” wskazuje na zamknięcie lub ponowne uruchomienie systemu.
  • /var/log/btmp – plik btmp zawiera wszystkie złe próby logowania do systemu.

Ponieważ pliki utmp, wtmp i btmp zawierają dane logowania wszystkich użytkowników, są one głównym celem modyfikacji lub usuwania wpisów przez intruzów i złośliwe oprogramowanie. Wiele rodzajów malware dla systemu Linux po prostu usunie te pliki i zastąpi je plikami o zerowej długości bajtów. Bardziej wyrafinowani napastnicy podejmują próbę wyczyszczenia poszczególnych wpisów jednak jest to trudniejszy sposób na zacieranie śladów i łatwo go zauważyć.
[ czytaj całość… ]

Jak pollinate wycieka dane o serwerach do Canonical

25/09/2022 w Bezpieczeństwo Możliwość komentowania Jak pollinate wycieka dane o serwerach do Canonical została wyłączona

K

olejnym pakietem (obok base-files), który wysyła informacje o naszym serwerze do firmy Ubuntu jest pollinate. Jest to klient, który łączy się z conajmniej jednym serwerem Pollen (entropia-jako-usułga) za pośrednictwem zaszyfrowanego (HTTPS) lub nie (HTTP) protokołu i pobiera losowe ziarno. Jest to szczególnie przydatne przy pierwszym uruchomieniu obrazów w chmurze i na maszynach wirtualnych, aby zainicjować systemowy generator liczb losowych. Może być również używany na fizycznych maszynach, aby uzupełniać nastawienie pseudogeneratora liczb losowych. Sprawdźmy, co jest wysyłane do serwerów entropy.ubuntu.com, które są wpisane w standardowej konfiguracji tego programu:

sudo su - pollinate -s /bin/bash
pollinate --print-user-agent

[ czytaj całość… ]

Minimalizacja QNAME

22/09/2022 w Administracja, Bezpieczeństwo Możliwość komentowania Minimalizacja QNAME została wyłączona

M

inimalizacja QNAME (RFC 7816), czyli Query Name zmienia zapytania DNS pochodzące z resolwera rekurencyjnego, aby w każdym zapytaniu zawierał tylko tyle szczegółów, ile jest to wymagane dla tego kroku w procesie rozwiązywania danej domeny. Internet Engineering Task Force opisuje to jako technikę, „w której resolwer DNS nie wysyła już pełnej oryginalnej nazwy QNAME do nadrzędnego serwera nazw”. Powiedzmy, że chcemy odwiedzić stronę: stardust.nfsec.pl. W celu określenia adresu IP, z którym chce się połączyć przeglądarka, system wysyła zapytania do resolwera dostawcy usług internetowych (ISP) lub innego ustawionego przez konfigurację systemu. Prosi on o pełną nazwę – stardust.nfsec.pl – w tym przypadku. ISP (lub inny serwer DNS przydzielony przez zarządce sieci, z której korzystasz) zapyta root DNS, a następnie domenę najwyższego poziomu (.pl), a następnie domenę drugorzędną (nfsec.pl) o pełną nazwę domeny. W rzeczywistości wszystko, czego się dowiadujesz od głównego serwera DNS to odpowiedź na pytanie „kto odpowiada za .pl?”, a jedyne, o co pytasz serwer .pl, to „kto odpowiada za .nfsec.pl?”. Żadne z tych żądań nie musi zawierać informacji o pełnej nazwie strony internetowej, którą chcesz odwiedzić, aby odpowiedzieć na wcześniejsze pytania, ale niestety oba te serwery taką informacje otrzymują. Tak zawsze działał DNS, ale obecnie nie ma ku temu praktycznego powodu.
[ czytaj całość… ]

pamspy – zrzucacz poświadczeń dla Linuksa

14/07/2022 w Bezpieczeństwo, Pen Test Możliwość komentowania pamspy – zrzucacz poświadczeń dla Linuksa została wyłączona

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

Jak GootLoader zamienia WordPress w zombie SEO

07/07/2022 w Ataki Internetowe, Bezpieczeństwo Możliwość komentowania Jak GootLoader zamienia WordPress w zombie SEO została wyłączona

G

ootloader, czyli usługa wstępnego dostępu do (firmowych) sieci dla cyberprzestępców ostatnio rozszerzyła swój zakres działalności o różne cele na całym świecie. Przypomnijmy: w 2014 roku po raz pierwszy został zauważony trojan bankowy o nazwie Gootkit. Od tego czasu ewoluował, aby stać się bardziej złodziejem poufnych informacji obsługiwanym przez grupę aktorów. Nazwa 'Gootkit’ jest często używana zamiennie – zarówno w odniesieniu do złośliwego oprogramowania, jak i do samej grupy. W marcu 2021 roku firma Sophos jako pierwsza zidentyfikowała szersze możliwości tego oprogramowania i nazwała go GootLoader. Ten oparty o Javascript framework pierwotnie przeznaczony do infekcji Gootkitem w coraz większym stopniu zaczął dostarczać szerszą gamę złośliwego oprogramowania (w tym ransomware). Wczesna aktywność kampanii platformy Gootloader została po raz pierwszy zauważona przez analityka zagrożeń z firmy Proofpoint pod koniec 2020 roku, a następnie zbadana i opisana przez ASEC, Malwarebytes i TrendMicro.
[ czytaj całość… ]

YARAify – centralny hub do skanowania i tropienia szkodliwych plików przy użyciu reguł YARA

30/06/2022 w Bezpieczeństwo Możliwość komentowania YARAify – centralny hub do skanowania i tropienia szkodliwych plików przy użyciu reguł YARA została wyłączona

G

rupa badaczy bezpieczeństwa z Abuse (projekt Instytutu Bezpieczeństwa i Inżynierii Cybernetycznej na Uniwersytecie Nauk Stosowanych w Bernie w Szwajcarii) oraz ThreatFox uruchomiła nowy hub do skanowania i polowania na złośliwe pliki. To defensywne narzędzie – nazwane YARAify zostało zaprojektowane do skanowania podejrzanych plików w oparciu o duże repozytorium reguł YARA. Według założyciela Romana Hüssy’ego, reguły YARA są potężne, ale trudne w utrzymaniu. Na przykład: reguły są rozproszone po różnych platformach, firmach i repozytoriach git prywatnych badaczy, i nie ma prostego sposobu na ich współdzielenie. Dlatego platforma umożliwia:

  • Integrację wszystkich publicznych i niepublicznych reguł YARA z Malpedii,
  • Łatwy sposób na rozpakowanie plików wykonywalnych PE (Portable Executable) za pomocą jednego kliknięcia,
  • Skanowanie wszystkich plików używając otwartych i komercyjnych sygnatur ClamAV,
  • Łatwy i uporządkowany sposób dzielenia się regułami YARA ze społecznością,
  • Konfigurowanie klasyfikacji TLP (ang. Traffic Light Protocol), aby umożliwić korzystanie z reguł YARA w celu wyszukiwania zagrożeń bez oglądania zawartości samych reguł,
  • Otrzymywać powiadomienia pocztą elektroniczną lub pushover w przypadku pasujących reguł YARA, sygnatur ClamAV, imphaszy i wielu innych,
  • Użycie API, które pozwala na wykorzystanie możliwości YARAify w sposób zautomatyzowany.

Więcej informacji: YARAify

Panchan – botnet p2p oraz robak SSH

18/06/2022 w Bezpieczeństwo Możliwość komentowania Panchan – botnet p2p oraz robak SSH została wyłączona

P

anchan to nowy malware odkryty przez zespół Akamai, który od marca 2022 uruchomił swoją aktywność. Został napisany w języku Go, aby wykorzystać wbudowane funkcje współbieżności (goroutines) do przyśpieszenia szybkości rozprzestrzeniania się i uruchamiania złośliwych modułów. Dostaje się on do systemów Linux poprzez atak typu brute force na usługę SSH. Lista użytkowników (np. „ubuntu”, „root”, „user”, „debian”, „pi”) i haseł jest wcześniej ustalona. Oprócz „podstawowego” ataku słownikowego na SSH (który jest powszechny w większości znanych robaków) – ta odmiana przechwytuje również klucze SSH w celu rozprzestrzeniania się po innych systemach w sieciach wewnętrznych i zewnętrznych (ang. lateral movement). Szuka on konfiguracji i kluczy SSH w katalogu domowym użytkownika ($HOME). Odczytuje klucz prywatny ze ścieżki $HOME/.ssh/id_rsa i używa go do próby uwierzytelniania na dowolnym adresie IP znalezionym w pliku $HOME/.ssh/known_hosts. Jest to dość nowatorska metoda zbierania danych uwierzytelniających, która nie występowała wcześniej w złośliwych programach łamiących hasła SSH.
[ czytaj całość… ]

Symbiote – kolejne szkodliwe oprogramowanie wykorzystujące BPF

14/06/2022 w Bezpieczeństwo Możliwość komentowania Symbiote – kolejne szkodliwe oprogramowanie wykorzystujące BPF została wyłączona

W

biologii symbiont to organizm żyjący w symbiozie z innym organizmem (np. bakterie w jelicie grubym u człowieka, bakterie; które trawią celulozę u przeżuwaczy). Symbioza może być obustronnie korzystna dla obu organizmów, ale czasami może być pasożytnicza, gdy jeden organizm zyskuje, a drugi jest uszkadzany. Kilka miesięcy temu zespoły bezpieczeństwa z firmy Intezer oraz BlackBerry odkryły nowe, dobrze maskujące się złośliwe oprogramowanie dla systemu Linux, które działa właśnie w taki pasożytniczy sposób. Tym, co odróżnia Symbiote od innych złośliwych programów dla systemu Linux, z którymi zazwyczaj można się spotkać, jest fakt, że musi zainfekować inne uruchomione procesy, aby wyrządzić szkody zainfekowanym maszynom. Nie jest to samodzielny plik wykonywalny uruchamiany w celu zainfekowania systemu, ale biblioteka obiektów współdzielonych (.so), która jest ładowana do wszystkich uruchomionych procesów przy użyciu LD_PRELOAD (T1574.006) i pasożytniczo infekuje maszynę. Po zainfekowaniu wszystkich uruchomionych procesów zapewnia aktorowi funkcjonalność rootkita, możliwość zbierania poświadczeń oraz zdalny dostęp.
[ czytaj całość… ]