Integrate reviewed WMI recovery with combined dev auditing batch

This commit is contained in:
Shirofune-Security committed 2026-09-22 15:06:51 +09:00
commit bfa286bf7d
46 files changed
+2449 -47

No files matched your search

+14
View File
@@ -5,10 +5,12 @@ on:
paths:
- 'WELA.ps1'
- 'scripts/AuditRecovery.ps1'
- 'scripts/NamedRegistryRecovery*'
- 'scripts/ControlApplicability.ps1'
- 'scripts/Configuration.ps1'
- 'modules/AuditProfiles.psm1'
- 'tests/AuditRecovery*'
- 'tests/NamedRegistryRecovery*'
- '.github/workflows/audit-recovery.yml'
pull_request:
workflow_dispatch:
@@ -35,3 +37,15 @@ jobs:
- name: Native recovery from PowerShell 7 with restoration
shell: pwsh
run: ./tests/AuditRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite
- name: Named logging registry recovery regressions in Windows PowerShell 5.1
shell: powershell
run: ./tests/NamedRegistryRecovery.Tests.ps1
- name: Native named logging registry recovery and safety restoration in Windows PowerShell 5.1
shell: powershell
run: ./tests/NamedRegistryRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite
- name: Named logging registry recovery regressions in PowerShell 7
shell: pwsh
run: ./tests/NamedRegistryRecovery.Tests.ps1
- name: Native named logging registry recovery and safety restoration in PowerShell 7
shell: pwsh
run: ./tests/NamedRegistryRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite
+34
View File
@@ -0,0 +1,34 @@
name: Native DNS Client completion probe
on:
push:
branches: ['**']
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
dns-client-probe:
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-2025]
engine: [powershell, pwsh]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Fixed query validators and public CLI guards in Windows PowerShell5.1
if: matrix.engine == 'powershell'
shell: powershell
run: |
./tests/DnsClientProbe.Tests.ps1
./tests/DnsClientProbe.Cli.Tests.ps1
- name: Fixed query validators and public CLI guards in PowerShell7
if: matrix.engine == 'pwsh'
shell: pwsh
run: |
./tests/DnsClientProbe.Tests.ps1
./tests/DnsClientProbe.Cli.Tests.ps1
- name: Owned authoritative loopback DNS and real native3008
shell: powershell
run: ./tests/DnsClientProbe.Windows.Tests.ps1 -AllowDisposableDns -TestEngine '${{ matrix.engine }}'
+6 -3
View File
@@ -5,11 +5,14 @@ on:
paths:
- 'WELA.ps1'
- 'scripts/EvtxRecovery.ps1'
- 'scripts/ChannelRead.ps1'
- 'scripts/ChannelReadNative.cs'
- 'scripts/WefArrival.ps1'
- 'scripts/ControlApplicability.ps1'
- 'scripts/Configuration.ps1'
- 'modules/AuditProfiles.psm1'
- 'tests/EvtxRecovery*'
- 'tests/fixtures/EvtxRecovery*'
- 'tests/fixtures/Evtx*'
- 'scripts/NativeValidation.ps1'
- 'scripts/CustomAuditProfiles.ps1'
- '.github/workflows/evtx-recovery.yml'
@@ -31,10 +34,10 @@ jobs:
run: ./tests/EvtxRecovery.Tests.ps1
- name: Native EVTX export and recovery with policy restoration
shell: powershell
run: ./tests/EvtxRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite
run: ./tests/EvtxRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite -AllowDisposableAccount
- name: Synthetic rejection regressions in PowerShell 7
shell: pwsh
run: ./tests/EvtxRecovery.Tests.ps1
- name: Native EVTX recovery from PowerShell 7 with restoration
shell: pwsh
run: ./tests/EvtxRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite
run: ./tests/EvtxRecovery.Windows.Tests.ps1 -AllowDisposablePolicyWrite -AllowDisposableAccount
+40
View File
@@ -0,0 +1,40 @@
name: Native leaf-file SACL recovery
on:
push:
branches: ['**']
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
file-sacl-recovery:
timeout-minutes: 35
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-2025]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Strict inputs and CLI on Windows PowerShell 5.1
shell: powershell
run: |
./tests/FileSaclRecovery.Tests.ps1
./tests/FileSaclRecovery.Cli.Tests.ps1
- name: Native descriptor guards on Windows PowerShell 5.1
shell: powershell
run: ./tests/FileSaclRecovery.Descriptor.Tests.ps1
- name: Public owned-file addition and recovery on Windows PowerShell 5.1
shell: powershell
run: ./tests/FileSaclRecovery.Windows.Tests.ps1 -AllowDisposableSaclWrite
- name: Strict inputs and CLI on PowerShell 7
shell: pwsh
run: |
./tests/FileSaclRecovery.Tests.ps1
./tests/FileSaclRecovery.Cli.Tests.ps1
- name: Native descriptor guards on PowerShell 7
shell: pwsh
run: ./tests/FileSaclRecovery.Descriptor.Tests.ps1
- name: Public owned-file addition and recovery on PowerShell 7
shell: pwsh
run: ./tests/FileSaclRecovery.Windows.Tests.ps1 -AllowDisposableSaclWrite
+1 -1
View File
@@ -41,7 +41,7 @@ jobs:
Copy-Item -Recurse -Path ./scripts -Destination release-binaries/
Copy-Item -Recurse -Path ./modules -Destination release-binaries/
New-Item -ItemType Directory -Path release-binaries/docs -Force | Out-Null
Copy-Item -Path ./docs/gpo-audit-packages.md, ./docs/gpo-package-deployment.md, ./docs/gpo-creation.md, ./docs/wmi-probe.md, ./docs/firewall-logging.md, ./docs/firewall-logging-recovery.md, ./docs/ipsec-prerequisites.md, ./docs/wec-state.md, ./docs/wec-update.md, ./docs/wec-runtime.md, ./docs/wef-deployment.md, ./docs/native-channel-access.md, ./docs/eventlog-settings.md, ./docs/channel-read.md, ./docs/native-rule-eligibility.md, ./docs/native-validation.md, ./docs/wef-arrival.md, ./docs/smb-runtime-activation.md, ./docs/smb-auditing.md, ./docs/wec-ingress.md, ./docs/capi2-probe.md, ./docs/powershell-transcription.md, ./docs/transcription-recovery.md, ./docs/eventlog-recovery.md, ./docs/failed-logon-probe.md, ./docs/wec-listener.md, ./docs/file-access-probe.md, ./docs/applocker-script-probe.md, ./docs/applocker-probe.md, ./docs/selected-sacl-configuration.md, ./docs/registry-sacl-recovery.md, ./docs/targeted-sacl-planning.md, ./docs/native-registry-sacl-validation.md, ./docs/wec-authorization.md, ./docs/channel-recovery.md, ./docs/outgoing-ntlm.md, ./docs/wec-collector-observation.md, ./docs/native-provider-packs.md, ./docs/native-provider-acceptance.md, ./docs/audit-catalog-mappings.md, ./docs/native-token-right-attribution.md, ./docs/audit-notifications.md, ./docs/native-onesettings-acceptance.md, ./docs/ntlm-auditing.md, ./docs/wef-query.md, ./docs/native-filesystem-sacl-validation.md, ./docs/wmi-sacl-recovery.md -Destination release-binaries/docs/
Copy-Item -Path ./docs/gpo-audit-packages.md, ./docs/gpo-package-deployment.md, ./docs/gpo-creation.md, ./docs/wmi-probe.md, ./docs/firewall-logging.md, ./docs/firewall-logging-recovery.md, ./docs/ipsec-prerequisites.md, ./docs/wec-state.md, ./docs/wec-update.md, ./docs/wec-runtime.md, ./docs/wef-deployment.md, ./docs/native-channel-access.md, ./docs/eventlog-settings.md, ./docs/channel-read.md, ./docs/native-rule-eligibility.md, ./docs/native-validation.md, ./docs/wef-arrival.md, ./docs/smb-runtime-activation.md, ./docs/smb-auditing.md, ./docs/wec-ingress.md, ./docs/capi2-probe.md, ./docs/powershell-transcription.md, ./docs/transcription-recovery.md, ./docs/eventlog-recovery.md, ./docs/failed-logon-probe.md, ./docs/wec-listener.md, ./docs/file-access-probe.md, ./docs/applocker-script-probe.md, ./docs/applocker-probe.md, ./docs/selected-sacl-configuration.md, ./docs/registry-sacl-recovery.md, ./docs/targeted-sacl-planning.md, ./docs/native-registry-sacl-validation.md, ./docs/wec-authorization.md, ./docs/channel-recovery.md, ./docs/outgoing-ntlm.md, ./docs/wec-collector-observation.md, ./docs/native-provider-packs.md, ./docs/native-provider-acceptance.md, ./docs/audit-catalog-mappings.md, ./docs/native-token-right-attribution.md, ./docs/audit-notifications.md, ./docs/native-onesettings-acceptance.md, ./docs/ntlm-auditing.md, ./docs/wef-query.md, ./docs/native-filesystem-sacl-validation.md, ./docs/wmi-sacl-recovery.md, ./docs/transcript-probe.md, ./docs/file-sacl-recovery.md, ./docs/dns-client-probe.md -Destination release-binaries/docs/
- name: Set Artifact Name
if: contains(matrix.info.os, 'windows') == true
+47
View File
@@ -0,0 +1,47 @@
name: Native automatic transcription probe
on:
push:
paths: ['WELA.ps1', 'scripts/TranscriptProbe*', 'scripts/PowerShellTranscription.ps1', 'scripts/WmiProbe*', 'scripts/ChannelRead.ps1', 'scripts/WefArrival.ps1', 'tests/TranscriptProbe*', '.github/workflows/transcript-probe.yml']
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
actual-writer:
strategy:
fail-fast: false
matrix:
os: [windows-2022, windows-2025]
engine: [powershell, pwsh]
runs-on: ${{ matrix.os }}
timeout-minutes: 15
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- name: Correlation and refusal fixtures (Windows PowerShell5.1)
if: matrix.engine == 'powershell'
shell: powershell
run: ./tests/TranscriptProbe.Tests.ps1
- name: Actual standard writer, denial and restoration (Windows PowerShell5.1 host)
if: matrix.engine == 'powershell'
shell: powershell
run: ./tests/TranscriptProbe.Windows.Tests.ps1 -AllowDisposableWriter -TestEngine powershell
- name: Correlation and refusal fixtures (PowerShell7)
if: matrix.engine == 'pwsh'
shell: pwsh
run: ./tests/TranscriptProbe.Tests.ps1
- name: Actual standard writer, denial and restoration (PowerShell7 host)
if: matrix.engine == 'pwsh'
shell: pwsh
run: ./tests/TranscriptProbe.Windows.Tests.ps1 -AllowDisposableWriter -TestEngine pwsh
- name: Retain native probe and cleanup evidence
if: always()
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
with:
name: transcript-probe-${{ matrix.os }}-${{ matrix.engine }}
path: |
${{ runner.temp }}/wela-transcript-probe-*/acceptance.json
${{ runner.temp }}/wela-transcript-probe-*/policy-before.json
${{ runner.temp }}/wela-transcript-probe-*/writer/
${{ runner.temp }}/wela-transcript-probe-*/transcripts/
if-no-files-found: warn
retention-days: 7