一个进程是否有可能在没有管理特权的情况下将代码注入到另一个进程中?

Pol*_*ial 5 windows security winapi dpapi cryptoapi

CryptProtectMemoryDPAPI中的API允许您传递该CRYPTPROTECTMEMORY_SAME_PROCESS标志,从而防止其他进程解密内存。解决此问题的一种方法是使用OpenProcessWriteProcessMemoryCreateRemoteThread将代码注入目标进程并进行调用CryptUnprotectMemory,从而解密内存并将其泄漏给另一个进程。

假设两个进程都在Windows Vista或更高版本上的同一受限特权用户(即非管理员)的上下文中运行,这是否仍然可能?我给人的印象是,无论进程ACL是什么,进程内存写操作都被限制的用户拒绝,但我可能是错的。

Har*_*ton 2

Windows 尊重进程 ACL,默认情况下,这允许访问进程正在运行的用户以及本地系统帐户和用户的登录会话 SID。管理员可以使用 SeDebugPrivilege 绕过此 ACL。

否则,您需要成为管理员才能调试您自己的代码。

您可以更改进程 ACL,但由于通常 (IIRC) 当前用户是进程所有者,我不确定您是否可以阻止当前用户上下文中的另一个进程将其更改回来。此外,由于这些进程很可能在同一个桌面上运行,因此您无论如何都会受到碎片攻击