đ CloudSEK has raised $19M Series B1 Round â Powering the Future of Predictive Cybersecurity
Read More
Proactively monitor and defend against malware with CloudSEK XVigil Malware Logs module, ensuring the integrity of your digital assets
Schedule a DemoAn info stealer is malicious software (malware) that seeks to steal private data from a compromised device, including passwords, cookies, autofill information from browsers, and cryptocurrency wallet information.
Since the beginning of 2019, the Raccoon malware has been offered as malware-as-a-service on various cybercrime forums. The Raccoon Stealer group, however, was disbanded in March 2022 as a result of the death of one of its senior developers in the Ukraine-Russia war.
In June 2022, a new version of the Raccoon stealer was identified in the wild by the researchers at Sekoia. Initially, the malware was named âRecordbreakerâ but was later identified as a revived version of Raccoon stealer. The developer of the Raccoon stealer (MaaS) is very active on underground forums, regularly updating the malware, and posting about the new feature builds on the forum.
Raccoon samples have been spotted in the wild on numerous occasions. While some of these were protected by commercial code protectors like VmProtect and Themida, others were seen packed in popular community packers like Armadillo.
CloudSEKâs telemetry was able to pick up a very interesting Raccoon sample that employed very effective anti-analysis and anti-debugging techniques to foil analysis attempts. The sample covered in this report is unique in terms of the deployment of the malware.
The packer used to obfuscate the stealer is specifically designed to perform the two main tasks:
The malwareâs API trace provided a greater understanding of the internals of the packer, without having to spend much time in a debugger. A very interesting behavior found in the trace log is shown below.
The above sequence of operations is performed twice, and then the packer resumes the suspended threads.
The data written by the malware was retrieved by CloudSEKâs researchers with the help of instrumentation.
Hooking plays a major role in the stealer loading phase and the packer is hooking the following two APIs:
Experimenting with the return values of the kernel32!WriteProcessMemory call during analysis helped to confirm the hooking of ntdll!ZwProtectVirtualMemory, which is a crucial step in the infection process. Failure to hook ntdll!ZwProtectVirtualMemory causes the malware to terminate and the following warning to appear.
This behavior is not observed when the malware fails to hook ntdll!DbgUiRemoteBreakin, as the program doesn’t get terminated.
Once Raccoon Stealer is executed, APIs are dynamically loaded into the memory. These APIs are later used by the malware to perform malicious activities on the compromised machine.
After successfully loading the libraries, the stealer decodes all the strings in memory. The previous versions of the stealer used RC4 decryption to encrypt the strings.
However, the recent version uses a custom XOR-based encoding to encrypt the strings.
The stealer calls the kernel32!GetDefaulLocaleName to retrieve the system language (locale name), and then checks it against the string âRUâ. In case of a positive match, no logic is implemented for execution, which shows that the malware is still under development. In the future, we can expect the stealer to terminate itself after a match is found.
After the locale name check, the stealer looks for any active malware samples, by calling kernel32.OpenMutexW. If an active malware process is found, the current malware execution is terminated, else a new mutex is created on the system.
Once the Mutex is created, Raccoon checks the privileges of the user process by following the steps below:
If the process is elevated, the processes running on the system are enumerated as shown below:
It is interesting to note that the result returned (1/0) is not used anywhere by Raccoon. The main reason behind this may be the strong likelihood that the malware is still being actively developed, and some changes to the code of future Raccoon samples should be anticipated.
Also to Read Raccoon Stealer Malware Threat Intel Advisory
Attackers employ a set of tools and procedures known as command and control infrastructure, usually abbreviated as C2 or C&C, to keep in touch with compromised devices after the initial access has been gained. The Raccoon stealer calls home for the first time by sending a unique string to the C2. The string, for the communication, is crafted with the following information:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
The Raccoon stealer uses the following C2 identifier tags to control the behavior of the stealer.
Identifier | Description |
---|---|
libs_ | Library PE/DLL to download |
ews_ | Browser Extensions |
wlts_ | Crypto Wallets Stealing |
sstmnfo_ | Collects SystemInformation and list of Installed Applications |
scrnsht_ | Takes Screenshot |
tlgrm_ | Steals data from Telegram Desktop |
grbr_ | Password Grabber |
dscrd_ | Discord Stealer |
ldr_ | Launches additional payloads like RATs |
token | Unique identifier for tracing campaign |
Once the stealer obtains the C2 configuration from the C2, it starts to parse the configuration, searching for the libs_ identifier to download the legitimate library files such as:
These are downloaded into the User\AppData\LocalLow directory and are not loaded into memory.
The malware loads the necessary DLLs into memory, during the information-stealing process, and dynamically resolves various functions. The images below depict the dynamic API loading from sqlite.dll and ns33.dll respectively.
Post fetching the libraries, a profile of the host is created and sent to the C2 as a âSystem Info.txtâ file.
The stealer performs the host profiling only if sstmnfo_ identifier is present in the C2 configuration. Following information is enumerated in the host profile:
The malware steals information saved by web browsers in the local user’s AppData directory. The primary directories targeted are “User Data” and Profile .
The stealer is interested in the following browser data:
Like any stealer, Raccoon performs the following operations to steal the browser data:
Stolen Data | Location of the Stolen Data |
---|---|
Passwords | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Login Data |
AutoFills | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Web Data |
Credit Cards | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Web Data |
Cookies | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies |
The previously downloaded sqlite.dll is loaded into memory to resolve the addresses of the functions required for querying data from the browser database. Following images contain the various SQL queries employed by the malware to steal the Chrome browser data.
The previously downloaded ns33.dll is loaded into memory to retrieve the data stored by Mozilla Firefox. The stealer then proceeds to steal the browser’s cookie, login, and form history data. The âffcookies.txtâ filename is used for sending stolen Firefox data to the C2 server.
The table below contains the list of wallets and web extensions targeted by the Raccoon malware.
Wallets | |||
---|---|---|---|
Exodus | Atomic | Jaxx Liberty | Electron Cash |
Binance | Coinomi | Electrum | Ledger |
Guarda | Monero | Ronin | Daedalus |
Blockstream Green | Meta | Wasabi | |
Web Extensions | |||
metax | xdefi | waveskeeper | solflare |
rabby | cyano | coinbase | auromina |
khc | tezbox | coin98 | temple |
iconex | sollet | clover | polymesh |
neoline | keplr | terraStation | liquality |
SaturnWallet | GuildWallet | phantom | tronlink |
brave | MetaMask | ronin | mewcx |
ton | goby | bitkeep | Cosmostation |
GameStop | stargazer | Enkrypt | jaxxliberty |
CloverWallet |
The malware uses the grbr_ identifier to enable the grabber functionality and starts searching the system for files such as password files, wallet seeds, etc.
Raccoon steals Telegram data from the âTelegram Desktopâ\tdata directory. It is particularly interested in the directories containing user_data, emoji, tdummy, and dumps.
The stealer is also capable of stealing Discord data, such as tokens, but this feature is not enabled by default. The malware operator needs to explicitly provide a âdscrd_â identifier in the configuration to enable this option.
Apart from stealing information, Raccoon can also take screenshots of the compromised system by using the âscrnsht_â identifier in the C2 configuration. The details of the screenshot capturing process are explained below.
List of APIs Resolved | ||
---|---|---|
Gdiplus!GdiplusStartup | Gdiplus!GdipDisposeImage | Gdiplus!GdipGetImageEncoders |
Gdiplus!GetImageEncodersSize | Gdiplus!GdipCreateBitmapFromHBitmap | Gdiplus!GdipSaveImageToFile |
gdi32!BitBlt | gdi32!CreateCompatibleBitmap | gdi32!CreateCompatibleDC |
gdi32!DeleteObject | gdi32!GetObjectW | gdi32!SelectObject |
gdi32!SetStretchBltMode | gdi32!StretchBlt |
The Raccoon stealer, like any other malware in its class, has the ability to execute user-provided additional malware (such as RATs) on the compromised system. As per CloudSEKâs analysis of multiple samples, this feature is not present by default. Thus, when the stealer fetches the configuration, the operator will have to explicitly enable this feature by providing the ldr_ identifier with a URL to fetch the additional payload executable along with the directory information, to install/drop it on the system for further execution.
The image below depicts the module responsible for this feature. Initially, the module checks for the identifier ldr_ in the C2 configuration. If no Idr_ is present, the flow returns to its main function.
If the C2 contains an ldr_ identifier, the following code is used to execute the fetched executable. The shell32!ShellExecuteW API is called by passing the file and the âopenâ operation as parameters.
Before exiting the system, the stealer deletes the DLL files that were loaded in the memory during the operation and terminates its execution.
Binary | |
---|---|
494ab44bb96537fc8a3e832e3cf032b0599501f96a682205bc46d9b7744d52ab | |
dd2db9bfa45002375af028ac00ca1b5e0c1db30a116c21cac2b4c75cb4ff9aec | |
IPv4 | |
193.56.146.177 |
CloudSEK's threat research team has uncovered a ransomware attack disrupting India's banking system, targeting banks and payment providers. Initiated through a misconfigured Jenkins server at Brontoo Technology Solutions, the attack is linked to the RansomEXX group.
On 23 October 2023, CloudSEKâs Threat Intelligence Team detected a Ransomware-as-a-Service (RaaS) group, named QBit introducing a newly developed ransomware written in Go, boasting advanced features to optimize its malicious operations.
Our researchers have found out The Amadey botnet is now using a new Healer AV disabler to disable Microsoft Defender and infect target systems with Redline stealer.
Take action now
CloudSEK Platform is a no-code platform that powers our products with predictive threat analytic capabilities.
Digital Risk Protection platform which gives Initial Attack Vector Protection for employees and customers.
Software and Supply chain Monitoring providing Initial Attack Vector Protection for Software Supply Chain risks.
Creates a blueprint of an organization's external attack surface including the core infrastructure and the software components.
Instant Security Score for any Android Mobile App on your phone. Search for any app to get an instant risk score.
min read
Recordbreaker: The Resurgence of Raccoon
An info stealer is malicious software (malware) that seeks to steal private data from a compromised device, including passwords, cookies, autofill information from browsers, and cryptocurrency wallet information.
Since the beginning of 2019, the Raccoon malware has been offered as malware-as-a-service on various cybercrime forums. The Raccoon Stealer group, however, was disbanded in March 2022 as a result of the death of one of its senior developers in the Ukraine-Russia war.
In June 2022, a new version of the Raccoon stealer was identified in the wild by the researchers at Sekoia. Initially, the malware was named âRecordbreakerâ but was later identified as a revived version of Raccoon stealer. The developer of the Raccoon stealer (MaaS) is very active on underground forums, regularly updating the malware, and posting about the new feature builds on the forum.
Raccoon samples have been spotted in the wild on numerous occasions. While some of these were protected by commercial code protectors like VmProtect and Themida, others were seen packed in popular community packers like Armadillo.
CloudSEKâs telemetry was able to pick up a very interesting Raccoon sample that employed very effective anti-analysis and anti-debugging techniques to foil analysis attempts. The sample covered in this report is unique in terms of the deployment of the malware.
The packer used to obfuscate the stealer is specifically designed to perform the two main tasks:
The malwareâs API trace provided a greater understanding of the internals of the packer, without having to spend much time in a debugger. A very interesting behavior found in the trace log is shown below.
The above sequence of operations is performed twice, and then the packer resumes the suspended threads.
The data written by the malware was retrieved by CloudSEKâs researchers with the help of instrumentation.
Hooking plays a major role in the stealer loading phase and the packer is hooking the following two APIs:
Experimenting with the return values of the kernel32!WriteProcessMemory call during analysis helped to confirm the hooking of ntdll!ZwProtectVirtualMemory, which is a crucial step in the infection process. Failure to hook ntdll!ZwProtectVirtualMemory causes the malware to terminate and the following warning to appear.
This behavior is not observed when the malware fails to hook ntdll!DbgUiRemoteBreakin, as the program doesn’t get terminated.
Once Raccoon Stealer is executed, APIs are dynamically loaded into the memory. These APIs are later used by the malware to perform malicious activities on the compromised machine.
After successfully loading the libraries, the stealer decodes all the strings in memory. The previous versions of the stealer used RC4 decryption to encrypt the strings.
However, the recent version uses a custom XOR-based encoding to encrypt the strings.
The stealer calls the kernel32!GetDefaulLocaleName to retrieve the system language (locale name), and then checks it against the string âRUâ. In case of a positive match, no logic is implemented for execution, which shows that the malware is still under development. In the future, we can expect the stealer to terminate itself after a match is found.
After the locale name check, the stealer looks for any active malware samples, by calling kernel32.OpenMutexW. If an active malware process is found, the current malware execution is terminated, else a new mutex is created on the system.
Once the Mutex is created, Raccoon checks the privileges of the user process by following the steps below:
If the process is elevated, the processes running on the system are enumerated as shown below:
It is interesting to note that the result returned (1/0) is not used anywhere by Raccoon. The main reason behind this may be the strong likelihood that the malware is still being actively developed, and some changes to the code of future Raccoon samples should be anticipated.
Also to Read Raccoon Stealer Malware Threat Intel Advisory
Attackers employ a set of tools and procedures known as command and control infrastructure, usually abbreviated as C2 or C&C, to keep in touch with compromised devices after the initial access has been gained. The Raccoon stealer calls home for the first time by sending a unique string to the C2. The string, for the communication, is crafted with the following information:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography
The Raccoon stealer uses the following C2 identifier tags to control the behavior of the stealer.
Identifier | Description |
---|---|
libs_ | Library PE/DLL to download |
ews_ | Browser Extensions |
wlts_ | Crypto Wallets Stealing |
sstmnfo_ | Collects SystemInformation and list of Installed Applications |
scrnsht_ | Takes Screenshot |
tlgrm_ | Steals data from Telegram Desktop |
grbr_ | Password Grabber |
dscrd_ | Discord Stealer |
ldr_ | Launches additional payloads like RATs |
token | Unique identifier for tracing campaign |
Once the stealer obtains the C2 configuration from the C2, it starts to parse the configuration, searching for the libs_ identifier to download the legitimate library files such as:
These are downloaded into the User\AppData\LocalLow directory and are not loaded into memory.
The malware loads the necessary DLLs into memory, during the information-stealing process, and dynamically resolves various functions. The images below depict the dynamic API loading from sqlite.dll and ns33.dll respectively.
Post fetching the libraries, a profile of the host is created and sent to the C2 as a âSystem Info.txtâ file.
The stealer performs the host profiling only if sstmnfo_ identifier is present in the C2 configuration. Following information is enumerated in the host profile:
The malware steals information saved by web browsers in the local user’s AppData directory. The primary directories targeted are “User Data” and Profile .
The stealer is interested in the following browser data:
Like any stealer, Raccoon performs the following operations to steal the browser data:
Stolen Data | Location of the Stolen Data |
---|---|
Passwords | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Login Data |
AutoFills | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Web Data |
Credit Cards | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Web Data |
Cookies | C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies |
The previously downloaded sqlite.dll is loaded into memory to resolve the addresses of the functions required for querying data from the browser database. Following images contain the various SQL queries employed by the malware to steal the Chrome browser data.
The previously downloaded ns33.dll is loaded into memory to retrieve the data stored by Mozilla Firefox. The stealer then proceeds to steal the browser’s cookie, login, and form history data. The âffcookies.txtâ filename is used for sending stolen Firefox data to the C2 server.
The table below contains the list of wallets and web extensions targeted by the Raccoon malware.
Wallets | |||
---|---|---|---|
Exodus | Atomic | Jaxx Liberty | Electron Cash |
Binance | Coinomi | Electrum | Ledger |
Guarda | Monero | Ronin | Daedalus |
Blockstream Green | Meta | Wasabi | |
Web Extensions | |||
metax | xdefi | waveskeeper | solflare |
rabby | cyano | coinbase | auromina |
khc | tezbox | coin98 | temple |
iconex | sollet | clover | polymesh |
neoline | keplr | terraStation | liquality |
SaturnWallet | GuildWallet | phantom | tronlink |
brave | MetaMask | ronin | mewcx |
ton | goby | bitkeep | Cosmostation |
GameStop | stargazer | Enkrypt | jaxxliberty |
CloverWallet |
The malware uses the grbr_ identifier to enable the grabber functionality and starts searching the system for files such as password files, wallet seeds, etc.
Raccoon steals Telegram data from the âTelegram Desktopâ\tdata directory. It is particularly interested in the directories containing user_data, emoji, tdummy, and dumps.
The stealer is also capable of stealing Discord data, such as tokens, but this feature is not enabled by default. The malware operator needs to explicitly provide a âdscrd_â identifier in the configuration to enable this option.
Apart from stealing information, Raccoon can also take screenshots of the compromised system by using the âscrnsht_â identifier in the C2 configuration. The details of the screenshot capturing process are explained below.
List of APIs Resolved | ||
---|---|---|
Gdiplus!GdiplusStartup | Gdiplus!GdipDisposeImage | Gdiplus!GdipGetImageEncoders |
Gdiplus!GetImageEncodersSize | Gdiplus!GdipCreateBitmapFromHBitmap | Gdiplus!GdipSaveImageToFile |
gdi32!BitBlt | gdi32!CreateCompatibleBitmap | gdi32!CreateCompatibleDC |
gdi32!DeleteObject | gdi32!GetObjectW | gdi32!SelectObject |
gdi32!SetStretchBltMode | gdi32!StretchBlt |
The Raccoon stealer, like any other malware in its class, has the ability to execute user-provided additional malware (such as RATs) on the compromised system. As per CloudSEKâs analysis of multiple samples, this feature is not present by default. Thus, when the stealer fetches the configuration, the operator will have to explicitly enable this feature by providing the ldr_ identifier with a URL to fetch the additional payload executable along with the directory information, to install/drop it on the system for further execution.
The image below depicts the module responsible for this feature. Initially, the module checks for the identifier ldr_ in the C2 configuration. If no Idr_ is present, the flow returns to its main function.
If the C2 contains an ldr_ identifier, the following code is used to execute the fetched executable. The shell32!ShellExecuteW API is called by passing the file and the âopenâ operation as parameters.
Before exiting the system, the stealer deletes the DLL files that were loaded in the memory during the operation and terminates its execution.
Binary | |
---|---|
494ab44bb96537fc8a3e832e3cf032b0599501f96a682205bc46d9b7744d52ab | |
dd2db9bfa45002375af028ac00ca1b5e0c1db30a116c21cac2b4c75cb4ff9aec | |
IPv4 | |
193.56.146.177 |