<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Puma</title>
    <description>The latest articles on DEV Community by Puma (@pumadracon).</description>
    <link>https://dev.to/pumadracon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4053548%2Fdb3880df-9c89-4aa2-a9ae-183426684a04.png</url>
      <title>DEV Community: Puma</title>
      <link>https://dev.to/pumadracon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pumadracon"/>
    <language>en</language>
    <item>
      <title>Cracking WMI-exec in Rust by turning impacket into a byte-level oracle</title>
      <dc:creator>Puma</dc:creator>
      <pubDate>Mon, 03 Aug 2026 06:36:58 +0000</pubDate>
      <link>https://dev.to/pumadracon/cracking-wmi-exec-in-rust-by-turning-impacket-into-a-byte-level-oracle-54ib</link>
      <guid>https://dev.to/pumadracon/cracking-wmi-exec-in-rust-by-turning-impacket-into-a-byte-level-oracle-54ib</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4lajsjzsvobz7sfpywd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4lajsjzsvobz7sfpywd.gif" alt=" " width="800" height="876"&gt;&lt;/a&gt;How I implemented wmiexec from scratch in Rust — DCOM activation, OXID resolution, and MS-WMIO object marshaling — by using impacket not as a library but as a debugging oracle, and diffing my wire bytes against it until a Windows DC accepted them byte-for-byte.&lt;/p&gt;

&lt;p&gt;This is a build log from ADhammer, an Active Directory audit + validation toolkit I'm writing in Rust on a from-scratch DCE/RPC · NTLM · SMB2 · Kerberos stack (think "impacket for Rust"). The whole project is built with Claude Code, and this post is the single best example of what that actually looks like — not autocomplete, but a tight loop of hypothesis → capture live traffic → diff → fix against a real domain controller.&lt;/p&gt;

&lt;p&gt;The goal: wmiexec, from scratch&lt;br&gt;
wmiexec is the classic "quiet" remote-code-execution technique: instead of creating a service (psexec/SVCCTL) or a scheduled task (atexec), you talk to WMI over DCOM and call Win32_Process.Create. No service-install event, different host telemetry.&lt;/p&gt;

&lt;p&gt;Under the hood it's three stages, each a different flavour of pain:&lt;/p&gt;

</description>
      <category>rust</category>
      <category>security</category>
      <category>microsoft</category>
      <category>showdev</category>
    </item>
    <item>
      <title>ADhammer: a full Active Directory pentest tool in Rust</title>
      <dc:creator>Puma</dc:creator>
      <pubDate>Fri, 31 Jul 2026 08:19:37 +0000</pubDate>
      <link>https://dev.to/pumadracon/adhammer-a-full-active-directory-pentest-tool-in-rust-413a</link>
      <guid>https://dev.to/pumadracon/adhammer-a-full-active-directory-pentest-tool-in-rust-413a</guid>
      <description>&lt;p&gt;Full AD pentest + audit tool in Rust, single static binary. Whole DCE/RPC · NTLM · SMB2 · Kerberos stack written from scratch (no impacket) — split into 4 reusable MIT crates on crates.io. Audits a domain (control-path graph, 10/16 AD CS ESC classes, MITRE-tagged) and validates findings end-to-end: DCSync, golden/silver tickets, pass-the-ticket to SYSTEM, LAPS, WinRM, ADCS. Live-validated against a fully-patched Windows Server 2025 DC. MIT, v1.1.0.&lt;/p&gt;

&lt;p&gt;github.com/icedracon/adhammer&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0qwl013nbbtc8kvh6tn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb0qwl013nbbtc8kvh6tn.gif" alt=" " width="757" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>security</category>
      <category>cybersecurity</category>
      <category>tools</category>
    </item>
    <item>
      <title>ECHO — a living pixel companion on your taskbar: he fights demons from your screen edge, plays guitar at midnight, and learns your rhythm</title>
      <dc:creator>Puma</dc:creator>
      <pubDate>Fri, 31 Jul 2026 08:17:37 +0000</pubDate>
      <link>https://dev.to/pumadracon/echo-a-living-pixel-companion-on-your-taskbar-he-fights-demons-from-your-screen-edge-plays-4nhp</link>
      <guid>https://dev.to/pumadracon/echo-a-living-pixel-companion-on-your-taskbar-he-fights-demons-from-your-screen-edge-plays-4nhp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft10ip1e61rhjet5khqkj.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ft10ip1e61rhjet5khqkj.gif" alt=" " width="256" height="256"&gt;&lt;/a&gt;A pixel-art companion who lives on your Windows taskbar. Two heroes: Corvin the silent Warden (voiced 100-chapter story, midnight guitar, and a daily boss fight where a demon literally walks out of your screen edge) and Dante the demon hunter (Devil Trigger, flaming sword, espresso and doomscrolling). He reacts to your games, music and typing, plays big scenes on a living schedule, and a local learning "director" adapts him to you. Zero network calls, zero telemetry, one exe.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/icedracon" rel="noopener noreferrer"&gt;
        icedracon
      &lt;/a&gt; / &lt;a href="https://github.com/icedracon/ECHO" rel="noopener noreferrer"&gt;
        ECHO
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ECHO — живой пиксельный компаньон для твоего рабочего стола&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Он живёт на панели задач Windows и &lt;strong&gt;сам&lt;/strong&gt; реагирует на твою жизнь за
компьютером: работаешь — он рядом, запустил игру — он дерётся, включил музыку —
он играет с тобой, ушёл ночью — он засыпает. Лёгкий (~45 МБ памяти), ничего не
отправляет в интернет, работает полностью локально.&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/icedracon/ECHO/docs/media/corvin-execution.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Ficedracon%2FECHO%2FHEAD%2Fdocs%2Fmedia%2Fcorvin-execution.gif" alt="Корвин" width="210"&gt;&lt;/a&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/icedracon/ECHO/docs/media/taskbar-sword.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Ficedracon%2FECHO%2FHEAD%2Fdocs%2Fmedia%2Ftaskbar-sword.gif" alt="Данте" width="240"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Установка — один клик&lt;/h2&gt;
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Скачай своего героя со &lt;a href="https://github.com/icedracon/ECHO/../../releases" rel="noopener noreferrer"&gt;страницы загрузок&lt;/a&gt;:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;/p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;table&gt;

&lt;thead&gt;

&lt;tr&gt;

&lt;th&gt;Файл&lt;/th&gt;

&lt;th&gt;Кто это&lt;/th&gt;

&lt;/tr&gt;

&lt;/thead&gt;

&lt;tbody&gt;

&lt;tr&gt;

&lt;td&gt;🦅 &lt;strong&gt;Echo-Corvin.exe&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;strong&gt;Корвин&lt;/strong&gt; — молчаливый Страж с белым орлом. Рассказывает истории своим голосом, играет на гитаре в полночь, дерётся с тем, что лезет из-за Двери&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;🔴 &lt;strong&gt;Echo-Dante.exe&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;br&gt;
&lt;strong&gt;Данте&lt;/strong&gt; — охотник на демонов: Devil Trigger, огненный меч, пицца и танцы&lt;/td&gt;

&lt;/tr&gt;

&lt;tr&gt;

&lt;td&gt;⚪ &lt;strong&gt;ECHO.exe&lt;/strong&gt;&lt;br&gt;
&lt;/td&gt;

&lt;td&gt;Оба в одном — переключайся когда хочешь&lt;/td&gt;

&lt;/tr&gt;

&lt;/tbody&gt;

&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;

&lt;ol start="2"&gt;
&lt;li&gt;Запусти. Всё. Он выйдет на панель и начнёт жить.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Windows может спросить «запустить неизвестное приложение?» — жми
«Подробнее → Выполнить в любом случае». Код открыт, проверить можно прямо здесь.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Управление — мышкой&lt;/h2&gt;…&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/icedracon/ECHO" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>programming</category>
      <category>security</category>
      <category>architecture</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>I built a full Active Directory pentest + audit tool in Rust — on a protocol stack I wrote from scratch (no impacket)</title>
      <dc:creator>Puma</dc:creator>
      <pubDate>Wed, 29 Jul 2026 15:52:49 +0000</pubDate>
      <link>https://dev.to/pumadracon/i-built-a-full-active-directory-pentest-audit-tool-in-rust-on-a-protocol-stack-i-wrote-from-fl5</link>
      <guid>https://dev.to/pumadracon/i-built-a-full-active-directory-pentest-audit-tool-in-rust-on-a-protocol-stack-i-wrote-from-fl5</guid>
      <description>&lt;p&gt;A single Rust binary that audits an Active Directory domain like PingCastle — and, for authorized red teams, proves each finding by actually running the attack. On a DCE/RPC · NTLM · SMB2 · Kerberos stack I wrote from scratch, because there's no impacket for Rust.&lt;/p&gt;

&lt;p&gt;The itch&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuqtdt20oo17trnsaxds1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuqtdt20oo17trnsaxds1.gif" alt=" " width="757" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Two tools own Active Directory security work, and neither is Rust. PingCastle audits beautifully but is Windows/.NET and read-only. impacket has the offensive protocol stack but is Python and offense-only. I wanted one Linux-native binary that does both — and I wanted to actually understand Kerberos/DCE-RPC/NTLM instead of importing someone else's library. So I wrote the stack from the wire up.&lt;/p&gt;

&lt;p&gt;The result is ADhammer.&lt;/p&gt;

&lt;p&gt;Show Image&lt;/p&gt;

&lt;p&gt;What it does — audit, then prove it&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Audit. Collect the domain over LDAP as a low-privileged user (via the SD_FLAGS control), build a BloodHound-style control-path graph in-process, and run 33 checks across the four PingCastle categories — including 10 of the 16 AD CS ESC classes, ADIDNS exposure, and SYSVOL/GPP. Every finding is scored, MITRE ATT&amp;amp;CK-tagged, and exportable to BloodHound.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Validate. A report shouldn't say a path might be exploitable. ADhammer implements the matching tradecraft — Kerberos roasting, DCSync, golden/silver tickets, pass-the-ticket, LAPS/gMSA read, WinRM &amp;amp; SVCCTL exec, ADCS enrollment — each live-validated against a fully-patched Windows Server 2025 DC.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The part I'm proud of: the protocol stack is from scratch&lt;br&gt;
No impacket. No .NET. The whole DCE/RPC · NTLM · SMB2 · Kerberos layer is hand-rolled from the Microsoft open specs — NDR marshaling, NTLMv2 sign+seal, the MS-PAC PAC marshaler, PKINIT — each primitive unit-tested against spec vectors. It's published as four reusable MIT crates that didn't exist in Rust before:&lt;/p&gt;

&lt;p&gt;windows-sddl — no-FFI SECURITY_DESCRIPTOR/DACL/ACE parser + Sid/Guid&lt;br&gt;
ntlmssp — NTLMv2 + RC4 sign+seal (RPC packet privacy)&lt;br&gt;
smb2-client — async SMB2 (negotiate → SPNEGO → pipes, signing)&lt;br&gt;
dcerpc — NDR · PDUs · EPM · SAMR · LSAT · DRSUAPI · SVCCTL · ICPR · …&lt;br&gt;
Interactive, so you don't juggle 20 flags&lt;br&gt;
Run adhammer with no arguments: a wizard asks user → password (or NT hash) → domain → DC, then walks every action with prompts. For golden/silver/pass-the-ticket it auto-fetches the krbtgt/service AES256 key (via DCSync) and the domain SID (via LSAT) from your session — no pasting keys or SIDs.&lt;/p&gt;

&lt;p&gt;Show Image&lt;/p&gt;

&lt;p&gt;The money demo: a golden ticket a patched Server 2025 accepts&lt;br&gt;
"Golden tickets are dead on patched DCs." Not quite — a correctly forged one is still accepted. What changed is the PAC bar: KB5020805 makes PAC_REQUESTOR / PAC_ATTRIBUTES mandatory, and most from-scratch forgers omit them. ADhammer builds the PAC from scratch with them, signs it with the AES256 checksum, and a fully-patched 2025 KDC accepts the forged Domain-Admin TGT → pass-the-ticket over SMB → NT AUTHORITY\SYSTEM, run from Kali.&lt;/p&gt;

&lt;p&gt;I wrote up exactly how the 2025 PAC enforcement works (and the RC4-golden-accepted-but-service-ticket-refused asymmetry) here → Forging a golden ticket for a patched Server 2025 KDC.&lt;/p&gt;

&lt;p&gt;Try it&lt;br&gt;
cargo install adhammer&lt;/p&gt;

&lt;h1&gt;
  
  
  audit a domain (low-priv creds are enough) + export a BloodHound graph
&lt;/h1&gt;

&lt;p&gt;adhammer scan --url ldaps://dc:636 --user 'CORP\svc' --password … --insecure --bloodhound out.zip&lt;br&gt;
Or grab the prebuilt binary from the v1.1.0 release. Rust 1.80+, runs from Kali/Linux or Windows.&lt;/p&gt;

&lt;p&gt;Authorized use only&lt;br&gt;
The validation modules are real offensive techniques (DCSync, ticket forging, relay, RCE). ADhammer is for systems you own or are explicitly authorized to test — authorized engagements, red-team validation, and education. MIT-licensed; built as security research at ITMO, sibling to a Windows kernel 0-day I disclosed to Microsoft MSRC.&lt;/p&gt;

&lt;p&gt;⭐ Repo: &lt;a href="https://github.com/icedracon/adhammer" rel="noopener noreferrer"&gt;https://github.com/icedracon/adhammer&lt;/a&gt; — feedback and issues welcome.&lt;/p&gt;

</description>
      <category>security</category>
      <category>career</category>
      <category>news</category>
      <category>cloud</category>
    </item>
  </channel>
</rss>
