Pracuję dla webhosta, a moje zadanie polega na wyszukiwaniu i czyszczeniu zhakowanych kont. Sposób, w jaki znajduję dobre 90% powłok \ malware \ injections, polega na szukaniu plików, które są "nie na miejscu". Na przykład eval(base64_decode(.......))
, gdzie ".....
" to cała masa tekstu base64, który zazwyczaj nigdy nie jest dobry. Nieco dziwne pliki wyskakują na mnie, kiedy przeglądam pliki na ciągi kluczy.Wykrywanie anomalii za pomocą Pythona
Jeśli te pliki wyskoczą na mnie jako człowiek, jestem pewien, że mogę zbudować jakiś profiler w pythonie, aby wyszukać rzeczy, które są "nie na swoim miejscu" statystycznie i zgłosić je do ręcznego sprawdzenia. Aby rozpocząć myślałem mogę porównać długość linii w plikach php zawierających najważniejsze ciągi (eval
, base64_decode
, exec
, gunzip
, gzinflate
, fwrite
, preg_replace
, itd.) I wyglądają na linie, które odbiegają od średniej o 2 odchylenia standardowe.
Długość linii jest bardzo różna i nie jestem pewien, czy byłaby to dobra statystyka do użycia. Innym podejściem byłoby przypisanie ważonych reguł do kreślenia rzeczy (długość linii powyżej lub poniżej progu = X punktów, zawiera słowo upload = Y punktów), ale nie jestem pewien, co mogę zrobić z wynikami lub jak zdobyć punkty atrybut. Moje statystyki są trochę zardzewiałe.
Czy ktoś mógłby wskazać mi właściwy kierunek (przewodniki, tutoriale, biblioteki) do profilowania statystycznego?
Ta sugestia jest trochę szeroka, aby naprawdę być przydatna, ale możesz spróbować podejścia bayesowskiego. Zbuduj korpus "dobrego" kodu i korpusu "złego" kodu i zbuduj lub użyj klasyfikatora aa (prawdopodobnie możesz użyć bezpośrednio jednego z różnych filtrów antyspamowych), aby przewidzieć, czy dany fragment nowego kodu jest bardziej prawdopodobny. być członkiem "dobrego" lub "złego" korpusu. Google do nauki bayesowskiej, filtrowania spamu itp. Byłbym skłonny przypuszczać, że możesz bezpośrednio użyć do tego projektu filtrującego spam, zamiast pisać coś od podstaw. –
@Joe, Josh - jeśli wybierzesz bayesowskie podejście, w przeszłości używałem wielebnego z podobnymi problemami. Uzyskanie racjonalnych rezultatów jest łatwe, jeśli możesz uzyskać poprawne zbiory danych. http://reverend.sourceforge.net/ –