WordPres i malware - moje metody wykrywania

Znajomy poprosił mnie o przeniesienie jego stron do mnie na serwer, oczywiście wiedziałem, iż maja jakieś malware w sobie, więc starannie pliki sprawdziłem co mogłem to naprawiłem i w zasadzie pliki są czyste. Jednak komentarze były aktywny co doprowadziło do kolejnych infekcji plików. I były to pliki wtyczek takich jak nginx helper, czy iwp client, a nawet pliki core z admina WordPress-a
Komentarze możemy zablokować – https://wordpress.org/plugins/disable-comments/
Lub zablokować funkcje mail
php_value disable_functions mail
Jednak…
W dzisiejszym wpisie pokaże dwie opcje monitoringu.
Jedna opartna na logach, druga na usłudze.
- mail() @ php – do logów
- incron
Pierwsza metoda bardzo przydatna. Dzięki logowaniu mail() @ php widzimy jaki skrypt php robi wysyłke za pomocą tej funkcji.
[01-Jun-2015 09:50:14 Europe/Warsaw] mail() on [/web/domena.pl/app/wp-content/plugins/iwp-client/lib/dir11.php(1484) : eval()'d code:278]: To: [email protected] -- Headers: Date: Mon, 1 Jun 2015 09:50:14 +0200 From: Sandy Johnson <[email protected]> Message-ID: <[email protected]> X-Priority: 3 X-Mailer: PHPMailer 5.2.9 (https://github.com/PHPMailer/PHPMailer/) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_2faa7f566580fbd5ec10ab5e542d3ff1" Content-Transfer-Encoding: 8bit [01-Jun-2015 09:50:14 Europe/Warsaw] mail() on [/web/domena.pl/app/wp-content/plugins/iwp-client/lib/dir11.php(1484) : eval()'d code:278]: To: [email protected] -- Headers: Date: Mon, 1 Jun 2015 09:50:14 +0200 From: Shirley Gibbs <[email protected]> Message-ID: <[email protected]> X-Priority: 3 X-Mailer: PHPMailer 5.2.9 (https://github.com/PHPMailer/PHPMailer/) MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_0d55dc1fbe115f630572940ee1bcdf58" Content-Transfer-Encoding: 8bit
Widać, że skrypt /web/domena.pl/app/wp-content/plugins/iwp-client/lib/dir11.php nawala maile. Oczywistość jest, że to wirus. Plik ten w środku jest zakodowany.
Druga metoda polega na wykrywaniu zmian na naszym systemie plików, podobnie działą jak inofity.
Instalacja
apt-get install incron
Dodajemy sobieżliwość używania tego programiku
vim /etc/incron.allow
I w pierwszej linii podajemy nazwę naszego usera.
Kilka podstawowych objaśnień:
- IN_ACCESS – podczyt pliku
- IN_ATTRIB – zmiana daty, uprawnień, etc..
- IN_CREATE – Utworzenie pliku lub katalogu
- IN_DELETE – Skasowanie pliku lub katalogu
- IN_MODIFY – Plik został zmodyfikowany
- IN_MOVED_FROM – Plik został przeniesiony z onitorowanego katalogu
- IN_MOVED_TO – Plik został przeniesiony do monitorowanego katalog
- IN_OPEN – Plik został otworzony
- IN_ALL_EVENTS –
To nie są wszystkie możliwe metody incron-a – więcej :) man incrontab
Jeszcze kilka przydatnych opcji:
- $@ – wypluje nam scieżke obserwowanego katalogu
- $% – wypluje jakie było działanie
- $# – nazwa pliku lub katalogu zwiazana z działaniem w monitorowanym katalogu
I teraz do dzieła.
Schemat:
<akcja/polecenie> opcje
Wchodzimy do edycji:
incrontab -e
I tutaj mój wpis przykładowy:
/sajty/domena.pl/app/ IN_MODIFY,IN_CREATE logger "$@ - $%: $#"
Wpis powyżej spowoduje iż w pliku /var/log/messages zobaczymy coś na wzór:
Jun 1 14:29:19 8px root: "/sajty/domena.pl/app/ - IN_CREATE: testuje_incron" Jun 1 14:29:34 hostname username: "/sajty/domena.pl/app/ - IN_CREATE: .#testuje_incron" Jun 1 14:29:35 hostname username: "/sajty/domena.pl/app/ - IN_MODIFY: testuje_incron" Jun 1 14:29:35 hostname username: "/sajty/domena.pl/app/ - IN_MODIFY: testuje_incron"
Powyżej widać, iż user nazwany username na hoscie nazwanym hostname w katalogu /sajty/domena.pl/app został utworzony plik testuje_incron, a następnie został on zmodyfikowany.
W zasadzie to koniec, jednak fajnie by było wiedzieć o takiej akcji szybciej, na mail-a :)