The Gentlemen Ransomware Notes

64-bit Go PE, heavily obfuscated with Garble. About 2647 functions. Ransom note name, wallpaper, and file extension are not present as plain text in this build.

Arguments

Needs --password or it exits (anti-sandbox gate).

Known flags:

Default encrypts roughly 27% of each file. Partial encryption is still enough to break the file.

What it does

Hybrid encryption: per-file Curve25519 key, ECDH with operator public key, XChaCha20 for content. Ephemeral public key stored in file footer for later decrypt.

Walks local and network drives, skips some system paths, encrypts files, drops README-GENTLEMEN.txt, can set wallpaper to gentlemen.bmp.

With --spread it copies itself to other hosts (SMB, PsExec-style, WMI, tasks, etc.).

After encryption: deletes shadow copies, clears event logs, optional free-space wipe. Some builds self-delete.

File extension

Per-build extension. In THIS sample it is not recoverable as plaintext (Garble).

Earlier LEAs in mal_encrypt_or_main looked like extension candidates but resolve to DLL names:

Do not treat those as the ransomware extension.

Evasion

Important functions

High confidence:

Best-effort labels (not fully proven from clean decompile):

Start order: mal_entry -> mal_core_logic -> mal_encrypt_or_main -> mal_largest_func

Visible strings

IOCs (this sample)

Hashes above. PE64 Go Garble. Entropy 6.58. Family artifacts on disk (other builds): README-GENTLEMEN.txt, gentlemen.bmp, gentlemen_system task, per-build short extension.

Victimology

Active since mid-2025. By mid-2026 among top claim-volume groups.

Sectors: manufacturing, professional services, technology, healthcare, transport, finance. Regions: 60+ countries. US often highest volume, also Thailand, Brazil, France, Germany, India, Colombia. Opportunistic, access-driven, double extortion. Hits SMBs and mid-market a lot.

Timeline:

YARA

rule TheGentlemen_Ransomware_Storm2697
{
    meta:
        description = "Detects The Gentlemen ransomware (Storm-2697) Go/Garble builds"
        author = "threat-intel"
        reference = "The Gentlemen / Storm-2697"
        date = "2026-08-15"

    strings:
        $s_main = "main.main" ascii
        $s_encrypt = "Encrypt" ascii
        $s_crypt = "CryptEncrypt" ascii

        $f_note = "README-GENTLEMEN.txt" ascii
        $f_bmp = "gentlemen.bmp" ascii
        $f_task = "gentlemen_system" ascii
        $f_marker = "--marker--GENTLEMEN" ascii
        $f_eph = "--eph--" ascii
        $f_pass = "--password" ascii
        $f_spread = "--spread" ascii
        $f_wipe = "--wipe" ascii
        $f_superfast = "--superfast" ascii
        $f_banner = "[+] Encryption started" ascii

        $go1 = "runtime.main" ascii
        $go2 = "Go buildinf:" ascii

    condition:
        uint16(0) == 0x5A4D and
        filesize < 15MB and
        (
            (3 of ($s_*) and 1 of ($go*))
            or
            (2 of ($f_*) and 1 of ($go*))
        )
}
reverser.space
Loading