这可能是由于CredSSP,hang的原因分析

2019-10-14 17:24 来源:未知

win10很完美,用的也很舒服!当然人无完人,也总有不尽如人意的时候。比如说我们经常用的远程mstsc,就出现了一个坑,既然出现坑了,我们就得把坑解决掉吧!下面就记录一下这个坑的解决方法。

1. 问题

1.带windows 键

图片 1

当在console中调用API ShellExecuteEx打开"test.iqy"文件时,发现excel会hang住,console退出后excel才会响应,但直接双击"test.iqy"是没有问题的,有意思的是这个情况只有在xp发生,在win7上没有这个问题。

Win + E 打开文件夹

本文地址:
作者:yilezhu

 

Win + R 调出运行命令

查看微软CredSSP更新日志

查看win10系统升级日志,果然找到了原因,是因为CVE-2018-0886 的 CredSSP 2018 年 5 月 8 日更新默认设置从“易受攻击”更改为“缓解”的更新。相关的 Microsoft 知识库编号已在 CVE-2018-0886 中列出。默认情况下,安装此更新后,修补的客户端无法与未修补的服务器进行通信。 使用本文中描述的互操作性矩阵和组策略设置来启用“允许的”配置。
具体的内容请自行阅读:

2. 重现步骤

Win + T 显示任务栏,并在在其中切换

微软官方给出的解决“这可能是由于CredSSP 加密Oracle修正”的方法

  1. 组策略解决方法及步骤
    win+R 打开运行运行,然后输入“gpedit.msc”打开 如下图所示,在左侧窗口依次找到策略路径:“计算机配置”->“管理模板”->“系统”->“凭据分配” 然后右侧窗口设置名称中找到: 加密 Oracle 修正
    图片 2

然后双击“加密 Oracle 修正”打开如下的窗口,对着设置即可。
图片 3

最后,微软建议对加密 Oracle 修正的任何更改都需要重启。所以这里最好还是重启一下电脑。不过博主本人试了,不需要重启远程连接也正常了!

  1. 注册表解决方法及步骤

    这里建议先使用上面组策略的方式进行解决,如果解决不了,再使用注册表方式,因为注册表方式没有组策略这种图形化界面的简单方便。
    同时,微软也给出了警告: 如果使用注册表编辑器或其他方法修改注册表不当,可能会出现严重问题。 这些问题可能需要您重新安装操作系统。 Microsoft 不能保证可解决这些问题。 请自行承担修改注册表的风险。

win+R 打开运行菜单,然后输入“regedit” 按Enter键即可打开如下的注册表,按照图示,找到此路径“
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemCredSSPParameters”

图片 4

然后在右侧窗口双击“AllowEncryptionOracle” 并把值设置成“2” (跟上面组策略设置效果一样)然后确定。如下图所示
图片 5

0表示强制更新的客户端
1表示缓解
2表示易受攻击 (跟上面组策略设置效果一样,有木有)

重现环境:XP sp3 / Office 2007(其他office版本应该也可以,没有测试)

Win +Pause 显示系统属性

总结

今天主要是介绍下win10 mstsc远程遇到的坑“这可能是由于CredSSP 加密Oracle修正”的两种解决方法。从微软官方更新日志入手,然后引出组策略以及注册表的解决方法。图文也更容易让新手朋友也能按照步骤进行解决!最后还是提醒下,新手朋友最好通过组策略的方式进行解决,因为微软也给出了警告: 如果使用注册表编辑器或其他方法修改注册表不当,可能会出现严重问题。 这些问题可能需要您重新安装操作系统。 Microsoft 不能保证可解决这些问题。 请自行承担修改注册表的风险。

Win + Home 最小化 / 还原所有其他窗口除了当前窗口

1> 解压iqy_test.zip

Win  + D  显示桌面/恢复之前状态

2> 运行http_server.py(需先安装python)

Win + I 设置

3> 执行"shell_execute.exe test.iqy"

 

shell_execute.exe的主要code:

2.VS2015 快捷键

bool shell_execute_file(wstring file_path)
{
    SHELLEXECUTEINFOW shell_exec_info = { 0 };
    shell_exec_info.cbSize = sizeof(SHELLEXECUTEINFOW);
    shell_exec_info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
    shell_exec_info.hwnd = NULL;
    shell_exec_info.lpVerb = NULL;
    shell_exec_info.lpFile = file_path.c_str();
    shell_exec_info.lpParameters = NULL;
    shell_exec_info.lpDirectory = NULL;
    shell_exec_info.nShow = SW_SHOW;
    shell_exec_info.hInstApp = NULL;
    bool ret = ShellExecuteExW(&shell_exec_info);
    printf("process handle is %pn", shell_exec_info.hProcess);

    return ret;
}

   1>VS注释与取消注释快捷键:  先CTRL+K,然后CTRL+C     取消注释: 先CTRL+K,然后CTRL+U

 

3.Ctrl和一些键组合

3. 原因分析

Ctrl + Esc    显示“开始”菜单。 

3.1 excel hang在哪里?

 CTRL + 向右键 将插入点移动到下一个单词的起始处。 

3.1.1 用windbg附加到excel上,输入如下命令查看主线程hang住的地方

CTRL + 向左键 将插入点移动到前一个单词的起始处。 

图片 6

CTRL + 向下键 将插入点移动到下一段落的起始处。 

可以看到Excel hang在NtUserMessageCall()中,经过查询知,SendMessage()内部就是调用NtUserMessageCall()来发送消息的。

CTRL + 向上键 将插入点移动到前一段落的起始处。 

查看参数知excel调用NtUserMessageCall()类似如下:

CTRL + SHIFT + 任何箭头键 突出显示一块文本。 

NtUserMessageCall(HWND_BROADCAST, WM_DDE_INITIATE)

Ctrl + S 保存 

说明excel给所有顶层窗口发送一个WM_DDE_INITIATE消息,但是有窗口没有response

Ctrl + W  关闭程序 

TAG标签:
版权声明:本文由澳门金莎娱乐网站发布于澳门金莎娱乐网站,转载请注明出处:这可能是由于CredSSP,hang的原因分析