Shellcodes sous Linux dans les processeurs de 32 bits x86



Documents pareils
Structure d un programme

Programmation assembleur : aperçu

Logiciel de base. Première année ENSIMAG

Rappels d architecture

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Architecture des ordinateurs

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Compilation (INF 564)

Utiliser un proxy sous linux

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Instructions Mozilla Thunderbird Page 1

Guide d'installation rapide TFM-560X YO.13

Comment faire des étiquettes

GlobalScape Secure FTP Server Buffer Overflow

Création de Sous-Formulaires

Tutoriel de formation SurveyMonkey

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

Comment faire un Mailing A partir d une feuille Calc

Département informatique de l université d Angers

Installation de Vmware serveur Windows

Petit guide pour l installation de CVW sous Linux

Comment Créer une Base de Données Ab Initio

Comment Définir une Plage de données Pour Utiliser Fonctions de Filtres et de Tris

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Introduction aux buffer overflow, CS335

Lesson Plan Physical Descriptions. belle vieille grande petite grosse laide mignonne jolie. beau vieux grand petit gros laid mignon

WiFi Security Camera Quick Start Guide. Guide de départ rapide Caméra de surveillance Wi-Fi (P5)

I>~I.J 4j1.bJ1UlJ ~..;W:i 1U

Les techniques de protection du logiciel

Jeu d instructions NIOS II

Application Form/ Formulaire de demande

SERVEUR DÉDIÉ DOCUMENTATION

Installation et prise en main

Insérer des images dans Base

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Playing with ptrace() for fun and profit

INFO-F-404 : Techniques avancées de systèmes d exploitation

CEST POUR MIEUX PLACER MES PDF

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

Conception de circuits numériques et architecture des ordinateurs

Comment consolider des données

Le publipostage avec Open Office

Cheque Holding Policy Disclosure (Banks) Regulations. Règlement sur la communication de la politique de retenue de chèques (banques) CONSOLIDATION

Résumé Génération de code Le code intermédiaire

Ordinateurs, Structure et Applications

that the child(ren) was/were in need of protection under Part III of the Child and Family Services Act, and the court made an order on

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

2013 IIHF WORLD WOMEN S HOCKEY CHAMPIONSHIP

NTP (Network Time Protocol)

Le prototype de la fonction main()

Contrôle d'accès Access control. Notice technique / Technical Manual

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

CETTE FOIS CEST DIFFERENT PDF

Tutoriel Création d une source Cydia et compilation des packages sous Linux

RAPID Prenez le contrôle sur vos données

Contents Windows

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

Paxton. ins Net2 desktop reader USB

OpenOffice.org Présentation - Débuter. Distribué par Le projet OpenOffice.org

TP SECU NAT ARS IRT ( CORRECTION )

Les chaînes de caractères

TP 1 et 2 de Réseaux en Master 1 Informatique : Assemblage d un réseau, configuration d adresses IP sous Linux et Windows

Paris Airports - Web API Airports Path finding

Configurer la supervision pour une base MS SQL Server Viadéis Services

Déploiement OOo en environnement Windows Terminal Server

Désobfuscation automatique de binaire - The Barbarian Sublimation

Les failles Format String

TP LINUX : MISE EN PLACE DU SERVEUR DE MESSAGERIE QMAIL

SUGARCRM Sugar Open Source Guide d Installation de French SugarCRM Open Source Version 4.2

OpenOffice.org Calc Ouvrir un classeur

MODERN LANGUAGES DEPARTMENT

titre : CENTOS_CUPS_install&config Système : CentOs 5.7 Technologie : Cups Auteur : Charles-Alban BENEZECH

Les commandes relatives aux réseaux

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Principe de TrueCrypt. Créer un volume pour TrueCrypt

calls.paris-neuroscience.fr Tutoriel pour Candidatures en ligne *** Online Applications Tutorial

Dans une agence de location immobilière...

Projet Administration Réseaux

Comment sauvegarder ses documents

Représentation d un entier en base b

Réalisation d un OS 32 bits pour PC(x86)

Get Instant Access to ebook Cest Maintenant PDF at Our Huge Library CEST MAINTENANT PDF. ==> Download: CEST MAINTENANT PDF

Introduction...6. Assembleur, philosophieet atouts...8. Avantages et inconvénients de l assembleur...9. Que programmer en Assembleur?.

Module 7 : Configuration du serveur WEB Apache

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

MANUEL MARKETING ET SURVIE PDF

PARIS ROISSY CHARLES DE GAULLE

Administration Linux - FTP

CONFIGURATION DU SERVEUR DE MAILS EXIM. par. G.Haberer, A.Peuch, P.Saade

Installation d'un TSE (Terminal Serveur Edition)

WEB page builder and server for SCADA applications usable from a WEB navigator

Installation d'un serveur RADIUS

Connaître la version de SharePoint installée

Traduction des Langages : Le Compilateur Micro Java

Formulaire d inscription (form also available in English) Mission commerciale en Floride. Coordonnées

Compléter le formulaire «Demande de participation» et l envoyer aux bureaux de SGC* à l adresse suivante :

TP HTTP. Université Pierre Mendès France U.F.R. Sciences de l Homme et de la Société Master IC²A

Chapitre 10 Arithmétique réelle

Transcription:

Shellcodes sous Linux dans les processeurs de 32 bits x86 بسم الله الرحمان الرحيم و الصلة و السلم على سيدنا محمد و آله و صحبه paper par: opt!x hacker(aidi youssef) optix@9.cn sommaire: 0x01:présentation 0x02:les registres dans les processeurs 32 bits x86 0x03:appel systeme(linux System Call) 0x04:Les instructions les plus importantes de l'assembleur 0x05:tools 0x06:notre premier shellcode(first shellcode) 0x07:Greetz 0x01:présentation: un shellcode est un élément très important dans tous les exploits,pendant l'attaque il est injecté à un autre programme opérationnel et lui fait éxécuter les opérations demandées et pour ecrire un shellcode on'est besoin d'un peu de connaisances en C et en assembleur et une experience dans LINUX.

0x02:les registres dans les processeurs 32 bits x86: les registres sont des petites cellules de mémoire qui se trouvent dans le processeur est qui ont le rôle de stocker des valeurs numériques ils sont utilisées par le processeur pendant l'exécution de chaque programme ou tache. Ils se divisent en deux catégories: _rergistres de données(eax,ebx,ecx,edx) explication:::: Nom de registre EAX EBX ECX EDX Son role L'éxecution des opérations arithmétiques et les opérations entrée/ sortie, et il contient la défintion de l'appel systeme à exécuter(sys call) et la valeur retournée par l'appel systeme. Il stocke le premier argument de l'appel systeme. Il stocke le deuxieme argument de l'appel systeme. Utilisé pour stocker les adresses des variables, stocke le troisième argument de l'appel système. _registres d'addresse(esi,edi,esp,ebp,eip) Je vais donner leurs explications dans un prochain cour 0x03:appel systeme(linux System Call): Il faut premièrement savoir que chaque appel systeme(write, close, kill...) est fournit par le noyau KERNEL. Pour connaître la version du kernel on tape la commande suivante: uname -r ou uname -a

Chaque appel systeme a un nombre précis mais comment peut on défénir ce nombre. c'est très facile:

mais si on veut avoir le numéro d'un appel système précis on tape la commande suivante : c'est très facile 0x04:Les instructions les plus importantes de l'assembleur: mov:copie le contenu d'un fragment de la mémoire vers un autre ou une valeur.par ex: MOV EBP,ESP ou mov eax,4 (valeur syscall write ) push :Copie sur la pile le contenu du fragment sélectionné de la mémoire:push EDI(source) pop:transfère le contenu de la pile vers le fragment voulu de la mémoire: pop EDI (source) xor:calcule la différence symétrique des fragments sélectionnés de la mémoire:(xor ecx,acx ou xor ecx,ebx)

remarque: xor a,b si a=b => xor a,b=0 xor ecx,ecx=0 (pour éviter les NULL BYTES) jmp:c'est un saut vers une addresse définie et il permet de changer l'addresse EIP par une autre choisie : jmp +adresse call:c'est un appel comme l'nstruction jmp mais celle-ci empile l'adresse de l'instruction suivante avant de changer EIP:call adr int:elle donne un signale au noyau linux(kernel)en appelant l'interruption portant le numéro:int 0x80 et il'ya aussi des instructions qui effectuent des opérations arithmétigues et logiques(recherche in google) 0x05:tools: 1)un assembleur logiciel moi je préfère NASM vous pouvez le telecharger: http://nasm.sourceforge.net/ lorsque vous le téléchargez vous allez trouver un livre PDF d'aide: To assemble a file, you issue a command of the form nasm f <format> <filename> [ o <output>] For example, nasm f elf myfile.asm will assemble myfile.asm into an ELF object file myfile.o. And nasm f bin myfile.asm o myfile.com will assemble myfile.asm into a raw binary file myfile.com. To produce a listing file, with the hex codes output from NASM displayed on the left of the original sources, use the l option to give a listing file name, for example: nasm f coff myfile.asm l myfile.lst

To get further usage instructions from NASM, try typing nasm h As hf, this will also list the available output file formats, and what they are. If you use Linux but aren t sure whether your system is a.out or ELF, type file nasm 2)un logiciel Disassembler comme:objdump rechercher le dans google ou sourceforge 3)connaisances de C et Assembly et LINUX (ligne de commandes) 4)un vers de thé pour se concenter 0x06:notre premier shellcode notre premier shellcode va etre basé sur l'appel systeme write et exit nous devrons chercher le numéro de write dans syscalls /*code1 aidi@aidi-laptop ~ $ cat /usr/include/asm/unistd_32.h grep write #define NR_write 4 #define NR_writev 146 /*code2 #define NR_exit 1 chaque registre va avoir son propre travail: on va les remettre à zero pour eviter les zéros dans notre shellcode par l'instruction xor comme on'a vu (xor a,a=0)

on va commencer avec un tres simple code qui va ecrire mon nom'aidi youssef'. Voilà notre code: Assemble & link aprés Disassemble: on va utiliser pour ce travail les outils que j'ai cité dans la paragraphe tools :)))))))))))))))))))))))))))))))))))): je vais vous expliquer: pour assembler: as nameoffile.s -o nomdefichiervoulu.o pour linker: ld nomdefichiervoulu.o name pour disassembler on doit telecharger l'outils objdump et taper la commande: objdump -d fichierfinale pour exécuter ce dernier :./lenomdufichier pour avoir de l'aide: par exemple: objdump --help

comme vous voyez c'est très bien on'a pas de zéro maintenant nous pouvons écrire notre shellcode avec C ' a i d i y o u s s e f \n' en ASCII 61 69 64 69 20 79 6f 75 73 73 65 66 0a espace=20 en ASCII

et maintenat aprés on'a compilé notre shellcode on doit l'écrire avec C et l'éxecuter: pour ce travail on doit ajouter \x aux valeurs hex je vais compiler le fichier write.c et l'éxecuter :

:) notre premier shellcode fonctionne parfaitement avec une taille de 45 bytes 0x07:Greetz je veux remercier: Jonathan Salwan Michał Piotrowski his0k4 stack and all muslims crackers ce paper est ecrit sous la distrubition linux mint 6 pour les débutants.