Analysis
- max time kernel
149s - max time network
150s - platform
windows10-2004_x64 - resource
win10v2004-20260513-en - resource tags
arch:x64arch:x86image:win10v2004-20260513-enlocale:en-usos:windows10-2004-x64systemwindows - submitted
09/07/2026, 02:25
Static task
static1
1 signatures
Behavioral task
behavioral1
Sample
2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe
Resource
win10v2004-20260513-en
7 signatures
150 seconds
Behavioral task
behavioral2
Sample
2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe
Resource
win11ltsc2024-20260706-en
18 signatures
150 seconds
General
- Target 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe
- Size 7.3MB
- Sample260709-cws1macz2s
- SHA256 fe679e131aae76becde6a4405e94202de9f5b12ec4bff736abaf0eb8c1624e44
- MD5 1761c0f5eae9dd20b70ec469a384fb9e
- SHA1 29667d0ac94317b465b67d85210e5e92d805c17d
- SHA512 4cee607a3db2f021242b431d918faae35dda9eb66ec4c42d54e10b88c1f73a04fe8e5855bd6bbe843e3554f75d3521209296442118aec9ab9da4fb01e8a722a6
- SSDEEP 98304:046bkzSO8XK+uV60H+PLJS++2NAT3H+Tr0pw:5vSIC+26Xjp
- TLSH T14F762911BA9B99ACD19AC87483064A735E2170DB0B26B9FF41C842393FADBF05F2D754
- MD5 SHA1 SHA512 SSDEEP TLSH
Score
8/10
Malware Config
Signatures
- Drops file in Drivers directory 1 IoCs
description ioc Process File opened for modification C:\Windows\System32\drivers\etc\hosts 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe - Command and Scripting Interpreter: PowerShell 1 TTPs 2 IoCs
Run Powershell to get system information.
pid Process 3300 powershell.exe 1532 powershell.exe - Hide Artifacts: Ignore Process Interrupts 1 TTPs 2 IoCs
Command interpreters often include specific commands/flags that ignore errors and other hangups.
pid Process 3300 powershell.exe 1532 powershell.exe - Gathers network information 2 TTPs 1 IoCs
Uses commandline utility to view network configuration.
pid Process 556 ipconfig.exe - Suspicious behavior: EnumeratesProcesses 64 IoCs
pid Process 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe - Suspicious use of AdjustPrivilegeToken 64 IoCs
description pid Process Token: SeDebugPrivilege 3300 powershell.exe Token: SeIncreaseQuotaPrivilege 3300 powershell.exe Token: SeSecurityPrivilege 3300 powershell.exe Token: SeTakeOwnershipPrivilege 3300 powershell.exe Token: SeLoadDriverPrivilege 3300 powershell.exe Token: SeSystemProfilePrivilege 3300 powershell.exe Token: SeSystemtimePrivilege 3300 powershell.exe Token: SeProfSingleProcessPrivilege 3300 powershell.exe Token: SeIncBasePriorityPrivilege 3300 powershell.exe Token: SeCreatePagefilePrivilege 3300 powershell.exe Token: SeBackupPrivilege 3300 powershell.exe Token: SeRestorePrivilege 3300 powershell.exe Token: SeShutdownPrivilege 3300 powershell.exe Token: SeDebugPrivilege 3300 powershell.exe Token: SeSystemEnvironmentPrivilege 3300 powershell.exe Token: SeRemoteShutdownPrivilege 3300 powershell.exe Token: SeUndockPrivilege 3300 powershell.exe Token: SeManageVolumePrivilege 3300 powershell.exe Token: 33 3300 powershell.exe Token: 34 3300 powershell.exe Token: 35 3300 powershell.exe Token: 36 3300 powershell.exe Token: SeIncreaseQuotaPrivilege 3300 powershell.exe Token: SeSecurityPrivilege 3300 powershell.exe Token: SeTakeOwnershipPrivilege 3300 powershell.exe Token: SeLoadDriverPrivilege 3300 powershell.exe Token: SeSystemProfilePrivilege 3300 powershell.exe Token: SeSystemtimePrivilege 3300 powershell.exe Token: SeProfSingleProcessPrivilege 3300 powershell.exe Token: SeIncBasePriorityPrivilege 3300 powershell.exe Token: SeCreatePagefilePrivilege 3300 powershell.exe Token: SeBackupPrivilege 3300 powershell.exe Token: SeRestorePrivilege 3300 powershell.exe Token: SeShutdownPrivilege 3300 powershell.exe Token: SeDebugPrivilege 3300 powershell.exe Token: SeSystemEnvironmentPrivilege 3300 powershell.exe Token: SeRemoteShutdownPrivilege 3300 powershell.exe Token: SeUndockPrivilege 3300 powershell.exe Token: SeManageVolumePrivilege 3300 powershell.exe Token: 33 3300 powershell.exe Token: 34 3300 powershell.exe Token: 35 3300 powershell.exe Token: 36 3300 powershell.exe Token: SeIncreaseQuotaPrivilege 3300 powershell.exe Token: SeSecurityPrivilege 3300 powershell.exe Token: SeTakeOwnershipPrivilege 3300 powershell.exe Token: SeLoadDriverPrivilege 3300 powershell.exe Token: SeSystemProfilePrivilege 3300 powershell.exe Token: SeSystemtimePrivilege 3300 powershell.exe Token: SeProfSingleProcessPrivilege 3300 powershell.exe Token: SeIncBasePriorityPrivilege 3300 powershell.exe Token: SeCreatePagefilePrivilege 3300 powershell.exe Token: SeBackupPrivilege 3300 powershell.exe Token: SeRestorePrivilege 3300 powershell.exe Token: SeShutdownPrivilege 3300 powershell.exe Token: SeDebugPrivilege 3300 powershell.exe Token: SeSystemEnvironmentPrivilege 3300 powershell.exe Token: SeRemoteShutdownPrivilege 3300 powershell.exe Token: SeUndockPrivilege 3300 powershell.exe Token: SeManageVolumePrivilege 3300 powershell.exe Token: 33 3300 powershell.exe Token: 34 3300 powershell.exe Token: 35 3300 powershell.exe Token: 36 3300 powershell.exe - Suspicious use of WriteProcessMemory 4 IoCs
description pid Process procid_target PID 1592 wrote to memory of 556 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 85 PID 1592 wrote to memory of 4528 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 87 PID 1592 wrote to memory of 3300 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 98 PID 1592 wrote to memory of 1532 1592 2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe 104
Processes
-
C:\Users\Admin\AppData\Local\Temp\2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe"C:\Users\Admin\AppData\Local\Temp\2026-07-09_1761c0f5eae9dd20b70ec469a384fb9e_akira_glassworm_rusty-stealer.exe"1⤵
- Drops file in Drivers directory
- Suspicious behavior: EnumeratesProcesses
- Suspicious use of WriteProcessMemory
PID:1592 -
C:\Windows\system32\ipconfig.exe"ipconfig" /flushdns2⤵
- Gathers network information
PID:556
-
-
C:\Windows\System32\pnputil.exe"C:\Windows\System32\pnputil.exe" /enum-drivers2⤵PID:4528
-
-
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -NonInteractive -Command " $ErrorActionPreference = 'Stop' $adapterLabel = 'Ethernet' $adapterHint = 'Ethernet' $adapterIfIndex = 6 $repairBinding = $false function Add-BindingCandidate([System.Collections.Generic.List[object]]$Candidates, [string]$Selector, [string]$Value, [string]$DisplayName) { if ([string]::IsNullOrWhiteSpace($Value)) { return } $normalizedKey = ($Selector + '|' + $Value).ToLowerInvariant() foreach ($candidate in $Candidates) { if ($candidate.Key -eq $normalizedKey) { return } } $Candidates.Add([PSCustomObject]@{ Selector = $Selector Value = $Value DisplayName = $DisplayName Key = $normalizedKey }) | Out-Null } function Get-LegacyAdapterMetadata { if ($null -eq $adapterIfIndex) { return $null } $legacyAdapter = $null try { $legacyAdapter = Get-CimInstance -ClassName Win32_NetworkAdapter -Filter ('InterfaceIndex = ' + $adapterIfIndex) -ErrorAction Stop | Select-Object -First 1 } catch { try { $legacyAdapter = Get-WmiObject Win32_NetworkAdapter -Filter ('InterfaceIndex = ' + $adapterIfIndex) -ErrorAction Stop | Select-Object -First 1 } catch { $legacyAdapter = $null } } if (-not $legacyAdapter) { return $null } return [PSCustomObject]@{ Name = [string]$legacyAdapter.NetConnectionID InterfaceDescription = [string]$legacyAdapter.Name IfIndex = $legacyAdapter.InterfaceIndex } } function Resolve-WinpkFilterCandidates { $candidates = [System.Collections.Generic.List[object]]::new() if ($null -ne $adapterIfIndex) { Add-BindingCandidate $candidates 'InterfaceIndex' ([string]$adapterIfIndex) $adapterLabel } if (-not [string]::IsNullOrWhiteSpace($adapterHint)) { Add-BindingCandidate $candidates 'Name' $adapterHint $adapterHint Add-BindingCandidate $candidates 'InterfaceDescription' $adapterHint $adapterHint } $legacyAdapter = Get-LegacyAdapterMetadata if ($legacyAdapter) { $displayName = if (-not [string]::IsNullOrWhiteSpace($legacyAdapter.Name)) { $legacyAdapter.Name } elseif (-not [string]::IsNullOrWhiteSpace($legacyAdapter.InterfaceDescription)) { $legacyAdapter.InterfaceDescription } else { $adapterLabel } Add-BindingCandidate $candidates 'Name' $legacyAdapter.Name $displayName Add-BindingCandidate $candidates 'InterfaceDescription' $legacyAdapter.InterfaceDescription $displayName } return $candidates } function Get-WinpkFilterBinding([object]$Candidate) { if ($Candidate.Selector -eq 'InterfaceIndex') { return Get-NetAdapter -InterfaceIndex ([int]$Candidate.Value) -ErrorAction SilentlyContinue | Get-NetAdapterBinding -ComponentID 'nt_ndisrd' -ErrorAction SilentlyContinue | Select-Object -First 1 } if ($Candidate.Selector -eq 'Name') { return Get-NetAdapterBinding -Name $Candidate.Value -ComponentID 'nt_ndisrd' -ErrorAction SilentlyContinue | Select-Object -First 1 } if ($Candidate.Selector -eq 'InterfaceDescription') { return Get-NetAdapterBinding -InterfaceDescription $Candidate.Value -ComponentID 'nt_ndisrd' -ErrorAction SilentlyContinue | Select-Object -First 1 } return $null } function Enable-WinpkFilterBinding([object]$Candidate) { if ($Candidate.Selector -eq 'InterfaceIndex') { $adapter = Get-NetAdapter -InterfaceIndex ([int]$Candidate.Value) -ErrorAction Stop | Select-Object -First 1 if (-not $adapter) { throw ('Could not resolve adapter by interface index: ' + $Candidate.Value) } Enable-NetAdapterBinding -Name $adapter.Name -ComponentID 'nt_ndisrd' -Confirm:$false -ErrorAction Stop | Out-Null return } if ($Candidate.Selector -eq 'Name') { Enable-NetAdapterBinding -Name $Candidate.Value -ComponentID 'nt_ndisrd' -Confirm:$false -ErrorAction Stop | Out-Null return } if ($Candidate.Selector -eq 'InterfaceDescription') { Enable-NetAdapterBinding -InterfaceDescription $Candidate.Value -ComponentID 'nt_ndisrd' -Confirm:$false -ErrorAction Stop | Out-Null return } throw ('Unsupported WinpkFilter binding selector: ' + $Candidate.Selector) } function Start-NDISRDService { $service = Get-Service -Name 'NDISRD' -ErrorAction SilentlyContinue if (-not $service) { throw 'NDISRD service is not installed.' } if ($service.Status -ne 'Running') { Write-Output 'Starting NDISRD service before WinpkFilter binding validation' Start-Service -Name 'NDISRD' -ErrorAction Stop $deadline = (Get-Date).AddSeconds(10) do { Start-Sleep -Milliseconds 250 $service = Get-Service -Name 'NDISRD' -ErrorAction Stop } while ($service.Status -ne 'Running' -and (Get-Date) -lt $deadline) if ($service.Status -ne 'Running') { throw 'NDISRD service did not reach Running state.' } } } try { $candidates = Resolve-WinpkFilterCandidates if ($candidates.Count -eq 0) { throw ('Could not resolve any adapter identifiers for WinpkFilter validation. ifIndex=' + $adapterIfIndex + ', hint=' + $adapterLabel) } $bindingCandidate = $null $binding = $null foreach ($candidate in $candidates) { $binding = Get-WinpkFilterBinding $candidate if ($binding) { $bindingCandidate = $candidate break } } if (-not $bindingCandidate) { throw ('winpkfilter_binding_missing: nt_ndisrd is not bound to adapter ''' + $adapterLabel + ''' (ifIndex=' + $adapterIfIndex + '). Repair the split tunnel driver, then try again.') } $adapterName = if ($binding.Name) { [string]$binding.Name } elseif ($bindingCandidate.DisplayName) { [string]$bindingCandidate.DisplayName } else { $adapterLabel } $adapterDescription = if ($binding.InterfaceDescription) { [string]$binding.InterfaceDescription } else { '' } Write-Output ('Using adapter ''' + $adapterName + ''' via ' + $bindingCandidate.Selector + ' (ifIndex=' + $adapterIfIndex + ', description=' + $adapterDescription + ') for WinpkFilter validation') Start-NDISRDService if (-not $binding.Enabled) { if (-not $repairBinding) { throw ('winpkfilter_binding_disabled: nt_ndisrd is disabled on adapter ''' + $adapterName + ''' (ifIndex=' + $adapterIfIndex + '). SwiftTunnel will enable it when connecting or when Repair driver is run.') } Write-Output ('Enabling WinpkFilter binding on adapter: ' + $adapterName) Enable-WinpkFilterBinding $bindingCandidate Start-Sleep -Seconds 2 $binding = Get-WinpkFilterBinding $bindingCandidate if (-not $binding) { throw ('WinpkFilter binding nt_ndisrd could not be queried after enabling on adapter: ' + $adapterName) } if (-not $binding.Enabled) { throw ('WinpkFilter binding nt_ndisrd is still disabled on adapter: ' + $adapterName) } Write-Output ('WinpkFilter binding enabled on adapter: ' + $adapterName) } else { Write-Output ('WinpkFilter binding already enabled on adapter: ' + $adapterName) } } catch { $errorText = $_.Exception.Message if ([string]::IsNullOrWhiteSpace($errorText)) { $errorText = ($_ | Out-String).Trim() } if ([string]::IsNullOrWhiteSpace($errorText)) { $errorText = 'PowerShell command failed without an exception message.' } if ($errorText -like 'winpkfilter_binding_missing:*' -or $errorText -like 'winpkfilter_binding_disabled:*') { [Console]::Error.WriteLine($errorText) } else { [Console]::Error.WriteLine('winpkfilter_binding_validation_failed: adapter ''' + $adapterLabel + ''': ' + $errorText) } exit 1 } "2⤵
- Command and Scripting Interpreter: PowerShell
- Hide Artifacts: Ignore Process Interrupts
- Suspicious use of AdjustPrivilegeToken
PID:3300
-
-
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -NonInteractive -Command " $ErrorActionPreference = 'Stop' $adapterLabel = 'Ethernet' $adapterHint = 'Ethernet' $adapterIfIndex = 6 $repairBinding = $false function Add-BindingCandidate([System.Collections.Generic.List[object]]$Candidates, [string]$Selector, [string]$Value, [string]$DisplayName) { if ([string]::IsNullOrWhiteSpace($Value)) { return } $normalizedKey = ($Selector + '|' + $Value).ToLowerInvariant() foreach ($candidate in $Candidates) { if ($candidate.Key -eq $normalizedKey) { return } } $Candidates.Add([PSCustomObject]@{ Selector = $Selector Value = $Value DisplayName = $DisplayName Key = $normalizedKey }) | Out-Null } function Get-LegacyAdapterMetadata { if ($null -eq $adapterIfIndex) { return $null } $legacyAdapter = $null try { $legacyAdapter = Get-CimInstance -ClassName Win32_NetworkAdapter -Filter ('InterfaceIndex = ' + $adapterIfIndex) -ErrorAction Stop | Select-Object -First 1 } catch { try { $legacyAdapter = Get-WmiObject Win32_NetworkAdapter -Filter ('InterfaceIndex = ' + $adapterIfIndex) -ErrorAction Stop | Select-Object -First 1 } catch { $legacyAdapter = $null } } if (-not $legacyAdapter) { return $null } return [PSCustomObject]@{ Name = [string]$legacyAdapter.NetConnectionID InterfaceDescription = [string]$legacyAdapter.Name IfIndex = $legacyAdapter.InterfaceIndex } } function Resolve-WinpkFilterCandidates { $candidates = [System.Collections.Generic.List[object]]::new() if ($null -ne $adapterIfIndex) { Add-BindingCandidate $candidates 'InterfaceIndex' ([string]$adapterIfIndex) $adapterLabel } if (-not [string]::IsNullOrWhiteSpace($adapterHint)) { Add-BindingCandidate $candidates 'Name' $adapterHint $adapterHint Add-BindingCandidate $candidates 'InterfaceDescription' $adapterHint $adapterHint } $legacyAdapter = Get-LegacyAdapterMetadata if ($legacyAdapter) { $displayName = if (-not [string]::IsNullOrWhiteSpace($legacyAdapter.Name)) { $legacyAdapter.Name } elseif (-not [string]::IsNullOrWhiteSpace($legacyAdapter.InterfaceDescription)) { $legacyAdapter.InterfaceDescription } else { $adapterLabel } Add-BindingCandidate $candidates 'Name' $legacyAdapter.Name $displayName Add-BindingCandidate $candidates 'InterfaceDescription' $legacyAdapter.InterfaceDescription $displayName } return $candidates } function Get-WinpkFilterBinding([object]$Candidate) { if ($Candidate.Selector -eq 'InterfaceIndex') { return Get-NetAdapter -InterfaceIndex ([int]$Candidate.Value) -ErrorAction SilentlyContinue | Get-NetAdapterBinding -ComponentID 'nt_ndisrd' -ErrorAction SilentlyContinue | Select-Object -First 1 } if ($Candidate.Selector -eq 'Name') { return Get-NetAdapterBinding -Name $Candidate.Value -ComponentID 'nt_ndisrd' -ErrorAction SilentlyContinue | Select-Object -First 1 } if ($Candidate.Selector -eq 'InterfaceDescription') { return Get-NetAdapterBinding -InterfaceDescription $Candidate.Value -ComponentID 'nt_ndisrd' -ErrorAction SilentlyContinue | Select-Object -First 1 } return $null } function Enable-WinpkFilterBinding([object]$Candidate) { if ($Candidate.Selector -eq 'InterfaceIndex') { $adapter = Get-NetAdapter -InterfaceIndex ([int]$Candidate.Value) -ErrorAction Stop | Select-Object -First 1 if (-not $adapter) { throw ('Could not resolve adapter by interface index: ' + $Candidate.Value) } Enable-NetAdapterBinding -Name $adapter.Name -ComponentID 'nt_ndisrd' -Confirm:$false -ErrorAction Stop | Out-Null return } if ($Candidate.Selector -eq 'Name') { Enable-NetAdapterBinding -Name $Candidate.Value -ComponentID 'nt_ndisrd' -Confirm:$false -ErrorAction Stop | Out-Null return } if ($Candidate.Selector -eq 'InterfaceDescription') { Enable-NetAdapterBinding -InterfaceDescription $Candidate.Value -ComponentID 'nt_ndisrd' -Confirm:$false -ErrorAction Stop | Out-Null return } throw ('Unsupported WinpkFilter binding selector: ' + $Candidate.Selector) } function Start-NDISRDService { $service = Get-Service -Name 'NDISRD' -ErrorAction SilentlyContinue if (-not $service) { throw 'NDISRD service is not installed.' } if ($service.Status -ne 'Running') { Write-Output 'Starting NDISRD service before WinpkFilter binding validation' Start-Service -Name 'NDISRD' -ErrorAction Stop $deadline = (Get-Date).AddSeconds(10) do { Start-Sleep -Milliseconds 250 $service = Get-Service -Name 'NDISRD' -ErrorAction Stop } while ($service.Status -ne 'Running' -and (Get-Date) -lt $deadline) if ($service.Status -ne 'Running') { throw 'NDISRD service did not reach Running state.' } } } try { $candidates = Resolve-WinpkFilterCandidates if ($candidates.Count -eq 0) { throw ('Could not resolve any adapter identifiers for WinpkFilter validation. ifIndex=' + $adapterIfIndex + ', hint=' + $adapterLabel) } $bindingCandidate = $null $binding = $null foreach ($candidate in $candidates) { $binding = Get-WinpkFilterBinding $candidate if ($binding) { $bindingCandidate = $candidate break } } if (-not $bindingCandidate) { throw ('winpkfilter_binding_missing: nt_ndisrd is not bound to adapter ''' + $adapterLabel + ''' (ifIndex=' + $adapterIfIndex + '). Repair the split tunnel driver, then try again.') } $adapterName = if ($binding.Name) { [string]$binding.Name } elseif ($bindingCandidate.DisplayName) { [string]$bindingCandidate.DisplayName } else { $adapterLabel } $adapterDescription = if ($binding.InterfaceDescription) { [string]$binding.InterfaceDescription } else { '' } Write-Output ('Using adapter ''' + $adapterName + ''' via ' + $bindingCandidate.Selector + ' (ifIndex=' + $adapterIfIndex + ', description=' + $adapterDescription + ') for WinpkFilter validation') Start-NDISRDService if (-not $binding.Enabled) { if (-not $repairBinding) { throw ('winpkfilter_binding_disabled: nt_ndisrd is disabled on adapter ''' + $adapterName + ''' (ifIndex=' + $adapterIfIndex + '). SwiftTunnel will enable it when connecting or when Repair driver is run.') } Write-Output ('Enabling WinpkFilter binding on adapter: ' + $adapterName) Enable-WinpkFilterBinding $bindingCandidate Start-Sleep -Seconds 2 $binding = Get-WinpkFilterBinding $bindingCandidate if (-not $binding) { throw ('WinpkFilter binding nt_ndisrd could not be queried after enabling on adapter: ' + $adapterName) } if (-not $binding.Enabled) { throw ('WinpkFilter binding nt_ndisrd is still disabled on adapter: ' + $adapterName) } Write-Output ('WinpkFilter binding enabled on adapter: ' + $adapterName) } else { Write-Output ('WinpkFilter binding already enabled on adapter: ' + $adapterName) } } catch { $errorText = $_.Exception.Message if ([string]::IsNullOrWhiteSpace($errorText)) { $errorText = ($_ | Out-String).Trim() } if ([string]::IsNullOrWhiteSpace($errorText)) { $errorText = 'PowerShell command failed without an exception message.' } if ($errorText -like 'winpkfilter_binding_missing:*' -or $errorText -like 'winpkfilter_binding_disabled:*') { [Console]::Error.WriteLine($errorText) } else { [Console]::Error.WriteLine('winpkfilter_binding_validation_failed: adapter ''' + $adapterLabel + ''': ' + $errorText) } exit 1 } "2⤵
- Command and Scripting Interpreter: PowerShell
- Hide Artifacts: Ignore Process Interrupts
PID:1532
-
Network
MITRE ATT&CK Enterprise v16
Replay Monitor
Loading Replay Monitor...
Downloads
- Path C:\Users\Admin\AppData\Local\Microsoft\CLR_v4.0\UsageLogs\powershell.exe.log
- Size 3KB
- SHA256 14b3616e9b73bbbd70d1cf8032825a1e5d22550590f08c218b7301a44c1d7bd9
- MD5 0a0b9741cb338c26f1594fb7f83df461
- SHA1 b2fc8014a8629249995bdcc1733e0792260f10c8
- SHA512 cc8cf13f94e23596b7a7ef5f551dd7a7c0ff34122ab4ef95c419460505a3cf07c2e0f843674418ff3a728dfbad842a55f810d3f09fcf11ff5155760a22c7e039
- TLSH T16081CE323275B0D4C8567F07292819D063BF4396EA98AF4CB25C621ED92751BDB122F7
- MD5 SHA1 SHA512 TLSH
- Path C:\Users\Admin\AppData\Local\Microsoft\Windows\PowerShell\StartupProfileData-NonInteractive
- Size 1KB
- SHA256 7172373de0f4017bbfe2d43a2af0288e497caca41bea0ee25fe2690ff8d58d98
- MD5 1e295231e17fa1a9b1d27e3ef124b064
- SHA1 a99a9b114fda6f058882bfb5aa05b1b59d1d0220
- SHA512 8db7cf15c598872bdbddce777e5827b24930e9a4831c5198264fd3c18fc8e6cc4e46a4a223feabbf720493e7c6eae8cfb6dafdedc93c98f9470b1e608545b2e3
- TLSH T13B216727B39C8821DCD5113A109D9C1132B683C7819ECF9F6EC4D615A57FAC8CB61694
- MD5 SHA1 SHA512 TLSH
- Path C:\Users\Admin\AppData\Local\Temp\__PSScriptPolicyTest_aabxrwkx.v02.ps1
- Size 60B
- SHA256 96ad1146eb96877eab5942ae0736b82d8b5e2039a80d3d6932665c1a4c87dcf7
- MD5 d17fe0a3f47be24a6453e9ef58c94641
- SHA1 6ab83620379fc69f80c0242105ddffd7d98d5d9d
- SHA512 5b592e58f26c264604f98f6aa12860758ce606d1c63220736cf0c779e4e18e3cec8706930a16c38b20161754d1017d1657d35258e58ca22b18f5b232880dec82
- TLSH T177A02228CC303B200020C0080A000002C00B800C080C8C0220000A00B20B820002F080
- MD5 SHA1 SHA512 TLSH