AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

InnoSetup und Trojaner-Heuristiken

Ein Thema von Gausi · begonnen am 7. Mai 2020 · letzter Beitrag vom 8. Mai 2020
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#1

AW: InnoSetup und Trojaner-Heuristiken

  Alt 7. Mai 2020, 12:07
Heuristik heißt bei Virenscanner: Wir suchen nach 'ner Ähnlichkeit.

Diese Ähnlichkeit muss Grenzen haben, denn ansonsten wäre alles ähnlich.

Wie genau diese "Ähnlichkeitesgrenze" definiert ist, weiß wohl nur der jeweilige "Ähnlichkeitenfindenentwickler". Sprich: Das ist von außen nicht durchschaubar.

Aber auf Byteebene kann diese Grenze nur bei einem Byte Unterschied liegen. Entweder etwas passt noch in die Heuristik oder eben nicht.

Bei alledem darf man nicht vergessen:

Wenn heute eine Datei problemlos durch alle Virenscanner als ok durchgeht, kann morgen schon die gleiche Datei in absolut unveränderter Form nicht mehr durchgehen, einfach, weil in der Heuristik was verändert wurde und nun irgendwas als Treffer interpretiert wird, was gestern noch kein Treffer war.

Man muss eigentlich immer damit rechnen, dass ein Virenscanner von heute auf morgen bei einer bestimmten Datei zuschlägt oder eben auch nicht mehr zuschlägt.

Das ist ein bisserl wie beim Münzwurf: Kopf oder Zahl.

Hatte mal so ein Problem bei einem Konsolenprogramm, dass einfach nur im Batchbetrieb Dateien mit OEM-Zeichensatz in ANSI-Zeichensatz konvertieren sollte.

Irgendwann war die Exe plötzlich virenverseucht (auch wenn man sie mit Delphi neu kompilierte). Ein paar Tage später war sie es dann nicht mehr, dazwischen lagen nur ein paar Updates der Signaturdateien des Virenscanners. Andere Virenscanner befanden die Exe die ganze Zeit über als "völlig unauffällig".
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.338 Beiträge
 
Delphi 12 Athens
 
#2

AW: InnoSetup und Trojaner-Heuristiken

  Alt 7. Mai 2020, 12:40
Wenn sich die Länge eines Strings in der EXE verändert, dann verschieben dich auch andere nachfolgende Dinge und Referenzen darauf müssen dann ebenfalls angepasst werden usw.


Am "Einfachsten" ist es ja immernoch dem betreffenen Antivierenhersteller seinen False-Positive zu melden und die Viren-Signatur bzw. die Heuristik dementsprechend verbessern zu lassen, anstatt selbst so lange zumzufummeln, bis "aktuell" bei einem selbst das Problem "weg" ist.


Auf Entwicklungsrechnern macht es sich auch nicht schlecht, wenn man die Virensoftware nicht alles gleich löschen lässt, sondern nur "sperren und melden" aktiviert, um weniger Arbeit zu haben, mit andauernd verschwindenen Dateien, ohne dass man vom Virenprogramm das "direkt" gesagt bekommt. (sondern es erst später zufällig im Log entdeckt)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
901 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: InnoSetup und Trojaner-Heuristiken

  Alt 7. Mai 2020, 13:03
Wenn sich die Länge eines Strings in der EXE verändert, dann verschieben dich auch andere nachfolgende Dinge und Referenzen darauf müssen dann ebenfalls angepasst werden usw.
Das ist bei den Inno-Setups und den definierbaren Strings für AppPublisher etc. anscheinend anders. Die Strings haben da eine fixe Länge und werden ggf. mit Leerzeichen aufgefüllt. Das war ja auch der Grund, weswegen ich mir die beiden Dateien näher angeschaut habe. Die mit dem längeren String ist nämlich 7 Bytes kleiner, wo man naiv 6 Bytes mehr erwarten würde.

Am "Einfachsten" ist es ja immernoch dem betreffenen Antivierenhersteller seinen False-Positive zu melden und die Viren-Signatur bzw. die Heuristik dementsprechend verbessern zu lassen, anstatt selbst so lange zumzufummeln, bis "aktuell" bei einem selbst das Problem "weg" ist.
Das habe ich ja probiert - geht nicht. Ich weiß auch, dass das keine sinnvolle Fehlerbeschreibung ist. Aber mehr liefert das Upload-Formular mir halt auch nicht. Deswegen habe ich ja überhaupt nur den anderen Weg probiert.

Aber gut, ich werde das dann wohl abhaken mit "kann man nix machen". Hätte ja sein können, dass sich jemand schon mal im Detail mit InnoSetup in diesem Sinne auseinandergesetzt hat, oder den Aufbau von solchen Installer-Binaries näher kennt - also z.B. was da im letzten Teil der exe zu finden ist.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#4

AW: InnoSetup und Trojaner-Heuristiken

  Alt 7. Mai 2020, 13:32
In der Setupdatei findest Du eine mehr oder weniger große Anzahl von
Code:
PADDINGXXPADDING
Dahinter folgt die Zeichenfolge zlb + hex 1A. Ab dort ist der gepackte Inhalt Deines Programmes und aller seiner Bestandteile zu finden.

Änderungen an Deinem Programm oder zugehöriger Dateien führen zwangsläufig zu einer Änderung dieses Bereiches.

Quelltexte: https://github.com/jrsoftware/issrc
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#5

AW: InnoSetup und Trojaner-Heuristiken

  Alt 7. Mai 2020, 23:03
Wenn sich die Länge eines Strings in der EXE verändert, dann verschieben dich auch andere nachfolgende Dinge und Referenzen darauf müssen dann ebenfalls angepasst werden usw.
Wobei bei Setupprogrammen meist ein Stub mit angehängten Daten (Overlay) zum Einsatz kommt. Will heißen die Unterschiede dürften sich meist aus der Kompression und Metadaten ergeben, sofern der Rest gleich ist.

Am "Einfachsten" ist es ja immernoch dem betreffenen Antivierenhersteller seinen False-Positive zu melden und die Viren-Signatur bzw. die Heuristik dementsprechend verbessern zu lassen, anstatt selbst so lange zumzufummeln, bis "aktuell" bei einem selbst das Problem "weg" ist.
Ich hoffe die Lektüre meiner obigen Ausführungen hat dabei geholfen den rosa Feenstaub von deiner Brille zu putzen

Also erstens ist es meistens nicht gerade wenig Aufwand es einem Hersteller zu melden, sofern man das entsprechende Formular findet (und dieses auch funktioniert und man dutzendfach CAPTCHAs gelöst hat oder daran gescheitert ist). Aber während dieser Zeit tickt bereits die Uhr. Erstens wird der AV-Hersteller dem du den Fehlalarm meldest nicht einfach die Erkennung rausnehmen, sondern das wird einem anderen Prozeß zugeführt und nur in Ausnahmefällen guckt da mal ein Mensch drauf. Und bis dahin kann auch schonmal ne Woche oder zwei vergehen. Ach ja, macht dein AV-Hersteller auf der Formularseite ein Versprechen, man würde sich bei erfolgter Nachanalyse zurückmelden? Nicht? Tscha ... shit happens.

Und in dem jeweiligen Prozeß wird wahrscheinlich dein Programm nicht nur den Analysewerkzeugen rund um VT zugeführt, aber auch. Und wenn derweil andere AV-Hersteller schon bei deinem Hersteller die Erkennung - pardon, den Fehlalarm - "abgeguckt" haben, haste schwuppdiwupp nen Teufelskreis. Hersteller A guckt bei B ab und C wiederum bei A und B. Und jetzt kommst du "Würstchen" und willst denen erzählen deine Software sei harmlos?! Und jetzt kommst du "Würstchen" und willst denen erzählen deine Software sei harmlos?! Das spielst du jetzt mit fünf, sechs dutzend AV-Herstellern durch ...

Ich hab das selber mit WinDirStat durch. Und zwar in zwei Richtungen. Einmal wollte ich eine trojanisierte Variante in Erkennung aufnehmen lassen. Das ging recht flott, auch da ich durch unser Virenlabor halt Zugang zu anderen Kanälen hatte als der Endanwender oder betroffene Softwareentwickler. Ein anderes Mal wurde leider fälschlich ein harmloses Kompilat erkannt.

Ach ja, es gibt natürlich Premiumdienste wie diesen hier oder diesen hier, mit denen du mittelbar jene bezahlst, die für die Fehlalarme verantwortlich sind, aber nicht zur Verantwortung gezogen werden.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)

Geändert von Assarbad ( 7. Mai 2020 um 23:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#6

AW: InnoSetup und Trojaner-Heuristiken

  Alt 7. Mai 2020, 22:32
Heuristik heißt bei Virenscanner: Wir suchen nach 'ner Ähnlichkeit.
Nee, das bedeutet wir such(t)en nach Indikatoren und ab einer bestimmten Schwelle schlagen wir Alarm, falls zu viele Indikatoren bedenkliche Werte zeigen.

Sprich: Das ist von außen nicht durchschaubar.
Es ist bedingt durchschaubar, klar. Aber es ist jetzt auch nicht wirklich Zauberwerk ... vieles kann man sich auch allein denken. Beispiele:
  • Welcher Compiler wurde benutzte (effektiv das was PEiD macht, AV-Hersteller benutzen bspw. Yara)
  • Gibt es eine Signatur?
  • Ist die Signatur gültig?
  • Vertrauen WIR (als der AV-Hersteller) der Signatur?
  • Welche Importe hat die Datei und aus welchen DLLs? (bspw. UNC-Pfade? ... böse!)
  • Keine oder wenige Importe? (Laufzeitpacker/Protector oder der Versuch sich einer Analyse/Erkennung zu entziehen)
  • Wie ist die Entropie der Datei (Laufzeitentpacker oder nicht ...)?
  • Gibt es verdächtige Strings? (ja, das ist exakt das Beispiel von gausi!)
  • Wird auf Debugsymbole verwiesen? Deren Pfade können verräterisch sein, siehe vorheriger Punkt ...
  • Wie verhält sich die Datei beim emulieren innerhalb der Engine? (Jupp, bei uns steckte da ein echter Emulator drin, denn nur so konnte man bei Laufzeitentpackern und "Schutz"-Programmen ala Themida reingucken)

Wenn heute eine Datei problemlos durch alle Virenscanner als ok durchgeht, kann morgen schon die gleiche Datei in absolut unveränderter Form nicht mehr durchgehen, einfach, weil in der Heuristik was verändert wurde und nun irgendwas als Treffer interpretiert wird, was gestern noch kein Treffer war.
Sehr richtig!

Man muss eigentlich immer damit rechnen, dass ein Virenscanner von heute auf morgen bei einer bestimmten Datei zuschlägt oder eben auch nicht mehr zuschlägt.
Letzteres ist aber deutlich unwahrscheinlicher.

Erinnert sich noch jemand? Das war clever, aber jeder in der Industrie wußte, wie's läuft. Manuell war schon vor Jahren Pumpe. Manuelle Analysen von interessanter Malware hat man sich allenfalls noch als PR gegönnt und weil man so der Konkurrenz ne Nase drehen konnte.

Heute läuft vieles über Sandkästen. Gibt's sogar als FLOSS. Einige haben eigene Technologie zu dem Thema, meine ehemalige Firma hat das verschlafen. Bzw. ich weiß mittlerweile daß ein Konkurrent schneller war (der auch bei mir anfragte ob ich nicht Interesse an einem Job hätte). Schon auf der VB2013 war ein richtungsweisendes Paper vorgestellt worden. Diese Erkenntnisse hätte man nutzen und ausbauen können. Stattdessen wurde in dieser Richtung nichts getan und nun lizensiert man es halt von Dritten. Dumm gelaufen.

Eigentlich hatten wir auch sowas wie einen Sandkasten, nämlich die interne Version unseres Befehlszeilenscanners. Der hat jede Menge Extrainfos ausgespuckt, welche dann wiederum weiterverarbeitet werden konnten.

Einerlei, was passiert wenn du eine Datei bei VT hochlädst, ist daß die durch die ganzen AV-Engines durchgejagt wird und auch nochmal in mindestens einer Sandbox läuft. Was anderes machen auch die AV-Hersteller nicht. Nur stark parallelisiert und automatisiert. Da wird dann geclustert und versucht neue Methoden zu finden wie man zu Clustern kommen kann und das in Heuristiken abbilden kann. Da gibt es die wildesten Methoden.

Die haben überall ihre Honigtöpfe aufgestellt oder sehen bspw. anhand der URLs in Email-Kampagnen (Antispam und Antimalware ist nämlich in dieser Hinsicht supi kombinierbar) was gerade abgeht. So werden auch Malwarekampagnen zeitnah aufgedeckt. Aber gegen Spearphishing hilft das natürlich auch nix.

Irgendwann war die Exe plötzlich virenverseucht (auch wenn man sie mit Delphi neu kompilierte). Ein paar Tage später war sie es dann nicht mehr, dazwischen lagen nur ein paar Updates der Signaturdateien des Virenscanners. Andere Virenscanner befanden die Exe die ganze Zeit über als "völlig unauffällig".
Wobei man dazusagen sollte, daß es in der Tat schon Malware hab, welche die vorkompilierten Objektdateien auf Rechnern mit Delphi (usw.) befiehl und somit die Programme frisch ab Werk verseucht waren. Aber deine Geschichte klingt schon nach Fehlalarm.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#7

AW: InnoSetup und Trojaner-Heuristiken

  Alt 8. Mai 2020, 09:04
Heuristik heißt bei Virenscanner: Wir suchen nach 'ner Ähnlichkeit.
Nee, das bedeutet wir such(t)en nach Indikatoren und ab einer bestimmten Schwelle schlagen wir Alarm, falls zu viele Indikatoren bedenkliche Werte zeigen.
Naja, und reicht die Menge der Indikatoren, dann böse
Für mich ist das eine Ähnlichkeit, vielleicht auf 'ner anderen Ebene, als bei Meier und Maier, aber es gibt halt eine bestimmte Menge an (algorithmischen) Übereinstimmungen.
Sprich: Das ist von außen nicht durchschaubar.
Es ist bedingt durchschaubar, klar. Aber es ist jetzt auch nicht wirklich Zauberwerk ... vieles kann man sich auch allein denken. Beispiele:
  • Welcher Compiler wurde benutzte (effektiv das was PEiD macht, AV-Hersteller benutzen bspw. Yara)
  • Gibt es eine Signatur?
  • Ist die Signatur gültig?
  • Vertrauen WIR (als der AV-Hersteller) der Signatur?
  • Welche Importe hat die Datei und aus welchen DLLs? (bspw. UNC-Pfade? ... böse!)
  • Keine oder wenige Importe? (Laufzeitpacker/Protector oder der Versuch sich einer Analyse/Erkennung zu entziehen)
  • Wie ist die Entropie der Datei (Laufzeitentpacker oder nicht ...)?
  • Gibt es verdächtige Strings? (ja, das ist exakt das Beispiel von gausi!)
  • Wird auf Debugsymbole verwiesen? Deren Pfade können verräterisch sein, siehe vorheriger Punkt ...
  • Wie verhält sich die Datei beim emulieren innerhalb der Engine? (Jupp, bei uns steckte da ein echter Emulator drin, denn nur so konnte man bei Laufzeitentpackern und "Schutz"-Programmen ala Themida reingucken)
Dafür brauch' ich aber deutlich mehr "NauHau", als ich so vom Normalverbraucher (der z. B. Gausis Programm nutzen möchte) erwarten kann. Und der kriegt ggfls. die Virenscannermeldung um die Ohren gehauen und wird bei (fast) allen(?) Punkten, die Du aufgeführt hast, höchsten mit 'nem "hä" antworten

Nichtsdestotrotz:

Deine Antworten sind hoch informativ und gegeben auch uns Laien einen kleinen Einblick in die Materie.

Muchas gracias!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz