尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为VCN510 IVS客户端admin密码重置与哈希算法深度排查

华为VCN510 IVS客户端admin密码重置与哈希算法深度排查 华为VCN510 IVS客户端管理员密码重置与哈希算法深度排查背景最近在处理一台华为 VCN510 视频云节点设备时遇到了 IVS 客户端登录密码遗忘的问题。设备默认用户名是admin默认密码是Change_Me但客户修改过密码后忘记了。本文的过程是通过AI协助分析整理人工汇总的一份排查处置记录仅供参考。VCN510 是华为的视频监控云节点设备运行的是基于 Linux 的定制系统主要组件包括SMUService Management Unit业务管理单元负责 IVS 客户端登录认证OMUOperation and Maintenance Unit运维管理单元提供 Web 管理门户SCUService Control Unit业务控制单元负责 license 管理PostgreSQL数据库端口6000包含smu和omu两个库设备没有 Console 口或者无法物理访问只能通过 SSH 操作。本文记录了完整的排查过程以及最终发现的密码哈希算法真相。初始尝试直接改 SHA-256 哈希失败网上搜索“VCN510 密码重置”网络上大部分文章给出的方法是直接修改数据库中的login_password字段将其设为Change_Me的 SHA-256 哈希值。网上流传的方法经过实际验证实际是错误的不在复述。深度排查过程第一步SSH 登录与服务确认首先通过 SSH 登录设备确认各服务状态# SSH 登录默认 admin/Change_Me然后 su - root 切换到 rootsshadmin192.168.248.9su- root# 检查 SMU 服务psaux|grepsmunetstat-tlnp|grep9900# SMU 默认端口 # 检查 OMU 服务psaux|grepomunetstat-tlnp|grep8443# OMU Web门户端口 # 检查数据库su- postgres-c/home/postgres/bin/psql -p 6000 -d smu -c select version()确认 SMU、SCU 服务均正常运行数据库可访问。第二步数据库表结构分析查看用户表的字段特别关注密码相关的字段-- 查看 SMU 用户表结构\d tbl_smu_user_info-- 关键字段-- login_name -- 用户名-- login_password -- 密码哈希-- salt -- 盐值-- status -- 状态1正常-- lock_time -- 锁定时间-- lock_count -- 锁定次数发现有一个salt字段说明密码可能不是简单的 SHA-256而是加盐哈希或更复杂的算法。第三步排查 SSO 与账户锁定一开始怀疑是 SSO单点登录启用导致本地认证失效或者账户被锁定-检查 SSO 配置select*fromTBL_SMU_SSO_CONFIG;-检查账户状态selectlogin_name,status,lock_time,lock_countfromtbl_smu_user_info;-检查账户锁定规则select*fromTBL_SMU_ACC_RULE_INFO;检查结果SSO 已禁用SMU_SSO_CFM_SWITCHERfalse账户状态正常未锁定锁定阈值默认 3 次已提高到 100 次方便测试。排除了 SSO 和账户锁定的问题。第四步分析密码验证函数通过查看 SMU 的动态库文件寻找密码验证相关的函数# 查找登录相关的动态库find/home/ivs_smu-name*.so|xargsgrep-llogin\|Login\|password\|Password 2/dev/null # 查看关键函数符号 nm -D /home/ivs_smu/lib/libsmu_service_login.so | grep -i hash\|hmac\|sha\|pbkdf\|password\|pwd发现了关键函数GetHMACSHA256Hex — HMAC-SHA256 哈希GetPBKDF2_HMAC_SHA256Hex — PBKDF2-HMAC-SHA256 密钥派生BasicLoginPwdCheck — 基础登录密码检查CheckPWDisNeedMDEP— 检查是否需要 MDEP 模式这说明密码验证使用的不是纯 SHA-256而是 HMAC-SHA256 或 PBKDF2第五步寻找密钥既然使用了 HMAC 或 PBKDF2就一定有密钥。在配置目录中搜索# 查找密钥配置文件find/home/ivs_smu/config-typef-name*.xml-o-name*.key-o-name*.cfg2/dev/null## 发现 key.xmlcat/home/ivs_smu/config/key.xml找到了SMU_PWDKey是一个 Base64 编码的密钥SMU_PWDKeyAAAAAQAAAAEAAAAAAAAABQAAAAEAAAAB.../SMU_PWDKey这个密钥格式是华为自定义的包含头部信息版本、类型等元数据实际的密钥材料在某个偏移位置。第六步尝试多种哈希算法均失败基于找到的函数和密钥尝试了多种算法组合算法密钥/盐结果纯SHA-256(password)-失败HMAC-SHA256(keypwdkey[24:56], msgpassword)pwdkey偏移24的32字节失败PBKDF2-HMAC-SHA256(salt空, iters10000)-失败PBKDF2-HMAC-SHA256(saltadmin, 不同迭代次数)用户名失败HMAC-SHA256(key各种派生值)多种组合失败每一种算法都计算了哈希值并更新到数据库但IVS客户端登录始终失败。第七步转折点——官方论坛的线索在华为企业业务论坛上找到了一个官方帖子提到了 VCN510 密码重置的 SQL 命令updatetbl_smu_user_infosetlogin_passworde687fed485a4b510722695f7d38d6b524532af5196bd70363019a52bfc0f8af3wherelogin_nameadmin;这个哈希值e687fed4...对应的密码是初始密码Change_Me。**关键发现** 这个哈希值既不是SHA-256(Change_Me)也不是之前尝试的任何 HMAC/PBKDF2 结果。第八步破解哈希算法将官方哈希值与各种可能的输入进行比对importhashlib official_hashe687fed485a4b510722695f7d38d6b524532af5196bd70363019a52bfc0f8af3# 尝试 用户名 密码 的组合testhashlib.sha256(bAdminChange_Me).hexdigest()print(test)# e687fed485a4b510722695f7d38d6b524532af5196bd70363019a52bfc0f8af3# MATCH!**真相大白密码哈希算法是SHA-256(用户名 密码)即用户名和密码字符串拼接后再做 SHA-256。**为什么之前没想到因为 HMAC 和 PBKDF2 函数的存在让人误以为使用了更复杂的算法但实际上基础登录模式使用简单的SHA-256(username password)GetHMACSHA256Hex和GetPBKDF2_HMAC_SHA256Hex可能用于 MDEP 模式或其他安全场景key.xml中的密钥可能用于其他加密用途如配置文件加密、通信加密等而非登录密码验证最终解决方案方法一SQL直接重置推荐admin192.168.248.9su- root# 重置admin用户密码为 Change_Me# 注意哈希值 SHA256(用户名 密码) SHA256(adminChange_Me)# 如果你的用户名是小写adminNEW_HASH$(python3-cimport hashlib; print(hashlib.sha256(badminChange_Me).hexdigest()))# 如果你的用户名是大写 Admin华为某些版本默认是大写NEW_HASH$(python3-cimport hashlib; print(hashlib.sha256(bAdminChange_Me).hexdigest()))su- postgres-c/home/postgres/bin/psql -p 6000 -d smu -c\update tbl_smu_user_info set login_password${NEW_HASH}, salt where login_nameadmin\su- postgres-c/home/postgres/bin/psql -p 6000 -d smu -c\update TBL_SMU_PASSWORD_INFO set login_password${NEW_HASH}, salt where login_nameadmin\# 同时解锁账户如果被锁定su- postgres-c/home/postgres/bin/psql -p 6000 -d smu -c\update tbl_smu_user_info set status1, lock_time where login_nameadmin\然后用admin / Change_Me登录 IVS 客户端即可。方法二设为自定义密码如果想设置自定义密码比如MyNewPwd123importhashlib usernameadminpasswordMyNewPwd123hash_valuehashlib.sha256((usernamepassword).encode()).hexdigest()print(hash_value)将计算出的哈希值更新到数据库中即可。关键知识点总结VCN510 的 SMU 密码哈希算法是SHA256(用户名 密码)不是单纯的 SHA-256(password)用户名的大小写很重要——admin和Admin生成的哈希值完全不同网上很多文章给出的“直接改 SHA-256”方法是错误的至少在 V100R002 及以上版本不适用设备有两个独立的管理入口IVS 客户端SMU端口 9900和 OMU Web 门户端口 8443两者的用户体系可能独立key.xml中的SMU_PWDKey和OMU_PWDKey主要用于其他加密场景不是登录密码的 HMAC 密钥二进制中的HMAC/PBKDF2函数可能用于MDEP模式或其他高级安全特性基础登录不使用排查工具脚本附上一个 Python 脚本可以快速计算正确的密码哈希并通过 SSH 更新到设备importhashlibimportparamikodefcompute_hash(username,password):计算VCN510 SMU密码哈希SHA256(用户名 密码)returnhashlib.sha256((usernamepassword).encode()).hexdigest()defreset_password(host,ssh_user,ssh_pass,root_pass,smu_user,new_password):重置VCN510 SMU用户密码new_hashcompute_hash(smu_user,new_password)sshparamiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(host,port22,usernamessh_user,passwordssh_pass)# 构造SQL命令sql_cmdsf su - postgres -c /home/postgres/bin/psql -p 6000 -d smu -c \\update tbl_smu_user_info set login_password{new_hash}, salt where login_name{smu_user}\\ su - postgres -c /home/postgres/bin/psql -p 6000 -d smu -c \\update TBL_SMU_PASSWORD_INFO set login_password{new_hash}, salt where login_name{smu_user}\\ su - postgres -c /home/postgres/bin/psql -p 6000 -d smu -c \\update tbl_smu_user_info set status1, lock_time where login_name{smu_user}\\ # 通过su执行需要交互式输入root密码# ... 此处省略交互式su实现ssh.close()print(f密码已重置。用户名:{smu_user}, 新密码:{new_password})# 使用示例if__name____main__:print(新密码哈希:,compute_hash(admin,Change_Me))参考信息- 华为 VCN510 官方文档- 华为企业业务论坛VCN500 密码重置- VCN510 默认账户信息SSHadmin / Change_Me可su - root切换root 密码默认同 adminIVS 客户端admin / Change_MeSMU 用户端口 9900OMU Web 门户admin / Change_Me端口 8443PostgreSQL端口 6000库smu/omu—*如果本文对你有帮助欢迎点赞收藏有问题欢迎在评论区交流。
返回列表