BTC Process Classification – schemat działania
Funkcjonalność ta wykorzystuje analizę sekcji, funkcji i plików dll używanych przez badany plik wykonywalny (uruchamiany proces). Pozwala to na spojrzenie „głębiej” w strukturę danego procesu. Pozyskiwane są w ten sposób następujące cechy:
- ścieżka instalacji;
- nazwa firmy – producenta;
- wersja pliku;
- wersja produktu;
- Copyrights;
- Trademarks;
- informacje dotyczące sekcji: .text – kod wykonywalny:
a) .rsrc – zasoby takie jak: obrazki, audio, tekst itp.;
b) .data – dane inicjalizacyjne;
c) .rdata – dane inicjalizacyjne tylko do odczytu; - lista nazw plików dll, z których korzysta program;
- funkcje z plików dll, wykorzystywane przez program;
- wszystkie łańcuchy znaków, które niosą informacje o programie.
Cechy te w wyniku zadziałania narzędzia opisane zostają cechami takimi, jak:
- rozmiar;
- entropia;
- status możliwości zapisywania (czy tylko do odczytu).
Analiza powyższych cech pozwala wyodrębnić zestawy charakterystyczne dla każdej z kategorii, co z kolei pozwala na skuteczną klasyfikacje nieznanych procesów do jakich kategorii powinny należeć. Wykorzystanie klasyfikatora liniowego machine learning pozwala na ponad 92% skuteczność predykcji.
Przykład działania klasyfikatora procesów
Gry komputerowe często wykorzystują funkcje związane z renderowaniem grafiki trójwymiarowej, z kolei komunikatory mają funkcje odpowiedzialne za wysyłanie i wymianę informacji między użytkownikami. Niestety zbiory te nie są rozłączne, tzn. występują takie przypadki, że jeden z procesów posiada cechę lub kilka cech zaobserwowanych w innych procesach z innych klas. Doprowadza to do wniosku, że nie jest możliwe dokonanie klasyfikacji poprzez jedynie wyznaczenie wektora cech analizowanego procesu i porównanie ich z apriorycznie utworzonym wzorcem dla każdej z analizowanych klas.
Konieczne jest zastosowanie metodologii uczenia maszynowego. Wytworzony w ten sposób model pozwala wnioskować, że odnajdywane są pewne bardziej złożone związki między funkcjami, plikami dll, a kategoriami, na co wskazuje działający z wysoką skutecznością model. Przy czym model ten, nawet w przypadku testowania go uczącym plikiem wykonywalnym, nie zwraca informacji, że dany proces w 100% przynależy do tylko jednej klasy, ale wskazuje na jego przynależność także do innych klas. Należy tu nadmienić, że występują duże dysproporcje w tych wskazaniach, tzn. jedna z klas jest wskazywana jako znacząco dominująca – co uważa się za właściwość bardzo pożądaną. Opisany sposób działania klasyfikatora, oraz wnikliwa analiza macierzy cech doprowadzają do wniosku, że wynikiem działania klasyfikatora nie będzie przypisanie badanego procesu do klasy, a wskazanie na te klasy, których cechy badany proces posiada – ze wskazaniem procentowego stopnia zawierania się w każdej z klas. I tak, np. pomimo istnienia klasy „Gry”, procesy, które są w rzeczywistości typowymi grami komputerowymi mogą posiadać cechy charakterystyczne dla kategorii „Komunikatory”, na przykład wtedy, kiedy w grze komputerowej istnieje moduł odpowiadający za komunikacje między graczami – oznacza to, że wynikiem badania takiego procesu będzie przypisanie go do zbioru oznaczonego jako „Gry” oraz „Komunikatory”, z odpowiednim stopniem przynależności dla każdej z tych klas.
Przykładowa odpowiedź z klasyfikatora została pokazana na rysunku poniżej. Plik „matlab.exe” jest plikiem uruchamiającym środowisko do obliczeń matematycznych i przeprowadzania symulacji. Z klasyfikatora procesów otrzymaliśmy informację, że proces ten uznany został jako należący do klasy „Narzędzia deweloperskie” – na poziomie 88%. Biorąc pod uwagę zbiór zdefiniowanych klas uznać należy, że klasyfikator wskazał najtrafniejszą klasę. W środowisku tym możliwe jest programowanie i wykonywanie obliczeń inżynieryjnych.
Drugie zdjęcie wskazuje odpowiedź klasyfikatora na proces związany z biurowym pakietem Office.
Stworzona metryka macierzy pomyłek – pokazana poniżej – przedstawia skuteczność klasyfikacji dla każdej kategorii w odniesieniu do innej kategorii; metryka ta pozwala wnioskować, dla której klasy istnieje największe ryzyko pomyłki (wartość na przekątnej jest daleka od wartości 1), a także, dla których kategorii model powinien działać najskuteczniej – wartość na przekątnej jest bliska wartości 1.