Extraktion bestimmter Wörter aus .json Dokument
Verfasst: Sonntag 13. Juni 2021, 22:15
Hallo zusammen,
ich schreibe hier rein, da ich im Rahmen meiner Forschung zum Thema Malware-Analyse aktuell nicht weiterkomme und zu meinem Problem weder im Internet noch hier im Forum etwas fand. Kurz zusammengefasst, möchte ich eine Malware-Klassifizierung mittels verschiedener Machine Learning Klassifikatoren vornehmen. Die Klassifiikation soll auf N-Grams der API Call Sequenz basieren. Nachdem ich in einem ersten Schritt die Malware habe ausführen können, habe ich nun Logdateien, die aus tausenden solcher Blöcke bestehen:
"category": "file",
"status": 1,
"stacktrace": [],
"api": "NtCreateFile",
"return_value": 0,
"arguments": {
"create_disposition": 1,
"file_handle": "0x00000080",
"filepath": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\vbc.exe",
"desired_access": "0x80100080",
"file_attributes": 0,
"filepath_r": "\\??\\C:\\Users\\Administrator\\AppData\\Local\\Temp\\vbc.exe",
"create_options": 100,
"status_info": 1,
"share_access": 1
Ziel ist nun, für jedes Malware File lediglich die API Calls in einem Dokument zu haben und nicht die ganzen weiteren Informationen wie Status, Arguments etc. Ich denke, dass ein mögliches Vorgehen so wäre: Mittels einer Schleife über die Logdateien iterieren und nur die Zeilen behalten, in denen "api:" steht. Jedoch sollen nur die API Calls selber behalten werden (nicht die ganze Zeile), also in diesem Block wäre das: NtCreateFile. Eine weitere Möglichkeit, die ich mir bezüglich der Umsetzung vorstellen könnte, wäre es ein Dictionary mit allen API Calls zu haben und dann dieses auf die Logdateien so anzuwenden, dass nur noch Wörter, die in dem Dictionary enthalten sind, behalten werden.
Ich hoffe mein Problem ist verständlich und ihr könnt mir bezüglich der Umsetzung mittels Python (bin leider noch nicht so erfahren) helfen bzw. den ein oder anderen Tipp geben.
Besten Dank im Voraus!
ich schreibe hier rein, da ich im Rahmen meiner Forschung zum Thema Malware-Analyse aktuell nicht weiterkomme und zu meinem Problem weder im Internet noch hier im Forum etwas fand. Kurz zusammengefasst, möchte ich eine Malware-Klassifizierung mittels verschiedener Machine Learning Klassifikatoren vornehmen. Die Klassifiikation soll auf N-Grams der API Call Sequenz basieren. Nachdem ich in einem ersten Schritt die Malware habe ausführen können, habe ich nun Logdateien, die aus tausenden solcher Blöcke bestehen:
"category": "file",
"status": 1,
"stacktrace": [],
"api": "NtCreateFile",
"return_value": 0,
"arguments": {
"create_disposition": 1,
"file_handle": "0x00000080",
"filepath": "C:\\Users\\Administrator\\AppData\\Local\\Temp\\vbc.exe",
"desired_access": "0x80100080",
"file_attributes": 0,
"filepath_r": "\\??\\C:\\Users\\Administrator\\AppData\\Local\\Temp\\vbc.exe",
"create_options": 100,
"status_info": 1,
"share_access": 1
Ziel ist nun, für jedes Malware File lediglich die API Calls in einem Dokument zu haben und nicht die ganzen weiteren Informationen wie Status, Arguments etc. Ich denke, dass ein mögliches Vorgehen so wäre: Mittels einer Schleife über die Logdateien iterieren und nur die Zeilen behalten, in denen "api:" steht. Jedoch sollen nur die API Calls selber behalten werden (nicht die ganze Zeile), also in diesem Block wäre das: NtCreateFile. Eine weitere Möglichkeit, die ich mir bezüglich der Umsetzung vorstellen könnte, wäre es ein Dictionary mit allen API Calls zu haben und dann dieses auf die Logdateien so anzuwenden, dass nur noch Wörter, die in dem Dictionary enthalten sind, behalten werden.
Ich hoffe mein Problem ist verständlich und ihr könnt mir bezüglich der Umsetzung mittels Python (bin leider noch nicht so erfahren) helfen bzw. den ein oder anderen Tipp geben.
Besten Dank im Voraus!