A few weeks ago, I added one of the many scammers trying to phish people on Steam. Usually, I block them after they drop their phishing website link but this particular website was pretty innovative (at least for me) in its attempt.
The chat seemed straightforward, the scammer wanted to give me an obviously profitable trade (they did keep trying to get me to add them on Discord for some reason). Near the end of the “trade” discussion, they asked me to log in to a convenient Steam backpack pricing website so they could get an idea of how much my stuff was worth.
The website was hosted nicely on CloudFlare and the domain name registered with Namecheap. They even opted for the CloudFlare certificate! No room for corner cutters in this phish market.
Now, on to the trick. The site had a little JS chunk which would open up a pop up saying that the server is under high load and asking you to login with Steam to access the site.
Logging in with Steam launches a pop up opening the Steam website so you can authenticate via OpenID.
I was expecting this to be a scam so I was adequately confused looking at the absolutely normal looking pop-up. I tried Chrome DevTools to check out what was happening to make it look so good. Surprisingly, I ran into an anti-debugging script. Definitely not what I expected from a run of the mill phishing website but combined with the curious pop-up, this was looking well built.
I managed to extract and partially deobfuscate some JS which was trapping the debugger but it didn’t seem like the whole thing. I moved on with some good old fashioned viewing page source action… which was a heap more of obfuscated JS.
Almost giving up hope, I accidentally hovered over the Chrome icon in my task bar and just happened to realize that the “pop-up” did not result in two instance of Chrome in the task bar. The whole thing was just a drawn up window inside the phishing website! They had even made some clickable buttons for the Chrome UI elements. This was confirmed by trying to right click on the title bar area of the pop-up, which opened up the right click context menu of a web page instead. Still a mystery to me as to why some page like this would want to add anti-debugging measures though.
If anyone is able to deobfuscate and make sense of the JS snippets, I would love to know what they were doing. As far as I could tell, the debugger trap was basically calling the debugger function if it detects a running debugger. The other larger JS block I’m completely clueless about. However, there were a few more fun things in the mix!
Although, the folks had disabled the scam warning you may have noticed in the original skins.cash screenshot from popping up on the phishing website, they didn’t bother to change it to not say skins.cash.
Most of the HTML source was directly lifted from skins.cash, but they did change the logo on the top left… by switching to an imgur link!
Not to mention all these other assets generously hosted by Steve (Hi Steve!).
The above domain also just happens to contain a whole host of similar images, probably enough material for another blog post some day.
Update: Turns out this is a pretty well done picture in picture attack. Thanks internet strangers!