Castle in the Skype Fabrice DESCLAUX serpilliere(at)rstack.org / - - PowerPoint PPT Presentation

castle in the skype
SMART_READER_LITE
LIVE PREVIEW

Castle in the Skype Fabrice DESCLAUX serpilliere(at)rstack.org / - - PowerPoint PPT Presentation

Protection statiques Protection dynamiques Conclusion Castle in the Skype Fabrice DESCLAUX serpilliere(at)rstack.org / fabrice.desclaux(at)eads.net EADS Corporate Research Center DCR/STI/C SSI Lab Suresnes, FRANCE SSTIC, 31 mai, 2006


slide-1
SLIDE 1

Protection statiques Protection dynamiques Conclusion

Castle in the Skype

Fabrice DESCLAUX

serpilliere(at)rstack.org / fabrice.desclaux(at)eads.net EADS Corporate Research Center — DCR/STI/C SSI Lab Suresnes, FRANCE

SSTIC, 31 mai, 2006

Fabrice DESCLAUX Castle in the Skype 1/31

slide-2
SLIDE 2

Protection statiques Protection dynamiques Conclusion

Motivation de l’´ etude

´ Etude Skype Skype n’est pas une application autoris´ ee sur notre r´ eseau Skype utilise un protocole obscurci Skype refuse de communiquer les d´ etail du protocole Notre ´ etude visait ` a comprendre le fonctionnement du protocole pour le maˆ ıtriser

Fabrice DESCLAUX Castle in the Skype 2/31

slide-3
SLIDE 3

Protection statiques Protection dynamiques Conclusion

Pourquoi Skype paraˆ ıt-il dangereux?

Au niveau r´ eseau

Que voit l’administrateur r´ eseau? (parano¨ ıaque) Tout ` a l’air obscurci Utilisation de r´ eseaux P2P

Nombre de machines connect´ ees important Identification des destinataires difficile

R´ eutilisation automatique des acc` es aux proxy Trafic important mˆ eme quand on ne l’utilise pas Conclusion = ⇒ Impossible de distinguer un trafic normal d’une exfiltration de donn´ ees (trafic chiffr´ e sur des ports ´ etranges, activit´ e nocturne) = ⇒ Brouille les signes d’une intrusion

Fabrice DESCLAUX Castle in the Skype 3/31

slide-4
SLIDE 4

Protection statiques Protection dynamiques Conclusion

Comment Skype camoufle-t-il son code?

Chiffrement du code Le code sensible est ”chiffr´ e” Une proc´ edure de d´ echiffrement est ins´ er´ ee au d´ ebut du programme Elle d´ echiffre le code et passe la main Chiffrement du code

mov eax ,

  • f f s e t

base adresse . . . add eax , ds : p t r c o d e c h i f f r e [ edx ∗4] . . . mov eax , ds : p t r c o d e d e c h i f f r e [ eax ∗4] add eax , ds : memoire allouee . . . mov dword ptr [ ebp−14h ] , 7077F00Fh . . . mov eax , ds : t a i l l e c o d e [ eax ∗4]

Fabrice DESCLAUX Castle in the Skype 4/31

slide-5
SLIDE 5

Protection statiques Protection dynamiques Conclusion

Comment Skype camoufle-t-il son code?

Structure de description des couche de chiffrement struct memory location { unsigned int s t a r t a l l o c ; unsigned int s i z e a l l o c ; unsigned int s t a r t f i l e ; unsigned int s i z e f i l e ; unsigned int protection flag ; }

Fabrice DESCLAUX Castle in the Skype 5/31

slide-6
SLIDE 6

Protection statiques Protection dynamiques Conclusion

Comment Skype camoufle-t-il son code?

Description des zones ZONE 1 ZONE 3 dd 1000h dd 29A000h dd 250000h dd 13C000h dd 1000h dd 29A000h dd 250000h dd 3D000h dd 20h dd 4 ZONE 2 ZONE 4 dd 251000h dd 3D6000h dd 49000h dd 2000h dd 251000h dd 2D7000h dd 49000h dd 2000h dd 2 dd 4

Fabrice DESCLAUX Castle in the Skype 6/31

slide-7
SLIDE 7

Protection statiques Protection dynamiques Conclusion

Comment Skype camoufle-t-il son code?

D´ echiffrement des zones decipher loop : mov eax , [ eax+edx ∗4] xor eax , [ ebp−14h ] mov [ edx+ecx ∗4] , eax . . . mov eax , [ eax+edx ∗4] xor eax , [ ebp−14h ] mov [ ebp−28h ] , eax add dword ptr [ ebp−14h ] , 71h inc dword ptr [ ebp−18h ] dec dword ptr [ ebp−34h ] jnz short decipher loop

Fabrice DESCLAUX Castle in the Skype 7/31

slide-8
SLIDE 8

Protection statiques Protection dynamiques Conclusion

Parall` ele avec les malwares

Shellcode chiffr´ e Le code binaire est souvent chiffr´ e Une mini proc´ edure est ins´ er´ ee dans le shellcode Elle d´ echiffre la charge utile dans la pile de l’application D´ echiffrement

Skype Procédure de déchiffrement: Chaque partie sensible sera déchiffrée en mémoire au moment de l’exécution Partie chiffrée Partie claire shellcode Fabrice DESCLAUX Castle in the Skype 8/31

slide-9
SLIDE 9

Protection statiques Protection dynamiques Conclusion

Exemple de shellcode

Chiffrement du code

; Exemple de shellcode encod´ e c a l l dummy dummy: pop edx sub dl , −25 ; r´ ecup´ eration d’eip d e b u t d e c h i f f r e : xor ecx , ecx sub cx , −0x15F ; taille du payload b o u c l e d e c h i f f r e me n t : xor byte [ edx ] , 0x99 ; d´ ecodage du payload i n c edx loop b o u c l e d e c h i f f r e me n t s h e l l c o d e c h i f f r e : db \xdd\xeb\xd6\xd0\xdd\ xca \xb9\xda db \ xf6 \xeb\xc9\ xf6 \xcb\ xf8 \xcd\xd0 db \xd6\xd7\xb9\xcb\ xec \xd5\xdc\xc3 db . . .

Fabrice DESCLAUX Castle in the Skype 9/31

slide-10
SLIDE 10

Protection statiques Protection dynamiques Conclusion

Effacement des traces

Ecrasement du code de d´ echiffrement Le code est d´ echiffr´ e en m´ emoire Skype peut effacer de la m´ emoire le code responsable du d´ echiffrement Ici, Skype le remplace par des 0x00 D´ echiffrement

; Exemple d’effacement de code ; (Anti dumping ) mov edi ,

  • f f s e t

d e b u t z o n e a e f f a c e r mov ecx ,

  • f f s e t

f i n z o n e a e f f a c e r sub ecx , edi xor eax , eax ; on remplace le code par \x00 rep stosb

Fabrice DESCLAUX Castle in the Skype 10/31

slide-11
SLIDE 11

Protection statiques Protection dynamiques Conclusion

R´ ecapitulatif

´ Etat du binaire au lancement

Code chiffré Table des imports

  • riginale

Code chiffré Code déchiffré Code déchiffré Table des imports Skype Code Code effacé Code de transition Code effacé Code effacé Code de transition Code de transition Code de transition Table des imports

  • riginale

Table des imports

  • riginale

Table des imports +

Fabrice DESCLAUX Castle in the Skype 11/31

slide-12
SLIDE 12

Protection statiques Protection dynamiques Conclusion

Imports cach´ es

Structure de description des imports

s t r u c t { char ∗ nom ; i n t ∗

  • r d i n a l ;

unsigned char ∗ adresse ; }

Import de DLL, de fonction

dd

  • f f s e t

aWinmm dll ; "WINMM.dll" dd 0 dd 0 dd

  • f f s e t

aWaveinreset ; " waveInReset " dd 0 dd 3D69D0h Ordinal 3 dd 0 dd 3 dd 3D6A90h Fabrice DESCLAUX Castle in the Skype 12/31

slide-13
SLIDE 13

Protection statiques Protection dynamiques Conclusion

Anti d´ ebogueur

D´ etection des d´ ebogueurs Le binaire tente de d´ etecter les d´ ebogueurs connus Tentative de chargement de modules de d´ ebogueurs Si succ` es, le d´ ebogueur est pr´ esent Sinon, on retente plus tard Ici, il s’agit de Softice D´ echiffrement

mov eax ,

  • f f s e t

s t r S i w v i d ; "\\\\ .\\ Siwvid " c a l l t e s t d r i v e r t e s t al , a l

Fabrice DESCLAUX Castle in the Skype 13/31

slide-14
SLIDE 14

Protection statiques Protection dynamiques Conclusion

Anti d´ ebogueur: les malwares

Dans les malware Ils poss` edent aussi cette fonctionnalit´ e Cela ralentit la sortie d’une signature = ⇒ La vie du virus est prolong´ ee! Worm.Win32 Bropia-N Worm.Win32 Mytob-AR Ce ver d´ etecte Ollydbg Et l’arrˆ ete s’il est pr´ esent

Fabrice DESCLAUX Castle in the Skype 14/31

slide-15
SLIDE 15

Protection statiques Protection dynamiques Conclusion

Camouflage des chaˆ ınes de caract` eres sensibles

Le binaire ne laisse rien transparaˆ ıtre Les chaˆ ınes de caract` eres sensibles sont chiffr´ ees Puis d´ echiffr´ ees ` a la vol´ ee Chaˆ ınes de caract` eres chiffr´ ees/claires

db ’B494A6545B414B4D ’ ,0 \\ . \SICE db ’B49AACA6B9A3FD7C636E ’ ,0 \\ . \ Siwvid db ’B49BAB5DB7BD80CA4C ’ ,0 \\ . \NTICE db ’B49D5D8BCC4638F9666B5C5B4E5D5B ’ ,0 \\ . \SiwvidSTART

Fabrice DESCLAUX Castle in the Skype 15/31

slide-16
SLIDE 16

Protection statiques Protection dynamiques Conclusion

e malware

Shellcode clair

j\x0bX\x99Rfh-c\x89\xe7h/sh\x00h/bin\x89\xe3R\xe8\n \x00\x00\x00/bin/bash\x00WS\x89\xe1\xcd\x80

Shellcode chiffr´ e

3\xc9\x83\xe9\xf4\xd9\xee\xd9t$\xf4[\x81s\x13\xa5\x d1L!\x83\xeb\xfc\xe2\xf4\xcf\xda\x14\xb8\xf7\xb7$\x0 c\xc6X\xabI\x8a\xa2$!\xcd\xfe.H\xcbX\xafsM\xdbL!\xa5 \xfe.H\xcb\xfe.@\xd6\xb9Lv\xf6X\xad\xec%\xd1L!$

Fabrice DESCLAUX Castle in the Skype 16/31

slide-17
SLIDE 17

Protection statiques Protection dynamiques Conclusion

D´ etection par mesure de temps

Mesure de temps Une proc´ edure consomme un certain temps (fixe) Si un attaquant trace le programme, le temps consomm´ e est plus important = ⇒ On peut d´ etecter les d´ ebogueurs Mesure de temps

c a l l gettickcount mov g e t t i c k c o u n t r e s u l t , eax

Fabrice DESCLAUX Castle in the Skype 17/31

slide-18
SLIDE 18

Protection statiques Protection dynamiques Conclusion

Repr´ esaille

Mesure de repr´ esaille Tuer l’application serait facilement d´ etectable Ici, l’application cr´ ee une zone de non retour L’´ etat du processeur est randomis´ e Et le d´ ebogueur ne peut pas en sortir, ni remonter au code charg´ e de la d´ etection

Fabrice DESCLAUX Castle in the Skype 18/31

slide-19
SLIDE 19

Protection statiques Protection dynamiques Conclusion

Trappe pour le d´ ebogueur

Randomisation des registres

pushf pusha mov save esp , esp mov esp , a d a l l o c ? add esp , random value sub esp , 20h popa ; Randomize les registres jmp random mapped page

Fabrice DESCLAUX Castle in the Skype 19/31

slide-20
SLIDE 20

Protection statiques Protection dynamiques Conclusion

Trappe pour le d´ ebogueur

Contournement La page contenant les octets de code al´ eatoires peut ˆ etre retrouv´ ee Ses caract´ eristiques sont particuli` eres: RWX On peut retrouver sa cr´ eation, la surveiller et trouver le d´ etecteur de d´ ebogueurs

Fabrice DESCLAUX Castle in the Skype 20/31

slide-21
SLIDE 21

Protection statiques Protection dynamiques Conclusion

Int´ egrit´ e du binaire

Test d’int´ egrit´ e du binaire Un attaquant peut encore modifier le binaire Des sommes de contrˆ

  • les ont donc ´

et´ e rajout´ ees Chaque somme de contrˆ

  • le v´

erifie une partie de code et une autre somme de contrˆ

  • le.

Celles-ci sont ins´ er´ ees au hasard dans le code et g´ en´ er´ ees diff´ eremment les unes des autres Chez les Spywares Gator est un spyware attach´ e ` a un shareware Quand on lance le shareware, celui-ci v´ erifie que Gator est bien lanc´ e Si Gator a ´ et´ e supprim´ e, le shareware refuse de se lancer

Fabrice DESCLAUX Castle in the Skype 21/31

slide-22
SLIDE 22

Protection statiques Protection dynamiques Conclusion

Exemple de somme de contrˆ

  • le

s t a r t : xor edi , edi add edi , Ox688E5C mov eax , Ox320E83 xor eax , Ox1C4C4 mov ebx , eax add ebx , OxFFCC5AFD l o o p s t a r t : mov ecx , [ edi+Ox10 ] jmp l b l 1 db Ox19 l b l 1 : sub eax , ecx sub edi , 1 dec ebx jnz l o o p s t a r t jmp l b l 2 db Ox73 l b l 2 : jmp l b l 3 dd OxC8528417 , OxD8FBBD1, OxA36CFB2F , OxE8D6E4B7 , OxC0B8797A db Ox61 , OxBD l b l 3 : sub eax , Ox4C49F346

Fabrice DESCLAUX Castle in the Skype 22/31

slide-23
SLIDE 23

Protection statiques Protection dynamiques Conclusion

Int´ egrit´ e du binaire

Retrouver les sommes de contrˆ

  • les

Mˆ eme si elles ont ´ et´ e g´ en´ er´ ees diff´ erements, elles ont des points communs Une initialisation de pointeur (sur du code) Une boucle Un calcul arithm´ etique en guise de somme Suppression des contrˆ

  • les

On peut donc les distinguer dans le code Calculer leur vrai somme (grˆ ace ` a un ´ emulateur par exemple) Et les enlever du code final

Fabrice DESCLAUX Castle in the Skype 23/31

slide-24
SLIDE 24

Protection statiques Protection dynamiques Conclusion

Int´ egrit´ e du binaire

Fabrice DESCLAUX Castle in the Skype 24/31

slide-25
SLIDE 25

Protection statiques Protection dynamiques Conclusion

Obscurcissement de code

Principe La partie de code responsable du d´ echiffrement des paquets est sensible Le code est ici obscurci Tout est mis en oeuvre pour ralentir sa compr´ ehension Ajout de code mort, de calculs dynamiques d’adresses, ... Randomisation des registres

mov eax , 9FFB40h sub eax , 7F80h mov edx , 7799C1Fh mov ecx , [ ebp−14h ] c a l l eax ; sub_9F7BC0 neg eax add eax , 19C87A36h mov edx , 0CCDACEF0h mov ecx , [ ebp−14h ] c a l l eax ; eax = 009 F8F70

Fabrice DESCLAUX Castle in the Skype 25/31

slide-26
SLIDE 26

Protection statiques Protection dynamiques Conclusion

Obscurcissement de code

Contre mesure Ici, on peut retrouver le code C On utilise des variables teint´ ees On propage les informations obtenues sur les variables Et on reg´ en` ere les expressions finales

/* *************************************************** */ void sub 162590 ( unsigned i n t ∗TAB, unsigned i n t IN KEY) { unsigned i n t tmp var 1 ; unsigned i n t tmp var 0 ; tmp var 0 = TAB [ 56 ] ; tmp var 1 = ( TAB [ 60 ] ˆ ( ( tmp var 0 >= 0x291B9650 ) ? ( TAB [ 8 ] ) : ( tmp var 0 TAB [ 60 ] = tmp var 1 ; } /* *************************************************** */ void sub 163670 ( unsigned i n t ∗TAB, unsigned i n t IN KEY) { unsigned i n t tmp var 0 ; tmp var 0 = ( ( TAB [ ] + 0x4376FF7 ) ˆ TAB [ 12 ] ) ; TAB [ 12 ] = tmp var 0 ; } Fabrice DESCLAUX Castle in the Skype 26/31

slide-27
SLIDE 27

Protection statiques Protection dynamiques Conclusion

Obscurcissement r´ eseau

Flux r´ eseaux Tout ceci ne serait pas complet si les paquets laissaient transpirer des donn´ ees Les paquets sont obscurcis Ils sont chiffr´ es avec du RC4 La clef de d´ echiffrement peut ˆ etre retrouv´ ee en connaissant les IP/PORT du paquet Backdoor Certaines backdoors sont capables d’utiliser du ssl pour camoufler les donn´ ees exfiltr´ ees par un attaquant

Fabrice DESCLAUX Castle in the Skype 27/31

slide-28
SLIDE 28

Protection statiques Protection dynamiques Conclusion

Principe de l’obscurcissement r´ eseau

CRC32 IP Destination IP source IV \x00\x00 ID clef RC4 (80 octets) graine transformation Fabrice DESCLAUX Castle in the Skype 28/31

slide-29
SLIDE 29

Protection statiques Protection dynamiques Conclusion

Conclusion

Jusqu’ou iront-ils?

Camouflage de code Les techniques utilis´ ees sont clairement mises en place pour ´ eviter qu’un attaquant ´ etudie le code Peut on laisser une libert´ e totale au d´ eveloppeur pour prot´ eger un code? Doit-on banir les techniques permettant d’´ etudier le comportement d’un code? RootKit Sony Que serait devenu le rootkit Sony s’il n’avait pas ´ et´ e d´ ecouvert?

Fabrice DESCLAUX Castle in the Skype 29/31

slide-30
SLIDE 30

Protection statiques Protection dynamiques Conclusion

Conclusion

Jusqu’ou iront-ils?

Camouflage de code Les techniques utilis´ ees sont clairement mises en place pour ´ eviter qu’un attaquant ´ etudie le code Peut on laisser une libert´ e totale au d´ eveloppeur pour prot´ eger un code? Doit-on banir les techniques permettant d’´ etudier le comportement d’un code? RootKit Sony Que serait devenu le rootkit Sony s’il n’avait pas ´ et´ e d´ ecouvert?

Fabrice DESCLAUX Castle in the Skype 29/31

slide-31
SLIDE 31

Protection statiques Protection dynamiques Conclusion

Questions?

Fabrice DESCLAUX Castle in the Skype 30/31

slide-32
SLIDE 32

R´ ef´ erences

References

  • F. Desclaux, RR0D: the Rasta Ring 0 Debugger

http://rr0d.droids-corp.org/

  • P. Biondi, Scapy

http://www.secdev.org/projects/scapy/

Fabrice DESCLAUX Castle in the Skype 31/31