Friday, August 21, 2020

Many Ways Of Malware Persistence (That You Were Always Afraid To Ask)

TL;DR: Are you into red teaming? Need persistence? This post is not that long, read it ;)
Are you into blue teaming? Have to find those pesky backdoors? This post is not that long, read it ;)

In the previous post, I listed different ways how a Windows domain/forest can be backdoored. In this new post, I am digging a bit deeper, and list the most common/known ways malware can survive a reboot, just using local resources of the infected Windows system. The list is far from complete, and I would like to encourage everyone to comment on new methods, not yet listed here.

From an incident response point of view, one of the best strategies to find malware on a suspicious system is to search for suspicious entries that start with the system. In the good old days, you had to check for 2-3 locations to cover 99% of the infections. Nowadays, there are a thousand ways malware can start. The common ones automatically start whenever Windows starts (or the user logs in), but some tricky ones are triggered by other events.

Autoruns

My favorite choice when it comes to malware persistence is Sysinternals tools, Autoruns. In this paragraph, I mainly quote the official built-in help, but bear with me, it is still interesting.

On a side note, there are some problems with the Autoruns tool: it can only run on a live system. (EDIT: This is not true, Autoruns can analyze offline systems as well! Thanks to a comment from Justin.) And usually, this is not the case - I usually have dd images. And although VBoxManage can convert the dd images to VirtualBox disk image format, usually I don't have the time and storage to do that. This is where xmount awesomeness is here to rescue the day. It can convert dd and Encase images on-the-fly in-memory to Virtualbox format. Just attach the disk image to a new Virtualbox machine as the main boot HDD, modify the CPU/disk/controller settings until Windows starts instead of crashing, and voila, you can boot your forensic image - without modifying a single bit on the original evidence dd file. Another problem with malware analysis on a live system is that a good rootkit can fool the analyst easily. 

For quick wins, I usually filter out Microsoft entries, look for per-user locations only and check for unverified (missing or invalid Authenticode) executables. This usually helps to find 90% of malware easily. Especially if it has a color like purple or pink, it is highly suspicious. To find the rest, well, one has to dig deeper.
Zeus "hiding" in the usual random directory - check the faked timestamp
To implement "poor-mans monitoring", regularly save the output of Autoruns, and during incident response, it will be highly valuable. Howto guide here.

Logon

"This entry results in scans of standard autostart locations such as the Startup folder for the current user and all users, the Run Registry keys, and standard application launch locations." 
There are 42 registry keys/folders at the moment in Autoruns, which can be used to autostart a malware. The most common ways are the HKCU\Software\Microsoft\Windows\CurrentVersion\Run and the C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup folder.
One of my favorite regarding this topic is the file-less Poweliks malware, 100% pure awesomeness. Typical ring 3 code execution.

Explorer

"Select this entry to see Explorer shell extensions, browser helper objects, explorer toolbars, active setup executions, and shell execute hooks". 71 registry keys, OMG. Usually, this is not about auto-malware execution, but some of them might be a good place to hide malware.

Internet explorer

"This entry shows Browser Helper Objects (BHO's), Internet Explorer toolbars and extensions". 13 registry key here. If a malicious BHO is installed into your browser, you are pretty much screwed.

Scheduled tasks

"Task scheduler tasks configured to start at boot or logon." Not commonly used, but it is important to look at this.
I always thought this part of the autostart entries is quite boring, but nowadays, I think it is one of the best ways to hide your malware. There are so many entries here by default, and some of them can use quite good tricks to trigger the start.
Did you know that you can create custom events that trigger on Windows event logs?
Did you know you can create malware persistence just by using Windows tools like bitsadmin and Scheduled tasks?
Scheduler in the old days
Scheduler in the new days

Services

HKLM\System\CurrentControlSet\Services is a very commonplace to hide malware, especially rootkits. Check all entries with special care.

Drivers

Same as services. Very commonplace for rootkits. Unfortunately, signing a driver for 64-bit systems is not fun anymore, as it has to be signed by certificates that can be chained back to "Software Publisher Certificates". Typical startup place for Ring 0 rootkits. 
Starting from Windows 10, even this will change and all drivers have to be signed by "Windows Hardware Developer Center Dashboard portal" and EV certificates.

Codecs

22 registry keys. Not very common, but possible code execution.

Boot execute

"Native images (as opposed to Windows images) that run early during the boot process."
5 registry keys here. Good place to hide a rootkit here.

Image hijacks

"Image file execution options and command prompt autostarts." 13 registry key here. I believe this was supposed for debugging purposes originally.
This is where the good-old sticky keys trick is hiding. It is a bit different from the others, as it provides a backdoor access, but you can only use this from the local network (usually). The trick is to execute your code whenever someone presses the SHIFT key multiple times before logging into RDP. The old way was to replace the sethc.exe, the new fun is to set a debug program on sethc.
If you see this, you are in trouble

AppInit

"This has Autoruns shows DLLs registered as application initialization DLLs." Only 3 registry keys here. This is the good old way to inject a malicious DLL into Explorer, browsers, etc. Luckily it is going to be deprecated soon.

Known DLLs

"This reports the location of DLLs that Windows loads into applications that reference them." Only 1 registry key. This might be used to hijack some system DLLs.

Winlogon

"Shows DLLs that register for Winlogon notification of logon events." 7 registry keys. Sometimes used by malware.

Winsock providers

"Shows registered Winsock protocols, including Winsock service providers. Malware often installs itself as a Winsock service provider because there are few tools that can remove them. Autoruns can disable them, but cannot delete them." 4 registry keys. AFAIK this was trendy a while ago. But still, a good place to hide malware.

Print monitors

"Displays DLLs that load into the print spooling service. Malware has used this support to autostart itself." 1 registry key. Some malware writers are quite creative when it comes to hiding their persistence module.

LSA providers

"Shows registers Local Security Authority (LSA) authentication, notification and security packages." 5 registry keys. A good place to hide your password stealer.

Network providers

"Missing documentation". If you have a good 1 sentence documentation, please comment.

WMI filters

"Missing documentation". Check Mandiant for details.

Sidebar gadgets

Thank god MS disabled this a while ago :)
We all miss you, you crappy resource gobble nightmares

Common ways - not in autoruns

Now, let's see other possibilities to start your malware, which won't be listed in Sysinternals Autoruns.

Backdoor an executable/DLL

Just change the code of an executable which is either auto-starting or commonly started by the user. To avoid lame mistakes, disable the update of the file ... The backdoor factory is a good source for this task. But if you backdoor an executable/DLL which is already in Autoruns listed, you will break the Digital Signature on the file. It is recommended to sign your executable, and if you can't afford to steal a trusted certificate, you can still import your own CA into the user's trusted certificate store (with user privileges), and it will look like a trusted one. Protip: Use "Microsoft Windows" as the codesigner CA, and your executable will blend in.
See, rootkit.exe totally looks legit, and it is filtered out when someone filters for "Hide Windows entries".


Hijack DLL load order

Just place your DLL into a directory which is searched before the original DLL is found, and PROFIT! But again, to avoid lame detection, be sure to proxy the legitimate function calls to the original DLL. A good source on this topic from Mandiant and DLL hijack detector.


Here you can see how PlugX works in action, by dropping a legitimate Kaspersky executable, and hijacking the DLL calls with their DLL. 

Hijack a shortcut from the desktop/start menu

Never underestimate the power of lame tricks. Just create an executable which calls the original executable, and meanwhile starts your backdoor. Replace the link, PROFIT! And don't be a skiddie, check the icon ;) I have seen this trick in adware hijacking browsers a lot of times.

IE hijacked to start with http://tinyurl.com/2fcpre6

File association hijack

Choose the user's favorite file type, replace the program which handles the opening with a similar one described in the previous section, and voila!

COM object hijack

The main idea is that some COM objects are scanned for whether they are on the system or not, and when it is registered, it is automatically loaded. See COMpfun for details.

Windows Application Compatibility - SHIM

Not many people are familiar with Windows Application Compatibility and how it works. Think about it as an added layer between applications and the OS. If the application matches a certain condition (e.g. filename), certain actions will take place. E.g. emulation of directories, registry entries, DLL injection, etc. In my installation, there are 367 different compatibility fixes (type of compatibility "simulation"), and some of those can be customized.
Every time IE starts, inject a DLL into IE

Bootkits 

Although bootkits shown here can end up in Autoruns in the drivers section (as they might need a driver at the end of the day), I still think it deserves a different section.

MBR - Master boot record

Malware can overwrite the Master boot record, start the boot process with its own code, and continue the boot process with the original one. It is common for rootkits to fake the content of the MBR record, and show the original contents. Which means one just have attached the infected HDD to a clean system, and compare the first 512 bytes (or more in some cases) with a known, clean state, or compare it to the contents shown from the infected OS. SecureBoot can be used to prevent malware infections like this.
There is a slight difference when MBR is viewed from infected OS vs clean OS

VBR - Volume boot record

This is the next logical step where malware can start it's process, and some malware/rootkit prefers to hide it's startup code here. Check GrayFish for details. SecureBoot can be used to prevent malware infections like this.

BIOS/UEFI malware

Both the old BIOS and the new UEFI can be modified in a way that malware starts even before the OS had a chance to run. Although UEFI was meant to be more secure than BIOS, implementation and design errors happens. Check the Computrace anti-theft rootkit for details.

Hypervisor - Ring -1 rootkit

This is somewhat special, because I believe although rootkit can run in this layer but it can't persist only in this layer on an average, physical machine, because it won't survive a reboot See Rutkowska's presentation from 2006 But because the hypervisor can intercept the restart event, it can write itself into one of the other layers (e.g. install a common kernel driver), and simply delete it after it is fully functional after reboot. Update: There is a good paper from Igor Korkin about hypervisor detection here.

SMM (System Management Mode) malware - Ring -2 rootkit

Somehow related to the previous type of attacks, but not many people know that System Management Mode can be used to inject code into the OS. Check the DEITYBOUNCE malware for more details ;) Also, abusing Intel Dual Monitor Mode (DMM) can lead to untrusted code execution, which basically monitors the SMM mode.

Intel® Active Management Technology - Ring -3 rootkit

According to Wikipedia, "Intel Active Management Technology (AMT) is hardware and firmware technology for remote out-of-band management of personal computers, in order to monitor, maintain, update, upgrade, and repair them". You can ask, what could possibly go wrong? See Alexander Tereshkin's and Rafal Wojtczuk's great research on this, or Vassilios Ververis thesis about AMT
As not many people click on links, let me quote the scary stuff about AMT:
  • Independent of the main CPU
  • Can access host memory via DMA (with restrictions)
  • Dedicated link to NIC, and its filtering capabilities
  • Can force host OS to reboot at any time (and boot the system from the emulated CDROM)
  • Active even in S3 sleep!

Other stuff

Create new user, update existing user, hidden admins

Sometimes one does not even have to add malicious code to the system, as valid user credentials are more than enough. Either existing users can be used for this purpose, or new ones can be created. E.g. a good trick is to use the Support account with a 500 RID - see here, Metasploit tool here.

Esoteric firmware malware

Almost any component in the computer runs with firmware, and by replacing the firmware with a malicious one, it is possible to start the malware. E.g. HDD firmware (see GrayFish again), graphic card, etc.

Hidden boot device

Malware can hide in one of the boot devices which are checked before the average OS is loaded, and after the malware is loaded, it can load the victim OS.

Network-level backdoor

Think about the following scenario: every time the OS boots, it loads additional data from the network. It can check for new software updates, configuration updates, etc. Whenever a vulnerable software/configuration update, the malware injects itself into the response, and get's executed. I know, this level of persistence is not foolproof, but still, possible. Think about the recently discovered GPO MiTM attack, the Evilgrade tool, or even the Xensploit tool when we are talking about VM migration.

Software vulnerability

Almost any kind of software vulnerability can be used as a persistent backdoor. Especially, if the vulnerability can be accessed remotely via the network, without any user interaction. Good old MS08-067...

Hardware malware, built into the chipset

I am not sure what to write here. Ask your local spy agency for further information. Good luck finding those!

More links

Tools I highly recommend:
For more information, check this blog post, part 1, part 2

Update 2017-04-29: A very nice list of Office persistence: https://labs.mwrinfosecurity.com/blog/add-in-opportunities-for-office-persistence/

Update 2017-10-23: Persistence via Security Descriptors and ACLs: https://www.youtube.com/watch?v=SeR4QJbaNRg

Update 2018-07-25: Backdooring LAPS https://rastamouse.me/2018/03/laps---part-1/
https://rastamouse.me/2018/03/laps---part-2/ 

I would like to thank to Gabor Pek from CrySyS Lab for reviewing and completing this post.
Related posts

  1. Easy Hack Tools
  2. Pentest Automation Tools
  3. How To Make Hacking Tools
  4. Hacking Tools For Windows 7
  5. Best Pentesting Tools 2018
  6. World No 1 Hacker Software
  7. Pentest Tools Tcp Port Scanner
  8. Pentest Tools Find Subdomains
  9. Ethical Hacker Tools
  10. Hack Apps
  11. Growth Hacker Tools
  12. New Hacker Tools
  13. Hacker Tools Hardware
  14. Pentest Tools Windows
  15. Beginner Hacker Tools
  16. Hacking Tools Usb
  17. Hacking Apps
  18. Hacks And Tools
  19. Wifi Hacker Tools For Windows
  20. Hack Tools For Windows
  21. Tools 4 Hack
  22. Nsa Hack Tools Download
  23. Pentest Reporting Tools
  24. Pentest Tools Github
  25. Hacking Tools Software
  26. Hackrf Tools
  27. Pentest Tools Windows
  28. Hacking Tools Software
  29. Pentest Tools For Windows
  30. Hacking Tools For Windows
  31. Pentest Tools Kali Linux
  32. Pentest Tools Open Source
  33. Hacking Tools Software
  34. Hack Apps
  35. Hacker Security Tools
  36. Pentest Tools Nmap
  37. Hacker Tools Linux
  38. Tools For Hacker
  39. Pentest Tools For Ubuntu
  40. Hacking Tools For Pc
  41. Hacking Tools For Pc
  42. Pentest Box Tools Download
  43. Hacking Tools For Games
  44. Pentest Tools Website
  45. Hacker Tools List
  46. Hacker Tools Free
  47. Hack Website Online Tool
  48. Wifi Hacker Tools For Windows
  49. Hack Apps
  50. Ethical Hacker Tools
  51. Hacking Tools For Beginners
  52. Hacking Tools For Mac
  53. Hacker Tools Apk Download
  54. Hacker Tools Github
  55. Pentest Tools Review
  56. Pentest Tools Port Scanner
  57. Hacking Tools 2019
  58. Hack Tools For Games
  59. Pentest Tools Open Source
  60. Hacking Tools Windows 10
  61. Hack Tools Mac
  62. World No 1 Hacker Software
  63. Pentest Tools Open Source
  64. Hacking Tools For Windows
  65. Hacking Tools For Pc
  66. Hacking Tools Online
  67. Pentest Tools Github
  68. Hacking Tools For Games
  69. Pentest Tools Tcp Port Scanner
  70. Hacking Tools For Mac
  71. Pentest Tools Linux
  72. Underground Hacker Sites
  73. What Is Hacking Tools
  74. Termux Hacking Tools 2019
  75. Hackers Toolbox
  76. Hack Tools For Games
  77. Pentest Tools For Windows
  78. Underground Hacker Sites
  79. Hacker Tools For Windows
  80. Hackrf Tools
  81. Best Hacking Tools 2019
  82. Hack Tools Online
  83. Github Hacking Tools
  84. Pentest Tools Website Vulnerability
  85. Android Hack Tools Github
  86. Pentest Tools Kali Linux
  87. Hacker Tools
  88. Pentest Tools Online
  89. Pentest Reporting Tools
  90. Hacker Tools Linux
  91. Black Hat Hacker Tools
  92. Hacker Tools For Windows
  93. Computer Hacker
  94. Pentest Tools List
  95. Pentest Box Tools Download
  96. Best Hacking Tools 2019
  97. Nsa Hack Tools
  98. Nsa Hack Tools Download
  99. Nsa Hacker Tools
  100. Best Pentesting Tools 2018
  101. Underground Hacker Sites
  102. Hacker Hardware Tools
  103. Pentest Tools Open Source
  104. Ethical Hacker Tools
  105. Bluetooth Hacking Tools Kali
  106. Hacker Security Tools
  107. Hacker Tools Github
  108. Hacking Tools For Beginners
  109. Hack Tools For Ubuntu
  110. Pentest Tools Alternative
  111. Hacker Tools Free Download
  112. Hack Tools For Mac
  113. Hack Tools Pc
  114. Black Hat Hacker Tools
  115. Hack Tools 2019
  116. Hacker Tools Windows
  117. Hacker Tools 2019
  118. Hack Tools For Windows
  119. Hacker Tools For Mac
  120. Hack Tools For Mac
  121. Pentest Tools Tcp Port Scanner
  122. Hacking Tools And Software
  123. Hacker Tools Linux
  124. Hacker Tools For Windows
  125. Hack Website Online Tool
  126. Pentest Tools Free
  127. Pentest Tools Review
  128. Pentest Tools Kali Linux
  129. Pentest Recon Tools
  130. Hacker Tools Apk
  131. Pentest Tools For Android
  132. Bluetooth Hacking Tools Kali
  133. Hacker Tools Linux
  134. Nsa Hacker Tools
  135. Hack Tools Pc
  136. Pentest Tools Website
  137. Bluetooth Hacking Tools Kali
  138. Pentest Tools Open Source
  139. Computer Hacker
  140. Hacking Tools Free Download
  141. Ethical Hacker Tools
  142. Pentest Tools Website
  143. Hack Tools For Pc
  144. Android Hack Tools Github
  145. Pentest Tools Find Subdomains
  146. Hack Tools Download
  147. Underground Hacker Sites
  148. Hacker Tool Kit
  149. Hacking Tools Usb
  150. Hacker Tools Software
  151. Pentest Tools Github
  152. Hacker Tools For Ios
  153. Hacking Tools 2020
  154. Pentest Reporting Tools
  155. Hacker Search Tools
  156. Pentest Tools Apk
  157. Hacking Tools Free Download
  158. Physical Pentest Tools
  159. Hacking Tools Windows
  160. Hack Website Online Tool
  161. Hacking Tools Hardware
  162. Hacking Tools Software
  163. Hack Apps
  164. Beginner Hacker Tools
  165. Hacker Tools List

No comments: