Home
        WiShMaster - Manuel - Benjamin Caillat
         Contents
1.           WaitForSingleObject T ypeDef  HANDLE  DWORD    typedef DWORD  wlNAPI  waitForMultipleDbiectsTypeDef   DWORD  const H     typedef BOOL  WINAPI  ReleaseMutexTypeDef   HANDLE     typedef UINT  wINAPI  CloseHandleT ypeDef   HANDLE     typedef DWORD  WINAPI  SetFilePointerTypeDef   HANDLE  LONG  PLONG       typedef HANDLE  wINAPI    OpenProcessTypeDef   DWORD  BOOL  DWORD    typedef LPYOID  WINAPI  Virtual amp llocE xT ypeDef   HANDLE  LFPVDID  SIZE        typedef LPVOID            virtual amp llacTypeDef   LPVOID  SIZE  T  DWORD  D     typedef BOOL  wINAPI  writeProcessMemoryT ypeDef   HANDLE  LPVDID  LP     typedef HANDLE                CreateRiemoteT hreadT ypeD ef  HANDLE  LPSECU     typedef BOOL  wINAPI  ReadProcessMemoryTypeDef   HANDLE  LPCYOID  L     typedef VOID  WINAFI  SleepTypeDef   DWORD      typedef BOOL  wINAPI  CreatePipeT ypeDef   PH  NDLE  PHANDLE  LPSECU     typedef BOOL  wINAPI    CresteProcessT ypeDef   EPCTSTR  LPTSTR  LPSEC     typedef HANDLE  WIN amp PI  GetProcessHeapTypeDef   VOID     typedef BOOL               PeekNamedPipeT ypeDef   H amp NDLE  LPVDID  DWOR     typedef BOOL  wINAPI  GetExitCodeProcessT ypeDef   HANDLE  LPD Ww ORD J   typedef BOOL  wINAPI  GetE xitCodeThreadT ypeDef   HANDLE  LPDwW ORD    typedef HANDLE  WIN amp PI  GetCurrentProcessT ypeDef   VOID     typedef DWORD  wINAPI  GetCurrentProcessldT ypeD ef   VOID     typedef DWORD  wINAPI  GetModuleFileNameTypeDef   HMODULE  LPTST    Y    Edition de la liste de la base de donn  es
2.       WiShMaster  by x90re     Windows Shellcode Generator    Manuel d utilisation    Auteur   x90re  Version   1 00  Date   18 09 2006    Contact   x90re yahoo fr  Site web   http  benjamin caillat free fr          WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Table des mati  res                                                                                                 1 Pr  sentation de WiShMaster 4  1 1   Objectif du document 4  1 2 Principe de l outil 4  1 3 Origine du projet 4  1 4   Rappel   Principe de la shellcodisation par WiShMaster 4   2 Lesconventions d   criture du code 7  2 1   Conventions sur la syntaxe du code 7  2 2 Convention sur les variables globales 7   3 Description d  taill  e de la shellcodisation 8  3 1 Rappel   Structure du shellcode g  n  r   8  3 2 Etape 1   L analyse du code 8  3 3 Etape 2   Cr  ation du code 9  3 4 Etape 3   Compilation du code 15  3 5 Etape 4  Extraction du shellcode 16  3 6 Etape 5   G  n  ration des shellcodes 16  3 7 Etape 6          des shellcodes 17  3 8 Etape 7   Int  gration des shellcodes 18  3 9 Fonctionnement d  taill     conclusion 18   4 Les diff  rents flots d ex  cution 19  4 1   La d  sactivation d   tapes 19  4 2  Redistribuer un shellcode compil   19   5 Installation de WiShMaster 20  5 1 Mise en place de l environnement WiShMaster 20  5 2 Mise en place de l environnement de compilation 20  5 3 Configuration des chemins 20   6 L interface graphique de WiShMaster 22  6 1 Fen  
3.    GLOBAL DATA                    0  char szText 6         WISHMASTER   ADD FIELDS    ORIG GLOBAL DATA               define NB OF INTERNAL FUNCTIONS 5   define NB OF IMPORTED DLLS 3   define NB OF IMPORTED FUNCTIONS 4   define NB OF INTERNAL FUNCTIONS ALREADY DEFINED 0                                           Structure pour les dlls import  es  typedef struct     ULONG ulNbOfFunctions   CHAR szDllName 20      GETADD DLL   LPGETADD DLL              typedef struct GLOBAL DATA       dide  LECONTE        35 37          WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation          char szText 6         Internal functions pointers  BuildReferencesTypeDef BuildReferences   DisplayMessageBoxTypeDef  DisplayMessageBox   OldMainTypeDef OldMain   GetKernel32AddressTypeDef GetKernel32Address   GetProcAddressCksumTypeDef GetProcAddressCksum   LON ulBuildReferencesSize    LON ulDisplayMessageBoxSize    LON ulOldMainSize    LON ulGetKernel32AddressSize    LON ulGetProcAddressCksumSize                     e ej e e e       Q                       Imported functions pointers  LoadLibraryTypeDef LoadLibrary   GetProcAddressTypeDef GetProcAddress   sprintfTypeDef Sh iris  MessageBoxTypeDef MessageBox           Imported functions checksum  ULONG ulLoadLibraryCksum   ULONG ulGetProcAddressCksum   ULONG ulsprintfCksum    ULONG ulMessageBoxCksum        GETADD DLL array               DLL GetAddD11 NB OF IMPORTED DLLS      O            Strings           szSTRING 01191   HAR  szS
4.    WiShMaster distingue deux types de projets    e ceux travaillant sur le code source dont nous avons parl   jusqu ici    e ceux travaillant    partir d un shellcode extrait    Dans ce second cas  WiShMaster ex  cute directement les   tapes de g  n  ration  XOR et d int  gration    partir d un    shellcode   Ce m  canisme permet de s  parer d un cot   le d  veloppeur du code shellcodis   et de l autre celui qu il l utilise     Pour illustrer ce principe  imaginons que vous d  veloppiez un code n  cessitant une personnalisation   l adresse IP    et le port d un serveur qui doivent   tre hardcod  s dans la structure globale   Dans un premier temps  vous   crivez le code de votre application en C  compatible avec WiShMaster   Vous    utilisez ensuite WiShMaster pour g  n  rer le shellcode  cr     par l   tape extract  qui contient deux valeurs canari     une pour l adresse IP et une pour le port    Vous   crivez ensuite la class library    generate    qui affiche une fen  tre de dialogue permettant de saisir une    adresse IP et un port et qui patche les valeurs canaris avec ces donn  es   D  s lors  vous pouvez mettre    disposition votre shellcode et la class library correspondante     Une autre personne  int  ress  e par votre d  veloppement  peut alors r  cup  rer votre shellcode et remplacer la    librairie generate dll par d  faut de WiShMaster par la v  tre   II peut alors personnaliser le shellcode sans avoir acc  s au code source de votre programme  puis en faire ce qu
5.   d  claration des fonctions internes    Dans le code modifi    toutes les r  f  rences doivent se baser sur la structure globale   WiShMaster ajoute par cons  quent automatiquement un pointeur vers la structure globale en premier param  tre  de toutes les fonctions internes d  tect  es            BOOL MyFunc CHAR   szFileName  UINT uiValue                10 37          WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Deviendra            BOOL MyFunc  LPGLOBAL_DATA pGlobalData  CHAR   szFileName  UINT uiValue                Remarques    e sila fonction prend d  j   le pointeur vers la structure globale en premier param  tre  l ajout n est pas  effectu         dans certains cas  la liste des param  tres d une fonction interne ne doit pas   tre modifi  e  fonctions de  hook  point d entr  e de thread       WiShMaster n ajoutera pas le pointeur vers GLOBAL DATA    une  fonction dont le nom se termine par l un des suffixes suivants     o    Thread     fonction correspondant    un point d entr  e de thread   o   Hook  gt   fonction de hook   o    RawFunction  gt   autres cas     3 34 Modification des fichiers sources   appels de fonctions  Que ce soit un appel de fonction interne ou externe  tous les appels de fonctions sont transform  s pour   tre  effectu  s via le pointeur de fonction correspondant de GLOBAL DATA  De plus  si l appel correspond    une  fonction interne dont la d  claration a   t   modifi  e  le pointeur vers la structure GLOBAL DATA
6.   les unes apr  s  les autres en un seul click     6 1 2 R  sultat de l analyse du code  Cette fen  tre int  gre   galement trois boutons sur la droite permettant de visualiser les r  sultats de l   tape  d analyse     6 1 2 1 Fen  tre  lt  Internal Functions     Cette fen  tre affiche la liste des fonctions internes d  tect  es      W WiShMaster   List of internal functions    Name TypeDef   BuildReferences typedef VOID  BuildBeferencesT ypeDef   VOID     DisplayMessageBox typedef VOID     DisplayMessageBoxT ypeDef   CHAR   szMsg     DldMain typedef INT                DldMainTypeDef    LPGLOBAL DATA pGlobalD ata      GetKemel324ddress typedef ULONG   GetKemel32AddressTypeDef  MOID    BetProc amp ddressCksum typedef ULONG   GetProc amp ddressCksumT ypeDef   ULONG  HMODULE  LPVOID  LPVOID         Fig  11 Visualisation de la liste des fonctions internes    Les boutons UP DOWN vous permettent de d  finir l ordre dans lequel ces fonctions seront mises dans le  shellcode  Cette fonctionnalit   a   t   ajout  e car cet ordre est primordial lors de la cr  ation des interfaces binaires  pour les modules    x90re s backdoors     A priori vous n en aurez pas besoin  La fonction BuildReferences doit  rester la premi  re     6 1 2 2 Fen  tre    Imported functions     Cette fen  tre regroupe la liste des fonctions import  es      W WiShMaster   List of imported functions      List of imported functions    DII Function name Function typedef  MessageBox user32  dll typedef int             M
7.  Pointeurs de  fonctions internes    Pointeurs de  fonctions import  es                 de  caract  res        Donn  es du programme d origine    Donn  es ajout  es par WiShMaster    Fig  2 Structure du shellcode    3 2 Etape 1   L analyse du code  L op  ration de shellcodisation commence par une analyse du code  afin de rep  rer      Les fonctions internes    Celles ci sont rep  r  es lors de leur d  claration dans les fichiers  cpp   L expression r  guli  re utilis  e est la suivante             a zA Z0 9_       declspec   naked                         a zA Z0 9_                        Par exemple  la d  finition suivante sera rep  r  e         BOOL MyFunc CHAR   szFileName  UINT uiValue                Mais celle ci ne le sera pas            BOOL  MyFunc  CHAR   szFileName  UINT uiValue                8 37       WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    e Les fonctions import  es  Celles ci sont rep  r  es lors de leur appel dans les fichiers  cpp  L expression r  guli  re utilis  e est la suivante               a zA Z20 9  4 N         Cette expression est tr  s large  car il faut   tre s  r de reconnaitre tous les appels  WiShMaster s appuie  ensuite sur une base contenant toutes les fonctions import  es pour v  rifier que la chaine correspond bien     une fonction import  e    Cette expression va par exemple rep  rer les appels       strlen    et    atoi    dans la ligne suivante            i   MyFunc szText  strlen szText   atoi szValu
8.  Use a random key             Advance XORI          Activate  Integrate  step          Fig  18 Wizard WiShMaster   Personnalisation du projet    28 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    8 1 4 Fin du wizard  Le wizard est alors termin        W x90re s WiShMaster wizard    WisAMaster    Congratulations      x90re s project wizard completed successfully  Click on  Finish  to end it   Project skeleton will be created in D Mempmytests       Fig  19 Wizard WiShMaster   Fin de la configuration  82  Shellcodisation du programme squelette    8 2 1 Arborescence cr    e    A la fin du wizard  vous retournez alors sur la fen  tre principale de WiShMaster  Le fichier projet g  n  r   est  automatiquement charg       Si vous regardez dans le r  pertoire que vous avez d  fini en root  vous allez trouver l arborescence suivante      som  D exe     headers     integration     Le r  pertoire    int  gration    contient le mini programme dans lequel     bin sera int  gr   le shellcode sous forme de tableau C  2  exe   C3 headers  lt   Le s  shellcode s  sera   crit sous forme de tableau C dans un fichier  h  D obj dans ce r  pertoire    headers      C3 sources     obj     sources  E  2 temp  lt   Le r  pertoire    temp    contient la version patch  e des sources du projet  CD exe  juste apr  s la g  n  ration du squelette  ce r  pertoire est vide         headers        obj       sources    Fig  20 Arborescence cr    e par le wizard    29 37    WiShM
9.  XML  regroupant le nom et le prototypage  de toutes les fonctions import  es  Cette base doit donc   tre compl  t  e au fur    mesure de vos projets   Actuellement  elle contient d  j   un nombre relativement cons  quent de fonctions     Vous pouvez utiliser la fen  tre    Import functions database    pour l   diter      W WiShMaster      Dil name    advapi32 dll  advapi32 dll  advapi32 dll  advapi32 dll  advapi32 dll  kernel32  dll  kemel32  dll  kemel32  dll  kemel32 dll  kemel32  dll  kernel32  dll  kernel32  dll  kernel32 dll  kemel32  dll  kernel32  dll  kemnel32  dll  kernel32  dll  kemel32  dll  kemel32  dll  kemel32  dll  kernel32 dll  kemel32  dll  kernel32 dll  kernel32 dll  kernel32 dll  kernel32  dll  kernel32  dll  kemel32  dll  kernel32  dll  kemel32  dll  kernel32  dll  kernel32  dll  kernel32  dll  kemel32  dll  kernel32  dll  kemel32  dll  kernel32 dll  kemel32  dll  kemel32 dll  kemel32  dll  kernel32  dll  kernel32  dll  kernel32  dll  kernel32  dll  kernel32  dll    Import functions database    Function name  RegOpenKey  RegQuer alue  RegQuery4alueE z  RegSetValueE    RegCloseKey  FindClose  LoadLibrary  DutputDebugString  GetProc  ddress  VirtualQuery  VirtualProtect  VirtualFree  GetCommandLine  FreeLibrary  GetModuleHandle  WiiteFile  ReadFile    penMutes  CreateMutex  RieleaseSemaphore  CreateSemaphore  CreateE vent  SetE vent  FiesetE vent  WaitForSingleDbject  W aitForMultipleObjects  ReleaseMutex  CloseHandle  SetFilePointer    penProcess  Virtual 
10.  ajouts de code se font    l emplacement de    balises    que vous devez ajouter  C est une modification tr  s  rapide du code qui permet de mieux contr  ler les insertions automatiques de WiShMaster     Si votre code ne contient pas de structure globale    Dans l un de fichiers  h  ajoutez la ligne suivante         WISHMASTER   ADD GLOBAL DATA     Cette balise va  marquer l ajout des d  finitions de pointeurs de fonctions internes et import  es et de la structure globale     Si votre code contient une structure globale              WISHMASTER   ADD FIELDS    doit   tre ajout      la fin de votre structure globale et marquera l ajout des          nouveaux champs                WISHMASTER   INTERNAL FUNCTIONS  fonctions internes                                 EF    sera remplac   par les d  finitions de pointeurs de                     WISHMASTER   IMPORTED FUNCTIONS  fonctions import  es        Typiquement  la d  finition de la structure globale      YP    ED       EF    sera remplac   par les d  finitions de pointeurs de       typedef struct GLOBAL DATA                             char szText 6      GLOBAL DATA        Deviendra                     WISHMASTER   INTERNAL FUNCTIONS TYPEDE                               WISHMASTER   IMPORTED FUNCTIONS TYPEDE          typedef struct GLOBAL DATA  1   int                char szText 6         WISHMASTER   ADD FIELDS    GLOBAL DATA              8 3 9 Modification des fichiers sources   ajouts des fonctions d initialisation  Le fichie
11.  de    Generate  gt   de proposer    l utilisateur de g  n  rer  simultan  ment plusieurs backdoors avec des param  tres diff  rents  L interface affich  e doit permettre    l utilisateur  de saisir un nom unique de shellcode et d associer    chacun un jeu de param  tres     Pour effectuer les   tapes suivantes de    XOR    et    Integate     WiShMaster r  cup  rent la liste des shellcodes en  appelant la fonction  lt  GetGeneratedShellcodeList  gt  de  lt  Generate  gt   qui retourne un tableau contenant les noms  des shellcodes g  n  r  s    La class library actuelle de RConnect ne g  re la g  n  ration que d une seule backdoor    la fois  Le code de   lt  GetGeneratedShellcodeList  gt  retourne donc simplement le nom d  fini par l utilisateur dans un tableau            return new string       GenerateDataset BackDoorParamsRow   generateDataset BackDoorParams Rows 0   szBackdoorName         3 7 Etape 6          des shellcodes    L   tape de        consiste    encoder les shellcodes avec un algorithme appliquant des op  rations de type          Deux algorithmes sont disponibles    e Le premier applique simplement un        avec une cl   sur l int  gralit   du shellcode  Cet algorithme est tr  s  simple mais il g  n  re un    mauvais    brouillage    o DWORDxor   i DWORDxor   i 1    DWORD i DWORD i  1      SiDWORD i     DWORD i 1  alors DWORDxor   i     DWORDxor  li 1   e     second algorithme comporte une boucle retroactive   la cl   de        varie    chaque it  ration en f
12.  de nombreux inconv  nients  le principal   tant que le code C des fonctions  inject  es devait   tre   crit de mani  re sp  ciale pour g  n  rer un code binaire relocalisable     J ai donc d  cid   d   crire un outil annexe qui cr  erait directement le shellcode    partir du code source  Apr  s une  premi  re version tr  s li  e    Parsifal  j ai choisi de rendre cet outil beaucoup plus g  n  rique et de le transformer en  un g  n  rateur de shellcodes pour Windows  Ce d  veloppement a conduit    WiShMaster     1 4 Rappel   Principe de la shellcodisation par WiShMaster  La shellcodisation effectu  e par WiShMaster est d  coup  e en 7   tapes  Diff  rents flots d ex  cutions peuvent   tre  Suivis  en fonction du r  sultat recherch    Le flot le plus complet part d un ensemble de fichiers sources et produit  un ex  cutable contenant le shellcode sous forme d un tableau  encod   par une cl   XOR   Cet ex  cutable va  par exemple  d  chiffrer le shellcode  puis transf  rer l ex  cution sur son premier octet     Le point d entr  e de WiShMaster est un ensemble de fichiers contenant du code C compilable  c est    dire pouvant  produire un ex  cutable par compilation      1 4 1 Etape 1   Analyse  Cette premi  re   tape d analyse consiste    parcourir les fichiers sources pour rep  rer    e Les fonctions internes  les fonctions   crites par le d  veloppeur   e Les fonctions import  es  les r  f  rences aux fonctions externes dans les dlls   e Les cha  nes de caract  res    1 42 Etap
13.  des fonctions import  es    A noter que si une fonction utilis  e ne figure pas dans cette base  la r  f  rence    la fonction ne sera pas trait  e et le  shellcode risque de planter      24 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Pour d  tecter ces oublis  vous pouvez cocher la case    display warning    de l   tape    ANALYSE     WiShMaster  vous affichera alors tous les   l  ments matchant l expression r  guli  re des appels de fonctions  mais qui ne  correspondent ni    une fonction interne  ni    Une fonction import  e connue dans la base     6 3 La fen  tre  lt  Projet configuration  gt   Cette fen  tre permet de modifier les diff  rentes propri  t  s du projet     W WiShMaster   Project configuration    Generalities  Project Name   test   Projectid  0          Project type executable v       Flow type From sources          Path to project root directory                          Create environment    Path to project root shellcode directory                                        Path to shellcode directory object C  temptestitemp obi     Path to shellcode directory executable                                        Debug message mode   Print to kernel debugger    Informations on code       Main function name                      C  Source code include a definition of a global data structure  Global structure name    Global variable name      Skip keywords         Shellcode functions  Path to  BuildReferences  function C Memp W
14.  diff  rences notables sont    e Le fichier  lt  structures prototype h  gt  contient la d  finition d une structure globale de test                  WISHMASTER   INTERNAL FUNCTIONS TYPEDEF                                     WISHMASTER   IMPORTED FUNCTIONS TYPEDEF          typedef struct GLOBAL DATA      abe  Coine    char szText 60         WISHMASTER   ADD FIELDS    GLOBAL DATA              e Un fichier  lt  global data cpp  gt  contenant l initialisation de la structure est ajout               include  stdafx h    include  structures prototype h     GLOBAL DATA GlobalData             jJ 3E                 SU     char szText 6      WISHMASTER   SKIP STRINGS                Le fichier    structures_prototype h    patch   sera alors le suivant            typedef struct _GLOBAL_DATA  LPGLOBAL DATA        Internal functions typedef   typedef VOID   BuildReferencesTypeDef   VOID     typedef VOID   DisplayMessageBoxTypeDef   LPGLOBAL DATA  CHAR   szMsg    typedef INT  WINAPI  OldMainTypeDef   LPGLOBAL DATA pGlobalData    typedef ULONG   GetKernel32AddressTypeDef   VOID    typedef ULONG   GetProcAddressCksumTypeDef   ULONG  HMODULE  LPVOID  LPVOID                     Imported functions typedef   typedef HMODULE  WINAPI  LoadLibraryTypeDef   LPCSTR     typedef FARPROC  WINAPI  GetProcAddressTypeDef   HMODULE  LPCSTR    VD JW                                 eim F OS Giu V5 scs p  typedef int  WINAPI  MessageBoxTypeDef   HWND  LPCSTR  LPCSTR  UINT               typedef struct         
15.  e     L   criture de ces scripts peut s av  rer relativement fastidieuse  je vous conseille de vous appuyer au maximum sur  les exemples fournis notamment dans    RConnect    ou sur les fichiers g  n  r  s par le wizard     3 5 Etape 4   Extraction du shellcode    L extraction des diff  rentes parties du shellcode se fait en m  moire et non    partir du fichier ex  cutable sur le  disque    WiShMaster lance une instance du programme en mode suspendu  extrait les parties d  sir  es en s appuyant sur  le fichier  map  puis r  sume l ex  cution du programme qui se termine instantan  ment puisque la fonction principale  a   t   remplac  e par une fonction WinMain vide lors de l   tape    creation        La structure du shellcode g  n  r   a   t   pr  sent  e au d  but de cette partie  Comme indiqu   ci dessus  WiShMaster  patche   galement le DWORD Ox7a7a7a7a par la taille du code avant la structure globale et le DWORD  0x6a6a6a6a par celle du shellcode complet     3 6 Etape 5   G  n  ration des shellcodes    L   tape de g  n  ration consiste    patcher certains octets de GLOBAL DATA avec des valeurs bien particuli  res   Par exemple pour le cas d un code effectuant une connexion sur un serveur  la structure GLOBAL DATA va  certainement contenir l adresse IP et le port du serveur sur lequel   tablir la connexion    Le principe est d initialiser ces champs avec des valeurs canari dans les sources puis de les rechercher et de les  patcher lors de la g  n  ration par les valeurs d 
16.  est ajout   en  premier param  tre         MyFunc szText  strlen szText         Deviendra            pGlobalData   MyFunc pGlobalData   szText  pGlobalData  gt strlen szText         3 3 5 Modification des fichiers sources   r  f  rences aux cha  nes de caract  res    Les r  f  rences aux chaines de caract  res seront   galement remplac  es par le pointeur vers le champ  correspondant dans la structure GLOBAL DATA         iig wie                                          wii e           j arriya e        Deviendra            pGlobalData   MyFunc pGlobalData  pGlobalData    szSTRING 0   pGlobalData   strlen pGlobalData   szSTRING 0   pGlobalData   szSTRING 1        3 3 6 Modification des fichiers sources   r  f  rences aux champs de la structure globale  Les r  f  rences aux champs de l   ventuelle structure globale d origine sont   galement modifi  es            void IncrementCounter  void        GlobalData iCount                Deviendra            void IncrementCounter  LPGLOBAL DATA pGlobalData        pGlobalData  gt iCount                3 3 7 Modification des fichiers headers   d  finition des pointeurs de fonctions    Les champs ajout  s dans la structure globale n  cessitent la d  finition des pointeurs de fonctions dans un fichier  header  Cette liste est automatiquement construite et ajout  e     11 37                   WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    3 3 8 Modification des fichiers headers   Principe des balises  Certains
17.  il    d  sire   le xorer  l int  grer dans un ex  cutable  dans une page html contenant un exploit         Il est important de noter que la partie        est bien r  alis  e par cette seconde personne       peut donc    loisir soit  accomplir un d  chiffrement imm  diat du shellcode  soit introduire quantit   de code pour par exemple d  jouer les    analyses antivirales par   mulation     Ce principe permet d obtenir une r  elle s  paration entre le coeur du programme  le fonctionnel   crit par la premi  re  personne  et l enveloppe  la partie encodage d  codage  le contenant    crit par la seconde      19 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    5 Installation de WiShMaster    5 1 Mise en place de l environnement WiShMaster    L installation de WiShMaster consiste simplement    d  compresser l archive    WiShMaster zip    dans le r  pertoire  de votre choix     5 2 Mise en place de l environnement de compilation    WiShMaster requiert les   l  ments suivants        un syst  me Windows comprenant le framework  net version  gt   1 1   e les outils permettant de compiler le code source    o le compilateur de Microsoft Visual C   2005  qui peut   tre t  l  charg   gratuitement sur  http   msdn microsoft com vstudio express visualc download   o l environnement SDK contenant toutes les librairies et headers  qui peut   tre t  l  charg    gratuitement sur le site de microsoft  e PERL pour pouvoir facilement   crire des programmes analysan
18.  la liste des chaines de caract  res       Edition de la liste de la base de donn  es des fonctions import  es       Fen  tre de configuration des options du projet       Wizard WiShMaster   Fen  tre d accueil       Wizard WiShMaster   D  finition des propri  t  s du projet       Wizard WiShMaster   Personnalisation du projet       Wizard WiShMaster   Fin de la configuration          Arborescence cr    e par le wizard  Allure de la fen  tre principale apr  s la cr  ation du squelette de projet       Allure de la fen  tre principale apr  s la shellcodisation       Fen  tre affich  e lors du lancement de l ex  cutable issu de l int  gration       Fen  tre des options du projet       Message de debuggage affich   dans le kernel debugger       Seconde fen  tre affich  e lors du lancement de l ex  cutable int  gr         3 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    1 Pr  sentation de WiShMaster    11 Objectif du document    Ce document s adresse aux personnes souhaitant utiliser WiShMaster dans le cadre de projets personnels  Il a  pour objectif de pr  senter de mani  re technique et d  taill  e le fonctionnement de cet outil afin de faciliter son  utilisation    II consid  rera que vous avez lu l article pr  sentant WiShMaster et la shellcodisation de RConnect disponible sur le  site de SecuObs  1  et utilisera directement des principes introduits dans ce document sans revenir sur leur  d  finition  par exemple la structure GLOBAL DATA    
19.  re assez fastidieuse       est souvent beaucoup plus pratique de pouvoir  afficher des traces de debuggage     7 2 Le m  canisme impl  ment   dans WiShMaster    WiShMaster impl  mente un m  canisme permettant de rapidement obtenir des traces de debuggage  m  me dans  un shellcode inject   dans un processus distant    Dans un premier temps  ajoutez    votre projet les fichiers    print debug msg cpp    et    print debug msg h     disponibles par exemple dans larchive de RConnect  Ces fichiers contiennent la d  finition d une fonction  PrintDebugMsg dont l objectif est de formater une chaine et des arguments  puis de l afficher soit dans stdout  soit  dans le debugger kernel    Son prototypage est similaire    celui    printf                          120                                  eomsi                    200        Ajoutez ensuite des traces de debuggage      l appelant               PrintDebugMsg  Message de debuggage avec param  tre    x   Oxdeadbabe         Une combobox dans les propri  t  s du projet vous permet de choisir le type de debuggage que vous d  sirez    e  Desactivate   D  sactive les traces  e Print to stdout   Active les traces et envoie la sortie vers stdout     Print to kernel debugger   Active les traces et envoie la sortie vers le debugger kernel    Lorsque les traces sont activ  es  WiShMaster traitera    PrintDebugMsg    comme une fonction interne et  shellcodisera donc son code  ses appels et les r  f  rences aux chaines de caract  res de debugga
20.  sir  es     Cette op  ration est bien s  r fortement d  pendante de la structure du shellcode  Plut  t que d   crire un langage de  d  finition de structures permettant    WiShMaster de comprendre le format de GLOBAL DATA et de patcher les  bons octets  cette fonctionnalit   a   t   d  port  e dans une    Class library     une dll    Pour chaque projet n  cessitant une   tape de g  n  ration  vous devez donc livrer cette dll qui exportera un jeu de  fonctions bien d  finies   Cette dll contient une classe    Generate    d  rivant de    System Windows Forms Form     qui expose les fonctions  suivantes     e  LoadData   appel  e lors de l ouverture d un projet  Son r  le est de charger un fichier contenant les   param  tres actuels    e  CloseData   appel  e lors de la fermeture du projet courant    e  GenerateShellcode   Ex  cute l   tape de g  n  ration   e  GetGeneratedShellcodeList   Retourne sous forme d un ArrayList la liste des noms des shellcodes g  n  r  s    Cette classe affiche de plus une fen  tre permettant    l utilisateur de saisir ses param  tres lors de l appel de sa  m  thode ShowDialog     A titre d exemple  voici la fen  tre affich  e par le    Generate    de    RConnect        Generate       Backdoors Parameters    Backdoor Name   RConneci     Server IP 1 27 0 0 1  Server Port  80       Fig  7 Fen  tre  lt  Generate  gt  de  lt  HConnect  gt     16 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Celle ci permet tout simp
21. ATA   ulLoadAddress  0x7a7a7a7a         14 37          WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    3 3 10 2 La fonction    GetKernel32Address     Le prototype de    GetKernel32Address    est            ULONG GetKernel32Address  VOID        Cette fonction ne prend aucun param  tre et doit retourner l adresse de chargement      kernel32 dll    3 3 10 3 La fonction    GetProcAddressCksum     Le prototype de    GetProcAddressCksum    est         ULONG GetProcAddressCksum ULONG  HMODULE  LPVOID  LPVOID           Cette fonction prend en param  tre         Param Type Description       1 ULONG Checksum de la fonction    rechercher       HMODULE   HMODULE retourn   par LoadLibrary  adresse de chargement de la librairie                    2  3 LPVOID Pointeur vers LoadLibrary  4 LPVOID Pointeur vers GetProcAddress       Les deux derniers param  tres permettent de traiter le cas des    forwarders     c est    dire quand la r  f  rence dans  l export directory pointe vers une fonction dans une autre librairie    La fonction    GetProcAddressCksum    va alors charger cette nouvelle libraire et effectuer la recherche de la  fonction point  e     3 3 10 4 Personnalisation des fonctions    Ces trois fonctions sont plac  es chacune dans un fichier texte s  par   dont le chemin est d  fini au niveau des  options du projet  Vous pouvez donc les adapter aux besoins sp  cifiques de votre application  L archive de  WiShMaster contient    l origine plusieurs versio
22. DRSACrptcEntityBuilder CryptoE ntityBuilderNbin D ebugkentryp    es  Path to  GetProc  ddressCksum  function  E  PROJETS BACKDOORS CiyptoEntityBuilder CryptoEntityBuilder bin Debug entiyp   la             r FireBreaker control     Activate FireBreaker          Path to  FireBreaker  code     Add FireBreaker fields in GLOBAL structure    r Compilation         Fig  24 Fen  tre des options du projet  Changez le    Debug message mode    pour    Print to kernel debugger    et validez vos changements  Relancez  ensuite l int  gralit   des   tapes      d  cochant    fast             et en cochant    full rebuild      La taille du shellcode g  n  r   est alors plus   lev  e  Cette augmentation est due    l int  gration des fonctions et des  chaines de debuggage     Lancez un outil affichant les logs kernel  comme par exemple WinDbg et relancez l ex  cutable dans le r  pertoire     integration        Au niveau de l outil de debuggage  vous verrez un affichage du type      x Time Debug Print  0 0 00000000  3756  This string is send to debug output  Temp value   deadbabe    Fig  25 Message de debuggage affich   dans le kernel debugger    32 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    8 4 Fichiers du projet    WiShMaster sauve les donn  es d un projet dans 5 fichiers XML        Nom du fichier    Description       PROJECT                     Fichier principal    ouvrir avec WiShMaster   Contient toutes les  options du projet       PROJECT NAME import
23. Microsoft Visual Studio 8 Common NMDEN C NProgram Files Microsoft Visual Studio                       C NwINDO WSSsystem32 C  WINDOWS    NWIND  WSSSystem32Nw bem    INCLUDE C  Program Files Microsoft Visual Studo 8WC Ninclude C NProgram Files Microsoft Visual Studio 8                             Files Microsoft Platform SDK for Windows Server 2003 R2  include     C  Program Files Microsoft Visual Studio SXvC Wib C  Program Files Microsoft Visual Studio 8  NVCSSPlatformSDKMlib  C  Program Files Microsoft Platform SDK for windows Server 2003 R2NMib     Test configuration    You should see an error  missing source filename    TEST WARNING    lf you see an error  ignoring unknown option   G     the  disable GS  box MUST be UNCHECKED    Disable GS       Fig  9 Fen  tre de configuration de WiShMaster    Normalement  vous ne deviez pas    avoir    modifier les autres champs    e  WiShMaster tentera de remplir automatiquement les champs  lt  DevEnvDir  gt  et  lt  MSVCDir  gt   V  rifiez  cependant la coh  rence avec votre installation     Les ent  es    PATH        INCLUDE    et    LIB    indiquent les valeurs que vont prendre les variables  d environnement correspondante   Par exemple     DevEnvDir     au d  but de    PATH    indique que la valeur entr  e dans la boite     DevEnvDir    sera ajout  e au PATH     Une fois les diff  rents chemins saisis  appuyez sur    APPLY     Vous pouvez alors tester la configuration en  appuyant sur    TEST     Vous devriez voir apparaitre le mess
24. TRING 1 58    HAR  szSTRING 2 56         CMOS         GLOBAL DATA        Lors de l ex  cution vous obtiendrez la premi  re MessageBox  puis une seconde affichant les valeurs des champs  de la structure globale d origine      x90re s WiShMaster    This is the content of the global structure   hello and 0       Fig  26 Seconde fen  tre affich  e lors du lancement de l ex  cutable int  gr      36 37       WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    10 R  f  rences     1  Article sur le site de SecuObs pr  sentant WiShMaster  http   www secuobs com news 16092006 wishmaster shtml    37 37    
25. age suivant            cl   Command line error D2003   missing source filename       Attention  si vous obtenez   galement le message suivant  vous devez imp  rativement d  cocher la case    Disable  GS  gt           cl   Command line warning D4002   ignoring unknown option   G         21 37          WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    6 L interface graphique de WiShMaster    6 1 Fen  tre principale  La fen  tre principale de WiShMaster est la suivante      W WiShMaster  by x90re    D MempWmytestumytest xml    File Project Import functions Generation Help    Shellcode creation steps Manual    Step 1   Analyse files  _anaLvse    Step 2   Create environment   create    Step 3  Compile                 Step 4  Extract v   Extract    Step 5  Generate                    Step B          shellcode       x      Step 7   Integrate v                        Options View   Edit results      display warning  Internal functions       fast copy    Imported functions   D fuli rebuild    Strings                    D                  Fig  10 Fen  tre principale de WiShMaster    6 1 1 La partie principale  La partie principale est form  e d un tableau constitu   par les colonnes    Shellcode creation steps        Auto         Manual        State    et    Options      Chaque ligne de ce tableau repr  sente une des 7   tapes pr  c  demment d  crites  Par exemple  en appuyant sur le  bouton    ANALYSE     vous allez lancer l analyse des fichiers   La colonn
26. amp llacE x  Mirtual  lloc  WiiteProcessMemory  CreateRiemoteThread  RieadProcessMemory  Sleep  CreatePipe  CreateProcess  GetProcessHeap  PeekWamedPipe  GetE xitCodeProcess  GetExitCodeThread  GetCurrentProcess  GetCurrentProcessld  GetModuleFileN ame    Fig  14    Function real name  Reg  penKey amp   Reg  uer alue                                      RegSelValueE x    RegCloseKey  FindClose  LoadLibrary     DutputDebugString amp   GetProc amp ddress  VirtualQuery  VirtualProtect  VirtualFree  GetCommandLine     FreeLibrary  GetModuleHandie     WiiteFile  ReadFile  Openbutex    CresteMutex     ReleaseSemaphore  CreateSemaphore     CreateE vent     SetEvent  ResetE vent  WaitForSingleObject  WwaitForMultipleObjects  ReleaseMutex  CloseHandle  SetFilePointer    penProcess  Virtual amp llocE x  Virtual amp lloc  WiiteProcessMemory  CreateRemoteThread  ReadProcessMemory  Sleep  CreatePipe  CreateProcess    GetProcessHeap  PeekNamedPipe  GetEsitCodeProcess  GetExitCodeT hread  GetCurentProcess  GetCurrentProcessid  GetModuleFileN ames        La premi  re colonne repr  sente le nom de la dll  La deuxi  me est le nom de la fonction utilis  e dans votre code  La troisi  me est le nom de la fonction dans la dll  Par exemple    CreateFile    est en r  alit      CreateFileA       La derni  re repr  sente le prototypage de la fonction     TypeDef   typedef LONG  wINAPI    RegOpenKesTypeDef   HKEY  LPCSTR  PHKEY    typedef LONG  WINAPI  FHegQuerValueTypeDef   HKEY  LPCSTR  LPCSTR       
27. aster  by x90re    Windows Shellcode Generator   Manuel d utilisation    8 2 2 Ex  cution de l analyse  La fen  tre principale de WiShMaster est alors la suivante      W WiShMaster  by x90re    0                                        xml    File Project Import functions Generation Help    Shellcode creation steps    Step 1   Analyse files      Create environment v CREATE    Options View   Edit results    display warning       fast copy    Step 3  Compile 7 COMPILE  D fuli rebuild  Step 4  Extract  Step 5   Generate GEHERATE    Step 6   Xor shellcode v XOR    E H H H H E i    Step 7   Integrate v IHTEGRATE        WARNING  No internal functions in database   Create environment  desactivated          Fig  21 Allure de la fen  tre principale apr  s la cr  ation du squelette de projet    30 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Appuyez sur    START    pour lancer l ex  cution des diff  rentes   tapes      W WiShMaster  by x90re   D Memplmytestimytest xml  File Project Import functions Generation Help    Shellcode creation steps Auto  Step 1   Analyse files    ANALYSE    Step 2  Create environment iv CREATE    Step 3  Compile    COMPILE    Step 4  Extract    Step 5  Generate       Step 6   Xor shellcode       Step 7   Integrate    INTEGRATE    Options View   Edit results      display warning  Internal functions      fast copy  Imported functions  D fuii rebuild                      Strings    GEHERATE                                  m
28. e            MyFunc    ne sera en revanche pas reconnue comme une fonction import  e car il s agit d une fonction  interne        Les cha  nes de caract  res    Celles ci sont rep  r  es via le caract  re  lt    gt   WiShMaster n utilise pas une expression r  guli  re car il  existe des cas particuliers      la chaine peut elle m  me contenir un caract  re         backslash      Par exemple WiShMaster rep  rera deux chaines diff  rentes    hello  et  il a dit  Vj arriveV dans la ligne  suivante            isis uae  Wine L llusi  le mellg    viil                                                II peut arriver que votre code contienne des chaines de caract  res dont WiShMaster ne doivent pas tenir  compte  Typiquement  les chaines utilis  es lors de l initialisation de l instance de la structure  GLOBAL DATA  En reprenant l exemple pr  c  dent            GLOBAL DATA GlobalData        0  Jf ion  Telle    szText           La cha  ne    hello    sera reconnue et ajout  e dans la partie    Cha  nes de caract  res     comme une cha  ne  normale  Cet ajout est cependant totalement inutile puisque la cha  ne r  ellement utilis  e est dans la partie     Donn  es initialis  es    de GLOBAL DATA    Vous pouvez donc indiquez    WiShMaster de ne pas tenir compte des chaines d  tect  es sur une ligne en  ajoutant une balise       WISHMASTER   SKIP STRINGS               GLOBAL DATA GlobalData       0  Z Cons  helle    szText    WISHMASTER   SKIP STRINGS                3 3 Etape 2  Cr  ation d
29. e    Options    permet de modifier rapidement une caract  ristique d une   tape       La checkbox    display warning    de    ANALYSE    indique    WiShMaster d afficher tous les   l  ments  matchant l expression r  guli  re des appels de fonctions  mais qui ne correspondent ni    une fonction  interne  ni    une fonction import  e connue dans la base  voir ci dessous       La checkbox    fast copy    de    CREATE    indique    WiShMaster de ne copier un fichier que si la source  est plus r  cente que la destination        La checkbox  lt  full rebuild  gt  de  lt  COMPILE  gt  indique    WiShMaster d ajouter l argument  lt  CLEAN  gt  lors  de l appel du script de compilation  Celui ci sera typiquement interpr  t   au niveau du script PERL pour  proc  der    un nettoyage     nmake clean     avant la compilation     22 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Au lancement de WiShMaster  l   tat est checkbox    fast copy    coch  e et    full rebuild    d  coch  e  permettant  ainsi de ne copier et de ne recompiler que les fichiers modifi  s       faut noter que cette configuration fonctionne bien  si les modifications des fichiers sources sont limit  es  Si vous effectuez de grosses modifications  ajout de fichiers   de chaines de caract  res     ou si vous observez des comportements anormaux  faites une reconstruction  compl  te     Le bouton    START    permet d ex  cuter toutes les   tapes s  lectionn  es dans la colonne    Auto  
30. e 2   Create  Cette deuxi  me   tape consiste    cr  er une copie de l arborescence des fichiers sources en modifiant le code pour  que la compilation produise un code binaire relocalisable     1 4 3 Etape 3   Compile  WiShMaster compile ensuite ces sources patch  es afin de produire un ex  cutable     4 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    1 4 4 Etape 4   Extract  Cette   tape consiste    extraire diff  rentes parties de l ex  cutable pr  c  demment g  n  r   et    les rassembler pour  cr  er une premi  re version du shellcode    1 45 Etape 5   Generate  L   tape    Generate    consiste    cr  er plusieurs versions du shellcode en patchant certaines donn  es de la  structure GLOBAL DATA     1 4 6 Etape 6           Chacun des shellcodes g  n  r  s va alors   tre xor   avec une cl   diff  rente     1 4 7 Etape 7   Integrate  Enfin  WiShMaster va successivement inclure chaque shellcode xor   dans un fichier header d une autre  arborescence de fichiers sources sous forme d un tableau de char  et lancer la compilation de cet autre  programme     A la fin de cette ultime   tape  nous obtenons un ensemble de fichiers ex  cutables contenant des versions xor  es  de notre shellcode     Le sch  ma ci dessous r  sume les   l  ments produits lors des diff  rentes   tapes      5 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Sources  patch  es    Ex  cutable    2   CREATE 3   BUILD  Patche les sources Com
31. e s il le faut    Je vous recommande cette approche qui vous permet de partir d une base compatible et d int  grer  progressivement votre code     18 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    4 Les diff  rents flots d ex  cution    4 1 La d  sactivation d   tapes  Tous les projets ne requi  rent pas l ex  cution des   tapes de g  n  ration  de        et d int  gration  Il est donc    possible de d  sactiver celles dont vous n avez pas besoin   Par exemple si vous souhaitez juste produire un shellcode  vous pouvez vous arr  ter apr  s l   tape d extraction     Autre exemple  si vous avez   crit un code qui doit   tre xor   et int  gr      un ex  cutable  mais ne n  cessite pas de  personnalisation  vous pouvez activer toutes les   tapes sauf celle de g  n  ration  Vous n aurez alors bien s  r pas    besoin d   crire de class library    Generate       Le tableau suivant pr  sente quelques exemples de combinaisons et le r  sultat produit                                                    2 9         o S S A  Exemple   2    S  S 9      o R  sultat  S 25           lt  O nuo    S  1                       Un         contenant le shellcode xor   et personnalis   par  lt  generate  gt   2 O O O O NIN   O   Un  exe contenant le shellcode en clair et non personnalis    3                            Un  bin contenant le shelcode  4                       N   Un  bin contenant le shellcode personnalis         4 2  Redistribuer un shellcode compil   
32. edfunctions xml    Contient la liste des fonctions import  es       PROJECT NAME internalfunctions xml    Contient la liste des fonctions internes       PROJECT NAME stringslist xml    Contient la liste des chaines de caract  res             PROJECT NAME generation params xml    Contient les donn  es g  n  r  es par la class library    generate          8 5 Analyse du code    Au niveau du code  le seul point    noter est le fichier    structures prototype h    qui contient            WISHMASTER ADD GLOBAL DATA       Comme d  crit pr  c  demment  au niveau du fichier patch    on trouve la d  finition de la structure globale            typedef struct GLOBAL DATA        typedef    Internal functions typedef  VOID         BuildReferencesTypeDef      LPGLOBAL DATA      VOID          typedef VOID  typedef INT  WINAPI  OldMainTypeDef   typedef ULONG   Get  typedef ULONG   Get     Imported functions typedef  typedef HMODULE  WI  typedef FARPROC  WI         DisplayMessageBoxTypeDef   Kernel32AddressTypeDef     ProcAddressCksumTypeDef     API  LoadLibraryTypeDef     API  GetProcAddressTypeDef           typedef int  WINAPI   define NB OF INTER   define NB OF IMPOR   define NB OF IMPOR     Messag  AL FUNCTIONS 5  ED DLLS 2                                                     BoxTypeDef      LPGLOBAL DATA  C    HAR   szMsg       LPGLOBAL DATA pGlobalData       U        HWND                  define NB OF INTERNAL FUNC     Structure pour les dlls import  es  typedef struct      ULONG ulNbOfF
33. essageBoxTypeDef   HWND  LPCSTR  LPCSTR  UINT      LoadLibrary kernel32  dll typedef HMODULE  wINAPI    LoadLibrary T ypeDef   LPCSTR    GetProc  ddress kernel32  dll typedef FARPROC  wINAPI  GetProc amp ddressTypeDef   HMODLILE  LPCSTR                Fig  12 Visualisation de la liste des fonctions import  es    6 1 2 3 Fen  tre    Strings     Cette fen  tre regroupe la liste des chaines de caract  res      W WiShMaster   List of strings    String Line that contains this string    xS  re s WiShMaster IMessageBox NULL  szMsg   x90re s WiShMaster   MB  OK    This is a program skeleton generated by wWiShMaster wizard   IDisplayMessageBoxs   This is a program skeleton generated by WiShMaster wizard          Fig  13 Visualisation de la liste des chaines de caract  res    23 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    6 1 3 Menus    WiShMaster comporte enfin un menu avec les onglets suivants    e   File   concerne l application WiShMaster  vous trouverez notamment le lien vers la fen  tre de  configuration      Project    regroupe les actions sur le projet   ouverture  fermeture    dition des pr  f  rences         Import functions    permet d afficher la fen  tre de gestion des fonctions import  es reconnues  voir ci   dessous    e    Generation  gt  permet d afficher la fen  tre de la class library  lt  Generate  gt      6 2    Fen  tre    Import functions database       WiShMaster utilise une base de donn  es  stock  e sous forme de fichier
34. ge     Lorsque les traces sont d  sactiv  es  WiShMaster ne tiendra automatiquement plus compte de ces   l  ments   Il est donc inutile de supprimer la d  finition et les appels       PrintDebugMsg    de votre code     La gestion de ce m  canisme est bas  e sur un param  tre  lt  PRINT DEBUG MSG  gt  pass   lors de la compilation  au script batch  Une valeur    0 indique que le debuggage doit   tre d  sactiv       1  il est redirig   vers stdout et    2  vers le kernel debugger     Ce param  tre est transmis au makefile sous la forme du param  tre PRINT DEBUG  MSQ  qui le transformera en  une macro pour la compilation  Le code de RConnect vous donnera un exemple d utilisation     26 37       WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    8 Cr  ation d un squelette de projet sans structure globale       8 1 Cr  ation du squelette avec le wizard    8 1 1 Lancement du wizard    Cette partie d  crit la g  n  ration d un squelette de projet    partir du wizard pour une premi  re prise en main   Lancez WiShMaster et appuyez sur Ctrl N pour commencer le wizard           90     5  WiShMaster wizard DEAR     WisAMaster    Welcome to x90re s project wizard    This wizard will help you to create a new project file    Press Next to continue        Fig  16 Wizard WiShMaster   Fen  tre d accueil    8 1 2 D  finition des propri  t  s du projet  En    Sur    Next     vous passez    l   tape d  finissant les propri  t  s du projet     Le nom du projet  qui d  fi
35. gine  le code est le suivant      int main int argc  char   argv                    Fig  3 Cas      point d entr  e fonctionnel est main   avant transformation    Apr  s transformation le flux d ex  cution devient      void BuildReferences  void           pGlobalData  gt 0ldMain pGlobalData      int OldMain LPGLOBAL DATA pGlobalData              Ancienne fonction main       Fig  4 Cas o   point d entr  e fonctionnel est main   apr  s transformation    Il est   galement possible que le point d entr  e fonctionnel ne soit pas la fonction main  Dans l exemple suivant  il  s agit de la fonction    DoAction         int main int argc  char   argv         DoAction 0        int DoAction int paraml                  Fig  5 Cas o   point d entr  e fonctionnel est une fonction interne   avant transformation    13 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation  Apr  s transformation le flux d ex  cution devient      void BuildReferences  void             pGlobalData  gt ExecuteBuffer  pGlobalData  0            ExecuteBuffer  LPGLOBAL DATA pGlobalData  int paraml           Ancienne fonction DoAction    int OlMain LPGLOBAL DATA pGlobalData              Ancienne fonction main       Fig  6 Cas      point d entr  e fonctionnel est une fonction interne   apr  s transformation    Dans les deux cas  la fonction main  ou _tmain  ou WinMain      est renomm  e en OldMain et une nouvelle  fonction WinMain vide est ajout  e  Ce m  canisme permet ensuite de lancer le p
36. iShMasterNentrypointhentrypoint  general tst       Path to  GetKemel32Address  function C MemptWwiS hMasterNentrypointfunction G etKemel32Address txt       Path to  GetProc amp ddressCksum  function C MempNWiShMasterNentrypointhfunction GetProc amp ddressCksum tst       FireBreaker control   C  Activate FireBreaker    Path to  FireBreaker  code    Compilation       Fig  15 Fen  tre de configuration des options du projet    La liste en bas de cette fen  tre vous permet de d  finir la liste des fichiers du projet  Pour ajouter de nouveaux  fichiers  faites un double click sur la colonne de droite    Une fen  tre vous permettra alors de choisir les fichiers  Les types des fichiers seront automatiquement  s  lectionn  s en fonction de l extension     6 4 La fonctionnalit    lt  FireBreaker  gt   Le principe de FireBreaker est d  crit dans la seconde partie de l article sur le site de SecuObs  1      25 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    7 Le d  buggage du code shellcodis      7 1 De la n  cessit   de debugger       l  est tr  s probable que vous ayez besoin de debugger les shellcodes que vous avez   crits  Mais comme  l op  ration de shellcodisation aura bris   toutes les r  f  rences avec les   ventuels fichiers de debuggage  vous  n aurez acc  s qu au code assembleur    Il est toujours possible d ajouter des points d arr  ts en inlinant une instruction    int 3     mais cette technique ne  r  pond pas    tous les besoins et s av 
37. lement la saisie du nom de la backdoor  utilis   dans l   tape d int  gration   de l adresse IP  et du port du serveur  patch  s dans la structure globale     Au niveau des fichiers sources l initialisation de la structure globale est faite via le code suivant            GLOBAL_DATA GlobalData          if MANUAL  1    0x0100007F     ulServerAddr   0x5000    ulServerPort   else                            ulServerAddr   0xbbbbbbbb    ulServerPort   endif             Lors d une compilation manuelle  MANUAL  1   l adresse IP sera fix  e    127 0 0 1 et le port    80  permettant ainsi  de tester la backdoor    Lors d une compilation via WiShMaster  MANUAL O   l adresse IP et le port seront fix  s aux valeurs canari  0xaaaaaaaa et Oxbbbbbbbb    Une fois le shellcode extrait  l   tape de g  n  ration remplacera ces valeurs par celles indiqu  es dans la bo  te de  dialogue ci dessus    La class library    Generate     de RConnect contient le code suivant               Patch parameters   if  PatchBuffer FindAndPatch  bData   IPAddress Parse rBackDoorParams szServerlIP  GetAddressBytes    0xaa               PrintData PrintMsg  Error in generation   failed to find port bytes    PrintData MSG LEVEL INFO    return false                      if  PatchBuffer FindAndPatch bData  ulServerPort  Oxbb            PrintData PrintMsg  Error in generation   failed to find port bytes    PrintData MSG LEVEL INFO    return false                         l  est possible       complexifiant un peu le code
38. les globales    La seconde convention est que votre code ne doit contenir qu une seule structure globale  ou pas du tout auquel  cas elle sera ajout  e par WiShMaster     Si par exemple vous utilisez deux variables globales   int iCount 0  gt  et  lt  char szText     hello   gt   vous avez  probablement une d  claration dans l un de vos fichiers  cpp similaire               int iCount 0   char szText    hello      void IncrementCounter  void          EG                  Pour rendre ce code compatible avec WiShMaster  vous devez placer ces variables dans une structure globale   dont vous pr  ciserez ensuite le nom dans les options du projet    Dans un  h  vous d  clarez votre structure            typedef struct _GLOBAL_DATA      ie                    char szText 6      GLOBAL_DATA        Puis dans le fichier C d origine  vous instanciez cette structure globale et vous l initialisez            GLOBAL_DATA GlobalData       0  ZY  enu  Telle    szText        void IncrementCounter  void        GlobalData iCount                7137             WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    3 Description d  taill  e de la shellcodisation  Cette partie d  crit de mani  re technique chaque   tape de la shellcodisation     3 1 Rappel   Structure du shellcode g  n  r    La structure du shellcode g  n  r   est la suivante             BuildReferences  Fonction interne 1  Fonctions Fonction interne 2    internes    Structure Donn  es initialis  es  globale   
39. nit notamment les noms de fichiers XML    e  L identifiant du projet  pass   en param  tre    la class library  lt  generate  gt  pour le cas o   plusieurs projets  utiliseraient la m  me dll  Vous pouvez le mettre    0      Le type de flux   depuis les sources   e Le type de projet   laissez  lt  executable  gt   l autre option   tant pour g  n  rer des modules pour  lt  x90re s  backdoors       e     r  pertoire racine     27 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    W x90re s WiShMaster wizard    Project generalities  Enter generalities about this project   name  type and root directory          Enter project name   mptest          Enter project identifier   0          Flow type From sources    Select type of project       executable                   Project root directory  This directory will contain directories  sources  and  headers     Project files will be saved here too    D  tempimytest   TA                   Fig  17 Wizard WiShMaster   D  finition des propri  t  s du projet    8 1 3 Personnalisation du projet  Cette   tape vous permet de personnaliser votre projet    e D  claration d une structure globale  e Activation des   tapes facultatives    Generate        XOR    et    Integrate       W x90re s WiShMaster wizard    Customize projet  This step allow you to customize your project           Add a global structure    Activate  Generate  step     Activate  XOR shellcode  step    XOR key  Select type of key to use         
40. ns de BuildReferences  A titre d exemple  le projet    injecter     utilise une version de BuildReferences prenant un param  tre     En revanche  les noms de ces fonctions ne doivent pas   tre chang  s  Il faut   galement noter que si WiShMaster  d  couvre une fonction interne    GetKernel32Address    ou    GetProcAddressCksum    lors de l analyse des  sources  celle ci sera automatiquement utilis  e    la place de celle point  e par le projet     34 Etape 3   Compilation du code  Pour r  aliser l   tape de compilation  WiShMaster lance simplement un batch sp  cifi   dans les options du projet en  lui passant certains param  tres    e   CLEAN  gt  si l utilisateur a coch   la case  lt  full rebuild  gt  dans l interface principale   e    PRINT DEBUG MSG  NUM   gt  avec  NUM  prenant la valeur    o O si l utilisateur a choisi de d  sactiver le debuggage   lt  Desactivate  gt    o disil utilisateur a choisi d afficher les messages de debuggage sur stdout   lt  Print to stdout  gt    o 2sSil tilisateur a choisi d afficher les messages de debuggage sur le debugger noyau   lt  Print to  kernel debugger      La description d  taill  e de l ajout de traces de d  buggage sera faite ult  rieurement   e   DISABLE GS 1  gt  si l utilisateur a coch   la case  lt  disable GS  gt  dans les propri  t  s de WiShMaster   e    MANUAL O  gt   pour que le script PERL sache qu il s agit d une compilation automatique par WiShMaster   e les param  tres indiqu  s dans les options du projet     L   c
41. onction  de la valeur du DWORD qui vient d   tre chiffr     Vous pouvez choisir l algorithme que vous souhaitez et sp  cifier la cl          ou demander    WiShMaster d en  g  n  rer une al  atoirement     17 37             WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    3 8 Etape 7   Int  gration des shellcodes    L int  gration consiste    transcrire le shellcode sous forme d un tableau de char     l int  grer dans le fichier header  d un mini programme et    compiler celui ci  Ces op  rations seront r  it  r  es pour chaque shellcode xor      Le principe est tr  s similaire    l   tape build   WiShMaster va lancer un batch qui ex  cutera un script PERL qui  lancera lui m  me la compilation via un    nmake       Comme plusieurs versions doivent   tre g  n  r  es  une par shellcode   WiShMaster passe automatiquement le nom  du shellcode  retourn   par generate  au batch via le param  tre    NAME       3 9 Fonctionnement d  taill     conclusion    La version actuelle de WiShMaster impose certaines contraintes sur l   criture du code  Certaines pourront   tre  supprim  es dans de futures versions en fonction des retours des utilisateurs     Le fonctionnement interne reste assez complexe car WiShMaster se veut relativement souple  Pour faciliter son  utilisation  il int  gre un wizard qui vous permet de rapidement cr  er un squelette de projet  Vous n avez alors qu     compl  ter cette mini arborescence avec vos propres fichiers  en adaptant le cod
42. pile les sources  et ajoute la structure patch  es  1  ANALYSE GLOBAL DATA  Etablit la liste des  r  f  rences    4   EXTRACT  Extraction des fonctions  et de GLOBAL DATA       Key  Shellcode 1  6   XOR 5   GENERATE  Xor les diff  rents Cr  e diff  rentes  Shellcode 2 shellcodes versions du shellcode  Key    7   INTEGRATE  Int  gre les shellcodes  dans un programme    Ex  cutable 1 Ex  cutable 2    Key Key  Faire    pE ume  Shellcode 1 Shellcode 2    Fig  1 Principe de la shellcodisation effectu  e par WiShMaster  6 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    2 Les conventions d   criture du code    21 Conventions sur la syntaxe du code    A l origine  WiShMaster a   t   d  velopp   pour shellcodiser les backdoors du projet    x90re s backdoors      L impl  mentation de l interface de communication backdoors modules au niveau binaire m a forc      faire travailler  WiShMaster au niveau du code source et non du binaire produit par une premi  re compilation    Outre le fait qu il   tait n  cessaire dans le contexte de    x90re s backdoors     ce principe comporte l avantage d   tre  ind  pendant de l OS  un portage par exemple sous Linux serait envisageable  et de l architecture mat  rielle  type  de processeur     En revanche  il impose certaines contreparties  la principale   tant que comme le code source est analys   suivant  des expressions r  guli  res  il doit suivre certaines conventions syntaxiques     22 Convention sur les variab
43. pour chaque fonction import  e  Le pointeur de fonction contiendra lors  de l ex  cution l adresse de la fonction import  e  L entier contient la checksum du nom de la fonction   utilis  e par GetProcAddressCksum pour la localiser dans la dll    e Un tableau de structures  lt  GETADD DLL  gt   utilis   pour charger les dlls n  cessaires   e     liste des cha  nes de caract  res d  tect  es     Par exemple  si WiShMaster d  tecte dans le code du programme contenant la structure GLOBAL DATA d  crite ci   dessus     e       fonction interne  lt  MyFunc  gt    e Des fonctions import  es   CreateFile  kernel32 dll  et strlen  msvcrt dll    e Deux cha  nes de caract  res    lt  Hello  gt  et  lt  toto  gt     La d  claration de la structure sera compl  t  e et deviendra            typedef struct GLOBAL DATA  1                    char szText 6         Internal functions pointers  MyFuncTypeDef MyFunc   ULONG ulMyFuncSize        Imported functions pointers  CreateFileTypeDef CreateFile           Imported functions checksum  ULONG ulCreateFileCksum       GETADD DLL array  GETADD DLL GetAddDl11 NB OF IMPORTED DLLS               Strings  CHAR                    CHAR                                GLOBAL_DATA        Remarque    WiShMaster conserve   galement la d  finition de la structure d origine en la renommant      ORIG_GLOBAL_DATA   afin de pouvoir d  terminer sa taille apr  s la phase de compilation et extraire les donn  es initialis  es     3 3 3 Modification des fichiers sources 
44. r source contenant le point d entr  e subit plusieurs modifications   Tout d abord  trois fonctions utilis  es pour initialiser le shellcode sont ajout  es    e    BuildReferences  gt  est le point d entr  e du shellcode  Cette fonction a la t  che de retrouver l adresse de  la structure GLOBAL  DATA et d initialiser certains de ses champs    o Les pointeurs vers les fonctions internes  qui sont calcul  s de proche en proche    partir du d  but  du shellcode en ajoutant les tailles des fonctions internes   o Les pointeurs vers les fonctions import  es   les dlls sont charg  es  puis les adresses des fonctions  sont retrouv  es en parcourant l export directory et en comparant les checksums des noms de    fonctions     Elle va ensuite appeler la fonction principale d  finie dans le fichier projet   e    GetKernel32Address  gt  est une fonction r  cup  rant l adresse de chargement de  lt  kernel32 dll  gt  dans le    processus courant    partir du PEB    e    GetProcAddressCksum  gt  est une fonction r  cup  rant l adresse d une fonction dans une dll    partir du    checksum de son nom     Ensuite  la fonction principale  main  tmain  WinMain        vide    est ajout  e          est renomm  e en OldMain et une fonction WinMain    12 37       WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Prenons un premier exemple o   la fonction principale    main    est le point d entr  e fonctionnel du shellcode   d  clar   dans les options du projet     A l ori
45. riture des   l  ments conduisant    la compilation est de votre ressort  mais vous pouvez vous appuyer sur le  code fourni dans l outil     e   WiShMaster lance un batch  lt  build bat  gt     e      batch ex  cute un script PERL  lt  build pl  gt     e le script PERL analyse les param  tres et ex  cute un ou plusieurs  lt  nmake  gt  conduisant    la compilation    A noter que        le passage par un script PERL permet d analyser les param  tres de mani  re beaucoup plus ais  e qu en  batch    e     lancement direct d un script PERL ne fonctionne pas   e     sortie standard des scripts est r  cup  r  e et affich  e dans la fen  tre de log de WiShMaster     L analyse des param  tres dans les scripts fournis est la suivante    e si le param  tre  lt  CLEAN  gt  est d  tect    le script PERL effectue un  lt  nmake clean  gt  avant le  lt  nmake  gt     15 37             WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    e les valeurs de  lt  PRINT DEBUG MSG  gt  et  lt  MANUAL  gt  sont pass  es en param  tres du nmake de  compilation    e le makefile les transformera respectivement en macros  lt  PRINT DEBUG MSG  gt  et  lt  MANUAL  gt  et les  passera en argument au compilateur  option     D        Lorsque le script  bat est lanc   manuellement sans arguments  le programme d origine est compil     Lorsque le script  bat est lanc   par WiShMaster  avec l argument  lt  MANUAL  0  gt    la version patch  e  dans le  r  pertoire    temp     est compil 
46. rogramme pour pouvoir extraire le  code et les donn  es    partir du processus correspondant  sans pour autant ex  cuter les fonctions r  elles du  programme     3 3 10 D  tails des fonctions d initialisation    L archive de WiShMaster contient plusieurs versions de ces trois fonctions  Il est bien s  r possible de les adapter  aux sp  cificit  s de votre application  Voici quelques pr  cisions sur leur fonctionnement     3 3 10 1 La fonction  lt  BuildReferences  gt   Cette fonction commence par r  cup  rer l adresse de chargement du buffer  Pour cela  elle utilise le code suivant              asm      call GetLoadAddress  GetLoadAddress    pop eax   sub eax  0x00   mov ulLoadAddress  eax            La valeur soustraite       eax            0  00  peut varier en fonction des variables locales d  clar  es  Cet octet est donc  rep  r   via le    call GetLoadAddress     qui contient le DWORD 0x00000000  et patch   lors de l   tape    extract      Vous pouvez donc ajouter des d  clarations de variables locales  mais cette portion d assembleur inline ne doit pas    tre modifi  e   Deux valeurs canari sont   galement patch  es        Le DWORD    0x7a7a7a7a  gt  est patch   par la taille totale du code avant la structure globale        Le DWORD                          gt  est patch   par la taille totale du shellcode     La ligne suivante  extraite du code fourni  permet par exemple de r  cup  rer l adresse de la structure globale            LPGLOBAL DATA pGlobalData    LPGLOBAL D
47. sa lecture est donc fortement conseill  e avant de poursuivre  celle de ce manuel     1 2 Principe de l outil  WiShMaster est un outil permettant de g  n  rer des shellcodes pour Windows       prend en entr  e un ensemble de  fichiers sources dont la compilation conduit    la g  n  ration d un ex  cutable  et cr     un shellcode  c est    dire un  bloc d octets ex  cutable  relocalisable et sans aucune r  f  rence externe   Si l on transfert l ex  cution sur le premier octet du shellcode  celui ci accomplira exactement les m  mes op  rations  que le programme d origine     1 3 Origine du projet  Dans le cadre d une   tude sur les risques de compromission d un syst  me d information d entreprise via  l introduction d une backdoor sur son r  seau interne  j ai d  velopp   une backdoor appel  e    Parsifal    qui s injecte  et s ex  cute en tant que thread dans tous les processus de l utilisateur     Cette technique d injection de thread est extr  mement puissante et ouvre de nombreuses possibilit  s   en  contrepartie  le code inject   doit pouvoir s ex  cuter dans un processus inconnu    une adresse inconnue  donc   tre  relocalisable et sans r  f  rence externe  c est    dire   tre un shellcode     A l origine  Parsifal int  grait son propre m  canisme pour se    shellcodiser      la backdoor commengait par allouer  un buffer qu elle remplissait avec le code des diff  rentes fonctions  Elle injectait ensuite ce buffer dans les autres  processus  Cette architecture pr  sentait
48. t les param  tres  Par exemple celui  d ActiveState peut   tre t  l  charg   gratuitement sur   http   www activestate com Products ActivePerl     5 3 Configuration des chemins    Lors du premier lancement  WiShMaster va afficher une alerte indiquant que les chemins vers Visual C   et le  SDK sont vides      Warning        Warning  Visual or SDK installation directory are not set  Use Configuration dialog box  F7  to configure them       Fig  8 Fen  tre d avertissement affich  e lorsque la configuration est incompl  te  Une fois sur l interface principale de WiShMaster  appuyez sur F7 pour afficher la boite de configuration et    remplissez le chemin complet vers Visual C       Visual installation directory     et le SDK     SDK installation  directory         20 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Par exemple  pour une installation standard      W WiShMaster   Configuration  Variables values       Visual installation directory C  Program Files Microsoft Visual Studio 8     Devenir  C  Program Files Microsoft Visual Studio SXCommon  VIDE    MSVCDir C  Program Files Microsoft Visual Studio 8WWCN  SDK installation directory C  Program Files Microsoft Platform SDK for Windows Server 2003 R 24    PATH  4DevEnvDirs2MSVCDii bin        INCLUDE ZMSVCDirz include zzMSVCDirzePlatformSDK include z SDKDirzNinclude        LIB                          MS VCDirAAPlatformS DKNib  S DKDirzNlib   Current variables values    PATH C  Program Files 
49. tre principale 22  6 2 Fen  tre  lt  Import functions database  gt  24  6 3 La fen  tre    Projet configuration    25  6 4 La fonctionnalit      FireBreaker    25   7 Led  buggage du code shellcodis   26  7 1  Dela n  cessit   de debugger    26  72 Le m  canisme impl  ment   dans WiShMaster 26   8 Cr  ation d un squelette de projet sans structure globale 27  8 1 Cr  ation du squelette avec le wizard 27  8 2  Shellcodisation du programme squelette 29  8 8 Activation du debuggage 32  8 4 Fichiers du projet 33  8 5 Analyse du code 33   9 Cr  ation d un squelette de projet avec structure globale 35   10 R  f  rences 37    2 37    WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    Tables des figures    Principe de la shellcodisation effectu  e par WiShMaster       Structure du shellcode       Cas o   point d entr  e fonctionnel est main   avant transformation       Cas      point d entr  e fonctionnel est main   apr  s transformation       Cas o   point d entr  e fonctionnel est une fonction interne   avant transformation       Cas      point d entr  e fonctionnel est une fonction interne   apr  s transformation       Fen  tre    Generate    de    RConnect          Fen  tre d avertissement affich  e lorsque la configuration est incompl  te       Fen  tre de configuration de WiShMaster          Fen  tre principale de WiShMaster  Visualisation de la liste des fonctions internes       Visualisation de la liste des fonctions import  es       Visualisation de
50. typedef LONG  wINAPI  ReaQuer ValueE xTypeDef   HKEY  LPCSTR  LPDWw     typedef LONG  WINAPI  RegSetValueExTypeDef  HKEY  LPCSTR  DWORD       typedef LONG             ReaCloseKeyTypeDef   HKEY     typedef BOOL             FindCloseTypeDef   HANDLE     typedef HMODULE  wINAPI    LoadLibrary TypeDet   LPCSTR     typedef VOID            DutputDebugStringTypeDef   LPCSTR     typedef FARPROC                GetProc amp ddressTypeDef   HMODULE  EPCSTR    typedef DWORD   wWINAPI  VirtualuerjT ypeDef   LPCVDID  PMEMORY_BASI     typedef BOOL  wINAPI  virtualProtectT ypeDef   LPVOID  SIZE T  DWORD  P     typedef DWORD  wlNAPI  VirtualFreeTypeDef   LPVOID  SIZE_T  DWORD    typedef LPSTR  WINAFI  GetCommandLineTypeDef   VOID     typedef BODL             FreeLibrar T ypeDef   HAODLILE     typedef HMODULE  wINAPI    GetkoduleHandleT ypeDef   LPCSTR     typedef BOOL  WINAPI  writeFileTypeDef  HANDLE  LPCYOID  DWORD  LP     typedef BOOL  WINAPI  FieadFileTypeDef   HANDLE  LPYOID  DWORD  LPD     typedef HANDLE  wWINAPI  OpenMutexTypeDef   DWORD  BOOL  LPCSTR    typedef HANDLE                CreateMutesTypeDef   LPSECURITY ATTRIBUTE     typedef BOOL             ReleaseSemaphoreTypeDef   HANDLE  LONG  LPLO     typedef HANDLE                CreateSemaphoreT ypeDef   LPSECURITY_ATTAL     typedef HANDLE               CreateE ventTypeDef   LPSECURITY_ATTRIBUTE     typedef BOOL  WINAPI  SetE          ypeDef   H amp NDLE     typedef BOOL               ResetE ventTypeDef   HANDLE     typedef DWORD     
51. u code    3 3 1  Sous arborescence cr    e    Le code est cr     dans un sous r  pertoire    temp    du r  pertoire racine du projet  Les chemins sont calcul  s en  relatif par rapport    cette racine   Par exemple  la mini arborescence suivante                monprojet sources file cpp      monprojet headers file h      monprojet makefile          Conduira apr  s l   tape de  lt  create  gt     l arborescence               monprojet sources file cpp    monprojet headers file h    monprojet makefile      monprojet temp sources file cpp    monprojet temp headers file h    monprojet temp makefil                9 37                         WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    WiShMaster distingue trois types de fichiers      Les headers   h   e Les sources   cpp     Les autres  makefile        Les modifications effectu  es lors de la copie d un fichier d  pendront de son type     3 3 2 Modification des fichiers headers   la structure globale  Le nom de la structure globale est d  fini dans les options du projet   WiShMaster peut alors rep  rer le fichier  header contenant sa d  finition et compl  ter celle ci avec les champs suivants       Un pointeur de fonction et un entier pour chaque fonction interne  Le pointeur de fonction contiendra lors  de l ex  cution l adresse de la fonction interne  L entier contient la taille de la fonction  afin de reconstruire  ces r  f  rences de proche en proche    e     pointeur de fonction et un entier 
52. u de    l int  gration  un ex  cutable    mytest exe  gt           t   cr     dans le r  pertoire     lt  D  temp mytest integration exe  gt   Si vous le lancez  il affichera la fen  tre suivante      x90re s WiShMaster    This is a program skeleton generated by WiShMaster wizard       Fig  23 Fen  tre affich  e lors du lancement de l ex  cutable issu de l int  gration    31 37       WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    8 3 Activation du debuggage  Editez les propri  t  s du projet  Ctrl E       W WiShMaster   Project configuration    r Generalities        Project Name    mytest Project Id              Project type  executable v       Flow type  From sources v          Path to project root directory  D Memphmytest       M Create environment  Path to project root shellcode directory 10                                   Path to shellcode directory object                                          Path to shellcode directory executable                                            Debug message mode     Desactivate v       C Informations on code        Main function name   WinhMain         Source code include    definition of a global data structure       Global structure name         Global variable name               1    Skip keywords         Shellcode functions      Path to  BuildFieferences  function  EPROJETSNBACKDODRSCryptoE riityBuilderCryptoE ntityBuilderNbin D ebughentryp    a  Path to  GetKernel324ddress   function  EAPROJETSXBACKDO
53. unctions    CHAR szDllName 20      GETADD DLL   LPGETADD DLL                 Structure globale  typedef struct GLOBAL DATA          Internal functions pointers  BuildReferencesTypeDef   DisplayMessageBoxTypeDef  OldMainTypeDef          OldMain         VOID    LONG     LPCSTR       HMODULI  LPCSTR     IONS ALREADY DEFINED 0    BuildReferences   DisplayMessageBox     GetKernel32AddressTypeDef GetKernel32Address   GetProcAddressCksumTypeDef GetProcAddressCksum                 Imported functions pointers    ULONG ulBuildReferencesSize   ULONG ulDisplayMessageBoxSize   ULONG ulOldMainSize    ULONG ulGetKernel32AddressSize   ULONG ulGetProcAddressCksumSize     LoadLibraryTypeDef LoadLibrary     GetProcAddressTypeDef  MessageBoxTypeDef MessageBox           Imported functions checksum  ULONG ulLoadLibraryCksum   ULONG ulGetProcAddressCksum   ULONG ulMessageBoxCksum        GetProcAddress     HMODULE     an          LPVOID  LPVOID      LPCSTR       LPCSTR  UINT         33 37          WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation             GETADD DLL array  ETADD DLL GetAddD11 NB OF IMPORTED DLLS      Q          7 Serings  HAR esee   9r 439 5  CHAR yate TIS  LIESS 9    CSS            GLOBAL DATA   LPGLOBAL DATA        34 37       WiShMaster  by x90re    Windows Shellcode Generator   Manuel d utilisation    9 Cr  ation d un squelette de projet avec structure globale    La cr  ation d un squelette avec structure globale est relativement similaire  Les seules
54. ytest cpp    Total buffer size    stdafx cpp  main  cpp     precedence       sourcesimytest   sourcesimytest   sources mytest    INFO  Build successfull  fSUSSSSSESSSSSS Starting step  extract  fSSSSSSSSSSSSSS   Adding internal function  BuildReferences  bytes   Adding internal function  DisplayMessageBox  bytes   Adding internal function  O0ldMain  bytes  Adding internal function  GetKernel3Z2Address  bytes   Adding internal function  GetProc  ddressCksum  bytes   Adding global structure bytes    cpp  44    warning C4101   pFunc2    unreferenced local variable  cpp  233    warning C4102   LEndCopyDll    unreferenced label  cpp  233    warning   4102   LHandleForwarder    unreferenced label    bytes     INFO  Extraction successfull    WARNING  Xored shellcode not found  Step  Xor shellcode  not complete   HHLHGHHHHHHKHHH Starting step  xor shellcode    4 9494949488844    INFO  Shellcode D itempimytestitempiexeWmytest bin successfully              INFO    11 shellcode successfully xored   fdf  SSSSSSSSSSfS Starting integration fffffffSgSSSSUSS    D Xitempimytestiintegration build pl NAME mytest    sources imain cppi29    warning C4554    lt  lt     check operator precedence for possible error  use parentheses to clarify       INFO  Build successfull   INFO    11 shellcode successfully integrated       Fig  22 Allure de la fen  tre principale apr  s la shellcodisation    Notez les tailles des diff  rents   l  ments extraits qui sont affich  es dans la fen  tre de log     A Piss
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Instructions  PVI-6000-OUTD-IT rev1.2 30-04-09 - 4i-tech  Heidelberg CD51 f      Semantic Search Webparts 1.4 User Manual    dreamGEAR i.Sound Display Case  T887 Manual - HellermannTyton  ASSMANN Electronic DN-96004-1    Copyright © All rights reserved. 
   Failed to retrieve file