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.
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.
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
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:
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:
- El binario no pudo abrir el proceso de la víctima
- La inyección fue exitosa (el proceso sigue funcionando después de un minuto)
- 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.
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.
Este es un ejemplo de la cadena de redirección que hemos observado:
- hxxp://ads.greenteamedia.net/tracker?id=58b87f2a2a61cf000a11f651&type=Popunder
- hxxp://go.oclaserver.com/afu.php?zoneid=788473
- hxxp://onclkds.com/afu.php?zoneid=788473
- 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-----