Archived material. This page is preserved for historical and educational value. It reflects the threat landscape, available guidance, and research context at the time it was written or last updated. It should not be treated as a current security advisory or production remediation guidance. See the Threat Archive index for context and full listing.
Wiper · Windows · 2017

NotPetya

Destructive cyberattack disguised as ransomware — exploitation of MS17-010 (CVE-2017-0144)

Summary

NotPetya was a destructive cyberattack that began on June 27, 2017, initially targeting Ukrainian organizations but rapidly spreading worldwide. Disguised as ransomware, it functioned as a data wiper, causing irreversible damage. Key facts: Attributed to Russian state actors (Sandworm group), initiated via a supply chain compromise in M.E.Doc tax software, exploited Windows vulnerabilities like EternalBlue (CVE-2017-0144), and resulted in estimated global damages of $10 billion.

Background

The attack was discovered on June 27, 2017, when Ukrainian companies reported system compromises. Security researchers quickly identified it as a variant of Petya malware but noted its wiper nature. The initial infection vector was a backdoored update in M.E.Doc software. Microsoft had released the relevant patch (MS17-010) on March 14, 2017, addressing the EternalBlue exploit used for lateral movement. No formal vendor notification was needed for the malware itself, but antivirus vendors updated signatures within days. Attribution to Russia's GRU was publicly announced by the US and UK in February 2018.

Impact

What is NotPetya

NotPetya is a malware variant based on the Petya ransomware family but designed as a destructive wiper rather than a profit-driven tool. It infects Windows systems, encrypts files, and demands a $300 Bitcoin ransom, but the encryption key is discarded, making recovery impossible. It spreads via supply chain attacks and exploits like EternalBlue in SMBv1, targeting primarily Windows 7 and older versions.

Implications

NotPetya underscores the dangers of nation-state cyber operations disguised as criminal activity, highlighting supply chain vulnerabilities and the need for rapid patching. Operationally, it poses risks of prolonged downtime and data loss; security-wise, it demonstrates how unpatched exploits enable widespread network compromise, potentially leading to espionage or further attacks.

Mitigation

Immediate (0–7 days)

Short-Term (1–4 weeks)

Medium-Term (1–3 months)

Long-Term (3–6+ months)

Timeline

DateEvent
March 14, 2017Microsoft releases MS17-010 patch for EternalBlue vulnerability.
May 12, 2017WannaCry ransomware exploits EternalBlue globally.
June 27, 2017NotPetya outbreak begins via M.E.Doc software update in Ukraine.
June 28, 2017Security researchers confirm it's a wiper, not recoverable ransomware.
February 15, 2018US and UK governments attribute the attack to Russian military intelligence.

Key Takeaways

References

Identification Tool

Checklist to confirm if a system is affected or vulnerable:

  1. Check for unexpected reboots and a fake CHKDSK screen displaying during boot.
  2. Look for a ransom note file (e.g., README.TXT) in the root directory or Windows folder.
  3. Verify if files are encrypted with no known extension changes or if the system is unbootable.
  4. Scan for presence of suspicious DLLs like perfc.dat or perfc.dll in C:\Windows.
  5. Use PowerShell to check if MS17-010 patch is installed (see script below).
  6. Check if SMBv1 is enabled: Run Get-SmbServerConfiguration | Select EnableSMB1Protocol in PowerShell.
  7. Run antivirus scans for NotPetya signatures.

PowerShell Check Script

Single script to detect if MS17-010 patch is installed and print status in green (OK) or red (update needed):

$hotfixes = "KB4012212", "KB4012213", "KB4012214", "KB4012215", "KB4012216", "KB4012217", "KB4012598", "KB4012606", "KB4013198", "KB4013429", "KB4015217", "KB4015438", "KB4015549", "KB4015550", "KB4015551", "KB4015552", "KB4015553", "KB4015554", "KB4016635", "KB4019215", "KB4019216", "KB4019264", "KB4019472", "KB4019473", "KB4019474"

$hotfix = Get-HotFix | Where-Object {$hotfixes -contains $_.HotfixID} | Select-Object -Property "HotfixID"

if ([string]::IsNullOrEmpty($hotfix)) {
    Write-Host "Update needed" -ForegroundColor Red
} else {
    Write-Host "OK" -ForegroundColor Green
}