Table of contents
Context
In January 2023, through our Dark Web monitoring routine, Sekoia.io identified a new information stealer advertised as Stealc by its alleged developer, going by the handle Plymouth. The threat actor presents Stealc as a fully featured and ready-to-use stealer, whose development relied on Vidar, Raccoon, Mars and Redline stealers. This information suggests that this newcomer could be a serious competitor to the popular widespread malware families mentioned above.
In early February 2023, Sekoia.io identified a new malware family when tracking infrastructures distributing information stealers. The Command and Control (C2) communications of the associated samples share similarities with those of Vidar and Raccoon. Further analysis by Sekoia.io allowed us to associate this new malware family with Stealc.
The investigation led us to discover several dozens of Stealc samples distributed in the wild, and more than 40 Stealc C2 servers, certainly an indication that this new infostealer became widespread and popular among cybercriminals distributing stealers. Sekoia.io therefore conducted an in-depth analysis of this emerging threat.
This blog post aims at presenting the activities of the Stealc’s alleged developer, a technical analysis of the malware and its C2 communications, and how to track it. We also share details on Stealc capabilities (Annex 1) and an infection chain distributing it (Annex 2).
In a follow-up blog post, we will share a write-up on the reverse engineering of Stealc to take a look at the different techniques implemented by the malware.
A successful entry into the cybercrime market
First Stealc advertisement
On 9 January, 2023, Plymouth advertised the Stealc information stealer for the first time on XSS and BHF Russians-speaking underground forums. The threat actor published a detailed description of the new malware to list its wide stealing capabilities, the fully featured and well designed administration panel, and some technical characteristics.
By default, Stealc targets sensitive data from most used web browsers, browser extensions for cryptocurrency wallets, desktop cryptocurrency wallets and information from additional applications, including email client and messenger software. Compared to other stealers Sekoia.io analysed, the data collection configuration can be customised to tailor the malware to the customer needs.
Stealc also implements a customisable file grabber, allowing its customers to steal files matching their grabber rules. The stealer also has loader capabilities that would be usually expected for an information stealer sold as a Malware-as-a-Service (MaaS). A complete list of Stealc capabilities is shared in Annex 1.
The administration panel is also fully featured and allows its users (i.e. threat actors distributing the stealer), to:
- set up the malware configuration;
- parse, display, filter, sort and analyse the stolen data;
- download the logs (stolen data) with several options.
Sekoia.io observed that logs handling is a key feature for all information stealers entering the MaaS market. Threat actors are likely to sell the stolen data on logs marketplace and therefore need to download it in a personalised way. In addition, they need to identify and extract the valuable credentials and files from the large amounts of collected data. Thus, we assess Plymouth, the Stealc presumed developer, almost certainly dedicated a great effort to develop the administration panel on sorting and downloading logs features.
Plymouth’s activity carried out in a professional manner
After the first publication on 9 January, 2023 on XSS and BHF, Plymouth continued to advertise its infostealer to reach a larger audience on additional channels, including Exploit hacking forum and Telegram messaging application.
To gain the trust of potential customers, developers often offer free malware tests to cybercrime forum users to collect reviews and possibly positive feedback on their product. This is considered as a guarantee of quality, similarly to a Bitcoin deposit on a cybercrime forum. On some forums, it is even required to make a deposit or have relevant feedback from an administrator, moderator or experienced user to sell a product or service.
As shown in the following figure, Plymouth fulfils both: a 0.02 Bitcoin deposit (around $400 at the time of deposit), and free weekly tests offered to XSS users. We assess with high confidence that its alleged developer quickly established itself as a reliable threat actor, and its malware gained the trust of cybercriminals dealing with infostealers.
In addition, Plymouth released several versions of Stealc and published changelogs on different forums, as well as on a dedicated Telegram channel (hxxps://t[.]me/stealc_changelog). The changelogs introduce new features and bug fixes. Main changes for each release are listed in the following figure.
Plymouth’s publications and observed activities indicate that Stealc is under ongoing development with new features added on a weekly basis. While the stealer is already functional and adopted by several threat actors, the developer continues to improve both malware and administration panels, likely to expand its customer base.
Technical analysis
Before analysing Stealc’s execution process and C2 communications, we present how we associate the new malware family with the malware advertised by Stealc.
Malware sample association
In early February 2023, Sekoia.io analysts found a sample of an unknown malware by investigating an infrastructure typically used to distribute stealers (SHA256: a2465fc5059ea57c7b64b1dc01caf8735422a005ddb7fabeddfa3cbc89085ccf, https://tria.ge/230212-pkc69adh37). The sample execution raises two specific characteristics:
- The download of a legitimate third-party DLLs, already observed being abused by stealers (sqlite3.dll, freebl3.dll, mozglue.dll, msvcp40.dll, nss3.dll, softokn3.dll and vcruntime140.dll);
- The execution of a command deleting all DLLs in C:ProgramData.
From these behaviours, we pivoted on dozens of samples that appear to belong to the same malware family using the following query on VirusTotal:
behaviour:"C:ProgramData*.dll" behaviour:"timeout /t 5" behaviour:"sqlite3.dll"
The results returned standalone samples of about 80KB (SHA256: 77d6f1914af6caf909fa2a246fcec05f500f79dd56e5d0d466d55924695c702d), we analysed it in depth to corroborate the association of this new malware family to Stealc. Here is a summary of the association of Stealc features as advertised by Plymouth and sample features observed by Sekoia.io.
Stealc features, as described by Plymouth on XSS | Sekoia.io observations based on samples of the new malware family |
When developing our solution, we relied on Vidar, Raccoon, Mars and RedLine | Stealc, Vidar, Raccoon and Mars all download legitimate third-party DLLs (sqlite3.dll, nss3.dll, etc.), as the found sample. |
Current build weight – 78kb | The standalone sample is approximately 80KB. |
stealc was written in pure C using WinAPI | C written malware uses WinAPI functions. |
all functions are dynamically loaded | Once the strings are deobfuscated, the malware loads the WinAPI functions using GetProcAddress and LoadLibraryA. |
import table is taken by couple of imports from mscrt | The import address table imports 6 functions from MsvcrtDLL. |
All lines of work are obfuscated. | All strings are obfuscated using RC4 and base64, except a few ones which are related to new features (update v1.1.2). |
stealc does not generate an archive on the client side, each file to be collected is sent to the server in a separate request | The malware exfiltrates the collected data file by file and doesn’t wait to receive all configuration to collect and send data. |
more than 23 supported browsers | Based on the configuration sent by the C2, the malware targets 22 browsers. |
more than 70 web plugins | Based on the configuration sent by C2, Stealc targets 75 plugins. |
more than 15 desktop wallets | Based on the configuration sent by C2, Stealc targets 25 wallets. |
email clients | The sample collects data from Outlook files (Outlookaccounts.txt), the configuration is stored in the obfuscated data. |
added random name generation for script-gate (api.php), in stealc update v1.1.2 | The first samples communicated on /api.php and downloaded the DLLs from /libs/. Recent samples used random paths ([a-f0-9]{16}) for data exfiltration and DLL download. |
recorded user-agents in the system_info.txt file, in stealc update v1.1.2 | The malware exfiltrates victim host’s user agents. |
recorded ip and country in file system_info.txt, in stealc update v1.1.2 | IP address and country of the infected host (ISO) are exfiltrated to the C2. |
Based on this comparative table, Sekoia.io analysts assess this new malware family found in the wild matches Stealc infostealer with high confidence.
Technical overview of Stealc sample
Sekoia.io reverse engineered Stealc and will publish an in-depth analysis to share further details. In the meantime, here is an overview of the main steps of Stealc execution.
Once executed, Stealc deobfuscates all its RC4-encrypted and base64-encoded strings. It then compares the system date to the hardcoded date in the obfuscated strings. If the execution occurs after the hardcoded date, the malware stops. This check is likely implemented by the stealer developer to limit the customer’s activity to the licence validity period.
Stealc also checks for virtual or sandbox environments by comparing the machine name to HAL9TH and the user name to JohnDoe, solely used by Microsoft Defender emulator.
The malware dynamically loads the different WinAPI functions using LoadLibrary and GetProcAddress, and initiates the communication to its C2 server. Here is a step-by-step analysis of the malware communication:
- Stealc first sends the victim’s host HWID (Hardware Identifier) and build name to its C2 server, using a POST request on the server gate (name=”hwid”, name=”build”). The server responds with the base64-encoded configuration, such as:
d325580bb149e327a7c8338ec6c9ac7227e7c319411261441d8d3097b2a2d6e5fef3ce48|isdone|docia.docx| |
- The malware sends the command browsers to the C2 to retrieve its configuration for data collection from web browsers, using a POST request on the server gate (name=”token”, name=”message” (browsers)). Again, the server responds with the base64-encoded configuration, such as:
Google Chrome|GoogleChromeUser Data|chrome|Google Chrome Canary|GoogleChrome SxSUser Data|chrome|Chromium|ChromiumUser Data|chrome|Amigo|AmigoUser Data|chrome|Torch|TorchUser Data|chrome|Vivaldi|VivaldiUser Data|chrome|Comodo Dragon|ComodoDragonUser Data|chrome|EpicPrivacyBrowser|Epic Privacy BrowserUser Data|chrome|CocCoc|CocCocBrowserUser Data|chrome|Brave|BraveSoftwareBrave-BrowserUser Data|chrome|Cent Browser|CentBrowserUser Data|chrome|7Star|7Star7StarUser Data|chrome|Chedot Browser|ChedotUser Data|chrome|Microsoft Edge|MicrosoftEdgeUser Data|chrome|360 Browser|360BrowserBrowserUser Data|chrome|QQBrowser|TencentQQBrowserUser Data|chrome|CryptoTab|CryptoTab BrowserUser Data|chrome|Opera Stable|Opera Software|opera|Opera GX Stable|Opera Software|opera|Mozilla Firefox|MozillaFirefoxProfiles|firefox|Pale Moon|Moonchild ProductionsPale MoonProfiles|firefox|Opera Crypto Stable|Opera Software|opera|Thunderbird|ThunderbirdProfiles|firefox| |
- Using the same format, it sends the command plugins to the C2 to retrieve its configuration for data collection from web browser extensions, using a POST request on the server gate (name=”token”, name=”message” (plugins)). The server responds with the base64-encoded configuration, such as:
MetaMask|djclckkglechooblngghdinmeemkbgci|1|0|0|MetaMask|ejbalbakoplchlghecdalmeeeajnimhm|1|0|0| |
- Stealc exfiltrates fingerprint data of the infected host, using a POST request on the server gate (name=”token”, name=”file_name”, name=”file”). The file is named system_info.txt and includes information on network, system summary, user agents, installed apps and process list.
- It downloads 7 legitimate third-party DLLs from the C2 server, using GET requests, in the following order:
- sqlite3.dll
- freebl3.dll
- mozglue.dll
- msvcp40.dll
- nss3.dll
- softokn3.dll
- vcruntime140.dll
- Stealc exfiltrates files one by one, using POST requests on the server gate (name=”token”, name=”file_name”, name=”file”). Files collected and exfiltrated by the malware correspond to those defined in the received configuration, such as (for a victim host having Mozilla Firefox installed):
- historyMozilla Firefox_*.default-release.txt
- autofillMozilla Firefox_*.default-release.txt
- cookiesMozilla Firefox_*.default-release.txt
- It sends the command wallets to the C2 to retrieve its configuration for data collection from desktop cryptocurrency wallets, using a POST request on the server gate (name=”token”, name=”message” (wallets)). Again, the server responds with the base64-encoded configuration, such as:
Bitcoin Core|Bitcoinwallets|wallet.dat|1|Bitcoin Core Old|Bitcoin|*wallet*.dat|0|Dogecoin|Dogecoin|*wallet*.dat|0|Raven Core|Raven|*wallet*.dat|0|Daedalus Mainnet|Daedalus Mainnetwallets|she*.sqlite|0|Blockstream Green|BlockstreamGreenwallets|*.*|1|Wasabi Wallet|WalletWasabiClientWallets|*.json|0|Ethereum|Ethereum|keystore|0|Electrum|Electrumwallets|*.*|0|(redacted) |
- It also sends the command files to the C2 to retrieve its configuration for the file grabber, using a POST request on the server gate (name=”token”, name=”message” (files)). The server responds with the base64-encoded configuration, such as:
DESKTOP|%DESKTOP%|*.txt|15|1|0|Doki|%DOCUMENTS%|*.txt|15|1|0| |
- Again, it exfiltrates the collected data using the same pattern as previously described in step 6 (name=”token”, name=”file_name”, name=”file”). With the previous configuration, the file filesDESKTOPSwitchSearch.txt is collected and exfiltrated by the malware.
- Finally, Stealc obfuscated data includes the file path or the Windows Registry key related to sensitive data of Discord, Telegram, Tox, Outlook and Steam. The malware gathers the targeted files and exfiltrates then with the same pattern as described before.
- Once the malware finishes retrieving all configurations and exfiltrating collected data, it sends the command done using a POST request on the server gate (name=”token”, name=”message” (done)).
Stealc C2 communications are verbose when the infected host has multiple web browsers, extensions, desktop wallets or files matching the collection configuration.
Once the data collection process is done, the malware removes itself and the downloaded DLL files from the compromised host by executing the following command:
cmd.exe /c timeout /t 5 & del /f /q "$STEALERPATH" & del "C:ProgramData*.dll" & exit |
Tracking Stealc in its many forms
Standalone samples
An efficient way to detect the Stealc standalone samples consists in writing a YARA rule on the specific strings which are not obfuscated (those which were added in the v1.2.0 Stealc release).
For this purpose, we compare the common strings embedded in all the Stealc standalone samples. Here are the characteristic strings included in all standalone samples:
ASCII: ------ paddr: 69704, 69726 |
We can also sign the malware function that loops over the obfuscated strings to deobfuscate them. A YARA rule based on both methods is shared in IoCs & Technical Details.
Packed samples
YARA signatures based on the malware strings or functions are not efficient when the sample is packed using a commercial packer, a custom loader, embedded in a shellcode, or else. In that scenario, dynamic detection is a valid option.
To this end, we can use a YARA rule for VirusTotal Livehunt to detect the specific commands executed by Stealc or the specific C2 communications, including:
/c timeout /t 5 |
As we did above to pivot on this malware family, we can correlate these specific behaviours in a YARA rule using VirusTotal Livehunt. A YARA rule is shared in IoCs & Technical Details.
C2 servers
Tracking the Stealc C2 servers can be done using the HTTP and HTML default responses which seem to be characteristic. Most of the scanned C2 servers responds an HTTP 200 status code with an HTML page containing a “404 Forbidden” Apache server on the port 80, as shown below:
HTTP/1.1 200 OK |
To confirm that a server matching this specific HTML response and an HTTP 200 status code corresponds to a Stealc C2 server, we can scan some URIs opened on Stealc servers, such as “/modules/” and “/index.php/”.
At the time of writing, Sekoia.io found 35 active servers associated with Stealc C2 with high confidence (listed below in IoCs & Technical Details), and more than 40 Stealc samples.
Conclusion
Stealc is another fully featured infostealer sold as a MaaS which emerged on underground forums in early 2023. Plymouth drew on the today’s trendy infostealers on the market (Vidar, Raccoon, Redline and Mars) to develop a malware that quickly became popular among Russian-speaking cybercriminals.
Since customers of the Stealc MaaS own a build of its administration panel to host the stealer C2 server and generate stealer samples themselves, it is likely that the build will leak into the underground communities in the medium term. For that matter Sekoia.io further assess the Plymouth business possibly will not be viable over several years, as Vidar or Raccoon projects are. However, it is likely that a cracked version of the Stealc build may be released in the future which may be used for many years to come.
However, we expect that the Stealc infostealer will become widespread in the near term, as multiple threat actors add the malware to their arsenal while it is poorly monitored. Companies facing stealer compromise need to be aware of this malware.
To provide our customers with actionable intelligence, Sekoia.io analysts will continue to monitor emerging and prevalent infostealers, including Stealc.
Annex
Annex 1 – Stealc capabilities
Targeted web browsers
Web browser | Path of targeted file | Format |
Google Chrome | GoogleChromeUser Data | chrome |
Google Chrome Canary | GoogleChrome SxSUser Data | chrome |
Chromium | ChromiumUser Data | chrome |
Amigo | AmigoUser Data | chrome |
Torch | TorchUser Data | chrome |
Vivaldi | VivaldiUser Data | chrome |
Comodo Dragon | ComodoDragonUser Data | chrome |
EpicPrivacyBrowser | Epic Privacy BrowserUser Data | chrome |
CocCoc | CocCocBrowserUser Data | chrome |
Brave | BraveSoftwareBrave-BrowserUser Data | chrome |
Cent Browser | CentBrowserUser Data | chrome |
7Star | 7Star7StarUser Data | chrome |
Chedot Browser | ChedotUser Data | chrome |
Microsoft Edge | MicrosoftEdgeUser Data | chrome |
360 Browser | 360BrowserBrowserUser Data | chrome |
QQBrowser | TencentQQBrowserUser Data | chrome |
CryptoTab | CryptoTab BrowserUser Data | chrome |
Opera Stable | Opera Software | opera |
Opera GX Stable | Opera Software | opera |
Mozilla Firefox | MozillaFirefoxProfiles | firefox |
Pale Moon | Moonchild ProductionsPale MoonProfiles | firefox |
Opera Crypto Stable | Opera Software | opera |
Targeted browser extensions
Cryptocurrency wallet | Extension ID |
MetaMask | djclckkglechooblngghdinmeemkbgci |
MetaMask | ejbalbakoplchlghecdalmeeeajnimhm |
MetaMask | nkbihfbeogaeaoehlefnkodbefgpgknn |
TronLink | ibnejdfjmmkpcnlpebklmnkoeoihofec |
Binance Wallet | fhbohimaelbohpjbbldcngcnapndodjp |
Yoroi | ffnbelfdoeiohenkjibnmadjiehjhajb |
Coinbase Wallet extension | hnfanknocfeofbddgcijnmhnfnkdnaad |
Guarda | hpglfhgfnhbgpjdenjgmdgoeiappafln |
Jaxx Liberty | cjelfplplebdjjenllpjcblmjkfcffne |
iWallet | kncchdigobghenbbaddojjnnaogfppfj |
MEW CX | nlbmnnijcnlegkjjpcfjclmcfggfefdm |
GuildWallet | nanjmdknhkinifnkgdcggcfnhdaammmj |
Ronin Wallet | fnjhmkhhmkbjkkabndcnnogagogbneec |
NeoLine | cphhlgmgameodnhkjdmkpanlelnlohao |
CLV Wallet | nhnkbkgjikgcigadomkphalanndcapjk |
Liquality Wallet | kpfopkelmapcoipemfendmdcghnegimn |
Terra Station Wallet | aiifbnbfobpmeekipheeijimdpnlpgpp |
Keplr | dmkamcknogkgcdfhhbddcghachkejeap |
Sollet | fhmfendgdocmcbmfikdcogofphimnkno |
Auro Wallet(Mina Protocol) | cnmamaachppnkjgnildpdmkaakejnhae |
Polymesh Wallet | jojhfeoedkpkglbfimdfabpdfjaoolaf |
ICONex | flpiciilemghbmfalicajoolhkkenfel |
Coin98 Wallet | aeachknmefphepccionboohckonoeemg |
EVER Wallet | cgeeodpfagjceefieflmdfphplkenlfk |
KardiaChain Wallet | pdadjkfkgcafgbceimcpbkalnfnepbnk |
Rabby | acmacodkjbdgmoleebolmdjonilkdbch |
Phantom | bfnaelmomeimhlpmgjnjophhpkkoljpa |
Brave Wallet | odbfpeeihdkbihmopkbjmoonfanlbfcl |
Oxygen | fhilaheimglignddkjgofkcbgekhenbh |
Pali Wallet | mgffkfbidihjpoaomajlbgchddlicgpn |
BOLT X | aodkkagnadcbobfpggfnjeongemjbjca |
XDEFI Wallet | hmeobnfnfcmdkdcmlblgagmfpfboieaf |
Nami | lpfcbjknijpeeillifnkikgncikgfhdo |
Maiar DeFi Wallet | dngmlblcodfobpdpecaadgfbcggfjfnm |
Keeper Wallet | lpilbniiabackdjcionkobglmddfbcjo |
Solflare Wallet | bhhhlbepdkbapadjdnnojkbgioiodbic |
Cyano Wallet | dkdedlpgdmmkkfjabffeganieamfklkm |
KHC | hcflpincpppdclinealmandijcmnkbgn |
TezBox | mnfifefkajgofkcjkemidiaecocnkjeh |
Temple | ookjlbkiijinhpmnjffcofjonbfbgaoc |
Goby | jnkelfanjkeadonecabehalmbgpfodjm |
Ronin Wallet | kjmoohlgokccodicjjfebfomlbljgfhk |
Byone | nlgbhdfgdhgbiamfdfmbikcdghidoadd |
OneKey | jnmbobjmhlngoefaiojfljckilhhlhcj |
DAppPlay | lodccjjbdhfakaekdiahmedfbieldgik |
SteemKeychain | jhgnbkkipaallpehbohjmkbjofjdmeid |
Braavos Wallet | jnlgamecbpmbajjfhmmmlhejkemejdma |
Enkrypt | kkpllkodjeloidieedojogacfhpaihoh |
OKX Wallet | mcohilncbfahbmgdjkbpemcciiolgcge |
Sender Wallet | epapihdplajcdnnkdeiahlgigofloibg |
Hashpack | gjagmgiddbbciopjhllkdnddhcglnemk |
Eternl | kmhcihpebfmpgmihbkipmjlmmioameka |
Pontem Aptos Wallet | phkbamefinggmakgklpkljjmgibohnba |
Petra Aptos Wallet | ejjladinnckdgjemekebdpeokbikhfci |
Martian Aptos Wallet | efbglgofoippbgcjepnhiblaibcnclgk |
Finnie | cjmkndjhnagcfbpiemnkdpomccnjblmj |
Leap Terra Wallet | aijcbedoijmgnlmjeegjaglmepbmpkpi |
Trezor Password Manager | imloifkgjagghnncjkhggdhalmcnfklk |
Authenticator | bhghoamapcdpbohphigoooaddinpkbai |
Authy | gaedmjdfmmahhbjefcbgaolhhanlaolb |
EOS Authenticator | oeljdldpnmdbchonielidgobddffflal |
GAuth Authenticator | ilgcnhelpchnceeipipijaljkblbcobl |
Bitwarden | nngceckbapebfimnlniiiahkandclblb |
KeePassXC | oboonakemofpalcgghocfoadofidjkkk |
Dashlane | fdjamakpfbbddfjaooikfcpapjohcfmg |
NordPass | fooolghllnmhmmndgjiamiiodkpenpbb |
Keeper | bfogiafebfohielmmehodmfbbebbbpei |
RoboForm | pnlccmojcmeohlpggmfnbbiapkmbliob |
LastPass | hdokiejnpimakedhajhdlcegeplioahd |
BrowserPass | naepdomgkenhinolocfifgehidddafch |
MYKI | bmikpgodpkclnkgmnpphehdgcimmided |
Splikity | jhfjfclepacoldmjmkmdlmganfaalklb |
CommonKey | chgfefjpcobfbnpmiokfjjaglahmnded |
Zoho Vault | igkpcodhieompeloncfnbekccinhapdb |
Opera Wallet | gojhcdgcpbpfigcaejpfhfegekdgiblk |
Targeted desktop cryptocurrency wallets
Cryptocurrency wallet | Path of targeted directory | File |
Bitcoin Core | Bitcoinwallets | wallet.dat |
Bitcoin Core Old | Bitcoin | wallet.dat |
Dogecoin | Dogecoin | wallet.dat |
Raven Core | Raven | wallet.dat |
Daedalus Mainnet | Daedalus Mainnetwallets | she*.sqlite |
Blockstream Green | BlockstreamGreenwallets | . |
Wasabi Wallet | WalletWasabiClientWallets | .json |
Ethereum | Ethereum | keystore |
Electrum | Electrumwallets | . |
ElectrumLTC | Electrum-LTCwallets | . |
Exodus | Exodus | exodus.conf.json |
Exodus | Exodus | window-state.json |
Exodus | Exodusexodus.wallet | passphrase.json |
Exodus | Exodusexodus.wallet | seed.seco |
Exodus | Exodusexodus.wallet | info.seco |
Electron Cash | ElectronCashwallets | . |
MultiDoge | MultiDoge | multidoge.wallet |
Jaxx Desktop (old) | jaxxLocal Storage | file__0.localstorage |
Jaxx Desktop | com.liberty.jaxxIndexedDBfile__0.indexeddb.leveldb | . |
Atomic | atomicLocal Storageleveldb | . |
Binance | Binance | app-store.json |
Binance | Binance | simple-storage.json |
Binance | Binance | .finger-print.fp |
Coinomi | CoinomiCoinomiwallets | .wallet |
Coinomi | CoinomiCoinomiwallets | *.config |
Annex 2 – A Stealc’s infection chain
Sekoia.io observed an infection chain distributing Stealc, that consists in the following steps:
- YouTube videos on stolen accounts describing how to install a cracked software for free and providing a link (hxxps://rcc-software[.]com/services);
- From the link provided in the YouTube video, the victim can access a “cracked software catalogue” website;
- The payload embeds Stealc infostealer. The user downloads it, decompresses the archive using the password 55555 and executes the file “setup.exe” (hxxps://streetlifegaming[.]com/wp-content/uploads/2023/02/Pass_55555_Setup.rar);
- Stealc communicates to its C2 on 37.220.87[.]65 (https://tria.ge/230212-pkc69adh37).
IoCs & Technical Details
IoCs
The list of IoCs is available on Sekoia.io github repository.
Stealc C2 servers
185.143.223[.]136 94.131.99[.]185 65.109.131[.]183 45.87.153[.]50 179.43.162[.]94 194.87.31[.]146 94.142.138[.]11 23.88.116[.]117 95.217.143[.]99 185.242.87[.]149 194.4.51[.]160 5.75.138[.]201 185.130.46[.]214 167.235.62[.]105 |
185.247.184[.]7 179.43.162[.]89 91.228.225[.]46 179.43.162[.]2 77.246.156[.]93 84.246.85[.]80 185.5.248[.]95 146.70.161[.]51 85.239.54[.]29 91.215.85[.]188 77.91.124[.]7 37.120.238[.]190 37.220.87[.]65 45.136.49[.]247 |
45.136.50[.]69 45.136.51[.]61 45.144.29[.]176 65.109.3[.]34 94.142.138[.]48 95.216.112[.]83 195.74.86[.]37 162.0.238[.]10 666palm[.]com 777palm[.]com aa-cj[.]com fff-ttt[.]com moneylandry[.]com |
Stealc C2 URLs
hxxp://146.70.161[.]51/273d9c8034a95cb4.phphxxp://162.0.238[.]10/752e382b4dcf5e3f.php hxxp://176.124.192[.]200/bef7fb05c9ef6540.php hxxp://179.43.162[.]2/d8ab11e9f7bc9c13.php hxxp://185.5.248[.]95/api.php hxxp://666palm[.]com/bca98681abf8e1ab.php hxxp://777palm[.]com/bef7fb05c9ef6540.php hxxp://94.142.138[.]48/f9f76ae4bb7811d9.php hxxp://95.216.112[.]83/413a030d85acf448.php hxxp://aa-cj[.]com/6842f013779f3d08.php hxxp://fff-ttt[.]com/984dd96064cb23d7.php hxxp://moneylandry[.]com/bef7fb05c9ef6540.php hxxp://94.142.138[.]48/f9f76ae4bb7811d9.php hxxp://185.247.184[.]7/8c3498a763cc5e26.php hxxps://185.247.184[.]7/8c3498a763cc5e26.php hxxp://23.88.116[.]117/api.php hxxp://95.216.112[.]83/413a030d85acf448.php hxxp://179.43.162[.]2/d8ab11e9f7bc9c13.php hxxp://185.5.248[.]95/c1377b94d43eacea.php hxxp://146.70.161[.]51/58d66e64beb49702/freebl3.dll hxxp://146.70.161[.]51/58d66e64beb49702/mozglue.dll hxxp://146.70.161[.]51/58d66e64beb49702/msvcp140.dll hxxp://146.70.161[.]51/58d66e64beb49702/nss3.dll hxxp://146.70.161[.]51/58d66e64beb49702/softokn3.dll hxxp://146.70.161[.]51/58d66e64beb49702/sqlite3.dll hxxp://146.70.161[.]51/58d66e64beb49702/vcruntime140.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/freebl3.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/mozglue.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/msvcp140.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/nss3.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/softokn3.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/sqlite3.dll hxxp://162.0.238[.]10/dbe4ef521ee4cc21/vcruntime140.dll hxxp://179.43.162[.]2/3461133978273cb9/freebl3.dll hxxp://179.43.162[.]2/3461133978273cb9/mozglue.dll hxxp://179.43.162[.]2/3461133978273cb9/msvcp140.dll hxxp://179.43.162[.]2/3461133978273cb9/nss3.dll hxxp://179.43.162[.]2/3461133978273cb9/softokn3.dll hxxp://179.43.162[.]2/3461133978273cb9/sqlite3.dll hxxp://179.43.162[.]2/3461133978273cb9/vcruntime140.dll hxxp://185.5.248[.]95/libs/freebl3.dll hxxp://185.5.248[.]95/libs/mozglue.dll hxxp://185.5.248[.]95/libs/msvcp140.dll hxxp://185.5.248[.]95/libs/nss3.dll hxxp://185.5.248[.]95/libs/softokn3.dll hxxp://185.5.248[.]95/libs/sqlite3.dll hxxp://185.5.248[.]95/libs/vcruntime140.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/freebl3.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/mozglue.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/msvcp140.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/nss3.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/softokn3.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/sqlite3.dll hxxp://666palm[.]com/54fbf4b9ffe8c98d/vcruntime140.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/freebl3.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/mozglue.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/msvcp140.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/nss3.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/softokn3.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/sqlite3.dll hxxp://777palm[.]com/2ccaf544c0cf7de7/vcruntime140.dll hxxp://94.142.138[.]48/54982f23330528c2/freebl3.dll hxxp://94.142.138[.]48/54982f23330528c2/mozglue.dll hxxp://94.142.138[.]48/54982f23330528c2/msvcp140.dll hxxp://94.142.138[.]48/54982f23330528c2/nss3.dll hxxp://94.142.138[.]48/54982f23330528c2/softokn3.dll hxxp://94.142.138[.]48/54982f23330528c2/sqlite3.dll hxxp://94.142.138[.]48/54982f23330528c2/vcruntime140.dll hxxp://95.216.112[.]83/5840871afdb84f06/sqlite3.dll hxxp://aa-cj[.]com/1b8df000d02ce631/freebl3.dll hxxp://aa-cj[.]com/1b8df000d02ce631/mozglue.dll hxxp://aa-cj[.]com/1b8df000d02ce631/msvcp140.dll hxxp://aa-cj[.]com/1b8df000d02ce631/nss3.dll hxxp://aa-cj[.]com/1b8df000d02ce631/softokn3.dll hxxp://aa-cj[.]com/1b8df000d02ce631/sqlite3.dll hxxp://aa-cj[.]com/1b8df000d02ce631/vcruntime140.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/freebl3.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/mozglue.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/msvcp140.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/nss3.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/softokn3.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/sqlite3.dll hxxp://fff-ttt[.]com/a02fc2187db8cd88/vcruntime140.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/freebl3.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/mozglue.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/msvcp140.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/nss3.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/softokn3.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/sqlite3.dll hxxp://moneylandry[.]com/2ccaf544c0cf7de7/vcruntime140.dll hxxp://94.142.138[.]48/54982f23330528c2/msvcp140.dll hxxp://5.75.138[.]201/9026ac2a280e901d/softokn3.dll hxxp://23.88.116[.]117/libs/sqlite3.dll hxxp://185.247.184[.]7/b00dc1fe53045ca1/sqlite3.dll hxxp://146.70.161[.]51/58d66e64beb49702/freebl3.dll hxxp://95.216.112[.]83/5840871afdb84f06/mozglue.dll hxxp://179.43.162[.]2/3461133978273cb9/sqlite3.dll hxxp://179.43.162[.]2/3461133978273cb9/msvcp140.dll hxxp://185.5.248[.]95/libs/mozglue.dll |
Stealc SHA256 (standalone samples)
1e09d04c793205661d88d6993cb3e0ef5e5a37a8660f504c1d36b0d8562e63a2 77d6f1914af6caf909fa2a246fcec05f500f79dd56e5d0d466d55924695c702d 87f18bd70353e44aa74d3c2fda27a2ae5dd6e7d238c3d875f6240283bc909ba6 |
More IoCs are available in the Sekoia.io Intelligence Center.
YARA rules
YARA rules are available on Sekoia.io github repository.
Static detection
rule infostealer_win_stealc {
meta:
malware = "Stealc"
description = "Find standalone Stealc sample based on decryption routine or characteristic strings"
source = "SEKOIA.IO"
reference = "https://blog.sekoia.io/stealc-a-copycat-of-vidar-and-raccoon-infostealers-gaining-in-popularity-part-1/"
classification = "TLP:CLEAR"
hash = "77d6f1914af6caf909fa2a246fcec05f500f79dd56e5d0d466d55924695c702d"
strings:
$dec = { 55 8b ec 8b 4d ?? 83 ec 0c 56 57 e8 ?? ?? ?? ?? 6a 03 33 d2 8b f8 59 f7 f1 8b c7 85 d2 74 04 } //deobfuscation function
$str01 = "------" ascii
$str02 = "Network Info:" ascii
$str03 = "- IP: IP?" ascii
$str04 = "- Country: ISO?" ascii
$str05 = "- Display Resolution:" ascii
$str06 = "User Agents:" ascii
$str07 = "%s%s%s" ascii
condition:
uint16(0) == 0x5A4D and ($dec or 5 of ($str*))
}
Dynamic detection using VirusTotal Livehunt
import "vt"
rule infostealer_win_stealc_behaviour {
meta:
malware = "Stealc"
description = "Find Stealc sample based characteristic behaviors"
source = "SEKOIA.IO"
reference = "https://blog.sekoia.io/stealc-a-copycat-of-vidar-and-raccoon-infostealers-gaining-in-popularity-part-1/"
classification = "TLP:CLEAR"
hash = "3feecb6e1f0296b7a9cb99e9cde0469c98bd96faed0beda76998893fbdeb9411"
condition:
for any cmd in vt.behaviour.command_executions : (
cmd contains "*.dll"
) and
for any cmd in vt.behaviour.command_executions : (
cmd contains "/c timeout /t 5 & del /f /q"
) and
for any c in vt.behaviour.http_conversations : (
c.url contains ".php"
)
}
Suricata rules
Suricata signatures are available on Sekoia.io github repository.
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"SEKOIA.IO Malware Stealc POST request: hwid, build";
flow:established,to_server; http.method; content:"POST"; http.uri; content:".php"; depth:21; http.content_type;
content:"multipart/form-data|3B| boundary=----"; http.request_body; content:"Content-Disposition: form-data|3B| name=|22|hwid|22|";
offset: 26 ; depth: 45; content:"Content-Disposition: form-data|3B| name=|22|build|22|"; reference:url,
blog.sekoia.io/stealc-a-copycat-of-vidar-and-raccoon-infostealers-gaining-in-popularity-part-1/;
classtype:trojan-activity; sid:001; rev:1; metadata:created_at 2023_02_17, updated_at 2023_02_17;)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"SEKOIA.IO Malware Stealc POST request: token, message";
flow:established,to_server; http.method; content:"POST"; http.uri; content:".php"; depth:21; http.content_type;
content:"multipart/form-data|3B| boundary=----"; http.request_body; content:"Content-Disposition: form-data|3B|
name=|22|token|22|"; offset: 26 ; depth: 46; content:"Content-Disposition: form-data|3B| name=|22|message|22|";
threshold: type limit, track by_src, seconds 180, count 1; reference:url,
blog.sekoia.io/stealc-a-copycat-of-vidar-and-raccoon-infostealers-gaining-in-popularity-part-1/;
classtype:trojan-activity; sid:002; rev:1; metadata:created_at 2023_02_17, updated_at 2023_02_17;)
MITRE ATT&CK TTPs
Tactic | Technique |
Execution | T1059.003 – Command and Scripting Interpreter: Windows Command Shell |
Execution | T1106 – Native API |
Execution | T1129 – Shared Modules |
Defence Evasion | T1027 – Obfuscated Files or Information |
Defence Evasion | T1027.007 – Obfuscated Files or Information: Dynamic API Resolution |
Defense Evasion | T1036 – Masquerading |
Defense Evasion | T1055 – Process Injection |
Defense Evasion | T1070 – Indicator Removal: File Deletion |
Defense Evasion | T1140 – Deobfuscate/Decode Files or Information |
Defense Evasion | T1622 – Debugger Evasion |
Credential Access | T1539 – Steal Web Session Cookie |
Credential Access | T1552.001 – Unsecured Credentials: Credentials In Files |
Credential Access | T1555.003 – Credentials from Password Stores: Credentials from Web Browsers |
Discovery | T1012 – Query Registry |
Discovery | T1016 – System Network Configuration Discovery |
Discovery | T1057 – Process Discovery |
Discovery | T1082 – System Information Discovery |
Discovery | T1083 – File and Directory Discovery |
Discovery | T1518 – Software Discovery |
Discovery | T1614 – System Location Discovery |
Collection | T1005 – Data from Local System |
Collection | T1113 – Screen Capture |
Collection | T1119 – Automated Collection |
Collection | T1132.001 – Data Encoding: Standard Encoding |
Command and Control | T1071.001 – Application Layer Protocol: Web Protocols |
Command and Control | T1105 – Ingress Tool Transfer |
Exfiltration | T1020 – Automated Exfiltration |
Exfiltration | T1041 – Exfiltration Over C2 Channel |
Discover a demo of our XDR platform
Thank you for reading this blogpost. You can also consult other results of surveys carried out by our analysts on the ecosystem of infostealers :