«El actor de la amenaza aprovechó dos archivos, winpty-agent.exe y winpty.dll para los servidores de compilación, que son archivos legítimos para winpty utilizados para crear una interfaz para ejecutar comandos de Windows», dijeron los investigadores. «El actor de amenazas utilizó winpty-agent.exe en los servidores de compilación para ejecutar comandos de forma remota desde el servidor TeamCity explotado y aprovechó BITSAdmin para implementar herramientas adicionales, incluido un script PowerShell malicioso, web.ps1, en el servidor».
Sus intentos de deshacerse de las credenciales del Administrador de cuentas de seguridad de Windows (SAM) fueron señalados por la solución de monitoreo de seguridad de endpoints y provocaron una investigación por parte de los servicios de respuesta a incidentes. La investigación reveló que antes de implementar el script de PowerShell, los atacantes intentaron implementar varias DLL que fueron puestas en cuarentena por el antivirus local porque coincidían con Win64/BianDoor.D. Esta es una firma de detección para la puerta trasera conocida del grupo escrita en el lenguaje de programación Go.
Reimplementación de PowerShell de la puerta trasera BianLian
El script de PowerShell estaba muy ofuscado, pero los investigadores lograron desofuscarlo y analizar su contenido. El script tenía dos funciones principales: una llamada cakes que implementaba un mecanismo para conectarse a un servidor de comando y control usando flujos SSL y sockets TCP y otra función llamada cookies que implementaba el resto de la ejecución y las capacidades de la puerta trasera.
“Quizás el componente más interesante de toda esta puerta trasera fue el uso innovador de Runspace Pool junto con el método .NET PowerShell.Create() para invocar un ScriptBlock con capacidades asincrónicas, todo mientras se aprovecha un flujo SSL para pasar datos entre el C2 servidor y el sistema infectado”, dijeron los investigadores.
La mayoría de los scripts maliciosos de PowerShell se basan en los cmdlets de PowerShell Invoke-Command o Invoke-Expression para ejecutar comandos o códigos en el sistema. Al evitar estas técnicas bien conocidas, es más probable que el script de BianLian evite ser marcado por productos de seguridad. La función Runspace Pool también es una forma más eficaz de ejecutar comandos de forma asincrónica.
La puerta trasera Go de BianLian utiliza certificados digitales para autenticar el servidor C2 y este comportamiento se replica en el script de PowerShell. Además, la dirección IP a la que se conectó el script ya estaba marcada como un servidor C2 conocido para la puerta trasera GO de BianLian, lo que refuerza la atribución a este grupo.