{"id":59181,"date":"2025-06-25T17:32:52","date_gmt":"2025-06-25T15:32:52","guid":{"rendered":"https:\/\/www.secuinfra.com\/?p=59181"},"modified":"2025-06-25T18:08:44","modified_gmt":"2025-06-25T16:08:44","slug":"contis-carbon-copy-nitrogen-ransomware-analysis","status":"publish","type":"post","link":"https:\/\/testing.secuinfra.com\/en\/techtalk\/contis-carbon-copy-nitrogen-ransomware-analysis\/","title":{"rendered":"CONTI\u2019s Carbon Copy \u2013 Nitrogen Ransomware Analysis"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">We would like to thank our security research intern Leon for the malware reverse engineering and collaboration on this article.<\/p>\n\n<p class=\"wp-block-paragraph\">Key Findings:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>The ransomware variants &#8220;Nitrogen&#8221; and &#8220;LukaLocker&#8221; were likely created and deployed by the same threat actor.<\/li>\n<\/ul>\n\n<ul class=\"wp-block-list\">\n<li>Both implementations are largely based on the CONTI ransomware source code leaked in March 2022.<\/li>\n<\/ul>\n\n<ul class=\"wp-block-list\">\n<li>The functionality of Nitrogen ransomware has barely evolved, suggesting a lack of expertise in ransomware implementation.<\/li>\n<\/ul>\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n<p class=\"wp-block-paragraph\">This section explains some basic facts about the CONTI ransomware source code leak and the Nitrogen and LukaLocker ransomware variants.<\/p>\n\n<h3 class=\"wp-block-heading\">Background: CONTI source code leak<\/h3>\n\n<p class=\"wp-block-paragraph\">On March 20, 2022, the source code for the CONTI ransomware variant was published via Twitter by a Ukrainian developer of the group after the operators of the CONTI Ransomware-as-a-Service (RaaS) announced via their leak blog that they were supporting the Russian invasion of Ukraine (see Figure 1).<\/p>\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"697\" height=\"157\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti.webp\" alt=\"\" class=\"wp-image-59089\" style=\"width:481px;height:auto\"\/><figcaption class=\"wp-element-caption\">Figure 1: CONTI announcement on the Russian invasion of Ukraine (Source: <a  href=\"https:\/\/www.bleepingcomputer.com\/news\/security\/more-conti-ransomware-source-code-leaked-on-twitter-out-of-revenge\/\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >BleepingComputer<\/a>)<\/figcaption><\/figure>\n\n<p class=\"wp-block-paragraph\">Following the publication of this source code, several existing and new ransomware gangs adapted the CONTI implementation for their own malware variants. Examples include LockBit Green, Monti, Royal, Akira and BlackSuit. <\/p>\n\n<h3 class=\"wp-block-heading\">Nitrogen and LukaLocker<\/h3>\n\n<h4 class=\"wp-block-heading\">Previous publications<\/h4>\n\n<p class=\"wp-block-paragraph\">The first publication on LukaLocker ransomware was <a  href=\"https:\/\/www.halcyon.ai\/blog\/halcyon-identifies-new-ransomware-operator-volcano-demon-serving-up-lukalocker\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >published by Halcyon in July 2024<\/a>. The ransomware operator or threat actor behind LukaLocker was referenced there with the code name &#8220;Volcano Demon&#8221;. It was also reported that, in addition to leaving ransom notes on the computers of affected companies, the threat actor also makes threatening phone calls. This tactic has rarely been used by ransomware gangs in the past, as call center agents usually have to be hired for this. For example, there are recordings of calls from <a  href=\"https:\/\/www.youtube.com\/watch?v=htsSaPNgm8s\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >Suncrypt<\/a> or <a  href=\"https:\/\/www.youtube.com\/watch?v=ln-AAIjM2Iw\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >CONTI<\/a>.    <\/p>\n\n<p class=\"wp-block-paragraph\">LukaLocker was previously examined by Jonny Johnson and Alden Schmidt (Huntress) in the presentation <a  href=\"https:\/\/www.youtube.com\/watch?v=i_zUsoJP1Rs\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >&#8220;Unraveling LukaLocker Ransomware&#8221;<\/a>.<\/p>\n\n<p class=\"wp-block-paragraph\">Nitrogen Ransomware should not be confused with the malware &#8220;Nitrogen Loader&#8221;. Although these malware variants have similar names, we were unable to establish any connection between them. A description of <a  href=\"https:\/\/www.esentire.com\/blog\/persistent-connection-established-nitrogen-campaign-leverages-dll-side-loading-technique-for-c2-communication\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >Nitrogen Loader was published by eSentire<\/a>.  <\/p>\n\n<h4 class=\"wp-block-heading\">Malware samples and victimology<\/h4>\n\n<p class=\"wp-block-paragraph\">At the time of writing this article, the targets of the threat actors behind Nitrogen and LukaLocker ransomware were mainly localized in North America (USA and Canada) and primarily active in the industrial and construction sectors. Occasionally, companies from other sectors were also attacked, which suggests an opportunistic selection of potential targets. A temporal correlation between the ransomware samples found and the extortion of affected companies is only possible in isolated cases, as new data breaches are listed on the blog with a large time lag. Figure 2 shows a timeline on which both the analyzed malware samples and published blackmail targets are plotted. As the publications on the leak blog are not dated, it is sometimes not possible to determine the exact time of posting. For this purpose, the posts of the threat actor on X (formerly Twitter) under the username <a  href=\"https:\/\/x.com\/NitrogenSupp\/\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >@nitrogenSupp<\/a> were consulted.     <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large\"><img decoding=\"async\" width=\"1600\" height=\"522\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/timeline-submission-target-1600x522.png\" alt=\"\" class=\"wp-image-59143\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/timeline-submission-target-1600x522.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/timeline-submission-target-800x261.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/timeline-submission-target-768x251.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/timeline-submission-target-1536x501.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/timeline-submission-target-2048x668.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 2: Observed samples ordered by the date they were first submitted to VirusTotal and targeted companies announced on the TA&#8217;s X\/Twitter account<\/figcaption><\/figure>\n\n<p class=\"wp-block-paragraph\">A total of five current samples of the Nitrogen ransomware variant were identified by threat hunting with YARA. Four of these samples are directly attributed to Nitrogen. Another sample is assigned to the LukaLocker ransomware variant. As shown in the second section of this article, the implementations of Nitrogen and LukaLocker ransomware are almost identical. Further correlations suggesting that the threat actor behind Nitrogen ransomware also operates under the name LukaLocker can be drawn from an examination of the published ransomware data breaches. As can be seen in Figure 3, the ransomware sample used in two instances could be linked to the affected companies. The company attacked with the LukaLocker variant was also listed on the Nitrogen Ransomware Leak Blog. Shortly afterwards, however, this post was removed from the leak page and the X (Twitter) profile. It was not possible to determine to what extent this was related to a successful\/failed extortion or whether a connection between Nitrogen and LukaLocker was subsequently concealed.        <\/p>\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img decoding=\"async\" width=\"1590\" height=\"654\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/target-relation.png\" alt=\"\" class=\"wp-image-59145\" style=\"width:550px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/target-relation.png 1590w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/target-relation-800x329.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/target-relation-768x316.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/target-relation-1536x632.png 1536w\" sizes=\"(max-width: 1590px) 100vw, 1590px\" \/><figcaption class=\"wp-element-caption\">Figure 3: Victim identities that can be derived from sample information; the LukaLocker victim was listed in the Nitrogen blog<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Infrastructure<\/h4>\n\n<p class=\"wp-block-paragraph\">Nitrogen operates a leak blog as a TOR hidden service, in line with common &#8220;double extortion&#8221; tactics. The site follows a static structure with few dynamic elements and therefore offers little attack surface for potential deanonymization. <\/p>\n\n<h4 class=\"wp-block-heading\">Data publications<\/h4>\n\n<p class=\"wp-block-paragraph\">Nitrogen Ransomware publishes a list of compromised companies on the leak blog described above. The data stolen by the attackers is not published in full, but only with vague evidence. The operators of Nitrogen are trying to sell the data on to other cybercriminals.  <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1160\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-leak-blog-1600x1160.png\" alt=\"\" class=\"wp-image-59147\" style=\"width:565px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-leak-blog-1600x1160.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-leak-blog-800x580.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-leak-blog-768x557.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-leak-blog-1536x1113.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-leak-blog-2048x1485.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 4: Screenshot of the Nitrogen ransomware leak blog &#8220;NitroBlog&#8221;<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Contact us<\/h4>\n\n<p class=\"wp-block-paragraph\">As previously mentioned, Nitrogen Ransomware operates an X \/ Twitter account under the username @NitrogenSupp. In addition, the threat actor uses Tox Instant Messenger, which is generally very popular among cybercriminals. In every ransom note that Nitrogen Ransomware leaves with a compromised company, a unique Tox username is noted in order to distinguish between the victims.  <\/p>\n\n<p class=\"wp-block-paragraph\">As the Nitrogen ransomware leak blog has not been updated since December 2024, we contacted the Tox ID listed on the leak blog as a test and received a reply shortly afterwards. The threat actor therefore appears to still be using the communication channel, possibly to sell the data records from the previous data breaches. <\/p>\n\n<h2 class=\"wp-block-heading\">Analysis<\/h2>\n\n<p class=\"wp-block-paragraph\">The objective of our analysis was to gain an insight into the functionalities of Nitrogen ransomware. We also wanted to confirm the extent to which there is a connection between LukaLocker and Nitrogen, which was previously presented in the threat intelligence analysis. <\/p>\n\n<h3 class=\"wp-block-heading\">Similarities with CONTI<\/h3>\n\n<p class=\"wp-block-paragraph\">Our analysis showed clear similarities between the source code of CONTI Ransomware and the decompiled Nitrogen Ransomware binaries. Some of the clearest indications are discussed in this subsection. <\/p>\n\n<h4 class=\"wp-block-heading\">Parameters<\/h4>\n\n<p class=\"wp-block-paragraph\">The malware supports the following parameters, which the user can specify on the command line:<\/p>\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"350\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-help-1600x350.png\" alt=\"\" class=\"wp-image-59149\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-help-1600x350.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-help-800x175.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-help-768x168.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-help-1536x336.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-help-2048x448.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 5: Optional command line parameters of Nitrogen Ransomware<\/figcaption><\/figure>\n\n<p class=\"wp-block-paragraph\">-p File path to be encrypted<br\/>-l Path to log file<br\/>-nm No creation of a mutex<br\/>-s Scheduling of services and processes in the service and process list<br\/>-b Switch off safeboot and force restart<br\/>-v Increased level of detail of log information<\/p>\n\n<h4 class=\"wp-block-heading\">Mutex<\/h4>\n\n<p class=\"wp-block-paragraph\">Nitrogen uses a mutex to prevent the malware from being executed multiple times. In the analyzed sample, the malware created a mutex with the name &#8220;nvxkjcv7yxctvgsdfjhvv6esdvsx&#8221;. This logic was taken from the CONTI source code, only the mutex name was changed.  <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1000\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-conti-mutex-1600x1000.png\" alt=\"\" class=\"wp-image-59151\" style=\"width:608px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-mutex-1600x1000.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-mutex-800x500.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-mutex-768x480.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-mutex-1536x960.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-mutex-2048x1280.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 6: Comparison of the Mutex implementation between Nitrogen and CONTI<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Multithreading<\/h4>\n\n<p class=\"wp-block-paragraph\">The malware uses the same multithreading logic as CONTI. By calling the <em>GetNativeSystemInfo<\/em> function, Nitrogen Ransomware determines the number of available CPU cores on the system. Two threads are then created for the thread pool for each logical processor in order to parallelize the encryption.  <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"759\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-conti-threadpool-1600x759.png\" alt=\"\" class=\"wp-image-59155\" style=\"width:615px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-threadpool-1600x759.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-threadpool-800x380.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-threadpool-768x364.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-threadpool-1536x729.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-threadpool-2048x972.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 7: Routine for creating execution threads (Nitrogen vs. CONTI)<\/figcaption><\/figure>\n\n<h3 class=\"wp-block-heading\">Deviations from the CONTI implementation<\/h3>\n\n<h4 class=\"wp-block-heading\">Software development environment<\/h4>\n\n<p class=\"wp-block-paragraph\">The original CONTI source code leak used Visual Studio 2015 as the build environment. It is assumed that the investigated Nitrogen samples used MinGW GCC version 13.3.0. In addition, the malware was optimized using SIMD instructions.  <\/p>\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1440\" height=\"846\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-die.png\" alt=\"\" class=\"wp-image-59157\" style=\"width:472px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-die.png 1440w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-die-800x470.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-die-768x451.png 768w\" sizes=\"(max-width: 1440px) 100vw, 1440px\" \/><figcaption class=\"wp-element-caption\">Figure 8: Detect it Easy &#8211; Information on the development environment of Nitrogen Ransomware<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">File encryption<\/h4>\n\n<p class=\"wp-block-paragraph\">Nitrogen Ransomware generates a ChaCha8 context with a random nonce and a random key for each file and protects this key with the Curve25519 ECC. The developer has replaced RSA, which is used by Conti, with ECC. ECC is being used more and more frequently in ransomware because, unlike RSA, it uses smaller key sizes and consumes less computing power than RSA. <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"749\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-conti-genkey-1600x749.png\" alt=\"\" class=\"wp-image-59159\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-genkey-1600x749.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-genkey-800x375.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-genkey-768x360.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-genkey-1536x719.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-genkey-2048x959.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 9: Comparison of the key generation between Nitrogen and CONTI Ransomware<\/figcaption><\/figure>\n\n<p class=\"wp-block-paragraph\">Partial encryption modes:<\/p>\n\n<ul class=\"wp-block-list\">\n<li>VM files (e.g. Vmdk, vmx, vmem) are 20% encrypted.<\/li>\n\n\n\n<li>Databases are completely encrypted.<\/li>\n\n\n\n<li>Files less than or equal to 1 MiB are completely encrypted.<\/li>\n\n\n\n<li>Files less than or equal to 1 GiB are encrypted at 50%.<\/li>\n\n\n\n<li>Larger files are only 10% encrypted.<\/li>\n<\/ul>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1096\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-encryption-percentage-1600x1096.png\" alt=\"\" class=\"wp-image-59163\" style=\"width:602px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-encryption-percentage-1600x1096.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-encryption-percentage-800x548.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-encryption-percentage-768x526.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-encryption-percentage-1536x1053.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-encryption-percentage-2048x1403.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 10: Differentiation of the partial encryption of nitrogen ransomware<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Service and process scheduling<\/h4>\n\n<p class=\"wp-block-paragraph\">If the -s (or &#8211;service-stop) parameter was set when the ransomware was executed, Nitrogen terminates processes that match those from a list of 827 entries.<\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1394\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-taskkill-list-1600x1394.png\" alt=\"\" class=\"wp-image-59165\" style=\"width:514px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-taskkill-list-1600x1394.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-taskkill-list-800x697.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-taskkill-list-768x669.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-taskkill-list-1536x1338.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-taskkill-list-2048x1784.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 11: List of processes that Nitrogen Ransomware attempts to shut down<\/figcaption><\/figure>\n\n<p class=\"wp-block-paragraph\">In addition, a separate list is used to search for active services from anti-virus and endpoint detection and response solutions. If there are any hits, these are also switched off.   <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1475\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-service-kill-1600x1475.png\" alt=\"\" class=\"wp-image-59167\" style=\"width:549px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-service-kill-1600x1475.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-service-kill-800x738.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-service-kill-768x708.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-service-kill-1536x1416.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-service-kill-2048x1889.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 12: Screenshot of the services that Nitrogen is trying to shut down<\/figcaption><\/figure>\n\n<p class=\"wp-block-paragraph\">The implementation for terminating processes and services is shown in Figure 13. Nitrogen Ransomware runs through both lists and terminates all instances found. <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1373\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-cmd-prockill-1600x1373.png\" alt=\"\" class=\"wp-image-59175\" style=\"width:596px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-cmd-prockill-1600x1373.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-cmd-prockill-800x686.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-cmd-prockill-768x659.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-cmd-prockill-1536x1318.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-cmd-prockill-2048x1757.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 13: Routine for scheduling processes and services<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Volume shadow copies<\/h4>\n\n<p class=\"wp-block-paragraph\">The mechanism for deleting the volume shadow copies, which was implemented by CONTI, is completely omitted by the Nitrogen developers. As long as this is not done manually after the ransomware has been executed, partial data recovery may be possible. <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"330\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/conti-vss-1600x330.png\" alt=\"\" class=\"wp-image-59169\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/conti-vss-1600x330.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/conti-vss-800x165.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/conti-vss-768x158.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/conti-vss-1536x317.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/conti-vss-2048x423.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 14: CONTI implementation for deleting volume shadow copies<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Encryption types of Nitrogen<\/h4>\n\n<p class=\"wp-block-paragraph\">Nitrogen supports three different encryption modes. The encryption modes ALL_ENCRYPT, LOCAL_ENCRYPT and PATH_ENCRYPT were copied from the Conti source and the NETWORK_ENCRYPT from Conti was omitted. <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1358\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-conti-encryptmode-1-1600x1358.png\" alt=\"\" class=\"wp-image-59171\" style=\"width:500px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-encryptmode-1-1600x1358.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-encryptmode-1-800x679.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-encryptmode-1-768x652.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-encryptmode-1-1536x1304.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-conti-encryptmode-1-2048x1738.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 15: Comparison of encryption modes between Nitrogen and CONTI Ransomware<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Deactivation of safe mode<\/h4>\n\n<p class=\"wp-block-paragraph\">After the encryption process, Nitrogen checks whether the shutdown flag was set by the user when the ransomware was started, if so, Safeboot is shut down using the command line with the command &#8220;bcdedit \/deletevalue {default} safeboot&#8221; and the system is then shut down.<\/p>\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"415\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-safeboot-1600x415.png\" alt=\"\" class=\"wp-image-59173\" style=\"width:606px;height:auto\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-safeboot-1600x415.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-safeboot-800x207.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-safeboot-768x199.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-safeboot-1536x398.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-safeboot-2048x531.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 16: Deactivating safe mode and forcing a restart<\/figcaption><\/figure>\n\n<h4 class=\"wp-block-heading\">Encryption of the blackmail letter<\/h4>\n\n<p class=\"wp-block-paragraph\">In the CONTI implementation, the blackmail letter is delivered in plain text in the executable file. LukaLocker has adopted this mechanism in this form. As can be seen in Figure 10, some of the examined Nitrogen ransomware samples use a simple byte-wise XOR with alternating keys (e.g. 0xFD or 0xFF) to make it more difficult to extract the ransom note from the malware. In more recent variants of the ransomware, a rolling XOR algorithm with similar functionality was found.   <\/p>\n\n<figure class=\"wp-block-image aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"592\" src=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/\/nitrogen-ransomnote-decryption-1600x592.png\" alt=\"\" class=\"wp-image-59177\" srcset=\"https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-ransomnote-decryption-1600x592.png 1600w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-ransomnote-decryption-800x296.png 800w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-ransomnote-decryption-768x284.png 768w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-ransomnote-decryption-1536x569.png 1536w, https:\/\/testing.secuinfra.com\/wp-content\/uploads\/nitrogen-ransomnote-decryption-2048x758.png 2048w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><figcaption class=\"wp-element-caption\">Figure 17: Routine for decrypting the blackmail letter after file encryption has been completed<\/figcaption><\/figure>\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n<p class=\"wp-block-paragraph\">We note that LukaLocker and Nitrogen ransomware are largely based on the CONTI source code. The changes made by the author suggest that his malware development capabilities are severely limited. <\/p>\n\n<p class=\"wp-block-paragraph\">An overlap of entries on the Nitrogen leak page suggests that both variants are used by these actors.<\/p>\n\n<h2 class=\"wp-block-heading\">Indicators of Compromise (IoC)<\/h2>\n\n<h4 class=\"wp-block-heading\">File hash sums<\/h4>\n\n<p class=\"wp-block-paragraph\">Nitrogen<\/p>\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<ul class=\"wp-block-list\">\n<li>c94b70dff50e69639b0ef1e828621c5fddcf144fea93e27520f48264ddd33273<\/li>\n\n\n\n<li>ce8788e6ed0042010dd27a4fd79b9962d11385008b88485b8368fd666e5d38ec<\/li>\n\n\n\n<li>55f3725ebe01ea19ca14ab14d747a6975f9a6064ca71345219a14c47c18c88be<\/li>\n\n\n\n<li>f30198a8a62e189653bfbeaa7a2f303549b8042ddd84c980f132a4e889f9cb60<\/li>\n<\/ul>\n<\/div>\n\n<p class=\"wp-block-paragraph\">LukaLocker<\/p>\n\n<ul class=\"wp-block-list\">\n<li>4e58629158a6c46ad420f729330030f5e0b0ef374e9bb24cd203c89ec3262669<\/li>\n<\/ul>\n\n<h4 class=\"wp-block-heading\">Host-based features<\/h4>\n\n<p class=\"wp-block-paragraph\">Extortion letter: readme.txt<\/p>\n\n<p class=\"wp-block-paragraph\">Log protocol: NBA_LOG.txt<\/p>\n\n<h2 class=\"wp-block-heading\">Applicable detection rules<\/h2>\n\n<h3 class=\"wp-block-heading\">YARA<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>rule SI_MAL_RNSM_Nitrogen_Lukalocker_Feb25 {<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp; meta:<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version = \"1.0\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; date = \"2025-02-04\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; modified = \"2025-03-20\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; status = \"RELEASED\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sharing = \"TLP:CLEAR\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; source = \"SECUINFRA Falcon Team\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; description = \"Detects Nitrogen \/ LukaLocker Ransomware based on leaked CONTI source code.\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; category = \"malware\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mitre_att = \"T1486\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hash = \"8cd552392bb25546ba58e73d63c4b7c290188ca1060f96c8abf641ae9f5a8383\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; minimum_yara = \"3.2.0\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; best_before = \"2026-02-04\"<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp; strings:<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str1 = \"Directories scanned: %d\" ascii<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str2 = \"Files finded: %d\" ascii<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str3 = \"Files crypted: %d\" ascii<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str4 = \"File %s is already open by another program.\" wide<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str5 = \".kexi\" wide<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $str6 = \"cmd \/c taskkill \/im krbcc32s.exe \/f\" ascii<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp; condition:<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uint16(0) == 0x5A4D<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and filesize &lt; 3MB<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and all of them<\/code><\/p>\n\n\n<p class=\"wp-block-paragraph\"><code>}<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">SIGMA<\/h3>\n\n<p class=\"wp-block-paragraph\">1. potential Conti Ransomware Activity<\/p>\n\n<p class=\"wp-block-paragraph\"><a  href=\"https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules-emerging-threats\/2021\/Malware\/Conti\/proc_creation_win_malware_conti_ransomware_commands.yml\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules-emerging-threats\/2021\/Malware\/Conti\/proc_creation_win_malware_conti_ransomware_commands.yml<\/a><\/p>\n\n<p class=\"wp-block-paragraph\">2. process terminated via taskkill<\/p>\n\n<p class=\"wp-block-paragraph\"><a  href=\"https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules-threat-hunting\/windows\/process_creation\/proc_creation_win_taskkill_execution.yml\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules-threat-hunting\/windows\/process_creation\/proc_creation_win_taskkill_execution.yml<\/a><\/p>\n\n<p class=\"wp-block-paragraph\">3. potential ransomware or unauthorized MBR tampering via bcdedit.exe<\/p>\n\n<p class=\"wp-block-paragraph\"><a  href=\"https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules\/windows\/process_creation\/proc_creation_win_bcdedit_susp_execution.yml\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules\/windows\/process_creation\/proc_creation_win_bcdedit_susp_execution.yml<\/a><\/p>\n\n<p class=\"wp-block-paragraph\">4 Suspicious Execution of Shutdown<\/p>\n\n<p class=\"wp-block-paragraph\"><a  href=\"https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules\/windows\/process_creation\/proc_creation_win_shutdown_execution.yml\"  dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >https:\/\/github.com\/SigmaHQ\/sigma\/blob\/master\/rules\/windows\/process_creation\/proc_creation_win_shutdown_execution.yml<\/a><\/p>\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The SECUINFRA Falcon team has investigated the \u201cNitrogen\u201d ransomware variant. We discovered that significant parts of the implementation originate from the leaked source code of CONTI Ransomware.<\/p>\n","protected":false},"author":6,"featured_media":58613,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[81],"tags":[785,253,267],"dpc_coauthors":[],"class_list":["post-59181","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-techtalk","tag-falcon-team","tag-malware-analysis","tag-ransomware"],"acf":[],"_links":{"self":[{"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/posts\/59181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/comments?post=59181"}],"version-history":[{"count":0,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/posts\/59181\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/media\/58613"}],"wp:attachment":[{"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/media?parent=59181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/categories?post=59181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/tags?post=59181"},{"taxonomy":"dpc_coauthors","embeddable":true,"href":"https:\/\/testing.secuinfra.com\/en\/wp-json\/wp\/v2\/dpc_coauthors?post=59181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}