droogiee — understood, and you
do not have to jump straight to reinstalling Windows. Since
rundll32.exe is valid and the parent was
explorer.exe, this likely means something was launched from your user session, possibly a downloaded installer, temp payload, or one-time startup action.
The important suspicious item is still:
C:\Users\****\AppData\Local\Temp\wsc35FD.tmp
That is what we should remove/trace.
Do this next, in order
1. Stay offline for cleanup
- Disconnect Wi-Fi/Ethernet.
- Leave the PC on.
- Do not sign into important accounts from this PC yet.
2. Create a restore point first
Run PowerShell as Administrator:
Checkpoint-Computer -Description "Before rundll cleanup" -RestorePointType "MODIFY_SETTINGS"
If it says restore points are disabled, continue, but don’t worry about that right now.
3. Save evidence before deleting the temp file
Run this:
Code:
$bad="$env:LOCALAPPDATA\Temp\wsc35FD.tmp"
Get-Item $bad -Force | Select-Object FullName,Length,CreationTime,LastWriteTime
Get-FileHash $bad -Algorithm SHA256
Get-AuthenticodeSignature $bad | Format-List
Please copy the output somewhere. The
SHA256 hash is useful if we need to identify the exact malware family.
4. Kill the two active rundll32.exe processes
Run:
Stop-Process -Id 2008,572 -Force
Then confirm they are gone:
Get-CimInstance Win32_Process -Filter "name='rundll32.exe'" | Select-Object ProcessId,ParentProcessId,CommandLine
If nothing referencing
wsc35FD.tmp returns, continue.
5. Delete the suspicious temp file
Run:
Remove-Item "$env:LOCALAPPDATA\Temp\wsc35FD.tmp" -Force -ErrorAction SilentlyContinue
Then check for similar files:
Get-ChildItem "$env:LOCALAPPDATA\Temp" -Force | Where-Object {$_.Name -match "^(wsc|wns).+\.tmp$"} | Select-Object FullName,Length,CreationTime,LastWriteTime
If more
wsc*.tmp or
wns*.tmp files appear, post the list before deleting them.
6. Check for the known dropped folder
Run:
Get-ChildItem "$env:LOCALAPPDATA\Microsoft\Windows" -Force -ErrorAction SilentlyContinue | Where-Object {$_.Name -match "InetHelper"}
If it exists, remove it:
Remove-Item "$env:LOCALAPPDATA\Microsoft\Windows\InetHelper" -Recurse -Force -ErrorAction SilentlyContinue
7. Check more persistence locations
Since your first Run/RunOnce check was clean, check the less obvious places too.
Run these in
Command Prompt as Administrator:
Code:
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Load
reg query "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Run
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Shell
reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"
reg query "HKLM\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Run"
Normal
Winlogon values should look roughly like:
Code:
Shell REG_SZ explorer.exe
Userinit REG_SZ C:\Windows\system32\userinit.exe,
Important: Do not change
Shell or
Userinit unless you post the output first. Bad edits there can break login.
8. Check WMI persistence
Run PowerShell as Administrator:
Code:
Get-WmiObject -Namespace root\subscription -Class __EventFilter
Get-WmiObject -Namespace root\subscription -Class CommandLineEventConsumer
Get-WmiObject -Namespace root\subscription -Class __FilterToConsumerBinding
If those return entries referencing
rundll32,
wsc35FD.tmp,
InetHelper,
AppData,
Temp, or unknown commands, post them.
9. Check Defender exclusions
Malware sometimes adds exclusions so scans show clean.
Run:
Code:
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath
Get-MpPreference | Select-Object -ExpandProperty ExclusionProcess
Get-MpPreference | Select-Object -ExpandProperty ExclusionExtension
If you see exclusions for
AppData,
Temp,
rundll32.exe,
.tmp, or anything you did not add, post them.
10. Run Microsoft Defender Offline Scan
After the file is removed and processes are stopped:
Start-MpWDOScan
This will reboot and scan outside normal Windows.
11. After reboot, verify it did not return
Run:
Get-CimInstance Win32_Process -Filter "name='rundll32.exe'" | Select-Object ProcessId,ParentProcessId,CommandLine
Then:
Code:
Test-Path "$env:LOCALAPPDATA\Temp\wsc35FD.tmp"
Get-ChildItem "$env:LOCALAPPDATA\Temp" -Force | Where-Object {$_.Name -match "^(wsc|wns).+\.tmp$"}
Test-Path "$env:LOCALAPPDATA\Microsoft\Windows\InetHelper"
Expected good result:
Code:
No rundll32 process loading wsc35FD.tmp
False for wsc35FD.tmp
False for InetHelper
No wsc/wns temp files listed
If it comes back
If the same
rundll32 ... wsc35FD.tmp command returns after reboot, then something is still launching it. At that point, I would use
Microsoft Sysinternals Autoruns and check the
Logon,
Scheduled Tasks,
Services,
Drivers,
WMI, and
AppInit tabs.
But first, do steps 3 through 11. You’re not at “must reinstall” yet, but this is definitely more than a harmless firewall log.