Jailbreak de Windows RT: Nou mètode més ràpid

Imprimeix Correu electrònic
Tecnologia - Gadgets
dissabte, 12 de gener de 2013 00:12

Windows RT no és una versió retallada de Windows 8, això és el que es confirma per enèsima vegada amb el jailbreak de Windows RT, encara que realment no és un jailbreak en tota regla, anem a veure els detalls dels mètodes i per què un jailbreak no sempre és bo.

Primer anem a veure unes qüestions de concepte per entendre ben quins són els mètodes de jailbreak de Windows RT...i per què no és un jailbreak en la seva definició completa.

De què es tracta el jailbreak de Windows RT? L'origen

Per a això tenim a veure primer què s'intenta trencar, això és: poder executar aplicacions d'escriptori, ja que Microsoft va bloquejar totes les aplicacions en Windows RT que no anessin l'Explorador, IE10, Office 2013 o que no vinguessin de la Windows Store. És a dir, Windows RT no és una versió retallada senzillament de Windows 8, sinó que és un port de Windows 8 a l'arquitectura ARM, i un bé, a més.

Aquest bloqueig s'aconsegueix mitjançant la signatura digital de les aplicacions, havent-hi diversos nivells en aquestes signatures per decidir què aplicacions s'executaran o cuales no s'executen, això és el "nivell mínim de signatura" digital requerit perquè una aplicació s'executi. Aquest nivell mínim està representat per un byte en la part segura del kernel, protegida per UEFI, aquests nivells estan escrits directament a nivell de kernel, no són modificables des de l'espai d'usuari. Concretament existeixen 4 nivells de protecció:

  • 0, sense signatura.És el menys segur de tots, no precisa cap signatura digital per executar l'aplicacion, est és el per defecte en Windows 8, pots executar el que vulguis.
  • 4, authenticode, és un estàndard en la indústria que permet als desenvolupadors incloure informació sobre ells en la instal·lació i poder valideu l'aplicació, la seva identitat i la seva integritat de codi.
  • 8, Microsoft, gairebé que s'explica automàticament, és el nivell predeterminat en Windows RT.
  • 12, Windows és el nivell més alt d'autenticació, per tant, el més segur.

Com us haureu imaginat, llavors, el jailbreak de Windows RT es va basar a trobar aquest byte i saltar-se la protecció, aquesta part sonarà fàcil amb paraules, però no és fàcil dur-ho a terme tècnicament, menys descobrir-ho.

No podem accedir al kernel, però aquesta variable que representa el nivell mínim d'autorització que necessita una aplicació s'ha de carregar en memòria principal (RAM) cada vegada que l'usuari vagi a executar una aplicació, per un motiu senzill: Com es realitza la verificació si no? Ja tenim el primer indici de com intentar el jailbreak de Windows RT. El següent pas, per tant va ser trobar la llibreria que fa l'autenticació de la signatura, que és CI.dll, aquest procés va ser dut a terme en una màquina amb Windows 8 amb un depurador, després va ser confirmat en Windows RT, en ser est un port de Windows 8. Una vegada oposat, el següent pas és veure com es pot modificar en memòria, això significarà que el jailbreak de Windows RT no serà persistent entre reinicios.

És una amenaça de seguretat? Té efectes secundaris?

No, no és una amenaça de seguretat, però sí és probable que tingui efectes secundaris, sobretot en la durada de la bateria, encara que si t'endinses en el procés veient la llista d'aplicacions disponibles de moment, és perquè aquest detall no és massa important per a tu o sempre la vas a tenir baix del carregador.

Si ben el jailbreak no implica per se una amenaça de seguretat, sí que es poden compilar aplicacions que actuïn com viruses i que corrin en les tablets amb el jailbreak de Windows RT, però aquestes s'hauran anat amb el reinicio, igual que el jailbreak.

Executant el jailbreak, mètode ràpid

Basat en el treball de l'anterior desenvolupador, s'ha publicat un mètode realment senzill per tenir la nostra Surface o qualsevol Windows RT jailbreakeado, la qual cosa significa que podrem executar aplicacions d'escriptori, encara que això no significa que es puguin executar les mateixes aplicacions que para Windows 7, com si és possible en Windows 8, ja que les aplicacions hauràs d'estar compilades específicament per a l'arquitectura ARM. Tenint el codi font d'una aplicació, portar-ho és fàcil. De fet ja hi ha diverses portades i existeix una llista de les quals ja estan provades i funcionen, majorment aplicacions per a desenvolupadors i emuladors de consoles.

Anem a l'embolic, per a la instal·lació:

  • Descarreguem els arxius necessaris.
  • Descomprimim els arxius en qualsevol carpeta.
  • Executem "runExploit.bat". La primera vegada que ho executem, si decidim instal·lar la part de Modern UI ens llançarà PowerShell per instal·lar l'aplicació Modern UI sobre la base de l'arxiu .ps1 dins de binModernUI_App (això és un sideloading normal).

Noti's que si volem fer-li un cop d'ull al que fa el script ens n'hi ha prou amb obrir-ho amb el bloc de notes, per als curiosos o experimentats.

Com hem dit abans, aquest sistema no perdura entre els reinicios del sistema, així que hem d'aplicar-ho amb una petita modificació cada vegada que encenguem nostra tablet (cal esmentar que jo mai l'apago). Anem a això:

  • Esperem uns minuts després que ens logueemos en el nostre compte.
  • Executem "runExploit.bat" i esperem uns 20 segons al fet que faci la seva màgia.
  • Pressionem la tecla de volum a baix.
  • Esperem al fet que acabi el script i responem a tot el que ens pregunti, que és bastant senzill.

Repetim aquesta última part del procés cada vegada que encenguem la tablet i podrem córrer homebrew sense problemes.

Quin és el mètode llarg pel jailbreak de Windows RT?

Aquí comença la part complicada, gairebé exclusiva per a persones amb alts coneixements tècnics, per la qual cosa si l'assemblador d'ARM o l'hexadecimal et sona a xinès, amb executar el mètode anterior és suficient, que fa exactament el mateix. Per als curiosos o que entenguin de què anem a parlar, comencem:

Windows assumeix que certs processos sempre passen informació ben formada al kernel, la qual cosa és una vulnerabilitat en tota regla, n'hi ha prou amb attachearse al procés designat, el problema és que en Windows RT les apps Modern UI no tenen el context de seguretat necessari per fer-ho i no podem córrer aplicacions d'escriptori, així que anem a fer-ho amb Visual Studio i un depurador remot, aquest depurador remot pot attachearse al procés CRSS i manipular el byte del que parlàvem en memòria, que no està exportat en cap símbol en el kernel, per cert.

La funció vulnerable és NtUserSetInformationThread, que es diu diverses vegades des de CRSS, treballarem sobre la llibreria winsrv.dll per ser la que té els paràmetres indicats per l'exploit:

TerminalServerRequestThread+0x230 MOVS R3, #0xC ADD R2, SP, #0x58 MOVS R1, #9 MOV R0, 0xFFFFFFFE BL NtUserSetInformationThread

Ara el que haurem de fer és executar el codi i posar un punt de ruptura del depurador per poder modificar l'estructura de R2 abans que cridi a NtUserSetInformationThread i fer-nos amb la vulnerabilitat. El problema és que això no és una solució de per si mateix viable, ja que necessitem restar 0×80000, en lloc d'1, que és el que resta aquest exploit; això és a causa que l'offset del byte que porta la informació de la signatura mínima necessària és  0x19FFA6.

Per seguir el procés necessitarem saber l'adreça de memòria on s'allotja el kernel, això sí que es pot fer des d'una aplicació Modern UI en C++ amb la funció NtQuerySystemInformation. Per usar aquesta funció necessitarem fer unes modificacions per poder cridar a l'API completa de C++ des d'una aplicació de la Windows Store.

Passant una altra vegada al depurador remot en Visual Studio, des de la posició 0×10800 en winsrv.dll, correm:

 push {r5-r8} mov r7, 0x80000 ldr r8, my_addr loc_loop_begin movs r3, 0xC add r2, sp, 0x68 ;0x58 org. add r5, r2, 4 str r8, [r5] movs r1, 9 mvn r0, 1 mov r12, 0x10I1 svc 1 subs r7, r7, 1 cmp r7, 0 bne loc_loop_begin pop {r5-r8} mov r0, r0 ;#punt de ruptura my_addr dcd <ADREÇA> end

Òbviament on posa <ADREÇA> hem de posar l'adreça basi del nostre kernel, sumant-li 0x19FFA4 + 0x18. Abans d'executar això posem un punt de ruptura abans de la trucada al mètode en  NtUserSetInformationThread en TerminalServerRequestThread, que s'activarà quan pressionem un botó de volum. Després d'això el que farem és redireccionar el registre que guarda el punter de la següent instrucció a la posició de memòria on està el codi que hem posat a dalt, executem i redireccionamos al primer punt de ruptura. Quan tornem a executar, tindrem el jailbreak de Windows RT.

L'entrada Jailbreak de Windows RT: Nou mètode més ràpid apareix primer en Celularis.




Font

Trackback(0)
Comentaris (0)Add Comment

Escriu un comentari


Escriu els caràcters de la imatge


busy
 

Com funciona WikiNotícia?

WikiNoticia es un sistema combinat d'algorismes i persones, que adapta notícies d'altres idiomes al català / valencià, de manera iterativa. Això vol dir que algunes de les notícies poden contenir expressions o paraules incorrectes. Per això els nostres administradors i usuaris (alhora lectors) editen contínuament les notícies per corregir aquestes errades. D'aquesta manera i en molt poc temps, obtenim articles d'alta qualitat.

Només cal que et registris, entrar el nom d'usuari i contrasenya, i ja seràs capaç d'ajudar-nos a crear una gran font d'informació en català! Pots veure ací les preguntes més freqüents sobre com editar notícies.

Registra't i ajuda'ns a millorar