Jak odnaleźć szkodniki analizując listę zmienianych plików?

Lista zmienianych plików to kompletna lista wszystkich plików jakie są na koncie (i najczęściej – były zmienianie nie dawniej niż 3 lata od od daty wykonania listy).

Jednakże, w części przypadków wszystkie szkodniki udaje się zidentyfikować przy pomocy automatycznych narzędzi zdecydowanie szybciej niż ręcznie sprawdzając tą listę. Dlatego zalecamy najpierw zapoznać się z treścią strony wir.vdl.pl i dokonywać analizy treści serwera przy pomocy listy zmienianych plików jedynie w ostateczności, gdy automatyczne oczyszczenie nie wystarcza, a postawienie całego silnika strony od nowa nie jest możliwe (w części przypadków postawienie nowej strony i skopiowanie ręcznie treści ze starej do nowej, jest dużo szybsze niż analiza tej listy, a tylko w taki sposób można mieć względną pewność, że jest już czysto).

Pamiętać należy, że lista ta może być bardzo obszerna (zwykle tak jest) i jej sprawdzanie zajmie bardzo dużo czasu, w porównaniu do skanerów antywirusowych, ale tylko w ten sposób można odkryć szkodniki obecne na serwerze, a których nie udało się wykryć antywirusowi, i mimo wszystko jest to znacznie szybsze w porównaniu do sprawdzania ręcznego bez takiej listy.

Jest to istotne, ponieważ trwa specyficzny „wyścig zbrojeń” między twórcami szkodników i twórcami antywirusów. Poniżej kilka z powodów dla których taka lista jest istotna.

  • niektóre szkodniki są zbyt krótkie, aby konwencjonalny antywirus był w stanie je wykryć, np. jedna linia kodu zawierająca zaledwie kilka podstawowych funkcji pozwalających wykonać payload przesyłany POST-em
  • niektóre szkodniki są dynamicznie „zaciemnione” – ten sam kod za każdym razem wygląda inaczej. Takie szkodniki wymykają się mechanizmom antywirusowym sprawdzającym w poszukiwaniu znanych schematów

Ponieważ lista zawiera wszystkie pliki, w tym normalne pliki stron użytkownika serwera, koniecznie trzeba z niej odfiltrować pliki nie będące szkodnikami (i zwykle stanową one przeważającą większość plików na liście) lub odnajdywać szkodliwe pliki.

Poniżej znajduje się zestaw informacji przydatnych odfiltrowywaniu normalnych plików z listy oraz jak identyfikować szkodniki.

Każdy plik i katalog umieszczony na serwerach CyberFolks.pl opatrzony jest 3 datami ostatnich:

  • zmiany metadanych pliku (czyli jego atrybutów, praw dostępu, zapisu i uruchomienia, statusu itp)
  • modyfikacji treści pliku
  • otwarcia do edycji/odczytu

Tylko pierwszej z nich nie można łatwo ustawić ręcznie (nie dokonując głębokich manipulacji w całym systemie, co jest praktycznie nie możliwe). Dlatego lista posortowana jest właśnie według tej daty, od najnowszych do najstarszych zmian. Jednak należy pamiętać, że jest ona uaktualniana za każdym razem gdy wprowadzane są jakiekolwiek zmiany w plikach lub ich atrybutach. Dlatego przydatna jest tylko przed wprowadzeniem jakichkolwiek zmian w pliku przez osoby autoryzowane.

Daty modyfikacji i otwarcia należy traktować jako poglądowe i niepewne, gdyż znaną i relatywnie często spotykaną metodą ukrywania szkodników przed osobami administrującymi kontem, niedoświadczonymi w poszukiwaniu szkodników, jest podmiana dat ostatniego odczytu i modyfikacji na podobną do normalnych plików rzeczywiście umieszczonych przez osoby uprawnione do manipulacji treścią konta.Lista zmienianych plików generowana przez administrację CyberFolks.pl w formie pliku tekstowego zwykle skonstruowana jest wg poniższego schematu w kolejności od lewej strony:

  • daty: zmiany, modyfikacji, otwarcia, w formacie rok-miesiąc-dzień godzina-minuta-sekunda (rr-mm-dd gg-mm-ss)
  • względna lokalizacja pliku
  • wielkość pliku w bajtach

Sprawdzając listę zmienianych plików można kierować się zasadami:

  • Listę najszybciej można przełożyć na realne wyniki przy pomocy narzędzi terminalowych dostępnych standardowo na serwerze przez SSH. Jeśli jednak ich użycie nie jest możliwe, polecamy przeglądać listę edytorem z czcionką o stałej szerokości, np Notepad++ wyposażonym w zaawansowane funkcje przeszukiwania tekstu
  • Im więcej czynności na plikach wykonywały osoby autoryzowane na koncie, tym więcej plików normalnych koniecznych będzie do odfiltrowania. Rzadko jednak na koncie są aktywne szkodniki dłużej niż kilka ostatnich miesięcy.
  • Zwykle, gdy w katalogu domeny nie są umieszczane nowe pliki od dłuższego czasu, lub lista zmienianych plików zostanie odfiltrowana wg powyższych zasad, pliki szkodników będą „osamotnionymi” i łatwymi do zidentyfikowania szkodnikami
  • Najwięcej normalnych plików można odfiltrować z listy najpierw sprawdzając, czy oprócz plików o rozszerzeniach nazw standardowo uruchamianych jako kod skryptowy/programów, nie ma na koncie również plików .htaccess zezwalających dodatkowym rozszerzeniom nazw zostać uruchomionych do dynamicznego wygenerowania treści strony. Zwykle plików .htaccess na koncie jest relatywnie mało, więc po skopiowaniu wszystkich plików na swój komputer, proponujemy wykorzystać funkcję szukania w wielu plikach naraz, ograniczając filtrem nazwy plików do przeszukania nazwą .htaccess. Należy sprawdzić, czy ich zawartość nie zawiera dodatkowych wpisów, w szczególności:
    • reguł AddHandler nadających uprawnienia wykonania jako kod stron www niestandardowym rozszerzeniom nazw plików. Jeśli reguł takich nie ma, można od razu odfiltrować z listy zmienianych plików wszystkie archiwa, pliki tekstowe, zdjęcia, muzykę filmy, itp, ograniczając listę do znanych rozszerzeń nazw plików uruchamianych, takich jak: php, php3, php4, php5, php6, phtml, cgi, pl oraz wszystkich innych ręcznie aktywowanych przez użytkownika. Rzadko umieszczane są szkodniki z innymi rozszerzeniami plików i jednocześnie bez dodanej reguły AddHandler, ale w takich przypadkach zawsze jest szkodnik w jednym ze standardowo obsługiwanych w/w rozszerzeń.
    •  reguł RewriteRule przekierowujących internautów na zewnętrzne szkodliwe strony
  • Szkodniki najczęściej lokują się w głębiej umieszczonych katalogach na koncie – tu przydatna jest dokładniejsza lokalizacja wskazywana na liście zmienianych plików – będzie długa. Częstym przypadkiem jest umieszczanie kodu w subkatalogach komponentów CMS-a, albo w subkatalogach albumów ze zdjęciami.
  • Najczęściej, szkodnik infekując konto rozsiewa się w krótkim czasie do wielu miejsc na koncie naraz. Takie przypadki można łatwo zidentyfikować, ponieważ będą skupione w grupę kolejno występujących po sobie wpisów na liście zmienianych plików, a będą wyraźnie różnić się lokalizacjami. Często również pliki szkodników mają te same nazwy i wielkości. Wystarczy więc zwrócić uwagę, czy rozmiary plików są identyczne lub bardzo zbliżone.
  • Dość częsta jest próba ukrycia szkodnika tak aby wyglądał jak standardowy element CMS-a lub jego plugin. Przykładami są nazwy plików „wp-conf.php”, katalogi modułów Joomli zawierającymi trzy litery „o” w nazwach, lub nazwy łudząco podobne do rzeczywistych pluginów np „akickmet” udający „akismet”
  • Należy pamiętać, że najczęściej szkodnik, którego działalność i objawy zostały rozpoznane, w rzeczywistości nie jest pierwszym szkodliwym plikiem jaki pojawia się na koncie. Najczęściej spotykane są przypadki, gdzie pierwotna infekcja nastąpiła 2-3 tygodnie wcześniej, przez szkodnika zaszyfrowanego w sposób uniemożliwiający rozpoznanie go automatycznymi skanerami antywirusowymi. W relatywnie rzadkich przypadkach pierwotna infekcja następuje więcej niż miesiąc przed widocznymi objawami infekcji. Nie należy tego jednak mylić z efektami niedokładnego oczyszczenia po wcześniejszej infekcji. Nie mniej – każdy z tych przypadków można wyłowić z listy zmienianych plików po odpowiedniej analizie.Należy pamiętać, że jeśli na koncie tego samego użytkownika jest więcej domen, odpowiednio napisany szkodnik jest w stanie rozprzestrzenić się na inne domeny na tym samym koncie. Jednak, zwykle zmiany w większej ilości domen nie różnią się znacznie datami ostatnich zmian statusu pliku, nazwami, a nawet mają identyczną wielkość i tu przydatna jest lista zmian w plikach generowana hurtem dla wszystkich domen na koncie oraz postępowanie tak jak w przypadku szkodników rozsiewających się do wielu miejsc naraz (opisane wyżej). Jedyną metodą zapobiegnięcia rozprzestrzenianiu się na inne domeny, bez ograniczania funkcji konta poniżej powszechnych standardów, jest założenie całkowicie odrębnego konta.
  • Najczęściej, kod szkodnika jest zaszyfrowany funkcją base64_encode. Obecność kodu zaszyfrowanego w ten sposób można rozpoznać przez obecność linii kodu zawierającej co najmniej kilkadziesiąt znaków wyglądających na wylosowane (mogą być rozbite na blok wielo-liniowy). Zwykle w otoczeniu takiego „ciągu losowych znaków” znajduje się fraza base64_decode oraz eval. Może znajdować się również gzinflate.
  • Programiści szkodliwego kodu wymyślają różne metody ukrywania kodu przed antywirusami. Jest to ciągły wyścig zbrojeń. Zwykle jednak, im lepiej ukryty przed automatycznym skanerem, tym dziwniej wygląda dla człowieka (nie tylko programisty – wystarczy wizualnie porównać normalne pliki i zaszyfrowane) i przez to bardziej rzuca się w oczy.
  • Część szkodników ma bardzo krótki kod – jedno- lub kilku-linijkowy, służący jedynie jako zalążek, silnik do uruchomienia dodatkowego kodu przesyłanego przez wywołanie http każdorazowo, metodą POST do pliku kodu szkodnika.Należy zwrócić uwagę na daty oraz czas w ciągu dnia, w jakim dokonane zostały zmiany. Sporą część szkodników można wykryć po datach i czasach zmian następujących w dni oraz pory dnia, w których wiadome jest, że nie mogły zostać wprowadzanie zmiany przez osoby upoważnione do modyfikowania plików. Relatywnie łatwo można wykryć szkodniki dodane do konta w późnych godzinach nocnych.
  • Często autoryzowany użytkownik konta umieszcza na serwerze pliki hurtowo przez FTP lub przy pomocy odpowiedniego interfejsu panelu admina, lub zaplecza strony. Wtedy na liście zmienianych plików będzie duża ilość plików opatrzona tą samą datą ostatniej zmiany atrybutów, lub różniąca się nieznacznie – z wąskiego przedziału czasowego gdzie zmiany w kolejnych plikach na liście następowały w odstępach kilku sekund. Z wyjątkiem szczególnych przypadków(*), wpisy te można hurtem odfiltrować z listy zmienianych plików, wyłącznie na podstawie ostatniej daty zmian atrybutów plików.
    • czasy zmian atrybutów dla plików zmienianych przez szkodnika przy pomocy wykradzionego hasła do konta FTP mogą wyglądać normalnie w takim przypadku. Należy porównać daty zmian w plikach z logami operacji wykonywanych przez FTP oraz adresami IP z logu FTP, czy należą do osób upoważnionych do wprowadzania zmian
    • w niektórych przypadkach, szkodnik wprowadza hurtowo zmiany w wielu plikach naraz, będących normalnie na koncie, celem utrudnienia odfiltrowywania listy w powyższy sposób. Mogą one wyglądać podobnie do hurtowych zmian wykonywanych normalnie w czasie aktualizacji kodu silnika CMS strony wykonywanego przez jej interfejs z zaplecza. W tym wypadku należy zwrócić uwagę na (podejrzaną) spójność (lub niespójność) pozostałych dat modyfikacji plików, ich lokalizacji (nie powinno być takich zmian dla plików różnych domen) oraz podejrzane nazwy (np wygenerowane losowo).
  • Część szkodników zawiera w swoich treściach fałszywą informację, jakoby rzekomo zostały wygenerowane przez serwer. Serwer nie generuje żadnych dodatkowych plików w katalogach domen użytkownika o ile nie są to domyślne pliki generowane zaraz po dodaniu domeny do konta. Zwykle jednak w tych plikach brakuje jakiejkolwiek bardziej szczegółowej informacji, co jest normą w normalnych plikach generowanych przez jakikolwiek program.