Analysis

  • max time kernel
    150s
  • max time network
    116s
  • platform
    windows11-ltsc_2024_x64
  • resource
    win11ltsc2024-20260710-en
  • resource tags

    arch:x64arch:x86image:win11ltsc2024-20260710-enlocale:en-usos:windows11-ltsc_2024-x64systemwindows
  • submitted
    30/07/2026, 23:22

General

  • Target
    2026-07-30_e9181e3973cf0d6ffb3674cfad9ac8b8_akira_glassworm_rusty-stealer.exe
  • Size 7.5MB
  • Sample260730-3crassstdy
  • SHA256 1af7b61ee5f7f6b54324d3cc639190d76b17daa2774b2caa34ee612c8c9ff80a
  • 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-30_e9181e3973cf0d6ffb3674cfad9ac8b8_akira_glassworm_rusty-stealer.exe
    "C:\Users\Admin\AppData\Local\Temp\2026-07-30_e9181e3973cf0d6ffb3674cfad9ac8b8_akira_glassworm_rusty-stealer.exe"
    1⤵
    • Drops file in Drivers directory
    • Suspicious behavior: EnumeratesProcesses
    • Suspicious use of WriteProcessMemory
    PID:5844
    • C:\Windows\System32\ipconfig.exe
      "C:\Windows\System32\ipconfig.exe" /flushdns
      2⤵
      • Gathers network information
      PID:2960
    • C:\Windows\System32\pnputil.exe
      "C:\Windows\System32\pnputil.exe" /enum-drivers
      2⤵
        PID:2436
      • 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:3588

    Network

          MITRE ATT&CK Enterprise v16

          Replay Monitor

          Loading Replay Monitor...

          Downloads

          __PSScriptPolicyTest_21br1sw4.0cq.ps1

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

          memory/3588-11-0x000001C126CB0000-0x000001C126CCE000-memory.dmp

          memory/3588-14-0x000001C126F10000-0x000001C126F3A000-memory.dmp

          memory/3588-7-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-8-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-12-0x000001C126CD0000-0x000001C126D82000-memory.dmp

          memory/3588-2-0x00007FFD0856F000-0x00007FFD08570000-memory.dmp

          memory/3588-13-0x000001C126CA0000-0x000001C126CAA000-memory.dmp

          memory/3588-20-0x000001C126F00000-0x000001C126F1E000-memory.dmp

          memory/3588-5-0x000001C126A10000-0x000001C126A32000-memory.dmp

          memory/3588-16-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-6-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-17-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-15-0x000001C126F10000-0x000001C126F34000-memory.dmp

          memory/3588-21-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-22-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-23-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-24-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-25-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-26-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-27-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-28-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-29-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp

          memory/3588-31-0x00007FFD083E0000-0x00007FFD08D84000-memory.dmp