Jak znaleźć szkodliwy kod php udający obrazek/plik tekstowy/itp?

W większości przypadków złośliwe skrypty wgrywane są na serwer poprzez formularze zezwalające na upload plików. Problem pojawia się w momencie, gdy oryginał nie jest usuwany, a jego położenie i nazwa są łatwe do określenia. Jak więc znaleźć to, co powinno zostać usunięte z serwera?

Przede wszystkim potrzebny nam będzie dostęp do konsoli. Jeżeli do serwera mamy dostęp jedynie przez ftp, to możemy sobie zrobić wirtualne środowisko przy użyciu Vmware (jest/była wersja dostępna za darmo) i w nim przygotować kopię serwisu. Do znalezienia plików, które są czymś innym niż udają, posłużymy się poleceniami find, file oraz grep.

Find pozwala wyszukiwać pliki w zadanym miejscu, file pokazuje typ pliku, a grep pozwala odcedzić pliki spełniające wszystkie warunki.

Polecenie może wyglądać następująco (odpalamy je w katalogu głównym lub w katalogu uploadu):

find . -type f -exec file {} \; | grep PHP | grep -v „.php”

Dla każdego pliku (-type f) w katalogu (.) odpalamy (-exec) polecenie file i jego wynik przekazujemy do grepa, który szuka słowa PHP (PHP script text). Wynik tego szukania przepuszczamy przez kolejnego grepa, który odrzuca (-v) pliki .php.

Być może coś pominąłem, ale w testowym środowisku polecenie to znalazło wpis download.mp3, który faktycznie okazał się być skryptem php odsyłającym nagłówki i zawartość pliku mp3 przy pomocy funkcji file_get_contents. Jedyny problem leży w tym, na ile miarodajne jest to, co pokazuje file.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*