调试过程究竟如何影响调试过程(机器)?

时间:2017-04-05 12:36:35

标签: visual-studio debugging visual-studio-debugging attach-to-process

每当想要从Visual Studio附加到进程时,就会收到这个讨厌的消息:

Attach security warning

question and its answers显示了摆脱它的斗争。这个Microsoft article告诉我们附加调试过程/机器的潜在危险:

  

然而,许多开发人员并没有意识到安全威胁可以   也向相反的方向流动。恶意代码可能存在   在调试对象进程中危及调试的安全性   机器:必须保护许多安全漏洞   对

问题:调试过程如何利用调试过程? (我只对一些亮点很感兴趣,因为我想可以写一本关于它的书。)

此外,在本地计算机w3wp.exe进程上调试时发出此警告的目的是什么(我想绝大多数调试会话都发生在开发计算机中)。如果本地机器的w3wp进程受到损害,那么无论如何你都会陷入深深的麻烦。

2 个答案:

答案 0 :(得分:2)

当您在调试对象中执行某些操作时,您实际上是在调试器上运行代码。这是潜在的安全问题所在。

例如,假设调试对象有一些类型可以将natvis加载到调试器中。并且假设C ++ Expression Evaluator中有一个安全漏洞,它允许通过natvis进行缓冲区溢出攻击。只需调试某个进程,远程进程就可以控制本地计算机。虽然这不太可能,但是调试器并没有对这种攻击进行强化。调试的本质意味着你必须让任何代码运行。

另一方面,一旦调试进程,调试器就具有相同的权限。你可以做任何你想做的事。

当附加到未知用户的进程时,会弹出以下警告。看到这篇文章: https://msdn.microsoft.com/ro-ro/library/ms241736.aspx

答案 1 :(得分:2)

当您附加到使用受限用户帐户运行的进程时,会收到此警告。与w3wp.exe一样,Web服务器通常配置有此类帐户,以便攻击者在弄清楚如何破坏Web服务器后不会造成太大的破坏。请注意您通常如何使用具有管理员权限的帐户来调试Web服务器。

这打开了一个通用的安全漏洞,非常类似于"破坏攻击"所利用的漏洞。权限升级,非特权进程利用另一个进程的权限。管道是调试器传输,允许调试器控制调试对象的通道。我认为进程在另一台机器上运行的情况下是套接字,如果它在同一台机器上运行,则为命名管道。受损的进程可能会伪造调试器将其解释为正常响应的消息。一切皆有可能,没有什么是简单的,没有任何记录。故意。

注意w3wp.exe在本地运行时如何使用远程调试器。它通常是64位进程,VS是32位,远程调试器(msvsmon.exe)需要桥接位数差异。

这是一种攻击场景,微软必须举手并且不再能保证这样的攻击不会成功并对您的机器造成真正的损害。攻击面太大。因此,他们显示对话框,您必须将其解释为"我们不再对接下来发生的事情承担责任"。诉讼时可能存在的否定性。它显示的信息对于判断流程是否受到损害实际上并不有用,但它只是得到了。生活太短暂,无法在每次点击附件时担心,律师从来没有让程序员的工作变得更容易:)