Auteur Sujet: Proposition explication payload FUD  (Lu 17381 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne WK

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 188
  • +19/-1
Proposition explication payload FUD
« le: 30 novembre 2016 à 00:36:07 »
Salut tout le monde,

Comme certains le savent, je travaille depuis quelques temps sur les virus et l'évasion d'antivirus. J'ai ainsi créé un programmes qui "produit" des codes personnalisés en langage C qui une fois compilés sur une machine windows sont totalement indétectables. Plus précisément, le programme permet de:
            
            - sélectionner son payload et ses options (LHOST, LPORT,..)
         - il crée et ajoute un shellcode via msfvenom et le chiffre aléatoirement en gardant la clé de déchiffrage dans le trojan pour son exécution.
         - Toutes les variables déclarées dans le trojan sont des suites de 90-100 caractères aléatoires afin de neutraliser la détection par signature.
         - permet d'ajouter une "messagebox" lors de l'exécution du trojan afin de tromper l'utilisateur.
         - permet que le trojan s'exécute à chaque démarrage de l'ordinateur victime.
         - utilise des méthodes d'évasion d'antivirus pour assurer le FUD () et donne le code dans un fichier.c tout beau qu'il reste plus qu'a compiler.
         - permet de créer un listener automatiquement et d'exécuter un script meterpreter. (Ex: Script permettant de migrer le processus du payload sur le processus explorer.exe dès la réception de la charge)
         - BlaBlaBla.. Vous avez compris le concept
      
Comme je n'ai pas envie de laisser mon outil dans un placard, ni de balancer des trojans FUD comme un marchand de sable, je viens d'avoir une idée de "compromis". Comme pour moi le premier interêt de l'open-source est l'étude et le partage du savoir, est-ce que vous trouveriez intéressant que je montre le code des fonctions importantes du programme en expliquant leurs fonctionnements ainsi que leurs rôles? Faire une sorte d'open-source partiel en ne donnant pas le programme qui fait du FUD mais les parties intéressantes du programme ainsi que l'explication de leurs fonctionnement précis. Je pense que cela pourrait être intéressant sans donner à des scripts-kiddies des trojans FUD, ce dont je ne veux pas endosser la responsabilité.

Qu'en pensez-vous? Trouvez-vous que c'est une bonne idée et que ce serai utile?

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +19/-0
Re : Proposition explication payload FUD
« Réponse #1 le: 30 novembre 2016 à 11:17:18 »
c'est toujours plus instructif de faire comme sa a mon humble avis 8)

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +19/-0
Re : Proposition explication payload FUD
« Réponse #2 le: 10 décembre 2016 à 16:44:23 »
Coucou  8)


Ou en est le projet ? perso je m'amuse sur des truc similaires dans un autre contexte en ce moment mais tes explications sur ton payload serait les bienvenus aussi (on en apprends jamais assez).Le fait de ne pas livrer ton code comme un kinder surprise je peux tout a fait le comprendre, c'est ta vision des choses qui m'intéresse.Je regrette etre le seul qui s'est manifesté sur ce sujet pour le moment.Peut-etre que les gens ont cru que t'allais refourguer ton code direct et en voyant ton post ils ont renoncés car ils se sont dit qu'il allait falloir chercher et apprendre la prog, ça m'étonnerai pas  ;D

Bref  en espérant qu'il y est une suite a ce sujet  :)

@++

Hors ligne WK

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 188
  • +19/-1
Re : Proposition explication payload FUD
« Réponse #3 le: 13 décembre 2016 à 12:43:20 »
Excuse ma réponse tardive, j'avais vu en cours mais je ne m'en souviens que maintenant.
Finalement ça tombe bien parce que j'ai mes examens ainsi que le CCNA à preparer donc ça me fait du travail en moins. Si tu veux je peux te donner les sources :)

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +19/-0
Re : Proposition explication payload FUD
« Réponse #4 le: 13 décembre 2016 à 15:31:59 »
ça serait avec plaisir  8) ne donne qu'une partie de tes sources comme ça j'ai le temps d'assimiler et d'expérimenté la chose a ma manière histoire de bien comprendre le truc, c'est un domaine que je connais mal a vrai dire donc je suis assez curieux  :)

Hors ligne storm222

  • Membre Junior
  • *
  • Messages: 39
  • +1/-0
Re : Proposition explication payload FUD
« Réponse #5 le: 14 décembre 2016 à 22:42:25 »
Hello,

Sujet très intéressant et prometteur !
Je m'intéresse également aux méthodes utilisés par les antivirus pour détecter si un fichier est un virus ou non et aux méthodes d'évasion.

         - permet que le trojan s'exécute à chaque démarrage de l'ordinateur victime.
Pour faire ça, tu utilises la persistence de metasploit ou c'est quelque chose que tu as coder toi même en C ?

En tous cas très bonne idée, effectivement garde précieusement tes sources pour éviter que le 1er venu puisse créer un trojon FUD.
Bon courage  8)
« Modifié: 14 décembre 2016 à 22:44:18 par storm222 »

Hors ligne WK

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 188
  • +19/-1
Re : Re : Proposition explication payload FUD
« Réponse #6 le: 15 décembre 2016 à 01:00:28 »

         - permet que le trojan s'exécute à chaque démarrage de l'ordinateur victime.
Pour faire ça, tu utilises la persistence de metasploit ou c'est quelque chose que tu as coder toi même en C ?


En réalité il suffit de mettre un simple script batch dans le dossier "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup" qui exécute le virus que tu auras préalablement copié n'importe où dans le disque dur et renommé de manière innocente. Simple et indétectable. Mais ce qui est intéressant dans cette démarche est la programmation en elle-même. Pour faire cela tu dois manier des fichiers, lire, écrire, copier en faisant idéalement ton propre code qui lit un fichier en mode binaire (ton virus) et le réecrit autre part .. ( https://openclassrooms.com/courses/lecture-et-ecriture-de-fichiers-en-mode-binaire )

C'est donc la démarche niveau programmation qui est intéressante *****. Finalement le virus qu'on code n'a aucune utilité, ce qu'il nous apporte c'est plus d'expérience en programmation. Et ce genre de petit module tout con permet d'explorer certaines choses que l'on aurait jamais vu sinon.
Voici par exemple mon code permettant de copier un fichier grace à la lecture en mode binaire :

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
  char fichier[50],fichier2[50],a;
  FILE *lecture,*ecriture;

  // addresse des fichiers .exe
  printf("Addresse du fichier a copier : " );
  scanf("%s",fichier);
  printf("\nAddresse du fichier de destination : " );
  scanf("%s",fichier2);

  // ouverture en mode binaire 
  if(!(lecture = fopen(fichier,"rb" )))
    {
      printf("Ouverture de %s impossible.\n",fichier);
      return 1;
    }

  if(!(ecriture = fopen(fichier2,"wb" )))
    {
      printf("Ouverture de %s impossible.\n",fichier2);
      return 1;
    }


  // copie du fichier de l'adresse1 à l'addresse2 
  fread(&a,sizeof(char),1,lecture);
  while(!feof(lecture))
    {
      fwrite(&a,sizeof(char),1,ecriture);
      fread(&a,sizeof(char),1,lecture);
    }

  // fermeture des fichiers 

  fclose(lecture);
  fclose(ecriture);
  return 0;
}

Naturellement j'ai ajouté les scanf pour faire joli dans ce cas :-)
De plus, à partir de ça tu peux faire pleins d'autres choses : un binder, crypter,.. Bref, l'important c'est d'explorer !  :D

EDIT : Ce serait marrant de faire un virus qui remplace le "copy" du terminal par une copie qui fait pareil mais injecte une charge au passage  8)

------------------------------------------------------------------------------------------------------------------------------------
***** Ici je ne vise personne et n'insinue rien du tout, c'est juste un message à l'attention de script-kiddies qui passeraient par là afin de bien faire comprendre que l’intérêt de tout cela c'est bien apprendre, pas "hacker" la voisine. J'ai l'impression de marcher sur des oeufs ::)
« Modifié: 15 décembre 2016 à 11:58:20 par WK »

Hors ligne _john_doe

  • Contributeur de Kali-linux.fr
  • Membre VIP
  • *****
  • Messages: 606
  • +36/-5
Re : Proposition explication payload FUD
« Réponse #7 le: 16 juillet 2017 à 21:14:17 »
Salut WK
Je me permets de déterrer ce sujet car je m'intéresse en ce moment au sujet.
Serais très intéressé par tes bouts de code  :)
Ca m'obligera à rafraîchir mes bases de C car mon C++ date d'il y a 15 ans  :)

Hors ligne _john_doe

  • Contributeur de Kali-linux.fr
  • Membre VIP
  • *****
  • Messages: 606
  • +36/-5
Re : Proposition explication payload FUD
« Réponse #8 le: 20 juillet 2017 à 17:24:58 »
J'avais commencé à me pencher de mon coté sur la methodo suivante :

1° génération d'un payload en binaire avec MSFVENOM
2° découpage du binaire en blocs d'octets avec SPLIT
3° Determination de quel sous binaire fait hurler l'AV pour déterminer dans quel bout de binaire se trouve la chaine d'octets reconnu par l'AV.
4° isolation du bloc d'octets contenant la chaine reconnue par l'AV avec DD
5° Désassemblage du payload pour isoler le bloc de début et le bloc de fin de la signature virale
6° Ajout d'instructions assembleur pour modifier la signature SANS changer le comportement du payload  -> et c'est la que je me suis rendu compte que mes bases Assembleur ne sont pas encore suffisantes......
7° reste ensuite a réassembler.

CONCLUSION : Faut que je bosse encore l'assembleur :-)



Hors ligne HomardBoy

  • Nouvel inscrit
  • Messages: 8
  • +1/-0
Re : Proposition explication payload FUD
« Réponse #9 le: 06 août 2017 à 03:36:24 »
Salut  :), j'arrive à modifier mes payload en assembleur comme tu le dis, à changer manuellement la signature, bypass les AV, etc ...
Mais j'ai un soucis, mon fichier d'output est un .binary ( ou .asm toujours dispo ), et je ne sais pas comment le compiler pour rendre le truc éxécutable sur windows ...
Une idée ?

Hors ligne WK

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 188
  • +19/-1
Re : Proposition explication payload FUD
« Réponse #10 le: 08 août 2017 à 20:43:25 »
Je ne comprend pas trop de quoi ton fichier est l'output, mais si tu as fait un payload en asm et que tu veux le compiler je te conseille d'utiliser visual studio :

https://msdn.microsoft.com/fr-be/library/45yd4tzz.aspx


Hors ligne platon-y

  • Membre sérieux
  • ***
  • Messages: 358
  • +19/-4
  • *CCCP*
    • hackoibon
Re : Re : Proposition explication payload FUD
« Réponse #11 le: 09 août 2017 à 11:00:18 »
J'avais commencé à me pencher de mon coté sur la methodo suivante :

1° génération d'un payload en binaire avec MSFVENOM
2° découpage du binaire en blocs d'octets avec SPLIT
3° Determination de quel sous binaire fait hurler l'AV pour déterminer dans quel bout de binaire se trouve la chaine d'octets reconnu par l'AV.
4° isolation du bloc d'octets contenant la chaine reconnue par l'AV avec DD
5° Désassemblage du payload pour isoler le bloc de début et le bloc de fin de la signature virale
6° Ajout d'instructions assembleur pour modifier la signature SANS changer le comportement du payload  -> et c'est la que je me suis rendu compte que mes bases Assembleur ne sont pas encore suffisantes......
7° reste ensuite a réassembler.

CONCLUSION : Faut que je bosse encore l'assembleur :-)

https://pacman128.github.io/static/pcasm-book-french.pdf  :-X
https://pctamalou.fr/hackoibon/
Comment peut-on accepter la liberté sans libération?
Je sais juste que "rebelle" plus "lion" donne le mot "rébellion"

Hors ligne Koala

  • Contributeur de Kali-linux.fr
  • Membre sérieux
  • *****
  • Messages: 322
  • +19/-0
Re : Proposition explication payload FUD
« Réponse #12 le: 09 août 2017 à 12:04:14 »
Personnellement le poste de WK et son aide m'a été bien utile, j'ai passé le stade du payload fud par contre je bloque pour le maintenir a chaque redémarrage de la machine... bon j'y travaille...  8)

Hors ligne WK

  • Contributeur de Kali-linux.fr
  • Membre régulier
  • *****
  • Messages: 188
  • +19/-1
Re : Re : Proposition explication payload FUD
« Réponse #13 le: 09 août 2017 à 19:14:48 »
Personnellement le poste de WK et son aide m'a été bien utile, j'ai passé le stade du payload fud par contre je bloque pour le maintenir a chaque redémarrage de la machine... bon j'y travaille...  8)

La version simple est de copier le payload dans ce dossier :

C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

Salut WK
Je me permets de déterrer ce sujet car je m'intéresse en ce moment au sujet.
Serais très intéressé par tes bouts de code  :)
Ca m'obligera à rafraîchir mes bases de C car mon C++ date d'il y a 15 ans  :)

J'ai oublié de le mettre sur ce topic mais j'ai répondu à JD en MP. Ceux qui veulent le meme MP (Code Source dont j'ai prélevé quelques lignes superficielles mais qui rendent le code non fonctionnel par sécurité + Explication ) peuvent me le demander, mais je me réserve le droit de refuser en cas de symptome de script-kiddiite aigue  :)

Hors ligne HomardBoy

  • Nouvel inscrit
  • Messages: 8
  • +1/-0
Re : Re : Proposition explication payload FUD
« Réponse #14 le: 10 août 2017 à 08:15:30 »
Je ne comprend pas trop de quoi ton fichier est l'output, mais si tu as fait un payload en asm et que tu veux le compiler je te conseille d'utiliser visual studio :

https://msdn.microsoft.com/fr-be/library/45yd4tzz.aspx

C'était le raw output d'un payload msfvenom  :)

J'ai finalement réussi avant de voir ta réponse, en suivant le schéma suivant :

  - Je génère un raw payload msfvenom ( msfvenom blabla R > machin.binary )
  - le coupe en morceaux varibles de 40 à 70 octets ( split -b)
  - passe les morceaux à la moulines de mon AV, jusqu'a rencontrer le bout contenant la signature
  - j'isole le code héxa de la partie contenant la signature
  - je repère quelques caractères du début et de la fin de la signature
  - désassemble le .binary ( avec metasm donc : ruby /blabla/metasm/samples/disassemble.rb > raw.asm )
  - je retrouve le ségment correspondant à la signature
  - j'ajoute des instructions assembleur randoms dans ce fameux ségment, sans casser tous les registres ( géneralement des push / pop avec des affectations de valeurs fonctionnent bien :D )
  - j'assemble la version modifiée ( ruby /blabla/metasm/samples/peencode.rb raw.asm -o raw.exe )
  - Et voilà !

Après c'est aussi possible de changer la taille du buffer des templates meterpreter pour bypass quelques AV en plus !
J'arrive à choper un score de 1/35 sur NoDistribute, et c'est juste à cause d'une analyse heuristique x)
Reste plus qu'a ajouter des pauses randoms dans le tout pour faire un 100% FUD !

Bref,c'était mon retours d'experience perso !

Mais du coup je suis très curieux de savoir comment tu t'y prend de ton côté sans toucher au code assemleur  8)

Ce serais possible d'avoir un peut plus de détails concernant ton projet ?
Je suis très curieux de voir comment tu rend un truc FUD sans modifications manuelles (je suis en train de scripter un "assistant" à la modification manuelle de signature en assembleur, c'est tendu à réellement automatiser).
Tu utilises des templates que tu as rendu FUD manuellement par dessus ta couche d'encryption / obfuscation / etc ...  ?

Je suis grave interessé par des explications, démonstrations, ou autre ...
Et je comprend le compromis dans lequel tu te trouves, c'est pas drôle  :-[

ça t'embête de prendre un peu de ton temps pour répondre à mes questions et discuter tranquillement de tout sa ?
C'est mieux par MP ici, ou tu préfères par mail / irc / autre ?