SYMBOLCOMMON_NAMEaka. SYNONYMS
win.webmonitor (Back to overview)

WebMonitor RAT

aka: RevCode
VTCollection     URLhaus        

On its website, Webmonitor RAT is described as 'a very powerful, user-friendly, easy-to-setup and state-of-the-art monitoring tool. Webmonitor is a fully native RAT, meaning it will run on all Windows versions and languages starting from Windows XP and up, and perfectly compatible with all crypters and protectors.'
Unit42 notes in their analysis that it is offered as C2-as-a-service and raises the controversial aspect that the builder allows to create client binaries that will not show any popup or dialogue during installation or while running on a target system.

References
2020-11-16 ⋅ Trend Micro ⋅ Trendmicro
Malicious Actors Target Comm Apps such as Zoom, Slack, Discord
WebMonitor RAT
2020-09-04 ⋅ KrabsOnSecurity ⋅ Mr. Krabs
BitRAT pt. 2: Hidden Browser, SOCKS5 proxy, and UnknownProducts Unmasked
BitRAT WebMonitor RAT
2020-02-04 ⋅ RevCode
RevCode RAT
WebMonitor RAT
2019-04-22 ⋅ KrebsOnSecurity ⋅ Brian Krebs
Who’s Behind the RevCode WebMonitor RAT?
WebMonitor RAT
2018-04-13 ⋅ Palo Alto Networks Unit 42 ⋅ Mike Harbison, Simon Conant
Say “Cheese”: WebMonitor RAT Comes with C2-as-a-Service (C2aaS)
WebMonitor RAT
Yara Rules
[TLP:WHITE] win_webmonitor_auto (20260917 | Detects win.webmonitor.)
rule win_webmonitor_auto {

    meta:
        author = "Felix Bilstein - yara-signator at cocacoding dot com"
        date = "2026-09-17"
        version = "1"
        description = "Detects win.webmonitor."
        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.webmonitor"
        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 = { 0fb6c0 6a0e 33f0 e8???????? ff75dc 0fb6c0 }
            // n = 6, score = 200
            //   0fb6c0               | movzx               eax, al
            //   6a0e                 | push                0xe
            //   33f0                 | xor                 esi, eax
            //   e8????????           |                     
            //   ff75dc               | push                dword ptr [ebp - 0x24]
            //   0fb6c0               | movzx               eax, al

        $sequence_1 = { 9e 6c 68ff080800 8a3401 a3???????? 0800 8a30 }
            // n = 7, score = 200
            //   9e                   | sahf                
            //   6c                   | insb                byte ptr es:[edi], dx
            //   68ff080800           | push                0x808ff
            //   8a3401               | mov                 dh, byte ptr [ecx + eax]
            //   a3????????           |                     
            //   0800                 | or                  byte ptr [eax], al
            //   8a30                 | mov                 dh, byte ptr [eax]

        $sequence_2 = { 33c0 894df0 894f10 c7471407000000 668907 894dfc }
            // n = 6, score = 200
            //   33c0                 | xor                 eax, eax
            //   894df0               | mov                 dword ptr [ebp - 0x10], ecx
            //   894f10               | mov                 dword ptr [edi + 0x10], ecx
            //   c7471407000000       | mov                 dword ptr [edi + 0x14], 7
            //   668907               | mov                 word ptr [edi], ax
            //   894dfc               | mov                 dword ptr [ebp - 4], ecx

        $sequence_3 = { 33c9 83c410 2bc1 7414 }
            // n = 4, score = 200
            //   33c9                 | xor                 ecx, ecx
            //   83c410               | add                 esp, 0x10
            //   2bc1                 | sub                 eax, ecx
            //   7414                 | je                  0x16

        $sequence_4 = { 1b6100 43 ec fe04ec }
            // n = 4, score = 200
            //   1b6100               | sbb                 esp, dword ptr [ecx]
            //   43                   | inc                 ebx
            //   ec                   | in                  al, dx
            //   fe04ec               | inc                 byte ptr [esp + ebp*8]

        $sequence_5 = { d94200 a4 44 43 00dc 7442 000477 }
            // n = 7, score = 200
            //   d94200               | fld                 dword ptr [edx]
            //   a4                   | movsb               byte ptr es:[edi], byte ptr [esi]
            //   44                   | inc                 esp
            //   43                   | inc                 ebx
            //   00dc                 | add                 ah, bl
            //   7442                 | je                  0x44
            //   000477               | add                 byte ptr [edi + esi*2], al

        $sequence_6 = { a1???????? 41 0094be4100d891 41 }
            // n = 4, score = 200
            //   a1????????           |                     
            //   41                   | inc                 ecx
            //   0094be4100d891       | add                 byte ptr [esi + edi*4 - 0x6e27ffbf], dl
            //   41                   | inc                 ecx

        $sequence_7 = { 0338 8bc6 99 83c004 8901 }
            // n = 5, score = 200
            //   0338                 | add                 edi, dword ptr [eax]
            //   8bc6                 | mov                 eax, esi
            //   99                   | cdq                 
            //   83c004               | add                 eax, 4
            //   8901                 | mov                 dword ptr [ecx], eax

        $sequence_8 = { 50 895de8 c745ec0f000000 885dd8 }
            // n = 4, score = 200
            //   50                   | push                eax
            //   895de8               | mov                 dword ptr [ebp - 0x18], ebx
            //   c745ec0f000000       | mov                 dword ptr [ebp - 0x14], 0xf
            //   885dd8               | mov                 byte ptr [ebp - 0x28], bl

        $sequence_9 = { 2bf0 8bc1 99 83e203 03c2 c1f802 2bf8 }
            // n = 7, score = 200
            //   2bf0                 | sub                 esi, eax
            //   8bc1                 | mov                 eax, ecx
            //   99                   | cdq                 
            //   83e203               | and                 edx, 3
            //   03c2                 | add                 eax, edx
            //   c1f802               | sar                 eax, 2
            //   2bf8                 | sub                 edi, eax

        $sequence_10 = { 00e8 894100 dc2442 00e8 17 42 0048a5 }
            // n = 7, score = 200
            //   00e8                 | add                 al, ch
            //   894100               | mov                 dword ptr [ecx], eax
            //   dc2442               | fsub                qword ptr [edx + eax*2]
            //   00e8                 | add                 al, ch
            //   17                   | pop                 ss
            //   42                   | inc                 edx
            //   0048a5               | add                 byte ptr [eax - 0x5b], cl

        $sequence_11 = { 04e4 fd 0468 ff05???????? 000d???????? }
            // n = 5, score = 200
            //   04e4                 | add                 al, 0xe4
            //   fd                   | std                 
            //   0468                 | add                 al, 0x68
            //   ff05????????         |                     
            //   000d????????         |                     

        $sequence_12 = { 0f434520 50 ff75c8 ff15???????? }
            // n = 4, score = 200
            //   0f434520             | cmovae              eax, dword ptr [ebp + 0x20]
            //   50                   | push                eax
            //   ff75c8               | push                dword ptr [ebp - 0x38]
            //   ff15????????         |                     

        $sequence_13 = { ff01 04e8 fd 0512002413 000d???????? 04e4 fd }
            // n = 7, score = 200
            //   ff01                 | inc                 dword ptr [ecx]
            //   04e8                 | add                 al, 0xe8
            //   fd                   | std                 
            //   0512002413           | add                 eax, 0x13240012
            //   000d????????         |                     
            //   04e4                 | add                 al, 0xe4
            //   fd                   | std                 

        $sequence_14 = { 03c6 50 8d0433 50 e8???????? 83c418 ebb0 }
            // n = 7, score = 200
            //   03c6                 | add                 eax, esi
            //   50                   | push                eax
            //   8d0433               | lea                 eax, [ebx + esi]
            //   50                   | push                eax
            //   e8????????           |                     
            //   83c418               | add                 esp, 0x18
            //   ebb0                 | jmp                 0xffffffb2

        $sequence_15 = { 0094be4100d891 41 0084e84100a872 42 00a06a4200f8 }
            // n = 5, score = 200
            //   0094be4100d891       | add                 byte ptr [esi + edi*4 - 0x6e27ffbf], dl
            //   41                   | inc                 ecx
            //   0084e84100a872       | add                 byte ptr [eax + ebp*8 + 0x72a80041], al
            //   42                   | inc                 edx
            //   00a06a4200f8         | add                 byte ptr [eax - 0x7ffbd96], ah

    condition:
        7 of them and filesize < 1984512
}
[TLP:WHITE] win_webmonitor_w0   (20200304 | Revcode RAT)
rule win_webmonitor_w0 {
    meta:
        description = "Revcode RAT"
        author = "James_inthe_box"
        reference = "ee1b9659f2193896ce3469b5f90b82af3caffcba428e8524be5a9fdf391d8dd8"
        date = "2020/02"
        maltype = "RAT"
        source = "https://pastebin.com/M2k5Vg3c"
        malpedia_reference = "https://malpedia.caad.fkie.fraunhofer.de/details/win.webmonitor"
        malpedia_version = "20200304"
        malpedia_sharing = "TLP:WHITE"
        malpedia_license = ""

    strings:
        $string1 = "SCREEN_STREAM_START"
        $string2 = "CLIPBOARD_SET"
        $string3 = "SERVICES_RESUME"
        $string4 = "KEYLOG:"
        $string5 = "WEBCAM_DRIVERS"
        $string6 = "image.bmp" wide
        $string7 = "APPACTIVATE" wide
 
    condition:
        all of ($string*)
}
Download all Yara Rules