Finden Sie heraus, welcher Prozess einen anderen Prozess gestartet hat

Finden Sie heraus, welcher Prozess einen anderen Prozess gestartet hat

Angenommen, der Prozess-Explorer zeigt mir an, dass bei mir eine App namens „ EvilAppsRUs.exeAusgeführt“ läuft.

Ich beende es, aber es startet einfach wieder. Ich habe überprüft, ob es keinen Dienst hat (indem ich im Process Explorer mit der rechten Maustaste darauf geklickt und dann auf Eigenschaften geklickt habe).

Daher bin ich ziemlich sicher, dass es da draußen einen anderen Prozess gibt (vielleicht mit einem harmlosen Namen wie DisplayDriver.exe), der gestartet (und neu gestartet) wird EvilAppsRUs.exe.

Wie kann ich den Namen des Prozesses herausfinden, der den bösartigen Prozess neu startet?

Antwort1

Unter Windows kann Ihnen die Verwendung des Prozessmonitors helfen. Dort zeigt das Prozessbaum-Tool ( Ctrl+ T) die Beziehungen zwischen Prozessen an.

Sie können es schnell ausprobieren, indem Sie es von derOffizielle Seite.

Ein sehr nützlicher und in Echtzeit verfügbarer Prozessmonitor ...

Antwort2

Kurz zusammengefasst:Vertrauen Sie diesen Informationen nicht, die von den üblichen Tools zur Anzeige eines Prozessbaums präsentiert werden.

Ohne Werkzeuge wie dieerwähnt Prozessmonitoroder das etwas verwandteSysMon das kannst du nicht wissen.Mittheoretisch möglich, solange das jeweilige Tool das Ereignis der Prozesserstellung erfasst und verwendetDaserfasste Informationen, um den Prozessbaum (neu) aufzubauen.

Die Beziehung zwischen übergeordneten und untergeordneten Prozessen ist jedoch nichtals relevantunter Windows wie unter Unix.Unter Unix muss das übergeordnete Element den Beendigungsstatus des untergeordneten Elements erfassen, damit das untergeordnete Element nicht als Zombie endet.Das ist eine wichtige Information, denn sie erklärt auchWarumWindows legt nicht den gleichen Wert auf die Eltern-Kind-Prozess-Beziehung wie Unix im Allgemeinen. Elternprozesse in Windows müssen den Beendigungsstatus ihrer Kindprozesse nicht erfassen.

Was noch schlimmer ist: Während der Erstellung eines Prozesses können Sie den übergeordneten Prozess fälschen, indem SiePROC_THREAD_ATTRIBUTE_PARENT_PROCESS, was Ihnen im Allgemeinen eine Vorstellung davon geben sollte, wie vertrauenswürdig der Prozessbaum in ProcessForscherist (Hinweis: es ist nicht). Diese Informationen könnenAuchbei laufenden Prozessen vorgetäuscht werden, solange der Prozess, der diese Manipulation vornimmt, über die entsprechende Zugriffsebene auf den manipulierten Prozess verfügt.

Process Monitor hat den Vorteil, dass er – theoretisch – die Entstehung von Prozessen beobachten kann und nicht auf die Informationen angewiesen ist, die Sie extrahieren könnennach dem Faktvon jedem jeweiligen Prozess (und der kann gefälscht werden). Ich weiß jedoch nicht, ob diese Informationen verwendet werden, um den Prozessbaum zu füllen. Es sieht so aus, als ob dies nicht der Fall ist. Da der Prozessbaum angezeigt werden kann, bevor Sie erfasst habenbeliebigEreignisse im Process Monitor, es liegt auf der Hand, dass es ähnlich ist wie Process Explorer, was bedeutet, dassAuch diese Informationen sind nicht vertrauenswürdig.

Obwohl PROC_THREAD_ATTRIBUTE_PARENT_PROCESSdie Eltern-Kind-Prozess-Beziehung erst ungefähr in Windows 7 eingeführt wurde, war sie auch bei früheren Windows-Versionen nie besonders relevant.


Weiterführende Literatur:

PS: Konventionelle Tools verwenden entweder die dokumentierten tlhelp32( CreateToolhelp32Snapshotetwa mitPROCESSENTRY32W::th32ParentProcessID) Funktionalität oder die NT native APINtQuerySystemInformationmit etwaswie SystemProcessInformation(Nebbett nannte es SystemProcessesAndThreadsInformation). Das bedeutet, dass sie die möglicherweise gefälschte übergeordnete PID zurückgeben.

verwandte Informationen