Einführung:
Dank der Anwendung von Deep-Studying-Techniken hat die Malware-Erkennung in den letzten Jahren bemerkenswerte Fortschritte gemacht. Convolutional Neural Networks (CNNs), die üblicherweise zur Bildanalyse verwendet werden, können auch zur Erkennung und Klassifizierung schädlicher Software program eingesetzt werden. In diesem Weblog werden wir den Prozess der Erstellung eines Malware-Klassifikators mithilfe von CNNs untersuchen und die erforderlichen Schritte aufschlüsseln. Tauchen wir ein in die Welt des Deep Studying und seine Rolle bei der Bekämpfung von Malware-Bedrohungen.
Malware in Bilder umwandeln:
Die Konvertierung von Malware-Samples in ein für bildbasierte Modelle geeignetes Format ist eine zentrale Herausforderung bei der Verwendung von CNNs zur Malware-Erkennung. Wir können diese Hürde jedoch überwinden, indem wir Techniken aus der Malware-Visualisierungsforschung anwenden. Lakshmanan Nataraj führte eine bemerkenswerte Studie mit dem Titel „Malware Photos: Visualization and Computerized Classification“ durch, die eine Lösung für die Konvertierung von Malware in Bilder bietet. Indem wir verschiedene Abschnitte der Malware visualisieren, können wir sie effektiv als Graustufenbilder darstellen.
Datensatz: Der Malimg-Datensatz
Um unser CNN-Modell zu trainieren, benötigen wir einen geeigneten Datensatz. Der Malimg-Datensatz ist weit verbreitet und besteht aus 9.339 Malware-Beispielen aus 25 verschiedenen Malware-Familien. Sie können diesen Datensatz herunterladen unter paperwithcodes.com über folgenden Hyperlink: https://drive.google.com/file/d/1M83VzyIQj_kuE9XzhClGK5TZWh1T_pr-/view. Dieser vielfältige Datensatz bietet eine solide Grundlage für das Coaching unseres Malware-Klassifikators.
Konvertieren von Malware in Graustufenbilder:
Um Malware-Beispiele in Graustufenbilder umzuwandeln, können wir ein Python-Skript nutzen. Dieses Skript liest die binäre Darstellung der Malware-Datei, formt sie in ein 2D-Array um und speichert es mithilfe der SciPy-Bibliothek als Graustufenbild. Erlauben Sie mir, ein Beispiel des Skripts vorzustellen:
„Python
Betriebssystem importieren
numpy als np importieren
scipy.misc importieren
Array importieren
filename = ‚
f = open(Dateiname, ‚rb‘)
ln = os.path.getsize(Dateiname)
Breite = 256
rem = ln % Breite
a = array.array(“B”)
a.fromfile(f, ln – rem)
f.shut()
g = np.reshape(a, (len(a) // Breite, Breite))
g = np.uint8(g)
scipy.misc.imsave(‚
„
Funktionsauswahl und Engineering:
Sobald wir die Graustufenbilder von Malware haben, ist es wichtig, relevante Funktionen für das Coaching unseres Modells zu extrahieren. Wir können verschiedene Bildeigenschaften wie Texturmuster, Frequenzen, Intensität oder Farbmerkmale nutzen. In diesem Tutorial konzentrieren wir uns auf die Verwendung des International Picture Descriptors (GIST)-Algorithmus, der eine kompakte Darstellung des Bildes bietet. Zur Berechnung von GIST-Funktionen können wir die Bibliothek „pyleargist“ verwenden. Sie können diese Bibliothek mit pip installieren, indem Sie den folgenden Befehl ausführen: `pip set up pyleargist==1.0.1`. Sehen wir uns nun ein Beispiel für die Berechnung von GIST-Funktionen an:
„Python
aus PIL-Importbild
Import Leargist
picture = Picture.open(‚
new_image = picture.resize((64, 64))
des = leargist.color_gist(new_image)
feature_vector = des[0:320]
„
Aufbau des CNN-Modells:
Mit den extrahierten Merkmalsvektoren können wir mit der Konstruktion des CNN-Modells mithilfe der Keras-Bibliothek fortfahren. Keras optimiert den Prozess des Aufbaus neuronaler Netze. Erlauben Sie mir, die Architektur unseres CNN-Modells zu erläutern:
„Python
Keras importieren
aus keras.fashions importieren Sequential
aus keras.layers importieren Sie Dense, Dropout, Flatten
aus keras.layers Import Conv2D, MaxPooling2D
aus keras.layers.normalization Import
BatchNormalisierung
aus keras.layers.advanced_activations importiere LeakyReLU
# Modellkonfiguration
Batch_size = 64
Epochen = 20
num_classes = 25
# Gestalten Sie die Eingabebilder um
train_X = train_X.reshape(-1, 32, 32, 1)
test_X = test_X.reshape(-1, 32, 32, 1)
# Erstellen Sie das Modell
Malware_model = Sequential()
Malware_model.add(Conv2D(32, kernel_size=(3, 3), Aktivierung=’linear‘, input_shape=(32, 32, 1), padding=’identical‘))
Malware_model.add(LeakyReLU(alpha=0.1))
Malware_model.add(MaxPooling2D(pool_size=(2, 2), padding=’identical‘))
Malware_model.add(Conv2D(64, (3, 3), Aktivierung=’linear‘, padding=’identical‘))
Malware_model.add(LeakyReLU(alpha=0.1))
Malware_model.add(Dense(1024, Aktivierung=’linear‘))
Malware_model.add(LeakyReLU(alpha=0.1))
Malware_model.add(Dropout(0.4))
Malware_model.add(Dense(num_classes, Aktivierung=’softmax‘))
# Kompilieren Sie das Modell
Malware_model.compile(loss=keras.losses.categorical_crossentropy, optimierer=keras.optimizers.Adam(), metrics=[‘accuracy’])
# Trainieren Sie das Modell
Malware_model.match(train_X, train_label, batch_size=batch_size, epochs=epochs, verbose=1, validation_data=(valid_X, valid_label))
„
Bewertung des Modells:
Um die Leistung unseres trainierten Modells zu bewerten, können wir den Testdatensatz verwenden. Hier ist ein Beispiel für die Bewertung des Modells und den Ausdruck der Genauigkeit:
„Python
test_eval = Malware_model.consider(test_X, test_Y_one_hot, verbose=0)
print(‚Die Genauigkeit des Exams beträgt:‘, test_eval[1])
„
Abschluss:
In diesem Weblog haben wir uns mit dem Prozess der Erstellung eines Malware-Klassifikators mithilfe von CNNs befasst. Indem wir Malware in Graustufenbilder umwandeln und relevante Funktionen extrahieren, können wir ein Deep-Studying-Modell trainieren, um Schadsoftware zu erkennen und zu klassifizieren. CNNs stellen ein hervorragendes Werkzeug im Kampf gegen Malware dar, und da Datensätze wie Malimg leicht verfügbar sind, können Cybersicherheitsexperten das Potenzial von Deep Studying nutzen, um ihre Abwehrkräfte zu stärken.
Ich möchte mich für das Buch „Mastering Machine Studying for Penetration Testing“ von Chiheb Chebbi bedanken. Dieses Buch conflict während meiner gesamten Reise zur Erstellung eines Malware-Klassifikators mithilfe von CNNs eine unschätzbare Ressource. Es bot umfassende Einblicke und praktische Anleitungen zur Nutzung maschineller Lerntechniken für Cybersicherheitszwecke. „Mastering Machine Studying for Pentration Testing“ kann ich jedem wärmstens empfehlen, der sich für die Schnittstelle zwischen maschinellem Lernen und Cybersicherheit interessiert.