{"id":54229,"date":"2024-11-05T09:00:00","date_gmt":"2024-11-05T08:00:00","guid":{"rendered":"https:\/\/www.secuinfra.com\/?p=54229"},"modified":"2025-03-24T15:39:49","modified_gmt":"2025-03-24T14:39:49","slug":"wenn-der-portscan-legitim-ist-lessons-learned-aus-keinem-incident","status":"publish","type":"post","link":"https:\/\/www.secuinfra.com\/de\/techtalk\/wenn-der-portscan-legitim-ist-lessons-learned-aus-keinem-incident\/","title":{"rendered":"Wenn der Portscan legitim ist: Lesson-Learned aus (k)einem Incident"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Sobald man als Incident Responder ein Erstgespr\u00e4ch mit einem Kunden f\u00fchrt, entwickelt man bereits (unbewusst) Theorien, wie der geschilderte Fall zustande gekommen sein k\u00f6nnte und was noch alles passieren kann. Ab und zu bekommt man jedoch einen Fall geschildert, bei dem man das Gef\u00fchl nicht loswird, dass es sich dabei nicht um einen Incident handelt, sondern um irgendein harmloses IT-Problem. Diesen Fall hatten wir neulich wieder. Die Ausgangssituation war, dass mehrere Portscans durch das NDR erkannt wurden und die firmeninternen Security Analysten Unterst\u00fctzung ben\u00f6tigten. Die Portscans waren hier auch gegen Clients gerichtet und haben immer die gleichen Ports gescannt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zu diesem Zeitpunkt wurde bereits vermutet, dass es sich hierbei nicht um einen Incident handelt, da a) Clients gescannt werden und b) die Anzahl der scannenden Ger\u00e4te sehr hoch ist. Ein Angreifer w\u00fcrde vermutlich eher Server scannen und die Anzahl der Ger\u00e4te vielleicht etwas geringer halten, um nicht erkannt zu werden. Trotzdem muss man nat\u00fcrlich in alle Richtungen analysieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Da wir durch das NDR nur einen Timestmap, das Quellsystem und die gescannten IPs\/Ports zur Verf\u00fcgung hatten, entschieden wir uns, das betroffene System, welches einen Portscan durchgef\u00fchrt hat, forensisch zu analysieren, um herauszufinden, was den Portscan verursacht hat und ob es b\u00f6sartig war. Da wir \u00fcber einen Timestamp des Portscans verf\u00fcgten, konnten wir die initiale Triage auf einen kurzen Zeitraum eingrenzen und nichts Verd\u00e4chtiges entdecken, au\u00dfer dass viele verschiedene PowerShell-Skripte ausgef\u00fchrt wurden, was im <strong>Windows-Powershell<\/strong> und <strong>Microsoft-Windows-PowerShell Operational<\/strong> Eventlog protokolliert wurde. Bei n\u00e4herer Betrachtung stellte sich heraus, dass diese PowerShell-Skripte Teil des Defender Advanced Threat Protection (ATP) sind. Da wir einen gro\u00dfen Kreis von Defender Experten haben, wussten wir auch, dass der Defender ein Device Discovery Feature hat, das durch diese PowerShell Skripte ausgef\u00fchrt wird. Bei der Device Discovery scannen die Systeme, die bereits mit dem Defender ausgestattet sind, das Netzwerk, um weitere Systeme zu finden und zu inventarisieren (mehr dazu hier https:\/\/learn.microsoft.com\/en-us\/defender-endpoint\/device-discovery-faq?view=o365-worldwide).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nach kurzer Recherche stie\u00dfen wir auf diesen wunderbaren <a  href=\"https:\/\/dfir.ch\/posts\/today_i_learned_device_discovery\/\"  target=\"_blank\" rel=\"noreferrer noopener\" dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >Blog-Post von Stephan Berger<\/a>, der das von uns vermutete Verhalten beschreibt. Das macht die Analyse nat\u00fcrlich viel einfacher.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im <strong>Windows-PowerShell.evtx<\/strong> Eventlog, haben wir folgenden Eintrag gefunden, welcher zeitlich mit dem Timestamp aus dem NDR Alarm \u00fcbereinstimmt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -File C:\\ProgramData\\Microsoft\\Windows Defender Advanced Threat Protection\\Downloads\\PSScript_{06C1AA36-99E0-48A8-BEBD-B908CFC3DDA1}.ps1 -ParamsAsBase64 &lt;BASE64 BLOB&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Hier wurde das PowerShell Skript <strong>PSScript_{06C1AA36-99E0-48A8-BEBD-B908CFC3DDA1}.ps1<\/strong> ausgef\u00fchrt und dabei ein Base64 kodierter String als Parameter \u00fcbergeben. Dekodiert man den Base64 String, so erh\u00e4lt man folgende Daten:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n{\n    \"ScannerArgs\":{\n\t\t\"IpsToScan\": \"&lt;Komma seperierte Liste an IPs die gescannt werden&gt;\",\n\t    \"Guid\":&lt;GUID&gt;\",\n\t    \"MachineId\": \"&lt;ID der lokalen Maschine&gt;\",\n\t    \"MachineConnections\":&#91;{\n\t\t    \"DefaultGatewayMac\":\"&lt;DEFAULT GATEWAY MAC&gt;\",\n\t\t    \"AdapterId\":\"{&lt;ADAPTER ID&gt;}\",\n\t\t    \"NetworkNames\":&#91;\"&lt;DOM\u00c4NE&gt;\"]}],\n\t    \"ScannedDeviceId\":\"48c8ffda910f3fff818ceb1bb98f744d166185e5\",\n\t    \"ExpirationDateTime\":\"2024-10-12T10:40:36.7794801Z\",\n\t    \"CvesToScan\\\":&#91;],\n\t    \"TargetMacs\":\"&lt;MAC Adressen&gt;\",\n\t\t\"DeviceIdsToScan\":\"&lt;Komma seperierter List an DeviceIDs die gescannt werden&gt;\"\n\t    }\",\n    \"Cert\":  \"&lt;CERTIFICATE&gt;\",\n    \"InterfaceIndex\":  \"24\",\n    \"SHA256Signature\":  \"&lt;SHA256 Pr\u00fcfsumme des Zertifikates&gt;\n}\n\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Die IPv4 Adressen aus dem Feld <strong>IpsToScan<\/strong> &nbsp;waren die IPs, die gescannt wurden. Dies wurde mit den Daten aus dem NDR abgeglichen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das eigentliche PowerShell Scipt wurde hierbei auch kurz analysiert. <a  href=\"https:\/\/github.com\/Mr-Un1k0d3r\/ATP-PowerShell-Scripts\"  target=\"_blank\" rel=\"noreferrer noopener\" dpc-external=\"true\"  target=\"_blank\"  rel=\"nofollow\" >Weitere Defender ATP Skripte<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sollte man nun selber die Situation haben, dass Portscan erkannt werden und man grade den Defender ausrollt, so empfehle ich folgende Schritte um sicherzustellen, dass der Portscan von Defender ausgef\u00fchrt wurde.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lesson-Learned<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Machmal hat das Bauchgef\u00fchl Recht und nicht alles, was nach einem Angreifer aussieht, ist auch von einem Angreifer. Das Verhalten hatte legitime Gr\u00fcnde, die sich im Nachhinein best\u00e4tigt haben. Daher ist die Lesson-Learned, dass w\u00e4hrend des Rollouts des Defenders auch die Device Discovery aktiv ist und dies beachtet werden muss, wenn andere Sicherheitstools parallel laufen. Alternativ kann man auch sagen, dass die Features der verwendeten Tools bekannt seien sollten, um solche Ereignisse nicht als Verd\u00e4chtiig zu klassifizieren, aber wer kennt schon alle Features?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sobald man als Incident Responder ein Erstgespr\u00e4ch mit einem Kunden f\u00fchrt, entwickelt man bereits (unbewusst) Theorien, wie der geschilderte Fall zustande gekommen ist und was noch alles passieren kann. Ab und zu bekommt man jedoch einen Fall geschildert, bei dem man das Gef\u00fchl nicht loswird, dass es sich dabei nicht um einen Incident handelt, sondern um irgendein harmloses IT-Problem. <\/p>\n","protected":false},"author":10,"featured_media":54235,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[80,66],"tags":[],"dpc_coauthors":[],"class_list":["post-54229","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-incident-response","category-techtalk"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/posts\/54229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/comments?post=54229"}],"version-history":[{"count":0,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/posts\/54229\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/media\/54235"}],"wp:attachment":[{"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/media?parent=54229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/categories?post=54229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/tags?post=54229"},{"taxonomy":"dpc_coauthors","embeddable":true,"href":"https:\/\/www.secuinfra.com\/de\/wp-json\/wp\/v2\/dpc_coauthors?post=54229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}