Handler on Duty: Didier Stevens
Threat Level: green
Podcast Detail
SANS Stormcast Monday, June 16th, 2025: Katz Stealer in JPG; JavaScript Attacks; Reviving expired Discord Invites for Evil
If you are not able to play the podcast using the player below: Use this direct link to the audio file: https://traffic.libsyn.com/securitypodcast/9494.mp3
My Next Class
Application Security: Securing Web Apps, APIs, and Microservices | Washington | Jul 14th - Jul 19th 2025 |
Application Security: Securing Web Apps, APIs, and Microservices | Las Vegas | Sep 22nd - Sep 27th 2025 |
Katz Stealer in JPG
Xavier found some multistage malware that uses an Excel Spreadsheet and an HTA file to load an image that includes embeded a copy of Katz stealer.
https://isc.sans.edu/diary/More+Steganography/32044
https://unit42.paloaltonetworks.com/malicious-javascript-using-jsfiretruck-as-obfuscation/
JavaScript obfuscated with JSF*CK is being used on over 200,000 websites to direct victims to malware
Expired Discord Invite Links Used for Malware Distribution
Expired discord invite links are revived as vanity links to direct victims to malware sites
https://research.checkpoint.com/2025/from-trust-to-threat-hijacked-discord-invites-used-for-multi-stage-malware-delivery/
Application Security: Securing Web Apps, APIs, and Microservices | Washington | Jul 14th - Jul 19th 2025 |
Application Security: Securing Web Apps, APIs, and Microservices | Las Vegas | Sep 22nd - Sep 27th 2025 |
Application Security: Securing Web Apps, APIs, and Microservices | Denver | Oct 4th - Oct 9th 2025 |
Application Security: Securing Web Apps, APIs, and Microservices | Dallas | Dec 1st - Dec 6th 2025 |
Podcast Transcript
Hello and welcome to the Monday, June 16th, 2025 edition of the SANS Internet Storm Center's Stormcast. My name is Johannes Ullrich and this episode brought to you by the SANS.edu graduate certificate program in cloud security is recorded in Jacksonville, Florida. In diaries this weekend, we had a diary by Xavier looking at yet another malware sample that uses images to hide executables. This one starts out as well your usual Microsoft Excel macro. So nothing really all that excited here and Oledump does a good job in actually then extracting the relevant data from this particular Excel spreadsheet. Now where it gets more interesting then is the second stage here. There is an HTML application that's being loaded that, well, again, sort of you use at least a filename kind of to obfuscate what it's doing. And it is loading a bad file and this bad file then does download an image. Now quite a bit of interesting sort of simple obfuscation happening here. But Xavier will walk you through how to actually figure out what's happening until you end up with this particular image. This is a JPEG image. Now we had in the last couple examples PNG images. In PNG images we have that end indicator and then we can just add any data after this indicator. In this particular case it works a little bit different. There is this in-co and then fem indicator here. These tags basically enclose the executable so you don't actually necessarily have to add it to the end. It's a base64 encoded piece of data here. And as Xavier points out this tvqqadad part that really then basically does decode to your standard PE file header. And well that's then just the actual payload DLL that is being loaded and executed. So interesting walk through here how to very quickly analyze a piece of malware like this. Even though it went through a couple different stages and yes some obfuscation here. Well and Palo Alto has a real nice write up about a campaign that they are calling JS Fire Truck. This particular campaign apparently has affected tens of thousands of vulnerable websites injecting JavaScript. That uses a not uncommon but fairly easy to spot actually obfuscation technique. I have to admit it's a little bit sort of my favorite JavaScript obfuscation technique. Because well how messed up in some ways the code looks like after it's being obfuscated here. Essentially what you end up with is JavaScript code that really just considers consists of well braces brackets and plus signs and explanation marks. So fairly tricky obfuscation scheme here. Which in my opinion also makes it actually a little bit easier to spot than some of the other schemes. But nevertheless something that is not trivial to necessarily then decode. And Palo Alto does in its blog a great job walking you through this code. Typically once decoded the code will then redirect you to some kind of malware site. That sort of tends to be the main objective of this type of JavaScript. From a web application security perspective of course. No website is kind of too unimportant to be compromised. Quite often you see stuff like this on more or less brochure sites. WordPress websites that don't consider themselves really all that important. But what they still have is users that trust the website. And essentially the attacker here is stealing that trust to redirect the victim to some kind of malware. And Checkpoint did publish a blog post showing how this concept of stealing trust is actually also being applied to Discord. In Discord you often find invite links that will basically allow you to easily join a particular Discord server. These invite links by default are random and they are typically again by default time limited. So a particular link is only good for a certain amount of time. After which time when you click on the link well you basically just get an error message. Well the tricky part is that in addition to these sort of randomly generated default links. There are also vanity links. A vanity link basically is a string that the user determines. And typically of course the idea is that you would have some kind of branded invite link. That's easier to remember. Easier to communicate. But what attackers apparently are doing is that they are registering vanity links that actually match already released and expired temporary links that were created for other Discord servers. The problem they are exploiting here is that often well these links are sticking around. They are being exchanged and the users may click on them long after they already have expired. But now they actually will be pointing to these vanity links which will then direct the user to a malicious website. It's a really interesting and tricky approach. I'm not a big Discord user myself. But I know for our Slack that we are using here for the Shield. I obviously have to make sure that the link that we have on our homepage is still up to date. And actually probably after recording this podcast I'll have to double check again. Well and this is it for today. So thanks again for listening. Thanks for recommending the podcast. Thanks for subscribing to this podcast and talk to you again tomorrow. But remember there will be no podcast on Wednesday and Thursday this week.