Erkennung Von Malware



  • Hallo,
    ich habe mal testweise 2 Programme geschrieben:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        char filename[256];
        char ch = 0;
        int i = 0;
        FILE *fpr, *fpw;
    
        printf("Filename:");
        scanf("%255s", filename);
        if ((fpr = fopen(filename, "rb")) == NULL)
        {
            fprintf(stderr, "Error, file does not exist!");
            getchar();
            exit(1);
        }
        if ((fpw = fopen("main.h", "w")) == NULL)
        {
            fprintf(stderr, "Error, file could not be created!");
            getchar();
            exit(1);
        }
    
        fprintf(fpw, "#ifndef main_H\n"
                     "#define main_H\n"
                     "\n"
                     "long const binary[] =\n"
                     "{\n");
        while (fread(&ch, sizeof(char), 1, fpr))
        {
            fprintf(fpw, "0x%x,", ch);
            i++;
            if (i > 9)
            {
                fprintf(fpw, "\n");
                i = 0;
            }
        }
    
        fprintf(fpw, "\n};\n"
                     "#endif\n");
        fclose(fpw);
        fclose(fpr);
        return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    #include "main.h"
    
    int main(void)
    {
        unsigned i;
        FILE *fp;
    
        if ((fp = fopen("vr.exe", "wb")) == NULL)
        {
            fprintf(stderr, "Error, file could not be opened!");
            getchar();
            exit(1);
        }
    
        for (i = 0; i < (sizeof(binary) / sizeof(binary[0])); i++)
        {
            fwrite(&binary[i], sizeof(char), 1, fp);
        }
        fclose(fp);
        /* starte vr.exe */
        return 0;
    }
    

    Das erste ließt (in meinem Fall) eine .exe Datei ein und speichert sie in einem Array.
    Das zweite erstellt aus diesem Array während der Laufzeit wieder das Programm.
    Mich wundert, dass VirusTotal beim zweiten nur eine Erkennungsrate von 1 / 55 zeigt, sollte solch ein großes Array nicht eigentlich auffallen?


  • Mod

    Was soll da dran Malware sein?



  • SeppJ schrieb:

    Was soll da dran Malware sein?

    Das Programm, das im Array gespeichert wird.


  • Mod

    wechlol.vb schrieb:

    SeppJ schrieb:

    Was soll da dran Malware sein?

    Das Programm, das im Array gespeichert wird.

    Das gelesene Programm ist ein erkanntes Malwareprogramm?



  • SeppJ schrieb:

    wechlol.vb schrieb:

    SeppJ schrieb:

    Was soll da dran Malware sein?

    Das Programm, das im Array gespeichert wird.

    Das gelesene Programm ist ein erkanntes Malwareprogramm?

    Ja, ich habe es mit ein paar Programmen von malshare ausprobiert, jedesmal 1 / 55 Erkennungsrate.
    Bei den Viren selbst war diese viel höher.


  • Mod

    Der Virus liegt ja quasi verschlüsselt und nicht ausführbar in deinem Programm. Ist es so verwunderlich, dass den ein Signaturscanner dann nicht mehr findet? Würdest du einen char als Datentyp anstelle von long nehmen, würde es wahrscheinlich sogar funktionieren.



  • Es ist doch ein alter Hut, dass man eine Virus *.exe einfach (ein paar mal ) komprimiert und schon schlägt kein Virenscanner mehr an.

    Hab das mal bei Virustotal getestet. Vorher hatten fast alle Scanner den Virus erkannt -> komprimiert aber ausführbar -> Detektion Fehlanzeige



  • AlterHut schrieb:

    komprimiert aber ausführbar -> Detektion Fehlanzeige

    Was meinst du mit "komprimiert aber ausführbar" - .exe Packer ala UPX?


Log in to reply