Una vulnerabilidad que ha estado presente desde hace siete años en Samba –una implementación de código abierto del protocolo SMB que utiliza Windows para compartir archivos e impresoras- fue parchada en mayo pasado pero sigue siendo explotada. De acuerdo con un aviso de seguridad lanzado por la compañía, dicha vulnerabilidad permite que un atacante suba una librería a un recurso compartido que provoca que el servidor la cargue y la ejecute. Si logra su objetivo, el atacante puede abrir un shell de comandos en un dispositivo vulnerable y tomar control de éste. Afecta a todas las versiones de Samba a partir de la 3.5.0.
La vulnerabilidad (CVE-2017-7494) recibió el nombre de SambaCry debido a la similitud con la vulnerabilidad de SMB explotada por WannaCry. Fue detectada en junio de 2017 cuando EternalMiner/CPUMiner, un programa para crear criptomonedas, se utilizó para comprometer máquinas Linux y extraer Monero (un tipo de moneda digital). La muestra anterior que obtuvimos reveló que SambaCry se utilizaba únicamente para atacar servidores, y la carga dañina era simplemente el malware utilizado para extraer las criptomonedas. Los datos recientes muestran que los atacantes están utilizando SambaCry para otros fines.
Este reciente malware se detectó como ELF_SHELLBIND.A y se descubrió el 3 de julio pasado. Como lo mencionaron reportes previos, además de que el uso de SambaCry se generaliza, también abre un shell de comandos en el sistema objetivo. Pero ELF_SHELLBIND.A tiene marcadas diferencias que lo separan del malware anterior que se aprovechaba de SambaCry. Por un lado, ataca a los dispositivos de IoT (Internet de las Cosas) –particularmente los dispositivos de Almacenamiento Conectado a la Red (NAS) utilizados por las pequeñas y medianas empresas. Asimismo, ELF_SHELLBIND.A apunta a diferentes arquitecturas como MIPS, ARM y PowerPC. Esta es la primera vez que SambaCry es utilizado sin el programa para crear criptomonedas como payload.
Análisis del malware
Es bastante sencillo encontrar con Shodan dispositivos que utilizan Samba: la búsqueda del puerto 445 con una línea ‘samba’ arrojará una lista de direcciones IP. El atacante entonces sólo necesita crear una herramienta que pueda escribir automáticamente archivos maliciosos en cada dirección IP de la lista. Una vez que se escriben archivos en las carpetas públicas, los dispositivos con la vulnerabilidad SambaCry podrían convertirse en víctimas de ELF_SHELLBIND.A.
Como se puede observar en la Figura 1, ELF_SHELLBIND.A llega normalmente a las carpetas públicas como un archivo tipo (.SO) malicioso, el cual es similar a la rutina del malware anterior para explotar la vulnerabilidad SambaCry. También observamos que intenta explotar SambaCry porque se invoca a través la función Export samba_init_module, que es como el servidor Samba vulnerable cargará automáticamente esta librería.
Después de cargar el archivo .SO a la carpeta pública compartida Samba, el atacante tiene que adivinar el nombre de archivo local absoluto y enviar una solicitud IPC que trata de engañar al servidor para que cargue y ejecute el archivo de programa almacenado localmente.
[image url=”http://blog.trendmicro.com/trendlabs-security-intelligence/files/2017/07/SambaCry.jpg” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”15″ margin_bottom=”15″ width=”700″ height=”816″]
Figura 1. Muestras de los archivos maliciosos en una carpeta pública compartida
Una vez que el malware se carga mediante la función Export, comienza llamando a la función change_to_root_user, que el Samba deamon necesita (específico para SMBv2) para correr como root o como el EUID del usuario actual. El malware entonces se desvincula de cualquier proceso padre bajo el que está corriendo (un proceso del servidor Samba) y ‘demoniza’ su proceso (a través de la función detach_from_parent). Esto es seguido por el malware que envía lo que se conoce como un mensaje Knock, suponemos, su servidor de Comando y Control (C&C) ubicado en África Oriental “169[.]239[.]128[.]123” sobre el puerto 80 TPC. El mensaje Knock consiste en:
[image url=”/wp-content/uploads/2017/08/Captura-de-pantalla-2017-08-07-a-las-3.49.58-p.m..png” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”0″ margin_bottom=”0″ width=”593″ height=”70″]
El servidor lee la respuesta pero nunca la consume de ninguna forma. El conector está cerrado en este punto. En esta etapa el atacante ya ha obtenido la dirección IP del sistema.
El malware elimina la regla de cadena que combina todas las comunicaciones permitidas sobre TCP/61422 desde iptable, y la agrega una vez más para que el firewall acepte todas las comunicaciones TCP a través de dicho puerto. El malware abre entonces un conector TCP en modo de escucha sobre el puerto 61422, aceptando la conexión de un hacker. Una vez que éste se conecta, el malware envía el siguiente mensaje:
[image url=”/wp-content/uploads/2017/08/Captura-de-pantalla-2017-08-07-a-las-3.58.57-p.m..png” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”0″ margin_bottom=”0″ width=”586″ height=”80″]
El malware espera a que el atacante escriba la contraseña:
[image url=”/wp-content/uploads/2017/08/Captura-de-pantalla-2017-08-07-a-las-3.56.10-p.m..png” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”0″ margin_bottom=”0″ width=”594″ height=”67″]
Si el atacante responde con dicha contraseña, el malware envía el siguiente mensaje:
[image url=”/wp-content/uploads/2017/08/Captura-de-pantalla-2017-08-07-a-las-4.00.35-p.m..png” raw=”true” alignment=”center” margin_left=”0″ margin_right=”0″ margin_top=”0″ margin_bottom=”0″ width=”593″ height=”62″]
Si la respuesta no es la contraseña correcta, se cierra.
Una vez que se establece con éxito la conexión y se confirma la autenticación, el atacante tendrá un shell de comandos abierto en los sistemas infectados donde puede lanzar cualquier número de comandos de sistema y esencialmente tomar el control del dispositivo. El malware ejecuta lo que reciba a través de este conector (stdin, stdout y stderr desviados al conector) usando el shell del sistema ubicado en /bin/sh.
Conclusión y soluciones
El parche OS para esta vulnerabilidad ya se ha liberado, con lo cual se puede limitar el número de víctimas. Los atacantes también necesitan tener acceso de lectura a una ubicación compartida del sistema objetivo para entregar un payload –otro factor limitante que podría contener la velocidad de infección.
Ya que esta vulnerabilidad se parchó en mayo, los usuarios que aplican regularmente las actualizaciones no tienen este problema. Sin embargo, los dispositivos con Unix o Linux (que comprenden la mayoría de los dispositivos de IoT) son más difíciles de proteger. Si Samba es habilitado y los fabricantes no envían los parches, los dispositivos se vuelven vulnerables. Los usuarios deben realizar las actualizaciones o consultar a fabricantes específicos.
Trend Micro™ Deep Security™ y el parcheo virtual protegen los endpoints contra amenazas como infecciones sin archivos y aquellas que abusan de las vulnerabilidades a las que no se han aplicado parches. Los sistemas de los usuarios están protegidos contra cualquier amenaza que pudiera atacar a la vulnerabilidad SambaCry a través de la siguiente regla DPI:
- 1008420-Samba Shared Library Remote Code Execution Vulnerability (CVE-2017-7494)
Trend Micro™ Deep Discovery™ ofrece detección, análisis a fondo y respuesta proactiva a los ataques que usan explotaciones y otras amenazas similares a través de motores especializados, sandboxing a la medida y la correlación en el ciclo completo del ataque, lo que le permite detectar estos tipos de ataques incluso sin un motor o actualización de patrones. Deep Discovery Inspector protege a los clientes contra esta amenaza mediante la siguiente regla DDI:
- 3733 SHELLBIND – TCP (Solicitud)
Los clientes de TippingPoint están protegidos por el filtro:
- 29058: TCP: SambaShell Checkin
SHA256 para ELF_SHELLBIND.A:
c27594b1a1ecee6a62adbaee5b00bad8e3540fe98ff3bac17fef03e0ebd62914
516bafdede5e7a019a71028a7125f98190ee7ab71d03bc3041c9943324a78df5
11f47c90393082e7fdc4213d3b888ef8b7c121a86658077465b03bb7857bc540
Leave a Reply