Skip to content

Releases: V33RU/tcpk

v2.11.0

Choose a tag to compare

@V33RU V33RU released this 22 Sep 20:53
v2.11.0
7bdeb16
  • Terminal output rewritten: one line per check instead of four, with a severity tally
  • Findings print only populated fields, and Show-TcpkFinding colours them by severity
  • Evidence is built from what actually matched, not from the rule's candidate list
  • Third-party assemblies are no longer scanned as if the vendor wrote them
  • SQL concat tracked through a local to the command object: was 1 of 5 sinks, now 5 of 5
  • Invoke-TcpkSecretRecovery is finally called by the audit, and can produce a CRITICAL

What's Changed

Fixed

  • A failed check never advanced the desktop GUI progress bar. The pattern expected FAILED (; the emitter writes FAILED after 3s (
  • Quick-profile skips were not counted towards progress either
  • 51 rules across callsites., deser., xxe. and webview2. shared one branch whose guidance was written for the TLS case, so a SQL injection finding advised checking certificate validation
  • An aborted run left no run.jsonl at all, because the log was saved once at the very end with no try/finally

Added

  • Show-TcpkFinding, Test-TcpkCredentialLiterals, Test-TcpkComOrphanedClsid
  • Guard tests for the console contract, the provenance filter, and finding explanations

Known issue

On a test scan, four of seven HIGH findings described the scan host rather than the target, including the operator's own credential store. The scoping fix is not in this release.

Full Changelog: v2.10.0...v2.11.0

TCPK 2.10.0

Choose a tag to compare

@V33RU V33RU released this 14 Sep 16:12
v2.10.0
3cbc5e7

Twenty new cmdlets, 280 to 326, plus four defect fixes. Highlights below; the full
changelog entry is in CHANGELOG.md.

Sink neutralizer analysis

The command-injection path could prove a tainted value reaches a sink, but not whether
anything guarded it, so a sink protected by a correct allow-list was reported identically
to an unguarded one. Get-TcpkIlNeutralizer now answers that.

Only two shapes count as neutralization: ProcessStartInfo.ArgumentList, where the runtime
escapes each element, and an anchored regex whose result actually branches around the sink.
Deny-lists, unanchored patterns, quoting by concatenation and URL encoders are recorded as
weak controls without demoting anything, because a wrong "neutralized" verdict caps a real
injection at INFO, which is worse than over-reporting. Neutralization stays intraprocedural
while taint remains interprocedural, so a guard in a helper method is missed rather than
assumed, which errs toward reporting.

Crash grading

Invoke-TcpkCrashTriage reads the fault code, access type and faulting address from the
minidump exception record. An exit code carries none of that: every access violation is
0xC0000005 whether the code read from 0x18 or wrote to an address an attacker picked.
A dereference below 64 KB now grades LOW, since that range is reserved and can never be
mapped; a write violation grades HIGH. Paired with Invoke-TcpkCrashMinimize, which
reduces a crash to a minimal trigger after first checking it reproduces at all.

New detection

  • Windows Hello used as a boolean gate rather than a key release, which anything that can
    flip a return value walks straight past
  • Certificate validation disabled through the native stacks (WinHttpSetOption,
    InternetSetOption) and shipped scripts, none of which leave a managed callback behind
  • Unsafe IL opcodes and CLR CorFlags, read from the shipping assembly rather than from
    source spellings that do not survive compilation
  • The real P/Invoke surface from the ImplMap table, which never reaches the PE import table
  • Whether a deserialization sink has a SerializationBinder at all
  • Fileless managed assemblies carved out of live process memory and proven by parsing them
  • Named-pipe message tampering, to test whether an IPC server authorizes the request or
    trusts the caller
  • Log retention, time source and output structure; assembly binding redirects and CAS
    downgrades; client-side COM interop; archive expansion ratios; zone marking on downloaded
    content; MSI launch conditions; password and lockout policy

Fixes

  • A precondition default silently capped every CRITICAL sink finding at HIGH. The existing
    test asserting otherwise was failing.
  • Crash findings asserted CWE-787 (out-of-bounds write) on every fault, including
    divide-by-zero and near-null reads. Reduced to CWE-20.
  • The fuzzer knew 3 of 8 fault codes, so heap corruption and stack overflow were recorded
    as clean exits.
  • MSIX capability checks read the XML tag name instead of the Name attribute, so the
    lookup matched nothing.

Precision work as well: a managed-only gate removed 46 false positives on one tree, and
PDB path leaks now aggregate by directory instead of emitting 771 findings on a single
target.

Versioning

Numbered 2.10.0 rather than 2.8.0. The changelog already carried finished v2.8.0 and v2.9.0
sections that were written but never tagged; reusing 2.8.0 would have pointed that tag at a
326-cmdlet tree whose notes describe 254.

v2.7.1

Choose a tag to compare

@V33RU V33RU released this 27 Jul 09:38

Scoping and GUI quality-of-life patch.

Target-scoping fixes -- five scanners that reported machine-wide state unrelated to the audit target now correctly scope findings to the target directory:

  • Test-TcpkWritablePath -- only reports PATH directories related to the target (was: every writable PATH entry system-wide).
  • Test-TcpkAvExclusions -- no longer reports every non-matching Defender exclusion as INFO.
  • Test-TcpkWerExposure -- removed default WER path scan and global WER policy finding; only per-app WER settings for the target remain.
  • Test-TcpkTokenCaches -- removed hardcoded Azure/MSAL path scan; only the target directory is scanned.
  • Test-TcpkWerPolicy -- removed global WER policy findings; only per-app WER policy for the target exe remains.

GUI live findings feed -- findings now stream into the Findings table in real-time during the audit:

  • TCPKFND records emitted as FND lines so findings appear live in the table (was: only visible in the log pane).
  • ListView cleared before JSON reload to prevent doubling with CVSS-enriched findings.

v2.7.0

Choose a tag to compare

@V33RU V33RU released this 26 Jul 21:30

v2.7.0 -- 19 new cmdlets (184 -> 203)

The biggest detection release yet. Full agentic workbench documentation with screenshots of all 13 tabs.

New static analysis scanners

  • Test-TcpkGrpcSurface -- gRPC/Protobuf service enumeration (T1046)
  • Test-TcpkWv2Sideload -- WebView2 DLL sideloading (T1574.002)
  • Test-TcpkAmsiSurface -- AMSI evasion surface (T1562.001)
  • Test-TcpkHollowingApis -- process hollowing / DLL / APC injection APIs (T1055.012)
  • Test-TcpkAppDomainHijack -- AppDomainManager injection surface (T1574)
  • Test-TcpkAotBinary -- .NET AOT detection gate for IL pipeline
  • Test-TcpkClickOnce -- ClickOnce deployment hijack scanner
  • Test-TcpkMsixPsf -- MSIX PSF script extraction + analysis
  • Test-TcpkPhantomDlls -- phantom DLL planting surface
  • Test-TcpkDiagConfig -- diagnostic config exposure
  • Test-TcpkDllSideload -- DLL sideload candidate scanner

New OS / runtime scanners

  • Test-TcpkComHijack -- COM per-user CLSID hijack
  • Test-TcpkWerExposure -- WER crash dump exposure
  • Test-TcpkWritablePath -- writable PATH directory abuse
  • Test-TcpkSharedMemoryDacl -- shared memory / MMF DACL audit
  • Test-TcpkWindowMessages -- window message attack surface
  • Test-TcpkClipboardSecrets -- clipboard secret monitoring

New exploit / PoC tooling

  • New-TcpkIlPatch -- IL binary patching via Mono.Cecil (gated)
  • New-TcpkRegistryHijackTemplate -- IFEO / registry persistence PoC (gated)

Enhanced

  • electron-updater signature bypass + Squirrel detection
  • WDAC bypass via signed Electron resource directories
  • NuGet package vulnerability scanning
  • Severity re-baseline (10 rules)
  • Hex workbench: PE overlay, entropy heatmap, XOR toolkit, binary diff

Agentic workbench

  • Hash-based tab routing (#tab=N)
  • Full documentation with screenshots of all 13 tabs (docs/AGENTIC-WORKBENCH.md)

Testing

5 new test files. 754 tests discovered, 0 new failures.

TCPK v2.6.1

Choose a tag to compare

@V33RU V33RU released this 24 Jul 07:42

TCPK v2.6.1 -- an Asar-tab supply-chain audit plus a GUI alignment fix. Cmdlet count unchanged (184; new helpers are private).

Asar tab: npm supply-chain audit

  • New npm audit action on the Asar tab. Point it at an Electron app.asar (or the install folder) and it inventories every bundled npm package, matches them for known CVEs against OSV / GHSA (reusing the existing OSV engine), and -- the signal a plain CVE feed misses -- flags packages the npm registry marks deprecated / unmaintained. Results print as an npm-audit-style report (severity-sorted vulnerabilities with fix versions, then deprecated packages) into the source pane. Read-only; fails closed offline.
  • Verified end-to-end against a real 205-package Electron app.

Fixes

  • Asar "filter files" alignment: the filter textbox was anchored Left+Right inside the fixed-width left panel and stretched past it into the source viewer; it is now a contained fixed width.
  • Split-Path -LiteralPath ... -Parent ambiguous parameter set on PowerShell 5.1 replaced with [IO.Path]::GetDirectoryName.
  • Report output stays pure ASCII even when a registry / advisory string carries emoji.

Gate: PowerShell 5.1 full suite = 650 pass / 1 skip / 6 fail (all 6 pre-existing Xxe.Tests.ps1 Windows fixture-compile failures, unchanged from v2.6.0). See CHANGELOG.md for detail.

TCPK v2.6.0 -- detection uplift + accuracy + UI + MCP

Choose a tag to compare

@V33RU V33RU released this 24 Jul 05:19

Finalises the 2.6.0 line (supersedes v2.6.0-rc1). Cmdlet count unchanged (184; new helpers are private). See CHANGELOG.md for the full detail.

Accuracy (the false-positive pass)

  • Severity-anchored CVSS v4.0 so the computed score matches the severity badge instead of inflating it; CVE/dependency findings defer to the advisory score.
  • Electron-aware provenance gate (Test-TcpkIsFirstParty) wired into the noisy scanners, so a secret/import/endpoint matched inside a bundled file (Electron main exe, Chromium DLL, NSIS uninstaller, LICENSES blob) is no longer attributed to first-party code -- the single largest FP source on Electron apps.
  • Secret-scan guards for natural-language values and the user:pass@host doc placeholder; loopback endpoints demoted HIGH -> INFO.

Detection

Crypto-constant / TypeNameHandling / cross-assembly-taint IL verdicts; token-privilege & integrity-level checks; CVE native-banner scan; intercept response-body mining + tamper differential; HKCR URI-activation scoping; Windows TLS hooks (schannel / winhttp / wininet); a gated launch-and-observe harness; credential-store decryption (DPAPI + BCrypt-GCM); ATT&CK/TASVS refresh + three new exploit chains.

UI

  • Desktop GUI: a Dashboard landing tab (severity tiles, max CVSS, an assurance donut of proven vs leads vs likely-FP, top-findings table) and a DLL Decompiler tab (Mono.Cecil type/method browser with IL, optional ilspycmd C#); refreshed teal palette.
  • Agentic workbench: the matching Dashboard.
  • Invoke-TcpkGuiUnlock now also detects and unlocks read-only (ES_READONLY) fields.

MCP

  • New tcpk_list_modules / tcpk_decompile -- a module's sink-bearing methods and per-instruction IL with sink flags (the evidence behind Confirmed (IL)).
  • tcpk_get_findings enriched through the report intel model: computed CVSS, CWE, ATT&CK, TASVS, how-to-verify.
  • Read-only / destructive / network tool annotations; first MCP test coverage.

Release gate: Windows PowerShell 5.1 suite = 643 pass / 1 skip / 6 pre-existing XXE-fixture fails.

v2.6.0-rc1 -- detection uplift

Pre-release

Choose a tag to compare

@V33RU V33RU released this 21 Jul 12:05

Detection uplift release candidate -- a recall + IL-proof pass on the detection engine. Cmdlet count unchanged (184; the new helpers are private).

Highlights

  • Secrets: +17 modern provider rules (OpenAI, Anthropic, GitLab, Google OAuth, Slack webhook + app, SendGrid, npm, PyPI, Vault, DigitalOcean, Databricks, Postman, Shopify, credentials-in-URL, HTTP Basic header) -- loss-free, lifting recall across the static / live-memory / env scans.
  • IL prover reach: base System.Data.Common.DbCommand / IDbCommand / DbDataAdapter (Dapper, EF-raw, DbProviderFactory) + HttpMessageInvoker sinks; reflection.dynamic-load routed through the verifier so a tainted Assembly.LoadFrom reaches Confirmed (IL); taint sources broadened to desktop input channels (file dialogs, drag-drop, clipboard, deserialized results).
  • Electron insecure-by-default: an old runtime with an omitted nodeIntegration / contextIsolation / sandbox key inherits the insecure default.
  • CVE triage: CISA KEV enrichment flags CVE matches on the actively-exploited list.
  • Named-pipe DACL In / Out / Duplex probing (reads write-accepting servers); Frida hook-mode JSON REST-body secret scanning.

Tests: new DetectionUplift.Tests.ps1 (17). Full suite 526 pass / 1 skip (the 6 XXE failures are a pre-existing Windows fixture-compile quirk, green on Linux CI).

Release candidate -- see CHANGELOG.md for the full detail.

TCPK v2.4.4

Choose a tag to compare

@V33RU V33RU released this 15 Jul 07:29

Stable release of the 2.4.x line. It consolidates the interception + exploitation work in the v2.4.1-dev through v2.4.4-dev entries below, and adds a review pass on the LLM and MCP subsystems:

  • SECURITY: Data/llm-config.json (which stores a cloud API key in plaintext once the operator configures one) is no longer tracked in git. The .gitignore rule for it was already present, but the file had been committed, so a tracked file bypasses the ignore and a key-write could have been staged; it is now untracked (the committed copy held an empty key, so nothing leaked). The module falls back to a built-in default when the file is absent, so a fresh clone is unaffected.
  • MCP server: serverInfo.version is now read live from the module (was a hardcoded, stale 2.1.0); the tcpk_cve_match tool description now states LIVE online CVE (OSV + NVD, network required) instead of the removed offline catalog; and the tcpk_audit summary points at report.md (was a non-existent findings.md).
  • LLM: the default Claude model is refreshed to claude-sonnet-5 (the previous id was stale); the model field is still free-text so any provider model can be typed.
  • Desktop GUI: Start-TCPKGui.ps1 gains an Interception / Live Exploit tab surfacing the active 2.4.x cmdlets that were previously CLI-only (Invoke-TcpkIntercept proxy/hook/tamper, Invoke-TcpkHookBypass, Get-TcpkStoredCredentials, Test-TcpkCredentialLiveness), each behind the exploit gate.
  • The standalone web control panel (Start-TcpkWebUi / TCPK-WebUI.bat) was removed. The agentic workbench (Start-TcpkAgentic / TCPK-Agentic.bat) provides the loopback browser surface and reuses the same web API engine, so there is one source of truth.
  • Windows-verify fixes found while testing the active layer on Windows: Invoke-TcpkIntercept no longer fails to launch a target with no extra args; the http credential-liveness probe loads System.Net.Http on Windows PowerShell 5.1; and the verify-hint helper no longer throws when a finding's file field is a .NET type name rather than a path.

Verified on Linux: the MCP server answers a real JSON-RPC handshake (initialize / tools/list / ping) and a live tcpk_info tool call; the module imports and the LLM backend resolves (ollama, cloud-gated). Windows-runtime paths were verified on Windows earlier in this line.

TCPK v2.4.4-rc1 (release candidate)

Pre-release

Choose a tag to compare

@V33RU V33RU released this 14 Jul 18:03
v2.4.4-rc1
feff1f0

Release candidate for the 2.4.x line: the full thick-client pentest layer, now feature-complete and under verification.

Pentest capabilities (all gated behind Enable-TcpkExploit, authorized/lab targets only):

  • Interception: Invoke-TcpkIntercept -Mode Proxy (mitmproxy) / Hook (Frida, reads plaintext at the API) / Tamper (rewrite traffic in flight), plus a workbench Interception tab.
  • Exploitation: Invoke-TcpkSecretRecovery (decrypt a shipped key+IV+ciphertext), Test-TcpkCredentialLiveness (prove a credential authenticates), Invoke-TcpkHookBypass (force a client-side check's return via Frida), Get-TcpkStoredCredentials (Credential Manager).

This RC also lands a LLM + MCP code-review pass:

  • Security: the LLM API-key config file is no longer git-tracked.
  • MCP server: live module version + corrected online-CVE tool description + report.md path.
  • LLM: refreshed default Claude model.

Verified on Linux (MCP handshake + tool call, module import, LLM backend resolve) and on Windows earlier (the 3 Windows-only fixes). This is a candidate, not the final release. Authorized testing only.

TCPK v2.3.0

Choose a tag to compare

@V33RU V33RU released this 10 Jul 20:39
v2.3.0
e1091ac

First step from static auditor toward pentest tooling, plus a stronger autonomous agent.

Exploitation (new)

  • Invoke-TcpkSecretRecovery and a new Confirmed (exploit) evidence tier. When an app ships a symmetric key + IV + ciphertext together, TCPK decrypts with the shipped key/IV (AES/TripleDES/DES x CBC/ECB x PKCS7) and recovers the plaintext secret, collapsing three Inferred findings into one demonstrated recovery (exploit.secret-recovered, CRITICAL, CWE-321/798/312). Lab-safe: reads local artifacts, launches nothing, no network. Masked unless -Reveal.
  • Verified end to end on the DVTA testbed: recovers the AES-256-CBC sa password from DVTA.exe.config.

Autonomous agent

  • Read-only call-graph + taint-trace tools: get_taint_trace (the prover's source->sink verdict per method), get_callers, get_callees. submit_finding now records the taint verdict.
  • A deterministic prover verification gate partitions the agent's findings into confirmed / review / refuted.

Portability

  • The managed-analysis test suite runs under PowerShell on Linux (cross-platform temp dir).

Full details in CHANGELOG.md. Authorized testing only.