{"id":270321,"date":"2022-07-09T00:06:00","date_gmt":"2022-07-08T22:06:00","guid":{"rendered":"https:\/\/www.borncity.com\/blog\/?p=270321"},"modified":"2022-07-08T22:35:06","modified_gmt":"2022-07-08T20:35:06","slug":"abwehr-windows-aufgabenplanung-als-einfallstor-fr-angriffe","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2022\/07\/09\/abwehr-windows-aufgabenplanung-als-einfallstor-fr-angriffe\/","title":{"rendered":"Abwehr: Windows-Aufgabenplanung als Einfallstor f&uuml;r Angriffe"},"content":{"rendered":"<p><img decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline;\" title=\"Windows\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2021\/04\/Windows-klein.jpg\" alt=\"Windows\" width=\"200\" \/>[<a href=\"https:\/\/borncity.com\/win\/?p=25561\" target=\"_blank\" rel=\"noopener\">English<\/a>]Angreifer verwenden als Technik die Windows-Aufgabenplanung und erstellen dort Tasks (geplante Aufgaben), um sich auf dem Rechner eines Opfers einzunisten. Das Forschungsteam von Qualys hat eine Reihe von M\u00f6glichkeiten untersucht, wie Angreifer solche geplanten Aufgaben verstecken k\u00f6nnen. Dieser Beitrag beschreibt drei neue Techniken zum Verbergen und L\u00f6schen geplanter Aufgaben in einer Microsoft Windows-Umgebung. Das ist keine theoretische Arbeit \"im luftleeren Raum\", denn die Technik wurde von der mutma\u00dflich chinesischen Angreifer (APT) Hafnium eingesetzt.<\/p>\n<p><!--more--><\/p>\n<p>Angreifer missbrauchen die Aufgabenplanung (Taskplaner) in Microsoft Windows-Umgebungen, um die erstmalige oder wiederholte Ausf\u00fchrung von b\u00f6sartigem Code beim Systemstart oder zu einem geplanten Zeitpunkt zu erm\u00f6glichen. Das MITRE ATT&amp;CK-Framework f\u00fchrt dies sogar als eine <a href=\"https:\/\/attack.mitre.org\/techniques\/T1053\/\" target=\"_blank\" rel=\"noopener\">der beliebtesten Techniken<\/a> von Angreifern an, da die M\u00f6glichkeit zur Planung von Programmen oder Skripten ein g\u00e4ngiger Dienst in verschiedenen Betriebssystemen ist.<\/p>\n<h2>Hafnium nutzt diese Technik<\/h2>\n<p>Vor kurzem ver\u00f6ffentlichten Sicherheitsforscher von <a href=\"https:\/\/www.microsoft.com\/security\/blog\/2022\/04\/12\/tarrask-malware-uses-scheduled-tasks-for-defense-evasion\/\" target=\"_blank\" rel=\"noopener\">Microsoft einen Artikel<\/a>, der beschreibt, wie die Hacker der staatlich gef\u00f6rderten chinesischen Gruppe <a href=\"https:\/\/blogs.microsoft.com\/on-the-issues\/2021\/03\/02\/new-nation-state-cyberattacks\/\" target=\"_blank\" rel=\"noopener\">Hafnium<\/a> geplante Aufgaben verbergen, indem sie den Security Descriptor (SD)-Wert im Registrierungspfad von Windows l\u00f6schen:<\/p>\n<pre><code>HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\TASK_NAME<\/code><\/pre>\n<p>Nachdem Microsoft diese Angriffstechnik \u00f6ffentlich bekanntgegeben hatte, stellte sich das Qualys-Forschungsteam die Frage, ob es noch andere M\u00f6glichkeiten zum Verbergen geplanter Aufgaben gibt, und beschloss, dies n\u00e4her zu untersuchen.<\/p>\n<h2>Geplante Aufgabe ausblenden<\/h2>\n<p>In diesem Blog-Beitrag werden die Ergebnisse erl\u00e4utert. Die wichtigste Erkenntnis der Analyse ist, dass der <code>Index<\/code>-Wert im Windows-Registrierungspfad<\/p>\n<pre><code>HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\TASK_NAME<\/code><\/pre>\n<p>auch dazu missbraucht werden kann, eine geplante Aufgabe auszublenden und zu l\u00f6schen.<\/p>\n<p>Nachfolgend wird kurz die Technik beschrieben, die Hafnium und andere Akteure zum Verbergen einer geplanten Aufgabe verwenden. Danach wird detailliert auf neue Techniken eingegangen, die genutzt werden k\u00f6nnen, um eine geplante Aufgabe in Microsoft-Umgebungen zu verbergen.<\/p>\n<h3>So verstecken Angreifer geplante Aufgaben<\/h3>\n<p>Dem Microsoft-Beitrag zufolge werden bei der Erstellung jeder geplanten Aufgabe die folgenden beiden Registrierungsunterschl\u00fcssel erzeugt, einer im Tree-Pfad und der andere im Tasks-Pfad.<\/p>\n<pre><code>HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\TASK_NAME \r\nHKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tasks\\{GUID} <\/code><\/pre>\n<p>Der erste Unterschl\u00fcssel <em>TASK_NAME<\/em>, der im <em>Tree<\/em>-Pfad erzeugt wird, entspricht dem Namen der geplanten Aufgabe. Die darin erzeugten Werte (d. h. Id, Index und SD) enthalten Metadaten f\u00fcr die Aufgabenregistrierung im System.<\/p>\n<p>Der zweite Unterschl\u00fcssel {GUID}, der im Tasks-Pfad erzeugt wird, entspricht dem Id-Wert im Tree-Unterschl\u00fcssel. Die darin erzeugten Werte (d. h. Aktionen, Pfad, Trigger usw.) enthalten die grundlegenden Parameter, die zur Ausf\u00fchrung der Aufgabe erforderlich sind.<\/p>\n<p>Im Fall von Hafnium erstellten die Angreifer eine geplante Aufgabe namens <em>WinUpdate<\/em>, um unterbrochene Verbindungen zu ihrer Command &amp; Control-Infrastruktur wiederherzustellen. Infolgedessen wurden Unterschl\u00fcssel im Tree-Pfad und im Tasks-Pfad erzeugt. Anschlie\u00dfend verschafften sich die Angreifer SYSTEM-Rechte (durch Token-Diebstahl) und l\u00f6schten den SD-Wert im Tree-Unterschl\u00fcssel.<\/p>\n<p>Durch das Entfernen des SD-Werts \u201everschwand\" die Aufgabe aus dem <i>Aufgabenplaner<\/i> und aus der Ausgabe des Befehls <i>schtasks \/query, <\/i>was dazu f\u00fchrte, dass die geplante Aufgabe mit keiner der herk\u00f6mmlichen Identifizierungsm\u00f6glichkeiten mehr zu finden war.<\/p>\n<p>Die Untersuchung durch die Qualsys-Sicherheitsforscher ergab nun, dass das \u00c4ndern oder L\u00f6schen des Indexwerts im Tree-Unterschl\u00fcssel ebenfalls dazu f\u00fchrt, dass geplante Aufgaben verborgen werden. Im Folgenden werden erl\u00e4utern die Sicherheitsforscher ihre Erkenntnisse, doch zun\u00e4chst eine kurze Beschreibung der Untersuchungsbedingungen.<\/p>\n<h3>Der Untersuchungsaufbau des Qualys-Forschungsteams<\/h3>\n<p>Die Sicherheitsforscher f\u00fchrten ihre Untersuchungen unter Windows 10 Pro (v10.0.19043), Windows 10 Enterprise (v10.0.19044) und Windows 2016 Server durch. Auf jedem Rechner wurden zun\u00e4chst die beiden folgenden Schritte ausgef\u00fchrt:<\/p>\n<ul>\n<li>Konfigurieren der Objekt\u00fcberwachung in den erweiterten \u00dcberwachungseinstellungen der lokalen Sicherheitsrichtlinie, damit im Windows-Sicherheitsereignisprotokoll Eintr\u00e4ge f\u00fcr die Erstellung (4698), L\u00f6schung (4699) und Aktualisierung (4702) geplanter Aufgaben angezeigt werden.<\/li>\n<li>Erstellung einer geplanten Aufgabe namens <i>ImpTask<\/i>, die nach der Benutzeranmeldung ausgef\u00fchrt wird.<\/li>\n<\/ul>\n<p><i>schtasks \/create \/tn ImpTask \/tr cmd.exe \/sc onlogon \/rl highest <\/i><\/p>\n<p>Sobald der Befehl<i> schtasks \/create<\/i> ausgef\u00fchrt wird, werden die drei folgenden Unterschl\u00fcssel f\u00fcr die neu erstellte Aufgabe <em>ImpTask <\/em>erzeugt (s. Abb. 1).<\/p>\n<pre><code>HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\ImpTask \r\nHKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tasks\\{GUID} \r\nHKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Logon\\{GUID}<\/code><\/pre>\n<p>Der Indexwert im <em>ImpTask<\/em>-Unterschl\u00fcssel wird auf 0x2 gesetzt (s. Abb. 1), da der Unterschl\u00fcssel {GUID} f\u00fcr diese Aufgabe im Anmeldepfad erstellt wird (weil die Aufgabe so geplant ist, dass sie nach der Benutzeranmeldung ausgef\u00fchrt wird).<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/h7BAwAF.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/h7BAwAF.png\" width=\"620\" height=\"316\" \/><\/a><br \/>\n<em>Abb. 1. Drei Registrierungsschl\u00fcssel zu der geplanten Aufgabe ImpTask. <\/em><\/p>\n<h3>Neue Methoden zum Verbergen einer geplanten Aufgabe<\/h3>\n<p>Die Sicherheitsforscher stellten fest, dass bei der Erstellung einer geplanten Aufgabe zus\u00e4tzlich zum Tree- und Tasks-Unterschl\u00fcssel noch ein weiterer Unterschl\u00fcssel erzeugt wird. Dieser dritte Unterschl\u00fcssel wird in Abh\u00e4ngigkeit davon erzeugt, wann die geplante Aufgabe ausgef\u00fchrt werden soll:<\/p>\n<ul>\n<li>Beim Starten, angegeben durch den Parameter <i>\/sc onstart<\/i> parameter in <i>schtasks \/create<\/i><\/li>\n<li>W\u00e4hrend der Benutzeranmeldung, angegeben durch den Parameter <i>\/sc onlogon<\/i> <i>in schtasks \/create<\/i><\/li>\n<li>Zu einem anderen Zeitpunkt als beim Hochfahren oder Anmelden (z. B. <i>\/sc daily \/st 09:00<\/i>)<\/li>\n<\/ul>\n<p>Der dritte Unterschl\u00fcssel wird unter einem der folgenden Pfade erzeugt:<\/p>\n<pre><code>HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Boot\\{GUID} \r\nHKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Logon\\{GUID} \r\nHKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Plain\\{GUID}<\/code><\/pre>\n<p>Der Name des dritten Unterschl\u00fcssels {GUID} stimmt mit dem <em>Id<\/em>-Wert im <em>Tree<\/em>-Unterschl\u00fcssel \u00fcberein. Au\u00dferdem beobachteten wir, dass der Indexwert im <em>Tree<\/em>-Unterschl\u00fcssel ebenfalls mit diesem dritten Unterschl\u00fcssel f\u00fcr die geplante Aufgabe verkn\u00fcpft ist. Wie die Sicherheitsforscher feststellten, ist der Indexwert entweder auf 0x1 oder 0x2 oder 0x3 gesetzt. Im Einzelnen gilt:<\/p>\n<ul>\n<li>Alle Aufgaben, die im Pfad HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\ Boot registriert werden, haben einen Indexwert von 0x1<\/li>\n<li>Alle Aufgaben, die im Pfad HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Logon registriert werden, haben einen Indexwert von 0x2<\/li>\n<li>Alle Aufgaben, die im Pfad HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\(Plain or Maintenance) registriert werden, haben einen Indexwert von 0x3<\/li>\n<\/ul>\n<p>Das Qualys-Forschungsteam schrieb ein Python-Skript und f\u00fchrte es auf verschiedenen Windows-Rechnern aus, um dieses Verhalten zu best\u00e4tigen. Da jede geplante Aufgabe entweder Teil von Boot oder Logon oder Plain or Maintenance ist, scheint es nur drei m\u00f6gliche Werte f\u00fcr Index zu geben: 0x1, 0x2 oder 0x3.<\/p>\n<p>Bei den Nachforschungen fanden die Sicherheitsforscher keine Online-Dokumentation, die den Zweck des Indexwerts im Zusammenhang mit der geplanten Aufgabe beschreibt. Jedoch gelang es den Forscher, den Indexwert zu manipulieren, um die folgenden Ergebnisse zu erzielen:<\/p>\n<ul>\n<li><b>Eine bestimmte geplante Aufgabe verbergen: <\/b>Die Forscher stellten fest, dass die Aufgabe vor dem <i>Aufgabenplaner<\/i> und der Ausgabe des Befehls <i>schtasks \/query <\/i>verborgen wird, wenn der Indexwert im <em>Tree<\/em>-Unterschl\u00fcssel auf 0x0 gesetzt wird. Trotzdem wird die Aufgabe weiterhin zum geplanten Zeitpunkt ausgef\u00fchrt, auch bei einem Neustart des Systems. So ergibt sich ein Verhalten, das genau dem entspricht, was die Hafnium-Angreifer durch L\u00f6schen des SD-Werts erreichten. Zudem stellten die Forscher fest, dass die Aufgabe gel\u00f6scht wird, wenn sie diese sie zu \u00e4ndern versuchen, nachdem ihr Indexwert mit dem Befehl <i>schtasks \/change <\/i>auf 0x0 gesetzt worden war. Im Windows-Sicherheitsereignisprotokoll erscheint jedoch kein Ereignis mit der ID 4699 f\u00fcr das L\u00f6schen einer geplanten Aufgabe.<\/li>\n<li><b>Alle geplanten Aufgaben verbergen: <\/b>Weiterhin stellten wir fest, dass das L\u00f6schen des Indexwerts dazu f\u00fchrt, dass der <i>Aufgabenplaner<\/i> und <i>schtasks \/query <\/i>die Fehlermeldung \u201eEs ist ein interner Fehler aufgetreten\" ausgeben, woraufhin alle geplanten Aufgaben effektiv verborgen werden. Die vorhandenen Aufgaben werden jedoch weiter ausgef\u00fchrt, und es k\u00f6nnen auch neue Aufgaben erstellt werden.<\/li>\n<\/ul>\n<p>Wenn der Index auf einen anderen Wert gesetzt wird (0x4, 0xffff usw.), wird die geplante Aufgabe nicht versteckt, und die Aufgabe wird weiter planm\u00e4\u00dfig ausgef\u00fchrt. Sehen wir uns nun die beiden Ergebnisse einer Manipulation des Indexwerts n\u00e4her an.<\/p>\n<h3>Eine geplante Aufgabe verbergen<\/h3>\n<p>In diesem ersten Szenario erstellen die Sicherheitsforscher eine weitere geplante Aufgabe namens <i>ModifyIndexTask<\/i>, die mit SYSTEM-Rechten einmal ausgef\u00fchrt wird \u2013 und zwar nach der Erstellung von <em>ImpTask<\/em> \u2013, und setzen ihren Indexwert auf 0x0. Der Befehl lautet wie folgt:<\/p>\n<pre><code>schtasks \/create \/tn ModifyIndexTask \/tr \"reg.exe add\u00a0 \\\"HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\ImpTask\\\" \/v Index \/d 0x0 \/t REG_DWORD \/f\" \/ru \"NT AUTHORITY\\SYSTEM\" \/rl highest \/sc once \/st &lt;time later than creation time of ImpTask&gt;<\/code><\/pre>\n<p><a href=\"https:\/\/i.imgur.com\/cgO3tP7.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/cgO3tP7.png\" width=\"642\" height=\"190\" \/><\/a><br \/>\n<em>Abb. 2. Der Indexwert von ImpTask wird auf 0x0 ge\u00e4ndert. <\/em><\/p>\n<p>Sobald die Aufgabe <em>ModifyIndexTask<\/em> ausgef\u00fchrt wird, setzt sie den Indexwert von <em>ImpTask<\/em> auf 0 (Abb. 2). Infolgedessen verschwindet <em>ImpTask<\/em> sowohl aus dem <i>Aufgabenplaner<\/i> (Abb. 3) als auch aus der Ausgabe des Befehls <i>schtasks \/query<\/i> (Abb. 4).<\/p>\n<p>ImpTask wird jedoch weiter ausgef\u00fchrt, auch nach einem System-Neustart (Abb. 5). Obwohl ImpTask in der Ausgabe von <i>schtasks \/query <\/i>nicht erscheint, zeigt Abb. 5, dass es m\u00f6glich ist, den Status der Aufgabe mit dem Befehl <i>schtasks \/query <\/i>abzurufen, indem der Name der Aufgabe mit dem Parameter <i>\/tn<\/i> angegeben wird.<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/aLCW5jN.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/aLCW5jN.png\" width=\"636\" height=\"321\" \/><\/a><br \/>\n<em>Abb. 3.\u00a0 ImpTask verschwindet aus dem Aufgabenplaner, sobald der Indexwert auf 0x0 ge\u00e4ndert wird.<\/em><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/h14zUNV.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/h14zUNV.png\" width=\"634\" height=\"250\" \/><\/a><br \/>\n<em>Abb. 4.\u00a0 ImpTask verschwindet aus der Ausgabe von schtasks \/query, sobald der Indexwert auf 0x0 ge\u00e4ndert wird. <\/em><\/p>\n<p><em><a href=\"https:\/\/i.imgur.com\/uvd1WWl.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/uvd1WWl.png\" width=\"631\" height=\"151\" \/><\/a><\/em><br \/>\n<em>Abb. 5. ImpTask wird weiter ausgef\u00fchrt, auch nachdem der Indexwert auf 0x0 gesetzt wurde<\/em><\/p>\n<p>Das Qualys Forschungsteam konnte dieses Problem auf jedem Windows 10-Rechner reproduzieren, mit dem experimentiert wurde \u2013 die Tests erfolgten auf insgesamt f\u00fcnf Ger\u00e4ten.<\/p>\n<p>Eine weitere interessante Beobachtung war folgende: Wenn wir versuchen, den Programmnamen in <em>ImpTask<\/em> (mit dem Indexwert 0x0) mit dem Befehl <i>schtasks \/change \/tr <\/i>zu<i> <\/i>\u00e4ndern, wird die Aufgabe gel\u00f6scht, wie in Abb. 6 gezeigt. Dies wird ausgef\u00fchrt, ohne dass im Windows-Sicherheitsereignisprotokoll die Ereignis-ID 4699 (Eine geplante Aufgabe wurde gel\u00f6scht) oder die Ereignis-ID 4702 (Eine geplante Aufgabe wurde aktualisiert) angezeigt wird. Dagegen <i>wird <\/i>die<i> <\/i>Ereignis-ID 4699 angezeigt, wenn wir den Befehl <i>schtasks \/delete <\/i>verwenden, um <em>ImpTask<\/em> zu l\u00f6schen.<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/0PhJjtK.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/0PhJjtK.png\" width=\"632\" height=\"233\" \/><\/a><br \/>\n<em>Abb. 6. Wenn ImpTask mit schtasks \/change \/tr gel\u00f6scht wird, hinterl\u00e4sst dies im Windows Sicherheitsprotokoll keine Spuren.<\/em><\/p>\n<h3>Alle geplanten Aufgaben verbergen<\/h3>\n<p>In diesem zweiten Szenario erstellen die Sicherheitsforscher eine weitere geplante Aufgabe, die mit SYSTEM-Rechten ausgef\u00fchrt wird und den Indexwert im <em>ImpTask<\/em>-Unterschl\u00fcssel l\u00f6scht. Der Befehl dazu lautet:<\/p>\n<pre><code>schtasks \/create \/tn ModifyIndexTask \/tr \"reg.exe delete \\\"HKLM\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Schedule\\TaskCache\\Tree\\ImpTask\\\" \/v Index \/f\" \/ru \"NT AUTHORITY\\SYSTEM\" \/rl highest \/sc once \/st &lt;time later than creation time of ImpTask&gt;<\/code><\/pre>\n<p>Sobald der Indexwert im ImpTask-Unterschl\u00fcssel gel\u00f6scht wird (Abb. 7), verschwinden alle geplanten Aufgaben aus dem <i>Aufgabenplaner<\/i> (Abb. 8) und der Ausgabe des Befehls <i>schtasks \/query <\/i>(Abb. 9). Stattdessen erhalten wir die Fehlermeldung \u201eEin interner Fehler ist aufgetreten\". Auch die Angabe des Aufgabennamens <em>ImpTask<\/em> mit dem Parameter <i>\/tn <\/i>funktioniert nicht.<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/0ANJGD1.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/0ANJGD1.png\" width=\"649\" height=\"154\" \/><\/a><br \/>\n<em>Abb. 7. Indexwert aus dem ImpTask-Unterschl\u00fcssel gel\u00f6scht. <\/em><\/p>\n<p><a href=\"https:\/\/i.imgur.com\/lXlYqTi.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/lXlYqTi.png\" width=\"645\" height=\"228\" \/><\/a><br \/>\n<em>Abb. 8. Nach dem L\u00f6schen des Indexwerts verschwinden alle geplanten Aufgaben aus dem Aufgabenplaner, und es wird eine Fehlermeldung angezeigt. <\/em><a href=\"https:\/\/i.imgur.com\/67Nj6oE.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/67Nj6oE.png\" width=\"638\" height=\"162\" \/><\/a><br \/>\n<em>Abb. 9. Den Namen der Aufgabe mit dem Befehl schtasks \/query \/tn anzugeben, funktioniert ebenfalls nicht. <\/em><\/p>\n<p>Obwohl die geplanten Aufgaben nicht angezeigt werden, werden sie zum geplanten Zeitpunkt ausgef\u00fchrt. Auch nach einem Neustart des Systems k\u00f6nnen die geplanten Aufgaben nicht angezeigt werden. Wenn ImpTask mit dem Befehl <i>schtasks \/change <\/i>ge\u00e4ndert wird, wird der Indexwert erneut generiert, und danach wird der Befehl <i>schtasks \/query <\/i>dann<i> <\/i>erfolgreich ausgef\u00fchrt (Abb. 10).<\/p>\n<p><a href=\"https:\/\/i.imgur.com\/JLxmC5p.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/JLxmC5p.png\" width=\"640\" height=\"426\" \/><\/a><br \/>\n<em>Abb. 10. Die \u00c4nderung von ImpTask mit dem Befehl schtasks \/change f\u00fchrt dazu, dass der Indexwert erneut generiert wird, woraufhin der Befehl schtasks \/query erfolgreich ausgef\u00fchrt wird.<\/em><\/p>\n<p>Nachdem die Forscher den Indexwert gel\u00f6scht hatten, versuchten sie, <em>ImpTask <\/em>mit <i>schtasks \/delete <\/i>zu l\u00f6schen<i>.<\/i> Interessanterweise schlug dieses Kommando fehl, und es wurde eine Fehlermeldung ausgegeben. Als wir anschlie\u00dfend versuchten, ImpTask mit dem Befehl <i>schtasks \/change <\/i>zu \u00e4ndern, wurde der Indexwert im ImpTask-Unterschl\u00fcssel wiederhergestellt. Alle Aufgaben erschienen nun wieder im <i>Aufgabenplaner<\/i>, und die Ausf\u00fchrung von <i>schtasks \/query <\/i>war ebenfalls erfolgreich. Beachten Sie, dass der Indexwert nur wiederhergestellt wird, wenn <i>schtasks \/delete <\/i>vor <i>schtasks \/change <\/i>ausgef\u00fchrt wird. Wenn wir <i>schtasks \/change <\/i>ausf\u00fchrten, ohne vorher <i>schtasks \/delete <\/i>ausgef\u00fchrt zu haben, wurde der Indexwert nicht wiederhergestellt, und wir erhielten beim Ausf\u00fchren von <i>schtasks \/query<\/i> weiterhin eine Fehlermeldung.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Eine Untersuchung durch das Qualys-Forschungsteam hat ergeben, dass neben dem SD-Wert auch der Indexwert im Tree-Unterschl\u00fcssel einer geplanten Aufgabe eine wichtige Rolle spielt und beide von Angreifern missbraucht werden k\u00f6nnen. In diesem Blog haben wir drei neue Techniken beschrieben, um geplante Aufgaben zu verstecken und zu l\u00f6schen:<\/p>\n<ul>\n<li>Eine geplante Aufgabe vor dem <i>Aufgabenplaner<\/i> und der Ausgabe des Befehls <i>schtasks \/query<\/i> verbergen, indem ihr Indexwert auf 0x0 gesetzt wird<\/li>\n<li>Eine geplante Aufgabe l\u00f6schen, indem man zun\u00e4chst ihren Indexwert auf 0x0 setzt und dann den Befehl <i>schtasks \/change \/tr <\/i>verwendet, wodurch die Aufgabe effektiv gel\u00f6scht wird, ohne dass dies eine Spur im Windows Sicherheitsereignisprotokoll hinterl\u00e4sst.<\/li>\n<li>Alle geplanten Aufgaben vor dem <i>Aufgabenplaner<\/i> und der Ausgabe des Befehls <i>schtasks \/query <\/i>verbergen, indem man den Indexwert einer beliebigen geplanten Aufgabe l\u00f6scht<\/li>\n<\/ul>\n<p>Jede dieser neuen Techniken kann eingesetzt werden, um eine geplante Aufgabe in Microsoft-Umgebungen zu verbergen. Deshalb ist es wichtig, \u00c4nderungen an den Index- und SD-Werten geplanter Aufgaben zu \u00fcberwachen. Solche \u00c4nderungen k\u00f6nnten darauf hinweisen, dass ein Angreifer versucht, b\u00f6sartigen Code auszuf\u00fchren \u2013 entweder beim Systemstart oder zu einem geplanten Zeitpunkt \u2013, um Persistenz zu erlangen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[English]Angreifer verwenden als Technik die Windows-Aufgabenplanung und erstellen dort Tasks (geplante Aufgaben), um sich auf dem Rechner eines Opfers einzunisten. Das Forschungsteam von Qualys hat eine Reihe von M\u00f6glichkeiten untersucht, wie Angreifer solche geplanten Aufgaben verstecken k\u00f6nnen. Dieser Beitrag beschreibt &hellip; <a href=\"https:\/\/borncity.com\/blog\/2022\/07\/09\/abwehr-windows-aufgabenplanung-als-einfallstor-fr-angriffe\/\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[301],"tags":[4328,3288],"class_list":["post-270321","post","type-post","status-publish","format-standard","hentry","category-windows","tag-sicherheit","tag-windows-en"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/270321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=270321"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/270321\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=270321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=270321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=270321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}