El extraño comportamiento de una simple aplicación para Windows llamó nuestra atención y motivó el análisis que hicimos de una amenaza que no había sido documentada anteriormente. Se trata de un malware modular al que llamamos DNSBirthday; se esconde en el programa Birthday Reminder, cuya función original es, justamente, recordar fechas de cumpleaños. Pero además de eso, sirve una buena cantidad de anuncios publicitarios indeseados.

El HealthCERT de Noruega se contactó con nosotros y nos preguntó por consultas a DNS a dominios con el formato [0-9a-f]{60}.smoke, luego de que les llegara esta inquietud por parte de un proveedor de servicios de salud regional, llamado Sykehuspartner. Cabe destacar que no hay dominio .smoke de nivel superior, por lo menos hasta el momento de escribir.

La aplicación responsable de ese comportamiento en Birthday Reminder, que, además de cumplir su función legítima, tiene otras funcionalidades que no se le muestran explícitamente al usuario. Hemos visto a Birthday Reminder descargar y ejecutar componentes adicionales que interceptan peticiones DNS con el fin de inyectar avisos publicitarios en páginas web.

Está bastante claro que los autores de este malware escribieron todos los componentes y no se limitan a revender máquinas comprometidas. Por ejemplo, el servidor de C&C es el mismo para todas las muestras y muchos de los elementos del malware apuntan a un proyecto llamado RQZTech.

Imagen 1: Interfaz de Birthday Reminder

Distribución

Solo hemos visto al instalador de Birthday Reminder siendo descargado de la siguiente URL:

hxxp://updates.rqztech.com/download?app=BirthdayReminder&aff_id=15124

El parámetro aff_id sugiere que hay distribución a través de un programa afiliado, pero no pudimos confirmarlo. También podría ser un señuelo.

La telemetría de ESET muestra que esta amenaza se distribuye de manera bastante uniforme en todo el mundo, con picos en algunos países como Estados Unidos, España, Japón e Italia.

Imagen 2: Distribución mundial de DNSBirthday

Análisis técnico

DNSBirthday es un malware modular con múltiples componentes. Nos tomó bastante tiempo entender el esquema completo detrás de su operatoria y juntar todas las piezas del rompecabezas. Hallamos que todos los componentes tienen algunas cosas en común:

  • Se comunican con solo un servidor de C&C (updates.rqztech.com) usando mensajes formateados en JSON vía HTTPS.
  • La mayoría de los binarios están estáticamente enlazados con OpenSSL y libcurl, así como con una librería JSON.
  • La mayoría de los nombres de los componentes tienen el prefijo rqz.
  • Las rutas a los archivos PDB (program database) tienen la estructura: C:\Users\default.default-PC\Documents\Visual Studio 2013\Projects\rqz-[module-name]\Release\rqz-[module-name].pdb

Imagen 3: Página inicial de RQZTech al día 2 de junio de 2017

Los autores eligieron hacer certificate pinning con dos certificados para prevenir ataques Man-In-The-Middle. Sin embargo, el servidor también respondió a peticiones HTTP no cifradas, por lo que fue posible capturar el tráfico de red mientras hacíamos debugging cambiando la estructura de la URL de estas peticiones a http.

Los certificados insertados en los ejecutables están auto-firmados. El campo Not-before muestra que probablemente se generaron el 16 de abril de 2016.

Luego entraremos en detalles de cada componente, pero primero veamos de manera general cómo se relacionan:

Imagen 4: Visión general de los componentes de DNSBirthday

 

A pesar de que todos los componentes son ejecutables PE, solo unos pocos se escriben en el disco. Los demás se cargan y ejecutan en memoria usando un loader personalizado.

BirthdayReminderSetup.exe

BirthdayReminderSetup.exe es un paquete de NSIS de 18MB. Este instalador determina primero si el sistema es una versión de 32 o 64 bits, y extrae varios archivos a la carpeta de intalación especificada según el caso.

Luego, logra persistir creando el valor BirthdayReminder en la clave de registro HKLM\Software\Microsoft\Windows\CurrentVersion\Run con la ruta a la aplicación BRController.exe. Después de todo, ¿cómo podría recordarte los cumpleaños si no se está ejecutando continuamente? Incluso tiene un ícono en el área de notificaciones del sistema.

BRController.exe — rqz-loader

El único propósito del componente BRController.exe es descifrar el archivo br.dll.enc en la memoria, cargarlo y llamar a rqz_stg1_init, una de sus funciones exportadas.

El algoritmo de descifrado usado es AES-256-CBC, implementado a través de una librería OpenSSL enlazada de manera estática.

La clave de descifrado se genera en dos pasos. Primero, se computa el hash SHA-256 del archivo logo.png. Luego, se le aplica una simple rutina XOR. Al primer byte se le aplica XOR con el último, y a todos los demás con el primero.

El vector de inicialización (IV) son los primeros 16 bytes de la clave, que luego es reorganizada por la misma rutina XOR usada para la clave.

br.dll — rqz-stg1

Llamamos br.dll a la forma no cifrada de br.dll.enc. Esta librería actúa como el componente núcleo de este malware.

Primero, br.dll crea un mutex Global\Global\RqzSingleInst y luego una lista de objetivos a los que pueda llamar con nombres explícitos como dlExec, loader o incluso exfil. Estos objetos, al ser invocados, pueden ejecutar tareas como descargar archivos ejecutables, guardarlos opcionalmente en el disco y ejecutarlos, o exfiltrar datos al servidor de C&C.

Luego recupera un identificador único para cada bot, hardcodeado en el ejecutable de BRController, buscando la secuencia de bytes 0xB00B1355, y luego leyendo los 16 bytes siguientes. A continuación, intenta iniciar la interfaz gráfica de usuario de la aplicación Birthday Reminder y entra en un bucle para comunicarse con su servidor de C&C.

La primera petición HTTP POST hecha al servidor (hxxps://updates.rqztech.com/update_check/) contiene información básica en formato JSON dentro del parámetro de información.

Aquí hay una versión más prolija del primer POST hecho al C&C:

{
    "compStatus": [],
    "ver": "1.1.0-x32",
    "osver": "Windows 7 HomeBasic -unknown- x32",
    "uuid": "7cbf93f588f70f6cf514666dfb8d36d34943dd924c7bb7a5372a5ae765de2009",
    "checkinCount": 0
}

Este JSON contiene la versión del malware (ver, 1.1.0-x32), la versión de Windows (osver), el identificador de bot (uuid), el número de veces que el malware trató de contactar al servidor (checkinCount) y una matriz que contiene el estado del último componente cargado (compStatus).

El servidor responde con una lista JSON que contiene un arreglo de parámetros para pasar a los diferentes componentes. Aunque la petición luce como un mecanismo de actualización de software, hemos observado que es usada para solicitar los componentes maliciosos y descargarlos en las víctimas.

La primera vez que el malware contacta al servidor, este último responde con el siguiente JSON (la string payload está truncada para facilitar la lectura).

[
    {
        "args": {
            "exit": "0",
            "env": "RQZ_SESSIONID=58a72526b10d8e000aef05d7;",
            "sleepTime": "28800000"
        },
        "component": "callback"
    }, {
        "args": {
            "pname": "rqz_info_gatherer",
            "payload": "+j5kXRAtalG4PNEwXrhX [...] nhG0JfKbF7OzmcE7ULfiwm1Sg=="
        },
        "component": "loader",
        "exec": "1"
    }, {
        "args": {},
        "component": "rqz_info_gatherer",
        "exec": "1"
    }
]

La respuesta del servidor muestra tres acciones para ser ejecutadas en secuencia. La primera define algunas variables de entorno usando el componente callback. El payload es una DLL codificada en base64 y cifrada (rqz_info_gatherer). La rutina de descifrado es la misma que la usada para descifrar el archivo br.dll.enc.

Una vez cargado, el componente ahora descifrado recibe la llamada. Después, el malware duerme por ocho horas.

rqz-info-gatherer

El propósito de este módulo es recolectar información sobre la máquina y enviar un reporte usando el componente exfil de br.dll.

Este hace una solicitud HTTPS POST a hxxps://updates.rqztech.com/update_report/ con el uuid del bot y payload. El parámetro payload es un objeto JSON compuesto por dos elementos: data y sha256.

El campo sha256 contiene el hash de la información antes de ser codificada con base64.

Por su parte, data es un JSON codificado en base64 que contiene información sobre la computadora. El fragmento siguiente es un ejemplo de un informe decodificado enviado al servidor (procStat se trunca para facilitar la lectura).

{
"infoGatherer": {
    "defaultBrowser": "FIREFOX.EXE",
    "firewallEnabled": 1,
    "winBuild": "Windows 7Home Basic - unknown - x32",
    "dirStat": {
      "appData": 275865504,
      "webTemp": 109159833,
      "docu": 1679,
      "desktop": 66397544
    },
    "infoGathererVersion": "1.0.4",
    "procStat": "[System Process],System,smss.exe, [...]firefox.exe,audiodg.exe,",
    "installDate": 0,
    "dotNetVer": "3.5.30729.5420;3.0.30729.5420;2.0.50727.5420",
    "ieVer": "8.0.7601.17514",
    "oemLogo": "0",
    "uptime": 13771487,
    "permCheckSuccess": "1"
  }
}

La mayoría de estos campos se explican por sí mismos. El objeto dirStat contiene el tamaño en bytes de ciertas carpetas.

Una vez enviado, el servidor responde solo con "dank" ("gracias", en alemán), lo cual coincide con el campo de nombre de país en el certificado público.

rqz-dnsduvel-ldr

Observamos que, luego de un cierto período (una o dos semanas), el componente br.dll descarga el componente rqz-dnsduvel-ldr. "Duvel" es "diablo" en (viejo) holandés y frisio, así que esto probablemente significa "devil DNS" o "DNS del diablo".

Este componente busca procesos de navegador como iexplore.exe, chrome.exe y firefox.exe para inyectar código malicioso en ellos.

Una vez que encuentra un proceso, el módulo droppea y ejecuta un ejecutable ubicado en la carpeta %TEMP% (GetTempPathA). El nombre del archivo es el identificador de proceso (PID) del proceso para inyectar código, con la extensión .tmp. Esto significa que para cada proceso de navegador a ser inyectado, se droppea una copia del ejecutable en un archivo  .TMP  en la carpeta temporaria.

El binario usa el nombre interno rqz-dnsduvel-ldr-exe y se le pasan como parámetros tanto el PID del proceso a ser inyectado como un identificador de sesión.

rqz-dnsduvel-ldr-exe

Este componente es un injector que usa la inyección reflexiva de DLL para cargar una DLL en el espacio de direcciones de otro proceso.

Este ejecutable contiene otro, pero a diferencia del módulo rqz-dnsduvel-ldr, el binario embebido está cifrado. Una vez más, la rutina de descifrado es AES-256-CBC pero esta vez el IV y la clave están hardcodeados.

El injector consulta al servidor para un archivo de configuración. La consulta se realiza a través de una solicitud HTTPS POST a:

hxxps://updates.rqztech.com/update_report/?update=fdac34d

Los parámetros son, de nuevo, uuid y payload. A la vez, payload es, de nuevo, un objeto JSON con data y una clave sha256. El campo data contiene el JSON codificado en base64 que sigue a continuación, en donde procName es el navegador a inyectar y sessionID es la cookie establecida por el segundo argumento de la línea de comandos.

Ejemplo de reporte de rqz-dnsduvel-ldr-exe:

{
  "duvel": {
    "procName": "chrome.exe",
    "loaderVer": "rqz-dnsduvel-ldr-exe-1.0.4-x64",
    "duvelVer": "rqz-dnsduvel-1.0.3-68c0c5",
    "sessionId": "[...]"
  }
}

El servidor responde con el siguiente archivo de configuración JSON (blockList se trunca para facilitar la lectura).

Ejemplo de configuración para rqz-dnsduvel-ldr-exe:

{
  "duvelDetails": {
    "token": "be1728523f82428fc2016155f6dd65867b01997dc0b1c93097a8b7cc60cb.smoke",
    "dnsServer": "176.31.106.50",
    "blockList": [
      "redirect.viglink.com",
      ...,
      "be1728523f82428fc2016155f6dd65867b01997dc0b1c93097a8b7cc60cb.smoke"
    ]
  }
}

La configuración completa con una "lista de bloqueos" está disponible en el Github de ESET.

El array blockList contiene aproximadamente 500 nombres de dominio que suelen alojar anuncios. El contenido de esta configuración se almacena en memoria en un mapeo denominado rqzduvel-checkin-payload creado con CreateFileMapping (INVALID_HANDLE_VALUE, ...).

El campo token contiene un nombre de dominio que es utilizado por el malware para comprobar si el servidor DNS utilizado es el del campo dnsServer. DNSBirthday consulta este dominio y comprueba si la dirección devuelta es 127.0.0.1.

El módulo recupera el export ReflectiveLoader en el binario descifrado (rqz-dnsduvel), mapea la biblioteca en el espacio de direcciones del explorador usando WriteProcessMemory y llama a CreateRemoteThread con el parámetro lpStartAddress apuntando a ese export.

Una vez inyectado, el componente informará al C&C si la inyección ha tenido éxito con una solicitud POST a: hxxps://updates.rqztech.com/moduleapi/

El resultado de la inyección enviada al servidor de C&C es el siguiente:

{
    "password" : "74f20fc0a7274",
    "duvel" : {
        "function": "smokeFail",
        "arg" : {
            "smokeUrl" : "be1728523f82428fc2016155f6dd65867b01997dc0b1c93097a8b7cc60cb.smoke",
            "reason" : "1"
        }
    }
}

La string "reason" puede tener los siguientes valores:

  1. El binario no pudo abrir el proceso de la víctima
  2. La inyección fue exitosa (el proceso sigue funcionando después de un minuto)
  3. El proceso probablemente se detuvo y la inyección no fue exitosa

rqz-dnsduvel

rqz-dnsduvel es la etapa final y su propósito es hacer hooking de las funciones de resolución de DNS.

Los autores probablemente han tomado prestado algún código para lograr la inyección reflexiva de DLL. También han enlazado estáticamente el proyecto NTHooklib que incluye la biblioteca udis86. NTHooklib es una biblioteca que proporciona un motor de hooking.

El componente conecta las siguientes funciones DNS:

  • getaddrinfo
  • GetAddrInfoW
  • gethostbyname
  • GetAddrInfoEx

El objetivo del hook es consultar un servidor DNS alternativo cuando la consulta es para un nombre de dominio presente en la "lista de bloqueos" del archivo de configuración.

Cada vez que el navegador inyectado necesita resolver uno de estos nombres de dominio, se utiliza el servidor configurado en dnsServer (176.31.106.50 en este caso). Independientemente del nombre de dominio consultado, mientras supervisaba esto, la dirección IP devuelta desde ese servidor DNS falso siempre era 188.214.30.97 o 188.214.30.98.

El siguiente fragmento de código es un bucle que reemplaza todas las respuestas de la función getaddrinfo real con la dirección IP resuelta por el servidor falso.

Imagen 5: Función hook getaddrinfo que reemplaza los resultados

Inyección de anuncios publicitarios

Como mencionamos anteriormente, los nombres de dominio en la lista de los que están bloqueados están relacionados a publicidad, lo que nos hace pensar que el propósito principal de este malware es reemplazar o inyectar anuncios en páginas web.

Cuando se le solicitan archivos terminados en .js, el servidor en 188.214.30.97 siempre retorna el mismo archivo. El script añade un elemento div con id greenteainthesahara. Luego hace una solicitud HTTP POST a la URL hxxp://ads.greenteamedia.net/ads y simplemente evalúa (eval) la respuesta.

El JavaScript que hemos observado de ads.greenteamedia.net contiene código para diferentes navegadores y plataformas y, lo que es llamativo, también para teléfonos móviles. El propósito principal de este script es añadir un EventListener en la página, que abre una nueva ventana de navegador con un anuncio publicitario cuando se hace un clic.

Imagen 6: Div malicioso añadido dentro de una página web

Este es un ejemplo de la cadena de redirección que hemos observado:

  1. hxxp://ads.greenteamedia.net/tracker?id=58b87f2a2a61cf000a11f651&type=Popunder
  2. hxxp://go.oclaserver.com/afu.php?zoneid=788473
  3. hxxp://onclkds.com/afu.php?zoneid=788473
  4. hxxp://onclkds.com/?r=/mb/han&zoneid=788473&pbk2=fd0ac8ee88f5760db27385dc91765d976393347937513284046&auction_id=b322d474-a5bc-4757-bb28-6613427bd3e8&uuid=fffa3dff-f018-412b-95a9-1a9e915fa972&ad_scheme=1&ab=148&rotation_type=2&adparams=bm9qcz0w&x=1698&y=822&sw=1716&sh=927&wx=0&wy=0&ww=1716&wh=887&wiw=1698&wih=822&wfc=0&pl=http://onclkds.com/afu.php?zoneid=788473&drf=&np=0&pt=undefined&nb=1&ng=1&dm

El resto de la cadena cambia y probablemente depende del resultado de la subasta de anuncios. A veces redirige a un drive-by download que podría resultar en la instalación de más malware.

Conclusión

Los autores de este malware se esforzaron mucho para mostrar avisos publicitarios no solicitados.

Como mostramos, se dedicaron bastante a evadir la detección incluyendo un loader a medida, cargando y descifrando componentes en memoria, creando una arquitectura modular que permite actualizaciones e inclusión de más componentes, y usando una clave pública con pinning para asegurar sus comunicaciones.

Sin embargo, algunas decisiones son difíciles de entender:

  • Versiones más nuevas de algunos componentes contienen la ruta .pdb que no estaba presente en versiones anteriores
  • La mayoría de los componentes no están escritos en el disco, pero la etapa final rqz-dnsduvel-ldr-exe lo está
  • El componente rqz-dnsduvel-ldr-exe usa una clave y un vector de inicialización hardcodeados en vez de derivarlos del hash del archivo logo.png.

La modularidad de este malware permite que haya más funcionalidades que quizá todavía no vimos. Es posible que los operadores enviaran otro tipo de malware, como spyware, a las víctimas que eligieron. Algunos componentes podrían estar en desarrollo en este momento.

Nos hemos contactado con OVH, el proveedor de hosting, en relación al servidor de C&C y el servidor DNS falso y ambos han sido dados de baja.

Gracias a Romain Dumont por su ayuda con el análisis y la escritura. Y, por cierto, ¡feliz cumpleaños, ESET!

Apéndices

Muestras analizadas

Nombre de archivo
Nombre interno Versiones analizadas Hora de depuración Propósito principal
BRController.exe rqz-loader 1.1.0 x32 & x64 Dom 02 oct. 2016 16:11:40 Loader:

Descifra y carga br.dll.enc en memoria

BRController.exe (debug) unknown unknown x32 & x64 Desconocido Loader:

Descifra y carga br.dll.enc en memoria

br.dll(.enc) rqz-stg1 1.0.4 x32 & x64

1.1.0 x32 & x64

Desconocido

Dom 02 oct. 2016 16:12:07

Componente central:

Comunicación con el C&C

Filtración de datos

Actualizar/descargar otros componentes

Descargar/ejecutar otros módulos en memoria

rqz-info-gatherer 1.0.4 x32 & x64 Mar 13 sep. 2016 23:25:43 Módulo:

Reunir información sobre la computadora

rqz-dnsduvel-ldr 1.0.4 x32 & x64 Sáb 17 sep. 2016 19:55:10 Módulo:

Droppear y ejecutar rqz-dnsduvel-ldr-exe para cada proceso de navegador

%d.tmp rqz-dnsduvel-ldr-exe 1.0.3 x32 & x64

1.0.4 x32 & x64

Sáb 03 sep. 2016 19:02:11

Sáb 17 sep. 2016 19:54:36

Injector:

Inyectar un proceso con su dll embebido (rqz-dnsduvel)

rqz-dnsduvel 1.0.2-30fa39 x32 & x64

1.0.3-68c0c5 x32 & x64

Sáb 03 sep. 2016 19:01:51

Sáb 17 sep. 2016 19:53:50

DNS hooker:

Hacer hook de funciones DNS dentro de un proceso

Reemplazar direcciones IP para algunos nombres de dominio

IoCs

Registro

  • "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\BirthdayReminder"

Mutex

  • Global\Global\RqzSingleInst
  • Global\downloadExec

Hashes

Componente SHA-1 Detección de ESET
BirthdayReminderSetup.exe 6a07de60da0962ee952e63ac89ce86d2581f3926 Win32/Adware.DNSBirthday.A
rqz-loader 1.1.0 x32 19041323a4ecd92eb888664e1d2c0b2893419f78 Win32/Adware.DNSBirthday.A
rqz-loader 1.1.0 x64 94c6f2bbad0ce47957d18b53ef1938d846d7576f Win64/Adware.DNSBirthday.B
rqz-stg1 1.1.0 x32 59eb5b5d3171069761a13389a1a7cce12a95e0bd Win32/Adware.DNSBirthday.A
rqz-stg1 1.1.0 x64 f02e0012aedf02f898f1558c827491d7099c1d62 Win64/Adware.DNSBirthday.A
rqz-info-gatherer 1.0.4 x32 8cfbd1f7e4d8c4357766f0f4b84bb08cf2e78c17 Win32/Adware.DNSBirthday.B
rqz-info-gatherer 1.0.4 x64 0f4aeee1a0878eb510229b871e02eb1e1939107e Win64/Adware.DNSBirthday.B
rqz-dnsduvel-ldr 1.0.4 x32 892785875fcdfe4cc672ba1c3fc59bfbf37c7efe Win32/Adware.DNSBirthday.A
rqz-dnsduvel-ldr 1.0.4 x64 5a5174739bbb7881c46112704cbf039f39d98fec Win64/Adware.DNSBirthday.B
rqz-dnsduvel-ldr-exe 1.0.4 x32 cc291be6cbc7b0dc3aa09973d0ed98e363f9083f Win32/Adware.DNSBirthday.A
rqz-dnsduvel-ldr-exe 1.0.4 x64 ce84d96a974e95499fadd3320f851c0b728cd438 Win64/Adware.DNSBirthday.B
rqz-dnsduvel 1.0.3-68c0c5 x32 e6b6fe919cf6c3af0d40594e86da4cf776dbcf9a Win32/Adware.DNSBirthday.B
rqz-dnsduvel 1.0.3-68c0c5 x64 d1085fb7f2c4d1add9244cb8af6d0e25b50d7b14 Win64/Adware.DNSBirthday.B

Como BirthdayReminderSetup.exe y BRController.exe contienen un ID único de bot, aquí hay fuzzy hashes ssdeep:

ComponentE ssdeep
BirthdayReminderSetup.exe 393216:ZD4b8Ev/xl3OB4fcUx6uj55/Q7COLc1cm+DkC1GWF2jazuIYRCxEfFCqgY9iHtKZ:ZD5EhFOmcUs85/OCOLecm+14OzzY9Fdl
BRController.exe (x86) 24576:0+KpP0PYnsKdFCH6BMKHiBMikwMbSyM52it6YTekcys4e6faNe0M4RzRPxM4TuZR:cfs4F6KHiy7kM4CjlpRPx1TuZ+tgP8K
BRController.exe (x64) 49152:l4+VwASOwGtlqKPb8KHh+3ulMrqkvTiV3ML3OsQXIU6inTe2mEPEB:jCTiVGV+q2mHB

Red

  • Rogue DNS server: 176.31.106.50
  • C&C server: updates.rqztech.com (188.165.205.99)
  • Ad server IP addresses: 188.214.30.97 and 188.214.30.98
  • DNS query to domain matching [0-9a-f]{60}.smoke

Certificados SSL

358bb04f6a0bf8ce88d23b2e620ac01b28d307ab80286f6ee2dcc484a6b1a5d0

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            d7:f9:78:6e:63:d2:7f:f4
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=DE, ST=Berlin, CN=rqztech.com
        Validity
            Not Before: Apr 16 11:38:38 2016 GMT
            Not After : Apr 14 11:38:38 2026 GMT
        Subject: C=DE, ST=Berlin, CN=rqztech.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (4096 bit)
                Modulus (4096 bit):
                    00:c3:11:ec:01:27:60:d1:d3:92:53:c3:06:31:ca:
                    f9:82:7a:57:7b:17:d3:a6:61:8e:57:ad:e9:d2:9d:
                    cb:40:1e:32:de:e7:3c:79:eb:c5:cc:f7:78:af:d3:
                    a0:43:54:28:e1:0d:ba:69:56:ea:d9:03:dd:c8:41:
                    5f:8d:12:3e:23:85:94:73:d9:83:db:90:83:35:60:
                    6a:c5:96:77:7c:3c:04:9d:05:5b:4d:15:9e:5c:54:
                    ea:dd:1a:03:4d:db:8a:56:b3:f9:ee:12:89:01:b0:
                    d0:79:bb:c1:5d:55:9b:e4:3d:a5:91:0e:fc:36:2f:
                    91:51:0c:d1:6f:47:5f:18:76:fd:01:71:df:55:60:
                    f9:ba:82:66:6d:08:51:81:4e:02:67:74:ba:6c:37:
                    b4:02:bf:cf:3d:07:16:c8:2d:9f:77:85:9a:b9:21:
                    e7:06:d2:de:4d:40:18:2b:60:3a:83:7f:d4:a8:2b:
                    6f:4f:ee:ab:db:27:93:02:10:62:74:58:6a:82:71:
                    d6:4c:89:3d:03:19:4a:5b:b4:c9:15:11:21:ea:ce:
                    99:5a:bf:ee:d6:53:cc:31:ee:06:42:96:38:5f:98:
                    0a:27:c5:e1:a0:86:47:3b:d1:ec:e2:99:28:b4:4e:
                    45:88:b4:20:4d:67:2b:40:94:43:08:8c:ca:96:a2:
                    ec:08:c0:79:ef:e0:52:21:d4:44:03:c1:b5:bd:09:
                    b7:ee:a7:4b:7b:8a:0d:12:4c:84:05:31:66:08:03:
                    b2:cc:d0:42:13:7a:a5:24:fe:0d:aa:4f:aa:5d:d2:
                    f1:4a:55:87:72:31:7e:74:db:b0:cb:a2:5f:88:80:
                    56:40:33:49:6e:e8:cf:56:99:57:41:54:12:19:71:
                    b3:3d:bd:66:f3:b1:61:15:f9:81:de:a5:6b:8d:c5:
                    4b:e5:8d:62:e5:bf:7d:f0:98:c8:24:bd:c7:fa:55:
                    b2:ac:09:e7:fb:83:f4:87:25:f3:04:07:f8:de:23:
                    b9:8e:68:09:e7:5c:9e:51:66:d6:c7:36:55:0c:1f:
                    e0:7c:ed:62:a5:47:fd:dd:c0:8d:ad:46:66:b1:80:
                    2f:03:0e:06:25:2d:98:58:37:fc:48:70:8b:67:83:
                    69:7f:39:03:36:79:e3:d0:db:83:d1:ad:fd:ba:8d:
                    9c:7a:81:67:5e:af:97:37:58:e1:a4:9e:31:65:ab:
                    47:b7:a0:eb:c6:70:de:7f:40:18:42:d9:06:d3:30:
                    17:87:a8:84:c5:9a:9e:48:41:b9:11:0f:94:27:c9:
                    5e:a1:26:47:5c:c7:42:d7:c3:0f:08:ae:7a:ba:32:
                    76:22:f0:14:5d:03:9f:f0:4f:63:3f:a1:4c:d7:e0:
                    44:0a:31
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                1B:4C:10:58:D0:62:AD:4E:A2:43:C2:9A:81:F3:59:F6:B3:2F:B1:C1
            X509v3 Authority Key Identifier:
                keyid:1B:4C:10:58:D0:62:AD:4E:A2:43:C2:9A:81:F3:59:F6:B3:2F:B1:C1

            X509v3 Basic Constraints:
                CA:TRUE
    Signature Algorithm: sha256WithRSAEncryption
        3f:b4:9b:47:b2:99:a0:90:d5:75:34:c7:a2:87:1d:90:4e:6c:
        a5:ce:59:76:68:8f:a1:17:9f:2e:0e:45:31:a6:0e:92:66:03:
        61:b9:61:e7:20:1e:d0:aa:97:ce:bf:1e:d7:d4:9c:f2:78:a0:
        99:62:1e:97:65:1c:d3:f8:b7:fb:a1:a7:23:62:32:ad:f2:72:
        1c:85:08:ab:71:60:2b:44:91:9a:bd:82:42:1f:8f:1f:fe:b9:
        39:2b:45:9d:11:7b:53:73:8f:2c:16:f6:95:f1:25:58:6d:8b:
        01:61:67:17:b6:02:b1:6a:00:48:8c:a7:59:d4:d5:3c:d1:57:
        7a:9a:4b:dd:8e:db:05:a0:f7:c0:19:10:87:b7:3a:55:34:5f:
        b4:c8:15:ec:17:5f:c1:c1:7b:5c:cb:53:ef:c3:bf:0c:1b:f6:
        a3:8d:3a:5e:72:e5:49:7f:6a:37:0c:fc:7c:f6:54:4f:9f:b9:
        37:f5:57:73:25:ed:62:9b:41:38:e8:a6:08:11:ad:c1:1a:af:
        65:94:6c:0b:cc:5b:27:1a:cd:80:bd:ea:f9:a0:a2:c0:e5:bc:
        cb:fd:3a:8c:82:85:0e:5a:0a:04:88:86:f7:10:38:2d:65:30:
        18:c2:3c:a6:07:90:6c:d6:21:78:68:28:5a:b8:ca:44:c1:2c:
        15:53:92:0b:a7:b8:bb:e3:d8:27:85:d4:c1:5f:a9:e8:32:95:
        d7:a7:98:4b:b5:db:48:e0:e8:5c:28:94:5d:d9:b3:af:74:48:
        e2:45:72:c1:34:8a:95:6e:a3:81:1e:8b:ad:47:fb:01:70:18:
        c1:25:77:da:97:27:b5:90:76:7d:3f:3e:78:2d:a9:31:f9:c3:
        85:6f:ae:a1:5d:e3:34:a2:c4:2d:25:6e:45:ba:2b:fb:ad:0d:
        d2:e5:d2:fe:6a:13:3c:64:c0:ce:fd:72:e5:83:11:88:84:c0:
        5f:c3:6a:b1:e9:a0:aa:8b:a1:29:de:c6:3d:5e:36:78:bc:4b:
        94:e7:91:49:30:2f:83:c3:34:38:e9:3b:9d:2e:cb:51:da:75:
        93:7f:78:1e:00:89:d8:bf:d8:ca:69:9d:45:92:b0:57:ed:cc:
        c1:13:ab:07:a3:23:ee:39:65:a1:b5:74:e9:6a:3b:77:22:0d:
        13:83:ea:b5:cc:51:d0:d3:fa:ce:2a:e5:0e:37:61:e1:a6:fb:
        1f:b6:de:c6:84:f6:77:8b:69:98:64:af:42:e5:88:63:68:55:
        41:98:39:e9:20:eb:2e:f8:57:b0:8e:aa:e4:45:90:88:8d:8f:
        c4:a1:f2:29:99:58:62:53:8e:64:88:ed:2b:5b:23:55:14:0d:
        4a:4a:5f:9a:b2:b1:64:59
-----BEGIN CERTIFICATE-----
MIIFOzCCAyOgAwIBAgIJANf5eG5j0n/0MA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNV
BAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xFDASBgNVBAMMC3JxenRlY2guY29tMB4X
DTE2MDQxNjExMzgzOFoXDTI2MDQxNDExMzgzOFowNDELMAkGA1UEBhMCREUxDzAN
BgNVBAgMBkJlcmxpbjEUMBIGA1UEAwwLcnF6dGVjaC5jb20wggIiMA0GCSqGSIb3
DQEBAQUAA4ICDwAwggIKAoICAQDDEewBJ2DR05JTwwYxyvmCeld7F9OmYY5XrenS
nctAHjLe5zx568XM93iv06BDVCjhDbppVurZA93IQV+NEj4jhZRz2YPbkIM1YGrF
lnd8PASdBVtNFZ5cVOrdGgNN24pWs/nuEokBsNB5u8FdVZvkPaWRDvw2L5FRDNFv
R18Ydv0Bcd9VYPm6gmZtCFGBTgJndLpsN7QCv889BxbILZ93hZq5IecG0t5NQBgr
YDqDf9SoK29P7qvbJ5MCEGJ0WGqCcdZMiT0DGUpbtMkVESHqzplav+7WU8wx7gZC
ljhfmAonxeGghkc70ezimSi0TkWItCBNZytAlEMIjMqWouwIwHnv4FIh1EQDwbW9
Cbfup0t7ig0STIQFMWYIA7LM0EITeqUk/g2qT6pd0vFKVYdyMX5027DLol+IgFZA
M0lu6M9WmVdBVBIZcbM9vWbzsWEV+YHepWuNxUvljWLlv33wmMgkvcf6VbKsCef7
g/SHJfMEB/jeI7mOaAnnXJ5RZtbHNlUMH+B87WKlR/3dwI2tRmaxgC8DDgYlLZhY
N/xIcItng2l/OQM2eePQ24PRrf26jZx6gWder5c3WOGknjFlq0e3oOvGcN5/QBhC
2QbTMBeHqITFmp5IQbkRD5QnyV6hJkdcx0LXww8Irnq6MnYi8BRdA5/wT2M/oUzX
4EQKMQIDAQABo1AwTjAdBgNVHQ4EFgQUG0wQWNBirU6iQ8KagfNZ9rMvscEwHwYD
VR0jBBgwFoAUG0wQWNBirU6iQ8KagfNZ9rMvscEwDAYDVR0TBAUwAwEB/zANBgkq
hkiG9w0BAQsFAAOCAgEAP7SbR7KZoJDVdTTHoocdkE5spc5ZdmiPoRefLg5FMaYO
kmYDYblh5yAe0KqXzr8e19Sc8nigmWIel2Uc0/i3+6GnI2IyrfJyHIUIq3FgK0SR
mr2CQh+PH/65OStFnRF7U3OPLBb2lfElWG2LAWFnF7YCsWoASIynWdTVPNFXeppL
3Y7bBaD3wBkQh7c6VTRftMgV7BdfwcF7XMtT78O/DBv2o406XnLlSX9qNwz8fPZU
T5+5N/VXcyXtYptBOOimCBGtwRqvZZRsC8xbJxrNgL3q+aCiwOW8y/06jIKFDloK
BIiG9xA4LWUwGMI8pgeQbNYheGgoWrjKRMEsFVOSC6e4u+PYJ4XUwV+p6DKV16eY
S7XbSODoXCiUXdmzr3RI4kVywTSKlW6jgR6LrUf7AXAYwSV32pcntZB2fT8+eC2p
MfnDhW+uoV3jNKLELSVuRbor+60N0uXS/moTPGTAzv1y5YMRiITAX8Nqsemgqouh
Kd7GPV42eLxLlOeRSTAvg8M0OOk7nS7LUdp1k394HgCJ2L/YymmdRZKwV+3MwROr
B6Mj7jllobV06Wo7dyINE4PqtcxR0NP6zirlDjdh4ab7H7bexoT2d4tpmGSvQuWI
Y2hVQZg56SDrLvhXsI6q5EWQiI2PxKHyKZlYYlOOZIjtK1sjVRQNSkpfmrKxZFk=
-----END CERTIFICATE-----

45cbc80fe0cac8004f862b9eb90b53b57b06299f98e20923185eb08c363d1ec4

Certificate:

   Data:

       Version: 3 (0x2)

       Serial Number:

           ba:e6:b6:c8:31:b3:b9:e4

       Signature Algorithm: sha256WithRSAEncryption

       Issuer: C=DE, ST=Berlin, CN=rqztech.com

       Validity

           Not Before: Apr 16 11:38:38 2016 GMT

           Not After : Apr 11 11:38:38 2036 GMT

       Subject: C=DE, ST=Berlin, CN=rqztech.com

       Subject Public Key Info:

           Public Key Algorithm: rsaEncryption

           RSA Public Key: (4096 bit)

               Modulus (4096 bit):

                   00:d3:02:ec:b7:43:e3:b7:1f:3c:ef:be:1d:38:05:

                   f5:6d:d8:a7:fb:f2:35:f7:50:f6:3b:e7:d1:bf:f1:

                   ee:a9:b7:e9:2c:d8:54:d0:a2:86:58:db:c9:4e:42:

                   56:28:f8:87:18:a6:3d:1b:80:89:04:91:c6:66:2c:

                   60:30:96:fd:a4:04:a5:1e:06:a1:93:27:5a:28:f9:

                   8b:b0:61:03:18:cd:0c:d7:01:97:02:99:84:96:ae:

                   5a:26:ac:c5:dc:0b:dc:9a:9b:be:8b:b9:db:f2:03:

                   52:25:78:9d:03:34:ea:3f:c6:58:d3:cd:f2:cf:5f:

                   bc:70:bb:b3:07:21:bf:14:c7:6a:b2:29:f7:93:e2:

                   08:ff:b8:45:cf:7c:9d:5c:26:48:6b:10:20:b0:cb:

                   ff:d2:7c:ca:96:5a:bd:6b:56:ab:53:44:82:e9:12:

                   fe:2b:b7:88:ad:ca:38:f7:14:32:95:7e:46:c8:24:

                   da:fa:62:fc:3d:b6:ac:8e:8b:2d:f0:b2:4d:8d:08:

                   d0:2f:ee:e2:78:bb:5e:57:71:b4:39:57:27:48:00:

                   cc:71:e7:bf:d4:8a:c5:2d:f0:f6:93:3a:39:d5:f8:

                   da:eb:6a:18:25:b6:5d:f9:4e:00:c3:51:34:18:d5:

                   76:82:81:0a:78:1c:ce:cf:fa:ed:6d:af:0b:22:99:

                   8c:4c:2d:6e:af:ae:4e:47:6d:10:77:70:9f:95:a0:

                   a1:52:5d:77:b9:26:82:73:90:13:cb:7d:2f:9c:c2:

                   f8:54:45:80:1d:be:8f:f6:a6:b2:6d:95:3c:88:6a:

                   19:3d:94:7f:69:61:73:7b:69:4b:76:ee:7a:59:5c:

                   11:14:15:5d:91:11:14:a7:9c:62:82:18:c7:a8:32:

                   f5:ba:9b:15:69:91:e6:de:35:bb:a0:45:b7:fb:f5:

                   0c:a4:25:8e:83:c4:39:74:3b:ad:b7:75:ec:c0:c5:

                   a9:c9:49:fa:88:95:96:a4:3b:66:6d:13:44:b6:d0:

                   97:52:87:64:12:26:7c:a6:2a:d4:a8:a4:7b:d2:f6:

                   75:2b:ed:94:1f:75:f2:8c:2d:68:c5:f4:9d:57:d1:

                   95:68:44:2c:fa:1a:c7:ce:8e:07:b1:27:e1:41:1b:

                   99:a8:94:70:60:7e:d0:b3:ad:f9:dd:87:bd:12:1a:

                   15:cf:03:94:65:43:8c:d2:d1:0a:14:00:b5:30:54:

                   26:42:b4:a3:19:2b:7a:03:41:cf:4d:76:1e:8b:d0:

                   9a:66:20:b3:ad:29:db:76:9f:be:11:ea:b9:f7:7f:

                   18:c4:07:a4:85:9f:8b:5c:2a:3a:28:4d:a4:d2:16:

                   03:d9:6a:42:f4:ab:b3:2f:c8:d4:3a:d1:bd:f4:21:

                   5c:08:c9

               Exponent: 65537 (0x10001)

       X509v3 extensions:

           X509v3 Subject Key Identifier:

               51:2E:D2:C3:93:10:DB:98:C0:D9:7D:9B:51:63:85:2D:B2:68:1F:62

           X509v3 Authority Key Identifier:

               keyid:51:2E:D2:C3:93:10:DB:98:C0:D9:7D:9B:51:63:85:2D:B2:68:1F:62

 

           X509v3 Basic Constraints:

               CA:TRUE

   Signature Algorithm: sha256WithRSAEncryption

       d2:ae:94:9b:47:35:21:28:72:c7:77:01:02:05:b2:e6:ff:4d:

       27:95:08:d7:10:94:ab:1e:c4:1e:e0:4c:d0:e3:48:c0:f7:73:

       30:ed:06:bf:32:2c:ff:9a:bc:91:3e:43:b6:5e:6c:c9:ae:b1:

       6f:84:11:ae:35:d4:fb:43:2a:13:fd:6c:01:f7:fa:13:ea:87:

       1d:f0:b1:63:81:3d:0b:e6:c5:40:f0:69:81:df:d0:ca:f8:53:

       de:92:3b:8c:64:a5:7c:19:68:eb:09:e1:1b:06:ec:45:fc:22:

       f9:c8:a6:74:31:27:88:a9:c7:d0:8b:8c:91:bb:08:f1:b6:71:

       9e:a1:d4:88:4f:2e:5c:9f:c5:bd:9e:63:74:43:ce:2a:1f:59:

       05:72:c9:88:ba:d9:f2:e4:ed:b1:b6:bb:e1:35:1f:41:01:ee:

       44:51:a9:3a:4b:a7:3e:e9:ef:41:11:54:33:a3:a8:0e:a8:e9:

       ed:06:89:60:0e:37:15:39:82:d7:a3:15:6f:d9:ec:5e:68:47:

       d4:33:62:9a:68:52:41:38:63:ac:fd:14:ed:57:d6:2b:4e:61:

       d6:f1:d8:a2:39:1a:f7:0c:bf:16:27:3c:d0:4a:86:c6:4d:91:

       b2:c7:96:ce:ed:cd:4b:1f:a4:e0:a9:fa:ba:a0:7c:e6:96:a2:

       19:a4:73:6b:fd:5b:62:27:dc:24:95:31:f8:35:9b:8e:6c:ea:

       2c:4e:be:15:08:12:51:01:96:34:63:78:02:ca:31:25:61:f8:

       13:3f:3d:02:ab:a9:4c:9a:d4:5e:b0:c8:3a:d9:21:da:cf:b8:

       98:91:49:fc:9d:7b:e0:c1:55:87:37:c9:ad:6e:e7:d9:92:6d:

       6d:79:db:cd:a9:c4:f3:c6:0e:28:dc:0e:b4:79:77:5e:8e:86:

       24:e5:56:b6:40:3c:02:b8:c7:49:e6:62:c7:8d:f1:b9:06:b6:

       9b:17:28:2b:b2:ca:06:6d:17:bf:79:8b:98:49:ed:dc:2b:eb:

       a1:7c:bc:01:1b:bb:49:a8:ff:63:1c:a4:d2:b8:75:cc:be:34:

       22:cf:ef:fb:17:f0:79:08:96:2b:4a:e9:41:03:de:f5:11:dd:

       e7:36:b2:11:d3:0c:18:81:9d:98:d1:a7:9b:12:0f:62:ed:1b:

       f4:5e:56:c3:b6:6f:9f:58:99:18:93:3e:e7:ca:b7:25:de:3d:

       68:6a:fd:60:a5:de:32:fc:9b:55:ca:d2:44:ab:31:65:f0:d6:

       1e:6b:32:ed:08:c3:9d:6e:e7:27:3f:b6:a9:19:8e:8e:46:f1:

       f3:a7:8f:40:37:38:e8:fa:49:49:18:db:48:2d:d8:d3:9a:c2:

       69:4f:6e:00:b6:ee:c3:9e

-----BEGIN CERTIFICATE-----

MIIFOzCCAyOgAwIBAgIJALrmtsgxs7nkMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNV

BAYTAkRFMQ8wDQYDVQQIDAZCZXJsaW4xFDASBgNVBAMMC3JxenRlY2guY29tMB4X

DTE2MDQxNjExMzgzOFoXDTM2MDQxMTExMzgzOFowNDELMAkGA1UEBhMCREUxDzAN

BgNVBAgMBkJlcmxpbjEUMBIGA1UEAwwLcnF6dGVjaC5jb20wggIiMA0GCSqGSIb3

DQEBAQUAA4ICDwAwggIKAoICAQDTAuy3Q+O3Hzzvvh04BfVt2Kf78jX3UPY759G/

8e6pt+ks2FTQooZY28lOQlYo+IcYpj0bgIkEkcZmLGAwlv2kBKUeBqGTJ1oo+Yuw

YQMYzQzXAZcCmYSWrlomrMXcC9yam76LudvyA1IleJ0DNOo/xljTzfLPX7xwu7MH

Ib8Ux2qyKfeT4gj/uEXPfJ1cJkhrECCwy//SfMqWWr1rVqtTRILpEv4rt4ityjj3

FDKVfkbIJNr6Yvw9tqyOiy3wsk2NCNAv7uJ4u15XcbQ5VydIAMxx57/UisUt8PaT

OjnV+Nrrahgltl35TgDDUTQY1XaCgQp4HM7P+u1trwsimYxMLW6vrk5HbRB3cJ+V

oKFSXXe5JoJzkBPLfS+cwvhURYAdvo/2prJtlTyIahk9lH9pYXN7aUt27npZXBEU

FV2RERSnnGKCGMeoMvW6mxVpkebeNbugRbf79QykJY6DxDl0O623dezAxanJSfqI

lZakO2ZtE0S20JdSh2QSJnymKtSopHvS9nUr7ZQfdfKMLWjF9J1X0ZVoRCz6GsfO

jgexJ+FBG5molHBgftCzrfndh70SGhXPA5RlQ4zS0QoUALUwVCZCtKMZK3oDQc9N

dh6L0JpmILOtKdt2n74R6rn3fxjEB6SFn4tcKjooTaTSFgPZakL0q7MvyNQ60b30

IVwIyQIDAQABo1AwTjAdBgNVHQ4EFgQUUS7Sw5MQ25jA2X2bUWOFLbJoH2IwHwYD

VR0jBBgwFoAUUS7Sw5MQ25jA2X2bUWOFLbJoH2IwDAYDVR0TBAUwAwEB/zANBgkq

hkiG9w0BAQsFAAOCAgEA0q6Um0c1IShyx3cBAgWy5v9NJ5UI1xCUqx7EHuBM0ONI

wPdzMO0GvzIs/5q8kT5Dtl5sya6xb4QRrjXU+0MqE/1sAff6E+qHHfCxY4E9C+bF

QPBpgd/QyvhT3pI7jGSlfBlo6wnhGwbsRfwi+cimdDEniKnH0IuMkbsI8bZxnqHU

iE8uXJ/FvZ5jdEPOKh9ZBXLJiLrZ8uTtsba74TUfQQHuRFGpOkunPunvQRFUM6Oo

Dqjp7QaJYA43FTmC16MVb9nsXmhH1DNimmhSQThjrP0U7VfWK05h1vHYojka9wy/

Fic80EqGxk2RsseWzu3NSx+k4Kn6uqB85paiGaRza/1bYifcJJUx+DWbjmzqLE6+

FQgSUQGWNGN4AsoxJWH4Ez89AqupTJrUXrDIOtkh2s+4mJFJ/J174MFVhzfJrW7n

2ZJtbXnbzanE88YOKNwOtHl3Xo6GJOVWtkA8ArjHSeZix43xuQa2mxcoK7LKBm0X

v3mLmEnt3CvroXy8ARu7Saj/Yxyk0rh1zL40Is/v+xfweQiWK0rpQQPe9RHd5zay

EdMMGIGdmNGnmxIPYu0b9F5Ww7Zvn1iZGJM+58q3Jd49aGr9YKXeMvybVcrSRKsx

ZfDWHmsy7QjDnW7nJz+2qRmOjkbx86ePQDc46PpJSRjbSC3Y05rCaU9uALbuw54=

-----END CERTIFICATE-----