10
votes

Antivirus détectant les fichiers C ++ compilés en tant que chevaux de Troie

J'avais installé un compilateur C ++ pour Windows avec MinGW. J'ai essayé de faire un programme simple:

#include <iostream>
using namespace std;

int main() {
   cout << "Hello World!";
   return 0;
}

Et l'a enregistré sous le nom try.cc Ensuite, j'ai ouvert cmd dans le dossier et g++ try.cc -o some.exe exécuté g++ try.cc -o some.exe . Il a généré some.exe mais mon antivirus (avast) l'a reconnu comme un malware. Je pensais que cela pouvait être un faux positif, mais cela disait spécifiquement que c'était un cheval de Troie.

J'ai supprimé le fichier du coffre à virus et l'ai téléchargé sur "https://www.virustotal.com/" Le résultat: https://i.stack.imgur.com/jC2oz.png

24 moteurs sur 72 l'ont détecté comme un malware et beaucoup d'entre eux comme un cheval de Troie.

Est-ce un faux positif? Pourquoi serait-il détecté comme un cheval de Troie? Si tel est le cas, comment éviter de recevoir cet avertissement chaque fois que je crée un nouveau programme?

Éditer:

Merci à tous pour l'aide, j'ai exécuté une analyse complète de mon ordinateur, avec 2 antivirus et tout semblait propre. J'ai également fait une analyse sur le dossier MinGW et rien.

Le problème continue d'apparaître à chaque fois que je crée un nouveau programme C ++. J'ai essayé de modifier le code et le nom mais l'AV a continué à le détecter comme un virus. Ce qui est drôle, c'est que changer le code a changé le type de virus signalé par l'av.

Je ne suis toujours pas sûr à 100% que le compilateur est propre, donc je ne sais pas si je dois l'ignorer et exécuter les programmes de toute façon. J'ai téléchargé MinGW à partir de "https://osdn.net/projects/mingw/releases/"

Si quelqu'un sait comment être complètement sûr que les exécutables créés ne sont pas des virus, seulement des faux positifs, je serais heureux qu'ils le partagent.

Modifier 2:

Il m'est venu à l'esprit que si le compilateur est infecté et qu'il ajoute du code, alors je pourrais peut-être le voir avec un décompilateur / désassembleur, lui donnant l'exécutable. J'ai téléchargé un décompilateur c ++ que j'ai trouvé ici "bonhomme de neige" et l'ai utilisé sur le fichier. Le problème est que le code est passé de 7 lignes dans l'exécutable d'origine à 5265 et est un peu difficile à comprendre. Si quelqu'un a une certaine expérience de l'ingénierie inverse, un lien vers le fichier d'origine se trouve dans les commentaires ci-dessous.


10 commentaires

À moins que votre chaîne d'outils n'ait été infectée pour la faire produire des chevaux de Troie, je ne m'en soucierais pas. Il se trouve que votre exe partage la même empreinte digitale que certains chevaux de Troie. Voyez si g++ -O3 -g0 try.cc -o some.exe fait une différence.


Cela ressemble à un vrai positif (plusieurs moteurs indépendants le détectent). Peut-être avez-vous téléchargé gratuitement un paquet douteux de mingw avec des logiciels malveillants supplémentaires inclus. Scannez votre ordinateur maintenant.


Comment avez-vous installé mingw exactement?


Avast n'est pas un produit utilisable sur une machine de développement.


De plus, les faux positifs ne sont pas inconnus, par exemple mingw-users.1079350.n2.nabble.com/.... En passant, exécutez certains exécutables non-mingw via le scanner en ligne et effectuez une analyse de votre ordinateur avec un scanner hors ligne gratuit car la compromission pourrait être sans rapport avec mingw.


Aussi, security.stackexchange.com/questions/229576/… .


Je comprends que vous êtes nouveau ici, mais c'est une bonne étiquette et vous aide à obtenir des réponses utiles pour surveiller votre question et répondre aux commentaires.


Pouvez-vous partager le .exe compilé?


@akop Euh, je l'ai téléchargé sur ce site, je ne sais pas combien de temps le lien fonctionnera: fileropper.com/some , dans le pire des cas, c'est un cheval de Troie, donc je suppose qu'à moins de l'ouvrir, vous êtes en sécurité.


C'est pourquoi Microsoft recommande de ne pas utiliser de chargeurs pour activer Windows. Utilisez toujours la licence numérique via les serveurs Microsoft.


3 Réponses :


4
votes

Cela pourrait être causé par deux choses

  1. C'est vraiment un cheval de Troie, vous avez téléchargé votre mingw à partir de certains endroits où son code a été modifié pour ajouter un virus à l'intérieur de chaque programme que vous créez. Ceci est fait pour presque tous les compilateurs commerciaux, toutes les versions "libres" (crackées) ont ce code à l'intérieur, chaque fois que vous compilez votre code, le virus est ajouté à votre exe.

  2. Le hachage de votre exe pour une raison quelconque correspond à un virus existant, vous pouvez le confirmer en modifiant un caractère dans votre code, par exemple "bonjour le monde!" à "bonjour le monde?" et voyez s'il est toujours considéré comme un virus, si oui, il y a de très fortes chances que votre compilateur ajoute des virus à vos programmes.


5 commentaires

Pouvez-vous citer des rapports d'exemples spécifiques pour de tels compilateurs compromis?


Les deux points sont difficiles à croire. Aviez-vous des références?


Le premier est si facile à créer, par exemple si votre virus est une fonction, au moment de la compilation, et en arrière-plan, vous renommez main en oldmain, et votre virus main appelle le main après son exécution. vous pouvez également exécuter deux threads (le programme principal et le virus), vous pouvez créer des bibliothèques personnalisées avec virus (ex: remplacez printf par callVirusCode, puis printf) ce ne sont que des exemples. Pour la seconde, la théorie est appelée "collision" (quand les hachages correspondent).


Pour 1: Oui, mais je n'ai jamais entendu parler de ce genre d'attaque. Je pense que ce type n'a pas vraiment de valeur. Est-ce seulement une supposition? Pour 2: Oui, mais plus de 24 collisions pour chaque programme respecté? Les Hash-Collisions sont très rares ...


Pour 1: «Vous» n'en avez jamais entendu parler ne veut pas dire qu'il n'existe pas. pour 2, cela dépend de la taille de hachage utilisée et du nombre de virus.



4
votes

Le problème a déjà été soulevé. Les programmes compilés avec mingw ont tendance à déclencher une alarme occasionnelle d'huile de serpent (c'est-à-dire un programme antivirus). C'est probablement parce que mingw est une chaîne d'outils populaire pour les auteurs de virus et que sa sortie correspond donc à des modèles génériques se produisant dans de vrais positifs. Cela est revenu à maintes reprises, également sur SE (par exemple https://security.stackexchange.com/questions/229576/program-compiled-with-mingw32-is-reported-as-infected ). [diatribe] À mon avis, c'est une véritable preuve d'incapacité pour les entreprises audiovisuelles, car ce serait facile à réparer et vous amène à vous demander si les fonctions essentielles de leurs programmes sont mieux mises en œuvre. [/ coup de gueule]

Votre cas est un peu suspect car le nombre de programmes AV déclenchés est si grand. Bien que je n'ai jamais entendu parler d'un mingw compromis et qu'une recherche rapide sur Google n'a pas changé cela, ce n'est pas impossible. La compromission des compilateurs est certainement une méthode efficace pour propager un virus; l'exemple le plus célèbre avec un niveau d'indirection supplémentaire est le hack Ken Thompson .

Il est également certainement possible que votre ordinateur soit infecté par un virus non-mingw qui s'insère simplement dans les nouveaux exécutables qu'il trouve sur le disque. Cela devrait être facile à découvrir par les moyens habituels. Un point de départ pourrait être de soumettre quelques autres nouveaux exécutables (non mingw) à l'examen en ligne; ils doivent déclencher les mêmes programmes audiovisuels.

Notez que même si j'ai une certaine expérience informatique générale, je n'ai aucune connaissance particulière de la sécurité informatique; prenez tout ce que je dis comme un point de départ pour vos propres recherches et actions.


0 commentaires

1
votes

Mise à jour:

C'était en fait une sorte de collision de hachage, le compilateur n'était pas infecté. J'ai changé la chaîne dans la fonction d'impression, comme suggéré, plusieurs fois, en ajoutant même des sauts de ligne, mais à chaque fois, mon antivirus l'a détecté comme un logiciel malveillant. J'ai également essayé de supprimer certaines lignes de code (les inclusions et l'impression) et cela l'a également détecté comme un malware.

Assez drôle, quand j'ai ajouté plus de lignes au code , l'AV a cessé de le reconnaître comme un virus. Vous vous demandez comment fonctionne la fonction de hachage utilisée et comment elle se rapporte au contenu réel des programmes.

Donc est résolu, et tout allait bien, juste un peu de négligence AV (ce qui, je suppose, a ses raisons).


4 commentaires

Intéressant et bon à savoir. Mais êtes-vous sûr que c'est une collision de hachage ? Les hachages sont sensibles aux plus petites variations du code. Je pense que c'est une autre forme de reconnaissance de formes. Par exemple, il peut y avoir l'idée que les programmes utiles ne peuvent pas être plus petits qu'une certaine taille minimale, ce qui rend les programmes audiovisuels biaisés contre les petits programmes.


Oui, vous avez peut-être raison, mais rappelez-vous que la suppression de lignes de code a changé le type de virus détecté, il ne peut donc pas s'agir uniquement de la taille de l'exécutable. Je me demandais à quel point il pouvait être difficile d'ignorer les chaînes du programme après la compilation, avant de calculer la fonction de hachage. Cela pourrait expliquer pourquoi les changements dans l'impression n'ont pas eu d'effet (mais je suppose que cela pourrait potentiellement être exploité en insérant du code dans des chaînes), mais je ne suis pas sûr.


En cas de collision de hachage, il n'y aurait qu'un seul AV correspondant. Le risque de collision est très très faible. @Peter Reinstate Monica suppose que c'est beaucoup mieux.


Chaque fois que le code écrit en C ++ est compilé, MinGW y ajoute du code fixe. Ce code n'est qu'une petite partie de l'exécutable, mais à mesure que la taille de l'exécutable diminue, la proportion de code d'origine diminue également. Cela signifie que s'il existe un logiciel malveillant de petite taille qui utilise MinGW, alors que mon programme devient plus petit, le pourcentage de son code qui est identique au logiciel malveillant augmente. Si un antivirus applique une fonction de hachage à des sections du code (ce qui pourrait aider à détecter les virus polymorphes) puis vérifie les correspondances, la forte similitude pourrait provoquer un faux positif.