{"id":70660,"date":"2017-03-28T11:45:12","date_gmt":"2017-03-28T18:45:12","guid":{"rendered":"https:\/\/securingtomorrow.mcafee.com\/?p=70660"},"modified":"2025-06-04T02:10:38","modified_gmt":"2025-06-04T09:10:38","slug":"ransomware-families-use-nsis-installers-to-avoid-detection-analysis","status":"publish","type":"post","link":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/","title":{"rendered":"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis"},"content":{"rendered":"<p>Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of ransomware is the use of the\u00a0Nullsoft Scriptable Install System (NSIS) with an encrypted payload. The list of the most common families using this technique is diverse and includes Cerber, Locky, Teerac, Crysis, CryptoWall, and CTB-Locker.<\/p>\n<p>Rarely do we see multiple families consistently using the same methods for packing. In this case the payload is dependent on the installer for execution, and the decrypted malware payload never touches the disk. Using the NSIS packaging method makes the malware harder to collect and find using bulk collection techniques. Incoming samples may contain only the DLL responsible for unpacking without the encrypted payload or the NSIS installer. In this post, we will look at how the delivery mechanism works, why it is used, and the challenges it poses to researchers attempting to investigate the malware.<\/p>\n<h2><strong>Why is this delivery method popular?<\/strong><\/h2>\n<p>This attack vector begins its life as the payload of a spam downloader. An unsuspecting user opens an email attachment containing a malicious JavaScript or Word document. The malicious installer (detected as NSIS\/ObfusRansom.*) downloads, launches, and drops a DLL file and an encrypted data file in %TEMP%. The installer then loads the DLL responsible for decrypting and executing the encrypted payload. The unpacker DLL steals five APIs from the NSIS installer&#8217;s import address table. The DLL then reads the encrypted file into memory, goes to a random hardcoded offset within the file, and decrypts the additional APIs it needs to decompress, write to memory, and execute the encrypted malware payload. This level of dependency makes static analysis, emulation, and replication more difficult and creates a delivery system in which the decrypted ransomware never touches the disk. During our analysis of these packers we did not find an example of the decrypted malware executable submitted to any of the well-known sample processing sites, such as VirusTotal.<\/p>\n<h2><strong>Packer execution<\/strong><\/h2>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70779\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg\" alt=\"\" width=\"1922\" height=\"824\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg 1722w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3-300x129.jpeg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3-768x329.jpeg 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3-1024x439.jpeg 1024w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3-1167x500.jpeg 1167w\" sizes=\"auto, (max-width: 1922px) 100vw, 1922px\" \/><\/p>\n<p>The preceding flowchart summarizes the\u00a0basic execution flow of this packer, which has been found with various levels of obfuscation, though all functionally equivalent. We have chosen a less obfuscated sample (MD5: F9AE740F62811D2FB638952A71EF6F72) to make this technical explanation simpler.<\/p>\n<p>Most versions also attempt some code flow obfuscation to delay static analysis. The two common methods of code flow obfuscation we have seen are a QueueUserAPC combined with an alertable Sleep call:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70683\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/queueuserapc-300x140.jpg\" alt=\"\" width=\"401\" height=\"187\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/queueuserapc-300x140.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/queueuserapc.jpg 487w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Or structured exception handling combined with a divide by 0.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70682\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/seh-300x33.jpg\" alt=\"\" width=\"473\" height=\"52\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/seh-300x33.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/seh.jpg 341w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Neither of these methods are unique to this delivery method nor particularly hard to see when performing a static analysis. Once inside the main function, the malware first works on deobfuscating\u00a0 three scrambled strings. These in some cases can be seen just by running \u201cstrings\u201d on the sample. as shown in the following screenshot:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70684\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/strings-300x61.jpg\" alt=\"\" width=\"442\" height=\"90\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/strings-300x61.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/strings.jpg 380w\" sizes=\"auto, (max-width: 442px) 100vw, 442px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>These strings in most cases contain \u201cKernel32,\u201d a Microsoft API call, and the name of the encrypted file dropped by the installer. The following is a sample of Kernel32 being decrypted. All three of these strings are deobfuscated in a similar way.<\/p>\n<p>Deobfuscating algorithm:<\/p>\n<p><a href=\"https:\/\/securingtomorrow.mcafee.com\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/attachment\/kern32decrytalg\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-70821\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/kern32DecrytAlg.jpeg\" alt=\"\" width=\"651\" height=\"400\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/kern32DecrytAlg.jpeg 651w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/kern32DecrytAlg-300x184.jpeg 300w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Memory with obfuscated string:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70680\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/4-300x94.jpg\" alt=\"\" width=\"667\" height=\"209\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/4-300x94.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/4.jpg 631w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Memory with deobfuscated string:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-70679\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/5.jpg\" alt=\"\" width=\"265\" height=\"132\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>After the strings have been deobfuscated, the malware next crafts a pointer to the installer\u2019s memory space and saves the offsets for FirstThunk and OriginalFirstThunk. (A &#8220;thunk&#8221; is an automatically generated piece of code to assist in calling another subroutine.) Essentially, the OriginalFirstThunk is the import name table and FirstThunk is the import address table.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70678\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/6-300x73.jpg\" alt=\"\" width=\"580\" height=\"141\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/6-300x73.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/6.jpg 550w\" sizes=\"auto, (max-width: 580px) 100vw, 580px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The unpacker DLL then walks through the OriginalFirstThunk looking for the names of the five APIs it needs to steal and saves their addresses directly from the corresponding FirstThunk entries. This loop uses some basic logic based on string size and the position of letters to accurately grab the APIs it needs.<\/p>\n<p>&nbsp;<\/p>\n<p>GetProcAddress:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70677\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/7-288x300.jpg\" alt=\"\" width=\"561\" height=\"584\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/7-288x300.jpg 288w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/7-481x500.jpg 481w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/7-32x32.jpg 32w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/7.jpg 621w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>GetModuleHandle:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70676\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/8-300x143.jpg\" alt=\"\" width=\"731\" height=\"348\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/8-300x143.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/8-768x367.jpg 768w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/8.jpg 868w\" sizes=\"auto, (max-width: 731px) 100vw, 731px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>GetFileSize:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70675\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/9-300x170.jpg\" alt=\"\" width=\"657\" height=\"373\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/9-300x170.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/9.jpg 587w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>GlobalAlloc:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70674\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/10-300x252.jpg\" alt=\"\" width=\"561\" height=\"471\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/10-300x252.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/10.jpg 535w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>ReadFile:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70673\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/11-300x181.jpg\" alt=\"\" width=\"607\" height=\"366\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/11-300x181.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/11.jpg 628w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>These five stolen APIs are used to read the encrypted file into memory, where it will later decrypt the second layer of APIs it needs.<\/p>\n<p>The packer next prepares the payload. When the parent NSIS installer runs, one of the files it drops is an encrypted and compressed file. This file is the main payload of the malware, which the packer is preparing to launch. As we mentioned, our research shows this payload can be one of a wide variety of malware, including several ransomware variants.<\/p>\n<p>The malware first opens a file handle to the payload using the CreateFile API. The payload name and extension is one of the strings already deobfuscated.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70672\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/12-300x67.jpg\" alt=\"\" width=\"748\" height=\"167\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/12-300x67.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/12.jpg 692w\" sizes=\"auto, (max-width: 748px) 100vw, 748px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Value of ECX (filename):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70671\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/13-300x13.jpg\" alt=\"\" width=\"599\" height=\"26\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/13-300x13.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/13.jpg 618w\" sizes=\"auto, (max-width: 599px) 100vw, 599px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The malware obtains the size of the file needed for decrypting and reading the file. With the file size, a new chunk of memory is allocated for the file to be read into memory:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70670\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/14-300x109.jpg\" alt=\"\" width=\"614\" height=\"223\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/14-300x109.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/14.jpg 674w\" sizes=\"auto, (max-width: 614px) 100vw, 614px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>With the encrypted file now stored in memory, the malware begins processing this file by decrypting the APIs&#8217; names. Each sample we studied had the location of both the API names and decryption key hardcoded in the sample. We also found that both of these could typically be found in the first 0x1FFF bytes of the file. The decrypting of the API strings is done in a loop using simple arithmetic.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70669\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/15-296x300.jpg\" alt=\"\" width=\"595\" height=\"602\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15-296x300.jpg 296w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15-493x500.jpg 493w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15-32x32.jpg 32w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15-50x50.jpg 50w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15-64x64.jpg 64w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15-96x96.jpg 96w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/15.jpg 577w\" sizes=\"auto, (max-width: 595px) 100vw, 595px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Encrypted APIs:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70668\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/16-300x86.jpg\" alt=\"\" width=\"610\" height=\"175\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/16-300x86.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/16.jpg 654w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Depending on the sample, this code can be extremely obfuscated. We have decompiled this sample and simplified the decryption algorithm used in this loop to only the relevant lines shown below:<\/p>\n<p>do{<br \/>\napi = *(api_base + counter);<br \/>\nkey = ~*(counter + randomoffset);<br \/>\n*(api_base + counter) = api &amp; key | ~key &amp; ~api;<br \/>\n++counter;<br \/>\n}while ( counter &lt; 330 );<\/p>\n<p>We can see the \u201cencryption\u201d here is extremely basic. Some samples we found had slightly different decryption algorithms; however, they were always very basic arithmetic operations against a stored key. This function does a bitwise AND once with the key and the encrypted value and then again with those values NOTed. The results are then bitwise ORed. In our group of samples, the strings being decrypted were always the same; thus the number of iterations remained constant, at 0x14A (330).<\/p>\n<p>Decrypted APIs:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70667\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/17-300x147.jpg\" alt=\"\" width=\"576\" height=\"282\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/17-300x147.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/17.jpg 657w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The next major task is the decryption of the payload itself. The following shows the memory location of the encrypted payload:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70666\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/18-300x147.jpg\" alt=\"\" width=\"570\" height=\"279\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/18-300x147.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/18.jpg 655w\" sizes=\"auto, (max-width: 570px) 100vw, 570px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The entire file does not go through the decryption process, only the executable itself. The malware uses the size gathered above from GetFileSize and a hardcoded value to determine the amount of bytes to decrypt.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70686\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/subtracting-300x16.jpg\" alt=\"\" width=\"769\" height=\"41\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/subtracting-300x16.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/subtracting.jpg 696w\" sizes=\"auto, (max-width: 769px) 100vw, 769px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The decryption algorithm for the payload in our samples was identical to that of the APIs decryption algorithm.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70665\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/19-246x300.jpg\" alt=\"\" width=\"475\" height=\"580\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/19-246x300.jpg 246w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/19-410x500.jpg 410w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/19.jpg 452w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>There is a small noticeable difference from the API decryption process based on when the loop is finished. As shown above, ebx holds the amount of bytes to decrypt, which is now acting as a counter.<\/p>\n<p>Decrypted payload:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70664\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/20-300x150.jpg\" alt=\"\" width=\"492\" height=\"246\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/20-300x150.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/20.jpg 641w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>With the file and APIs now decrypted, the malware decompresses its payload. The malware authors used standard Windows APIs to perform their compression and use them again after decryption through a call to RtlDecompressBuffer. In this API the \u201c2\u201d pushed onto the stack represents the type of compression used. According to Microsoft documentation, 2 stands for LZ decompression.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70663\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/21-300x66.jpg\" alt=\"\" width=\"681\" height=\"150\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/21-300x66.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/21.jpg 643w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>With the payload fully decrypted and decompressed in memory, we can now dump the fully functional standalone payload using Windbg\u2019s \u201c.writemem\u201d function. This allows us to study the payloads and determine whether they are known ransomware variants; however, theses specific payloads had not yet been seen by common malware research sites such as VirusTotal.<\/p>\n<p>Now setup is needed to execute this payload in memory. The decrypted payload never touches the disk, helping reduce the probability of detection. The first step is to call CreateProcess in a suspended state. The malware executes in this process:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70662\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/22-300x82.jpg\" alt=\"\" width=\"534\" height=\"146\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/22-300x82.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/22.jpg 557w\" sizes=\"auto, (max-width: 534px) 100vw, 534px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Following the CreateProcess API, the malware uses a standard process-hollowing technique. VirtualAlloc, GetThreadContext, ReadProcessMemory, and NtUnmapViewofSection are used in preparation to\u00a0write its payload into the new thread. WriteProcessMemory copies the unencrypted payload into the new thread. Next a Sleep and ResumeThread call start the thread. Once the thread has started, the malware immediately terminates the parent thread.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-70661\" src=\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/23-300x282.jpg\" alt=\"\" width=\"576\" height=\"542\" srcset=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/23-300x282.jpg 300w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/23-532x500.jpg 532w, https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/23.jpg 590w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Summary<\/strong><\/h2>\n<p>The core functionality of these samples is very simple and does not exhibit any new behavior; yet the delivery method presents a new and interesting challenge. The delivery of ransomware in NSIS installers with an encrypted payload has proven to be a unique and effective method for delivering a wide range of malware. Currently all the samples explored have contained only variants of ransomware; however, we can easily imagine other families of malware using this technique. We have seen a wide range of anti-emulation methods, strong code-obfuscation techniques, and variance in hardcoded values. The encryption used for the fields and APIs is generally very weak and not designed to be the main challenge for reversing or detection. It is likely that either one threat actor is distributing multiple forms of ransomware, or multiple threat actors are using the same group to distribute their ransomware.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for&#8230;<\/p>\n","protected":false},"author":893,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[442],"tags":[338,180,4549],"coauthors":[4135,4927],"class_list":["post-70660","post","type-post","status-publish","format-standard","hentry","category-mcafee-labs","tag-endpoint-protection","tag-malware","tag-ransomware"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ransomware Families Use NSIS Installers to Avoid Detection, Analysis | McAfee Blog<\/title>\n<meta name=\"description\" content=\"Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis | McAfee Blog\" \/>\n<meta property=\"og:description\" content=\"Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"McAfee Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/McAfee\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-28T18:45:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-04T09:10:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1722\" \/>\n\t<meta property=\"og:image:height\" content=\"738\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Charles Crofford, Douglas McKee\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@McAfee\" \/>\n<meta name=\"twitter:site\" content=\"@McAfee\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Charles Crofford, Douglas McKee\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/\"},\"author\":{\"name\":\"Charles Crofford\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/e9d85cdcffcaf18ac275f7affe663a26\"},\"headline\":\"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis\",\"datePublished\":\"2017-03-28T18:45:12+00:00\",\"dateModified\":\"2025-06-04T09:10:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/\"},\"wordCount\":1502,\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg\",\"keywords\":[\"endpoint protection\",\"malware\",\"ransomware\"],\"articleSection\":[\"McAfee Labs\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/\",\"name\":\"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis | McAfee Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg\",\"datePublished\":\"2017-03-28T18:45:12+00:00\",\"dateModified\":\"2025-06-04T09:10:38+00:00\",\"description\":\"Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage\",\"url\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg\",\"contentUrl\":\"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Other Blogs\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"McAfee Labs\",\"item\":\"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#website\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/\",\"name\":\"McAfee Blog\",\"description\":\"Internet Security News\",\"publisher\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.mcafee.com\/blogs\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#organization\",\"name\":\"McAfee\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png\",\"contentUrl\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png\",\"width\":1286,\"height\":336,\"caption\":\"McAfee\"},\"image\":{\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/McAfee\/\",\"https:\/\/x.com\/McAfee\",\"https:\/\/www.linkedin.com\/company\/mcafee\/\",\"https:\/\/www.youtube.com\/McAfee\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/e9d85cdcffcaf18ac275f7affe663a26\",\"name\":\"Charles Crofford\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/image\/ac4ea1b831c044fdd6dddd6a627c0c7c\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/Charles-Crofford-96x96.jpg\",\"contentUrl\":\"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/Charles-Crofford-96x96.jpg\",\"caption\":\"Charles Crofford\"},\"description\":\"Malware Researcher, Security Engineer, Computing Enthusiast.\",\"url\":\"https:\/\/www.mcafee.com\/blogs\/author\/charles-crofford\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis | McAfee Blog","description":"Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis | McAfee Blog","og_description":"Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of","og_url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/","og_site_name":"McAfee Blog","article_publisher":"https:\/\/www.facebook.com\/McAfee\/","article_published_time":"2017-03-28T18:45:12+00:00","article_modified_time":"2025-06-04T09:10:38+00:00","og_image":[{"width":1722,"height":738,"url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg","type":"image\/jpeg"}],"author":"Charles Crofford, Douglas McKee","twitter_card":"summary_large_image","twitter_creator":"@McAfee","twitter_site":"@McAfee","twitter_misc":{"Written by":"Charles Crofford, Douglas McKee","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#article","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/"},"author":{"name":"Charles Crofford","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/e9d85cdcffcaf18ac275f7affe663a26"},"headline":"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis","datePublished":"2017-03-28T18:45:12+00:00","dateModified":"2025-06-04T09:10:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/"},"wordCount":1502,"publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg","keywords":["endpoint protection","malware","ransomware"],"articleSection":["McAfee Labs"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/","url":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/","name":"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis | McAfee Blog","isPartOf":{"@id":"https:\/\/www.mcafee.com\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg","datePublished":"2017-03-28T18:45:12+00:00","dateModified":"2025-06-04T09:10:38+00:00","description":"Malware families are constantly seeking new ways to hide their code, thwart replication, and avoid detection. A recent trend for the delivery of","breadcrumb":{"@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#primaryimage","url":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg","contentUrl":"https:\/\/securingtomorrow.mcafee.com\/wp-content\/uploads\/2017\/03\/flowchart3.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/ransomware-families-use-nsis-installers-to-avoid-detection-analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mcafee.com\/blogs\/"},{"@type":"ListItem","position":2,"name":"Other Blogs","item":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/"},{"@type":"ListItem","position":3,"name":"McAfee Labs","item":"https:\/\/www.mcafee.com\/blogs\/other-blogs\/mcafee-labs\/"},{"@type":"ListItem","position":4,"name":"Ransomware Families Use NSIS Installers to Avoid Detection, Analysis"}]},{"@type":"WebSite","@id":"https:\/\/www.mcafee.com\/blogs\/#website","url":"https:\/\/www.mcafee.com\/blogs\/","name":"McAfee Blog","description":"Internet Security News","publisher":{"@id":"https:\/\/www.mcafee.com\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mcafee.com\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mcafee.com\/blogs\/#organization","name":"McAfee","url":"https:\/\/www.mcafee.com\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png","contentUrl":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2023\/02\/mcafee-logo.png","width":1286,"height":336,"caption":"McAfee"},"image":{"@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/McAfee\/","https:\/\/x.com\/McAfee","https:\/\/www.linkedin.com\/company\/mcafee\/","https:\/\/www.youtube.com\/McAfee"]},{"@type":"Person","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/e9d85cdcffcaf18ac275f7affe663a26","name":"Charles Crofford","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mcafee.com\/blogs\/#\/schema\/person\/image\/ac4ea1b831c044fdd6dddd6a627c0c7c","url":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/Charles-Crofford-96x96.jpg","contentUrl":"https:\/\/www.mcafee.com\/blogs\/wp-content\/uploads\/2017\/03\/Charles-Crofford-96x96.jpg","caption":"Charles Crofford"},"description":"Malware Researcher, Security Engineer, Computing Enthusiast.","url":"https:\/\/www.mcafee.com\/blogs\/author\/charles-crofford\/"}]}},"_links":{"self":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/70660","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/users\/893"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/comments?post=70660"}],"version-history":[{"count":3,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/70660\/revisions"}],"predecessor-version":[{"id":215077,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/posts\/70660\/revisions\/215077"}],"wp:attachment":[{"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/media?parent=70660"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/categories?post=70660"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/tags?post=70660"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.mcafee.com\/blogs\/wp-json\/wp\/v2\/coauthors?post=70660"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}