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
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
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
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 eax , mov o 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 − 14 h ] , 7077 F00Fh . . . mov eax , ds : t a i l l e c o d e [ eax ∗ 4] Fabrice DESCLAUX Castle in the Skype 4/31
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
Protection statiques Protection dynamiques Conclusion Comment Skype camoufle-t-il son code? Description des zones ZONE 1 ZONE 3 dd 1000 h dd 29 A000h dd 250000 h dd 13 C000h dd 1000 h dd 29 A000h dd 250000 h dd 3 D000h dd 20 h dd 4 ZONE 2 ZONE 4 dd 251000 h dd 3 D6000h dd 49000 h dd 2000 h dd 251000 h dd 2 D7000h dd 49000 h dd 2000 h dd 2 dd 4 Fabrice DESCLAUX Castle in the Skype 6/31
Protection statiques Protection dynamiques Conclusion Comment Skype camoufle-t-il son code? D´ echiffrement des zones decipher loop : mov eax , [ eax + edx ∗ 4] eax , [ ebp − 14 h ] xor mov [ edx + ecx ∗ 4] , eax . . . mov eax , [ eax + edx ∗ 4] eax , [ ebp − 14 h ] xor mov [ ebp − 28 h ] , eax add dword ptr [ ebp − 14 h ] , 71 h inc dword ptr [ ebp − 18 h ] dec dword ptr [ ebp − 34 h ] jnz short decipher loop Fabrice DESCLAUX Castle in the Skype 7/31
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 shellcode Procédure de déchiffrement: Chaque partie sensible sera déchiffrée en mémoire au moment de l’exécution Partie claire Partie chiffrée Fabrice DESCLAUX Castle in the Skype 8/31
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 , − 0 x15F ; taille du payload b o u c l e d e c h i f f r e me n t : xor byte [ edx ] , 0 x99 ; 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
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 , o f f s e t d e b u t z o n e a e f f a c e r mov ecx , o 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
Protection statiques Protection dynamiques Conclusion R´ ecapitulatif ´ Etat du binaire au lancement Code Code effacé Code effacé Code effacé Code de transition Code de transition Code de transition Code de transition Code Code Code chiffré Code chiffré déchiffré déchiffré Table des imports Table des imports Table des imports Table des imports originale originale originale + Table des imports Skype Fabrice DESCLAUX Castle in the Skype 11/31
Protection statiques Protection dynamiques Conclusion Imports cach´ es Structure de description des imports s t r u c t { char ∗ nom ; i n t ∗ o r d i n a l ; unsigned char ∗ adresse ; } Import de DLL, de fonction dd o f f s e t aWinmm dll ; "WINMM.dll" dd 0 dd 0 dd o f f s e t aWaveinreset ; " waveInReset " dd 0 dd 3 D69D0h 3 Ordinal dd 0 dd 3 dd 3 D6A90h Fabrice DESCLAUX Castle in the Skype 12/31
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 , o 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 al , t e s t a l Fabrice DESCLAUX Castle in the Skype 13/31
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
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
Protection statiques Protection dynamiques Conclusion Cˆ ot´ 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
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
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
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 ? esp , add random value sub esp , 20 h popa ; Randomize les registres jmp random mapped page Fabrice DESCLAUX Castle in the Skype 19/31
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
Recommend
More recommend