Sign of the Times - PowerShell and Authenticode - Jordan Borean
The speaker describes the basic structure of an Authenticode signature and shows that it answers three questions: what was signed, who signed it, and when it was signed. The transcript walks through the signature block, how the hash is calculated, and how changes to the script content cause a hash mismatch.
Several examples show what does and does not break a signature. Changing a comment, a line ending, or the file content invalidates the signature, while renaming the file, changing the modification time, or adding the Mark of the Web does not. The speaker also notes that adding extra whitespace to the end of the signature block can make the file appear unsigned.
The lecture then moves to certificate requirements and trust. It explains code-signing EKU, certificate chains, root trust, and the difference between a valid signature and a trusted publisher in PowerShell. It also compares self-signed certificates, internal PKI, public certificate authorities, and Azure Artifact Signing.
The final section covers PowerShell execution policy and WDAC. The speaker shows how signed code can still fail if the publisher is not trusted, how trusted publishers can be imported, and how WDAC can enforce constrained language mode. The talk ends with a demonstration of signing in a GitHub Actions workflow using Azure and timestamping, followed by a comparison of signatures with and without timestamps after certificate expiry.
Chapters:
00:00:00 Sign of the Times PowerShell and Authenticode Jordan Borean
00:00:32 Welcome and Sponsor Thanks
00:01:37 Authenticode Basics
00:05:03 Decoding Signatures
00:07:02 What Signatures Prove
00:11:18 Breakage Scenarios
00:16:10 Certificate Requirements
00:18:40 Certificate Sources
00:23:20 Trust and Execution Policy
00:26:49 WDAC and Language Modes
00:31:32 Azure Artifact Signing
00:34:41 CI Signing Demo
00:36:36 Timestamp ExpiryShow More
Sign of the Times - PowerShell and Authenticode - Jordan Borean
This lecture explains PowerShell Authenticode signing and how it is ...
Pester 6 is finally here - Jakub Jareš
This lecture presents Pester 6, the latest major version of the ...
From Script to Action - Maik van der Gaag
In this lecture, the speaker discusses how organizations can move from ...
Automate build testing & deployment of your Pwsh modules cross platform with Azure DevOps - M. Wragg
In this lecture, the speaker discusses build pipelines for PowerShell ...
I've built what was missing in PSRemoting - Arnaud Charles
In this lecture, Arnaud Charles presents two PowerShell modules he ...
Power in the Pipeline: Enhance Power Automate deployments - Leo Visser
In this lecture, the speaker introduces a PowerShell-based module for ...