Nokoyawa Ransomware - New Karma / Varianti Nemty - WHITEHAT.al

Nokoyawa Ransomware – New Karma / Varianti Nemty

251 0
Nokoyawa Ransomware

Përmbledhje Nokoyawa Ransomware

  1. Në fillim të shkurtit 2022, SentinelLabs vëzhgoi dy mostra të një varianti të ri të Nemty të quajtur “Nokoyawa” (shembulli 1, 2).
  2. SentinelLabs e konsiderojnë Nokoyawa si një evolucion të llojit të mëparshëm Nemty,  New Karma.
    Zhvilluesit janë përpjekur të përmirësojnë kodin përgjegjës për përjashtimin e folders nga enkriptimi, por analiza e SentinelLabs zbulon se algoritmi përmban të meta logjike.
  3. Në mars, TrendMicro sugjeroi që ky ransomware kishte njëfarë lidhje me Hive. Ne vlerësojmë se Hive dhe Nokoyawa janë të ndryshme dhe se kjo e fundit nuk është një riemërtim i Hive RaaS.

Vështrim i përgjithshëm

Në këtë postim, ne hedhim një vështrim më të gjerë në ngjashmëritë midis Nokoyawa dhe Karma ransomware. Studiuesit e mëparshëm kanë nxjerrë në pah ngjashmëritë në zinxhirin e sulmeve midis Nokoyawa dhe Hive ransomware, duke arritur në përfundimin se “Nokoyawa ka të ngjarë të lidhet me Hive, pasi të dy ndajnë disa ngjashmëri të habitshme në zinxhirin e tyre të sulmit, nga mjetet e përdorura deri te rendi në të cilin ata ekzekutojnë hapa të ndryshme.” Kjo Analizë bie ndesh me këtë gjetje, dhe ne vlerësojmë se Nokoyawa është qartë një evolucion i Karma (Nemty), dhe që nuk ka ngjashmëri të mëdha të kodit me Hive.

Ngjashmëritë e Variantit Nokoyawa dhe Karma
Të dy variantet Nokoyawa dhe Karma menaxhojnë enkriptimin multi-thread duke krijuar një port input/output (I/O) (CreateIoCompletionPort), i cili lejon komunikimin midis thread-it përgjegjës për numërimin e skedarëve dhe nënthread-eve (“2 * NumberOfProcessors” ) përgjegjës për enkriptimin e skedarit.

Në të dyja rastet, public key për shënimin e enkriptimit dhe shpërblimit janë të koduar me Base64.

Ashtu si Karma, Nokoyawa pranon parametra të ndryshëm command line, megjithëse në këto të fundit ato dokumentohen nga zhvilluesi përmes një komande -help.

Përveç komandës -help, ofrohen edhe tre komanda të tjera (-network, -file dhe -dir).

Parameter Functionality
-help Prints command line options for execution of ransomware.
-network Encrypts local and network shares.
-file Encrypts specified file.
-dir Encrypts specified directory.

Nëse ransomware ekzekutohet pa asnjë parametër, atëherë ai kodon makinën pa numëruar dhe enkriptuar burimet e rrjetit.

Një parametër i ri që nuk vërehet në versionin Karma është -network, i cili është përgjegjës për enkriptimin e  rrjetit. Numërimi i rrjetit arrihet duke thirrur WNetOpenEnumW, WNetEnumResourceW dhe WNetCloseEnum.

Nuk ka ngjashmëri të rëndësishme midis ransom notes, përveç përdorimit të emailit si pikë  kontakti. Variantet e karmës përmbanin një .onion link që ishte gjithashtu e pranishme në shënimin e pagesës së Karma. Nuk gjetëm asnjë link .onion në kodin Nokoyawa ose në ransom notes.

Nokyoawa ransom note:

Dear usernamme, your files were encrypted, some are compromised.
Be sure, you can't restore it without our help.
You need a private key that only we have.
Contact us to reach an agreement or we will leak your black shit to media:

[email protected]
[email protected]

亲爱的用户名,您的文件已加密,有些已被泄露。
请确保,如果没有我们的帮助,您将无法恢复它。
您需要一个只有我们拥有的私钥。
联系我们以达成协议,否则我们会将您的黑屎泄露给媒体:

[email protected]
[email protected]

Karma ransom note:

Your network has been breached by Karma ransomware group.
We have extracted valuable or sensitive data from your network and encrypted the data on your systems.
Decryption is only possible with a private key that only we posses.
Our group's only aim is to financially benefit from our brief acquaintance,this is a guarantee that we will do what we promise.
Scamming is just bad for business in this line of work.
Contact us to negotiate the terms of reversing the damage we have done and deleting the data we have downloaded.
We advise you not to use any data recovery tools without leaving copies of the initial encrypted file.
You are risking irreversibly damaging the file by doing this.

If we are not contacted or if we do not reach an agreement we will leak your data to journalists and publish it on our website.

http://3nvzqyo6l4wkrzumzu5aod7zbosq4ipgf7ifgj3hsvbcr5vcasordvqd.onion/

If a ransom is payed we will provide the decryption key and proof that we deleted you data.
When you contact us we will provide you proof that we can decrypt your files and that we have downloaded your data.

How to contact us:
[email protected]
[email protected]
[email protected]

Ransom note filename përdor një format të ngjashëm si versionet e mëparshme:<ransom_extension>_<note_name>.txt.

Nokoyawa Karma
ransom_extension “NOKOYAWA” “KARMA” & “KARMA_V2”
note_name “_readme.txt” “-ENCRYPTED.txt”

Stringu <ransom_extension> është përdorur për shumë funksione të ndryshme, duke përfshirë:

  1. file extension i encrypted files
  2. bashkangjitur si të dhëna në një skedar të koduar
  3. pjesë e ransom note filename
  4. mutex (varianti NOKOYAWA është vërejtur se nuk përdor Mutexes)
  5. për të treguar skedarët që do të përjashtohen nga përpunimi i mëtejshëm (p.sh., për të shmangur ekzekutimin në një qark)

Rutina e enkriptimit Nokoyawa’s Flawed
Gjatë numërimit të skedarëve dhe filve, varianti i ri krijon një hash të fieve të numëruara dhe e krahason atë me ato të fileve të përjashtuara. Sidoqoftë, ky algoritëm duket se ka të meta pasi nuk duket logjik dhe as duket se funksionon siç pritej.

Më poshtë është një paraqitje Python e hashing algoritëm .

def nokoyawa_dir_hashing(folder):
    folder_len = len(folder)
    # to unicode
    folder = '\x00'.join([c for c in folder])
    # initial hash value
    nhash = 0x1505
    i = 0
    while i < folder_len:
        c = ord(folder[i])
        # to capital
        c = c if c < 0x61 else c - 0x20
        # hashing
        nhash = ((nhash << 5) + nhash) + c
        # flawed logic, taking only null bytes after 1st character.
        i += 2 if not c else 1
    return nhash & 0xFFFFFFFF

Zbatimi i këtij algoritmi hash në disa raste rezulton në përjashtimin e shumë dosjeve. Logjikisht, dikush do të priste që të kishte një korrelacion 1:1 midis një hash dhe file që do të përjashtohej. Sidoqoftë, kodi  në mënyrë efektive bën të mundur që shumë dosje të përjashtohen bazuar në një hash të vetëm. Ky kod nuk shfaqet në variantet e Karma, të cilat përkundrazi përmbajnë hardcoded strings që tregojnë se cilat file duhet të injorohen gjatë kriptimit.

Tabela e mëposhtme tregon se cilat file synonin të kalonin zhvilluesit gjatë kriptimit.

Hash Folders Intended To Be Excluded
0x11f299b5 program files
0x78fb3995 program files (x86)
0x7c80b426 appdata
0x7c8cc47c windows
0xc27bb715 programdata
0xd6f02889 $recycle.bin

Shtesat e përjashtuara janë .exe, .dll dhe .lnk. Skedarët që përmbajnë “NOKOYAWA” janë gjithashtu të përjashtuara.

Të dy variantet Nokoyawa dhe Karma ngarkojnë në mënyrë dinamike bcrypt.dll dhe thërrasin BCryptGenRandom në mënyrë që të gjenerojnë 0x20 byte të rastësishëm. Ata gjenerojnë një çift çelësash kalimtar Sect233r1 duke përdorur byte e rastësishme të gjeneruara. Malware më pas përdor çelësin privat kalimtar dhe çelësin e integruar publik për të gjeneruar një çelës të përbashkët Salsa20, i cili përdoret më pas për enkriptimin e skedarit. Salsa20 nonce është i koduar si “lvcelvce” në Nokoyawa, ndërsa në versionin Karma ishte “11111111”.

Një paketë e kompletimit I/O dërgohet në thread përgjegjës për enkriptimin. Paketa përfshin sa vijon:

  • File handle
  • File size
  • File data
  • Salsa20 key
  • Salsa nonce
  • public ephemeral key

Fillimi i enkriptimit përmban nje switch që ka katër raste, si më poshtë:

Rasti 1: Shkruan përmbajtjen e koduar dhe strukturën e deshifrimit në file dhe shton “extension”/”emri i variantit”.
Rasti 2: Llogarit vlefshmërinë SHA1 hash dhe enkripton të dhënat e file me Salsa20.
Rasti 3: Mbyll dFile Handle dhe zhvendos file me extection e ri.
Rasti 4: Daljet.

Në të dy variantet, rasti fillestar i çelësit është “2”.

Initial case, encryption thread

Encryption thread case handler

Gjatë Rastit 2, malware shton një shumë kontrolli SHA1, e cila mund të vërtetohet gjatë fazës së deshifrimit. Metoda shkon sipas logjikës së mëposhtme:

  • Mbledh 0x13 bytes (0x14 required for SHA1)
  • XORs Salsa key me buffer  “6”.
  • Bashkon file data to XORed Salsa key
  • Llogarit SHA1.
  • XORs Salsa key me nje  buffer  “\”.
  • Bashkon SHA1 hash me XORed Salsa key.
  •  Validon SHA1.
  • Validation SHA1 hash  0x13 bytes e para are jane shtuar ne strukturen e enkriptuar

Filet e koduar nga Nokoyawa do të kenë strukturën e mëposhtme.

struct nokoyawa_encrypted_file
{
    BYTE  encrypted_file_data[file_size],  // using salsa20
    BYTE  public_ephemeral_key[0x40],  // Sect233r1
    BYTE  validation_hash[0x13],  // last byte is chopped
    STRING ransomware_extension
}

Private key i kërkuar për deshifrim mbahet nga sulmuesi. Kur vihet në dispozicion të viktimës, rutina e deshifrimit lexon strukturën, nxjerr çelësin publik kalimtar dhe gjeneron çelësin Salsa 20 duke përdorur çelësin privat. Të dhënat e koduara më pas deshifrohen me çelës dhe vërtetohen duke përsëritur hash-in e vërtetuar.

Konkluzione 

Ngjashmëria dhe struktura e kodit Nokoyawa sugjerojnë që ai të jetë një evolucion i llojit të mëparshëm Nemty, Karma. Kjo duket të jetë një përpjekje tjetër nga zhvilluesi për të ngatërruar atribuimin. Në këtë kohë, aktori duket se nuk ka ose nuk ofron ndonjë faqe onion leak .

SentinelLabs nuk mund të vërtetonte kërkimet e mëparshme që sugjeronin se Nokoyawa është e lidhur me Hive. Duke pasur parasysh mungesën e ngjashmërive të kodit midis të dyve dhe mungesën e të dhënave të mëtejshme korreluese, ne mund të sugjerojmë vetëm se gjetjet e studiuesve të mëparshëm mund të shpjegohen me mundësinë e një filiali që përdor Hive dhe Nokoyawa.

Treguesit e kompromisit

Karma Ransomware SHA1

960fae8b8451399eb80dd7babcc449c0229ee395

Nokoyawa Ransomware SHA1

2904358f825b6eb6b750e13de43da9852c9a9d91
2d92468b5982fbbb39776030fab6ac35c4a9b889
32c2ecf9703aec725034ab4a8a4c7b2944c1f0b7

Nokoyawa Ransom Note Email Addresses

[email protected]
[email protected]
[email protected]
[email protected]

Nokoyawa YARA Rule

rule Nokoyawa_Nemty
{
    meta:  
        author = "@Tera0017"
        description = "Nokoyawa, Nemty/Karma ransomware variant"    
        Reference = "https://www.sentinelone.com/labs/nokoyawa-ransomware-new-karma-nemty-variant-wears-thin-disguise/"
    
    strings:
        $code1 = {B8 (41| 43) 00 00 00 [10-30] 83 F8 5A}
        $code2 = {48 8B 4C 24 08 F0 0F C1 01 03 44 24 10}      
        $code3 = {83 E8 20 88 [7] 48 C1 E0 05 48 03 44 24}
        $code4 = {48 C7 44 24 ?? 05 15 00 00}
        $string1 = "RGVhciB1c2VybmFtbWUsIHlvdXIgZmlsZXMgd2VyZSBlbmNyeXB0ZWQsIHNvbWUgY" ascii
        $string2 = "-network" fullword wide
        $string3 = "-help" fullword wide
        $winapi1 = "PostQueuedCompletionStatus" fullword ascii
        $winapi2 = "GetSystemInfo" fullword ascii
        $winapi3 = "WNetEnumResourceW" fullword ascii
        $winapi4 = "GetCommandLineW" fullword ascii
        $winapi5 = "BCryptGenRandom" fullword ascii
        
    condition:
        all of ($winapi*) and 4 of ($code*, $string*)
}

Leave a Reply