{"id":2549,"date":"2024-02-19T08:47:33","date_gmt":"2024-02-19T07:47:33","guid":{"rendered":"https:\/\/lab52.io\/blog\/?p=2549"},"modified":"2024-02-29T15:08:49","modified_gmt":"2024-02-29T14:08:49","slug":"pelmeni-wrapper-new-wrapper-of-kazuar-turla-backdoor","status":"publish","type":"post","link":"https:\/\/lab52.io\/blog\/pelmeni-wrapper-new-wrapper-of-kazuar-turla-backdoor\/","title":{"rendered":"Pelmeni Wrapper: New Wrapper of Kazuar (Turla Backdoor)"},"content":{"rendered":"\n<p>Turla is an APT group allegedly linked to the intelligence service FSB (Federal Security Service) from the Russian Federation. This threat actor is specifically in the Center 16 unit, which carries out the collection of radio-electronic intelligence on communications facilities. Moreover, the Center 16 is in charge of intercepting, decrypting and processing the electronic message and the technical operation of compromising foreign targets. &nbsp;<\/p>\n\n\n\n<p>Turla\u2019s activity dates back as far as 2004. This actor often carries out exploitation campaigns against organizations from the former Soviet Union countries. Turla usually targets organizations from several sectors as: governments, research centers, embassies, energy, telecommunications and pharmaceutical among other sectors.&nbsp;<\/p>\n\n\n\n<p>This research has resulted in a set of samples which have been found in VirusTotal during early 2024. Below is a timeline of the publicly known samples. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"559\" height=\"270\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-48.png\" alt=\"\" class=\"wp-image-2683\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-48.png 559w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-48-300x145.png 300w\" sizes=\"(max-width: 559px) 100vw, 559px\" \/><figcaption>Samples timeline<\/figcaption><\/figure><\/div>\n\n\n\n<p>In particular, in this article, one of the samples  used in one of the latest campaigns (sample #6). This investigation reveals how Turla is <strong>using a new wrapper of Kazuar as part of their infection chain<\/strong>. The most prominent aspects of the analysis leading to the extraction of Kazuar and the peculiarities of the identified sample compared to others previously seen in the field are detailed below.&nbsp;<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Infection Chain<\/h1>\n\n\n\n<p>As will be detailed later, the attack is quite targeted, so it is possible that the actors have deposited this piece of malware on the computer after a previous infection.&nbsp;<\/p>\n\n\n\n<p>In order to hide the malware, the actors make use of the Sideload DLL technique, spoofing legitimate libraries related to &#8220;<strong>SkyTel<\/strong>&#8220;, &#8220;<strong>NVIDIA GeForce Experience<\/strong>&#8220;, &#8220;<strong>vncutil<\/strong>&#8221; or &#8220;<strong>ASUS<\/strong>&#8220;.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"324\" height=\"46\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-26.png\" alt=\"\" class=\"wp-image-2586\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-26.png 324w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-26-300x43.png 300w\" sizes=\"(max-width: 324px) 100vw, 324px\" \/><figcaption>Pelmeni Wrapper&#8217;s structure<\/figcaption><\/figure><\/div>\n\n\n\n<p>As a result, when the legitimate application is executed, the malicious Dll (We&#8217;ve dubbed it <strong>Pelmeni Wrapper<\/strong>) is loaded&nbsp; and the infection continues. The resulting infection chain would be as follows&nbsp;:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"509\" height=\"330\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/iconos-adaptables.drawio.png\" alt=\"\" class=\"wp-image-2696\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/iconos-adaptables.drawio.png 509w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/iconos-adaptables.drawio-300x194.png 300w\" sizes=\"(max-width: 509px) 100vw, 509px\" \/><figcaption>Infection chain<\/figcaption><\/figure><\/div>\n\n\n\n<p>For the analysis we will use the most recent sample we have found in public sources, where it has up to 39 detections.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>LaunchGFExperienceLOC.dll<\/strong><\/td><td>15f5e4808549ff67a79f84e23659da912ebbc1dc7c7b100c12b72384a27e412a<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"815\" height=\"193\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-28.png\" alt=\"\" class=\"wp-image-2589\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-28.png 815w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-28-300x71.png 300w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-28-768x182.png 768w\" sizes=\"(max-width: 815px) 100vw, 815px\" \/><figcaption>Pelmeni Wrapper&#8217;s detections<\/figcaption><\/figure><\/div>\n\n\n\n<p>The DLL does not provide much information since most of its content is encrypted. The most interesting thing is the name of its exported functions&nbsp;&nbsp;that appear to be randomly generated.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"856\" height=\"290\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-29.png\" alt=\"\" class=\"wp-image-2590\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-29.png 856w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-29-300x102.png 300w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-29-768x260.png 768w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><figcaption>Pelmeni Wrapper&#8217;s exports<\/figcaption><\/figure><\/div>\n\n\n\n<h1 class=\"wp-block-heading\">Pelmeni Wrapper (Wrapper DLL)<\/h1>\n\n\n\n<p>Through the analysis of LaunchGFExperienceLOC.dll, we see at the EntryPoint, 3 main functions that will guide the program.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"596\" height=\"245\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-30.png\" alt=\"\" class=\"wp-image-2591\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-30.png 596w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-30-300x123.png 300w\" sizes=\"(max-width: 596px) 100vw, 596px\" \/><figcaption>Pelmeni Wrapper&#8217;s entry point<\/figcaption><\/figure><\/div>\n\n\n\n<p>The first function &#8220;<strong>PrintLog<\/strong>&#8221; is in charge of creating a file in the <strong>%TEMP%<\/strong> folder that prints what it is doing. This file has a random name and extension, decoded using an XOR algorithm.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"488\" height=\"205\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-31.png\" alt=\"\" class=\"wp-image-2592\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-31.png 488w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-31-300x126.png 300w\" sizes=\"(max-width: 488px) 100vw, 488px\" \/><figcaption>XOR decryption function<\/figcaption><\/figure><\/div>\n\n\n\n<p>At this point it would print &#8220;DLL_PROCESS_ATTACH&#8221; because the executable has&nbsp; loaded the DLL.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"437\" height=\"116\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-32.png\" alt=\"\" class=\"wp-image-2593\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-32.png 437w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-32-300x80.png 300w\" sizes=\"(max-width: 437px) 100vw, 437px\" \/><figcaption>Pelmeni Wrapper&#8217;s log file<\/figcaption><\/figure><\/div>\n\n\n\n<p>The next EntryPoint function is &#8220;<strong>LoadFunction<\/strong>&#8221; which is responsible for executing one of the exported DLL functions.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"392\" height=\"140\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-33.png\" alt=\"\" class=\"wp-image-2594\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-33.png 392w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-33-300x107.png 300w\" sizes=\"(max-width: 392px) 100vw, 392px\" \/><figcaption>&#8220;LoadFunction&#8221; function<\/figcaption><\/figure><\/div>\n\n\n\n<p>To decrypt the function name, the malware uses a hash generated by the victim&#8217;s &#8220;ComputerName&#8221; xored by a constant. The algorithm used to hash the computer name is <a href=\"https:\/\/gist.github.com\/lastguest\/ 235cbf7d9f5cf97abb79\" data-type=\"URL\" data-id=\"https:\/\/gist.github.com\/lastguest\/ 235cbf7d9f5cf97abb79\">Jenkins&#8217; one_at_a_time<\/a>. This hash will be used as a seed in the pseudorandom number generator algorithm <strong>ranqd1<\/strong>. The generated values will be used to decrypt the function name.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"166\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-34.png\" alt=\"\" class=\"wp-image-2596\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-34.png 361w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-34-300x138.png 300w\" sizes=\"(max-width: 361px) 100vw, 361px\" \/><figcaption>Jenkin&#8217;s one_at_a_time algorithm<\/figcaption><\/figure><\/div>\n\n\n\n<p>The execution continues with the &#8220;<strong>Wvoouo<\/strong>&#8221; method that goes through all the threads of the running process and suspends them, except for the current thread. After this, Pelmeni prints &#8220;After CSPT&#8221; in the log, which could be a reference to &#8220;Check Suspend Threads&#8221;.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"904\" height=\"524\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-35.png\" alt=\"\" class=\"wp-image-2597\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-35.png 904w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-35-300x174.png 300w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-35-768x445.png 768w\" sizes=\"(max-width: 904px) 100vw, 904px\" \/><figcaption>&#8220;Wvoouo&#8221; function managing threads<\/figcaption><\/figure><\/div>\n\n\n\n<p>After this the program executes &#8220;<strong>LoadFunctions<\/strong>&#8221; which loads and executes 3 functions as before.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"335\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-36.png\" alt=\"\" class=\"wp-image-2598\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-36.png 459w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-36-300x219.png 300w\" sizes=\"(max-width: 459px) 100vw, 459px\" \/><figcaption>Load 3 new functions<\/figcaption><\/figure><\/div>\n\n\n\n<p>In the first function &#8220;<strong>Gcqiprj<\/strong>&#8221; we can see how, by means of CreateThread(), it creates a thread that will continue with the execution of the wrapper.&nbsp;&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"642\" height=\"403\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-37.png\" alt=\"\" class=\"wp-image-2600\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-37.png 642w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-37-300x188.png 300w\" sizes=\"(max-width: 642px) 100vw, 642px\" \/><figcaption>&#8220;Gcqiprj&#8221; function creating thread<\/figcaption><\/figure><\/div>\n\n\n\n<p>However, instead of executing that part of the code, it saves its address (0x703C1785) to later redirect the execution flow to it.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"610\" height=\"412\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-38.png\" alt=\"\" class=\"wp-image-2601\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-38.png 610w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-38-300x203.png 300w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><figcaption>&#8220;Gcqiprj&#8221; function saving execution address<\/figcaption><\/figure><\/div>\n\n\n\n<p>The next function \u201d<strong>Urjhmeuo<\/strong>\u201d accesses the contents of that address (<strong>0x703C1785<\/strong>) and copies the entire contents to another memory space, which it will execute. In addition, it adds the instruction &#8220;<strong>push eax<\/strong>&#8221; (0x50 x56) at the beginning to keep the state of the stack correctly. of the stack.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-39.png\" alt=\"\" class=\"wp-image-2602\" width=\"732\" height=\"635\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-39.png 849w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-39-300x260.png 300w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-39-768x667.png 768w\" sizes=\"(max-width: 732px) 100vw, 732px\" \/><figcaption>\u201cUrjhmeuo\u201d function copying memory to make it executable<\/figcaption><\/figure><\/div>\n\n\n\n<p>The last function \u201c<strong>Rgdpeyg<\/strong>\u201d traces the execution stack to find the &#8220;LoadLibrary&#8221; function and load the new address, to completely change the execution flow. Finally, Pelmeni prints in the log file &#8220;After EFD&#8221; which could stand for &#8220;Execution Flow Deviation&#8221;.&nbsp;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"530\" height=\"198\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-40.png\" alt=\"\" class=\"wp-image-2603\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-40.png 530w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-40-300x112.png 300w\" sizes=\"(max-width: 530px) 100vw, 530px\" \/><figcaption>\u201cRgdpeyg\u201d function redirecting the execution \ufb02ow<\/figcaption><\/figure><\/div>\n\n\n\n<p>At this point, the malware will execute the thread it had previously prepared. This thread will decrypt a .NET assembly and execute it from memory. Additionally, while Pelmeni runs .NET in the background, it checks the connection by making requests to Google.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"753\" height=\"594\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-41.png\" alt=\"\" class=\"wp-image-2604\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-41.png 753w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-41-300x237.png 300w\" sizes=\"(max-width: 753px) 100vw, 753px\" \/><figcaption>dotNET binary execution thread<\/figcaption><\/figure><\/div>\n\n\n\n<p>As seen the attack is totally targeted, as if the malware is executed on an other machine, it will not be able to continue the infection. Fortunately, the algorithm used to to decrypt the payload and the one used to decrypt the exports is the same, which makes it vulnerable to brute force attacks.<\/p>\n\n\n\n<p>The following section describes the analysis of the .NET binary extracted.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Kazuar (DotNET)<\/h1>\n\n\n\n<p>Analyzing the code, we observe that it is obfuscated and encrypted. The algorithm used is a substitution algorithm reminiscent of the one used by <strong>Kazuar<\/strong> <strong>(Turla backdoor)<\/strong>. The hypothesis is con\ufb01rmed when comparing our sample with the sample analyzed in the <a href=\"https:\/\/unit42.paloaltonetworks.com\/pensive-ursa-uses- upgraded-kazuar-backdoor\/).\" data-type=\"URL\" data-id=\"https:\/\/unit42.paloaltonetworks.com\/pensive-ursa-uses- upgraded-kazuar-backdoor\/).\">Unit42 article<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"438\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-42.png\" alt=\"\" class=\"wp-image-2607\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-42.png 576w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-42-300x228.png 300w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><figcaption>CaesarCipher implementation<\/figcaption><\/figure><\/div>\n\n\n\n<p><strong>Kazuar is a mutiplatform trojan used by Turla and discovered in 2017<\/strong>, it is often seen in infections targeting specific objectives, with the sample tailored to the targeted entity.<\/p>\n\n\n\n<p>Considering the Unit42 article, in this case the backdoor shows two differences detailed bellow:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>New protocol used for exfiltration<\/li><li>Different log&#8217;s folder<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Exfiltration methods<\/h2>\n\n\n\n<p>Up to now, it was publicly known that Kazuar supports 5 protocols for exfiltration. The version of Kazuar described here allows the <strong>exfiltration of data using socket<\/strong>.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"303\" height=\"259\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/MicrosoftTeams-image.png\" alt=\"\" class=\"wp-image-2632\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/MicrosoftTeams-image.png 303w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/MicrosoftTeams-image-300x256.png 300w\" sizes=\"(max-width: 303px) 100vw, 303px\" \/><figcaption>Exfiltration protocols<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"545\" height=\"201\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-45.png\" alt=\"\" class=\"wp-image-2610\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-45.png 545w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-45-300x111.png 300w\" sizes=\"(max-width: 545px) 100vw, 545px\" \/><figcaption>Socket protocol<\/figcaption><\/figure><\/div>\n\n\n\n<p>Based on this, it wouldn&#8217;t be unreasonable to think that other variations of this sample might also include additional protocols.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Log&#8217;s folder<\/h2>\n\n\n\n<p>Another variation in this sample compared to previous reports is the directory used for logs, as shown in the following image.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"453\" height=\"113\" src=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-46.png\" alt=\"\" class=\"wp-image-2611\" srcset=\"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-46.png 453w, https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/imagen-46-300x75.png 300w\" sizes=\"(max-width: 453px) 100vw, 453px\" \/><figcaption>Kazuar&#8217;s log file<\/figcaption><\/figure><\/div>\n\n\n\n<p>However, this should be considered a minor variation that could be seen in other samples.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusions<\/h1>\n\n\n\n<p>This article analyzes a new sample used in Turla campaigns. The sample employs a wrapper that we&#8217;ve nicknamed Pelmeni, and deploys the Kazuar malware, with some peculiarities different from those seen in previous articles about this type of sample.<\/p>\n\n\n\n<p>There are samples of the malware available in public sources, although their content is encrypted, which can hinder identification. In the case at hand, the differences of this new threat are shown, and indicators of compromise are provided to aid in its possible detection.<\/p>\n\n\n\n<p>Additionally, in the IOCs summary,  the IOCs values highlighted during this post are included. But, also, the hashes for the samples used in the &#8220;samples timeline&#8221; are provided.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">IOCs<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Sample #6 [13\/02\/2024]<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong><strong>LaunchGFExperienceLOC<\/strong>.dll <\/strong>(Pelmeni Wrapper)<\/td><td class=\"has-text-align-left\" data-align=\"left\">15f5e4808549ff67a79f84e23659da912ebbc1dc7c7b100c12b72384a27e412a&nbsp;&nbsp;&nbsp;<\/td><\/tr><tr><td><strong>Relapsed.exe<\/strong> <br>(Kazuar)<\/td><td class=\"has-text-align-left\" data-align=\"left\">7ae9768b79a6b75f814a1b7afaf841b1a4b7ba803b3d806823e81d24a84fd078&nbsp;&nbsp;&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>Pelmeni Wrapper&#8217;s log file<\/strong><\/td><td>%TEMP%\\dbtesdnni.wic&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Kazuar folder<\/strong>s<\/h3>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td>C:\\\\ProgramData\\\\utils\\\\drivers\\\\data<\/td><\/tr><tr><td>C:\\\\ProgramData\\\\inp\\\\test<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-73ccd232-1d97-4f51-aa4c-2e85155c8498\">Sample #5 [28\/01\/2024]<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong><strong>asio.dll <\/strong><\/strong>(Pelmeni Wrapper)<\/td><td class=\"has-text-align-left\" data-align=\"left\">cccd6327dd5beee19cc3744b40f954c84ab016564b896c257f6871043a21cf0a&nbsp;<\/td><\/tr><tr><td><strong><strong>Sobroutine.exe<\/strong> <\/strong>(Kazuar)<\/td><td class=\"has-text-align-left\" data-align=\"left\">6559d6cb2976334776ded3e7f8ce781c0e6fbaa69edbb0f16b902d06b5d8d8d9&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>Pelmeni Wrapper&#8217;s log file<\/strong><\/td><td>%TEMP%\\iiuiajmujrca.zso&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-73ccd232-1d97-4f51-aa4c-2e85155c8498\">Sample #4 [27\/01\/2024]<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>vncutilLOC.dll <\/strong>(Pelmeni Wrapper)<\/td><td>2164d54c415b48e906ad972a14d45c82af7cab814c6cf11729a994249690ed97&nbsp;&nbsp;<\/td><\/tr><tr><td><strong>Humanity.exe<\/strong> (Kazuar)<\/td><td>564b2a3083e55933e4ce68b87c5e268c88d58f7ab41839e5a6e0c728a58e9cf2&nbsp;&nbsp;&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>Pelmeni Wrapper&#8217;s log file<\/strong><\/td><td>%TEMP%\\ktynlijyog.dyg&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-73ccd232-1d97-4f51-aa4c-2e85155c8498\">Sample #3 [27\/01\/2024]<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>SkyTelLOC.dll <\/strong>(Pelmeni Wrapper)<\/td><td>00256c7fd9a36c6a4805c467b15b3a72dbac2e6dbd12abe7d768f20ce6c8f09f&nbsp;&nbsp;<\/td><\/tr><tr><td><strong>Inroad.exe<\/strong> (Kazuar)<\/td><td>1a3cc19345737bc76bcf61005ad6afeeea78540bddc627db052cede7a4c0d8e5&nbsp;&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>Pelmeni Wrapper&#8217;s log file<\/strong><\/td><td>%TEMP%\\oayvonjwivaq.vjg&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-73ccd232-1d97-4f51-aa4c-2e85155c8498\">Sample #2 [27\/01\/2024]<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>vncutilLOC.dll <\/strong>(Pelmeni Wrapper)<\/td><td>ebf10222bdd19bd8f14b7e94694c1534d4fe1d1047034aee7ffe9492cad4a92f&nbsp;<\/td><\/tr><tr><td><strong>Denigrating.exe<\/strong> (Kazuar)<\/td><td>c91891c297971f46c470ea3b1934e5fb76f683776ba3edcdc1afe4f5398fc016&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>Pelmeni Wrapper&#8217;s log file<\/strong><\/td><td>%TEMP%\\jecvxqyvdbri.olc&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"block-73ccd232-1d97-4f51-aa4c-2e85155c8498\">Sample #1 [23\/01\/2024]<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>vncutilLOC.dll <\/strong>(Pelmeni Wrapper)<\/td><td>9b97e740b65bc609210f095cd9407c990a9f71f580f001ea07300228c5256d62&nbsp;<\/td><\/tr><tr><td><strong>Arches.exe<\/strong> (Kazuar)<\/td><td>0e8cedf69e0708f77b8d8c7c9b96bf9386f0ec66c48b973bfa9718915ed260e9&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td><strong>Pelmeni Wrapper&#8217;s log file<\/strong><\/td><td>%TEMP%\\wcijgmcpyn.ctl&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">C2<\/h2>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><tbody><tr><td>hxxps:\/\/altavista[.]rs\/wp-includes\/ID3\/PerceptionSimulation\/&nbsp;<\/td><\/tr><tr><td>hxxps:\/\/m6front.sam-maintenance[.]com\/wp-includes\/customize\/assembly\/&nbsp;<\/td><\/tr><tr><td>hxxps:\/\/bibliotecaunicef[.]uy\/catalog\/notices\/tags\/&nbsp;<\/td><\/tr><tr><td>wss:\/\/127.0.0.1:20089\/Test<\/td><\/tr><\/tbody><\/table><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Turla is an APT group allegedly linked to the intelligence service FSB (Federal Security Service) from the Russian Federation. This threat actor is specifically in the Center 16 unit, which carries out the collection of radio-electronic intelligence on communications facilities. Moreover, the Center 16 is in charge of intercepting, decrypting and processing the electronic message [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":2695,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[21,1],"tags":[79,75,78,73,77],"class_list":{"0":"post-2549","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-apt","8":"category-uncategorised","9":"tag-backdoor","10":"tag-kazuar","11":"tag-pelmeni-wrapper","12":"tag-trula","13":"tag-wrapper","14":"entry"},"featured_image_src":"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/turlita-600x400.png","featured_image_src_square":"https:\/\/lab52.io\/blog\/wp-content\/uploads\/2024\/02\/turlita-600x600.png","author_info":{"display_name":"Er1c_C","author_link":"https:\/\/lab52.io\/blog\/author\/er1c_c\/"},"_links":{"self":[{"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/posts\/2549"}],"collection":[{"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/comments?post=2549"}],"version-history":[{"count":52,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/posts\/2549\/revisions"}],"predecessor-version":[{"id":2697,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/posts\/2549\/revisions\/2697"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/media\/2695"}],"wp:attachment":[{"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/media?parent=2549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/categories?post=2549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lab52.io\/blog\/wp-json\/wp\/v2\/tags?post=2549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}