Analysis

  • max time kernel
    148s
  • max time network
    114s
  • platform
    windows11-ltsc_2024_x64
  • resource
    win11ltsc2024-20260709-en
  • resource tags

    arch:x64arch:x86image:win11ltsc2024-20260709-enlocale:en-usos:windows11-ltsc_2024-x64systemwindows
  • submitted
    20/07/2026, 04:04

General

  • Target
    2026-07-20_83dc426567f4d929976b40add122b0cd_akira_glassworm_rusty-stealer.exe
  • Size 7.5MB
  • Sample260720-em3jtaew2k
  • SHA256 ee4d87572f7f9cc564106bab244ddf2cde6a67e8002a95739d6ee5cb2ddf1818
  • MD5 SHA1 SHA512 SSDEEP TLSH

Malware Config

Signatures

  • Drops file in Drivers directory 1 IoCs
  • Command and Scripting Interpreter: PowerShell 1 TTPs 1 IoCs

    Run Powershell to get system information.

  • Hide Artifacts: Ignore Process Interrupts 1 TTPs 1 IoCs

    Command interpreters often include specific commands/flags that ignore errors and other hangups.

  • Gathers network information 2 TTPs 1 IoCs

    Uses commandline utility to view network configuration.

  • Suspicious behavior: EnumeratesProcesses 64 IoCs
  • Suspicious use of AdjustPrivilegeToken 64 IoCs
  • Suspicious use of WriteProcessMemory 3 IoCs

Processes

  • C:\Users\Admin\AppData\Local\Temp\2026-07-20_83dc426567f4d929976b40add122b0cd_akira_glassworm_rusty-stealer.exe
    "C:\Users\Admin\AppData\Local\Temp\2026-07-20_83dc426567f4d929976b40add122b0cd_akira_glassworm_rusty-stealer.exe"
    1⤵
    • Drops file in Drivers directory
    • Suspicious behavior: EnumeratesProcesses
    • Suspicious use of WriteProcessMemory
    PID:2544
    • C:\Windows\System32\ipconfig.exe
      "C:\Windows\System32\ipconfig.exe" /flushdns
      2⤵
      • Gathers network information
      PID:3676
    • C:\Windows\System32\pnputil.exe
      "C:\Windows\System32\pnputil.exe" /enum-drivers
      2⤵
        PID:4156
      • 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 + '). SwiftTunnel will repair the binding automatically, 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 automatically, then try again.') } 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:5076

    Network

          MITRE ATT&CK Enterprise v16

          Replay Monitor

          Loading Replay Monitor...

          Downloads

          __PSScriptPolicyTest_rotxtvfj.uzd.ps1

          • Path C:\Users\Admin\AppData\Local\Temp\__PSScriptPolicyTest_rotxtvfj.uzd.ps1
          • Size 60B
          • SHA256 96ad1146eb96877eab5942ae0736b82d8b5e2039a80d3d6932665c1a4c87dcf7
          • MD5 SHA1 SHA512 TLSH

          memory/5076-15-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-4-0x0000014880030000-0x0000014880052000-memory.dmp

          memory/5076-6-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-7-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-8-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-9-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-10-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-11-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-12-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-13-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-14-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-1-0x00007FFCAADAF000-0x00007FFCAADB0000-memory.dmp

          memory/5076-5-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-21-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-20-0x000001481A700000-0x000001481A7B2000-memory.dmp

          memory/5076-22-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-16-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-24-0x0000014880090000-0x00000148800BA000-memory.dmp

          memory/5076-25-0x0000014880090000-0x00000148800B4000-memory.dmp

          memory/5076-23-0x0000014880010000-0x000001488001A000-memory.dmp

          memory/5076-26-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-19-0x000001481A3D0000-0x000001481A3EE000-memory.dmp

          memory/5076-29-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp

          memory/5076-30-0x0000014880060000-0x000001488007E000-memory.dmp

          memory/5076-32-0x00007FFCAAC20000-0x00007FFCAB5C4000-memory.dmp