Overzicht Algoritmes voor intrusie detectie

Er is een literatuurstudie uitgevoerd voor werkpakket 2 van het project om de algoritmes op te lijsten die interessant zijn voor het detecteren van intrusies op een netwerk. Om de grote verscheidenheid aan algoritmes te organiseren introduceren we een aantal begrippen.

classificatie en anomalie detectie

Bij classificatie tracht een algoritme verschillende klasses te voorspellen. De twee klasses “normaal” en “aanval” kunnen bijvoorbeeld voorspeld worden dan spreekt men over binaire classificatie. Er kunnen ook meerdere klasses geïntroduceerd worden één voor normale traffiek en voor elke type aanval in de dataset. Hierbij spreekt men over multi-class classfication. Bij classificatie leert het algoritme supervised er is op voorhand gekend welke data behoort tot een aanval of niet. Vervolgens kan na de leerfase het algoritme getest worden op nieuwe data.

In de realiteit hebben bedrijven geen voorbeelden van aanvallen op hun industrienetwerk, ze zouden hun eigen netwerk moeten aanvallen en hiervan data capteren. Data van normale werking van netwerk is wel voorhanden. Anomaly detectie kan op twee verschillende manieren gebeuren. Bij unsupervised leren heeft het algoritme geen kennis welke data tot aanvallen behoren en welke niet, de volledige dataset wordt meegegeven. Isolation Forest leert op een unsupervised manier. Bij Semi-supervised leren zal het algoritme eerst leren van enkel normale netwerktraffiek om vervolgens hiervan afwijkingen te detecteren als “anomalies” dit zijn de potentiële aanvallen. Auto-encoders is een voorbeeld van dit soort leermethode.

Explainability

Explainability is het vermogen om een algoritme te verklaren. Zo kan er voor een voorspelling verklaard worden waarop het algoritme zich baseert. In andere woorden welke input data is het meest relevant voor het maken van deze voorspelling. Sommige algoritmes hebben deze capaciteit voor verklaarbaarheid ingebouwd (=built-in explainability) voor andere algoritmes kunnen additionele technieken ingeschakeld worden om dit te verwezenlijken.

Machine Learning en Deep learning

Machine learning is in principe een omvattende term om algoritmes aan te duiden die van data kunnen leren. Bij deep learning wordt er gebruikt gemaakt van neural netwerken, die in vele varianten voorkomen. Als neurale netwerken aan de pas komen zal de term Deep learning gebruikt worden en indien niet spreken we van machine learning.

Verklaring figuur

De figuur is opgedeeld in twee types voorspellingen die een algoritme kan maken classificatie en anomalie detectie. Deze staan hierboven beschreven. Classificatie kan gebruikt worden om aanvallen die gekend zijn en voorkomen in de dataset te detecteren. Ook kan classificatie gebruikt worden om bepaald gedrag dat niet-frequent voorkomt zoals herprogrammeren PLC’s, nieuwe IP’s instellen op het netwerk te gaan herkennen en classificeren. Dit zijn dan eerder de typische ingrepen die een technische medewerker zal uitvoeren maar geen malicious acties. Bij anomaly detectie willen we dan eerder alles wat van het normaal gedrag afwijkt gaan detecteren. Door ingrepen van de technische medewerker in het normaal gedrag te verwerken of door een combinatie van classificatie en anomalie detectie algoritmes te gebruiken kan men tot een volwaardige intelligente monitoroplossing komen.

Verder zijn de algoritmes opgedeeld in machine learning een deep learning. Sommige algoritmes hebben een variant voor classificatie en anomaly detectie biivoorbeeld Random Forest en isolation Forest. Voor sommige algoritmes wordt enkel de algemene naam gegeven zoals bij AutoEncoders en Graph Neural networks, maar deze kunnen op veel verschillende manieren toegepast worden zie bronnen [6] [7] [8].

Er zijn verschillende open-source projecten een deel hiervan bevatten een hele verzameling van algoritmes andere zijn dan weer toegespitst op één specifiek algoritme zie bronnen [1] [2] [3].

Open-source implementaties algoritmes

[1] Machine learning library – scikit-learn: machine learning in Python — scikit-learn 1.2.1 documentation

[2] XGB algoritme – GitHub – dmlc/xgboost: Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

[3] Anomaly detectie met Machine learning – GitHub – yzhao062/pyod: A Comprehensive and Scalable Python Library for Outlier Detection (Anomaly Detection)

[4] Deep Learning library – GitHub – pytorch/pytorch: Tensors and Dynamic neural networks in Python with strong GPU acceleration

[5] Graph neural network library – https://github.com/pyg-team/pytorch_geometric

[6] Graph neural network library for outlier detectie – GitHub – pygod-team/pygod: A Python Library for Graph Outlier Detection (Anomaly Detection)

[7] Graph based modeling for intelligent monitoring, classificatie toegepast op een netwerkdataset https://gitlab.devops.ti.howest.be/gaicia/graph-example

Referenties

[8] Deep Learning for Anomaly Detection: Challenges, Methods, and Opportunities. Guansong P., Longbing C., Charu A. WSDM21_tutorial_DLAD slides.pdf