Schützen von Antischadsoftwarediensten

In Windows 8.1 wurde ein neues Konzept geschützter Dienste eingeführt, um Antischadsoftwaredienste zu schützen, die häufig das Ziel von Angriffen durch Schadsoftware sind.

Erfahren Sie mehr darüber, wie Sie Antischadsoftwaredienste im Benutzermodus schützen und dieses Feature in Ihren Antischadsoftwaredienst integrieren können.

Diese Informationen gelten für die folgenden Betriebssysteme und deren Nachfolgeversionen:

  • Windows 8.1
  • Windows Server 2012 R2

Referenzen und Ressourcen, die hier genannt werden, sind am Ende des Themas aufgeführt.

Einführung

Die meisten Antischadsoftwarelösungen umfassen einen Dienst im Benutzermodus, der spezialisierte Vorgänge ausführt, um Schadsoftware zu erkennen und aus dem System zu entfernen. Dieser Dienst im Benutzermodus ist häufig auch für das Herunterladen der aktuellen Virusdefinitionen und -signaturen verantwortlich. Da der Dienst im Benutzermodus die einzelne Fehlerquelle (Single Point of Failure) ist, die zum Deaktivieren des Schutzes auf einem System genutzt werden kann, ist er ein häufiges Ziel von Schadsoftware. Zum Schutz vor Angriffen auf den Dienst im Benutzermodus müssen Anbieter von Antischadsoftwarelösungen ihrer Software viele Funktionen und Heuristiken hinzufügen. Solche Techniken sind jedoch nicht absolut sicher und oft fehleranfällig, da sie Funktionen identifizieren müssen, die Windows für ihren Dienst ausführt, und diese Funktionen selektiv aktivieren.

In Windows 8.1 wurde ein neues Konzept geschützter Dienste eingeführt, damit Antischadsoftwaredienste im Benutzermodus als geschützter Dienst gestartet werden können. Nachdem der Dienst im geschützten Modus gestartet wurde, verwendet Windows die Codeintegrität, um nur vertrauenswürdigen Code in den geschützten Dienst zu laden. Windows schützt diese Prozesse auch vor Codeinjektion und anderen Angriffen über Administratorprozesse.

In diesem Dokument wird beschrieben, wie ein Antischadsoftwareanbieter mit einem Treiber für Antischadsoftware-Frühstart (Early Launch Anti-Malware, ELAM) dieses Feature hinzufügen und seinen Antischadsoftwaredienst als geschützten Dienst starten kann.

Durch das System geschützter Prozess

Ab Windows 8.1 ist ein neues Sicherheitsmodell im Kernel verfügbar, um einen besseren Schutz vor böswilligen Angriffen auf systemkritische Komponenten bereitzustellen. Dieses neue Sicherheitsmodell erweitert die geschützte Prozessinfrastruktur, die in früheren Versionen von Windows für bestimmte Szenarien verwendet wurde (z. B. Wiedergabe von DRM-Inhalten), in ein universelles Modell, das von Drittanbietern von Antischadsoftwarelösungen verwendet werden kann. Die geschützte Prozessinfrastruktur ermöglicht nur das Laden von vertrauenswürdigem, signiertem Code und verfügt über eine integrierte Funktion zum Schutz vor Codeinjektionsangriffen.

Hinweis

CodeIntegrity verbietet die folgenden Skripterstellungs-DLLs innerhalb eines geschützten Prozesses (ob direkt oder indirekt geladen), z. B. über WinVerifyTrust oder WinVerifyTrustEx zum Überprüfen von Skriptsignaturen über AuthentiCode: scrobj.dll, scrrun.dll, jscript.dll, jscript9.dll und vbscript.dll.

Weitere Informationen zu geschützten Prozessen finden Sie unter Geschützte Prozesse in Windows Vista.

Das neue Sicherheitsmodell verwendet eine leicht abweichende Variante der Schutzprozessinfrastruktur, die als „durch das System geschützter Prozess“ bezeichnet wird und sich besser für dieses Feature eignet, da die DRM-Inhalte getrennt gehalten werden. Jeder durch das System geschützte Prozess verfügt über eine zugeordnete Ebene oder ein Attribut, die bzw. das die Signaturrichtlinie des signierten Codes angibt, der innerhalb des Prozesses geladen werden kann. Nachdem der geschützte Dienstmodus für die Antischadsoftwaredienste aktiviert wurde, können nur von Windows signierter Code oder Code, der mit den Zertifikaten eines Antischadsoftwareanbieters signiert ist, in diesem Prozess geladen werden. Ebenso verfügen andere geschützte Prozessebenen über unterschiedliche Coderichtlinien, die von Windows erzwungen werden.

Anforderungen

Damit ein Antischadsoftwaredienst im Benutzermodus als geschützter Dienst ausgeführt werden kann, muss der Antischadsoftwareanbieter einen ELAM-Treiber auf dem Windows-Computer installieren. Zusätzlich zu den bestehenden Zertifizierungsanforderungen für ELAM-Treiber muss der Treiber über einen eingebetteten Ressourcenabschnitt verfügen, der die Informationen der Zertifikate enthält, die zum Signieren der Binärdateien des Diensts im Benutzermodus verwendet werden.

Wichtig

In Windows 8.1 muss die Zertifizierungskette entweder ein bekannter Stamm gemäß der Treiberüberprüfung sein, oder das Stammzertifikat muss enthalten sein.

Während des Startprozesses wird dieser Ressourcenabschnitt aus dem ELAM-Treiber extrahiert, um die Zertifikatinformationen zu überprüfen und den Antischadsoftwaredienst zu registrieren. Der Antischadsoftwaredienst kann auch während des Installationsprozesses der Antischadsoftware registriert werden, indem wie weiter unten in diesem Dokument beschrieben eine spezielle API aufgerufen wird.

Sobald der Ressourcenabschnitt erfolgreich aus dem ELAM-Treiber extrahiert und der Dienst im Benutzermodus registriert wurde, kann der Dienst als geschützter Dienst gestartet werden. Nachdem der Dienst im geschützten Modus gestartet wurde, können andere ungeschützte Prozesse im System weder Threads einfügen noch in den virtuellen Arbeitsspeicher des geschützten Prozesses schreiben.

Darüber hinaus müssen alle Nicht-Windows-DLLs, die in den geschützten Prozess geladen werden, mit einem entsprechenden Zertifikat signiert sein.

Weitere Informationen zu ELAM-Treibern finden Sie unter Antischadsoftware-Frühstart.

Signaturanforderungen für Antischadsoftwaredienste

Der Dienst im Benutzermodus, der als geschützter Dienst gestartet werden muss, muss mit gültigen Zertifikaten signiert sein. Die EXE-Datei des Diensts muss mit einem Seitenhash signiert sein, und alle Nicht-Windows-DLLs, die in den Dienst geladen werden, müssen ebenfalls mit denselben Zertifikaten signiert sein. Der Hash dieser Zertifikate muss in der Ressourcendatei hinzugefügt werden, die mit dem ELAM-Treiber verknüpft wird.

Hinweis

Es müssen SHA256-Datei-/Seitenhashes verwendet werden, bei den Zertifikaten kann es sich jedoch weiterhin um SHA1-Zertifikate handeln.

Antischadsoftwareanbietern wird empfohlen, die Binärdateien ihres Antischadsoftwarediensts mit ihrem vorhandenen Authenticode-Zertifikat zu signieren und den Hash dieses Authenticode-Zertifikats dem Ressourcenabschnitt hinzuzufügen, um das Zertifikat anzugeben, das zum Signieren der Binärdateien des Diensts verwendet wird. Wenn Sie dieses Zertifikat aktualisieren, muss eine neuere Version des ELAM-Treibers mit den aktualisierten Zertifikathashes veröffentlicht werden.

Sekundärsignatur (optional)

Antischadsoftwareanbieter haben die Möglichkeit, eine private Zertifizierungsstelle (ZS) einzurichten und Zertifikate dieser Zertifizierungsstelle zu verwenden, um die Binärdateien des Antischadsoftwarediensts mit einer Codesignatur zu versehen, die als Sekundärsignatur dient. Die Verwendung der privaten Zertifizierungsstelle bietet den wesentlichen Vorteil, dass Anbieter Zertifikate mit einer speziellen EKU-Eigenschaft (Extended Key Usage, erweiterte Schlüsselverwendung) erstellen können, die zur Unterscheidung zwischen mehreren Produkten desselben Anbieters verwendet werden kann. Außerdem reduziert sie die Notwendigkeit, Ihren ELAM-Treiber aufgrund eines Zertifikatablaufs zu aktualisieren, da die Zertifikate der privaten Zertifizierungsstelle in der Regel längere Ablaufdaten haben.

Wenn die Binärdateien des Diensts mit den Zertifikaten der privaten Zertifizierungsstelle signiert werden, müssen sie zudem mit den vorhandenen Authenticode-Zertifikaten doppelt signiert werden. Wenn die Binärdateien nicht von einer bekannten vertrauenswürdigen Zertifizierungsstelle (z. B. VeriSign) signiert sind, haben Computerbenutzer*innen kein Vertrauen in die Binärdateien, da sie der privaten Zertifizierungsstelle nicht vertrauen können. Das doppelte Signieren der Binärdateien mit dem vorhandenen Authenticode-Zertifikat ermöglicht die Ausführung der Binärdateien auf untergeordneten Betriebssystemen.

Weitere Informationen zum Einrichten und Installieren der Zertifizierungsstelle finden Sie unter Einrichten einer Zertifizierungsstelle und Installieren der Zertifizierungsstelle.

Hinweis

Aus Gründen der Kompatibilität mit Windows Vista oder Windows XP (oder Windows 7 ohne SHA2-Patch) können Sie die Option „/as“ verwenden, wenn Sie Ihre Binärdateien mit SignTool.exe mit den SHA256-Datei-/Seitenhashes signieren. Dadurch wird die Signatur der Datei als Sekundärsignatur hinzugefügt. SHA1 signiert die Datei zuerst, da Windows XP, Windows Vista und Windows 7 nur die erste Signatur sehen.

DLL-Signaturanforderungen

Wie zuvor erwähnt, müssen alle Nicht-Windows-DLLs, die in den geschützten Dienst geladen werden, mit demselben Zertifikat signiert werden, das zum Signieren des Antischadsoftwarediensts verwendet wurde.

Katalogsignatur

Antischadsoftwareanbieter können von anderen Unternehmen entwickelte Pakete einschließen, ohne die Signaturen der Binärdateien zu aktualisieren. Dazu schließen sie die Binärdateien mithilfe der folgenden Schritte in einen Katalog ein, der mit dem Authenticode-Zertifikat signiert ist:

  1. Generieren Sie mit MakeCat einen Katalog.
  2. Fügen Sie dem Katalog alle Binärdateien ohne entsprechende Signatur hinzu.
  3. Signieren Sie den Katalog wie jede andere Binärdatei mit dem Authenticode-Zertifikat.
  4. Verwenden Sie die Funktion Katalog hinzufügen, um den Katalog in die Anwendung einzuschließen.

Wenn die Codeintegrität auf die Pakete ohne entsprechende Signatur stößt, wird nach einem Katalog mit einer genehmigten Signatur gesucht. Dieser Katalog wird gefunden, sofern diese Schritte befolgt werden und der Katalog mit der Anwendung installiert wird.

Informationen zu Ressourcendateien

Eine Ressourcendatei muss erstellt und mit dem ELAM-Treiber verknüpft werden. Der Hash des Zertifikats und andere Zertifikatinformationen müssen in der Ressourcendatei hinzugefügt werden.

Der Ressourcenabschnitt muss das folgende Layout aufweisen, damit das System die Ressourcen erfolgreich aus dem binären Image extrahieren und die eingebetteten Zertifikatinformationen überprüfen kann.

MicrosoftElamCertificateInfo  MSElamCertInfoID
{
      3, // count of entries
      L”CertHash1\0”,
      Algorithm,
      L”EKU1\0”,
      L”CertHash2\0”,
      Algorithm,
      L”\0”, //No EKU for cert hash 2
      L”CertHash3\0”,
      Algorithm,
      L”EKU3a;EKU3b;EKU3c\0”,  //multiple EKU entries supported (max: 3)
}

Weitere Informationen zur benutzerdefinierten Ressourcendatei finden Sie unter User-Defined Resource (Benutzerdefinierte Ressource).

CertHash

Der Hash des Zertifikats, das zum Signieren des Antischadsoftwarediensts verwendet wird. Der Hash kann mit dem Tool „CertUtil.exe“, das im Windows SDK enthalten ist, abgerufen werden.

certutil.exe –v <path to the signed file>

Beispiel:

anti-malware protected service certificate hash (certhash)

Algorithmus

Der Algorithmuswert stellt den Algorithmus des Zertifikats dar. Die folgenden Algorithmuswerte werden unterstützt:

0x8004 – SHA1 0x800c – SHA256 0X800d – SHA384 0x800e – SHA512

Denken Sie daran, den Wert des Algorithmus (wie oben dargestellt) und nicht den tatsächlichen Namen des Algorithmus einzuschließen. Wenn das Zertifikat beispielsweise auf dem SHA256-Algorithmus basiert, fügen Sie 0x800c im Ressourcenabschnitt hinzu.

EKU

Das EKU-Objekt stellt eine einzelne EKU-Eigenschaft (erweiterte Schlüsselverwendung) eines Zertifikats dar. Dies ist optional. Geben Sie „\0“ an, wenn dem Zertifikat keine EKUs zugeordnet sind. Falls mehrere Produkte und Dienste von einem einzelnen Antischadsoftwareanbieter auf demselben System ausgeführt werden, kann der Antischadsoftwareanbieter die EKU-Eigenschaft des Zertifikats der privaten Zertifizierungsstelle verwenden, um Dienste voneinander zu unterscheiden. Wenn auf dem System beispielsweise zwei Dienste von demselben Antischadsoftwareanbieter ausgeführt werden und von derselben Zertifizierungsstelle signiert sind, kann der Dienst, der als geschützter Dienst gestartet werden muss, mit einem von der Zertifizierungsstelle ausgestellten Zertifikat signiert werden, das eine spezielle EKU enthält. Diese EKU muss dem Ressourcenabschnitt hinzugefügt werden. Die EKU wird dann vom System registriert und mit dem Zertifikathash gekoppelt, um den Dienst zu überprüfen und im geschützten Modus zu starten.

Beachten Sie, dass die Zertifikatkette die Codesignatur-EKU (1.3.6.1.5.5.7.3.3) enthalten muss, diese EKU jedoch nicht im Ressourcenabschnitt des ELAM-Treibers enthalten sein darf.

Hinweis

Wenn EKU-Informationen in Zertifikatinformationen für den ELAM-Treiber enthalten sind, muss dieselbe EKU beim Signieren der Binärdateien verwendet werden.

Hinweis

Die Zeichenfolgendarstellung der Windows-Codeintegrität eines Objektbezeichners (Object Identifier, OID) in einer EKU weist eine maximale Länge von 64 Zeichen auf, einschließlich des Endzeichens „\0“.  

Hinweis

Wenn Sie mehrere EKUs angeben, werden sie mit AND-Logik ausgewertet. Das Endentitätszertifikat muss allen EKUs entsprechen, die im ELAM-Ressourcenabschnitt für den jeweiligen Eintrag angegeben sind.

Anzahl

Wenn die Binärdatei des Antischadsoftwarediensts mit dem Authenticode-Zertifikat sowie dem Zertifikat der privaten Zertifizierungsstelle signiert ist, müssen nur die Zertifikatinformationen der privaten Zertifizierungsstelle im Ressourcenabschnitt hinzugefügt werden.

Starten von Antischadsoftwarediensten als geschützter Dienst

Registrieren des Diensts

Der Antischadsoftwaredienst muss im System registriert werden, bevor er im geschützten Modus gestartet werden kann. Während der Installation der Antischadsoftware kann das Installationsprogramm den ELAM-Treiber installieren und das System neu starten, um den Dienst automatisch zu registrieren. Das System registriert den Dienst beim Start, indem er die Zertifikatinformationen aus der oben erwähnten Ressourcendatei extrahiert, die mit dem ELAM-Treiber verknüpft ist.

Es wird dringend empfohlen, das System während der Installationsphase neu zu starten, damit der ELAM-Treiber geladen und der Status des Systems überprüft wird. Für Fälle, in denen ein Neustart vermieden werden muss, macht Windows jedoch auch einen Mechanismus für das Antischadsoftware-Installationsprogramm verfügbar, mit dem der Dienst mithilfe einer API als geschützter Dienst registriert werden kann.

Registrieren des Diensts ohne Neustart des Systems

Während der Installation kann ein Antischadsoftware-Installationsprogramm die InstallELAMCertificateInfo-API aufrufen und einen Handle zur ELAM-Treiberdatei bereitstellen. Das System öffnet den ELAM-Treiber, ruft interne Routinen auf, um sicherzustellen, dass der ELAM-Treiber korrekt signiert ist, und extrahiert die Zertifikatinformationen aus dem Ressourcenabschnitt, der dem ELAM-Treiber zugeordnet ist. Die Funktionssyntax finden Sie unter InstallELAMCertificateInfo.

Codebeispiel:

HANDLE FileHandle = NULL;

FileHandle = CreateFile(<Insert Elam driver file name>,
                        FILE_READ_DATA,
                        FILE_SHARE_READ,
                        NULL,
                        OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL,
                        NULL
                        );

if (InstallElamCertificateInfo(FileHandle) == FALSE)
{
    Result = GetLastError();
    goto exitFunc;
}

Starten des Diensts als geschützter Dienst

Das Installationsprogramm kann die folgenden Schritte ausführen, um den Dienst im geschützten Modus zu erstellen, zu konfigurieren und zu starten:

  1. Rufen Sie die CreateService-API auf, um ein Dienstobjekt zu erstellen und es der Datenbank des Dienststeuerungs-Managers (Service Control Manager, SCM) hinzuzufügen.

  2. Rufen Sie die SetServiceObjectSecurity-API auf, um die Sicherheitsbeschreibung des in Schritt 1 erstellten Dienstobjekts festzulegen.

  3. Rufen Sie die ChangeServiceConfig2-API auf, um den Dienst als geschützten Dienst zu kennzeichnen, und geben Sie den neuen Enumerationswert SERVICE_CONFIG_LAUNCH_PROTECTED an, der in Winsvc.h (ab Windows 8.1) hinzugefügt wurde.

    Codebeispiel:

    SERVICE_LAUNCH_PROTECTED_INFO Info;
    SC_HANDLE hService;
    
    Info.dwLaunchProtected = SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT;
    
    hService = CreateService (/* ... */);
    
    if (ChangeServiceConfig2(hService,
                             SERVICE_CONFIG_LAUNCH_PROTECTED,
                             &Info) == FALSE)
    {
        Result = GetLastError();
    }
    
  4. Rufen Sie die StartService-API auf, um den Dienst zu starten. Beim Starten des Diensts im geschützten Modus überprüft der Dienststeuerungs-Manager das Codeintegritätssubsystem (CI), um die Zertifikatinformationen zu überprüfen. Nachdem die Zertifikatinformationen von der Codeintegrität überprüft wurden, startet der Dienststeuerungs-Manager den Dienst als geschützten Dienst.

    1. Beachten Sie, dass bei diesem Schritt ein Fehler auftritt, wenn Sie den Dienst nicht durch Aufrufen der InstallELAMCertificateInfo-API registriert haben.
    2. Wenn der Dienst so konfiguriert wurde, dass er während der Startphase des Systems automatisch gestartet wird, können Sie diesen Schritt umgehen und einfach das System neu starten. Während eines Neustarts registriert das System den Dienst automatisch (wenn der ELAM-Treiber erfolgreich gestartet wird) und startet den Dienst im geschützten Modus.
    3. Wenn der Dienst nicht gestartet werden kann, sehen Sie sich die Informationen unter Code-Integrität, Ereignisprotokollierung und Systemüberwachung sowie die folgenden Themen an. Dort finden Sie ausführlichere Fehlermeldungen, die erklären, warum das Codeintegritätssystem den Start des Dienstes verhindert hat. Diese Protokolle können Ihnen auch dabei helfen, DLLs zu identifizieren, die der Dienst versucht hat zu laden, aber nicht laden konnte.

Starten eines untergeordneten Prozesses im geschützten Modus

Das neue Sicherheitsmodell ermöglicht es den geschützten Antischadsoftwarediensten auch, untergeordnete Prozesse im geschützten Modus zu starten. Diese untergeordneten Prozesse werden auf derselben Schutzebene wie der übergeordnete Dienst ausgeführt, und ihre Binärdateien müssen mit demselben Zertifikat signiert werden, das über den ELAM-Ressourcenabschnitt registriert wurde.

Damit der geschützte Antischadsoftwaredienst untergeordnete Prozesse im geschützten Modus starten kann, wurde ein neuer erweiterter Attributschlüssel PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL verfügbar gemacht, der mit der UpdateProcThreadAttribute-API verwendet werden muss. Ein Zeiger auf den Attributwert von PROTECTION_LEVEL_SAME muss an die UpdateProcThreadAttribute-API übergeben werden.

Hinweise:

  • Um dieses neue Attribut verwenden zu können, muss der Dienst auch CREATE_PROTECTED_PROCESS im Parameter für die Prozesserstellungsflags des CreateProcess-Aufrufs angeben.
  • Sie müssen die Binärdateien Ihres Diensts mit der Option „/ac“ signieren, um das übergreifende Zertifikat einzuschließen und mit einer bekannten Zertifizierungsstelle zu verketten. Selbstsignierte Zertifikate ohne ordnungsgemäße Verkettung mit einer bekannten Stammzertifizierungsstelle funktionieren nicht.

Codebeispiel:

DWORD ProtectionLevel = PROTECTION_LEVEL_SAME;
SIZE_T AttributeListSize;

STARTUPINFOEXW StartupInfoEx = { 0 };

StartupInfoEx.StartupInfo.cb = sizeof(StartupInfoEx);

if (InitializeProcThreadAttributeList(NULL,
                                      1,
                                      0,
                                      &AttributeListSize) == FALSE)
{
    Result = GetLastError();
    goto exitFunc;
}

StartupInfoEx.lpAttributeList = (LPPROC_THREAD_ATTRIBUTE_LIST) HeapAlloc(
    GetProcessHeap(),
    0,
    AttributeListSize
    );

if (InitializeProcThreadAttributeList(StartupInfoEx.lpAttributeList,
                                      1,
                                      0,
                                      &AttributeListSize) == FALSE)
{
    Result = GetLastError();
    goto exitFunc;
}

if (UpdateProcThreadAttribute(StartupInfoEx.lpAttributeList,
                              0,
                              PROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL,
                              &ProtectionLevel,
                              sizeof(ProtectionLevel),
                              NULL,
                              NULL) == FALSE)
{
    Result = GetLastError();
    goto exitFunc;
}

PROCESS_INFORMATION ProcessInformation = { 0 };

if (CreateProcessW(ApplicationName,
                   CommandLine,
                   ProcessAttributes,
                   ThreadAttributes,
                   InheritHandles,
                   EXTENDED_STARTUPINFO_PRESENT | CREATE_PROTECTED_PROCESS,
                   Environment,
                   CurrentDirectory,
                   (LPSTARTUPINFOW)&StartupInfoEx,
                   &ProcessInformation) == FALSE)
{
    Result = GetLastError();
    goto exitFunc;
}

Updates und Wartung

Nachdem der Antischadsoftwaredienst im geschützten Modus gestartet wurde, können andere ungeschützte Prozesse (und sogar Administratoren) den Dienst nicht beenden. Falls die Binärdateien des Diensts aktualisiert werden, muss der Antischadsoftwaredienst einen Rückruf vom Installationsprogramm erhalten, damit er sich selbst beendet und dann gewartet werden kann. Nachdem der Dienst beendet wurde, kann das Antischadsoftware-Installationsprogramm Upgrades durchführen und anschließend die oben beschriebenen Schritte in den Abschnitten zum Registrieren des Diensts und Starten des Diensts als geschützter Dienst ausführen, um das Zertifikat zu registrieren und den Dienst im geschützten Modus zu starten.

Der Dienst sollte sicherstellen, dass er nur von vertrauenswürdigen Aufrufern beendet werden kann. Wenn nicht vertrauenswürdige Aufrufer den Dienst beenden können, läuft dies dem Zweck des Schutzes des Diensts zuwider.

Aufheben der Registrierung des Diensts

Wenn Sie einen geschützten Dienst deinstallieren, muss sich der Dienst selbst durch Aufrufen der ChangeServiceConfig2-API als ungeschützten Dienst kennzeichnen. Beachten Sie, dass der Aufruf von ChangeServiceConfig2 vom geschützten Dienst selbst vorgenommen werden muss, da das System es ungeschützten Prozessen nicht erlaubt, die Konfiguration eines geschützten Diensts zu ändern. Nachdem der Dienst zur Ausführung als ungeschützter Dienst neu konfiguriert wurde, kann das Deinstallationsprogramm einfach geeignete Schritte ausführen, um die Antischadsoftwaresoftware aus dem System zu entfernen.

Debuggen eines geschützten Antischadsoftwarediensts

Das Sicherheitsmodell für geschützte Prozesse verhindert, dass andere ungeschützte Prozesse Threads einfügen oder in den virtuellen Arbeitsspeicher des geschützten Prozesses schreiben. Zum Debuggen von geschützten Antischadsoftwareprozessen kann jedoch ein Kerneldebugger (KD) verwendet werden. Mit dem Kerneldebugger kann auch überprüft werden, ob der Antischadsoftwaredienst als geschützter Dienst ausgeführt wird:

dt –r1 nt!_EPROCESS <Process Address>
+0x67a Protection       : _PS_PROTECTION
      +0x000 Level            : 0x31 '1'
      +0x000 Type             : 0y0001
      +0x000 Signer           : 0y0011

Wenn der Wert des Type-Elements 0y0001 ist, wird der Dienst im geschützten Modus ausgeführt.

Darüber hinaus sind nur die folgenden sc-Befehle für geschützte Antischadsoftwaredienste zulässig:

  • sc config start=Auto
  • sc qc
  • sc start
  • sc interrogate
  • sc sdshow

Wenn der Debugger angefügt ist, verwenden Sie das folgende Flag in der Registrierung, um den Debugger zu unterbrechen, wenn nicht signierte (oder nicht korrekt signierte) Binärdateien in den geschützten Antischadsoftwaredienst geladen werden.

Key:   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CI
Value: DebugFlags      REG_DWORD

Legen Sie den Wert auf 00000400 fest, um den Debugger zu unterbrechen, wenn die Signaturüberprüfung fehlschlägt.

Hinweis

Einschränkungen für geschützte Prozesse:

  1. Prozesse mit einer Benutzeroberfläche oder grafischen Benutzeroberfläche können aufgrund der Art und Weise, wie der Kernel einen Prozess im Arbeitsspeicher sperrt und Schreibvorgänge untersagt, nicht geschützt werden.
  2. Vor Windows 10, Version 1703 (Creators Update) können geschützte Prozesse die TLS- oder SSL-Kommunikationsprotokolle (Transport Layer Security bzw. Secure Sockets Layer) aufgrund von Einschränkungen der Zertifikatfreigabe zwischen der lokalen Sicherheitsautorität (LSA) und einem geschützten Prozess nicht verwenden.

Ressourcen

Weitere Informationen:

Auf die folgenden Windows-API-Funktionen wird in diesem Artikel verwiesen: