New CrowdResponse Modules

During his talk at this year’s RSA conference, George Kurtz introduced a new free community tool named CrowdResponse.   CrowdResponse is a robust data-gathering platform that we intend to continue improving with new modules and data acquisition capabilities.  Today we are releasing three additional modules for CrowdResponse – Drivers, Handles, and Strings. These modules focus on memory analysis and are extremely pertinent to detecting much of the malware that we have been discussing lately.

The New Modules

One of the key themes of April’s “Going Beyond the Indicator” CrowdCast was hunting and detecting.  We outlined techniques to hunt for webshells and memory-resident malware.   An increasing amount of malware is taking steps to reduce the disk footprint.  While YARA scans can be particularly useful for finding signatures in memory, sometimes you need more data to verify your results.  Thus, we chose to focus this month on adding memory-related modules into CrowdResponse.  The following modules are now part of the free v1.0.2.0 release:

  • Drivers (@Drivers) – Information on Win32 drivers
  • Handles (@Handles) – Enumerate process handles
  • Process Strings (@PSStrings) – Extraction of strings from the memory of running processes

These modules provide the incident responder with the following data:

@Drivers

  • Name of driver
  • Base address of driver
  • Full file details (as with @Pslist)
  • Optional verification of digital certificates (-c)

@Handles

  • Dump handle IDs, type and name from all processes
  • Optional dumping  by specified process ID (-p)

@PSStrings

  • Extract ASCII strings from process memory
  • Extract Unicode (double-byte) strings from process memory
  • Identify the process ID for each string (-p to operate on individual PIDs)
  • Option to specify minimum and maximum string lengths
  • Option to specify character set to use
  • Ability to ignore strings containing certain characters
  • Optional ability to show memory offsets where strings are found
  • XOR process strings with a one byte key

CrowdResponse in Action

We previously described several methods to identify webshells on a system.  While webshells are notoriously difficult to find initially, they are often vulnerable to subsequent signature-based detection.  To illustrate this, we will use a ASP.NET webshell attributed to the Deep Panda adversary group.  Attacker capabilities are often hard to conceptualize through blog posts, reports, or even webinars. Whether you are a visual learner or just prefer to see things live, our Services team recorded a quick video to highlight one of the more advanced webshells we have seen in the wild.

Web Shells from CrowdStrike on Vimeo.

The video shows how the webshell uses authentication mechanisms to evade detection as well as some actions it can execute once installed.  While not all of the webshell capabilities were captured in the video, you can read an in-depth analysis of the webshell here and see the interface in Figure 1 below. 

Figure1

Figure 1. ASP.NET Webshell Screen Capture 

Since we are celebrating the first release of additional capabilities within CrowdResponse, we thought it would be interesting to demonstrate how you could use the new modules to help detect this webshell.

Step one: YARA.  To build a YARA signature we analyzed two files associated with the webshell:  system_web.aspx and App_Web_6bl2f3yv.dll.  The attackers left behind the former, and the webserver created the latter.  When working with Microsoft IIS and ASP.NET, it is important to understand that the web server does not run .aspx pages natively.  IIS compiles the page upon its first request to increase performance and stability.  After its first use, IIS largely ignores the .aspx file and instead loads and executes the compiled DLL file when the webshell is used.

When building signatures for these types of files, you will want to make sure you can detect both the original .aspx file for file-system detection and the .dll for both memory and file system detection.  Since we have new memory modules to play with, we’ll focus on the .dll file in this example.  In fact, the compiled file signatures can be more valuable because attackers often leave the .dll files behind after performing cleanup.

In this example, we found the compiled version of system_web.aspx within the following folder:

C:WindowsMicrosoft.NETFramework64v2.0.50727Temporary ASP.NET Files

Figure2

Figure 2. Compiled ASP.NET Pages 

Notice the file system_web.aspx.33154034.compiled displayed in Figure 2.   This is a XML file created during ASP.NET compilation and records the mapping between a specific .aspx page and its corresponding .dll.   Analysis of App_Web_6bl2f3yv.dll identified several strings used to build the following YARA signature:

rule CrowdStrike_CSIT_14004_02 : loader backdoor bouncer

{
   meta:
            description = “Deep Panda Compiled ASP.NET <http://ASP.NET> Webshell”
            last_modified = “2014-04-25”
            version = “1.0”
            report = “CSIT-14004”
            in_the_wild = true
            copyright = “CrowdStrike, Inc”
            actor = “DEEP PANDA”
   strings:
            $cookie = “zWizx00” wide
            $cp = “es-DN” wide
            $enum_fs1 = “File system: {0}” wide
            $enum_fs2 = “Available: {0} bytes” wide
            $enum_fs3 = “Total space: {0} bytes” wide
            $enum_fs4 = “Total size: {0} bytes” wide
   condition:
            ($cookie and $cp) or all of ($enum*)
}

The first two strings are from the webshell’s authentication checks: looking for a specific cookie name (zWiz) and the browser’s preferred language (es-DN).  The “$enum” references are labels used in a function within the original code.  With our YARA signature in place, we can run a quick scan of our web servers using the following command line:

             CrowdResponse.exe @yara -a  -b -o -v -y <location-of-yarafiles>

This command scans process memory and, as seen in Figure 3, our new signature hits on the w3wp.exe process that handles web requests for IIS.

Figure3

Figure 3. CrowdResponse @yara Hit in w3wp.exe Process 

The scan produced a second hit due to the inclusion of the (-o) operator which also scans the loaded modules of active processes.  In this case, it identifies the compiled dll loaded from the Microsoft.NET folder (Figure 4).

Figure4

Figure 4. YARA Hit in Loaded Modules of Process w3wp.exe

HANDLES

An alternative way to find the compiled webshell is to review files handles for the w3wp.exe process.   Handles tell us what resources a process has open, and in the case of the w3wp.exe process, they should identify recent content served.   We can use the new handles module in CrowdResponse with this command (for process ID 3196):

CrowdResponse.exe @handles -p 3196

Table 1 shows several results from the Handles output for the w3wp process, including the full path of the compiled webshell.  

Table1

Table 1: CrowdResponse @handles Output 

STRINGS

Extracting the strings of a process allows verification of the YARA signature hit and can provide additional clues as to what was executing within the process.  The new @PSStrings module can gather this information for us.

CrowdResponse.exe @psstrings -p 3196

In the output, we see several code fragments we targeted in our YARA signature.  The full path of the webshell and its compilation files are also present.  Reviewing this output may help identify other malicious activity on the system, including attacker page requests and returned output.

Table2

Table 2: CrowdResponse @ psstrings Unicode Output for w3wp.exe process 

Table3

Table 3: CrowdResponse @psstrings Unicode Output Validating Signature Hits 

Conclusion

Using some old and new CrowdResponse capabilities, we identified a compromised system, verified our hits, and identified files comprising a webshell.  Next steps might include running the @dirlist module to get more detailed information on the webshell files, and taking a memory/disk image.  Keep in mind that all of the CrowdResponse commands can (and should) be scripted via a simple config file.  We did not demonstrate @drivers (driver information) in this post, but full details can be found in the user guide.

The CrowdStrike team is committed to developing and delivering free community tools like CrowdResponse, CrowdInspect, Tortilla, and the new Heartbleed Scanner.  If you have any questions or would like additional information on our services, products, or intelligence offerings, please reach out to us directly. For immediate assistance with an Incident Response, the CrowdStrike Services team can be contacted at 1.855.CROWDIR (276-9347) or via our contact page.

CrowdResponse v1.0.2.0 Details

Download CrowdResponse v1.0.2.0 here.

In the downloaded ZIP file, you will find a number of files:

·      CrowdResponse.exe 

o   The host data gathering tool

·      Config.txt

o   An example configuration file for CrowdResponse intended to show usage of the various options and functions

o   In addition to the Derusbi rules from the last release, we’ve added new YARA rules to detect the Deep Panda .NET webshell.

·      CRconvert.exe

o   A tool used to convert the native XML output from CrowdResponse into different formats

·      readme.html

o   Detailed syntax and usage descriptions for the CrowdResponse tool

·      readme-crconvert.html

o   Detailed syntax and usage descriptions for the CRconvert tool

·      EULA.rtf

o   The CrowdStrike End User License Agreement for CrowdResponse

·      CrowdResponse User Guide.pdf

o   The detailed user guide for CrowdResponse

Related Content