<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Quickpost: SelectMyParent or Playing With the Windows Process Tree</title>
	<atom:link href="http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/</link>
	<description>(blog 'DidierStevens)</description>
	<lastBuildDate>Wed, 17 Mar 2010 18:58:11 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36706</link>
		<dc:creator>Didier Stevens</dc:creator>
		<pubDate>Thu, 03 Dec 2009 21:50:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36706</guid>
		<description>@Skywing Thanks for the clarification. And I agree there is no security issue.</description>
		<content:encoded><![CDATA[<p>@Skywing Thanks for the clarification. And I agree there is no security issue.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Skywing</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36704</link>
		<dc:creator>Skywing</dc:creator>
		<pubDate>Thu, 03 Dec 2009 21:45:45 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36704</guid>
		<description>Yes, that&#039;s correct.  Someone could have just as easily thunked down to the raw system call however and bypassed CreateProcess, so this is something that has required handling from the get-go and not just on Vista or later.  It&#039;s entirely possible to do exactly the same thing on earlier systems, and

Note that there is no security implication here as privileged access (PROCESS_CREATE_PROCESS) to a process is required to inherit from it.  This access right is typically only given to the object owner, system, and administrators.</description>
		<content:encoded><![CDATA[<p>Yes, that&#8217;s correct.  Someone could have just as easily thunked down to the raw system call however and bypassed CreateProcess, so this is something that has required handling from the get-go and not just on Vista or later.  It&#8217;s entirely possible to do exactly the same thing on earlier systems, and</p>
<p>Note that there is no security implication here as privileged access (PROCESS_CREATE_PROCESS) to a process is required to inherit from it.  This access right is typically only given to the object owner, system, and administrators.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36700</link>
		<dc:creator>Didier Stevens</dc:creator>
		<pubDate>Thu, 03 Dec 2009 19:22:50 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36700</guid>
		<description>@Skywing

Interesting. So the NtCreateProcess* functions exported by ntdll.dll have always allowed this, but it&#039;s only starting with Vista that CreateProcess exported from kernel32.dll also allows this?</description>
		<content:encoded><![CDATA[<p>@Skywing</p>
<p>Interesting. So the NtCreateProcess* functions exported by ntdll.dll have always allowed this, but it&#8217;s only starting with Vista that CreateProcess exported from kernel32.dll also allows this?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Skywing</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36699</link>
		<dc:creator>Skywing</dc:creator>
		<pubDate>Thu, 03 Dec 2009 19:11:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36699</guid>
		<description>This has always been the case on NT, actually.  The underlying system call has always allowed you to specify an inherit from process handle (provided you have PROCESS_CREATE_PROCESS access to said processs -- a sensitive access level).

It just so happens that the Win32 wrapper typically always uses the creator&#039;s process handle as the inherit from process handle.

The link between a creator process and a &#039;child&#039; process has always been extremely tenuous in NT.</description>
		<content:encoded><![CDATA[<p>This has always been the case on NT, actually.  The underlying system call has always allowed you to specify an inherit from process handle (provided you have PROCESS_CREATE_PROCESS access to said processs &#8212; a sensitive access level).</p>
<p>It just so happens that the Win32 wrapper typically always uses the creator&#8217;s process handle as the inherit from process handle.</p>
<p>The link between a creator process and a &#8216;child&#8217; process has always been extremely tenuous in NT.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mario Vilas</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36553</link>
		<dc:creator>Mario Vilas</dc:creator>
		<pubDate>Wed, 25 Nov 2009 00:57:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36553</guid>
		<description>Cool :)

I&#039;ve ported the tool to Python and included it in my WinAppDbg debugger: http://sourceforge.net/apps/trac/winappdbg/browser/trunk/tools/SelectMyParent.py

This trick could also be used to thwart an antidebugging trick, as some packers check if their parent is explorer.exe or not.</description>
		<content:encoded><![CDATA[<p>Cool <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;ve ported the tool to Python and included it in my WinAppDbg debugger: <a href="http://sourceforge.net/apps/trac/winappdbg/browser/trunk/tools/SelectMyParent.py" rel="nofollow">http://sourceforge.net/apps/trac/winappdbg/browser/trunk/tools/SelectMyParent.py</a></p>
<p>This trick could also be used to thwart an antidebugging trick, as some packers check if their parent is explorer.exe or not.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Interesting Information Security Bits for 11/23/2009 &#124; Infosec Ramblings</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36516</link>
		<dc:creator>Interesting Information Security Bits for 11/23/2009 &#124; Infosec Ramblings</dc:creator>
		<pubDate>Mon, 23 Nov 2009 23:04:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36516</guid>
		<description>[...] process is. This creates a problem. Read Didier&#8217;s post to find out what that problem is. Quickpost: SelectMyParent or Playing With the Windows Process Tree &lt;&lt; Didier Stevens Tags: ( windows [...]</description>
		<content:encoded><![CDATA[<p>[...] process is. This creates a problem. Read Didier&#8217;s post to find out what that problem is. Quickpost: SelectMyParent or Playing With the Windows Process Tree &lt;&lt; Didier Stevens Tags: ( windows [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Didier Stevens</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36481</link>
		<dc:creator>Didier Stevens</dc:creator>
		<pubDate>Sun, 22 Nov 2009 21:49:18 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36481</guid>
		<description>A handle is a pointer to a pointer to a kernel object.

And I too believe that this feature merits further investigation ;-). That&#039;s why I posted my program so soon, so that others can play with it too.

FYI: my tool will not allow the new process to inherit handles. If you want this, change the code like this:
 CreateProcess(NULL, argv[1], NULL, NULL, FALSE, ...
 -&gt;
 CreateProcess(NULL, argv[1], NULL, NULL, TRUE, ...</description>
		<content:encoded><![CDATA[<p>A handle is a pointer to a pointer to a kernel object.</p>
<p>And I too believe that this feature merits further investigation <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . That&#8217;s why I posted my program so soon, so that others can play with it too.</p>
<p>FYI: my tool will not allow the new process to inherit handles. If you want this, change the code like this:<br />
 CreateProcess(NULL, argv[1], NULL, NULL, FALSE, &#8230;<br />
 -&gt;<br />
 CreateProcess(NULL, argv[1], NULL, NULL, TRUE, &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mubix</title>
		<link>http://blog.didierstevens.com/2009/11/22/quickpost-selectmyparent-or-playing-with-the-windows-process-tree/#comment-36479</link>
		<dc:creator>mubix</dc:creator>
		<pubDate>Sun, 22 Nov 2009 21:27:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.didierstevens.com/?p=1860#comment-36479</guid>
		<description>I&#039;d like to expand on my questions that I asked via Twitter. Those being:
1. Are you able to move a currently running process under another one?
2. Are there any privileges applied to the parent/child relationship of processes?

You said that a child access the &quot;inheritable handles&quot;. I don&#039;t know what exactly &#039;handles&#039; are, but if you were able to migrate a running process under one that you created you might get some interesting permissions to it. Or say, Process A has handles H that Process B uses, if you were some how to hijack Process B or put yourself in between process A and process B, you might be able to alter the state of those handles.

But getting back to the ability of your app, for software that starts an &quot;update&quot; process, there might be some inheritable handles that you could get a hold of by impersonating the update process that it starts since most coders wont think about the security of child processes... yet.

Just thinking out loud.

Sweet program! ;-)</description>
		<content:encoded><![CDATA[<p>I&#8217;d like to expand on my questions that I asked via Twitter. Those being:<br />
1. Are you able to move a currently running process under another one?<br />
2. Are there any privileges applied to the parent/child relationship of processes?</p>
<p>You said that a child access the &#8220;inheritable handles&#8221;. I don&#8217;t know what exactly &#8216;handles&#8217; are, but if you were able to migrate a running process under one that you created you might get some interesting permissions to it. Or say, Process A has handles H that Process B uses, if you were some how to hijack Process B or put yourself in between process A and process B, you might be able to alter the state of those handles.</p>
<p>But getting back to the ability of your app, for software that starts an &#8220;update&#8221; process, there might be some inheritable handles that you could get a hold of by impersonating the update process that it starts since most coders wont think about the security of child processes&#8230; yet.</p>
<p>Just thinking out loud.</p>
<p>Sweet program! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
