首页
社区
课程
招聘
[原创]远程桌面无法访问远程电脑上的USB证书
发表于: 2023-2-23 14:20 7311

[原创]远程桌面无法访问远程电脑上的USB证书

2023-2-23 14:20
7311

最近有个需求,需要把EV签名放到公司本地服务器上面去,这样大家都可以通过远程来使用EV签名.
在服务器(windows 10 x64)上面装上SafeNet,插上USB证书,正常识别到证书.
但是通过远程桌面连接到服务器的时候,SafeNet无法识别到证书.
网上查了资料,问题出在 C:\Windows\System32\WinSCard.dll 的 SCardEstablishContex 函数中.下层调用了 RedirectionContextIsLocal 函数,看名字应该是判断上下文是否是本地:
图片描述
动态跟一下,远程桌面时返回0,本地时返回1.
确定了问题就是这个函数,由于这个函数有多个地方调用,所以patch这个函数的内部,patch方法如下:
图片描述
在 0000000180007CAE 这句代码的地方插入add al,1 原本的代码往后面移动2个字节,修改之后如下:
图片描述
这样修改之后,在任何情况下 RedirectionContextIsLocal 返回的值都是大于0的.
绕过windows的文件保护机制,替换 C:\Windows\System32\WinSCard.dll
管理员权限运行cmd,输入如下指令后就可以替换了.
C:\Windows\system32>takeown /f C:\Windows\System32\WinSCard.dll
C:\Windows\system32>icacls C:\Windows\System32\WinSCard.dll /grant administrators:F
如果你的工具是wow64的,那么相同的操作处理C:\Windows\SysWOW64\WinSCard.dll即可,由于 RedirectionContextIsLocal 后面没有空白空间,所以不能用前面的patch方法,需要将如下两个地方的指令改为add al,1
图片描述
另外,还有一种解决方案:在服务器上面安装虚拟机,通过远程桌面操作虚拟机是可以识别USB证书的.
参考资料:
https://blog.csdn.net/qq_16952023/article/details/121376549?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121376549-blog-5817318.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-121376549-blog-5817318.pc_relevant_default&utm_relevant_index=2

 

https://blog.csdn.net/zy_strive_2012/article/details/79470829


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2023-2-23 14:23 被xxyiyi编辑 ,原因:
收藏
免费 1
支持
分享
打赏 + 200.00雪花
打赏次数 1 雪花 + 200.00
 
赞赏  13904007359   +200.00 2024/01/19 我也存在这个问题,想请大神帮我处理一下这个WinSCard.dll,用户是我微信,你告我一下费用,用户名是我微信,微信支付费用,谢谢你分享这么好的文章,如有打扰,见谅
最新回复 (1)
雪    币: 10962
活跃值: (2925)
能力值: ( LV5,RANK:71 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-2-24 11:29
0
游客
登录 | 注册 方可回帖
返回
//