SYMBOLCOMMON_NAMEaka. SYNONYMS
win.uroburos (Back to overview)

Uroburos

aka: Snake

Actor(s): Turla

VTCollection    

Uroburos is a driver for Windows, including a bypass of PatchGuard. According to Andrzej Dereszowski and Matthieu Kaczmarek, "the techniques used demonstrate [their] excellent knowledge of Windows kernel internals."

References
2023-05-09CISACISA
Hunting Russian Intelligence “Snake” Malware
Agent.BTZ Cobra Carbon System Uroburos
2022-05-11ExaTrackTristan Pourcelot
Tricephalic Hellkeeper: a tale of a passive backdoor
BPFDoor Bvp47 Uroburos
2020-01-01SecureworksSecureWorks
IRON HUNTER
Agent.BTZ Cobra Carbon System LightNeuron Mosquito Nautilus Neuron Skipper Uroburos Turla
2018-11-22nccgroupMatt Lewis
Turla PNG Dropper is back
Uroburos Turla
2018-11-22nccgroupBen Humphrey
Turla PNG Dropper is back
Uroburos Turla
2018-03-01CrySyS LabBoldizsar Bencsath
Territorial Dispute – NSA’s perspective on APT landscape
9002 RAT Agent.BTZ DuQu EYService Flame FlowerShop Stuxnet Uroburos
2018-02-09ExaTrackStéfan Le Berre
Hey Uroburos! What's up ?
Uroburos
2017-08-18vmwareJared Myers
Threat Analysis: Carbon Black Threat Research Dissects PNG Dropper
Uroburos
2014-11-11G DataG Data
The Uroburos case: new sophisticated RAT identified
Agent.BTZ Uroburos
2014-08-07Kaspersky LabsGReAT
The Epic Turla Operation
Cobra Carbon System Uroburos Wipbot Turla
2014-06-02G DataG Data
Analysis of Uroburos, using WinDbg
Uroburos
2014-05-13G DataG Data
Uroburos rootkit: Belgian Foreign Ministry stricken
Uroburos
2014-03-17BAE SystemsBAE Systems Applied Intelligence
Snake Campaign & Espionage Toolkit
Agent.BTZ Uroburos
2014-03-12Blog (Artem Baranov)Andrzej Dereszowski, Matthieu Kaczmarek
Uroburos: the snake rootkit
Uroburos
2014-03-07G DataG Data
Uroburos – Deeper travel into kernel protection mitigation
Uroburos
2014-02-28G Data BlogG Data
Uroburos - highly complex espionage software with Russian roots
Uroburos
2014-01-01circl.luCIRCL
TR-25 Analysis - Turla / Pfinet / Snake/ Uroburos
Cobra Carbon System Uroburos Turla
Yara Rules
[TLP:WHITE] win_uroburos_auto (20230125 | Detects win.uroburos.)
rule win_uroburos_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2023-01-25"
        version = "1"
        description = "Detects win.uroburos."
        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.uroburos"
        malpedia_rule_date = "20230124"
        malpedia_hash = "2ee0eebba83dce3d019a90519f2f972c0fcf9686"
        malpedia_version = "20230125"
        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 = { 7526 85d2 7411 8b493c }
            // n = 4, score = 400
            //   7526                 | jne                 0x28
            //   85d2                 | test                edx, edx
            //   7411                 | je                  0x13
            //   8b493c               | mov                 ecx, dword ptr [ecx + 0x3c]

        $sequence_1 = { 85d2 7406 8d4801 0fafcd }
            // n = 4, score = 300
            //   85d2                 | div                 ebp
            //   7406                 | test                edx, edx
            //   8d4801               | je                  0xa
            //   0fafcd               | mov                 eax, ecx

        $sequence_2 = { 09c9 7407 ffd1 a1???????? 832d????????04 3905???????? 73de }
            // n = 7, score = 300
            //   09c9                 | or                  ecx, ecx
            //   7407                 | je                  9
            //   ffd1                 | call                ecx
            //   a1????????           |                     
            //   832d????????04       |                     
            //   3905????????         |                     
            //   73de                 | jae                 0xffffffe0

        $sequence_3 = { 85c0 7405 e9???????? 448bc7 }
            // n = 4, score = 300
            //   85c0                 | add                 ecx, 0x108
            //   7405                 | dec                 eax
            //   e9????????           |                     
            //   448bc7               | cmp                 eax, ecx

        $sequence_4 = { 8b493c 8bc2 4881c108010000 483bc1 }
            // n = 4, score = 300
            //   8b493c               | imul                ecx, ebp
            //   8bc2                 | test                edx, edx
            //   4881c108010000       | je                  8
            //   483bc1               | lea                 ecx, [eax + 1]

        $sequence_5 = { 29c0 eb4e 57 56 }
            // n = 4, score = 300
            //   29c0                 | sub                 eax, eax
            //   eb4e                 | jmp                 0x50
            //   57                   | push                edi
            //   56                   | push                esi

        $sequence_6 = { 85c0 750d 48837c245000 0f95c0 8803 33c0 }
            // n = 6, score = 300
            //   85c0                 | cmp                 ecx, edx
            //   750d                 | jne                 7
            //   48837c245000         | dec                 ebp
            //   0f95c0               | test                eax, eax
            //   8803                 | test                eax, eax
            //   33c0                 | jne                 0xf

        $sequence_7 = { 895c2430 e9???????? 33d2 448d4268 }
            // n = 4, score = 300
            //   895c2430             | dec                 eax
            //   e9????????           |                     
            //   33d2                 | cmp                 dword ptr [esp + 0x50], 0
            //   448d4268             | setne               al

        $sequence_8 = { 09c0 7503 21450c 837d0c00 }
            // n = 4, score = 300
            //   09c0                 | or                  eax, eax
            //   7503                 | jne                 5
            //   21450c               | and                 dword ptr [ebp + 0xc], eax
            //   837d0c00             | cmp                 dword ptr [ebp + 0xc], 0

        $sequence_9 = { 83fe01 89450c 750c 09c0 7537 57 50 }
            // n = 7, score = 300
            //   83fe01               | cmp                 esi, 1
            //   89450c               | mov                 dword ptr [ebp + 0xc], eax
            //   750c                 | jne                 0xe
            //   09c0                 | or                  eax, eax
            //   7537                 | jne                 0x39
            //   57                   | push                edi
            //   50                   | push                eax

        $sequence_10 = { 54 5d 53 8b5d08 56 8b750c 09f6 }
            // n = 7, score = 300
            //   54                   | push                esp
            //   5d                   | pop                 ebp
            //   53                   | push                ebx
            //   8b5d08               | mov                 ebx, dword ptr [ebp + 8]
            //   56                   | push                esi
            //   8b750c               | mov                 esi, dword ptr [ebp + 0xc]
            //   09f6                 | or                  esi, esi

        $sequence_11 = { 5f 09ff 59 751e 56 ff15???????? 8d86e8030000 }
            // n = 7, score = 300
            //   5f                   | pop                 edi
            //   09ff                 | or                  edi, edi
            //   59                   | pop                 ecx
            //   751e                 | jne                 0x20
            //   56                   | push                esi
            //   ff15????????         |                     
            //   8d86e8030000         | lea                 eax, [esi + 0x3e8]

        $sequence_12 = { 40 c20c00 55 54 5d }
            // n = 5, score = 300
            //   40                   | inc                 eax
            //   c20c00               | ret                 0xc
            //   55                   | push                ebp
            //   54                   | push                esp
            //   5d                   | pop                 ebp

        $sequence_13 = { 7704 4183c220 4585c9 740a 453bca 7505 4d85c0 }
            // n = 7, score = 300
            //   7704                 | ja                  6
            //   4183c220             | inc                 ecx
            //   4585c9               | add                 edx, 0x20
            //   740a                 | inc                 ebp
            //   453bca               | test                ecx, ecx
            //   7505                 | je                  0xc
            //   4d85c0               | inc                 ebp

        $sequence_14 = { 8bc1 f7f5 85d2 7406 }
            // n = 4, score = 300
            //   8bc1                 | cmp                 eax, ecx
            //   f7f5                 | test                edx, edx
            //   85d2                 | je                  0x15
            //   7406                 | mov                 ecx, dword ptr [ecx + 0x3c]

        $sequence_15 = { 7433 eb13 8b0d???????? 8b09 09c9 7407 }
            // n = 6, score = 300
            //   7433                 | je                  0x35
            //   eb13                 | jmp                 0x15
            //   8b0d????????         |                     
            //   8b09                 | mov                 ecx, dword ptr [ecx]
            //   09c9                 | or                  ecx, ecx
            //   7407                 | je                  9

        $sequence_16 = { 48 8bf0 49 2bf5 4c }
            // n = 5, score = 200
            //   48                   | dec                 eax
            //   8bf0                 | mov                 esi, eax
            //   49                   | dec                 ecx
            //   2bf5                 | sub                 esi, ebp
            //   4c                   | dec                 esp

        $sequence_17 = { 83c601 49 83c508 41 3bdf 7c82 45 }
            // n = 7, score = 200
            //   83c601               | add                 esi, 1
            //   49                   | dec                 ecx
            //   83c508               | add                 ebp, 8
            //   41                   | inc                 ecx
            //   3bdf                 | cmp                 ebx, edi
            //   7c82                 | jl                  0xffffff84
            //   45                   | inc                 ebp

        $sequence_18 = { 750a 8d43ff e9???????? 33db }
            // n = 4, score = 200
            //   750a                 | jne                 0xc
            //   8d43ff               | lea                 eax, [ebx - 1]
            //   e9????????           |                     
            //   33db                 | xor                 ebx, ebx

        $sequence_19 = { b901000000 e8???????? 48 85c0 48 8bd8 }
            // n = 6, score = 200
            //   b901000000           | mov                 ecx, 1
            //   e8????????           |                     
            //   48                   | dec                 eax
            //   85c0                 | test                eax, eax
            //   48                   | dec                 eax
            //   8bd8                 | mov                 ebx, eax

        $sequence_20 = { 85c0 7434 48 83c310 83c701 48 }
            // n = 6, score = 200
            //   85c0                 | test                eax, eax
            //   7434                 | je                  0x36
            //   48                   | dec                 eax
            //   83c310               | add                 ebx, 0x10
            //   83c701               | add                 edi, 1
            //   48                   | dec                 eax

        $sequence_21 = { ff15???????? 44 8bd8 49 c1e320 4c }
            // n = 6, score = 200
            //   ff15????????         |                     
            //   44                   | inc                 esp
            //   8bd8                 | mov                 ebx, eax
            //   49                   | dec                 ecx
            //   c1e320               | shl                 ebx, 0x20
            //   4c                   | dec                 esp

        $sequence_22 = { 8b8f58010000 e8???????? 48 895c2430 }
            // n = 4, score = 200
            //   8b8f58010000         | mov                 ecx, dword ptr [edi + 0x158]
            //   e8????????           |                     
            //   48                   | dec                 eax
            //   895c2430             | mov                 dword ptr [esp + 0x30], ebx

        $sequence_23 = { 8b5c2450 48 83c448 c3 4c 8bc6 }
            // n = 6, score = 200
            //   8b5c2450             | mov                 ebx, dword ptr [esp + 0x50]
            //   48                   | dec                 eax
            //   83c448               | add                 esp, 0x48
            //   c3                   | ret                 
            //   4c                   | dec                 esp
            //   8bc6                 | mov                 eax, esi

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