SYMBOLCOMMON_NAMEaka. SYNONYMS
win.flawedgrace (Back to overview)

FlawedGrace

aka: GraceWire

Actor(s): TA505

VTCollection    

According to ProofPoint, FlawedGrace is written in C++ and can be categorized as a Remote Access Trojan (RAT). It seems to have been developed in the second half of 2017 mainly.

FlawedGrace uses a series of commands:
FlawedGrace also uses a series of commands, provided below for reference:
* desktop_stat
* destroy_os
* target_download
* target_module_load
* target_module_load_external
* target_module_unload
* target_passwords
* target_rdp
* target_reboot
* target_remove
* target_script
* target_servers
* target_update
* target_upload

References
2023-12-30 ⋅ Rewterz Information Security ⋅ Rewterz Information Security
Rewterz Threat Alert – Widely Abused MSIX App Installer Disabled by Microsoft – Active IOCs
EugenLoader POWERTRASH BATLOADER DarkGate FlawedGrace NetSupportManager RAT SectopRAT Storm-0506
2023-06-12 ⋅ The DFIR Report ⋅ Maxime Thiebaut
A Truly Graceful Wipe Out
FlawedGrace Silence
2022-12-08 ⋅ Cisco Talos ⋅ Tiago Pereira
Breaking the silence - Recent Truebot activity
Clop Cobalt Strike FlawedGrace Raspberry Robin Silence Teleport
2022-11-11 ⋅ Codesec ⋅ Hugo Caron
GraceWire / FlawedGrace malware adventure
FlawedGrace
2021-12-01 ⋅ NCC Group ⋅ Michael Sandee, Nikolaos Pantazopoulos
Tracking a P2P network related to TA505
FlawedGrace Necurs
2021-10-21 ⋅ CrowdStrike ⋅ Alex Clinton, Tasha Robinson
Stopping GRACEFUL SPIDER: Falcon Complete’s Fast Response to Recent SolarWinds Serv-U Exploit Campaign
Cobalt Strike FlawedGrace TinyMet
2021-10-19 ⋅ Proofpoint ⋅ Axel F, Brandon Murphy, Crista Giering, Georgi Mladenov, Matthew Mesa, Zydeca Cass
Whatta TA: TA505 Ramps Up Activity, Delivers New FlawedGrace Variant
FlawedGrace MirrorBlast
2021-03-02 ⋅ Möbius Strip Reverse Engineering ⋅ Rolf Rolles
An Exhaustively-Analyzed IDB for FlawedGrace
FlawedGrace
2020-08-20 ⋅ CERT-FR ⋅ CERT-FR
Development of the Activity of the TA505 Cybercriminal Group
AndroMut Bart Clop Dridex FlawedAmmyy FlawedGrace Get2 Locky Marap QuantLoader SDBbot ServHelper tRat TrickBot
2020-06-22 ⋅ ⋅ CERT-FR ⋅ CERT-FR
Évolution De Lactivité du Groupe Cybercriminel TA505
Amadey AndroMut Bart Clop Dridex FlawedGrace Gandcrab Get2 GlobeImposter Jaff Locky Marap Philadephia Ransom QuantLoader Scarab Ransomware SDBbot ServHelper Silence tRat TrickBot
2020-06-17 ⋅ Twitter (@MsftSecIntel) ⋅ Microsoft Security Intelligence
A tweet thread on TA505 using CAPTCHA to avoid detection and infecting victims with FlawedGrace
FlawedGrace
2020-05-21 ⋅ Intel 471 ⋅ Intel 471
A brief history of TA505
AndroMut Bart Dridex FlawedAmmyy FlawedGrace Gandcrab Get2 GlobeImposter Jaff Kegotip Locky Necurs Philadephia Ransom Pony QuantLoader Rockloader SDBbot ServHelper Shifu Snatch TrickBot
2020-03-26 ⋅ Telekom ⋅ Thomas Barabosch
TA505's Box of Chocolate - On Hidden Gems packed with the TA505 Packer
Amadey Azorult Clop FlawedGrace Get2 SDBbot Silence TinyMet TA505
2020-03-03 ⋅ PWC UK ⋅ PWC UK
Cyber Threats 2019:A Year in Retrospect
KevDroid MESSAGETAP magecart AndroMut Cobalt Strike CobInt Crimson RAT DNSpionage Dridex Dtrack Emotet FlawedAmmyy FlawedGrace FriedEx Gandcrab Get2 GlobeImposter Grateful POS ISFB Kazuar LockerGoga Nokki QakBot Ramnit REvil Rifdoor RokRAT Ryuk shadowhammer ShadowPad Shifu Skipper StoneDrill Stuxnet TrickBot Winnti ZeroCleare APT41 MUSTANG PANDA Sea Turtle
2020-02-13 ⋅ Qianxin ⋅ Qi Anxin Threat Intelligence Center
APT Report 2019
Chrysaor Exodus Dacls VPNFilter DNSRat Griffon KopiLuwak More_eggs SQLRat AppleJeus BONDUPDATER Agent.BTZ Anchor AndroMut AppleJeus BOOSTWRITE Brambul Carbanak Cobalt Strike Dacls DistTrack DNSpionage Dtrack ELECTRICFISH FlawedAmmyy FlawedGrace Get2 Grateful POS HOPLIGHT Imminent Monitor RAT jason Joanap KerrDown KEYMARBLE Lambert LightNeuron LoJax MiniDuke PolyglotDuke PowerRatankba Rising Sun SDBbot ServHelper Snatch Stuxnet TinyMet tRat TrickBot Volgmer X-Agent Zebrocy
2020-01-01 ⋅ Secureworks ⋅ SecureWorks
GOLD TAHOE
Clop FlawedAmmyy FlawedGrace Get2 SDBbot ServHelper TA505
2019-01-14 ⋅ Möbius Strip Reverse Engineering ⋅ Rolf Rolles
A Quick Solution to an Ugly Reverse Engineering Problem
FlawedGrace
2019-01-09 ⋅ Proofpoint ⋅ Dennis Schwarz, Proofpoint Staff
ServHelper and FlawedGrace - New malware introduced by TA505
FlawedGrace ServHelper
Yara Rules
[TLP:WHITE] win_flawedgrace_auto (20260917 | Detects win.flawedgrace.)
rule win_flawedgrace_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.flawedgrace."
        info = "autogenerated rule brought to you by yara-signator"
        tool = "yara-signator v0.6.0"
        signator_config = "callsandjumps;datarefs;binvalue"
        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.flawedgrace"
        malpedia_rule_date = "20260916"
        malpedia_hash = "53a643781c18e08f4a50949af60172d837a0b6f6"
        malpedia_version = "20260917"
        malpedia_license = "CC BY-SA 4.0"
        malpedia_sharing = "TLP:WHITE"

    /* DISCLAIMER
     * The strings used in this rule have been automatically selected from the
     * disassembly of memory dumps and unpacked files, using YARA-Signator.
     * The code and documentation is published here:
     * https://github.com/fxb-cocacoding/yara-signator
     * As Malpedia is used as data source, please note that for a given
     * number of families, only single samples are documented.
     * This likely impacts the degree of generalization these rules will offer.
     * Take the described generation method also into consideration when you
     * apply the rules in your use cases and assign them confidence levels.
     */


    strings:
        $sequence_0 = { 8d867c010000 50 ffb678010000 e8???????? a1???????? 8b30 56 }
            // n = 7, score = 200
            //   8d867c010000         | lea                 eax, [esi + 0x17c]
            //   50                   | push                eax
            //   ffb678010000         | push                dword ptr [esi + 0x178]
            //   e8????????           |                     
            //   a1????????           |                     
            //   8b30                 | mov                 esi, dword ptr [eax]
            //   56                   | push                esi

        $sequence_1 = { c685c4e9ffff00 c685c5e9ffff00 c685c6e9ffff00 c685c7e9ffff00 c685c8e9ffff00 c685c9e9ffff00 c685cae9ffff00 }
            // n = 7, score = 200
            //   c685c4e9ffff00       | mov                 byte ptr [ebp - 0x163c], 0
            //   c685c5e9ffff00       | mov                 byte ptr [ebp - 0x163b], 0
            //   c685c6e9ffff00       | mov                 byte ptr [ebp - 0x163a], 0
            //   c685c7e9ffff00       | mov                 byte ptr [ebp - 0x1639], 0
            //   c685c8e9ffff00       | mov                 byte ptr [ebp - 0x1638], 0
            //   c685c9e9ffff00       | mov                 byte ptr [ebp - 0x1637], 0
            //   c685cae9ffff00       | mov                 byte ptr [ebp - 0x1636], 0

        $sequence_2 = { 64a300000000 8bf1 c745fc00000000 8b4608 c706???????? 85c0 7407 }
            // n = 7, score = 200
            //   64a300000000         | mov                 dword ptr fs:[0], eax
            //   8bf1                 | mov                 esi, ecx
            //   c745fc00000000       | mov                 dword ptr [ebp - 4], 0
            //   8b4608               | mov                 eax, dword ptr [esi + 8]
            //   c706????????         |                     
            //   85c0                 | test                eax, eax
            //   7407                 | je                  9

        $sequence_3 = { c685b3e6ffffd4 c685b4e6ffff00 c685b5e6ffff00 c685b6e6ffff00 c685b7e6ffff00 c685b8e6ffff00 c685b9e6ffff00 }
            // n = 7, score = 200
            //   c685b3e6ffffd4       | mov                 byte ptr [ebp - 0x194d], 0xd4
            //   c685b4e6ffff00       | mov                 byte ptr [ebp - 0x194c], 0
            //   c685b5e6ffff00       | mov                 byte ptr [ebp - 0x194b], 0
            //   c685b6e6ffff00       | mov                 byte ptr [ebp - 0x194a], 0
            //   c685b7e6ffff00       | mov                 byte ptr [ebp - 0x1949], 0
            //   c685b8e6ffff00       | mov                 byte ptr [ebp - 0x1948], 0
            //   c685b9e6ffff00       | mov                 byte ptr [ebp - 0x1947], 0

        $sequence_4 = { c68582fdffff00 c68583fdffff00 c68584fdffff00 c68585fdffff00 c68586fdffff00 c68587fdffff00 c68588fdffff00 }
            // n = 7, score = 200
            //   c68582fdffff00       | mov                 byte ptr [ebp - 0x27e], 0
            //   c68583fdffff00       | mov                 byte ptr [ebp - 0x27d], 0
            //   c68584fdffff00       | mov                 byte ptr [ebp - 0x27c], 0
            //   c68585fdffff00       | mov                 byte ptr [ebp - 0x27b], 0
            //   c68586fdffff00       | mov                 byte ptr [ebp - 0x27a], 0
            //   c68587fdffff00       | mov                 byte ptr [ebp - 0x279], 0
            //   c68588fdffff00       | mov                 byte ptr [ebp - 0x278], 0

        $sequence_5 = { c685faddffff00 c685fbddffff00 c685fcddffff00 c685fdddffff00 c685feddffff00 c685ffddffff00 c68500deffff00 }
            // n = 7, score = 200
            //   c685faddffff00       | mov                 byte ptr [ebp - 0x2206], 0
            //   c685fbddffff00       | mov                 byte ptr [ebp - 0x2205], 0
            //   c685fcddffff00       | mov                 byte ptr [ebp - 0x2204], 0
            //   c685fdddffff00       | mov                 byte ptr [ebp - 0x2203], 0
            //   c685feddffff00       | mov                 byte ptr [ebp - 0x2202], 0
            //   c685ffddffff00       | mov                 byte ptr [ebp - 0x2201], 0
            //   c68500deffff00       | mov                 byte ptr [ebp - 0x2200], 0

        $sequence_6 = { c68585d3ffff24 c68586d3ffff00 c68587d3ffff00 c68588d3ffff48 c68589d3ffff83 c6858ad3ffffc4 }
            // n = 6, score = 200
            //   c68585d3ffff24       | mov                 byte ptr [ebp - 0x2c7b], 0x24
            //   c68586d3ffff00       | mov                 byte ptr [ebp - 0x2c7a], 0
            //   c68587d3ffff00       | mov                 byte ptr [ebp - 0x2c79], 0
            //   c68588d3ffff48       | mov                 byte ptr [ebp - 0x2c78], 0x48
            //   c68589d3ffff83       | mov                 byte ptr [ebp - 0x2c77], 0x83
            //   c6858ad3ffffc4       | mov                 byte ptr [ebp - 0x2c76], 0xc4

        $sequence_7 = { 0fb6c3 8b5df8 33da 8955f4 895df8 333c85e0d34500 }
            // n = 6, score = 200
            //   0fb6c3               | movzx               eax, bl
            //   8b5df8               | mov                 ebx, dword ptr [ebp - 8]
            //   33da                 | xor                 ebx, edx
            //   8955f4               | mov                 dword ptr [ebp - 0xc], edx
            //   895df8               | mov                 dword ptr [ebp - 8], ebx
            //   333c85e0d34500       | xor                 edi, dword ptr [eax*4 + 0x45d3e0]

        $sequence_8 = { e8???????? eb26 ff760a ff7610 e8???????? eb19 ff760a }
            // n = 7, score = 200
            //   e8????????           |                     
            //   eb26                 | jmp                 0x28
            //   ff760a               | push                dword ptr [esi + 0xa]
            //   ff7610               | push                dword ptr [esi + 0x10]
            //   e8????????           |                     
            //   eb19                 | jmp                 0x1b
            //   ff760a               | push                dword ptr [esi + 0xa]

        $sequence_9 = { 8d45c8 895db0 8945a0 8d7dd8 0f1f4000 8b4590 2bc6 }
            // n = 7, score = 200
            //   8d45c8               | lea                 eax, [ebp - 0x38]
            //   895db0               | mov                 dword ptr [ebp - 0x50], ebx
            //   8945a0               | mov                 dword ptr [ebp - 0x60], eax
            //   8d7dd8               | lea                 edi, [ebp - 0x28]
            //   0f1f4000             | nop                 dword ptr [eax]
            //   8b4590               | mov                 eax, dword ptr [ebp - 0x70]
            //   2bc6                 | sub                 eax, esi

    condition:
        7 of them and filesize < 966656
}
Download all Yara Rules