Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (2024)

Open-Source Stealer Widely Abused by Threat Actors

The threat of InfoStealers is widespread and has been frequently employed by various Threat Actors (TA)s to launch attacks and make financial gains. Until now, the primary use of stealers by TAs has been to sell logs or to gain initial entry into a corporate network.

Recently, however, TAs have started exploiting this type of malware to disseminate crypto scams through YouTube channels. TAs successfully hacked a YouTube channel that had over 10 million subscribers and removed the original content of the channel, replacing it with two videos promoting cryptocurrency scams. According to reports, the TAs gained access to the YouTube account by stealing session cookies. It is believed that stealer malware might have been involved in the attack.

Recently Cyble Research and Intelligence Labs (CRIL) discovered a phishing site mimicking a Cryptocurrency mining platform that was spreading Creal Stealer.

The figure below shows the phishing site.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (1)

This site was hosting the stealer payload on Dropbox at hxxps[:]//www[.]dropbox[.]com/s/dl/x4vgcaac6hcdgla/kryptex-setup-4.25.7[.]zip.

The stealer binary (SHA 256: f3197e998822bc45cb9f42c8b153c59573aad409da01ac139b7edd8877600511) is compiled using PyInstaller indicating that the stealer is coded in Python.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (2)

After extracting the contents of the PyInstaller compiled file, we spotted a PYC file dubbed ‘Creal’.

The figure below shows the extracted files.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (3)

Further investigation revealed that this stealer’s source code and builder were also available on a GitHub repository.

The figure below shows the Creal Stealer GitHub repository.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (4)

We have also observed nearly 50 samples in the wild, indicating that the TAs were actively utilizing the Open-Source code to infect unsuspecting users.

Technical Analysis

Environment Checks

During the initial execution, the stealer identifies whether it is being run in a controlled environment. It checks if the victim’s username (obtained via the getpass.getuser() function) is present in a list called ‘blacklistUsers’.

The table below contains the blacklisted usernames. If a username is found in this list, then the stealer will immediately terminate its execution using the os._exit(0) function.

The table below contains the blacklisted usernames.

WDAGUtilityAccountLisa3u2v9m8Lucas
AbbyJohnJuliamike
hmarcgeorgeHEUeRzlPateX
patexPxmdUOpVyxfredh7dk1xPr
RDhJ0CNFevzX8VizSMserverLouise
kEecfMwgjw0fjuOVmCcP5ABvJChRPnsxnUser01
FranklmVwjj9bHarry Johnsontest
8Nl0ColNQ5bqPqONjHVwexsSSqgFOf3GRGzcBUyrznReg

After this, the stealer defines a list named “blacklistUsername” and then gets the hostname of the victim’s machine using the socket.gethostname() method. The script proceeds to verify if the obtained hostname matches any of the names in the “blacklistUsername” list.

If a match is discovered, the script promptly terminates itself by executing the os._exit(0) function.

The table below shows the hardcoded blacklisted hostnames present in the stealer binary.

BEE7370C-8C0C-4LISA-PCDESKTOP-7XC6GEZSERVER-PCACEPC
DESKTOP-NAKFFMTJOHN-PCDESKTOP-5OV9S0OTIQIYLA9TW5MMIKE-PC
WIN-5E07COS9ALRDESKTOP-B0T93D6QarZhrdBpjDESKTOP-KALVINODESKTOP-IAPKN1P
B30F0242-1C6A-4DESKTOP-1PYKP29ORELEEPCCOMPNAME_4047DESKTOP-NTU7VUO
DESKTOP-VRSQLAGDESKTOP-1Y2433RARCHIBALDPCDESKTOP-19OLLTDLOUISE-PC
Q9IATRKPRHWILEYPCJULIA-PCDESKTOP-DE369SET00917
XC64ZBWORKd1bnJkfVlHEA8C2E2A-D017-4test42]
DESKTOP-D019GDM6C4E733F-C2D9-4NETTYPCAIDANPC
DESKTOP-WI8CLETRALPHS-PCDESKTOP-BUGIOLUCAS-PC
SERVER1DESKTOP-WG3MYJSDESKTOP-CBGPFEEMARCI-PC

Now the stealer checks if the MAC address of the victim’s machine is present in the blacklist of MAC addresses defined in a list named BLACKLIST1. It initially retrieves the machine’s MAC address using the getnode() function from the uuid module and then checks whether the victim’s MAC address is present in BLACKLIST1.

If it is present, the os._exit(0) function is called, which immediately exits the stealer.

The table below contains the MAC addresses present in BLACKLIST1.

00:15:5d:00:07:3400:25:90:36:f0:3b00:50:56:a0:cd:a87e:05:a3:62:9c:4d
00:e0:4c:b8:7a:5800:1b:21:13:21:2600:50:56:b3:fa:2352:54:00:b3:e4:71
00:0c:29:2c:c1:2100:50:56:b3:50:de52:54:00:a0:41:9290:48:9a:9d:d5:24
00:25:90:65:39:e400:1b:21:13:32:5100:50:56:b3:f6:5700:50:56:b3:3b:a6
c8:9f:1d:b6:58:e4a6:24:aa:ae:e6:1200:e0:4c:56:42:9792:4c:a8:23:fc:2e
00:25:90:36:65:0c08:00:27:45:13:10ca:4d:4b:ca:18:cc5a:e2:a6:a4:44:db
00:15:5d:00:00:f300:1b:21:13:26:44f6:a5:41:31:b2:7800:50:56:ae:6f:54
2e:b8:24:4d:f7:de3c:ec:ef:43:fe:ded6:03:e4:ab:77:8e42:01:0a:96:00:33
00:15:5d:13:6d:0cd4:81:d7:ed:25:5400:50:56:ae:b2:b000:50:56:97:a1:f8
00:50:56:a0:dd:0000:25:90:36:65:3800:50:56:b3:94:cb5e:86:e4:3d:0d:f6
00:15:5d:13:66:ca00:03:47:63:8b:de42:01:0a:8e:00:2200:50:56:b3:ea:ee
56:e8:92:2e:76:0d00:15:5d:00:05:8d00:50:56:b3:4c:bf3e:53:81:b7:01:13
ac:1f:6b:d0:48:fe00:0c:29:52:52:5000:50:56:b3:09:9e00:50:56:97:ec:f2
00:e0:4c:94:1f:2000:50:56:b3:42:3300:50:56:b3:38:8800:e0:4c:b3:5a:2a
00:15:5d:00:05:d53c:ec:ef:44:01:0c00:50:56:a0:d0:fa12:f8:87:ab:13:ec
00:e0:4c:4b:4a:4006:75:91:59:3e:0200:50:56:b3:91:c800:50:56:a0:38:06
42:01:0a:8a:00:2242:01:0a:8a:00:333e:c1:fd:f1:bf:712e:62:e8:47:14:49
00:1b:21:13:15:20ea:f6:f1:a2:33:7600:50:56:a0:6d:8600:0d:3a:d2:4f:1f
00:15:5d:00:06:43ac:1f:6b:d0:4d:9800:50:56:a0:af:7560:02:92:66:10:79
00:15:5d:1e:01:c81e:6c:34:93:68:6400:50:56:b3:dd:0300:50:56:a0:d7:38
00:50:56:b3:38:6800:50:56:a0:61:aac2:ee:af:fd:29:21be:00:e5:c5:0c:e5
60:02:92:3d:f1:6942:01:0a:96:00:2200:50:56:b3:ee:e100:50:56:a0:59:10
00:e0:4c:7b:7b:8600:50:56:b3:21:2900:50:56:a0:84:8800:50:56:a0:06:8d
00:e0:4c:46:cf:0100:15:5d:00:00:b300:1b:21:13:32:2000:e0:4c:cb:62:08
42:85:07:f4:83:d096:2b:e9:43:96:763c:ec:ef:44:00:d04e:81:81:8e:22:4e
56:b0:6f:ca:0a:e7b4:a9:5a:b1:c6:fd00:50:56:ae:e5:d508:00:27:3a:28:73
12:1b:9e:3c:a6:2cd4:81:d7:87:05:ab00:50:56:97:f6:c800:15:5d:00:00:c3
00:15:5d:00:1c:9aac:1f:6b:d0:49:8652:54:00:ab:de:5900:50:56:a0:45:03
00:15:5d:00:1a:b952:54:00:8b:a6:0800:50:56:b3:9e:9e12:8a:5c:2a:65:d1
b6:ed:9d:27:f4:fa00:0c:29:05:d8:6e00:50:56:a0:39:1816:ef:22:04:af:76
00:15:5d:00:01:8100:23:cd:ff:94:f032:11:4d:d0:4a:9e00:15:5d:23:4c:ad
4e:79:c0:d9:af:c300:e0:4c:d6:86:7700:50:56:b3:d0:a71a:6c:62:60:3b:f4
00:15:5d:b6:e0:cc3c:ec:ef:44:01:aa94:de:80:de:1a:3500:15:5d:00:00:1d
00:15:5d:00:02:2600:15:5d:23:4c:a300:50:56:ae:5d:ea00:e0:4c:44:76:54
00:50:56:b3:05:b400:1b:21:13:33:5500:50:56:b3:14:59ac:1f:6b:d0:4d:e4
1c:99:57:1c:ad:e400:15:5d:00:00:a4ea:02:75:3c:90:9f52:54:00:3b:78:24

Afterward, the stealer checks if the victim’s public IP address is present in a blacklist called “sblacklist”. It first uses the subprocess module to run a curl command to retrieve the device’s public IP address. It then checks if this IP address is present in the blacklist. The stealer exits the program if the IP is found in the blacklist.

The table below contains the IP addresses in “sblacklist”.

88.132.231.71188.105.91.116109.74.154.9295.25.81.24
207.102.138.8334.105.183.68213.33.142.5092.211.52.62
174.7.32.19992.211.55.199109.74.154.9188.132.227.238
204.101.161.3279.104.209.3393.216.75.20935.199.6.13
207.102.138.9395.25.204.90192.87.28.10380.211.0.97
78.139.8.5034.145.89.17488.132.226.20334.85.253.170
20.99.160.173109.74.154.90195.181.175.10523.128.248.46
88.153.199.169109.145.173.16988.132.225.10035.229.69.227
84.147.62.1234.141.146.11492.211.192.14434.138.96.23
194.154.78.160212.119.227.15134.83.46.130192.211.110.74
92.211.109.160195.239.51.59188.105.91.14335.237.47.12
195.74.76.222192.40.57.23434.85.243.24187.166.50.213
34.105.0.2764.124.12.16234.141.245.2534.253.248.228
195.239.51.334.142.74.220178.239.165.70212.119.227.167
35.192.93.107188.105.91.17384.147.54.113193.225.193.201
34.145.195.5834.105.72.241193.128.114.45

Now, the stealer checks if certain Python modules are installed, and if they are not, it attempts to install them using pip. The modules to be checked and installed are defined in a nested list named “requirements”.

This list contains two strings: the name of the module to be checked and the name of the package that provides the module. Then it loops through each item in the requirements list and tries to import the module using the __import__ function.

If the import fails (which means the module is not installed), the code launches a subprocess to install the package using pip by running the command executable -m pip install <package_name>.

After launching the subprocess to install the package, the code sleeps for 3 seconds before moving on to the next item in the requirements list. The purpose of this sleep period is to give the pip enough time to complete the installation before moving on to the next package.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (5)

Persistence

The stealer achieves persistence by copying itself to

AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\ directory using the shutil.copyfileobj() function.

The figure below shows the persistence technique used in this stealer.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (6)

Data Collection

The stealer defines and assigns values to global variables such as keyword, cookiWords, paswWords, CookiCount, P4sswCount, WalletsZip, GamingZip, and OtherZip.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (7)

The keyword variable contains certain names and their respective domain names that the stealer targets. Now, the stealer retrieves login credentials and cookies from the browsers based on the list of names mentioned in the table below.

NameDomainNameDomain
coinbasehxxps://coinbase.comminecrafthxxps://minecraft.net
sellixhxxps://sellix.iopaypalhxxps://paypal.com
gmailhxxps://gmail.comoriginhxxps://origin.com
steamhxxps://steam.comamazonhxxps://amazon.com
Discordhxxps://Discord.comebayhxxps://ebay.com
riotgameshxxps://riotgames.comaliexpresshxxps://aliexpress.com
youtubehxxps://youtube.complaystationhxxps://playstation.com
instagramhxxps://instagram.comhbohxxps://hbo.com
tiktokhxxps://tiktok.comxboxhxxps://xbox.com
twitterhxxps://twitter.combinancehxxps://binance.com
facebookhxxps://facebook.comhotmailhxxps://hotmail.com
epicgameshxxps://epicgames.comoutlookhxxps://outlook.com
spotifyhxxps://spotify.comcrunchyrollhxxps://crunchyroll.com
yahoohxxps://yahoo.comtelegramhxxps://telegram.com
robloxhxxps://roblox.comp*rnhubhxxps://p*rnhub.com
twitchhxxps://twitch.comdisneyhxxps://disney.com
uberhxxps://uber.comexpressvpnhxxps://expressvpn.com
netflixhxxps://netflix.com

Now, the stealer creates multiple threads using the threading module in Python and initiates the data-stealing functionality in parallel.

As shown in the figure below, the malware iterates through a list of application paths, starts a thread for each path it encounters, and executes a specific function responsible for stealing data from the victim’s machine.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (8)

This stealer targets Chromium-based browsers, chat and gaming applications, cold crypto wallets, and browser extensions.

The figure below shows the applications targeted by Creal Stealer.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (9)

Creal stealer makes a GET request to hxxps[:]//api.ipify.org/ to identify the victim’s IP. Now it appends the IP address to hxxps[:]//geolocation-db.com/jsonp/ and makes a GET request to fetch the victim’s geolocation details.

As shown in the figure below, these geolocation details are added to the variables and will be later sent to the TA’s Discord channel.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (10)

To store the stolen data, including cookies and passwords, this stealer employs a commonly used function called wr1tef0rf1l3 that writes the information into files for exfiltration. The wr1tef0rf1l3 function requires two arguments, “data” and “name”.

The “data” argument holds the stolen data that is to be saved, while the “name” argument specifies the desired filename. These files are saved in the %temp% directory, and the file names are prefixed with the string “cr”, as shown below.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (11)

Data Exfiltration

Creal Stealer is capable of exfiltrating data using Discord Webhooks and multiple file-hosting & sharing platforms such as Anonfiles and Gofile. Prior to exfiltration, this stealer removes the file extensions of .txt files containing the stolen data and compresses these files using the zip file module.

The figure below shows Creal stealer’s file upload code.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (12)

Finally, Creal Stealer makes a POST request using the urlopen() function to exfiltrate data using a Discord webhook. This stealer uses a dictionary object containing HTTP request headers, as shown in the figure below.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (13)

The figure below shows the data exfiltration using Discord webhooks.

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (14)

Conclusion

Creal Stealer’s builder and source code are available on GitHub, which enables TAs to modify the code to suit their requirements. This can result in the emergence of various stealers from Creal Stealer’s source code, posing a significant threat to users. The trend of using open-source code in malware is increasing among cybercriminals, since it allows them to create sophisticated and customized attacks with minimal expenses.

Our Recommendations:

  • Avoid downloading applications from unknown sources.
  • Use a reputed anti-virus and internet security software package on your connected devices, including PC, laptop, and mobile. 
  • Use strong passwords and enforce multi-factor authentication wherever possible.  
  • Update your passwords periodically.
  • Refrain from opening untrusted links and email attachments without first verifying their authenticity.  
  • Block URLs that could be used to spread the malware, e.g., Torrent/Warez. 
  • Monitor the beacon on the network level to block data exfiltration by malware or TAs. 
  • Enable Data Loss Prevention (DLP) Solutions on employees’ systems. 

MITRE ATT&CK® Techniques

TacticTechnique IDTechnique Name
ExecutionT1204User Execution 
PersistenceT1547.001Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder
Credential AccessT1555
T1539
T1528
Credentials from Password Stores 
Steal Web Session Cookie 
Steal Application Access Token 
DiscoveryT1087
T1518
T1057
T1124
T1007
T1614
Account Discovery 
Software Discovery 
Process Discovery 
System Time Discovery 
System Service Discovery 
System Location Discovery   
Command and ControlT1071
T1102
Application Layer Protocol 
Web Service
ExfiltrationT1041Exfiltration Over C&C Channel 

Indicators of Compromise (IoCs):

IndicatorsIndicator typeDescription
bb2ca78ffff72d58599d66bf9b2f0ae6
20dcb84660e5f79a98c190d3d455fce368d96f35
4ee417cbefa1673d088a32df48b8182bdad244541e8dc02faf540b9aa483fdcb
MD5
SHA1
SHA256
Creal Stealer
929e6f2c8896059c72368915abcaefa2
7122f0b88607061806fd62282e8b175ae28b7e29
f3197e998822bc45cb9f42c8b153c59573aad409da01ac139b7edd8877600511
MD5
SHA1
SHA256
Malicious Zip Archive
hxxps[:]//www.dropbox[.]com/s/dl/x4vgcaac6hcdgla/kryptex-setup-4.25.7[.]zipURLMalicious URL
kryptex[.]softwareURLMalicious URL

Related

Cyble - Creal: New Stealer Targeting Cryptocurrency Users Via Phishing Sites (2024)

References

Top Articles
Latest Posts
Article information

Author: Ray Christiansen

Last Updated:

Views: 5567

Rating: 4.9 / 5 (49 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Ray Christiansen

Birthday: 1998-05-04

Address: Apt. 814 34339 Sauer Islands, Hirtheville, GA 02446-8771

Phone: +337636892828

Job: Lead Hospitality Designer

Hobby: Urban exploration, Tai chi, Lockpicking, Fashion, Gunsmithing, Pottery, Geocaching

Introduction: My name is Ray Christiansen, I am a fair, good, cute, gentle, vast, glamorous, excited person who loves writing and wants to share my knowledge and understanding with you.