Blog 24/7

packer

TAB. 1Hasłopo angielsku
Po angielskupacker
Którą formą pisaćpo angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim.
Inne formynarzędzie pakujące plik wykonywalny · kompresor/szyfrator plików wykonywalnych
KategoriaZłośliwe oprogramowanie

Packer to narzędzie, które kompresuje albo szyfruje plik wykonywalny tak, że właściwy kod ujawnia się dopiero w pamięci po uruchomieniu. MITRE opisuje pakowanie jako metodę kompresji lub szyfrowania pliku wykonywalnego, która zmienia jego sygnaturę, żeby uniknąć wykrycia opartego na sygnaturach [1]. Samo narzędzie nie jest złośliwe: legalne packery zmniejszają rozmiar programów [2]. W rękach atakujących służy do ukrycia złośliwego oprogramowania (malware) przed antywirusem i analitykiem.

Jak działa

Spakowany plik składa się z dwóch części: małego kodu rozpakowującego i zaszyfrowanej lub skompresowanej właściwej treści. Po uruchomieniu kod rozpakowujący odtwarza oryginał, zwykle w pamięci, i przekazuje mu sterowanie [1]. Na dysku nie ma więc rozpoznawalnego kodu, tylko dane o wysokiej entropii. Przebieg pokazuje schemat poniżej.

RYS. 1Uruchomienie spakowanego pliku

CERT Polska opisał ten moment na przykładzie Emoteta: próbka była dostarczana w postaci spakowanej generycznym packerem, który miał zmylić silniki antywirusowe i utrudnić analizę, a po rozpakowaniu sterowanie trafiało do głównego kodu [3]. Warstw może być kilka. W analizie Ramnita z września 2017 roku CERT Polska opisał dwie: zewnętrzne autorskie pakowanie i wewnętrzny, zwykły UPX [4].

Odmianą bardziej złożoną jest ochrona przez maszynę wirtualną. Kod zostaje przetłumaczony na format, który wykonuje tylko dołączona do pliku dedykowana maszyna wirtualna [1].

Rodzaje

MITRE wymienia zarówno narzędzia ogólnodostępne, jak i packery pisane przez samych atakujących [1].

RodzajPrzykładUwagi
otwarty kompresorUPXzmniejsza programy zwykle o 50–70% [2]
komercyjny kompresorMPRESSwymieniony przez MITRE [1]
protektorThemida, VMProtectVMProtect wirtualizuje kod [1]
packer autorskiwarstwa zewnętrzna Ramnitapisany przez atakujących [4]
packer skryptówpackery z Metasploit dla JavaScriptomija antywirusy [5]

Przy UPX warto odnotować zastrzeżenie twórców: format jest od lat udokumentowany i otwarty, więc programy antywirusowe potrafią zajrzeć do środka spakowanego pliku [2]. UPX jest rozpowszechniany na licencji GNU GPL i obsługuje programy dla Windows, macOS i Linuksa [2]. Z tego powodu atakujący chętnie dokładają własną warstwę na wierzch, jak w przypadku Ramnita [4].

Pakowanie bywa sprzedawane jako usługa. Krebs opisał, że autor exploit kitu Blackhole oferował klientom dodatkową usługę szyfrowania plików za 50 USD miesięcznie [7]. Pokrewne pojęcia to zaciemnianie kodu, które zmienia czytelność kodu, a nie jego postać binarną, oraz malware polimorficzny (polymorphic malware), zmieniający postać przy każdej kopii.

W WordPressie

Strony WordPress nie uruchamiają plików wykonywalnych Windows, ale ta sama zasada działa w PHP i JavaScript. Złośliwy kod jest kompresowany i kodowany wiele razy, a na końcu uruchamiany przez eval(). Sucuri w październiku 2019 roku opisał próbkę złożoną z funkcji eval(), base64_decode(), gzinflate(), gzuncompress() i strrev(), która po ponad 90 warstwach ujawniła webshell z menedżerem plików [6]. Komentarz w kodzie wskazywał, że warstwy wygenerowało gotowe narzędzie, Blackscorpion Obfuscator [6], a nie ręczna praca autora. Liczba warstw nie wynika więc z wyrafinowania atakującego, tylko z ustawienia w programie. Każda warstwa jest prosta do zdjęcia, ale skaner szukający znanego fragmentu webshella nie zobaczy go, dopóki nie zdejmie ich wszystkich. Niebezpiecznik już w 2010 roku pokazywał, jak łatwo oszukać antywirus, pakując złośliwy JavaScript jednym z packerów dostępnych w środowisku Metasploit [5].

Dla administratora wynika z tego, że szukanie konkretnego tekstu w plikach nie wystarczy. Wzorcem podejrzanym jest raczej połączenie wykonania kodu z dekodowaniem. Poniższe polecenie wyszukuje takie połączenia w katalogu wp-content; wynik wymaga ręcznej oceny, bo niektóre legalne wtyczki też kodują dane.

grep -rlE "eval\s*\(\s*(base64_decode|gzinflate|gzuncompress|str_rot13)" wp-content/

Sucuri radzi przy analizie zastąpić eval przez echo, żeby PHP wypisał kolejną warstwę zamiast ją wykonać [6]. Taką analizę prowadzi się na kopii pliku, nie na działającej stronie. Odpowiednikiem w świecie plików wykonywalnych jest debuger: CERT Polska po rozpakowaniu Ramnita rozpoznawał w pamięci nagłówek pliku PE zaczynający się od znaków MZ, czyli gotowy do analizy oryginał [4].

Znaczenie dla wykrywania

Packer atakuje przede wszystkim wykrywanie sygnaturowe. Każde przepakowanie zmienia wygląd pliku, więc stara sygnatura przestaje pasować [1]. MITRE zaleca dlatego wykrywanie heurystyczne, aktualne definicje i własne sygnatury dla obserwowanych próbek [1]. Jako sygnał wykrycia wskazuje nietypowe przydziały pamięci, po których następuje wykonanie kodu spoza sekcji obrazu programu, oraz wysoką entropię i kod modyfikujący sam siebie [1].

Analitycy obchodzą pakowanie, uruchamiając próbkę pod kontrolą. W analizie Ramnita CERT Polska opisał, że mimo szyfrowania rozpakowanie jest proste: wystarczy uruchomić loader w debugerze i zatrzymać go tuż po dekompresji kodu [4]. Podobnie działa piaskownica (sandbox), która obserwuje zachowanie pliku zamiast jego wyglądu. Spakowany plik często pełni rolę loadera albo droppera, a rozpakowana treść bywa trojanem bankowym albo inną rodziną złośliwego oprogramowania.

Jak się bronić

TAB. 2

Przypisy

7
  1. [1] Obfuscated Files or Information: Software Packing, Sub-technique T1027.002 — MITRE ATT&CK · MITRE
  2. [2] UPX: the Ultimate Packer for eXecutables · UPX Team
  3. [3] Analiza złośliwego oprogramowania Emotet v4 · CERT Polska
  4. [4] Ramnit — dogłębna analiza · CERT Polska
  5. [5] Zaciemnianie i analiza złośliwego kodu JavaScript · Niebezpiecznik
  6. [6] Down the Malware Rabbit Hole — Part 1 · Sucuri
  7. [7] 'Blackhole' Exploit Kit Author Gets 7 Years · KrebsOnSecurity
TAB. 3

Hasła w tym artykule

13
TAB. 4

Linkują tutaj

5

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com