Base64 i eval() — jak hakerzy ukrywają złośliwy kod PHP
Dlaczego hakerzy zaciemniają kod?
Złośliwy kod PHP jest łatwy do zidentyfikowania, gdy jest czytelny. Dlatego hakerzy kodują go tak, by wyglądał jak bezsensowny ciąg znaków — skanery bezpieczeństwa i administratorzy strony przeoczają go jako „coś systemowego". Najpopularniejszą techniką jest kodowanie base64 w połączeniu z funkcją eval().
<?php eval(base64_decode("cGhwaW5mbygpOw==")); ?>
Ten fragment dekoduje się do phpinfo(); — w prawdziwym ataku zamiast phpinfo() będzie pełnoprawny backdoor lub kod rozsyłający spam.
Jak odczytać zaciemniony kod?
Nigdy nie uruchamiaj nieznanego zaciemnionego kodu bezpośrednio. Zamiast tego użyj bezpiecznej metody dekodowania:
php -r "echo base64_decode('cGhwaW5mbygpOw==');"
Lub online na stronie takiej jak base64decode.org (ale nigdy nie wklejaj na publiczne serwisy kodu, który może zawierać dane klientów).
Wielowarstwowe zaciemnianie
Zaawansowane malware stosuje wielowarstwowe zaciemnianie: kod base64 po odkodowaniu daje kolejny zakodowany ciąg, który dopiero po kilku iteracjach ujawnia właściwy kod. Bywa też, że kod jest rozbity na fragmenty przechowywane w zmiennych i składany dynamicznie w czasie wykonania.
W takich przypadkach profesjonalna analiza wymaga narzędzi do statycznej i dynamicznej analizy PHP, co wychodzi poza zakres ręcznego przeglądu.
Jakich funkcji szukać?
eval() — wykonuje ciąg znaków jako kod PHP
base64_decode() — dekoduje ciąg base64
str_rot13() — prosta rotacja znaków, często łączona z base64
gzinflate(), gzuncompress() — dekompresja, kolejna warstwa zaciemniania
preg_replace('/./e', ...) — w starszych wersjach PHP wykonuje kod przez flagę /e
create_function() — tworzy i wykonuje funkcje w locie
Sama obecność tych funkcji nie zawsze oznacza złośliwy kod (np. niektóre wtyczki legitimate używają base64_decode() do przechowywania danych binarnych). Ale każde wystąpienie eval() w połączeniu z base64_decode() jest poważną czerwoną flagą i wymaga natychmiastowej weryfikacji.
Jeśli znalazłeś zaciemniony kod na swoim serwerze i nie wiesz jak go bezpiecznie ocenić — skontaktuj się z nami. Przeanalizujemy każdy podejrzany plik i dostarczymy raport z tym, co znaleźliśmy.