Chercher :
Newsletter :  


Revues :
- Presse
- Presse FR
- Vidéos
- Twitter
- Secuobs





Sommaires :
- Tendances
- Failles
- Virus
- Concours
- Reportages
- Acteurs
- Outils
- Breves
- Infrastructures
- Livres
- Tutoriels
- Interviews
- Podcasts
- Communiques
- USBsploit
- Commentaires


Revue Presse:
- Tous
- Francophone
- Par mot clé
- Par site
- Le tagwall


Top bi-hebdo:
- Ensemble
- Articles
- Revue
- Videos
- Twitter
- Auteurs


Articles :
- Par mot clé
- Par auteur
- Par organisme
- Le tagwall


Videos :
- Toutes
- Par mot clé
- Par site
- Le tagwall


Twitter :
- Tous
- Par mot clé
- Par compte
- Le tagwall


Commentaires :
- Breves
- Virus
- Failles
- Outils
- Tutoriels
- Tendances
- Acteurs
- Reportages
- Infrastructures
- Interviews
- Concours
- Livres
- Communiques


RSS/XML :
- Articles
- Commentaires
- Revue
- Revue FR
- Videos
- Twitter


RSS SecuObs :
- sécurité
- exploit
- windows
- attaque
- outil
- réseau


RSS Revue :
- security
- microsoft
- windows
- hacker
- attack
- network


RSS Videos :
- curit
- security
- biomet
- metasploit
- biometric
- cking


RSS Twitter :
- security
- linux
- botnet
- attack
- metasploit
- cisco


RSS Comments :
- Breves
- Virus
- Failles
- Outils
- Tutoriels
- Tendances
- Acteurs
- Reportages
- Infrastructures
- Interviews
- Concours
- Livres
- Communiques


RSS OPML :
- Français
- International











Revue de presse francophone :
- Le Drian lance le chantier du système d information des armées , près de Rennes
- POUR UNE ECOLE FRANÇAISE DU RENSEIGNEMENT
- Vigilance - Cisco IOS XR déni de service via ICMPv6 Redirect, analysé le 04 04 2014
- Vigilance - Cisco IOS, IOS XE déni de service via IKE Main Mode, analysé le 04 04 2014
- Vigilance - GnuTLS acceptation de certificat avec un CA non autorisé pour handshake, analysé le 04 04 2014
- Vigilance - GnuTLS acceptation de certificat avec un CA non autorisé pour serveur, analysé le 04 04 2014
- Vigilance - GnuTLS acceptation de certificat avec une extension critique inconnue, analysé le 04 04 2014
- Vigilance - GnuTLS acceptation de certificat autosigné, analysé le 04 04 2014
- Vigilance - PolarSSL acceptation de certificat avec un CA non autorisé pour handshake, analysé le 04 04 2014
- Vigilance - PolarSSL acceptation de certificat avec un CA non autorisé pour serveur, analysé le 04 04 2014
- Vigilance - PolarSSL acceptation de certificat pas encore valide, analysé le 04 04 2014
- Vigilance - PolarSSL acceptation de certificat expiré en timezone, analysé le 04 04 2014
- Vigilance - GnuTLS acceptation de certificat avec un CA intermédiaire non autorisé, analysé le 04 04 2014
- Vigilance - GnuTLS acceptation de certificat avec un CA non autorisé à signer, analysé le 04 04 2014
- Vigilance - Cacti injection shell via lib rrd.php, analysé le 03 04 2014

Dernier articles de SecuObs :
- Le ministère de l'intérieur censure une conférence au Canada
- Saut d'air gap, audit de firmware et (in)sécurité mobile au programme de Cansecwest 2014
- GCHQ: Le JTRIG torpille Anonymous qui torpille le JTRIG (ou pas)
- #FIC2014: Entrée en territoire inconnu
- Le Sénat investit dans les monnaies virtuelles
- #LPM2013: Un nouvel espoir ?
- L'ANSSI durcit le ton
- Assises 2013: Nouvel élan de jeunesse
- OWASP Framework Security Project, répertorier et fixer les contrôles de sécurité manquants
- Le bracelet Nimy, une solution d'authentification à 3 facteurs utilisant un capteur d'ECG

Revue de presse internationale :
- Hacker resurrects late atheist Hitchens on Easter to push weight loss drug
- Dynamic LED table project As Seen on Show Tell
- The thinnest membrane technologically possible has been produced and it s 100,000 times thinner than the diameter of a human hair.
- Ariel Waldman Let s Imagine Greater campaign womeninSTEM
- Scanning for Heartbleed using Acunetix
- Ways to Keep your Developers Interested in Web Security
- General Mills Retracts No Right to Sue EULA Clause
- Top 10 Most Pirated Movies of The Week 04 21 14
- P2P Zeus Performs Critical Update
- ARM instructions in easily parseable format
- A New Book on the 2,000-Year History of GPS Tracking
- From the Forums 16 16 neopixel arduino nano eclipse plugin success NeoPixel arduino
- Download VHD from Windows Azure
- Cybersecurity Skills Gap Continues to Grow
- Preliminary Postmortem on Heartbleed A Lesson in Crisis Management

Annuaire des videos
- FUZZING ON LINE PART THREE
- Official Maltego tutorial 5 Writing your own transforms
- Official Maltego tutorial 6 Integrating with SQL DBs
- Official Maltego tutorial 3 Importing CSVs spreadsheets
- install zeus botnet
- Eloy Magalhaes
- Official Maltego tutorial 1 Google s websites
- Official Maltego tutorial 4 Social Networks
- Blind String SQL Injection
- backdoor linux root from r57 php shell VPS khg crew redc00de
- How To Attaque Pc With Back Track 5 In Arabique
- RSA Todd Schomburg talks about Roundup Ready lines available in 2013
- Nessus Diagnostics Troubleshooting
- Panda Security Vidcast Panda GateDefender Performa Parte 2 de 2
- MultiPyInjector Shellcode Injection

Revue Twitter
- RT @fpalumbo: Cisco consistently leading the way ? buys vCider to boost its distributed cloud vision #CiscoONE
- @mckeay Looks odd... not much to go on (prob some slideshow/vid app under Linux)
- [SuggestedReading] Using the HTML5 Fullscreen API for Phishing Attacks
- RT @BrianHonan: Our problems are not technical but cultural. OWASP top 10 has not changed over the years @joshcorman #RSAC
- RT @mikko: Wow. Apple kernels actually have a function called PE_i_can_has_debugger:
- [Blog Spam] Metasploit and PowerShell payloads
- PinkiePie Strikes Again, Compromises Google Chrome in Pwnium Contest at Hack in the Box: For the second time thi...
- @mikko @fslabs y'all wldn't happen to have lat/long data sets for other botnets, wld you? Doing some research (free/open info rls when done)
- RT @nickhacks: Want to crash a remote host running Snow Leopard? Just use: nmap -P0 -6 --script=targets-ipv6-multicast-mld #wishiwaskidding
- An inexpensive proxy service called is actually a front for #malware distribution -

Mini-Tagwall
Revue de presse : security, microsoft, windows, hacker, attack, network, vulnerability, google, exploit, malware, internet, remote, iphone

+ de mots clés pour la revue de presse

Annuaires des videos : curit, security, biomet, metasploit, biometric, cking, password, windows, botnet, defcon, tutorial, crypt, xploit

+ de mots clés pour les videos

Revue Twitter : security, linux, botnet, attack, metasploit, cisco, defcon, phish, exploit, google, inject, server, firewall

+ de mots clés pour la revue Twitter

Top bi-hebdo des articles de SecuObs
- [IDS Snort Windows – Partie 2] Installation et configuration
- #FIC2014: Entrée en territoire inconnu
- [Ettercap – Partie 2] Ettercap par l'exemple - Man In the Middle et SSL sniffing
- [IDS Snort Windows – Partie 4] Conclusion et webographie
- [IDS Snort Windows – Partie 3] Exemple de fichier de configuration
- [Trames et paquets de données avec Scapy – Partie 5] Traceroute et visualisation 2D/3D
- Powerpreter, un nouveau module Powershell de post-exploitation pour Nishang 0.3
- Le ministère de l'intérieur censure une conférence au Canada
- EFIPW récupère automatiquement le mot de passe BIOS EFI des Macbook Pro avec processeurs Intel
- OSSTMM une méthodologie Open Source pour les audits de sécurité

Top bi-hebdo de la revue de presse
- Using masscan to scan for heartbleed vulnerability
- Introducing the rsyslog config builder tool
- 1,103 Megaupload Servers Gather Dust at Virginia Warehouse
- Windows Zero-Day Vulnerability Researched by Microsoft
- Du bitcoin à  l auroracoin, les cryptomonnaies en plein essor
- OpenSSL bug CVE-2014-0160
- INSIDE Secure acquiert Metaforic
- cartographie en France et au Luxembourg des Data Center - édition 2014
- Move Active Directory users to a group with PowerShell
- RS485 Arduino Network showandtell adafruit6secs

Top bi-hebdo de l'annuaire des videos
- Tutorial 14 Pfsense OpenVpn RoadWarrior VPN
- Backtrack 5r3 Armitage Metasploit
- Tutorial 15 pfSense Squid Squidguard Content filtering
- Comment Pirater Un Ordinateur Avec Ubuntu Metasploit
- Hak5 1408 1 Reviewing Kali Linux and USB Rubber Ducky Payload Generator
- Comment creer un server botnet!!!!(Réseau de pc zombies)
- Bbkeyswin WPA d une Bbox en 2 min sous Windows
- Metasploit msrpc exploit
- configuration in gns3 dual wan setup and vmware pfsense 2 0 lusca cache
- Tutoriel Supprimer Cacaoweb Botnet

Top bi-hebdo de la revue Twitter
- Zombies are attacking America – researchers: Banking sector DDoSers 'used botnets', say security boffins. Hackers re…
- PinkiePie Strikes Again, Compromises Google Chrome in Pwnium Contest at Hack in the Box: For the second time thi...
- [SuggestedReading] Using the HTML5 Fullscreen API for Phishing Attacks
- [Blog Spam] Metasploit and PowerShell payloads
- @mikko @fslabs y'all wldn't happen to have lat/long data sets for other botnets, wld you? Doing some research (free/open info rls when done)
- #networksecurity #cloud Expert QA: Cloud computing, HIE will be the 'new normal' - Ken Ong: The National Institute ...
- Zombies are attacking America – researchers - Banking sector DDoSers 'used botnets', say security boffins Hackers re...
- An inexpensive proxy service called is actually a front for #malware distribution -
- RT @BrianHonan: Our problems are not technical but cultural. OWASP top 10 has not changed over the years @joshcorman #RSAC
- RT @mikko: Wow. Apple kernels actually have a function called PE_i_can_has_debugger:

Top des articles les plus commentés
- [Metasploit 2.x – Partie 1] Introduction et présentation
- Microsoft !Exploitable un nouvel outil gratuit pour aider les développeurs à évaluer automatiquement les risques
- Webshag, un outil d'audit de serveur web
- Les navigateurs internet, des mini-systèmes d’exploitation hors de contrôle ?
- Yellowsn0w un utilitaire de déblocage SIM pour le firmware 2.2 des Iphone 3G
- CAINE un Live[CD|USB] pour faciliter la recherche légale de preuves numériques de compromission
- Nessus 4.0 placé sous le signe de la performance, de l'unification et de la personnalisation
- [Renforcement des fonctions de sécurité du noyau Linux – Partie 1] Présentation
- [IDS Snort Windows – Partie 1] Introduction aux IDS et à SNORT
- Origami pour forger, analyser et manipuler des fichiers PDF malicieux

Tutoriels

English version with Google Translate

[WiShMaster - partie 3] Principe de shellcodisation avec WiShMaster (2)

Par Benjamin Caillat, Mastère Spécialisé Sécurité ESIEA
Le 16/09/2006


Résumé : La fonction BuildReferences. L’adresse de la structure globale. Les pointeurs vers des fonctions internes et des fonctions importées. Personnalisation des shellcodes. WiShMaster en quelques screenshots. A qui s’adresse cet outil ? Conclusion intermédiaire du dossier. - Lire l'article



La fonction BuildReferences

La fonction BuildReferences a la responsabilité d’accomplir toutes les taches d’initialisation. Elle se base sur des techniques couramment utilisées dans les shellcodes.


L’adresse de la structure globale

La première étape est de récupérer l’adresse de la structure globale. Il ne faut pas oublier que notre shellcode a été injecté à une adresse totalement inconnue. Pour cela, BuildReferences utilise les quelques instructions d’assembleurs inlinées suivantes :


ULONG ulLoadAddress;

// Récupère l'adresse courante
__asm
{
call GetLoadAddress
GetLoadAddress:
pop eax
mov ulLoadAddress, eax
}



Le call a pour effet d’empiler l’adresse de retour sur la pile, qui est ensuite dépilée dans eax. Après ces quelques instructions, ulLoadAddress contiendra donc l’adresse de l’instruction « pop eax ». En lui ajoutant le nombre d’octets entre cette instruction et la structure globale dans le shellcode, nous obtenons un pointeur sur cette structure.


Les pointeurs vers les fonctions internes

Les pointeurs vers les fonctions internes sont construits de proche en proche en partant de BuildReferences et ajoutant successivement la taille de chaque fonction.


Les pointeurs vers les fonctions importées

L’initialisation des pointeurs vers les fonctions importées est beaucoup plus délicate. Pour chaque fonction, BuildReferences doit éventuellement charger la librairie partagée, puis obtenir l’adresse de la fonction.

L’utilisation de la fonction de Windows « GetProcAddress » se heurte à deux problèmes.

Tout d’abord cette fonction prend en paramètre le nom de la fonction à charger. Notre shellcode devra par conséquent contenir le nom de toutes les fonctions importées, ce qui peut représenter une perte substantielle de place surtout lorsque l’on considère que l’API Win32 regorge de noms à rallonge (WriteProcessMemory, GetExitCodeProcess, SHGetSpecialFolderPath, …).

Ensuite, comment retrouver l’adresse de la fonction GetProcAddress elle-même ?

BuildReferences utilise plutôt une succession de techniques relativement classiques : dans un premier temps, elle récupère l’adresse de chargement de la librairie kernel32.dll via le PEB (Process Environnement Block), une structure user-land de Windows utilisée pour la gestion du processus, dont l’adresse est stockée en fs :[30h].

Elle utilise alors une fonction interne « GetProcAddressCkSum » pour retrouver l’adresse de LoadLibraryA et de GetProcAddress dans kernel32.dll. « GetProcAddressCkSum » prend en paramètre l’adresse de chargement d’une librairie et une checksum sur 32 bits, calculée en appliquant un algorithme de hash sur le nom de la fonction à trouver.

Elle parcourt ensuite l’export directory de la librairie en appliquant ce même algorithme sur tous les noms de fonctions exportés et en comparant le résultat à la checksum fournie.

Enfin, pour chaque fonction importée, BuildReferences va appeler LoadLibraryA pour charger la librairie adéquate. Au lieu d’utiliser GetProcAddress en lui passant le nom de la fonction, elle va alors de nouveau utiliser « GetProcAddressCkSum » en lui fournissant la checksum calculée à partir du nom.

Ainsi le shellcode ne devra contenir qu’un DWORD par fonction importée au lieu d’une longue chaîne de caractères.

Il faut cependant noter que certaines fonctions dans les dlls sont des « forwarders », c'est-à-dire que la référence dans l’export directory ne pointe pas vers la fonction, mais vers une chaîne du type [DLL].[FUNC]. La fonction réelle doit alors être cherchée dans la librairie « DLL » sous le nom « FUNC ».

La fonction « GetProcAddressCkSum » de WiShMaster supporte ce type de structure : elle charge la nouvelle librairie et récupère l’adresse de la fonction désignée. A titre d’exemple, sous Windows XP, les fonctions HeapAlloc et HeapFree pointent respectivement vers NTDLL.RtlAllocateHeap et NTDLL.RtlFreeHeap.

A l’issue de la fonction BuildReferences, l’adresse de la structure globale a été récupérée et ses différents champs ont été initialisés. Nous disposons donc de toutes les données nécessaires pour exécuter le code réel.


L’étape « Generate »

L’étape « Generate » consiste à patcher certaines valeurs du shellcode afin de le personnaliser. Prenons par exemple le cas d’un shellcode effectuant un « reverse connect ». Celui-ci va typiquement contenir dans la structure GLOBAL_DATA l’adresse IP et le port du serveur sur lequel se connecter.

Le principe est d’initialiser ces champs dans les fichiers sources avec des valeurs canari (0xaabbccdd, …). A l’issue de l’étape « Extract », le shellcode contient donc ces valeurs spéciales. WiShMaster va ensuite les patcher par des valeurs réelles entrées par l’utilisateur lors de l’étape « Generate ».

Les données à patcher sont bien sûr très dépendantes de la structure du shellcode. L’opération « Generate » est donc accomplie dans une dll séparée qui peut être remplacée en fonction du shellcode.

Par exemple, imaginons qu’un premier développeur souhaite publier un shellcode. Il écrit le code source, génère le shellcode et créé la dll représentant l’étape « Generate » pour ce shellcode. Il met à disposition son shellcode compilé contenant les valeurs canari et la dll « Generate ».

Un second développeur peut alors remplacer la dll « Generate » de WiShMaster par celle fournie, ouvrir le shellcode dans WiShMaster et exécuter les étapes « Generate », « Xor » et « Integration ». Il peut ainsi utiliser le shellcode sans avoir accès au code source, qui reste la propriété du premier développeur.

Nous obtenons ainsi une véritable séparation entre la partie fonctionnelle (le shellcode) et l’enveloppe, le contexte d’utilisation.


A qui s’adresse cet outil ?

WiShMaster vise un public relativement large : les consultants en sécurité ayant besoin de shellcodes pour mener des tests d'intrusion, les responsables sécurité souhaitant sensibiliser les utilisateurs finaux avec des démonstrations, les chercheurs en sécurité voulant explorer des techniques comme l’injection de thread,…


WiShMaster en quelques screenshots.

WiShMaster est une application graphique développée en C#. Les différents fichiers de configuration sont générés en XML. La fenêtre principale est la suivante :






Elle est principalement constituée d’un tableau à sept lignes, chacune représentant l’une des étapes décrites précédemment. Il est également possible de visualiser les fonctions internes, importées et les chaînes de caractères détectées :






Un projet dispose d’un grand nombre d’options de configuration. Un wizard a donc été intégré, permettant de créer des squelettes de projets.


Conclusion intermédiaire

Une fois le code écrit en respectant les conventions d’écriture, la transformation en shellcode est une opération quasiment automatique et très rapide. WiShMaster est capable de shellcodiser des programmes d’une taille relativement importante.

A titre d’exemple, je l’utilise dans un de mes projets ( x90re’s backdoors ) pour shellcodiser des programmes de 20 000 lignes de code, générant des shellcodes de 40 ko. La suite du dossier sur WiShMaster illustrera ceci par un exemple concret : la shellcodisation d’une backdoor toute simple afin d’améliorer ses capacités. La shellcodisation permet d’obtenir un code manipulable et ouvre un panel très large de possibilités.

Autres ressources dans ce même dossier :

[WiShMaster - Partie 1] Introduction à l'ecriture de shellcodes en C - lien

[WiShMaster - Partie 2] Principe de shellcodisation avec WiShMaster (1) - lien

[WiShMaster - Partie 4] Principe et Fonctionnement - RConnect/WiShMaster Vs firewalls personnels (1) - lien

[WiShMaster - Partie 5] Principe et Fontionnement - RConnect/WiShMaster Vs firewalls personnels (2) - lien

[WiShMaster - Partie 6] Principe et Fonctionnement - RConnect/WiShMaster Vs firewalls personnels (3) - lien

[WiShMaster - Partie 7] Résultat de RConnect avec des firewalls personnels et conclusion - lien




- Article suivant : [WiShMaster - partie 4] Principe et Fonctionnement - RConnect/WiShMaster Vs firewalls personnels (1)
- Article précédent : [WiShMaster - partie 2] Principe de shellcodisation avec WiShMaster (1)
- Article suivant dans la catégorie Tutoriels : [WiShMaster - partie 4] Principe et Fonctionnement - RConnect/WiShMaster Vs firewalls personnels (1)
- Article précédent dans la catégorie Tutoriels : [WiShMaster - partie 2] Principe de shellcodisation avec WiShMaster (1)


Les derniers commentaires de la catégorie Tutoriels:
- UPDATE Snort 2.9.1.1 ...
- Apache Issues Patch To Stop Reverse-Proxy Bypass Attack ...
- ESRT @HackerTheDude @r0bertmart1nez @xanda @morenops - Kernel hacking the BSD way, new post ...
- ESRT @room362 - The Dirty Little Secrets They Didn't Teach You In Pentesting Class ...
- ESRT @jcran @dkarg - Metasploit Payloads VS Libemu - Alienvault Labs ...

Les derniers articles de la catégorie Tutoriels :
- PktAnon un framework pour l anonymat des traces PCAP
- [NessusWX – Partie 2] Audits et conclusion
- [NessusWX – Partie 1] Introduction, installation et configuration
- [IDS Snort Windows – Partie 4] Conclusion et webographie
- [IDS Snort Windows – Partie 3] Exemple de fichier de configuration
- [IDS Snort Windows – Partie 2] Installation et configuration
- [IDS Snort Windows – Partie 1] Introduction aux IDS et à SNORT
- [Sécurité et PHP - Partie 5] Astuces
- [Sécurité et PHP - Partie 4] Remote PHP Vulnerabilty Scanner
- [Sécurité et PHP - Partie 3] Les failles PHP




SecuToolBox :

Mini-Tagwall des articles publiés sur SecuObs :

Mini-Tagwall de l'annuaire video :

Mini-Tagwall des articles de la revue de presse :

Mini-Tagwall des Tweets de la revue Twitter :