Windows | Lynx勒索软件加密算法分析

admin 2025年2月21日12:46:08评论38 views字数 3310阅读11分2秒阅读模式
1. Lynx勒索组织

    2024年3月,INC组织在暗网论坛上公开出售其勒索软件及网络基础设施的源代码,标价为30万美元,并限定潜在买家数量为3人。

    同年7月,新出现的Lynx勒索组织所使用的勒索软件及攻击基础设施与INC组织高度相似。Lynx组织随后声明,其工具是通过购买INC组织的源代码获得的。

    截至目前,尚未发现该组织公开的解密工具。

2. Lynx勒索软件分析

    Lynx勒索软件基本用法,可指定要加密的文件、目录、模式等。

Windows | Lynx勒索软件加密算法分析

2.1 前置知识

Curve25519 指的是一条曲线,称为蒙哥马利曲线

C:y^2=x^3 + 486662x^2 + x

并且定义在质数模域 p=2^255 − 19 上,故将曲线称之为 Curve25519。

  • Alice生成自己的私钥 a,并且计算公钥 A=a·G

  • Bob 生成自己的私钥 b,并且计算公钥 B=b·G

  • Alice 和 Bob 将自己的公钥通过不安全信道发送给对方

  • Alice 计算 K=a·B=a·(b·G)=ab·G

  • Bob 计算 K=b·A=b·(a·G)=ab·G

    Alice 和 Bob 可以得到一个相同的结果作为对称加密的密钥,但是攻击者仅得到的 A(公钥)和 B(公钥),难以计算出 a(私钥),b(私钥)的值,也很难计算得出 K(共享密钥)的结果。

2.2 Lynx加密过程概述

    该样本生成随机值作为的椭圆曲线ECC curve 25519加密算法的私钥b,再使用攻击者的公钥A,结合密钥协商交换算法(Differ Hillman)生成共享密钥shared key,最后用共享密钥shared key的SHA512计算结果作为AES的加密密钥,进行加密AES-128-CTR加密数据。

    加密文件中写入随机值生成的ECC curve 25519公钥B以及公钥B对应的SHA512值,确保攻击者使用自己私钥a,解出共享密钥shared key。

2.3 Lynx加密过程分析

   首先Base64解码得到ECC Curve25519公钥A,并将其传递给 generate_key。

    再使用ECC curve25519密钥协商交换算法(x25519)创建共享密钥shared key,再使用SHA512对shared key进行哈希处理。

    最后,取哈希值前32字节,其中前16字节用作 AES 密钥key,后16字节用作IV,传递给 aes_key_expansion 以生成轮密钥。

Windows | Lynx勒索软件加密算法分析
    密钥生成算法 genrate_key,首先生成随机的ECC公私钥对。
Windows | Lynx勒索软件加密算法分析
    分配堆空间用于保存生成的32字节的随机值,作为ECC私钥b。
Windows | Lynx勒索软件加密算法分析
    ECC curve25519算法的scalarmult函数,生成共享密钥shared_key。
Windows | Lynx勒索软件加密算法分析
Windows | Lynx勒索软件加密算法分析
    对比ECC curve25519共享密钥生成源码:
Windows | Lynx勒索软件加密算法分析
    将共享密钥shared key传入aes_key_expansion。
Windows | Lynx勒索软件加密算法分析
    ECC curve25519共享密钥shared key,shared key计算SHA512后,将前16位作为 AES key。
Windows | Lynx勒索软件加密算法分析
   最终生成轮子密钥,堆区结构:AES key 16字节 + 轮子密钥 +  IV 16字节。
Windows | Lynx勒索软件加密算法分析
    生成Banner与加密配置信息。
Windows | Lynx勒索软件加密算法分析
Windows | Lynx勒索软件加密算法分析
    根据传递的switch_value值选择不同的数据处理模式(fast、middle、slow、entire)进行加密。
Windows | Lynx勒索软件加密算法分析
    最终加密数据写入test.txt.lynx中。
Windows | Lynx勒索软件加密算法分析
2.4 Lynx解密过程分析
    测试加密的文件内容为:
Windows | Lynx勒索软件加密算法分析

    一次加密过程:

 攻击者ECC curve25519 公钥A,由 Base64 解码得到

42 A1 18 E2 F9 88 8D 2B 7A 25 B3 62 00 4B 49 9D 91 34 B8 3B 80 16 2B AD 02 8C E4 11 A2 55 75 5E

    CryptGenRandom API 随机生成的 ECC curve25519 私钥b

F2 68 E0 7C E0 75 AD FE 06 A4 4D D5 22 F6 1E E2 01 D4 1A D7 9C BA AB F5 63 FE 16 D8 A3 A8 93 D4

    随机生成的 ECC curve25519 私钥b与攻击者 ECC curve25519公钥A,协商生成 ECC curve25519共享密钥 shared_key

0D 08 59 D0 FA D4 13 F6 BA 35 78 15 55 8D 7E C3 10 44 D6 5C D0 9A 3B 9C 52 C5 EF E3 10 DD 9D 4E

    ECC curve25519 共享密钥 shared_key 计算 SHA512后的前32字节

EB 46 16 A7 F5 F4 72 C4 7C 03 42 70 DA EB E8 01 84 CB B5 E5 65 C9 09 8B 73 D7 B4 7C 35 34 A8 9E 

shared_key SHA512 结果作为 AES-128-CTR加密密钥key,加密文件内容

    前16字节为 AES key

EB 46 16 A7 F5 F4 72 C4 7C 03 42 70 DA EB E8 01

    后16字节为 AES IV

84 CB B5 E5 65 C9 09 8B 73 D7 B4 7C 35 34 A8 9E

    test.txt.lynx加密后的数据(135字节):
Windows | Lynx勒索软件加密算法分析

    AES-128-CTR 加密txt文件后的数据解析

test.txt中的数据(len(file)=19字节):

1C 44 C8 77 29 23 84 9C B1 E9 4C D9 DD 6A 65 79 90 B2 3A 

    加密数据后的固定116字节:

主机上生成的ECC公钥B32字节)

00 C4 09 9E 60 CC AC B6 CE E4 54 5A 95 7B A4 C7 06 AC 4D 5B 6D C3 C0 77 99 B7 61 BA 7F A7 18 5B 

ECC公钥SHA512计算结果64字节

50 F7 01 55 BE 53 CA 30 76 FA 90 AE 3F 67 23 65 EA AD 9B 50 4F 43 FA 70 2E 74 AE 0B 31 53 A7 49 1F 32 77 1E 09 E2 B3 DB FD F1 E1 C2 22 DA 2E 15 2F D6 A2 5F 09 42 DE 3F 7D EF 92 37 EB 7B D2 94 

banner LYNX4字节

4C 59 4E 58

未知标志与加密块配置16字节

00 00 00 00

40 42 0F 00

05 00 00 00

01 00 00 00

    一次解密过程:

    理论上,获取到主机上生成的ECC私钥b,可以通过ECC私钥b与攻击者公钥A计算,获得共享密钥shared key,最终得到AES key与IV,实现数据解密。

   实际上,随机值(私钥b)分配在堆上,生成共享密钥后就销毁堆区,必须在进程执行时,马上dump进程的堆区才有可能获取到,但很难做到dump时,刚好私钥b被分配,所以只存在理论上解密的可能性。

    下面是通过调试获取到ECC私钥b,复现整个解密过程。

Windows | Lynx勒索软件加密算法分析
3. IoC
  • eaa0e773eb593b0046452f420b6db8a47178c09e6db0fa68f6a2d42c3f48e3bc

  • 571f5de9dd0d509ed7e5242b9b7473c2b2cbb36ba64d38b32122a0a337d6cf8b

  • b378b7ef0f906358eec595777a50f9bb5cc7bb6635e0f031d65b818a26bdc4ee

  • ecbfea3e7869166dd418f15387bc33ce46f2c72168f571071916b5054d7f6e49

  • 85699c7180ad77f2ede0b15862bb7b51ad9df0478ed394866ac7fa9362bf5683

  • lynxblog.net

  • lynxchat.net

Reference

  • https://blog.sww.moe/post/x25519/

  • https://qr9.net/ed25519-key-pair-generator

  • https://www.picussecurity.com/resource/blog/lynx-ransomware

  • https://www.nextron-systems.com/2024/10/11/in-depth-analysis-of-lynx-ransomware/

  • https://www.cl.cam.ac.uk/teaching/2122/Crypto/curve25519.pdf

原文始发于微信公众号(TahirSec):Windows | Lynx勒索软件加密算法分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月21日12:46:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows | Lynx勒索软件加密算法分析https://cn-sec.com/archives/3765926.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息