Der Waldmeister

Einblicke in (Security)-Themen ausm tiefen Wald

Benachrichtigung über neue Version von Google Chrome Enterprise

Auch wenn das Thema off-topic hier erscheint. Es gibt noch zahlreiche Nutzer, die bewusst die automatische Aktualisierung von Google Chrome (Enterprise) bewusst deaktiviert haben. Um beispielsweise mittels Test-Pilot-Gruppen die vorhandenen Applikationen, die den Chrome nutzen, auf mögliche Probleme zu testen.

Natürlich gibt es mittlerweile auch Google Chrome GPO Templates, um hier das Patchmanagement anzugehen. Um hier aber einfach nur herauszufinden, ob es eine neue Version gibt, um den Pilotgruppen eine neue Version zur Verfügung zu stellen, steht man dann recht schnell vor einem Problem.

Denn es gibt keinen RSS-Feed oder sonstige APIs, um ein Update mitzubekommen. Sicherlich findet man einen Feed wie diesen hier (Link). Aber im Fließtext automatisiert nach neuen Versionen zu scannen, macht keinen Spass.

Auch alle Fragen bei stackoverflow und Co. geben einem keinen Hinweis auf eine Möglichkeit (Beispiel , Beispiel)

Wer länger gräbt, kommt dann zu einer Seite, die genau diese Problem angeht und löst. Die jeweils aktuelle Version ist als Text-String abrufbar (wget, curl, etc.) in Verbindung mit einem kleinen Script könnte es also problemlos ermittelt werden, ob es eine neue Version gibt.

Schaut daher einfach selbst einmal rein unter: Google Chrome Enterprise New Version Notification

Folgende Optionen werden angeboten:

  • Aktuelle/Neueste Version als String: Latest
  • Letzte Version davor als String: Last
  • Alle Versionen als Historie abgebildet in Form eines JSON-Objektes: JSON

Windows – Suche in Dateien mit Ausgabe aller Treffer (mittels PowerShell)

Oft steht man vor dem Problem, dass man einen großen Logfile hat und nach einem Stichwort in der Datei suchen will. Bedient man sich des Windows Explorers und sucht mittels der Suchmaske, so ist die Ausgabe der Treffer nicht wirklich hilfreich. Hier hilft PowerShell ungemein. Man sucht in einer Datei nach einem Stichwort und erhält alle Treffer mit Zeilenangaben etc.

Und das geht wie folgt:

Select-String -Path .\datei.log -Pattern 'Stichwort' > Ausgabe.txt

Anstelle einer Datei kann man natürlich auch mit Wildcards arbeiten. Mit dem „>“ Zeichen wird die Ausgabe der Suche direkt in eine andere Datei „ge-pipt“.

Absender in Exchange Shared Mailbox blockieren mittels PowerShell

Wer regelmäßig mit dem Outlook Client arbeitet und eine Exchange Mailbox dabei eingebunden hat, wird irgendwann auch mal mit einer Besonderheit konfrontiert werden.

Denn wenn man eine weitere Mailbox einbindet (beispielsweise für einen Vorgesetzten, also die Berechtigung „send on behalf“, „Senden im Namen von“) erhält, so wird man sich wundern, dass man keine Junk-Mail Konfigurationen für diese Mailbox vornehmen kann/darf.

Will man also beispielsweise Absender blockieren, so kann man dies zwar im Outlook Client mittels GUI vornehmen, dies gilt jedoch immer nur für die eigene Mailbox. Eine Pflege von gesperrten Absendern für eine „verwaltete“ Mailbox geht nicht mehr über die GUI, sondern nur über zwei Wege: OWA (Outlook Web Exchange) oder PowerShell. Ich bevorzuge PowerShell. Und das geht dann recht komfortabel mit folgendem Befehl:

Connect-ExchangeOnline

Set-MailboxJunkEmailConfiguration "a.paradise@excample.com" -BlockedSendersAndDomains @{Add="spammer@bigpain.com"}

Natürlich kann man auch vertrauenswürdige Absender hinterlegen. Dazu tauscht man nur den Parameter aus, wie folgt:

Set-MailboxJunkEmailConfiguration "a.paradise@excample.com" -TrustedSendersAndDomains @{Add=“nopain.com“,“nice@nopain.com“}

Sicherer Austausch von Passwörtern

Wie tauscht man auf sicherem Wege die Passwörter aus? Das Thema ist vermutlich älter als die Geschichte und Bau der Pyramiden. Aber ehrlicherweise muss man zugeben, dass es oft nur sehr komplexe Lösungen gibt, um das sicher gewährleisten zu können. Vor allem wenn es um komplexe Passwörter geht.

Wir nähern uns mal vorsichtig dem Thema.

Man verschlüsselt Informationen und nutzt dazu symmetrische Verfahren, so dass die Verschlüsselung und Entschlüsselung mit dem gleichen Passwort erfolgt.

Sicherlich kann man auch Verfahren wie RSA (asymmetrisch) nutzen, aber Tante Berta von nebenan wird damit nicht usability-technisch abgeholt werden.

Somit braucht man dann „nur“ noch den Austausch des geheimen Schlüssels vorzunehmen, auch neudeutsch Passwort genannt. Hier gibt es dann die typischen Verfahren wie „erste Mail das verschlüsselte Element, zweite Mail den Schlüssel“. Natürlich ist das maximal unsicher, da die gleichen Kanäle verwendet werden. Also macht man eine Teilung. Ein Kanal (Mail) das verschlüsselte Element, und auf dem zweiten Kanal dann den Schlüssel.

Und da wären wir auch schon. Nutzt man jetzt hier einen Messenger wie WhatsApp, Teams, SMS, etc., so ist es zwar ein zweiter Kanal, aber „wer schreibt, der bleibt“. Will heißen: bei einer Kompromittierung wäre auch der Messenger betroffen. Also wirkliche Sicherheit ist es somit nicht.

Nun könnte man ja Tools nehmen wie „Password Pusher“ (Link). Per „one link one click“ erhält man dann das Passwort nach dem Motto „burn after reading“. Ist zwar sicher, aber irgendwo nicht soo komfortabel. Denn man muss ja wiederum ein System vorhalten und das Passwort reinkopieren, Link erzeugen und dann wieder per Mail verschicken. Kostet Zeit und ist nicht fehlerfrei.

Bleibt also nur das persönliche Gespräch per Telefon (von mir aus auch Teams oder WhatsApp). Um jetzt aber hier nicht das Passwort buchstabieren zu müssen (Krise!), vor allem bei langen und komplexen Passwörtern, wäre es doch eine tolle Idee eine gemeinsame Plattform für so etwas zu haben. Sprich: beide Besucher sehen die gleiche Seite und wählen gemeinsam per Telefon das gleiche Passwort aus.

Und sowas gibt es hier: Agree on password

Jede Stunde aktualisiert sich die Seite automatisch und man kann gemeinsam per Telefongespräch auf die Seite gehen und vereinbaren welches der 24 dort angezeigten Passwörter man verwendet.

In meinen Augen eine coole und schnelle Lösung. Da es keinerlei Registrierung bedarf, ist man anonym und kann komfortabel sichere Passwörtern austauschen.

Suche und Vergleich von AD-Gruppenzugehörigkeiten und Nicht-Zugehörigkeiten

Oftmals hangelt man sich durch AD-Gruppen, um herauszufinden ob Einträge dort enthalten sind. Dabei kommt man immer wieder an seine Grenzen, wenn es darum geht, die Zugehörigkeiten zu einer Active Directory Gruppe ausschließen. Also zu prüfen, ob jemand in einer Gruppe explizit nicht enthalten ist.

Hierzu kann man sich mittels Powershell auch Listen bedienen, die in Programmiersprachen dann als Arrays verfügbar sind. Hier ist das Stichwort „hashmap“.

Als erste Maßnahme sollte man sich mit dem jeweiligen AD verbinden, wenn es AzureAD, bzw. jetzt EntraID, heißt:

Connect-AzureAD

Dann sucht man sich die AD-Gruppen IDs raus, die man prüfen will, bzw. definiert sie:

$groupids = @("Gruppen ID 1", "Gruppen ID 2") 

Nun definiert man seine Hash Map:

$userht = @{}

Und ruft dann alle Benutzer ab und pipet das Ergebnis dann an eine foreach-Schleife, die alle IDs der Benutzer in die Hash Map kippt:

Get-AzureADUser -all $true | foreach-object {$userht.Add($_.ObjectId,$_)}

Mit dem Zwischenschritt eines Counts sieht man die gesamte Anzahl wie folgt:

$userht.count

Nun geht man die Gruppen IDs einzeln durch und holt sich alle Benutzer, die in diesen Gruppen enthalten sind, und löscht einzeln mittels foreach die Benutzer aus der Hash Map raus.

ForEach($id in  $groupids){ 

Get-AzureADGroupMember -all $true -ObjectId $id | foreach-object { $userht.Remove($_.ObjectId) }

}

$userht.count

$userht.values > C:\temp\export.csv

Ergebnis sind dann alle Benutzer aus der ursprünglichen Abfrage minus der Mitglieder in den Vergleichsgruppen. Übrig sind also alle Einträge, die nicht in den Vergleichsgruppen enthalten sind.

Freischaltung von authentifiziertem SMTP in Microsoft Exchange für einzelne Mailboxen

Wer auf Microsoft Exchange setzt, der nutzt in der Regel die Clients wie Outlook, um ein- und ausgehende Mails zu verarbeiten. Es gibt aber auch durchaus Dienste oder Anwendungen, die gerne Mails verschicken würden, aber nur die offenen Protokolle wie SMTP (Auth) sprechen. Dann steht man vor dem Dilemma, dass man das Protokoll freischalten will/muss, aber dies nicht für die gesamte Domäne/Tenant machen möchte.

Hier hilft die Möglichkeit das Protokoll auf Mailbox-Ebene zu setzen, denn das ist möglich. Aber: wer jetzt glaubt mit logischem Denken ins Exchange Admin Center Portal zu navigieren und dort die Option zu finden, der wird erstaunt sein, denn dort gibt es diese Option nicht:

Hier muss man in das Admin Center von Microsoft 365 direkt gehen (Bereich Active Users), dort findet sich die gleiche Möglichkeit zur Einstellung, allerdings diesmal mit der zusätzlichen Option „Authenticated SMTP“:

Zugänge mit Passwörtern auslesen

Auf der CMD Konsole lassen sich mit dem Befehl CMDKEY alle unter Windows gespeicherten Zugänge und Kennwörter auslesen.

Folgendes Beispiel verdeutlicht dies:

cmdkey /list | Select-String 'Target: TERMSRV' | ForEach-Object { cmdkey /delete:($_ -split ' ')[-1] }

Hiermit werden alle Zugänge gelöscht, die dem Kriterium TERMSRV entsprechen.

Zum Probieren einfach einmal den Befehl

cmdkey /list

alleine ausführen.

Microsoft Viva Dienste wie Insights, Learning oder Digest für alle Benutzer abschalten

Man ist es ja mittlerweile gewohnt, dass neue Dienste aus dem Hause MS direkt angeschaltet werden, also ohne Opt-In. Das führt dann meist zu Verdruss bei Nutzern, die wiederum ihren Frust dann an der IT Abteilung auslassen 😉

Wenn beispielsweise jemand in Outlook auf eine E-Mail einen Like abgibt (ja irgendwo ist das möglich), dann erhält man später als Absender der besagten E-Mail eine E-Mail von Microsoft mit dem Subject „Täglicher Reaktionsdigest“. Diese Art der Benachrichtigung lässt sich nur per Benutzer einzeln abschalten. Oder halt mittels PowerShell wie folgt:

Set-MyAnalyticsFeatureConfig –Identity john@example.org -PrivacyMode opt-out

Um dies für alle Benutzer in Form einer Schleife (ForEach Loop) umzusetzen, schreibt man Folgendes:

Get-Mailbox -ResultSize Unlimited | ForEach-Object {
Set-MyAnalyticsFeatureConfig -Identity $_.PrimarySmtpAddress -Feature digest-email -IsEnabled $false
}

Abgelaufene AD-Konten in Entra ID

Wer ein on-premise AD betreibt, das in die Cloud synct, also sich mit dem (früheren AzureAD) Entra ID verschmelzt, der sollte tunlichst darauf achten, dass abgelaufene Konten aus dem on-premise AD dann plötzlich wieder nutzbar sind im Entra ID.

Dieser Zusammenhang besteht, wenn das Attribut expiration-date gefüllt ist, aber der Account weiterhin auf „enabled“ steht. Da es im Entra ID kein expiration-date gibt, werden also bei einem Sync-Vorgang geglaubte deaktivierte Konten „plötzlich“ wieder aktiv.

Um hier eine Lösung zu finden, sollten per PowerShell alle Konten, die ein Ablaufdatum (expiration-date) in der Vergangenheit haben, tunlichst deaktiviert werden. Das geht wie folgt:

Search-ADAccount -AccountExpired -UsersOnly

Hiermit kann man sich die abgelaufenen Konten heraussuchen und manuell prüfen, ob diese weiterhin auf „enabled“ stehen.

Ist man sich sicher, dass all diese Account auch deaktiviert werden können/sollten, dann pipt man das Ergebnis an den Befehl disable-adaccount, wie folgt:

Search-ADAccount -AccountExpired -UsersOnly | Disable-ADAccount

Man kann natürlich noch tiefergehend graben, indem man folgende Suche verwendet:

Get-ADUser -Filter {Enabled -eq $true} -properties AccountExpirationDate | Where-Object{$_.AccountExpirationDate -lt (Get-Date) -and $_.AccountExpirationDate -ne $null} | select-object SamAccountName, AccountExpirationDate

Auch hier kann man sich dann mittels Piping das Disablen hinten dran hängen.

Suche in Dateien nach Inhalten

Bevor man den Windows-Explorer anschmeißt um Dateien und dessen Inhalte zu suchen, ist man mittels PowerShell hier eventuell viel schneller unterwegs. Dazu bedient man sich des folgenden Befehls:

Select-String -Path C:\Users\*\Documents\*.txt -Pattern 'suchwort' -CaseSensitive

Vorteil dieser Methode ist, dass man hier gezielt mit Platzhaltern agieren kann, wie folgt:

  • Pfadangaben, auch mit Wildcards zwischendrin
  • Prüfung auf Groß- und Kleinschreibung falls gewünscht

Seite 1 von 5

Präsentiert von WordPress & Theme erstellt von Anders Norén