logo

Suletuxe.de
Linux - Nutzer
helfen
Linux - Nutzern

Willkommen, Gast. Bitte Login oder Registrieren.
02. Mai 2024, 07:56:27
Übersicht Hilfe Suche Login Registrieren

Amateurfunk Sulingen
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe  |  allgemeine Kategorie  |  Tutorials  |  Thema: Eigene Signaturen für clamav schreiben « zurück vorwärts »
Seiten: [1] nach unten Drucken
   Autor  Thema: Eigene Signaturen für clamav schreiben  (Gelesen 228 mal)
Sebastian
Sr. Member
****

Offline

Einträge: 377





Profil anzeigen
Eigene Signaturen für clamav schreiben
« am: 14. April 2024, 15:54:33 »

Einleitung

Hallo Suletuxe,

Erst ein einmal vorweg, ich selbst bin immer noch in der Lernphase Signaturen für Malware für die clamav Engine zu schreiben. Dennoch möchte ich für euch meine Erfahrungen hier festhalten. Vielleicht kann der ein oder andere davon auch etwas Lernen.

Zudem kann man auch gut clamav verwenden um einen bestimmten Inhalt zu finden. Es muss ja nicht immer was Gefährliches sein. The sky is the limit

Standard Signatur Verzeichnis:

/var/lib/clamav

Hash-based Signatures

https://docs.clamav.net/manual/Signatures/HashSignatures.html

Die einfachste Art eine Signatur für clamav zu erstellen ist es den Dateiinhalt Hash von einer Datei zu verwenden. Diese erzeugt die wenigsten False/Positives ist aber auch am striktesten. Mit anderen Worten die kleinste Veränderung der Datei sorgt dafür das die Malware nicht mehr gefunden wird.

clamav unterstützt dabei 3 verschiedene Hash Algorithmen: md5, sha1, sha256

um die Hash Signatur für eine Datei zu erzeugen, können wir das sigtool Programm verwenden, das clamav mit beiliegt

Code:

sigtool --md5 test.exe > test.hdb

Dies rezeugt eine hdb (Hash Data Base) File Signature mit folgendem Inhalt:

Code:

48c4533230e1ae1c118c741c0db19dfb:17387:test.exe

Die Werte werden mit einem : getrennt.

Wert 1 = Hashwert
Wert 2 = Dateigröße in Bytes
Wert 3 = Dateiname

Der Dateiname kann nach Belieben geändert werden. Diese Informationen wird später bei Fund in der Ausgabe angegeben. Hier könnt ihr euch also einen Namen ausdenken, der euch gefehlt.

Signatur Testen:

Am schnellsten könnt ihr die Signatur testen ob diese Funktioniert, indem ihr die Option -d verwendet von clamscan

Code:

clamscan -d test.hdb test.exe

Wenn eure Signatur funktioniert, könnt ihr diese in euer Signatur Verzeichnis kopieren.

Hinweis:

Ihr solltet Hash-Based Signaturen nicht für Textdateien verwenden. Clamav führt für Text Dateien eine Normalisierung durch. Das heißt entfernt vor den eigentlichen Scan überflüssige Leerzeichen/Steuerzeichen, konvertiert alle ASCI Zeichen zu Kleinbuchstaben etc. dadurch würde sich der Hashwert ändern und eure Signatur funktioniert dadurch nicht. Wenn ihr dies trotzdem verwenden wollt, so müsst ihr den Hashwert aus der normalisierten Datei verwenden. Dafür müsst ihr clamav mitteilen, dass ihr die tmp Dateien behalten möchtet. Wie das geht, schaut bitte in der Dokumentation nach

Content-based Signaturen

https://docs.clamav.net/manual/Signatures/BodySignatureFormat.html

Möchtet ihr clamav verwenden um einen bestimmten String oder Inhalt in einer Datei zu finden, so könnt ihr das mit Inhaltsbasierten Signaturen bewerkstelligen. Diese werden als *.ndb Dateien gespeichert.

Beispiel:

Wir möchten folgende Zeichenkette in Dateien suchen: "Finde mich"

Zuerst werden wir die Zeichenkette als Hexwert mithilfe von sigtool konvertieren:

Code:

❯ echo -n 'Finde mich' | sigtool --hex-dump
46696e6465206d696368


Diesen Hexwert können wir nutzten, um eine Signatur daraus zu erstellen:

Code:

vi mysignature.ndb


Code:

Malware_name:0:*:46696e6465206d696368

Auch hier wird die Signatur, wieder in mehre Werte unterteilt, die durch ein : getrennt werden.

Wert 1 = Beliebiger Name für den Fund
Wert 2 = Eine Nummer die den Dateityp beschreibt die clamav untersuchen soll (Dateiliste, In unseren Beispiel wird jeder Dateityp untersucht)
Wert 3 = ist ein Offset bzw. ein Offset Berreich an welcher stelle in der Datei nach der Zeichenkette gesucht werden soll. (In userem Beispiel ist der * ein Wildcard der für den Kompletten Dateiinhalt steht)
Wert 4 = Unsere Zeichenkette als Hexwert

Damit ist unsere Siganture auch schon fertig.

Hinweis:

Erinnert euch daran das clamav Text Dateien vor dem scan normalisiert. Das bedeutet, wenn unsere Zeichenkette 'Finde mich' in einer Text Datei drin steckt, wird clamav diese nicht finden, da wir den Hexwert nicht für die Zeichenkette "finde mich" berechnet haben. Man achte auf das kleine f

Wir können dafür einfach die Zeile verdoppen und den Hexwert der Zeichenkette kleingeschrieben auch noch mit einfügen. Mithilfe von Logical Signaturen geht das auch noch besser bei der man unteranderen die groß und Kleinschreibung Unterscheidung abschalten kann. Dazu aber ein ander mal mehr.

Testen können wir unsere Signatur dann wieder so:

Code:

clamscan -d mysignature.ndb datei_mit_der_zeichenkette_als_inhalt


Damit könnt ihr nun Alle Unterstützen Dateiformate auf diese Zeichenkette untersuchen. Also auch zip, odt, doc etc. überall wo diese Zeichenkette gefunden wird, wird diese euch gemeldet. Selbst wenn ihr solche Dinge macht und z.b. einen Bild eure Zeichenkette anfügt, würde dies detektiert werden. 

Somit könntet ihr euch auch einem einfachen Schimpfwort filter bauen 

LG
Sebastian
« Letzte Änderung: 15. April 2024, 17:25:28 von Sebastian » Gespeichert

Sebastian
Sr. Member
****

Offline

Einträge: 377





Profil anzeigen
Re:Eigene Signaturen für clamav schreiben
« Antwort #1 am: 15. April 2024, 18:28:06 »

Logische Signaturen:

https://docs.clamav.net/manual/Signatures/LogicalSignatures.html

Eine Logische clamav Signatur ist folgendermaßen aufgebaut:

Code:

SignatureName;Zielbeschreibungblock;LogischerAusdruck;Subsig0;Subsig1;Subsig2;...

Hierbei werden die einzelnen Werte mithilfe eines ; getrennt.

SignatureName = Ist selbstbeschreibend, Hier ein Namen eurer Wahl
Zielbeschreibungblock = Gibt die verwendete Clamav Engine sowie die zu untersuchende Dateitypen an (Details in den docs)
LogischerAusdruck = In diesem Bereich werden die Bedingungen niedergeschrieben wie, die Sub Signaturen behandelt werden müssen um einen Match (Fund) zu ergeben.
Subsig0...64 = Es folgen die Hex Signaturen der einzelnen Zeichenketten.

Um unsere Inhaltsbasierte Signatur aus dem vorherigen Beispiel zu einer logischen Signatur umzubauen, und damit auch die Möglichkeit bietet Großkleinschreibung zu ignorieren, gehen wir wie folgt vor:

Vorherige ndb Signatur:

Code:

Malware_name:0:*:46696e6465206d696368

Umgeschrieben zu einer Logischen Signatur (ldb)

Code:

Malware_name;Engine:81-255,Target:0;0;46696e6465206d696368::i

Malware_name
Ausgabe Name bei einem Fund

Engine:81-255,Target:0

Die zu verwendene Clamav Engine, und der zu untersuchende Dateityp (0, Alle Typen) (Die Werte werden durch , getrennt, weitere Informationen in den docs)

0

Hier wurde der logische Ausdruck mit einer einfachen 0 gekürzt, so das einfach nach den Inhalt der ersten Zeichenkette ("Finde mich") gesucht wird, ohne weitere Logik.

46696e6465206d696368

Unsere Zeichenkette "Finde mich" als Hex

::i

Der Kleinbuchstabe i aktiviert das clamav case-insensitive arbeitet, also das Groß- und Kleinschreibung deaktiviert wird. Dies lösst unser Problem auf einfache weise, dass unsere Zeichenkette "Finde mich" in Normalisieren Dateien wie Text Dateien nicht gefunden wird. Da durch die Normalisierung alle Zeichen in der Zeichenkette "finde mich" kleingeschrieben werden.

Die zwei :: dienen hierbei als Trenner zum letzten Hex wert einer Zeichenkette. Dies ist so ähnlich wie bei einem regulären Ausdruck, womit der Engine zum Schluss mitgeteilt wird, welche zusätzlichen Funktionen diese aktivieren soll.

Prüfen ob die Signature funktioniert kann man dann wieder am einfachsten mit:

Code:

clamscan -d mysignature.ldb datei_mit_der_zeichenkette_als_inhalt

Damit würde die Zeichenkette auch in Containerformaten wie zip, odt, doc etc. gefunden werden, also alle die clamav unterstützt.

Dies ist natürlich nicht die beste Signatur, die man schreiben kann, da sie so gut wie keine Logik enthält und somit viele False/Positives erzeugen würde. Dies sollte nur veranschaulichen, wie mächtig clamav sein kann um Dateiinhalte (Auch in Container Formate) aufzuspüren. Man kann seiner Signatur natürlich noch um einiges mehr Logik hinzufügen. Diese entnimmt bitte der Dokumentation, wenn das noch tiefgehender interessiert.

Später werde ich euch dann zeigen, wie Dateien anhand eines Bildes (auch in leicht abgewandelter Form) mithilfe eines Rolling Hashes Verfahren mit clamav detektiert werden kann.

LG
Sebastian
« Letzte Änderung: 15. April 2024, 18:29:34 von Sebastian » Gespeichert

Seiten: [1] nach oben Drucken 
Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe  |  allgemeine Kategorie  |  Tutorials  |  Thema: Eigene Signaturen für clamav schreiben « zurück vorwärts »
Gehe zu: 


Login mit Username, Passwort und Session Länge

 Es wird die Verwendung "Blink"-basierter Browser und mindestens 1024x768 Pixel Bildschirmauflösung
für die beste Darstellung empfohlen
 
freie Software für freie Menschen!
Powered by MySQL Powered by PHP Diskussions- und Newsboard der Linux Interessen Gruppe Suletuxe | Powered by YaBB SE
© 2001-2004, YaBB SE Dev Team. All Rights Reserved.
- modified by Andreas Richter (DF8OE)
Valid XHTML 1.0! Valid CSS!