Anti "false-positive" Strategie mit PureBasic

  • Hallo zusammen,

    da AutoIt oft auch von "bösen" Menschen mißbraucht wird und die Erstellung einer [compilierten] exe-Datei immer bedingt, dass die autoit3.exe includiert wird als Wrapper des Scripts, ist die Viren Erkennungs-Signatur von autoit erstellten exe-Dateien immer im Fokus der Anti-Viren Software Hersteller. Da hat man es schon schwer, sein Werk so zu erstellen, dass es auch verbreitet werden kann ohne dass jeder Virenscanner Alarm schlägt.

    Ich stelle hier eine Möglichkeit vor dies möglichst zu umgehen und rege zum Mitmachen oder zur Diskussion an, um diese Methode zu verfeinern, verbessern, oder auch um diese als untauglich abzustrafen. ^^

    Der Clou hinter dieser Idee steckt darin, dass man sich einen individuellen PureBasic Loader erstellt, der dann mithilfe der autoit3.exe die selbst erstellt a3x-Datei startet. Notwendigerweise muss man dafür an Dritte die autoit3.exe, den speziell dafür compilierten PureBasic (Loader).exe und das compilierte a3x-Script mitgeben. Aufwendiger als eine einfache exe, aber dafür sorgloser für Anti-Viren Programme. ^^

    Voraussetzungen:
    - eine installierte Version von PureBasic (um den Loader zu compilieren)
    Install PureBasic (x86 version) from here: https://www.purebasic.com/german/download.php
    direct Download: https://www.purebasic.com/download/PureBasic_Demo.exe
    - mind. eine autoit3.exe (i.d.R. aber eine autoit Installation, da man ja die a3x Datei auch erstellen / encoden muss)
    Pfad kann in der "Create_Loader_for_a3x.pb" angepasst werden
    - das angehängte Script zur Erstellung des Loaders (Create_Loader_for_a3x.pb)
    - und natürlich eure a3x-Datei ^^

    Die Dateiendung eurer a3x-Datei kann dabei willkürlich gewählt werden.
    Ob die a3x heißt oder irgendwie anders ist autoit3.exe und dem Loader Script egal ;)

    Ablauf zur Erstellung:
    - Create_Loader_for_a3x.pb in PureBasic öffnen (Doppelklick)

    für diejenigen, die gerne Anpassungen vornehmen wollen:
    in der Datei folgende Parameter anpassen:
    Define.s PbIcon = [vollständiger Pfad zu einer ico-Datei wenn gewünscht, wenn leer, dann kein Icon]
    Define.s Autoit3 = [Pfad zur autoit3.exe]
    Define.i AutoCreateExe = Bool [0/1] 0 erstellt eine a3x-Dateiname.pb / 1 erstellt eine a3x-Dateiname.exe
    - F5 drücken
    - Zieldatei (eine compilierte a3x-Datei mit beliebiger Endung) auswählen

    wünsche fröhliches erstellen und verteilen eurer Werke.

    Fragen, Anregungen, Kritik und (Lob) gerne hier in diesem Thread :party:

    Danke an ISI360 und sein ISN Autoit Studio. Er hat die Grundlage für das Script geschaffen. :rock:

    Dateien

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • ACHTUNG :

    Meine AV-Software (BitDefender Total Security) hat beim Entpacken der .zip (genauer bei der ...\Test.exe ) eine Bedrohung festgestellt.

    Schnuffel will uns garantiert keine Viren unterschieben - könnten bitte andere von Euch dies trotzdem mal prüfen.

    Vorab würde ich vom Start der Test.exe abraten.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Ich bin bislang zwar ziemlich verschont gewesen aber das Problem mit den Virenscannern scheint ja wirklich verbreitet zu sein.
    Umso besser, dass sich jemand hierfür clevere Lösungen überlegt!

    Nun wollte ich das mal testen und habe mir das Testscript als normale AutoIt-exe in verschiedenen Ausprägungen kompiliert und mit der Variante von hier auf Virustotal verglichen.
    Das sind die Ergebnisse:

    TypVirenscanner angeschlagenLink
    Schnuffels PureBasic-Variante13 / 72>>Ergebnis<<
    AutoIt 3.3.16.1 x64 ohne UPX2 / 72>>Ergebnis<<
    AutoIt 3.3.16.1 x64 mit UPX7 / 72>>Ergebnis<<
    AutoIt 3.3.16.1 x86 ohne UPX14 / 72>>Ergebnis<<
    AutoIt 3.3.16.1 x86 mit UPX16 / 72>>Ergebnis<<

    Quantitativ scheint es also noch nicht den riesen Unterschied zu bringen.
    Qualitativ könnte es aber vielleicht etwas bringen, da außer BitDefender eher nur exotische Virenscanner anschlagen.

    Auch kann man vielleicht mitnehmen: Wenn`s geht dann fährt man mit der x64-Variante immer besser.

  • feine Sache, dass ihr euch beteiligt.

    Nur so kann man ein Thema von vielen Seiten beleuchten.

    Der Test von ArpirinJunkie zeigt ja eher ein ernüchterndes Bild über den PureBasic Loader.
    Ich hätte als Alternative noch die Idee aus einem Powershell Script, dass die autoit3.exe aufruft eine exe zu bauen.
    siehe hier: GitHub

    Ich bau da mal was und werde hier weiter berichten.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Der Test von AspirinJunkie zeigt ja eher ein ernüchterndes Bild über den PureBasic Loader.

    'false positives' sind leider kein alleiniges Problem von AutoIt. Auch mit anderen Programmiersprachen erzeugte .exe's fallen den Virenscannern gerne mal zum Opfer - wenn auch nicht so häufig. Grund dafür ist vermutlich der Umstand, dass AutoIt wegen der einfachen Bedienung seit vielen Jahren von Skriptkiddies (für Bots, Spieleautomatisierungen etc) verwendet wird. Zudem steht hinter AutoIt kein Großkonzern der die AV-Hersteller mal auf den Topf setzen würde.

    Ich bau da mal was und werde hier weiter berichten

    Eine weitere Alternative, die ggf. einen Blick wert wäre, ist das Projekt :

    Au3toCmd -- Avoid false virus positives. (Version: 2022.09.01)
    Au3toCmd --- Avoid false virus positives Since many virus scanners sometimes prevent a "compiled autoit EXE" from being executed as "false positive", the…
    www.autoitscript.com

    des Users Exit (aus dem EN-Forum). Leider ist er seit über 2 Jahren nicht mehr aktiv.

    Ich hätte als Alternative noch die Idee aus einem Powershell Script, dass die autoit3.exe aufruft eine exe zu bauen.

    Das wäre sicher mal einen Versuch wert.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Also der Powershell-Exe Loader wurde auch als Virus angezeigt, aber von so unbekannten VirenScannern, sodass man die wohl vernachlässigen kann.

    Ergebnis:

    TypVirenscanner angeschlagenLink
    Schnuffels Powershell-Variante12 / 72>>Ergebnis<<

    Würde für mich jetzt erstmal bedeuten, dass entweder mit einer 64-bit Compilation ohne UPX oder eben mit PowerShell-Exe als Loader die wenigsten false-positive zu erwarten sind.

    Wen es interessiert hier ein einfacher Einzeiler in PowerShell um diesen als Loader der a3x zu verwenden.
    einfach mit dem obigen Tool in eine exe wandeln:

    AutoIt
    Start "Pfad zur \AutoIt3.exe" -ArgumentList ('"Pfad zur a3x\Test.a3x" "Test 1.Parameter"')

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Irgendwie gefällt mir das alles nicht.

    Ich denke ich werde als nächstes versuchen das so rudimentär wie möglich zu machen.
    Es ist doch nichts weiter nötig, als
    - die autoit3.exe in einem Ordner nach Wahl, je nach Installationszweck und Art der Verteilung
    - eine Registrierung für die a3x Datei (kann sogar eine andere sein z.B. .ea3x oder .lalala Das sind 5 Zeilen Reg-Code ....

    Danach kann man diese Datei einfach doppelklicken und das Ding startet. Parameterübergabe auch kein Problem.

    Ich spiel da mal an der Thematik rum ;)

    Für autoit3 exe Dateien, die mobil verteilt und genutzt werden, ist das sicher keine Lösung.
    Dafür wird es keine wirkliche Lösung geben.
    Von daher beschränke ich meine Betrachtung auf kontrollierbare Installationen mit verfügbaren Adminrechten.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • Meine Frage mag ja blöd erscheinen, aber wenn ich.... kontrollierbare Installationen mit verfügbaren Adminrechten

    habe, warum füge ich die betroffene autoit.exe nicht einfach zu den Ausnahmeregeln des Virenscanners hinzu?

    LG


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • weil die Konfigurationshürde höher ist.

    Mein aktueller Ansatz wird eine Installationsroutine ( werde ich Jos vll. mal vorschlagen), die auf dem Zielrechner lediglich eine a3x Unterstützung installiert für 32- und 64-bit a3xDateien.

    Danach kann man jede a3x/a3x64 Datei wie eine exe auf dem Zielrechner starten. ( a3x64 ist eine von mir erfundene Dateitypenbezeichnung, um x86 und x64 trennen zu können.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.