结论:管理员身份运行
mimikatz:https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20220919
然后输入: privilege::debug (提升权限到:NT-AUTHORITY\SYSTEM)以及sekurlsa::credman 就能看到:
发现过程:
cloudflare warp.exe本身是通过有名管道和warp-svc.exe通信,通过IO ninja的pipe monitor排除了管道通信中传输私钥和token的可能。
而使用warp-cli rotate-keys
替换密钥的时候,私钥公钥会存在本地,同时向服务器地址api.cloudflareclient.com发送公钥和token以及设备id来注册公钥。之后使用私钥通信。
替换密钥的时用process monitor 发现lsass.exe往
C:\Windows\System32\config\systemprofile\AppData\Roaming\Microsoft\Credentials\52F014FB686518D3591F1876ADAAEA09这个文件里
写入了东西(当然,右键排除了很多进程,过滤了很多注册表活动。),而daemon本身warp-svc.exe没写入东西。
猜想是warp-svc.exe调用lsass.exe写入这个文件。因为调用的协议是ALPC(Advanced Local Procedure Calls ),在warp-svc.exe的某个dll中实现,所以process monitor没有捕获到。之后使用ls和dir这个文件返回没有这个文件,但cat却可以读,想起来windows的权限确实很古怪,有时候会存在有列出文件目录的权限但没有读取文件的权限的情况。
网上查了一下这个文件所在目录很少提到。 但是有个目录是C:\Users\Userrofile]\AppData\Roaming\Microsoft\Credentials 可以用控制面板的凭据管理器credman来读取。目录对比下可以猜到不同的权限运行credman会有不同的结果而mimikatz恰好可以用system权限运行凭据管理器。