Evolución de los "emuladores" KMS

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • jmtella
    Administrator
    • Nov
    • 20009

    Evolución de los "emuladores" KMS

    Vamos a ver un poco la evolución de los "emuladores" KMS. Es evidente que estas notas no tienen por objeto propiciar la piratería, sino solo ver como ha ido desarrollándose por parte del mundo de los programadores la construcción de un verdadero "emulador" de KMS.

    Recordemos lo primero que el protocolo KMS solo funciona si la maquina cliente tiene una licencia por Volumen. Es decir, la clave de activación es de Volumen (y en Windows 7 y anteriores, implicaba que la instalación era una especifica, es decir se necesitaba que el Sistema Operativo fuese un sistema de licenciamiento por Volumen - idéntico al normal excepto ciertas DLL's del sistema de activación. Los Windows "enterprise" por defecto son por Volumen, pero el resto hasta windows 8 era software diferente. (aunque esto también se puede forzar).

    El tema, como casi todos en este ámbito, surgió como un reto. Microsoft cuando ofreció los KMS a las empresas tuco el desliz de comentar que era un protocolo inviolable y que garantizaba la genuidad de sus sistemas. Bajo mi punto de visto, una declaración un poco ingenua ya que propiciaba que el mundo de los desarrolladores se pusiese a trabajar. Y lo que es mas grave, esta vez trabajando en equipo ya que hubo distintos foros en la web en donde estos se reunían para ir compartiendo sus experiencias.

    Sobre lo que he ido viendo, podemos distinguir 4 generaciones de "emuladores".

    Primera generación: Un poco rupestre, pero funcionaba. Simplemente se investigó sobre KMS's reales como tenían configurados los ficheros de "token" (los que almacenan las claves reales). Estos eran en función del hardware, pero un hardware se puede emular en maquinas virtuales. El tema resultó simple: sustituir en maquinas virtuales mediante una instalación OEM (a medida) con cierto hardware predefinido (virtual) los ficheros de token. A todos los efectos, el Windows así recién instalado era un servidor KMS.

    Hubo luego software en la red que era capaz de activarlo sin esta necesidad (ya que la virtual se la creaban transitoriamente mediante QEMU, por ejemplo (buscar QEMU en la red). La iniciaban, activaba y limpiaban. Pesado, pero funcionaba. (los MicrosoftToolKit iniciales y sobre todo el KmsPico, por ejemplo, asa como otros emuladores similares).

    Segunda generación: romper el protocolo propiamente dicho, es decir, investigar los mensajes, ver su encriptación (SSL atípico no en el API de Windows), e intentar emularlos. En esto participaron varios grupos, cada encargado de una parte. Encriptación, ver en donde enganchaba en Windows, etc. Lo consiguieron al cabo de unos meses: con esto mejoraron los "emuladores anteriores". El protocolo KMS era el denominado v4 y valido hasta Windows Vista. Cambiaron el protocolo a v5 en Windows 7. Lo rompieron en pocos meses también. (ingeniería inversa y análisis del sistema de encriptación). Por tanto fueron capaces de crear un servidor KMS en la propia maquina a activar, iniciar el servidor, activar, y para el server.

    Tercera generación: En Windows 8, el protocolo cambió; paso a ser v6, y además el sistema analizaba si la IP del servidor era una de las IP's locales en cuyo caso lo denegaba: el servidor no podía estar en la misma maquina que quería activarse. En la primera fase, la investigación del SSL usado y de los mensajes intercambiados se encontraron con muchos problemas. La encriptación en si no estaba soportada por el API nativo de Windows: había que crearse "a pelo" el sistema de encriptación / desencriptación: no es fácil la asignación de pesos y rotaciones en SSL. El análisis de los mensajes daba además 8 bytes de información que no se sabia en principio que significaban...algo debía querer decir.

    Hubo una persona que parece que daba las directrices de búsqueda: firmaba como Mimik38 y los pocos mensajes que puso eran pistas sobre el siguiente paso: se llego a la conclusión que esos 8 bytes, aunque aparentemente los servidores KMS en Windows 8 y 8.1 no los usaban parecían llevar una clave del hardware del equipo. Un hash.

    Con respecto a la dificultad de no poder usarse en local, la solución partió de instalar un driver TAP. Podéis ver información aquí: http://vtun.sourceforge.net/tun/faq.html Con este driver se emulaba una dirección IP virtual que era capaz de engañar al sistema al no ser una IP local. Esta solución no es del todo buena, ya que la instalación de ese driver (aparte de no estar firmado) creaba inestabilidades en Windows. Aun así esa solución se uso durante bastante tiempo.

    Cuarta generación: y de repente surgión un chavalín Colombiano. No tenia mas de 17 años y parece que había nacido con la programación y Windows en la cabecera de su cama. Propuso la idea de inyectar una DLL en el rpc que parchease lo que fuese necesario para engañar a todo el sistema de activación (tanto en la IP de la cual provenía como de paso emular el KMS de activación). Evidentemente lo consiguió, pero el que a Windows le "inyecten" DLL's, a pesar de ser una técnica válida, no es que le guste mucho.

    Una variante posterior, y bajo mi punto de vista la mejor y mas elegante, es usar los sistemas de debugger del propio Windows para que tome el control (en vez de inyectar la DLL). Esto por diseño de Windows no sería modificable y seria la solución perfecta. Provino de una persona que firmaba como QAD -y por cierto, idea sugerida unos días antes por un miembro de estos foros...que a no ser que él se identifique, ocultaré su nombre

    En capítulos posteriores veremos cada una de estas ultimas versiones y sobre todo la solución mas limpia. Y recordad, no deben usarse excepto con fines didácticos por aquellos del mundo del desarrollo ya que realmente son "emuladores".
  • jmtella
    Administrator
    • Nov
    • 20009

    #2
    Sobre como forzar con técnicas de debugger la ejecución de un programa por otro:

    Si en la clave:

    Código:
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
    Creamos una subclave con el nombre de un programa: por ejemplo creamos la subclave: notepad.exe y dentro de esta, creamos un valor llamado "Debugger" con contenido REG_SZ (string) y a este valor le asociamos el nombre de otro programa: por ejemplo calc.exe ...veremos que cada vez que llamamos al cuaderno de notas, bien por enlace directo o bien por nombre (notepad) o bien de la forma que sea,​ (incluso invocación interna por el propio sistema operativo si fuese un proceso del sistema) lo que se ejecutará es la calculadora (calc.exe) en vez del programa original. Windows lo sustituye a todos los efectos.

    Probadlo. Luego es tan fácil como quitar dicha clave para dejarlo todo como estaba.

    NOTA: el propio Mark Russinovich (sysinternals) lo usa con su procexp cuando seleccionamos que sustiuya al task manager de Windows

    Comentario

    • barnastudios
      Member
      • Jan
      • 86

      #3
      Interesante información. Gracias máster!

      Comentario

      • NostromoADF
        Senior Member
        • Dec
        • 596

        #4
        Es impresionante lo que puede hacer la gente colaborando. Por eso la última utilidad para activar Office ya ni necesita tener un KMS, se las apaña para activar ni los cracks de las versiones de hace años.

        Comentario

        • jmtella
          Administrator
          • Nov
          • 20009

          #5
          Originalmente publicado por NostromoADF Ver Mensaje
          Es impresionante lo que puede hacer la gente colaborando. Por eso la última utilidad para activar Office ya ni necesita tener un KMS, se las apaña para activar ni los cracks de las versiones de hace años.
          ​Realmente si que usa un KMS (pero es transparente para el usuario)....ya lo veremos.

          Comentario

          • NostromoADF
            Senior Member
            • Dec
            • 596

            #6
            Originalmente publicado por jmtella Ver Mensaje

            ​Realmente si que usa un KMS (pero es transparente para el usuario)....ya lo veremos.
            Si ya me lo imagino, en realidad quería decir que no es necesario montar un servidor KMS en otra máquina virtual o real.

            Comentario

            Trabajando...
            X