NFsec Logo

Nieszczelne naczynka w Dockerze

07/02/2024 w Bezpieczeństwo Możliwość komentowania Nieszczelne naczynka w Dockerze została wyłączona

P

rzesiąkanie płynu z małych naczyń krwionośnych do otaczających tkanek wymaga natychmiastowego leczenia, aby zapobiec spadkowi ciśnienia krwi i innym poważnym powikłaniom. Identycznie jest w przypadku zespołu podatności o nazwie Leaky Vessels, które wykryto w środowisku wykonawczym kontenerów, w szczególności runC (CVE-2024-21626) oraz w BuildKit (CVE-2024-23651, CVE-2024-23652 i CVE-2024-23653) używanym przez takie projekty jak: Docker, Kubernetes i inne platformy konteneryzacji. Luki te umożliwiają ucieczkę z kontenera, a osobie atakującej, która posiada dostęp do takiego kontenera, wykonanie dowolnego kodu na maszynie hosta, narażając w ten sposób cały system.
[ czytaj całość… ]

Tworzenie i usuwanie plików zaczynających się od myślników

25/01/2024 w CmdLineFu Możliwość komentowania Tworzenie i usuwanie plików zaczynających się od myślników została wyłączona

Pierwszym sposobem na tworzenie lub usuwanie pliku zaczynającego się od pojedynczego lub podwójnego myślnika jest dodanie ścieżki przed nazwą pliku:

touch ./--hard-to-create
rm ./--hard-to-remove

Drugim sposobem na tworzenie lub usuwanie pliku zaczynającego się od pojedynczego lub podwójnego myślnika jest zasygnalizowanie (--) wydawanemu poleceniu, że następuje koniec procesowania wewnętrznych opcji i wyłączenie interpretacji opcji zaczynających się od myślnika:

touch -- --hard-to-create
rm -- --hard-to-remove

Więcej informacji: How to create, open, find, remove dashed -file_name in Linux, What Does a Double-Dash in Shell Commands Mean?

Wykrywanie skażonych modułów jądra

15/01/2024 w Administracja, Bezpieczeństwo Możliwość komentowania Wykrywanie skażonych modułów jądra została wyłączona

I

nformację o modułach załadowanych w systemie Linux znajdziemy w kopalni wiedzy o systemie, czyli wirtualnym systemie plików procfs. W celu wyświetlenia aktualnie zarejestrowanych (nie ukrywających się) modułów wystarczy wykonać polecenie: cat /proc/modules. Naszym oczom powinny ukazać się linie zawierające od sześciu do siedmiu kolumn:

x_tables 45056 3 xt_owner,xt_tcpudp,ip6_tables, Live 0xffffffffc044b000

  • x_tables – pierwsza kolumna wyświetla tytuł / nazwę modułu,
  • 45056 – druga kolumna to wielkość modułu (podana w bajtach) – nie mylić z używaną pamięcią,
  • 3 – trzecia kolumna podaje liczbę załadowanych instancji danego modułu – moduł z zerową wartością jest uważany za niezaładowany, a gdy liczba referencyjna modułu jest dodania (różna od zera), zwolnienie go za pomocą rmmod staje się niemożliwe, ponieważ polecenie wyświetli komunikat błędu: rmmod: ERROR: Module x_tables is in use by: xt_tcpudp xt_owner ip6_tables,
  • xt_owner,xt_tcpudp,ip6_tables – w czwartej kolumnie znajdują się moduły odwołujące się / zależne, które wymagają tego modułu do swojego funkcjonowania – w przypadku braku odniesień wyświetlany jest znak „-„,
  • Live – stan załadowania modułu wyrażony jest w piątej kolumnie, które może przyjmować tylko jedną z wartości: Live (żywy / aktywny), Loading (w trakcie ładowania), Unloading (w trakcie pozbywania się),
  • 0xffffffffc044b000 – szósta kolumna wyświetla aktualne przesunięcie pamięci jądra wykorzystywane przez załadowany moduł, co może być przydatne przy procesie debugowania lub profilowania.

W niektórych przypadkach możemy również trafić na wpisy, które będą posiadały siódmą kolumnę – tzw. skażone stany (ang. tainted states) . Kiedyś reprezentowane przez nią symbole znajdowały się w pliku panic.c (aktualnie zostały przeniesione do sekcji dokumentacji kernel.rst):

======  =====  ==============================================================
     1  `(P)`  proprietary module was loaded
     2  `(F)`  module was force loaded
     4  `(S)`  kernel running on an out of specification system
     8  `(R)`  module was force unloaded
    16  `(M)`  processor reported a Machine Check Exception (MCE)
    32  `(B)`  bad page referenced or some unexpected page flags
    64  `(U)`  taint requested by userspace application
   128  `(D)`  kernel died recently, i.e. there was an OOPS or BUG
   256  `(A)`  an ACPI table was overridden by user
   512  `(W)`  kernel issued warning
  1024  `(C)`  staging driver was loaded
  2048  `(I)`  workaround for bug in platform firmware applied
  4096  `(O)`  externally-built ("out-of-tree") module was loaded
  8192  `(E)`  unsigned module was loaded
 16384  `(L)`  soft lockup occurred
 32768  `(K)`  kernel has been live patched
 65536  `(X)`  Auxiliary taint, defined and used by for distros
131072  `(T)`  The kernel was built with the struct randomization plugin
======  =====  ==============================================================

Dlatego, jeśli trafimy na wpis podobny do:

suspicious_module 110592 2 - Live 0xffffffffc0724000 (OE)

Możemy go odczytać, jako załadowanie modułu zewnętrznego (O) – spoza aktualnego drzewa modułów uruchomionego jądra systemu, który w dodatku nie jest podpisany (E). Wszystkie takie „skażone” moduły możemy wyświetlić poprzez polecenie:

grep \(.*\) /proc/modules

Podobnie możemy szukać wyrażenia taint w poleceniu dmesg lub journalctl --dmesg.

Więcej informacji: Tainted kernels, What is OE+ in Linux?, Craig Rowland on Twitter

Sprytny sposób na dostęp do informacji o sprzęcie w systemie Linux

09/01/2024 w Debug Możliwość komentowania Sprytny sposób na dostęp do informacji o sprzęcie w systemie Linux została wyłączona

J

ako zwykły użytkownik czasami mamy ograniczony dostęp do różnych informacji o sprzęcie maszyny fizycznej lub oprogramowaniu stojącego za maszyną wirtualną. Na przykład korzystanie z polecenia dmidecode to sprawdzony sposób na odczytywanie różnych informacji o pamięci RAM w systemach Linux, takich jak numer modelu, prędkość i inne atrybuty. Ale niestety używanie dmidecode jest ograniczone do praw administracyjnych ze względu na konieczność dostępu do /dev/mem. Okazuje się jednak, że istnieje inny, mniej znany sposób na uzyskanie tych samych informacji o wielu komponentach pamięci i nie tylko. Mianowicie podczas procesu uruchamiania w najnowszych dystrybucjach Linuksa udev wyodrębnia informacje DMI i przechowuje je w swojej „bazie danych”. Dlatego uruchomienie polecenia:

udevadm info -e | grep -e MEMORY_DEVICE -e MEMORY_ARRAY

jako zwykły użytkownik doje dostęp do informacji o pamięci DIMM Np.

E: MEMORY_DEVICE_1_FORM_FACTOR=DIMM
E: MEMORY_DEVICE_1_TYPE=DDR4
E: MEMORY_DEVICE_1_SPEED_MTS=2400
E: MEMORY_DEVICE_1_CONFIGURED_SPEED_MTS=2133
E: MEMORY_DEVICE_1_MANUFACTURER=00AD00B300AD
E: MEMORY_DEVICE_1_PART_NUMBER=HMA82GR7AFR8N-UH
E: MEMORY_DEVICE_1_SIZE=17179869184

Widzimy dostęp do informacji: typu, dostawcy, modelu, rozmiaru, szybkości MT/s i innych wskaźników pamięci. W ten sposób uzyskujemy dostęp do informacji w tych obszarach, gdy nie możemy uruchamiać poleceń jako administrator. Polecenie: udevadm info -e daje nam również dostęp do innych informacji DMI, które w przeciwnym razie byłyby zwykle ograniczone do konta root.

Więcej informacji: A Nifty Way To Access Linux Memory/RAM Information

TLSH – Trend Micro Locality Sensitive Hash dla malware i phishingu

08/01/2024 w Bezpieczeństwo Możliwość komentowania TLSH – Trend Micro Locality Sensitive Hash dla malware i phishingu została wyłączona

S

króty kryptograficzne, takie jak MD5 i SHA[1/2] są wykorzystywane w wielu zastosowaniach związanych z eksploracją danych i bezpieczeństwem – służąc jako identyfikatory plików wykonywalnych i dokumentów tekstowych. Jednak ich rolą jest oznaczanie unikalności, nie podobieństw – jeśli zostanie zmieniony pojedynczy bajt pliku, wówczas skróty kryptograficzne dają zupełnie inne wartości. Ich działanie jest bardzo przydatne przy wyodrębnianiu, znakowaniu i dzieleniu się wskaźnikami skompromitowania (ang. IoCsindicators of compromise) dla konkretnych próbek szkodliwego oprogramowania (ang. malware). Jednak w celu identyfikacji zagrożeń pochodzących z tych samych „rodzin” i aktorów (o podobnej binarnej strukturze plików, identyfikacja wariantów wiadomości spamowych / phishingowych) pojawiła się przestrzeń dla skrótów kryptograficznych, które identyfikują podobieństwo plików na podstawie ich wartości skrótu. Społeczność zajmująca się bezpieczeństwem zaproponowała dla tego problemu skróty podobieństwa (ang. similarity digests) takie jak np. sdhash oraz ssdeep.
[ czytaj całość… ]

AADInternals – identyfikacja domen za pomocą usługi Azure AD

03/01/2024 w Pen Test Możliwość komentowania AADInternals – identyfikacja domen za pomocą usługi Azure AD została wyłączona

R

ozwój gotowych usług umożliwia wielu firmom przeniesienie całości lub części swojej infrastruktury, która była wcześniej ukryta w dedykowanym centrum danych do środowisk chmurowych. Oznacza to, że część informacji o usługach danej firmy można obecnie odkryć poprzez rekonesans w sposób, który w przeszłości nie zawsze był taki łatwy lub możliwy np. poprzez używanie widoków dla wewnętrznych i zewnętrznych stref DNS w celu ukrycia wewnętrznych domen firmowych. Istnieje wiele technik, które mogą przedstawić nam jakie domeny należą do konkretnej firmy np. rWHOIS, DNS, TLS itd., jednak wraz z pojawieniem się środowisk chmurowych dane te można pozyskać w dodatkowy sposób. Na dzień dzisiejszy firma Microsoft nadal dominuje w świecie IT dla przedsiębiorstw, a korzeniem każdej, większej firmy jest „drzewo” Active Directory, które służy do zarządzania grupami, użytkownikami, politykami i domenami w środowisku IT. Teraz, gdy coraz więcej wewnętrznych usług Active Directory zaczęło być przenoszonych na platformę chmurową Azure firmy Microsoft, badacze bezpieczeństwa mogą wykorzystywać te usługi do odkrywania domen przypisanych do konkretnej organizacji z bardzo wysokim poziomem pewności, co do informacji zwrotnej i bez polegania na (czasami) niespójnych danych z serwisów zewnętrznych. Nestori Syynimaa w tym celu stworzył moduł AADInternals PowerShell do przeprowadzania prac administracyjnych na usłudze Azure AD oraz Office 365. Jeśli nie potrafimy posługiwać się interpreterem poleceń PowerShell nie musimy się martwić, ponieważ twórca AADInternals udostępnił również internetowe narzędzie „OSINT„, aby rekonesans domen był znacznie łatwiejszy i bardziej dostępny dla większego grona użytkowników. Umożliwia ono uzyskanie ogólnodostępnych informacji na temat określonego najemcy (ang. tenant) usługi za pomocą interfejsów API Azure. Szczegóły są zwracane tylko dla pierwszych 20 domen. Jeśli trafimy na więcej pozycji niestety musimy użyć modułu PowerShell, aby uzyskać pełne informacje. Dla przykładu działania możemy odpytać się o takie domeny jak: ebay.com, bbc.co.uk lub olx.com.

Więcej informacji: Just looking: Azure Active Directory reconnaissance as an outsider

SMTP Smuggling Attack

28/12/2023 w Ataki Internetowe Możliwość komentowania SMTP Smuggling Attack została wyłączona

B

adacze z SEC Consult, a dokładniej Timo Longin – znany ze swoich ataków na protokół DNS opisał informację o nowej technice ataku o nazwie SMTP Smuggling, która może umożliwiać wysyłanie fałszywych wiadomości e-mail z pominięciem mechanizmów uwierzytelniania. Technika ta wykorzystuje protokół SMTP (ang, Simple Mail Transfer Protocol), w którym atakujący może wykorzystać różnice w sposobie, w jaki wychodzące i przychodzące serwery SMTP interpretują sekwencję wskazującą koniec danych w wiadomości e-mail. Co ciekawe bardzo podobną technikę o nazwie MX Injection opisał Vicente Aquilera Diaz w 2006 roku. Mimo, że jest to znany, długotrwały i dobrze udokumentowany problem, kilka powszechnie używanych serwisów i serwerów świadczących usługi e-mail okazało się podatnych na przeprowadzenie tego ataku.
[ czytaj całość… ]

Złe ELFy kradną dane z fabryki zabawek św. Mikołaja

17/12/2023 w Bezpieczeństwo, Debug, Pen Test Możliwość komentowania Złe ELFy kradną dane z fabryki zabawek św. Mikołaja została wyłączona

O

nie! Z powodu dużej ilości pracy przed świętami ktoś zapomniał na serwerze WWW zaktualizować wtyczkę do wykonywania kopii zapasowej w używanym przez św. Mikołaja CMS WordPress. Dzięki temu złośliwe ELFy przedostały się do wewnętrznej sieci i w ramach Lateral Movement „przeskoczyły” do maszyny w fabryce św. Mikołaja odpowiedzialnej za kompilację kodu programów używanych w zabawkach. Jest na niej pełno sekretnych rozwiązań, schematów i innych wrażliwych danych, które można ukraść. Niestety oprócz kompilatorów (gcc) i debuggerów (gdb) maszyna nie posiada żadnych narzędzi (wget, curl itd.), które można wykorzystać do eksfiltracji danych lub ściągnięcia ładunków ze złego C2. Złe ELFy mają dostęp tylko do zwykłego konta dobrego ELFa o imieniu reversek, a dzięki prostemu skanerowi portów w czystej powłoce bash zorientowały już się, że maszyna ma dostęp do internetu tylko na portach HTTP (80) i HTTPS (443). Czy uda im się wykraść zaawansowane patenty i zamienić je w tańsze podróbki ?
[ czytaj całość… ]

AGGR3SS0R Toolbox

30/11/2023 w Techblog Możliwość komentowania AGGR3SS0R Toolbox została wyłączona

Aktualizacja w każdy: Poniedziałek

DNS info:
SSL info:
URL info:
Domain info:
IP info:
Host info:
Proxy info:
Phishing info:
Malware info:
Malware samples:
Threat Intelligence:
OSINT:
Support Tools:
User leak:

Ostatnia aktualizacja: 02.04.2025 20:05

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