Los troyanos cryptolockers se han vuelto más y más sofisticados en su capacidad de burlar la seguridad de los sistemas y están sembrando el terror a su paso. TeslaCrypt, CryptoWall, TorrentLocker, Locky y CTB-Locker son sólo algunos de los programas maliciosos contra los que hemos protegido a nuestros usuarios en los dos últimos años. Hemos visto muchas formas y colores de cryptolockers, pero la nueva variante CTB-Locker lo dice todo. El mundo de los ciberdelincuentes está invirtiendo en cómo reinventar cryptolockers.
Antes, los programas maliciosos CTB-Locker u Onion, se diferenciaban de otros programas ransomware por el uso que hacían de la red de anonimato Tor Project para protegerse de los esfuerzos de desmantelamiento basados en gran medida en los servidores maliciosos estáticos de comando y control. La red Tor también les permitía evadir su detección y bloqueo. Otra cosa que protegía a los controladores de CTB-Locker era que aceptaban como pago sólo bitcoins, la conocida cripto-moneda descentralizada y anónima.
Una nueva variante de CTB-Locker ataca sólo a servidores web, y hasta donde sabemos, ya ha logrado cifrar archivos con raíz web en más de 70 servidores ubicados en 10 países.
En este artículo nos adentraremos en la guarida de la bestia, después de que las víctimas fueron lo suficientemente amables como para compartir los cifradores que se habían instalado en sus servidores web.
Paso 1: Desfiguración
Esta nueva variante cifra servidores web y exige un rescate de menos de medio bitcoin (aprox. 150 USD). Si el pago no se envía en el plazo exigido, el rescate se duplica a unos 300 USD. Una vez hecho el pago, se genera una llave de decodificación para los archivos codificados en el servidor web.
Resultó evidente que los archivos se infectaron con esta variante a raíz de una falla de seguridad en su servidor web. Una vez explotado, el sitio web se desfiguraba. La desfiguración es un método bastante conocido entre los grupos de hackers para demostrarles a sus víctimas de qué se trata el asunto. Los casos más recientes que hemos observado no son aleatorios, pero en su mayoría tienen que ver con afiliación política y perspectivas culturales.
En este caso, la desfiguración, que contiene un sustituto de la página php/html principal, se usa como vehículo del mensaje y contiene todos los medios necesarios para que el ataque provoque en la víctima el efecto deseado. En los siguientes pasos analizaremos esto en profundidad.
Es importante mencionar que no se elimina el código original. Se almacena bajo seguridad en la raíz web con un nombre diferente en un estado codificado.
El mensaje
Puesto que las variantes de este tipo se basan en el simple hecho de que a la víctima le importa más el contenido que pagar un rescate, los autores suelen dejar un mensaje detallado a la vista de todos.
La siguiente cita es un fragmento de la información que se deja en la página principal:
La llave de decodificación se guarda en un servidor remoto, pero los atacantes fueron lo “suficientemente amables” como para permitirle a la víctima decodificar dos archivos de forma gratuita, como muestra de su autenticidad.
La otra función que existe en el sitio web atacado le permite a la víctima comunicarse con el atacante mediante chat: se requiere una firma/código personal sólo disponible para las víctimas.
Por el momento, no hemos encontrado en Internet ninguna herramienta de descifrado, por lo que no hay forma de descifrar los archivos codificados por el nuevo CTB-Locker. La única forma de eliminar esta amenaza en pocos segundos es mantener copias de seguridad de los archivos en otra parte.
Aunque parece un gran problema, creemos que no lo es. Los grandes sitios web suelen tener múltiples versiones de sus contenidos, propagados en muchos servidores web. En muchos otros casos, son supervisados y probados por profesionales en pruebas de seguridad anti-penetración, por lo que constantemente están bajo la lupa.
Paso 2: Proceso de codificación
Todavía no sabemos cómo CTB-Locker se instala en servidores web, pero hay un elemento común entre muchos de los servidores atacados: utilizan la plataforma de WordPress como herramienta de gestión de contenidos. WordPress contiene muchas vulnerabilidades en sus versiones no actualizadas y ya hemos visto vulnerabilidades críticas el año pasado. Además, WordPress también tiene otro punto débil: los plugins. Estas pequeñas funciones especiales de WordPress le permiten ser los que es: un líder en el mundo CMS. Sin embargo, tener plugins de terceros también hace que el servidor sea más vulnerable a los ataques, ya que los autores de plugins no están comprometidos con ningún tipo de medidas de seguridad.
Una vez que el ciberpirata penetra el sistema de WordPress, puede remplazar el archivo principal del sitio web y ejecutar la rutina de cifrado. Se cambia el nombre del archivo principal y se guarda en un estado codificado.
Se instalan dos claves diferentes AES-256 en el servidor atacado:
- create_aes_cipher ($ Keytest) – cifra los dos archivos que pueden ser descifrados gratuitamente.
- create_aes_cipher ($ keypass) – cifra el resto de los archivos alojados en la raíz del servidor web.
Los ciberpiratas eligen los dos archivos y sus nombres se guardan en un archivo de texto.
La clave create_aes_cipher () acepta un parámetro como llave y lo envía a la función estándar Crypt_AES():
1 2 3 4 5 6 |
function create_aes_cipher($key) { $aes = new Crypt_AES(); $aes->setKeyLength(256); $aes->setKey($key); return $aes; } |
Al cifrar el sitio, la secuencia de comandos utiliza primero la llave de prueba para cifrar los dos archivos que se van a utilizar para el descifrado gratuito. A continuación, se genera una lista de archivos que coinciden con determinadas extensiones de archivo y los cifra con AES-256. Las extensiones que se cifrarán se leen desde el archivo ./extensions.txt y actualmente son:
Los archivos que contienen las siguientes cadenas quedan excluidos del proceso de cifrado:
- “/crypt/”
- “secret_”
Además, los archivos que se rellenan con datos que posteriormente ayudarán al usuario con el proceso de descifrado, obviamente, también quedarán excluidos.
- ./index.php – como se describió anteriormente, este archivo es la puerta principal que tiene la víctima para analizar el ataque y contiene el código PHP de la rutina de cifrado/descifrado.
- ./allenc.txt – contiene una lista de todos los archivos cifrados.
- ./test.txt – contiene los archivos que están disponibles para el descifrado gratuito.
- ./victims.txt – contiene una lista de todos los archivos que se están cifrando o que ya han sido cifrados.
- ./extensions.txt – contiene la lista de extensiones de archivo (véase más arriba).
- ./secret_ – como mencionamos, se le pide a la víctima que se identifique e incluso que participe en un chat.
En la página principal de CTB-Locker, los atacantes están utilizando JQUERY para consultar a servidores proxy y verificar los pagos. Se encontró el siguiente código en el código fuente de la página y los servidores que aparecen en la parte superior son los proxys que se utilizan como otra capa de protección, en lugar del servidor principal de los atacantes:
Servidores proxy que son parte del proceso de descifrado:
http://erdeni.ru/access.php |
http://studiogreystar.com/access.php |
http://a1hose.com/access.php |
Los servidores ransomware no son permanentes y se remplazan por otros nuevos cada cierto tiempo. Hemos identificado la amenaza que inspecciona los registros y herramientas de análisis del servidor, ya que algunas veces diferentes controles ocasionaron el apagado y re-encendido del servidor.
Paso 3: Proxy para C & C
Los atacantes están utilizando servidores que ya fueron atacados para canalizar el tráfico a través de otra capa de protección. En el código fuente de un servidor atacado, un código JavaScript revela cómo se envía el proceso de descifrado a través de tres diferentes servidores al azar; sin embargo, no son los servidores C & C.
La imagen de arriba fue tomada de la página access.php, supuestamente situada en cada uno de los servidores bot utilizados como proxy para el proceso de descifrado.
En el bloque blanco se aprecia el verdadero C & C que ha sido protegido en cada una de las páginas PHP (access.php).
Cuando se envía una petición POST con los parámetros correctos, se crea una instancia de toma y se envía un haz de conexión al servidor C & C del atacante. Después se determina si el proceso de descifrado tuvo éxito.
Descifrado gratuito
El ransomware permite a la víctima descifrar gratuitamente solo dos archivos. La víctima no tiene la opción de elegir, ya que los archivos han sido previamente seleccionados y se pueden encontrar en el archivo designado del malware, como se dijo anteriormente. Los dos archivos se escogen al azar durante el proceso de cifrado.
La siguiente imagen ilustra el módulo de descifrado gratuito:
Para descifrar los dos archivos gratuitos, se le pide a la víctima que introduzca el nombre de archivo secret_. Una vez que pulsa el botón DECRYPT IT FREE (Descifre gratis), el script del lado del cliente construye una petición POST y la envía a uno de los servidores C & C. Hemos logrado imitar el cálculo PHP y ejecutar la función exit() de la rutina de descifrado gratuito:
El siguiente es el código PHP en el back-end. La función secret_ok () verifica la identidad de la víctima, sobre la base de su nombre de dominio y otros indicadores:
1 2 3 4 |
if (isset($_GET['dectest']) && secret_ok()) { decrypt_files('test.txt', $_GET['dectest']); exit('Congratulations! TEST FILES WAS DECRYPTED!!'); } |
Congratulations! TEST FILES WAS DECRYPTED!! = se descifraron los archivos de prueba
Sala de chat del atacante
El ransomware también incluye la función de comunicación con los ciberpiratas. Como ya mencionamos, se le pide a la víctima que utilice la clave secret_ para abrir el chat. Sin ella, el chat permanecerá inhabilitado.
Hemos llegado a la conclusión de que los programas ransomware son programas maliciosos de nueva generación para un atacante que busca obtener ganancias financieras. Son muy eficaces; no hay solución sólida contra esta amenaza hasta el momento, y son flexibles para atacar no sólo sistemas operativos de escritorio, sino incluso servidores web.
Se recomienda encarecidamente actualizar el software con regularidad. Además, no se debe confiar automáticamente en software de terceros por su hash. Los atacantes pueden cambiar este identificador una vez que el servidor ha sido infectado. Es esencial utilizar otros controles de rutina para asegurar la legitimidad del software. Recomendamos hacer copias de seguridad de todos los datos importantes y tener cuidado con los correos electrónicos que no están destinados específicamente para el destinatario, así como con los atractivos anuncios que aparecen en línea.
El retorno de CTB-Locker: la edición servidor web