Observation du CrackMe: Boite de diaologue Invalid Key Protection par KeyFile Outils: OllyDbg 1.10 Objectifs:

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

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

VTP. LAN Switching and Wireless Chapitre 4

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

Paris Airports - Web API Airports Path finding

Cours Bases de données 2ème année IUT

Instructions Mozilla Thunderbird Page 1

Acronymes et abréviations. Acronymes / Abbréviations. Signification

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

How to Login to Career Page

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Once the installation is complete, you can delete the temporary Zip files..

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

REMBO Version 2.0. Mathrice 2004 DESCRIPTION MISE EN OEUVRE CONCLUSION.

NTP (Network Time Protocol)

OUTIL DE TRAVAIL COLLABORATIF

Votre premier projet Android

Ocs Inventory et GLPI s appuie sur un serveur LAMP. Je vais donc commencer par installer les paquets nécessaires.

AIDE FINANCIÈRE POUR ATHLÈTES FINANCIAL ASSISTANCE FOR ATHLETES

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

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Paxton. ins Net2 desktop reader USB

Contents Windows

Exercices sur SQL server 2000

France SMS+ MT Premium Description

TP LINUX : LINUX-SAMBA SERVEUR DE FICHIERS POUR UTILISATEURS WINDOWS

Vanilla : Virtual Box

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

Exemple PLS avec SAS

OpenOffice.org Calc Ouvrir un classeur

First Nations Assessment Inspection Regulations. Règlement sur l inspection aux fins d évaluation foncière des premières nations CONSOLIDATION

DOCUMENTATION - FRANCAIS... 2

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

UNIVERSITE DE YAOUNDE II

Telecharger gratuitement convertisseur de fichier word en pdf

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Notice Technique / Technical Manual

If the corporation is or intends to become a registered charity as defined in the Income Tax Act, a copy of these documents must be sent to:

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Application Form/ Formulaire de demande

Installation d'un TSE (Terminal Serveur Edition)

SERVEUR DÉDIÉ DOCUMENTATION

Déploiement de SAS Foundation

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Architecture des ordinateurs

et Active Directory Ajout, modification et suppression de comptes, extraction d adresses pour les listes de diffusion

Gestion des prestations Volontaire

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

DOCUMENTATION MODULE BLOCKCATEGORIESCUSTOM Module crée par Prestacrea - Version : 2.0

LOGICIEL D'ADMINISTRATION POUR E4000 & G4000 MANAGEMENT SOFTWARE FOR E4000 & G4000

Installation d'un serveur RADIUS

CEST POUR MIEUX PLACER MES PDF

Garage Door Monitor Model 829LM

Sécurité des applications web. Daniel Boteanu

DOCUMENTATION - FRANCAIS... 2

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

CONVENTION DE STAGE TYPE STANDART TRAINING CONTRACT

Comment faire un Mailing A partir d une feuille Calc

Chapitre VIII : Journalisation des événements

NOTICE INSTALLATION. ARCHANGE Simplex Office N&B/Couleur KONICA MINOLTA BUSINESS SOLUTIONS FRANCE

Les GPO 2012 server R2 (appliqués à Terminal Serveur Edition)

ETABLISSEMENT D ENSEIGNEMENT OU ORGANISME DE FORMATION / UNIVERSITY OR COLLEGE:

Procédure d installation de la Sauvegarde de Windows Server

Structure d un programme

Quick Start Guide This guide is intended to get you started with Rational ClearCase or Rational ClearCase MultiSite.

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

MANUEL MARKETING ET SURVIE PDF

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

RULE 5 - SERVICE OF DOCUMENTS RÈGLE 5 SIGNIFICATION DE DOCUMENTS. Rule 5 / Règle 5

ISTIA INNOVATION. 62, Ave ND du Lac F Angers

Utiliser un proxy sous linux

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

VMware ESX : Installation. Hervé Chaudret RSI - Délégation Centre Poitou-Charentes

Project 1 Experimenting with Simple Network Management Tools. ping, traceout, and Wireshark (formerly Ethereal)

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

Lavatory Faucet. Instruction Manual. Questions?

AMENDMENT TO BILL 32 AMENDEMENT AU PROJET DE LOI 32

Le No.1 de l économie d énergie pour patinoires.

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

Déploiement OOo en environnement Windows Terminal Server

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

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

Thank you for choosing the Mobile Broadband USB Stick. With your USB Stick, you can access a wireless network at high speed.

VoD ( Video on Demand ) avec VLC

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

GIGABIT PCI DESKTOP ADAPTER DGE-530T. Quick Installation Guide+ Guide d installation+

Tutoriel de formation SurveyMonkey

Summary / Sommaire. 1 Install DRIVER SR2 USB01 Windows seven 64 bits / Installation du DRIVER SR2 USB01 Windows seven 64 bits 2

MELTING POTES, LA SECTION INTERNATIONALE DU BELLASSO (Association étudiante de lʼensaparis-belleville) PRESENTE :

Comment sauvegarder ses documents

Acce s aux applications informatiques Supply Chain Fournisseurs

PARIS ROISSY CHARLES DE GAULLE

CONTEC CO., LTD. Novembre 2010

POLICY: FREE MILK PROGRAM CODE: CS-4

affichage en français Nom de l'employeur *: Lions Village of Greater Edmonton Society

Outils d'analyse de la sécurité des réseaux. HADJALI Anis VESA Vlad

PHOTO ROYAUME DE BELGIQUE /KINDOM OF BELGIUM /KONINKRIJK BELGIE. Données personnelles / personal data

Transcription:

* Cracker un KeyfileMe * Patcher pour avoir le GoodBoy * Trouver le contenu du keyfile sans patcher Observation du CrackMe: Boite de diaologue Invalid Key Protection par KeyFile Outils: OllyDbg 1.10 Objectifs: Obtenir un message de réussite Trouver le contenu du KeyFileMe Créer un KeyFileMe valide On a affaire ici à un keyfileme très simple, vous le verrez très vite: le but est simplement de se familiariser avec un schéma de protection que nous n avons pas encore étudié. Premier reflexe, comme d habitude, ouvrir PEiD et voir ce qu il peut nous indiquer sur une protection supplémentaire du crackme, comme le packing ou encore la crypto. Ici, rien de particulier à signaler On ouvre donc le crackme dans OllyDebugger. Pour éviter d utiliser la technique des Text Strings, on va donc faire CTRL + N dans Olly, et voir quelles API sont utilisées et celles qui pourraient nous intéresser. Il se trouve que, par chance, et vu la simplicité de programmation de ce crackme, on en a très peu.

Dans le cadre d un KeyFileMe, on retrouve les deux principales qui peuvent nous intéresser: CreateFileA et ReadFile (sans parler de MessageBoxA que vous connaissez sans doute). Voici ce que nous dit MSDN sur la function CreateFile: HANDLE CreateFile( LPCTSTR lpfilename, // pointer to name of the file DWORD dwdesiredaccess, // access (read-write) mode DWORD dwsharemode, // share mode LPSECURITY_ATTRIBUTES lpsecurityattributes, // pointer to security attributes DWORD dwcreationdistribution, // how to create DWORD dwflagsandattributes, // file attributes HANDLE htemplatefile // handle to file with attributes to copy ); Parameters lpfilename Points to a null-terminated string that specifies the name of the object (file, pipe, mailslot, communications resource, disk device, console, or directory) to create or open. If *lpfilename is a path, there is a default string size limit of MAX_PATH characters. This limit is related to how the CreateFile function parses paths. et sur ReadFile: BOOL ReadFile( HANDLE hfile, // handle of file to read LPVOID lpbuffer, // address of buffer that receives data DWORD nnumberofbytestoread, // number of bytes to read LPDWORD lpnumberofbytesread, // address of number of bytes read LPOVERLAPPED lpoverlapped // address of structure for data ); Parameters hfile Identifies the file to be read. The file handle must have been created with GENERIC_READ access to the file. Windows NT For asynchronous read operations, hfile can be any handle opened with the

FILE_FLAG_OVERLAPPED flag by the CreateFile function, or a socket handle returned by the socket or accept functions. Windows 95 For asynchronous read operations, hfile can be a communications resource, mailslot, or named pipe handle opened with the FILE_FLAG_OVERLAPPED flag by CreateFile, or a socket handle returned by the socket or accept functions. Windows 95 does not support asynchronous read operations on disk files. lpbuffer Points to the buffer that receives the data read from the file. nnumberofbytestoread Specifies the number of bytes to be read from the file. lpnumberofbytesread Points to the number of bytes read. ReadFile sets this value to zero before doing any work or error checking. If this parameter is zero when ReadFile returns TRUE on a named pipe, the other end of the message-mode pipe called the WriteFile function with nnumberofbytestowrite set to zero. If lpoverlapped is NULL, lpnumberofbytesread cannot be NULL. If lpoverlapped is not NULL, lpnumberofbytesread can be NULL. If this is an overlapped read operation, you can get the number of bytes read by calling GetOverlappedResult. If hfile is associated with an I/O completion port, you can get the number of bytes read by calling GetQueuedCompletionStatus. On va donc poser un BP sur CreateFileA puis lancer le debugging avec F9 Le crackme s ouvre, on va alors cliquer sur Check it! et voir ce que ça nous donne. On arrive ici:

On remarque bien sûr les lignes suivantes, qui vont nous donner des pistes quant à ce que le crackme va chercher: 004010E1 /$ 6A 00 PUSH 0 ; /htemplatefile = NULL 004010E3. 68 80000000 PUSH 80 ; Attributes = NORMAL 004010E8. 6A 03 PUSH 3 ; Mode = OPEN_EXISTING 004010EA. 6A 00 PUSH 0 ; psecurity = NULL 004010EC. 6A 01 PUSH 1 ; ShareMode = FILE_SHARE_READ 004010EE. 68 00000080 PUSH 80000000 ; Access = GENERIC_READ 004010F3. 68 17304000 PUSH CRACKME6.00403017 ; FileName = "keyfile.dat" 004010F8. E8 BD000000 CALL <JMP.&KERNEL32.CreateFileA> ; \CreateFileA Notre KeyFile doit s appeler Keyfile.dat on va alors créer un fichier à l aide de notepad et changer l extension, en respectant la casse ou bien le crackme risque de ne pas le reconnaître. Autant ne pas prendre de risque! On commence à exécuter ligne par ligne en faisant F8, et on remarque qu on passe au-dessus de la routine qui va nous afficher le message Keyfile not found normal, puisqu on vient de le créer. Le crackme compare le résultat obtenu avec -1: 00401102. 83F8 FF CMP EAX,-1 // cherche si le keyfile existe avec le nom correct 00401105. 75 14 JNZ SHORT CRACKME6.0040111B // s il existe, on saute audessus du premier bad boy ;)

La routine qui suite va lire le contenu de ce fichier qu on vient de créer. 0040111B > \6A 00 PUSH 0 ; /poverlapped = NULL 0040111D. 68 96304000 PUSH CRACKME6.00403096 ; pbytesread = CRACKME6.00403096 00401122. 6A 0A PUSH 0A ; BytesToRead = A (10.) 00401124. 68 8C304000 PUSH CRACKME6.0040308C ; Buffer = CRACKME6.0040308C 00401129. FF35 88304000 PUSH DWORD PTR DS:[403088] ; hfile = 000000E0 (window) 0040112F. E8 98000000 CALL <JMP.&KERNEL32.ReadFile> ; \ReadFile On voit que le fichier va chercher 10 Bytes dans le fichier. Si le nombre de bytes lu est correct, l API retourne la valeur 0 on va donc passer cela, il serait facile de patcher, surtout sur le reste du crackme pour obtenir le message de réussite, mais ce n est pas notre but! Le crackme compare le nombre de bytes à 0. On va pour l instant se contenter de contourner ceci en rentrant n importe quel chiffre dans le keyfile.dat (par exemple 1 ) pour lui montrer qu il y a quelquechose dedans. Le saut est alors pris, et on passé la routine suivante qui nous dirait qu il n a pas pu lire le fichier correctement. La routine qui suit est la plus importante: c est celle qui va charger le contenu de notre keyfile et l analyser 0040114E 8D158C304000 lea edx, dword ptr [0040308C] // charge le contenu de notre keyfile :00401154 83C205 add edx, 00000005 // regarde le 6ème chiffre de notre keyfile :00401157 803A31 cmp byte ptr [edx], 31 // regarde si c'est un 1 :0040115A 7510 jne 0040116C // saut vers bad boy si différent de 1 :0040115C 83C203 add edx, 00000003 // regarde le 9ème chiffre du keyfile :0040115F 803A33 cmp byte ptr [edx], 33 // compare à 3 :00401162 7508 jne 0040116C // saut vers bad boy si different de 3 :00401164 42 inc edx // regarde le 10ème chiffre du keyfile :00401165 803A30 cmp byte ptr [edx], 30 // compare à 0 :00401168 7402 je 0040116C // saut vers bad boy si c est un 0 :0040116A EB15 jmp 00401181 // saute vers le good boy

L analyse est assez simple: le keyfile peut contenir n importe quoi du moment qu il y a 10 chiffres que le 6eme est bien un 6 que le 9eme est bien un 3 que le 10eme est different de 0 Vous pouvez donc essayer avec ces 4 parametres de remplir votre keyfile.dat, et voici le résultat: Félicitations! Dynasty 04 Janvier 2008