Applocker und SmartScreen

Schade vor die Crypto Trojaner aber auch unerwünschte SpyWare und AdWare wie Beifang SpyWare sind eine latente Gefahr für ihre Netzwerk. Natürlich kann eine Firma versuchen den Download von EXE-Programmen auf dem Proxy zu unterbinden, den Zugang per USB-Stick zu blockieren, DropBox und Co verbieten aber letztlich wird es immer mal wieder einen Weg geben, wie unerwünschte Programme auf einen Computer gelangen und ausgeführt werden könnten. Diese Programme müssten gar nicht mal "Administrator" sein oder eine Lücke im System ausnutzen. Auch ein Anwender kann schon genug Schaden anrichten. Denken Sie an die Verschlüsselung von kompletten Dateibereichen oder die Veränderung von Bandüberweisungen oder den Zugriff auf Personaldaten der Buchhaltung. Aber auch wenn nichts "Schlimmes" passiert ist auch eine Störung des Betriebsablauf.

SmartScreen und Software Restriction Policies

Die normalen "Privatanwender" haben vielleicht schon einmal Kontakt mit der Funktion "SmartScreen" gehabt. Mit der passenden Einstellung "fragt" ihr Windows bei Microsoft nach, ob diese Software "gut" ist. Dies gilt aber meines Wissens nach nur für ausführbare Dateien, die sie über den Internet Explorer herunterladen oder die auf ihrem PC liegen und als Zoneneinstellungen ebenfalls das Internet haben. Der Anwender bzw. Administrator kann SmartScreen nur minimal konfigurieren

SmartScreen soll auch vor schädlichen Webseiten warnen. Die Hoheit obliegt aber Microsoft und ihr Client muss natürlich eine Internetverbindung haben.

Für Server und Netzewerk Clients gibt es seit Windows 2003 schon die "Software Restrictions Policies Overview" (https://technet.microsoft.com/library/hh831534), die von mir hier hier nicht weiter behandelt werden.

Was ist AppLocker?

Für Firmennetzwerke aber auch für individuelle PCs ist AppLocker eine interessante Option, die ebenfalls im Windows Betriebssystem eingebaut ist. Allerdings nicht in jeder Version. Das Betriebssystem kann über Richtlinien angewiesen werden, nur bestimmte Programme in bestimmten Pfaden, von bestimmten Signierern oder mit bestimmten Hashwerten zu starten. Übe solche "Whitelists" ist es quasi möglich, generell die Ausführung von Programmen aus anderen Quelle oder Pfaden auszuführen.

Damit lassen sich dann unterschiedlichste Aufgabenstellungen umsetzen:

  • Schutz gegen "nicht zugelassene" Programme
    In der strengsten Form können sie nur Code auf der Whitelist ausführen lassen.
  • Steuerung der zulässigen Versionen
    So kann verhindert werden, dass jemand vielleicht eine "zu alte" aber auch "zu neue" Version einer Software einsetzt.
  • Kontrolle lizenzpflichtiger Software
    Über eine Policy können Programme nur für bestimmte Benutzerkreise freigegeben werden
  • Erkennen und verhindern "veränderter" Programme
    Wenn ein Schadcode eine bestehen Datei austauscht oder verändert, dann kann Applocker diese blockieren.

Dazu bekommt das Betriebssystem über Gruppenrichtlinien eine Policy, in der als Regeln hinterlegt ist, welche Programme von wem und in welchem Pfad ausgeführt werden dürfen. Diese "Richtlinien können üb er eine Domäne aber auch als lokale Richtlinie konfiguriert werden. Kontrolliert werden können:

  • EXE-Programme
  • MSI,MSP Installer Dateien
  • BAT, CMD, JS, VBS, PS1-Skripte
  • DLLs und OCX-Dateien
  • "Apps" 

Die Dateien müssen nicht zwingend auf einen lokalen Dateipfad liegen. Auch Anlagen an Mails und Programme auf Wechseldatenträgern (USB-Stick) oder Netzwerklaufwerken werden ebenso überwacht. Nicht im Scope sind allerdings Makros in Word, Excel, JavaScript im Browser etc., da diese von diesen Programmen interpretiert und nicht direkt vom Betriebssystem ausgeführt werden.

Die "Erkennung" der fraglichen ausführbaren Bestandteile erfolgt Anhand Herausgeber, Produktname, Dateiname bzw. Dateiversion und können an Benutzer und Sicherheitsgruppen gebunden werden.

Damit Bitlocker aber funktionieren kann, muss der Dienst "AppIDSvc" auf dem Client gestartet sein. Dieser per Default gestoppt.

PS C:\> Get-Service AppIDSvc | fl

Name                : AppIDSvc
DisplayName         : Anwendungsidentität
Status              : Stopped
DependentServices   : {}
ServicesDependedOn  : {RpcSs, CryptSvc, AppID}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
ServiceType         : Win32ShareProcess

Wer also Applocker konfiguriert, sollte über die Gruppenrichtlinie auch sicherstellen, dass dieser Dienst auf "automatisch" steht.

Software Voraussetzungen

Diese Funktion ist aber nicht in allen Windows Versionen enthalten. Es sind neben Servern vor allem die Enterprise oder Ultimate-Versionen.

Windows Version  Verwalten Durchsetzen EXE MSI Script App DLL

Windows 2003, XP, Vista 

Windows 7 Ultimate / Enterprise

Windows 7 Professional

Windows 7 Home

Windows 8 Pro

Windows 8 Enterprise

Windows 8.1

Windows 8/8.1 RT

Windows 10 Enterprise / Education

Windows 10 Pro/Home

Windows Server 2008 Standard, Enterprise, Datacenter

Windows Server 2008 R2 Web Server/Foundation

Windows Server 2008R2 Std/Ent/Datacenter

Windows Server 2012 Std/Datacenter

Windows Server 2012R2 Std/Datacenter

Auch bei Windows 10 haben nur die beiden großen Versionen (Enterprise/Education) die Funktion an Bord.

Ich finde es sehr schade, dass nicht einmal Windows 10 Professional diese an sich nützliche Funktion hat. die Pro-Version kommt schon auch mal bei ambitionierteren Privatanwendern zum Einsatz. Hätte auch Windows 10 Home diese Funktion, dann könnte man sehr einfach viele Desktops schützen. Komisch eigentlich, dass nicht Antivirus-Produkte etwas Vergleichbares bereitstellen.

Applocker Standardregeln

Wenn Sie das erste Mal AppLocker konfigurieren, dann sollte ihnen der Assistent die Einrichtung von "Standard-Regeln" vorschlagen. Der primäre Grund ist dabei wohl, dass Sie sich als Administrator nicht selbst aussperren. Windows trägt dann folgende Regeln ein:

Programmklasse Local Admin "Jeder"

EXE/COM

Überall

im Windows Ordner
im "Program Files" Ordner

Skripts

Überall

im Windows Ordner
im "Program Files" Ordner

MSI

Überall

Nur digital signiert

DLL

Überall

im Windows Ordner
im "Program Files" Ordner

Packaged Apps

Überall 

Installation und Ausführen von allen signierten "Packaged apps" und "Packaged app installers"

Insoweit ist sichergestellt, dass ein Administrator weiterhin unbeschränkt arbeiten kann während alle anderen Benutzer und Dienste ein wenig beschränkt sind. Sie können weiterhin alle Programme ausführen. In der MMC sind diese natürlich auch sichtbar:

 

So ist schon mal sichergestellt, dass sie als Administrator sich nicht selbst aussperren. Für den ein oder anderen Einsatzbereich sind diese Regeln aber auch etwas zu umfangreich. Natürlich sind die Pfade nach "/Windows" und nach "%ProgramFiles%" für normale Anwender nicht beschreibbar, so dass die hier installierten Programme von einem Administrator gekommen sein müssen. Dafür sind ausführbare Programme an anderer Stelle erst einmal untersagt.

Achten Sie beim Testen bitte genau darauf, wer sie sind. Als Administrator haben sie weiterhin "freien Zugang". Nur als Anwender sind sie beschränkt. Ein Anwender, der in der Gruppe der lokalen Administratoren ist aber  per "Account Control (UAC)" nur bei Bedarf administrative Rechte bekommt, ist aus Sicht von AppLocker ein Administrator.

Denken sie auch an ihre Entwickler, die selbst z.B. EXE-Dateien als Teil ihrer Arbeit erstellen. Ideal wäre hier, wenn der Entwickler beim Build-Prozess natürlich das EXE gleich signiert, damit Sie dann diese Dateien zulassen.

Achtung:
Die Standard Regeln schützen nicht davor, dass etwas ein erlaubtes Programm verhindert, da Sie den kompletten Pfad frei geben. Ein System ist umso sicherer, je detaillierter Sie die Programme spezifizieren lassen.

AppLocker lokal

Ehe Sie nun gleich auf ihre Domäne losgehen, sollten Sie als lokaler Administrator erst einmal mit einer lokalen Richtlinie beginnen. Hier können Sie quasi alles konfigurieren und testen. Die Auswirkungen sind aber auf ihr System beschränkt. Über die MMC für "Lokale Sicherheitsrichtlinien" starten Sie die Konfiguration von AppLocker.

 

Zuallererst rate ich ihnen aber dazu, die Standard-Regel zu erstellen, wie ich sie weiter oben beschrieben habe. Der Assistent fragt sie einmal danach. Sie können dies aber auch im Eigenschaftsmenü immer wieder aktivieren. Der nächste Schritt ist, dass Sie alle Programme zusätzlich klassifizieren, die noch "erlaubt" sein sollen. Sie können die Einträge alle manuell vornehmen, um ein "hochsicheres System" zu erhalten oder die aktuell installierten Programme erfassen lassen:

 

Ein Assistenz erfragt noch zwei weitere Fenster 

 

Der Abschlussbericht zeigt die gefundenen und inventarisierten Dateien und erlaubt ihnen die Anzeige der Dateien und der Regeln.

In der Ansicht können die einzelne Dateien auch abwählen, so dass im nächsten Schritt hierfür keine Regeln erstellt werden. Zum Test habe ich hier einfach eine Datei ausgenommen und erwarte dann, dass ich diese nach der Aktivierung nicht mehr starten kann. Wobei ich hier dran denken muss, dass es eine "Default Regel" gibt, die "Jeder" das Recht gibt, alles in "Programme" zu starten. Die muss ich also wegnehmen.

 

Die Liste der Programme kann schon etwas länger werden. Hier nur ein Auszug

.

Achtung
Wenn Sie mehrere Festplatten haben und Programme auch auf anderen Pfaden installiert sind, dann müssen sie diese auch erfassen.

Sie können natürlich manuell auch "Verweigern"-Regel erstellen, um einzelne Dateien für bestimmte Personen zu sperren und ín jeder Regel können Sie wieder Ausnahmen definieren. Am besten wählen Sie die Dateien und Pfade über die Dialoge aus. So ist "%PROGRAMFILES%\WINHTTRACK\WINHTTRACK.EXE" und "C:\Program Files\WinHTTrack\WinHTTrack.exe" nicht das gleiche.

Dann müssen Sie die Liste noch aktivieren. Das geht auf den Eigenschaften von Applocker. Sie können die Regeln gleich erzwingen oder erst mal nur "Überwachen"

 

Zuletzt müssen Sie natürlich den Dienst dazu auf "Automatisch" stellen und starten

Nach dem Start des Dienstes und der Übernahme der Einstellungen wird der Start blockiert.

 

Das ganze funktioniert natürlich auch auf der CMD-Ebene oder hier der PowerShell.

Damit habe ich mein Ziel erreicht, über AppLocker den Start von Code besser zu kontrollieren.

Gerade im Hinblick auf "Privat-PCs" ist das ein sehr pfiffiges Hilfsmittel, um den Start von jeder Art von fremden nicht autorisierten Programmen zu verhindern. Eigentlich schade, dass diese Funktion nicht alle Windows Versionen vorweisen.

Überwachen im Eventlog

Alle Aktivitäten rund um AppLocker landen in einem eigenen Eventlog "Applications and Services Logs\Microsoft\Windows\AppLocker"

Folgende Meldungen habe ich bislang gefunden. Die Quelle ist immer "AppLocker"

EventID  Typ Inhalt 

8001

Info 

Die AppLocker-Richtlinie wurde erfolgreich auf diesen Computer angewendet.

8002 

Info 

Die Ausführung von %PROGRAMFILES%\test\test.EXE wurde zugelassen.

8003 

Warnuung

Die Ausführung von %PROGRAMFILES%\test\test.EXE wurde zugelassen, wäre jedoch verhindert worden, wenn die AppLocker-Richtlinie erzwungen worden wäre.

8004 

Fehler 

Die Ausführung von %PROGRAMFILES%\WINHTTRACK\WINHTTRACK.EXE wurde verhindert.

Diese Events stammen von einem Windows 7 Enterprise Client. Windows 8 und neuer dürften mehr Informationen veröffentlichen.

Auf der einen Seite ist es natürlich von Vorteil, so ein ausführliches Log zu erhalten. Auf der anderen Seite muss aber auch der Datenschutz beachtet werden. So kann natürlich auch genau protokolliert und überwacht werden, wann welches Programm aufgerufen wird. Zusammen mit der Information über den angemeldeten Benutzer ist hier besondere Sorgfalt erforderlich.

Sie können diese Informationen natürlich auch aktiv für ein Monitoring von Programmen und Lizenzen einsetzen oder "unbekannte Programme" erkennen. Wie oft werden Programme auf PCs gar nicht mehr verwendet. Wer also diese Eventlogs von vielen PCs konsolidiert, kann für den Betrieb nützliche Daten.

Applocker im Netzwerk

Nachdem Sie entsprechende Erfahrungen mit AppLocker auf einige Pilot-Computer gesammelt haben, können Sie an eine Umsetzung für ihre Netzwerk gehen. Das ist allerdings etwas aufwändiger, weil sie ja quasi von allen PCs alle Programme in allen Versionen ermitteln müssen. Wer schon länger mit vielen Clients zu tun hat, der weiß um das Problem einer homogenen Umgebung. Hier gibt es dann mehrere denkbare Ansätze:

  • Pauschal Pfade freigeben
    Schon mit den Standard Regel können Sie quasi %windir%% und %ProgramFiles% freigeben und so auf einen Schlag verhindern, dass normale Anwender Programme aus anderen Verzeichnissen starten. In vielen Fällen ist das relativ schnell umgesetzt aber nicht ganz risikofrei.
  • Inventory und Compile
    Ein anderer Ansatz ist natürlich erst einmal alle Programme per Inventory einzusammeln. Das kann per SCCM oder mit anderen Tools erfolgen, die den "Inventory-Lauf" auf dem Client anstoßen. Dann können Sie die aktuellen Regeln als XML-Datei exportieren und zusammenführen, um daraus dann eine Policy für alle Clients zu machen.

Oft wird es auch eine Mischform, dass bestimmte Pfade generell zugelassen werden, da ein Benutzer dort sowieso nichts schreiben darf und nur abweichende Pfade erlaubt werden. Am Ende haben Sie eine oder mehrere Richtlinien, die auf die Clients angewendet werden. Die Richtlinie muss natürlich auch den Dienst "AppIDSvc" auf automatisch stellen und vorgeben, wie die Richtlinien angewendet werden sollen. Auch bei der Anwendung haben Sie zwei Optionen:

  • Überwachen
    Damit sollten Sie zuerst einmal starten. Nachdem Sie ihre Richtlinie aktiviert haben, sollten Sie von allen Clients einfach die Events 8003 einsammeln, die genau berichten, welche Programme blockiert worden wären. Wenn Sie eine Softwareverteilung haben, dann können Sie nach ein paar Tagen oder Wochen z.B. ein Paket schnüren, welches auf allen Clients das Eventlog durchsucht und die Dateien meldet.
  • Durchsetzen
    Programme,. die nicht erlaubt sind, können von Anwender nicht mehr gestartet werden. Wenn Sie nicht selbst aktiv die Eventlogs auf die 8004-Events überwachen, dann läuft die Rückmeldung über ein Ticket. Temporär kann ein lokaler Admin die Datei frei geben.

Es ist also mit entsprechender Planung und Vorbereitung sehr schnell möglich, auch in einer Firma viele PCs mit "AppLocker" besser gegen Fehlbedienungen und Missbrauch zu schützen. Dies gilt insbesondere für Trojaner, SpyWare, AdWare etc., die als ausführbare Programme oder Skript mit kommen. Allerdings kommt auf den Administrator schon ein bisschen Aufwand zu, wenn neue Versionen einer Software installiert werden, deren Herausgeber sich geändert hat.

Auch eigene "Management-Skripte", die z.B. als Benutzer als Teil des Anmeldeskripts laufen, müssen entsprechend "erlaubt" werden oder gleich mit einer digitalen Signatur versehen werden.

Kommen Sie doch einfach auf mich zu, wenn Sie zu diesem Thema Fragen oder Anregungen haben oder konkret eine Unterstützung bei der Umsetzung benötigen.

Applocker Powershell

Natürlich lassen sich viele Einstellungen von AppLocker auch per PowerShell durchführen. Schon mit Windows 7 gibt es ein AppLocker-Modul, auch wenn die Beschreibung in der TechNet dazu nicht immer passt.

PS C:\> Get-Command -Module applocker

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Cmdlet          Get-AppLockerFileInformation                       AppLocker
Cmdlet          Get-AppLockerPolicy                                AppLocker
Cmdlet          New-AppLockerPolicy                                AppLocker
Cmdlet          Set-AppLockerPolicy                                AppLocker
Cmdlet          Test-AppLockerPolicy                               AppLocker

Erst mit Windows 8 und neuer sind die Commandlets noch einmal erweitert worden, so dass neue Parameter genutzt werden können. So kann ein Administrator anhand der Meldung im Eventlog die Regeln für die Policy erstellen lassen. Auch können per Powershell z.B. lokal auf einem Computer angelegte Regeln in eine Domänenpolicy importiert werden.

Auch als Methode für ein "Backup/Restore" ist die Powershell prädestiniert-.

Weitere Links