{"id":143022,"date":"2025-04-14T11:21:17","date_gmt":"2025-04-14T18:21:17","guid":{"rendered":"https:\/\/unit42.paloaltonetworks.com\/?p=143022"},"modified":"2025-06-19T11:05:09","modified_gmt":"2025-06-19T18:05:09","slug":"slow-pisces-new-custom-malware","status":"publish","type":"post","link":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/","title":{"rendered":"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python"},"content":{"rendered":"<h2><a id=\"post-143022-_heading=h.6yt609eivoxa\"><\/a>Resumen ejecutivo<\/h2>\n<p>Slow Pisces (tambi\u00e9n conocido como Jade Sleet, TraderTraitor, PUKCHONG) es un actor estado-naci\u00f3n de Corea del Norte enfocado principalmente en generar ingresos para el r\u00e9gimen de la RPDC, generalmente atacando a grandes organizaciones en el sector de las criptomonedas. En este art\u00edculo se analiza su campa\u00f1a, que creemos est\u00e1 relacionada con los recientes robos de criptomonedas.<\/p>\n<p>En esta campa\u00f1a, <a href=\"https:\/\/unit42.paloaltonetworks.com\/threat-actor-groups-tracked-by-palo-alto-networks-unit-42\/#:~:text=Slow%20Pisces%20is%20North%20Korea%27s%20nation%20state%20threat%20group%20under%20Reconnaissance%20General%20Bureau%20(RGB)%20of%20DPRK.%20It%27s%20believed%20to%20be%20a%20spin%2Doff%20from%20the%20Lazarus%20group%20with%20focus%20on%20financial%20gathering%20and%20crypto%20industry%20targeting%20goals\" target=\"_blank\" rel=\"noopener\">Slow Pisces<\/a> se puso en contacto con desarrolladores de criptomonedas en LinkedIn, haci\u00e9ndose pasar por posibles empleadores y enviando malware camuflado en los retos de c\u00f3digo. Estos retos requieren que los desarrolladores ejecuten un proyecto comprometido, infectando sus sistemas con un malware que hemos denominado RN Loader y RN Stealer.<\/p>\n<p>Al parecer, el grupo rob\u00f3 m\u00e1s de <a href=\"https:\/\/www.microsoft.com\/en-us\/security\/security-insider\/microsoft-digital-defense-report-2023\" target=\"_blank\" rel=\"noopener\">1000\u00a0millones de d\u00f3lares del sector de las criptomonedas en 2023<\/a>. Lo han logrado utilizando varios m\u00e9todos, entre ellos <a href=\"https:\/\/www.cisa.gov\/news-events\/cybersecurity-advisories\/aa22-108a\" target=\"_blank\" rel=\"noopener\">aplicaciones comerciales falsas<\/a>, malware distribuido a trav\u00e9s del <a href=\"https:\/\/github.blog\/security\/vulnerability-research\/security-alert-social-engineering-campaign-targets-technology-industry-employees\/\" target=\"_blank\" rel=\"noopener\">Administrador de paquetes de Node (NPM)<\/a> y <a href=\"https:\/\/cloud.google.com\/blog\/topics\/threat-intelligence\/north-korea-supply-chain\" target=\"_blank\" rel=\"noopener\">compromisos de la cadena de suministro<\/a>.<\/p>\n<p>En Diciembre de 2024, <a href=\"https:\/\/www.fbi.gov\/news\/press-releases\/fbi-dc3-and-npa-identification-of-north-korean-cyber-actors-tracked-as-tradertraitor-responsible-for-theft-of-308-million-from-bitcoindmmcom\" target=\"_blank\" rel=\"noopener\">el FBI atribuy\u00f3<\/a> a Slow Pisces el robo de 308 millones de d\u00f3lares de una empresa de criptomonedas con sede en Jap\u00f3n. M\u00e1s recientemente, el grupo apareci\u00f3 en los titulares por su presunta implicaci\u00f3n en el <a href=\"https:\/\/www.ic3.gov\/PSA\/2025\/PSA250226\" target=\"_blank\" rel=\"noopener\">robo de 1500 millones de d\u00f3lares<\/a> de una bolsa de criptomonedas de Dubai.<\/p>\n<p>Hemos compartido nuestra inteligencia de amenazas con los analistas de GitHub y LinkedIn para deshabilitar con las cuentas y repositorios relevantes.<\/p>\n<p>En respuesta, brindaron la siguiente declaraci\u00f3n:<\/p>\n<p style=\"padding-left: 40px;\"><em>GitHub y LinkedIn eliminaron estas cuentas maliciosas por violar nuestros respectivos t\u00e9rminos de servicio. En todos nuestros productos utilizamos tecnolog\u00eda automatizada, combinada con equipos de expertos en investigaci\u00f3n e informes de los miembros, para combatir a los actores maliciosos y hacer cumplir las condiciones de servicio. Seguimos evolucionando y mejorando nuestros procesos y animamos a nuestros clientes y afiliados a informar de cualquier actividad sospechosa.<\/em><\/p>\n<p style=\"padding-left: 40px;\"><strong><em>Informaci\u00f3n adicional<\/em><\/strong><\/p>\n<ul>\n<li><i><span style=\"font-weight: 400;\">Los usuarios de GitHub pueden encontrar m\u00e1s informaci\u00f3n en nuestras <\/span><\/i><a href=\"https:\/\/urldefense.proofpoint.com\/v2\/url?u=https-3A__docs.github.com_en_site-2Dpolicy_acceptable-2Duse-2Dpolicies_github-2Dacceptable-2Duse-2Dpolicies&amp;d=DwMGaQ&amp;c=V9IgWpI5PvzTw83UyHGVSoW3Uc1MFWe5J8PTfkrzVSo&amp;r=_lIJbiuLEsecGC88yMz56rH6l-Y5OB28uwt-Y9Xz4rE&amp;m=UGRFdaU0cIscSEQoBgGwJQdMeZgVigbcDnGPmHQpONBJ7WMaQJJPO7CyDeS05g6u&amp;s=Q3c625ggV3WuLxlSWstf7yxNVIxr6RXfLqXEs4YQhfI&amp;e=\" target=\"_blank\" rel=\"noopener\"><i><span style=\"font-weight: 400;\">Pol\u00edticas de uso aceptable<\/span><\/i><\/a><i><span style=\"font-weight: 400;\"> y <\/span><\/i><a href=\"https:\/\/urldefense.proofpoint.com\/v2\/url?u=https-3A__docs.github.com_en_communities_maintaining-2Dyour-2Dsafety-2Don-2Dgithub_reporting-2Dabuse-2Dor-2Dspam&amp;d=DwMGaQ&amp;c=V9IgWpI5PvzTw83UyHGVSoW3Uc1MFWe5J8PTfkrzVSo&amp;r=_lIJbiuLEsecGC88yMz56rH6l-Y5OB28uwt-Y9Xz4rE&amp;m=UGRFdaU0cIscSEQoBgGwJQdMeZgVigbcDnGPmHQpONBJ7WMaQJJPO7CyDeS05g6u&amp;s=w_rzmUGqBolbje6bXMIl06IDbCkfN_csSaR7Aw6f9hA&amp;e=\" target=\"_blank\" rel=\"noopener\"><i><span style=\"font-weight: 400;\">p\u00e1ginas de denuncia de abusos y spam<\/span><\/i><\/a><i><span style=\"font-weight: 400;\">.<\/span><\/i><\/li>\n<li><i>Los usuarios de LinkedIn pueden obtener m\u00e1s informaci\u00f3n sobre c\u00f3mo identificar y denunciar los abusos aqu\u00ed: <\/i><a href=\"https:\/\/urldefense.proofpoint.com\/v2\/url?u=https-3A__www.linkedin.com_help_linkedin_answer_a1344213&amp;d=DwMGaQ&amp;c=V9IgWpI5PvzTw83UyHGVSoW3Uc1MFWe5J8PTfkrzVSo&amp;r=_lIJbiuLEsecGC88yMz56rH6l-Y5OB28uwt-Y9Xz4rE&amp;m=UGRFdaU0cIscSEQoBgGwJQdMeZgVigbcDnGPmHQpONBJ7WMaQJJPO7CyDeS05g6u&amp;s=MWowAjuRradajHCOP9WGk5AkD3krn1yWpFfUQ4gm1EA&amp;e=\" target=\"_blank\" rel=\"noopener\"><i>Reconozca y denuncie el spam y los contenidos inapropiados y abusivos | Ayuda de LinkedIn<\/i><\/a><\/li>\n<\/ul>\n<p>En este informe se detalla c\u00f3mo Slow Pisces oculta el malware dentro de sus desaf\u00edos de c\u00f3digo y describe las herramientas posteriores del grupo, con el objetivo de proporcionar a la industria en general un mejor entendimiento de esta amenaza.<\/p>\n<p>Los clientes de Palo Alto Networks est\u00e1n mejor protegidos frente a las amenazas comentadas en este art\u00edculo a trav\u00e9s de nuestras suscripciones a <a href=\"https:\/\/docs.paloaltonetworks.com\/ngfw\" target=\"_blank\" rel=\"noopener\">Firewall de nueva generaci\u00f3n<\/a> con <a href=\"https:\/\/docs.paloaltonetworks.com\/advanced-url-filtering\/administration\" target=\"_blank\" rel=\"noopener\">Advanced URL Filtering<\/a> y <a href=\"https:\/\/docs.paloaltonetworks.com\/dns-security\" target=\"_blank\" rel=\"noopener\">Advanced DNS Security<\/a>.<\/p>\n<p>Si cree que su seguridad podr\u00eda haber sido comprometida o si tiene un asunto urgente, p\u00f3ngase en contacto con el <a href=\"https:\/\/start.paloaltonetworks.com\/contact-unit42.html\">equipo de respuesta a incidentes de Unit 42<\/a>.<\/p>\n<table style=\"width: 75.4103%;\">\n<thead>\n<tr>\n<td style=\"width: 63.2098%;\"><b>Temas relacionados con Unit 42<\/b><\/td>\n<td style=\"width: 131.61%;\"><a href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/tag\/cryptocurrency-es-la\/\" target=\"_blank\" rel=\"noopener\"><b>Cryptocurrency<\/b><\/a>, <strong><a href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/tag\/dprk-es-la\/\" target=\"_blank\" rel=\"noopener\">DPRK<\/a><\/strong><\/td>\n<\/tr>\n<\/thead>\n<\/table>\n<h2><a id=\"post-143022-_heading=h.680kg12bare6\"><\/a>An\u00e1lisis t\u00e9cnico<\/h2>\n<p>Nuestra visibilidad de esta campa\u00f1a sigue a grandes rasgos tres pasos, ilustrados a continuaci\u00f3n en la Figura 1.<\/p>\n<figure id=\"attachment_143137\" aria-describedby=\"caption-attachment-143137\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143137 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/2476_Diagrams-3-713x440.png\" alt=\"Diagrama que ilustra las amenazas de ciberseguridad que implican se\u00f1uelos PDF, repositorios GitHub y un servidor C2. Muestra: 1) archivos PDF como descripciones de trabajo y hojas de preguntas que act\u00faan como se\u00f1uelos, 2) repositorios GitHub JavaScript y Python con m\u00faltiples API externas, que potencialmente obtienen datos maliciosos, y 3) un servidor C2 configurado para enviar datos benignos o una carga maliciosa bajo ciertas condiciones. Se incluyen los logotipos de Palo Alto Networks y UNIT 42.\" width=\"800\" height=\"494\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/2476_Diagrams-3-713x440.png 713w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/2476_Diagrams-3-1134x700.png 1134w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/2476_Diagrams-3-768x474.png 768w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/2476_Diagrams-3.png 1348w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-143137\" class=\"wp-caption-text\">Figura 1. Panorama de la campa\u00f1a \"Desaf\u00edos de codificaci\u00f3n\" de Slow Pisces.<\/figcaption><\/figure>\n<h3><a id=\"post-143022-_heading=h.x3qb63dwcbkf\"><\/a>Fase 1 - Se\u00f1uelos PDF<\/h3>\n<p>Slow Pisces comenz\u00f3 suplantando la identidad de reclutadores en LinkedIn e interactuando con objetivos potenciales, envi\u00e1ndoles un PDF benigno con una descripci\u00f3n del trabajo, como se muestra a continuaci\u00f3n en la Figura 2. Si los objetivos potenciales lo solicitaban, los atacantes les presentaban un reto de c\u00f3digo consistente en varias tareas descritas en una hoja de preguntas.<\/p>\n<figure id=\"attachment_143034\" aria-describedby=\"caption-attachment-143034\" style=\"width: 1000px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143034 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-635194-143022-2.png\" alt=\"Imagen que muestra dos documentos uno al lado del otro. A la izquierda, la \u00abDescripci\u00f3n del puesto\u00bb de coordinador de un equipo de dise\u00f1o UX. A la derecha, una \u00abHoja de preguntas\u00bb con cuestiones t\u00e9cnicas y generales relacionadas con el dise\u00f1o de la experiencia del usuario (UX).\" width=\"1000\" height=\"715\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-635194-143022-2.png 1580w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-635194-143022-2-615x440.png 615w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-635194-143022-2-979x700.png 979w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-635194-143022-2-768x549.png 768w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-635194-143022-2-1536x1099.png 1536w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption id=\"caption-attachment-143034\" class=\"wp-caption-text\">Figura 2. Se\u00f1uelos PDF benignos.<\/figcaption><\/figure>\n<p>Hemos observado c\u00f3mo Slow Pisces se hac\u00eda pasar por varias organizaciones con estos se\u00f1uelos, principalmente en el sector de las criptomonedas. Las hojas de preguntas incluyen tareas gen\u00e9ricas de desarrollo de software y un reto de c\u00f3digo de un \"proyecto real\", que enlaza con un repositorio de GitHub que se muestra en la Figura 3 a continuaci\u00f3n.<\/p>\n<figure id=\"attachment_143045\" aria-describedby=\"caption-attachment-143045\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143045 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-638760-143022-3.png\" alt=\"Captura de pantalla de un documento titulado \u00abHabilidades de codificaci\u00f3n y resoluci\u00f3n de problemas con un proyecto real\u00bb. Incluye un enlace a un repositorio de GitHub y describe una tarea de codificaci\u00f3n relacionada con los tipos de cambio de Bitcoin y Ethereum a partir de fuentes API. El texto pide que se mejore el proyecto a\u00f1adiendo m\u00e1s API de mercado y mejorando la comunicaci\u00f3n de red en el c\u00f3digo.\" width=\"800\" height=\"408\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-638760-143022-3.png 1942w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-638760-143022-3-786x401.png 786w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-638760-143022-3-1373x700.png 1373w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-638760-143022-3-768x392.png 768w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-638760-143022-3-1536x783.png 1536w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-143045\" class=\"wp-caption-text\">Figura 3. \"Proyecto real\" desaf\u00edo de codificaci\u00f3n contenido en el se\u00f1uelo PDF.<\/figcaption><\/figure>\n<h3><a id=\"post-143022-_heading=h.wxu9zjsn3d6v\"><\/a>Fase 2 - Repositorios de GitHub<\/h3>\n<p>Slow Pisces present\u00f3 a los objetivos los denominados retos de c\u00f3digo como proyectos en repositorios de GitHub. Los repositorios conten\u00edan c\u00f3digo adaptado de proyectos de c\u00f3digo abierto, incluidas aplicaciones para visualizar y analizar:<\/p>\n<ul>\n<li>Datos burs\u00e1tiles<\/li>\n<li>Estad\u00edsticas de las ligas de f\u00fatbol europeas<\/li>\n<li>Datos meteorol\u00f3gicos<\/li>\n<li>Precios de las criptomonedas<\/li>\n<\/ul>\n<p>El grupo utiliz\u00f3 principalmente proyectos en Python o JavaScript, probablemente en funci\u00f3n de si el objetivo solicitaba un puesto de desarrollo \u201cfront-end\u201d o \u201cback-end\u201d. Tambi\u00e9n vimos repositorios basados en Java en esta campa\u00f1a, aunque fueron mucho menos comunes, con solo dos instancias suplantando una aplicaci\u00f3n de criptomoneda llamada jCoin.<\/p>\n<p>Esta escasez indica que los atacantes podr\u00edan haber creado repositorios bajo demanda, bas\u00e1ndose en el lenguaje de programaci\u00f3n preferido del objetivo. En consecuencia, el grupo utiliz\u00f3 con mayor frecuencia lenguajes m\u00e1s populares en el sector de las criptomonedas, como JavaScript y Python. Del mismo modo, es posible que tambi\u00e9n existan repositorios sin descubrir para otros lenguajes de programaci\u00f3n.<\/p>\n<h3><a id=\"post-143022-_heading=h.r3mr55e4uml\"><\/a>Fase 3a - Repositorio Python<\/h3>\n<p>A finales de 2024, el grupo utiliz\u00f3 un proyecto que se muestra a continuaci\u00f3n en la Figura 4 titulado \"Analizador de patrones de existencias\" adaptado de un <a href=\"https:\/\/github.com\/gaborvecsei\/Stocks-Pattern-Analyzer\" target=\"_blank\" rel=\"noopener\">repositorio leg\u00edtimo<\/a>.<\/p>\n<figure id=\"attachment_143056\" aria-describedby=\"caption-attachment-143056\" style=\"width: 700px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143056 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-642608-143022-4.png\" alt=\"Captura de pantalla de un repositorio de GitHub denominado &quot;Stocks Pattern Analyzer&quot; que muestra la estructura de archivos a la izquierda y el contenido del archivo README a la derecha, en el que se explica c\u00f3mo ejecutar la aplicaci\u00f3n directamente y con Docker.\" width=\"700\" height=\"363\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-642608-143022-4.png 1992w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-642608-143022-4-786x408.png 786w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-642608-143022-4-1349x700.png 1349w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-642608-143022-4-768x399.png 768w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-642608-143022-4-1536x797.png 1536w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><figcaption id=\"caption-attachment-143056\" class=\"wp-caption-text\">Figura 4. \"Analizador de patrones de existencias\" Repositorio Python.<\/figcaption><\/figure>\n<p>La mayor parte del c\u00f3digo del repositorio es benigno. Cuando los objetivos intentan ejecutar el proyecto seg\u00fan la hoja de preguntas, los datos se obtienen de tres ubicaciones remotas:<\/p>\n<ul>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">hxxps:\/\/en.wikipedia[.]org\/wiki\/List_of_S%26P_500_companies<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">hxxps:\/\/en.wikipedia[.]org\/wiki\/Currency_pair<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">hxxps:\/\/en.stockslab[.]org\/symbols\/sp500<\/span><\/li>\n<\/ul>\n<p>Dos de las URL extraen datos de Wikipedia. La tercera URL utiliza un dominio controlado por Slow Pisces. Este patr\u00f3n (utilizar m\u00faltiples fuentes de datos, la mayor\u00eda leg\u00edtimas, pero una maliciosa) es com\u00fan en los repositorios Python del grupo.<\/p>\n<p>El servidor de mando y control (C2) malicioso est\u00e1 configurado para imitar el formato de las fuentes leg\u00edtimas. En este caso, utiliza el subdominio en y el dominio de nivel superior (TLD) org como vemos arriba para el dominio leg\u00edtimo de Wikipedia.<\/p>\n<h4><a id=\"post-143022-_heading=h.komsmr7014ka\"><\/a>Deserializaci\u00f3n de YAML<\/h4>\n<p>Slow Pisces podr\u00eda simplemente colocar malware directamente en el repositorio o ejecutar c\u00f3digo desde el servidor C2 utilizando las funciones <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/docs.python.org\/3\/library\/functions.html#eval\">eval<\/a><\/span> o <span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/docs.python.org\/3\/library\/functions.html#exec\">exec<\/a> <\/span>integradas en Python. Sin embargo, estas t\u00e9cnicas son f\u00e1cilmente detectables, tanto por inspecci\u00f3n manual como por soluciones antivirus.<\/p>\n<p>En su lugar, Slow Pisces se asegura primero de que el servidor C2 responde con datos de aplicaci\u00f3n v\u00e1lidos. Por ejemplo, el repositorio mencionado anteriormente espera una lista de s\u00edmbolos de empresas del S&amp;P 500. La URL C2 responde inicialmente con estos datos en una lista con formato JSON.<\/p>\n<p>Los actores s\u00f3lo env\u00edan una carga maliciosa a objetivos validados, probablemente bas\u00e1ndose en la direcci\u00f3n IP, la geolocalizaci\u00f3n, la hora y los encabezados de las solicitudes HTTP. El hecho de centrarse en las personas contactadas a trav\u00e9s de LinkedIn, a diferencia de las amplias campa\u00f1as de phishing, permite al grupo controlar estrictamente las \u00faltimas fases de la campa\u00f1a y entregar las cargas \u00fanicamente a las v\u00edctimas esperadas.<\/p>\n<p>Para evitar las sospechosas funciones eval y exec , Slow Pisces utiliza <a href=\"https:\/\/net-square.com\/yaml-deserialization-attack-in-python.html\" target=\"_blank\" rel=\"noopener\">deserializaci\u00f3n YAML<\/a> para ejecutar su carga, como se muestra en la Figura 5.<\/p>\n<figure id=\"attachment_143067\" aria-describedby=\"caption-attachment-143067\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143067 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-645286-143022-5.png\" alt=\"Captura de pantalla de c\u00f3digo Python que define una funci\u00f3n \u201cfetch_symbols\u201d que recupera s\u00edmbolos burs\u00e1tiles del S&amp;P 500 mediante una llamada API, gestiona diferentes tipos de contenido y procesa las respuestas en funci\u00f3n de su tipo de contenido. La \u00faltima l\u00ednea tiene una secci\u00f3n resaltada en un recuadro rojo.\" width=\"800\" height=\"403\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-645286-143022-5.png 1508w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-645286-143022-5-786x396.png 786w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-645286-143022-5-1389x700.png 1389w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-645286-143022-5-768x387.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-143067\" class=\"wp-caption-text\">Figura 5. C\u00f3digo Python que muestra el punto de entrada del malware de Slow Pisces que utiliza la deserializaci\u00f3n YAML.<\/figcaption><\/figure>\n<p>Este c\u00f3digo obtiene datos del servidor C2 a trav\u00e9s de HTTPS y comprueba la cabecera de respuesta <span style=\"font-family: 'courier new', courier, monospace;\">Content-Typ<\/span>e. Si la cabecera indica datos JSON <span style=\"font-family: 'courier new', courier, monospace;\">(application\/json)<\/span>, el c\u00f3digo analiza y devuelve el JSON a la aplicaci\u00f3n.<\/p>\n<p>Si la respuesta indica datos YAML<span style=\"font-family: 'courier new', courier, monospace;\"> (application\/yaml)<\/span>, el c\u00f3digo utiliza la funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\">yaml.load()<\/span> de la biblioteca <a href=\"https:\/\/github.com\/yaml\/pyyaml\" target=\"_blank\" rel=\"noopener\">PyYAML<\/a> para analizar los datos. Esta funci\u00f3n es intr\u00ednsecamente insegura y la documentaci\u00f3n de PyYAML <a href=\"https:\/\/github.com\/yaml\/pyyaml\" target=\"_blank\" rel=\"noopener\">recomienda expl\u00edcitamente<\/a> <span style=\"font-family: 'courier new', courier, monospace;\">yaml.safe_load()<\/span> para entradas no fiables.<\/p>\n<p>YAML se utiliza normalmente para archivos de configuraci\u00f3n, como el ejemplo que se muestra a continuaci\u00f3n:<\/p>\n<pre class=\"lang:default decode:true\">nombre de usuario: slow\r\n\r\ncontrase\u00f1a: pisces\r\n\r\napi:\r\n\r\nclave: supersecret\r\n\r\nurl: example.com<\/pre>\n<p>Sin embargo, <span style=\"font-family: 'courier new', courier, monospace;\">yaml.load()<\/span> puede serializar y deserializar objetos Python arbitrarios, no solo datos YAML v\u00e1lidos. Por ejemplo, el siguiente c\u00f3digo Python imprime los n\u00fameros 0-4:<\/p>\n<pre class=\"lang:default decode:true\">range(0, 5)<\/pre>\n<p>Si este c\u00f3digo se serializara utilizando <span style=\"font-family: 'courier new', courier, monospace;\">yaml.dump()<\/span> se convertir\u00eda en lo siguiente:<\/p>\n<pre class=\"lang:default decode:true\">!!python\/object\/apply:builtins.range\r\n\r\n- 0\r\n\r\n- 5\r\n\r\n- 1<\/pre>\n<p>Finalmente, cuando estos datos se pasen a <span style=\"font-family: 'courier new', courier, monospace;\">yaml.load()<\/span> se ejecutar\u00e1 el c\u00f3digo original: <span style=\"font-family: 'courier new', courier, monospace;\">range(0, 5)<\/span>.<\/p>\n<p>Esto pone de manifiesto un posible punto de detecci\u00f3n, ya que los contenidos del repositorio Python, y el malware que utiliza la deserializaci\u00f3n YAML en general, contienen <span style=\"font-family: 'courier new', courier, monospace;\">!!python\/object\/apply:builtins<\/span> si el contenido utiliza una <a href=\"https:\/\/docs.python.org\/3\/library\/functions.html\" target=\"_blank\" rel=\"noopener\">funci\u00f3n Python built-in<\/a>.<\/p>\n<p>Las siguientes fases en la Tabla 1 existen principalmente en memoria y, por lo general, no dejan huella en el disco. Para ayudar a la comunidad en la detecci\u00f3n y concienciaci\u00f3n, hemos subido estas muestras a VirusTotal. La muestra de deserializaci\u00f3n YAML ejecuta el malware que hemos denominado RN Loader y RN Stealer bas\u00e1ndonos en el formato de token C2 que observamos en RN Stealer, del que hablamos en las siguientes secciones.<\/p>\n<table style=\"width: 79.2282%;\">\n<tbody>\n<tr>\n<td style=\"text-align: center; width: 41.6865%;\"><b>Fase<\/b><\/td>\n<td style=\"text-align: center; width: 74.4278%;\"><b>SHA256 Hash<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 41.6865%;\"><span style=\"font-weight: 400;\">Muestra de deserializaci\u00f3n YAML<\/span><\/td>\n<td style=\"width: 74.4278%;\"><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">47e997b85ed3f51d2b1d37a6a61ae72185d9ceaf519e2fdb53bf7e761b7bc08f<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 41.6865%;\"><span style=\"font-weight: 400;\">RN Loader<\/span><\/td>\n<td style=\"width: 74.4278%;\"><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">937c533bddb8bbcd908b62f2bf48e5bc11160505df20fea91d9600d999eafa79<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 41.6865%;\"><span style=\"font-weight: 400;\">RN Stealer<\/span><\/td>\n<td style=\"width: 74.4278%;\"><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">e89bf606fbed8f68127934758726bbb5e68e751427f3bcad3ddf883cb2b50fc7<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400; font-size: 12pt;\">Tabla 1. Muestras del repositorio Python. <\/span><\/p>\n<p>La muestra de deserializaci\u00f3n YAML de Slow Pisces comienza creando la carpeta <span style=\"font-family: 'courier new', courier, monospace;\">Public<\/span> en el directorio personal de la v\u00edctima y creando un nuevo archivo en ese directorio llamado <span style=\"font-family: 'courier new', courier, monospace;\">__init__.py<\/span>. Los datos Base64 incrustados se descodifican y se escriben en este archivo, que contiene la siguiente fase de infecci\u00f3n (RN Loader), que se ejecuta a continuaci\u00f3n.<\/p>\n<h4><a id=\"post-143022-_heading=h.u1m54brd9wzm\"><\/a>RN Loader<\/h4>\n<p>Este archivo reci\u00e9n creado para el RN Loader en <span style=\"font-family: 'courier new', courier, monospace;\">~\/Public\/__init__.py<\/span> se borra a s\u00ed mismo despu\u00e9s de la ejecuci\u00f3n, asegurando que existe \u00fanicamente en memoria. Env\u00eda informaci\u00f3n b\u00e1sica sobre la m\u00e1quina v\u00edctima y el sistema operativo a trav\u00e9s de HTTPS al mismo C2 en <span style=\"font-family: 'courier new', courier, monospace;\">en.stockslab[.]org<\/span>, seguido de un bucle de comandos con las siguientes opciones en la Tabla 2.<\/p>\n<table style=\"width: 100%;\">\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><b>C\u00f3digo<\/b><\/td>\n<td style=\"text-align: center;\"><b>Descripci\u00f3n<\/b><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">0<\/span><\/td>\n<td style=\"text-align: left;\"><span style=\"font-weight: 400;\">Suspender durante 20 segundos<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">1<\/span><\/td>\n<td style=\"text-align: left;\"><span style=\"font-weight: 400;\">Decodifica en base64 el contenido enviado y lo guarda en el archivo <\/span><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">init.dll<\/span><span style=\"font-weight: 400;\"> para Windows o <\/span><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">init<\/span><span style=\"font-weight: 400;\"> para el resto de sistemas operativos.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Establece una variable de entorno <\/span><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">X_DATABASE_NAME<\/span><span style=\"font-weight: 400;\"> a una cadena vac\u00eda.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Carga y ejecuta la DLL descargada utilizando <\/span><span style=\"font-family: 'courier new', courier, monospace;\"><a href=\"https:\/\/docs.python.org\/3\/library\/ctypes.html#ctypes.CDLL\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">ctypes.cdll.LoadLibrary<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2<\/span><\/td>\n<td style=\"text-align: left;\"><span style=\"font-weight: 400;\">Decodifica en base64 el contenido enviado y lo ejecuta utilizando\u00a0 la funci\u00f3n <\/span><span style=\"font-weight: 400;\"><span style=\"font-family: 'courier new', courier, monospace;\">exec<\/span> <\/span><span style=\"font-weight: 400;\">incorporada en Python.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">3<\/span><\/td>\n<td style=\"text-align: left;\"><span style=\"font-weight: 400;\">Decodifica en base64 el contenido enviado y un par\u00e1metro. El contenido se guarda en el archivo <\/span><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">dockerd<\/span><span style=\"font-weight: 400;\">, mientras que el par\u00e1metro se guarda como <\/span><span style=\"font-family: 'courier new', courier, monospace;\"><span style=\"font-weight: 400;\">docker-init<\/span><span style=\"font-weight: 400;\">.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">dockerd<\/span><span style=\"font-weight: 400;\"> se ejecuta entonces en un nuevo proceso, con <\/span><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">docker-init<\/span><span style=\"font-weight: 400;\"> suministrado como argumento de l\u00ednea de comandos.<\/span><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">9<\/span><\/td>\n<td style=\"text-align: left;\"><span style=\"font-weight: 400;\">Finaliza la ejecuci\u00f3n.<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-size: 12pt;\">Tabla 2. Tabla de comandos del cargador RN. <\/span><\/p>\n<p>Las cargas \u00fatlies del bucle de comandos de la Tabla 2 que utilizan las opciones <strong>1<\/strong> y <strong>3<\/strong> son actualmente desconocidas y es probable que se activen por condiciones espec\u00edficas. Sin embargo, hemos recuperado un \u201cinfostealer\u201dbasado en Python entregado por la opci\u00f3n <strong>2<\/strong>, y rastreamos este malware como RN Stealer.<\/p>\n<h4><a id=\"post-143022-_heading=h.v05y9py2y2qc\"><\/a>RN Stealer<\/h4>\n<p>El RN Stealer genera primero un ID aleatorio de la v\u00edctima, utilizado posteriormente como cookie en todas las comunicaciones con el servidor C2. A continuaci\u00f3n, solicita una clave XOR al servidor para cifrar los datos exfiltrados.<\/p>\n<p>La comunicaci\u00f3n con el servidor C2 se produce a trav\u00e9s de HTTPS, utilizando tokens codificados en Base64 para identificar los tipos de solicitud y respuesta. La carga analizada incluye cuatro tipos de fichas:<\/p>\n<ul>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">R0<\/span> - solicitar la clave XOR<\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">R64<\/span> - exfiltrar datos<\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">R128<\/span> - exfiltrar datos comprimidos<\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">R256<\/span> - Infostealercompleto<\/li>\n<\/ul>\n<p>El formato de estos tipos de token - la letra R seguida de un n\u00famero entero <span style=\"font-family: 'courier new', courier, monospace;\">N<\/span> - nos llev\u00f3 a nombrar esta carga. Llamamos a la carga RN Stealer y a la fase precedente RN Loader.<\/p>\n<p>Hemos recuperado el script de esta muestra de RN Stealer de un sistema macOS. Como tal, los autores de la amenaza adaptaron esta muestra para robar informaci\u00f3n espec\u00edfica de los dispositivos macOS, incluyendo:<\/p>\n<ul>\n<li>Informaci\u00f3n b\u00e1sica sobre la v\u00edctima: Nombre de usuario, nombre de la m\u00e1quina y arquitectura<\/li>\n<li>Aplicaciones instaladas<\/li>\n<li>Un listado de directorios y el contenido de nivel superior del directorio de usuario de la v\u00edctima<\/li>\n<li>El archivo l<span style=\"font-family: 'courier new', courier, monospace;\">ogin.keychain-db<\/span> que almacena las credenciales guardadas en los sistemas macOS.<\/li>\n<li>Claves SSH almacenadas<\/li>\n<li>Archivos de configuraci\u00f3n para AWS, Kubernetes y Google Cloud<\/li>\n<\/ul>\n<p>Los datos recopilados por el RN Stealer probablemente determinan si es necesario un acceso persistente. Si es as\u00ed, podemos deducir los siguientes pasos para esta cadena de infecci\u00f3n de Python:<\/p>\n<ol>\n<li>El servidor C2 comprueba las v\u00edctimas que llaman seg\u00fan criterios desconocidos. Las v\u00edctimas v\u00e1lidas reciben una carga \u00fatil de deserializaci\u00f3n YAML. Las v\u00edctimas no v\u00e1lidas reciben datos JSON benignos.<\/li>\n<li>La carga de deserializaci\u00f3n establece un bucle de comandos con el servidor C2, exfiltrando informaci\u00f3n b\u00e1sica de la v\u00edctima y entregando un infostealera medida en Python a trav\u00e9s de la opci\u00f3n 2 de c\u00f3digo en la Tabla 2.<\/li>\n<li>El infostealer recopila informaci\u00f3n m\u00e1s detallada de la v\u00edctima, que los atacantes probablemente utilizaron para determinar si necesitaban acceso continuado.\n<ol>\n<li>Si se requiere un acceso continuado, el servidor C2 entrega una carga mediante las opciones 1 o 3 de c\u00f3digo<\/li>\n<li>Si el acceso ya no es necesario, la opci\u00f3n <strong>9<\/strong> de c\u00f3digo termina la ejecuci\u00f3n del malware, eliminando todo acceso ya que la carga reside \u00fanicamente en la memoria.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3><a id=\"post-143022-_heading=h.vc6998cn6sr8\"><\/a>Fase 3b - Repositorio JavaScript<\/h3>\n<p>Si las v\u00edctimas objetivo solicitaron una posici\u00f3n de JavaScript, podr\u00edan encontrarse en su lugar con un proyecto de \"Cuadro de mando de criptomoneda\", similar al ejemplo de la Figura 6 a continuaci\u00f3n.<\/p>\n<figure id=\"attachment_143078\" aria-describedby=\"caption-attachment-143078\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143078 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-648751-143022-6.png\" alt=\"Captura de pantalla de un repositorio de GitHub llamado &quot;Cryptocurrency Dashboard&quot;, en el que aparece un archivo README.md. Este README incluye secciones: Caracter\u00edsticas, Instalaci\u00f3n, Uso, Estructura del proyecto, Configuraci\u00f3n, Dependencias y Licencia. Describe el proyecto como una aplicaci\u00f3n construida con Node.js, Express y EJS que muestra datos hist\u00f3ricos y en tiempo real de varias criptomonedas.\" width=\"800\" height=\"462\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-648751-143022-6.png 1764w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-648751-143022-6-762x440.png 762w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-648751-143022-6-1213x700.png 1213w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-648751-143022-6-768x443.png 768w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-648751-143022-6-1536x886.png 1536w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-143078\" class=\"wp-caption-text\">Figura 6. Repositorio JavaScript.<\/figcaption><\/figure>\n<p>Esta aplicaci\u00f3n contiene un archivo <span style=\"font-family: 'courier new', courier, monospace;\">.env<\/span> con el C2 y la fuente de datos leg\u00edtima:<\/p>\n<ul>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">PORT=3000<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">COINGECKO_API_URL=hxxps:\/\/api.coingecko[.]com\/api\/v3<\/span><\/li>\n<li><span style=\"font-family: 'courier new', courier, monospace;\">JQUERY_API_URL=hxxps:\/\/update.jquerycloud[.]io\/api\/v1<\/span><\/li>\n<\/ul>\n<p>El valor C<span style=\"font-family: 'courier new', courier, monospace;\">OINGECKO_API_URL<\/span> se utiliza para obtener datos para el panel de criptomonedas, mientras que el valor <span style=\"font-family: 'courier new', courier, monospace;\">JQUERY_API_URL<\/span> representa un servidor C2 controlado por Slow Pisces. De forma similar al repositorio Python, el servidor C2 JavaScript solo entrega cargas a objetivos validados, de lo contrario, responde con un n\u00famero de versi\u00f3n.<\/p>\n<p>El repositorio utiliza la herramienta de creaci\u00f3n de plantillas <a href=\"https:\/\/ejs.co\/\" target=\"_blank\" rel=\"noopener\">Embedded JavaScript (EJS)<\/a>, pasando las respuestas del servidor C2 a la funci\u00f3n <span style=\"font-family: 'courier new', courier, monospace;\">ejs.render()<\/span>, que se muestra a continuaci\u00f3n en la figura 7.<\/p>\n<figure id=\"attachment_143089\" aria-describedby=\"caption-attachment-143089\" style=\"width: 700px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143089 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-651607-143022-7.png\" alt=\"Captura de pantalla que muestra un fragmento de c\u00f3digo en JavaScript. Incluye un comentario y una llamada a una funci\u00f3n para renderizar una p\u00e1gina de inicio con ajustes y elementos por p\u00e1gina. res.render aparece resaltado en un recuadro rojo\" width=\"700\" height=\"294\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-651607-143022-7.png 1116w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-651607-143022-7-786x330.png 786w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-651607-143022-7-768x322.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><figcaption id=\"caption-attachment-143089\" class=\"wp-caption-text\">Figura 7. C\u00f3digo JavaScript que muestra el punto de entrada del malware de Slow Pisces utilizando la funci\u00f3n de renderizado EJS.<\/figcaption><\/figure>\n<p>Al igual que el uso de <span style=\"font-family: 'courier new', courier, monospace;\">yaml.load()<\/span>, esta es otra t\u00e9cnica que emplea Slow Pisces para ocultar la ejecuci\u00f3n de c\u00f3digo arbitrario desde sus servidores C2, y este m\u00e9todo quiz\u00e1s solo sea aparente cuando se visualiza una carga v\u00e1lida.<\/p>\n<p>La funci\u00f3n de renderizado de EJS acepta varios par\u00e1metros, uno de los cuales se denomina \u201cview options\u201d. Dentro de este, se puede suministrar y ejecutar c\u00f3digo JavaScript arbitrario a trav\u00e9s de la clave escapeFunction.<\/p>\n<p>Un investigador taiwan\u00e9s que se hace llamar \u201cHuli\u201d discuti\u00f3 los detalles t\u00e9cnicos de c\u00f3mo esto resulta en la ejecuci\u00f3n de c\u00f3digo arbitrario <a href=\"https:\/\/blog.huli.tw\/2023\/06\/22\/en\/ejs-render-vulnerability-ctf\/\">en una publicaci\u00f3n de CTF<\/a>. Sin embargo, podemos entender suficientemente que una carga estructurada como se muestra en la Figura 8 dar\u00e1 lugar a que el c\u00f3digo contenido en <span style=\"font-family: 'courier new', courier, monospace;\">escapeFunction<\/span> se ejecute cuando se pase a <span style=\"font-family: 'courier new', courier, monospace;\">ejs.render()<\/span>.<\/p>\n<figure id=\"attachment_143100\" aria-describedby=\"caption-attachment-143100\" style=\"width: 700px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143100 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-653630-143022-8.png\" alt=\"Captura de pantalla de un fragmento de c\u00f3digo JavaScript que incluye funciones con &quot;escapeFunction&quot; resaltado en un recuadro rojo.\" width=\"700\" height=\"593\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-653630-143022-8.png 1234w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-653630-143022-8-519x440.png 519w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-653630-143022-8-826x700.png 826w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-653630-143022-8-768x651.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><figcaption id=\"caption-attachment-143100\" class=\"wp-caption-text\">Figura 8. Carga de renderizado EJS parcial.<\/figcaption><\/figure>\n<p>Lamentablemente, no pudimos recuperar la totalidad de esta carga. Como tal, solo podemos suponer que se crea un nuevo directorio <span style=\"font-family: 'courier new', courier, monospace;\">.jql<\/span> bajo el directorio personal del usuario donde se suelta un archivo llamado <span style=\"font-family: 'courier new', courier, monospace;\">helper.js<\/span>, que contiene datos codificados en Base64.<\/p>\n<h3><a id=\"post-143022-_heading=h.kc3n8id8od90\"><\/a>Infraestructura<\/h3>\n<p>La l\u00ednea de tiempo que aparece a continuaci\u00f3n en la Figura 9 detalla la infraestructura C2 utilizada en esta campa\u00f1a desde febrero de 2024 a febrero de 2025, agrupada por el tipo de repositorio servido (JavaScript o Python).<\/p>\n<figure id=\"attachment_143111\" aria-describedby=\"caption-attachment-143111\" style=\"width: 1000px\" class=\"wp-caption alignnone\"><img  class=\"wp-image-143111 lozad\"  data-src=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-656840-143022-9.png\" alt=\"Cronolog\u00eda de la infraestructura de seguimiento del comando y los controles de JavaScript (arriba, etiqueta amarilla) y del comando y los controles de Python (abajo, etiqueta naranja). La cronolog\u00eda comienza a finales del primer trimestre de 2024 y contin\u00faa hasta el segundo trimestre de 2025.\" width=\"1000\" height=\"906\" srcset=\"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-656840-143022-9.png 1338w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-656840-143022-9-486x440.png 486w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-656840-143022-9-773x700.png 773w, https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/06\/word-image-656840-143022-9-768x696.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><figcaption id=\"caption-attachment-143111\" class=\"wp-caption-text\">Figura 9. Cronolog\u00eda de la infraestructura C2<\/figcaption><\/figure>\n<p>Como ya se ha mencionado, los dominios de la infraestructura de esta campa\u00f1a pueden imitar el formato de las fuentes leg\u00edtimas utilizadas junto a ellos, utilizando con frecuencia subdominios como <span style=\"font-family: 'courier new', courier, monospace;\">api<\/span> o <span style=\"font-family: 'courier new', courier, monospace;\">cdn<\/span>. Hemos descubierto infraestructura asociadas a esta campa\u00f1a hasta el momento de redactar este art\u00edculo.<\/p>\n<h2><a id=\"post-143022-_heading=h.x12ekr9fn6lx\"><\/a>Conclusi\u00f3n<\/h2>\n<p>Este informe ha cubierto la campa\u00f1a m\u00e1s reciente de Slow Pisces, que se hizo pasar por reclutadores a trav\u00e9s de LinkedIn para dirigirse a desarrolladores en el sector de las criptomonedas con retos de c\u00f3digo maliciosos. Si bien no pudimos recuperar la cadena de ataque completa para los repositorios JavaScript, la versi\u00f3n Python de la campa\u00f1a entreg\u00f3 dos nuevas cargas que hemos denominado RN Loader y RN Stealer.<\/p>\n<p>Utilizar LinkedIn y GitHub de esta manera no es algo extra\u00f1o. M\u00faltiples grupos afiliados a la RPDC han utilizado t\u00e1cticas similares como <a href=\"https:\/\/www.reversinglabs.com\/blog\/fake-recruiter-coding-tests-target-devs-with-malicious-python-packages\" target=\"_blank\" rel=\"noopener\">Alluring Pisces<\/a> y <a href=\"https:\/\/unit42.paloaltonetworks.com\/two-campaigns-by-north-korea-bad-actors-target-job-hunters\/\" target=\"_blank\" rel=\"noopener\">Contagious Interview<\/a>.<\/p>\n<p>Estos grupos no presentan solapamientos operativos. Sin embargo, cabe destacar que estas campa\u00f1as utilizan vectores de infecci\u00f3n iniciales similares.<\/p>\n<p>Slow Pisces destaca entre las campa\u00f1as de sus compa\u00f1eros en seguridad operativa. La entrega de las cargas en cada fase est\u00e1 fuertemente vigilada, existiendo solo en memoria. Y las herramientas de la fase posterior del grupo solo se implementan cuando es necesario.<\/p>\n<p>En concreto, el grupo hizo uso de dos t\u00e9cnicas para ocultar la funcionalidad:<\/p>\n<ul>\n<li>Deserializaci\u00f3n de YAML<\/li>\n<li>EJS <span style=\"font-family: 'courier new', courier, monospace;\">escapeFunction<\/span><\/li>\n<\/ul>\n<p>Ambas t\u00e9cnicas dificultan enormemente el an\u00e1lisis, la detecci\u00f3n y la b\u00fasqueda. Del mismo modo, los desarrolladores relativamente nuevos o inexpertos en el sector de las criptomonedas tendr\u00edan dificultades para identificar estos repositorios como maliciosos.<\/p>\n<p>Bas\u00e1ndose en los informes p\u00fablicos de robos de criptomonedas, esta campa\u00f1a parece tener mucho \u00e9xito y es probable que persista en 2025. Si bien este art\u00edculo destacaba dos oportunidades potenciales de detecci\u00f3n para la deserializaci\u00f3n YAML y las cargas EJS <span style=\"font-family: 'courier new', courier, monospace;\">escapeFunction<\/span>, la mitigaci\u00f3n m\u00e1s eficaz sigue siendo la segregaci\u00f3n estricta de los dispositivos corporativos y personales. Esto ayuda a prevenir el compromiso de los sistemas corporativos a partir de campa\u00f1as de ingenier\u00eda social dirigidas.<\/p>\n<h3><a id=\"post-143022-_heading=h.alceumiqv14r\"><\/a>Protecci\u00f3n y mitigaci\u00f3n de Palo Alto Networks<\/h3>\n<p>Los clientes de Palo Alto Networks est\u00e1n mejor protegidos frente a las amenazas mencionadas gracias a los siguientes productos:<\/p>\n<ul>\n<li><a href=\"https:\/\/docs.paloaltonetworks.com\/advanced-url-filtering\/administration\" target=\"_blank\" rel=\"noopener\">Advanced URL Filtering<\/a> y <a href=\"https:\/\/docs.paloaltonetworks.com\/dns-security\" target=\"_blank\" rel=\"noopener\">Advanced DNS Security<\/a><\/li>\n<\/ul>\n<p>Si cree que su seguridad puede haber sido comprometida o si tiene un asunto urgente, p\u00f3ngase en contacto con el<a href=\"https:\/\/start.paloaltonetworks.com\/contact-unit42.html\" target=\"_blank\" rel=\"noopener\"> equipo de respuesta a incidentes de Unit 42<\/a> o llame al:<\/p>\n<ul>\n<li>Am\u00e9rica del Norte: Llamada gratuita: +1 (866) 486-4842 (866.4.UNIT42)<\/li>\n<li>Reino Unido: +44.20.3743.3660<\/li>\n<li>Europa y Oriente Medio: +31.20.299.3130<\/li>\n<li>Asia: +65.6983.8730<\/li>\n<li>Jap\u00f3n: +81.50.1790.0200<\/li>\n<li>Australia: +61.2.4062.7950<\/li>\n<li>India: 00080005045107<\/li>\n<\/ul>\n<p>Palo Alto Networks ha compartido estos hallazgos con nuestros colegas de la Cyber Threat Alliance (CTA). Los miembros de la CTA utilizan esta inteligencia para implementar r\u00e1pidamente protecciones a sus clientes y perturbar sistem\u00e1ticamente a los ciberactores maliciosos. Obtenga m\u00e1s informaci\u00f3n sobre la <a href=\"https:\/\/www.cyberthreatalliance.org\" target=\"_blank\" rel=\"noopener\">Cyber Threat Alliance<\/a>.<\/p>\n<h2><a id=\"post-143022-_heading=h.1wb1kt3jadx7\"><\/a>Indicadores de Compromiso<\/h2>\n<table>\n<tbody>\n<tr>\n<td style=\"text-align: center;\"><b>Dominio<\/b><\/td>\n<td style=\"text-align: center;\"><b>Direcci\u00f3n IP<\/b><\/td>\n<td style=\"text-align: center;\"><b>Visto por primera vez<\/b><\/td>\n<td style=\"text-align: center;\"><b>Visto por \u00faltima vez<\/b><\/td>\n<td style=\"text-align: center;\"><b>Repositorio<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">getstockprice[.]com<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">70.34.245[.]118<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2025-02-03<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2025-02-20<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]clubinfo[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">5.206.227[.]51<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2025-01-21<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2025-02-19<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">getstockprice[.]info<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">131.226.2[.]120<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2025-01-21<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2025-01-23<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]stockinfo[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">136.244.93[.]248<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-10-30<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-11-11<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]logoeye[.]net<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">54.39.83[.]151<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-10-29<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-11-03<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">en[.]wfinance[.]org<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">195.133.26[.]32<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-10-12<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-11-01<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">en[.]stocksindex[.]org<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">185.236.231[.]224<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-09-11<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-10-04<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]jqueryversion[.]net<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">194.11.226[.]16<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-08-23<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-09-23<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">en[.]stockslab[.]org<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">91.103.140[.]191<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-08-19<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-09-12<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">update[.]jquerycloud[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">192.236.199[.]57<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-07-03<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-08-22<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]soccerlab[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">146.70.124[.]70<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-08-07<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-08-21<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]coinpricehub[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">45.141.58[.]40<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-05-06<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-08-06<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Java<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]leaguehub[.]net<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">5.133.9[.]252<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-07-15<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-07-21<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]clublogos[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">146.19.173[.]29<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-06-24<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-07-12<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]jquery-release[.]com<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">146.70.125[.]120<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-06-10<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-06-28<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">cdn[.]logosports[.]net<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">185.62.58[.]74<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-05-08<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-06-23<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">skypredict[.]org<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">80.82.77[.]80<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-05-06<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-06-16<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]bitzone[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">192.248.145[.]210<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-25<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-05-13<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">weatherdatahub[.]org<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">194.15.112[.]200<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-05<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-05-03<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]ethzone[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">91.234.199[.]90<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-16<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-24<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]fivebit[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">185.216.144[.]41<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-08<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-14<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">blockprices[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">91.193.18[.]201<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-15<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-09<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]coinhar[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">185.62.58[.]122<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-26<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-04-09<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">mavenradar[.]com<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">23.254.230[.]253<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-02-21<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-26<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">indobit[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">146.70.88[.]126<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-19<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-20<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">api[.]thaibit[.]io<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">79.137.248[.]193<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-07<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-09<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Python<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">chainanalyser[.]com<\/span><\/td>\n<td><span style=\"font-weight: 400; font-family: 'courier new', courier, monospace;\">38.180.62[.]135<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-02-23<\/span><\/td>\n<td style=\"text-align: center;\"><span style=\"font-weight: 400;\">2024-03-06<\/span><\/td>\n<td><span style=\"font-weight: 400;\">JavaScript<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><a id=\"post-143022-_heading=h.fn259zvl9861\"><\/a>Recursos adicionales<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.ic3.gov\/PSA\/2025\/PSA250226\" target=\"_blank\" rel=\"noopener\">Corea del Norte, responsable del pirateo de Bybit por valor de 1500 millones de d\u00f3lares<\/a> - Centro de Denuncias de Delitos en Internet (IC3)<\/li>\n<li><a href=\"https:\/\/www.fbi.gov\/news\/press-releases\/fbi-dc3-and-npa-identification-of-north-korean-cyber-actors-tracked-as-tradertraitor-responsible-for-theft-of-308-million-from-bitcoindmmcom\" target=\"_blank\" rel=\"noopener\">El FBI, el DC3 y la NPA identifican a los ciberactores de Corea del Norte, rastreados como TraderTraitor, responsables del robo de 308 millones de d\u00f3lares de Bitcoin.DMM.com<\/a> - FBI<\/li>\n<li><a href=\"https:\/\/github.blog\/security\/vulnerability-research\/security-alert-social-engineering-campaign-targets-technology-industry-employees\/\" target=\"_blank\" rel=\"noopener\">Alerta de seguridad: campa\u00f1a de ingenier\u00eda social dirigida a empleados del sector tecnol\u00f3gico<\/a> - GitHub Blog<\/li>\n<li><a href=\"https:\/\/cloud.google.com\/blog\/topics\/threat-intelligence\/north-korea-supply-chain\" target=\"_blank\" rel=\"noopener\">Corea del Norte aprovecha a un proveedor de SaaS en un ataque selectivo a la cadena de suministro<\/a> - Mandiant, Google Cloud<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos.<\/p>\n","protected":false},"author":366,"featured_media":138791,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[8739,8829,8793],"tags":[9193,8882,9195,9197,9194,9196,8883],"product_categories":[8922,8924,8921,8938,8890],"coauthors":[8711],"class_list":["post-143022","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cybercrime-es-la","category-threat-actor-groups-es-la","category-malware-es-la","tag-cryptocurrency-es-la","tag-dprk-es-la","tag-github-es-la","tag-infostealer-es-la","tag-javascript-malware-es-la","tag-slow-pisces-es-la","tag-social-engineering-es-la","product_categories-advanced-dns-security-es-la","product_categories-advanced-url-filtering-es-la","product_categories-cloud-delivered-security-services-es-la","product_categories-next-generation-firewall-es-la","product_categories-unit-42-incident-response-es-la"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python<\/title>\n<meta name=\"description\" content=\"El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos. El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/\" \/>\n<meta property=\"og:locale\" content=\"es_LA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python\" \/>\n<meta property=\"og:description\" content=\"El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos. El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/\" \/>\n<meta property=\"og:site_name\" content=\"Unit 42\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-14T18:21:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-19T18:05:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/03\/Pisces-NK-A-1920x900-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Prashil Pattni\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python","description":"El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos. El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/","og_locale":"es_LA","og_type":"article","og_title":"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python","og_description":"El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos. El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos.","og_url":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/","og_site_name":"Unit 42","article_published_time":"2025-04-14T18:21:17+00:00","article_modified_time":"2025-06-19T18:05:09+00:00","og_image":[{"width":1920,"height":900,"url":"https:\/\/unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/03\/Pisces-NK-A-1920x900-1.png","type":"image\/png"}],"author":"Prashil Pattni","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#article","isPartOf":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/"},"author":{"name":"Sheida Azimi","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/7ee97ec6f224446d57c0383eb5fd3639"},"headline":"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python","datePublished":"2025-04-14T18:21:17+00:00","dateModified":"2025-06-19T18:05:09+00:00","mainEntityOfPage":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/"},"wordCount":3679,"commentCount":0,"image":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#primaryimage"},"thumbnailUrl":"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/03\/Pisces-NK-A-1920x900-1.png","keywords":["Cryptocurrency","DPRK","GitHub","Infostealer","JavaScript Malware","Slow Pisces","social engineering"],"articleSection":["Ciberdelito","Grupos de actores de amenazas","Malware"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/","url":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/","name":"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python","isPartOf":{"@id":"https:\/\/unit42.paloaltonetworks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#primaryimage"},"image":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#primaryimage"},"thumbnailUrl":"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/03\/Pisces-NK-A-1920x900-1.png","datePublished":"2025-04-14T18:21:17+00:00","dateModified":"2025-06-19T18:05:09+00:00","author":{"@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/7ee97ec6f224446d57c0383eb5fd3639"},"description":"El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos. El actor estado-naci\u00f3n Slow Pisces (Jade Sleet) de Corea del Norte,, se dirigi\u00f3 a los cripto desarrolladores con una campa\u00f1a de ingenier\u00eda social que inclu\u00eda retos de c\u00f3digo maliciosos.","breadcrumb":{"@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#primaryimage","url":"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/03\/Pisces-NK-A-1920x900-1.png","contentUrl":"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2025\/03\/Pisces-NK-A-1920x900-1.png","width":1920,"height":900,"caption":"Pictorial representation of APT Slow Pisces. The silhouette of two fish and the Pisces constellation inside an orange abstract planet. Background of stars and swirling purple and blue colors."},{"@type":"BreadcrumbList","@id":"https:\/\/unit42.paloaltonetworks.com\/es-la\/slow-pisces-new-custom-malware\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/unit42.paloaltonetworks.com\/"},{"@type":"ListItem","position":2,"name":"Slow Pisces se dirige a los desarrolladores con retos de c\u00f3digo y presenta un nuevo malware a medida en Python"}]},{"@type":"WebSite","@id":"https:\/\/unit42.paloaltonetworks.com\/#website","url":"https:\/\/unit42.paloaltonetworks.com\/","name":"Unit 42","description":"Palo Alto Networks","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/unit42.paloaltonetworks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/7ee97ec6f224446d57c0383eb5fd3639","name":"Sheida Azimi","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/unit42.paloaltonetworks.com\/#\/schema\/person\/image\/9213e49ea48b7676660bac40d05c9e3e","url":"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit-news-meta.svg","contentUrl":"https:\/\/origin-unit42.paloaltonetworks.com\/wp-content\/uploads\/2018\/11\/unit-news-meta.svg","caption":"Sheida Azimi"},"url":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/author\/sheida-azimi\/"}]}},"_links":{"self":[{"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts\/143022","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/users\/366"}],"replies":[{"embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/comments?post=143022"}],"version-history":[{"count":4,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts\/143022\/revisions"}],"predecessor-version":[{"id":143286,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/posts\/143022\/revisions\/143286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/media\/138791"}],"wp:attachment":[{"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/media?parent=143022"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/categories?post=143022"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/tags?post=143022"},{"taxonomy":"product_categories","embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/product_categories?post=143022"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/origin-unit42.paloaltonetworks.com\/es-la\/wp-json\/wp\/v2\/coauthors?post=143022"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}