Internet i bezpieczeństwo

Wirus na stronie WordPress – Jak odkodować edoced_46esab

programista laptop

Pod koniec lutego (20-21) miały miejsce kolejne spore ataki hakerskie na strony postawione na CMS WordPress. Po uzyskaniu dostępu, atakujący umieszczali na stronach pliki PHP i doklejali kod w htaccess, dzięki czemu strony mogły nie tylko emitować linki na podstronach, ale również działać jako typowy doorway page – przekierowywać ruch z wyszukiwarki Google, a wejścia bezpośrednie zostawiać nietknięte.

Standardowo, aby dokładnie usunąć wirusa, trzeba poznać zainfekowany skrypt PHP, zobaczyć jakie elementy zawiera, do jakich plików się odwołuje.

Funkcje wykorzystane do zaciemnienia kodu w zainfekowanych plikach PHP to najczęściej base64_decode, choć z ataków z lutego mieliśmy potrójne kodowanie, proste ale wkurzające chr(num), zwraca konkretny znak z tablicy ASCII, num to przypisana do konkretnego znaku wartość liczbowa, więcej tutaj oraz ciąg znaków zakodowany w edoced_46esab – odwrócony ciągu znaków base64_decode, przy pomocy funkcji strrev.

Infekcje z 20-21 obejmowały plik htaccess (przekierowanie wszystkich requestów) oraz w katalogu głównym plik PHP o losowej nazwie – najpradopodobniej generowanej na etapie wstrzykiwania pliku na stronę, który zawierał główny kod pasożyta. W tym krótkim artykule nie będę omawiał, jak konkretnie usunąć ten typ infekcji (wymagałoby to podania wszystkich kodów źródłowych z wydrębnionych zainfekowanych plików, których z oczywistych względów nie mogę podać), jednak zaprezentuję prosty sposób na zdekodowanie pliku z zaciemnianiem kodu obejmującym edoced_46esab oraz strrev, albowiem w wiadomościach prywatnych padały pytania o sposoby dekodowania.

Poniżej prosta apka do odwracania ciągu znaków, dodałem do niej dekodowanie ciągów base64, bo jedno bez drugiego żyć nie może. Wiem że mało funkcji 🙂 Na tę chwilę tylko tyle i aż tyle. Jak będzie zainteresowanie programem dodam inne opcje, użyteczne podczas pracy przy diagnozowaniu infekcji ze stron internetowych, w szczególności w CMS WordPress.

WordPress Diagnostic and Recovery Toolset

Obsługa apki bardzo prosta, w górnym polu tekstowym wklejamy fragment zaciemnionego kodu, wybieramy tryb pracy Kodowanie/Dekodowanie (Encode/Decode) oraz wskazujemy rodzaj kodowania – w tej chwili dostępne 2 typy – Base64 oraz StrRev. W drugim polu tekstowym otrzymujemy zdekodowany ciąg znaków. W przypadku base64_decode apka automatycznie rozpoznaje i wyodrębnia odpowiednie ciągi do zdekodowania, ale może również pracować na czystym tekście w base64. Interfejs aplikacji w języku angielskim, sorry.

Do uruchomienia programu potrzebny jest .NET Framework 4.5.2 lub nowszy.

Wracając do tematu infekcji, jeśli masz zainfekowany plik i widzisz w kodzie wystąpienia StrRev oraz edoced_46esab, wpierw użyj zwykłego odwracania znaków, w drugiej kolejności użyj dekodera Base64. Na wyjściu dostaniesz pełny kod wirusa.

Zdarza się, że w kodzie i strrev jest odwrócone (verrts) lub kilkukrotnie użyte Base64, albo część wirusa jest kodowana przy użyciu innych metod. W wielu przypadkach także info o rodzaju kodowania siedzi w zmiennej, a część kodu zasysana jest z zupełnie innego pliku (inkludowanie), więc trzeba analizować zawsze całokształt wraz z powiązaniami.

PS. Wiem, że są narzędzia on-line do dekodowania ale potrzebowałem czegoś na desktop z możliwością szybkiego rozbudowania. Wersję 1.0.0 udostępniam za FREE, może komuś się przyda.

Aktualizacja: z dniem 16.06.2019 wsparcie dla programu zostaje wstrzymane. Program będzie niedostępny do pobrania. Być może w przyszłości na bazie programu stworzę nowy o większych możliwościach.

O autorze

Mariusz Kołacz

Z zawodu mgr inż. informatyk, zwolennik nowoczesnych technologii i fan Nikoli Tesla. Prowadzi kilka blogów o tematyce technologicznej. Po godzinach lubi przeczytać dobrą książkę, pozwiedzać ciekawe miejsca w Polsce lub spędzić wolny czas na łonie natury.