Jump to content

Powershell Befehl 2x täglich Script.ps1


Recommended Posts

Hallo!

Im Zusammenhang mit der Exchange-Katastrophe forscht man ja tiefer.

Dabei fiel mir in der Ereignisanzeige auf, dass hin und wieder Powershell gestartet wurde.

EventLog:

Der Anbieter "Registry" ist Started. 

Details: 
	ProviderName=Registry
	NewProviderState=Started

	SequenceNumber=1

	HostName=ConsoleHost
	HostVersion=5.1.14393.3866
	HostId=76d14a53-5841-4ccd-a07a-df1836051da0
	HostApplication=C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive -NoLogo -File C:\Windows\TEMP\xfow3wj4.55h\script.ps1
	EngineVersion=
	RunspaceId=
	PipelineId=
	CommandName=
	CommandType=
	ScriptName=
	CommandPath=
	CommandLine=

Da sind mehrere Einträge. Erst Anbieter Registry, dann Alias, dann Invironment, dann FileSystem, dann Function, dann Variable und dann "Der Modulzustand wurde von None in Available geändert."

Natürlich war die nicht mehr zu finden, so dass ich den Ordner überwachen lassen habe und sämtliche Dateien bei Erstellung in einen Ordner kopiert werden.

 

In der script.ps1 steht dann:

$ErrorActionPreference = 'Stop'; Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; @(@(Get-MailboxDatabase | ?{$_.Server.ToString() -eq 'DC'}) | %{Get-Mailbox -Database $_ -ResultSize Unlimited -RecipientTypeDetails UserMailbox,LinkedMailbox,SharedMailbox,RoomMailbox,EquipmentMailbox}).Count

ein anderes mal stand in einer anderen script.ps1:

$ErrorActionPreference = 'Stop'; Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010; Set-StrictMode -Version Latest

if ($args.Length -ne 2)
{
	throw "Output file paths expected as a script arguments."
}

$outputFilePath = $args[0]
$skippedFoldersFilePath = $args[1]

$DeleteAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::DeleteAllItems
$EditAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::EditAllItems
$ReadAllRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::ReadItems
$FolderVisibleRight = [int][Microsoft.Exchange.Management.StoreTasks.MailboxFolderMemberRights]::FolderVisible

$RequiredRights = $DeleteAllRight -bor $EditAllRight -bor $ReadAllRight -bor $FolderVisibleRight

# Ð”Ð»Ñ Ð½ÐµÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ… паблик фолдеров вызов FindItems иногда приводит к иÑключению:
# "The specified object was not found in the store".
# Причем, например, еÑли положить в такой фолдер поÑÑ‚ и удалить его, то ошибка иÑчезает.
# Иногда (но не вÑегда) Ñ‚Ð°ÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° возникает Ð´Ð»Ñ ÐºÐ¾Ñ€Ð½ÐµÐ²Ð¾Ð³Ð¾ фолдера IPM_SUBTREE.

# ЕдинÑтвенное предположение, что EWS в завиÑимоÑти от каких-то уÑловий Ð´Ð»Ñ Ð¿ÑƒÑтого фолдера 
# в ответ на FindItems может вернуть либо пуÑтую коллекцию Ñлементов, либо приведенную выше ошибку.
# ПоÑтому иÑключаем из ÑÐºÐ°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿ÑƒÑтые каталоги.
function IsNotEmpty($publicFolder)
{
	$anyPublicFolderItemsExist = $(Get-PublicFolderStatistics $publicFolder).ItemCount -ne 0
	if (! $anyPublicFolderItemsExist)
	{
		AppendEntryToFile $skippedFoldersFilePath $(FormatSkippedEntry $publicFolder "No items")
	}

	return $anyPublicFolderItemsExist
}

function HasValidUser($publicFolderPermission)
{
	$publicFolderUserTypeName = $publicFolderPermission.User.GetType().Name
	if ($publicFolderUserTypeName -ne "MailboxFolderUserId")
	{
		Write-Host "WARNING: unexpected publicFolderUserTypeName: $publicFolderUserTypeName"
		return $false
	}

	return ($publicFolderPermission.User -ne $null) -and ($publicFolderPermission.User.ADRecipient -ne $null)
}

function ContainsRequiredRights($accessRights)
{
	[int]$effectiveRights = 0
	foreach ($right in $accessRights)
	{
		$effectiveRights = $effectiveRights -bor [int]$right
	}

	return ($effectiveRights -band $RequiredRights) -eq $RequiredRights
}

function GetUserWithRequiredRights($publicFolder)
{
	$permission = Get-PublicFolderClientPermission $publicFolder | ? { $(HasValidUser $_) -and $(ContainsRequiredRights $_.AccessRights) } | Select -First 1
	if($permission -eq $null)
	{
		AppendEntryToFile $skippedFoldersFilePath $(FormatSkippedEntry $publicFolder "Wrong permissions")
	}

	return $permission 
}

function FormatSkippedEntry($publicFolder, $skipReason)
{
	$fullPath = $publicFolder.FolderPath.ToString()

	$publicFolderMailbox = Get-Mailbox -PublicFolder $publicFolder.ContentMailboxGuid.ToString()
	$mailboxName = $publicFolderMailbox.PrimarySmtpAddress
	$storeName = $publicFolderMailbox.Database

	return "$fullPath`n$mailboxName`n$storeName`n$skipReason"
}

function GetEntry($publicFolderPermission)
{
	$ownerSid = $publicFolderPermission.User.ADRecipient.Sid

	$publicFolder = Get-PublicFolder $publicFolderPermission.Identity
	$entryId = $publicFolder.EntryId
	$fullPath = $publicFolder.FolderPath.ToString()

	$publicFolderMailbox = Get-Mailbox -PublicFolder $publicFolder.ContentMailboxGuid.ToString()
	$mailboxName = $publicFolderMailbox.PrimarySmtpAddress
	$storeName = $publicFolderMailbox.Database
	
	return "$entryId`n$ownerSid`n$fullPath`n$mailboxName`n$storeName"
}

function AppendEntryToFile($outputFilePath, $entry)
{
	[System.IO.File]::AppendAllText($outputFilePath, "$entry`n`n", [System.Text.Encoding]::Unicode)
}

New-Item -Force -ItemType file $outputFilePath

$publicFolders = $null
try
{
	$publicFolders = Get-PublicFolder -Recurse
}
catch
{
	if ($_.CategoryInfo.Reason -eq 'ObjectNotFoundException')
	{
		Write-Host "There are no public folder mailboxes."
		return
	}

	throw
}

$publicFolders | ? { IsNotEmpty $_ } | %{ GetUserWithRequiredRights $_ } | ? { $_ -ne $null } | %{ AppendEntryToFile $outputFilePath $(GetEntry $_) }

Die merkwürdigen Kommentarzeilen machen mich stutzig. Sehen so CHINESISCH aus...

Ich hab es bei google übersetzen lassen:

Zitat

# 脨 鈥 澝 惵 幻 懧? 脨 Lu 脨 潞 潞 潞 潞 焨 舥 毭 惵 戋 戋 偓 毭? €?潵 罵罵 焵 潵 焵 無 焨 樵 焵 焨 焨 焨 潵 焨 焨 焨 焨 潵 焨 焨 焨 惵 惵 惵 惵 惵 惵 惵 愨 愨 惵 惵 愨 惵 脨 脨 脨 脨 脨lu So finden Sie heraus, was zu tun ist? FindItems So suchen Sie lange? FindItems So suchen Sie lange? FindItems Bestechungsreparaturen # "Das angegebene Objekt wurde nicht im Store gefunden". # 脨 鄨 修 钪  惵 惵 惵 € : 惵 得 惵?脨 得 惵? Stimmt es, dass Sie es reparieren können? Sie können es für eine lange Zeit reparieren? Sie können es für eine lange Zeit reparieren? Es ist eine lange Zeit, um es zu reparieren. Es ist zu schwierig, den Esel zu reparieren. Wie man es repariert das Bestechungsgeld und reparieren es? Sie können es reparieren, und es ist eine Schande, dass Sie es reparieren können? Es ist eine Schande, dass Sie es reparieren können. Es ist eine Schande. €? # Ji Yun Ji Lu Ji töten Ji Lu Ji Lu Ji Gefangener (Ji Lu Ji töten Ji Lu Ji Lu Ji Krupp Reparatur Biji Lu Ji Lu Ji Lu Ji Gefangener) Reparatur Holmium Nuodie Bedauern Krawatte Gut Sterben Bedauern Nuo? Cu Schlachtreparatur Xiecu Bestechung Was ist der Unterschied zwischen dem Schlachten und dem Schlachten? Das Schlachten des Schlachtens und das Schlachten des Schlachtens und das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachtens, das Schlachten des Schlachten, das Schlachten des Schlachtens, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, Das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, das Schlachten, die Schrägreparatur für eine lange Zeit, die Illusion und die Fehler führen zu IPM_SUBTREE. # Ji holmium ⒚ Diecidiegai Die Jiaonuonijian € Nuodiecaidie Detiejiaodie Jiaodiejiudie? Culvxiukang  Die war Tiecidieke Tiejiutiehuan Diejiudiedu Tiedetiejiao Was sollten Sie tun? Kouxiubixiu holmium Nuotie Jiutiechentie? Holmium Chidiejiutie reparieren Illusion und Frustration # 脨 脨 脨 reparieren 鈥 毭 惵 惵 惵 惵 鈥? 鈥? 脨 Lu 脨 FindItems erfassen Ich bin kein Dummkopf, ich bin kein Dummkopf, ich bin kein Dummkopf, ich bin kein Mann, ich ' Ich bin kein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann, ich bin ein Mann Sechseckiger Lack Lack Lack Lack Reparatur Moos. Was soll ich tun? Der Esel repariert die Reparaturen, die Reparaturen, die Reparaturen, die Reparaturen, die Reparaturen, die Schaufeln, die Reparaturen in Gefangenschaft, die Sorgen, die Sorgen und das Chaos für eine lange Zeit?

 

Hat jemand eine Idee dazu? Kaspersky Endpoint, MSERT und Testproxylogon haben nichts auf dem System gefunden...

script.ps1.txt

Link to post

@NilsK

Die Idee klingt plausibel - aber... Hoffnung stirbt zuletzt, das System nicht neu zu installieren.

 

Kann man raus bekommen, welcher Prozess/Datei die Datei erstellt?

Oder gibt es einen Befehl, der ALLE Task´s ausliest?

Was macht die script.ps1?

Link to post
vor 3 Minuten schrieb rt1970:

@NilsK

Die Idee klingt plausibel - aber... Hoffnung stirbt zuletzt, das System nicht neu zu installieren.

 

Kann man raus bekommen, welcher Prozess/Datei die Datei erstellt?

Oder gibt es einen Befehl, der ALLE Task´s ausliest?

Was macht die script.ps1?

Hey,

ganz ehrlich, selbst wenn Du Teile bereinigt bekommst, wirst Du bei jedem Fehler der demnächst auftritt MIsstrauisch sein und das schlimmste befürchten müssen.

Tu Dir und deinen GF's den Gefallen einer /recoverserver Installation und gut ist.

 

Es ist unverantwortlich so ein System noch länger bei Euch im Netz laufen zu lassen.

 

Gruß mikro

Link to post

Moin,

 

vermutlich wird man noch weiter gehen müssen und nicht nur den Exchange-Server neu machen. Ihr habt ein echtes Problem in eurem Netzwerk und tut gut daran, euch jetzt von erfahrenen Incident Managern unterstützen zu lassen. Ein Forum ist jetzt nicht der Support, den ihr braucht.

 

Gruß, Nils

 

 

Link to post

Naja.... Soooo eindeutig ist das ja nicht (wie ich finde).

 

Die Übersetzung kam ja NUR zustande, weil ich die .ps1 in Word geöffnet hatte und mit einer Sprache, die wie Chinesisch aus sah... Dann ab zum Google-Übersetzer.

Ob der Kommentar in der .ps1 tatsächlich korrekt übersetzt ist weiß keiner. Ich finde auch keine weiteren Anomalien. Auch keine unklaren Aufgaben.

Link to post

Moin,

 

Die Kommentare sind nicht das Problem, sondern die Skripte. Exchange macht die nicht von selbst, da ist Malware aktiv.

 

Aber bitte, du kannst das auch weiter ignorieren. Ist hierzulande ja ohnehin gerade en vogue.

 

Gruß, Nils

  • Like 2
Link to post

Sorry Nils, dass es so rüber kam.

Bevor ich alles "Platt" machen muss brauche ich wenigstens 80%ige Gründe.

Leider verstehe ich nicht, was das Script überhaupt macht.

Kaspersky for Exchange ist ja auch noch aktiv und "tobt" sich in C:\Windows\Temp aus...

Link to post
vor 1 Stunde schrieb rt1970:

Bevor ich alles "Platt" machen muss brauche ich wenigstens 80%ige Gründe.

Leider verstehe ich nicht, was das Script überhaupt macht.

Lies dir doch bitte die beiden Zeilen noch ein paar Mal durch.

Link to post

Und dann? Was willst Du mir damit sagen?

Bis auf die fragwürdigen Kommentarzeilen sehe ich eine Abfrage des Exchange, was auch vom Kaspersky kommen könnte.

Soll ich jetzt ein Auto verschrotten, nur weil eventuell ein Nagel im Reifen steckt?

Link to post
vor 7 Stunden schrieb rt1970:

Soll ich jetzt ein Auto verschrotten, nur weil eventuell ein Nagel im Reifen steckt?

Das Problem ist nicht der Nagel. Das Problem ist das, was Du möglicherweise nicht siehst. Der Vergleich ist eher: Terrorist war eine Stunde unbemerkt an meinem Auto. Auf Anhieb finde ich keine Bombe. Fahre ich mit dem Auto?

 

Wenn Malware mit SYSTEM-Rechten ausgeführt wird, kann sie sich so verstecken, damit Du sie als Admin nicht siehst.

  • Like 1
Link to post

Zusätzlich wäre anzumerken, dass, sofern der Server nicht Teil einer DAG ist, eine Recovery-Installation eher mit dem Ölwechsel zu vergleichen ist als mit dem Verschrotten. Oder, falls noch Thrid Party-Zeug auf dem Server läuft, vielleicht mit einem Auspufftausch.

Klar hat man Respekt davor, wenn man es noch nie gemacht hat. Aber tatsächlich ist bei einem Standalone-Server nix großes dabei.

Link to post
vor 9 Stunden schrieb rt1970:

Und dann? Was willst Du mir damit sagen?

Du hast geschrieben du verstehst das Script nicht und willst nicht neu installieren weil Du 80%ige Gründe brauchst. Du verstehst das Script zu 100% nicht. Und 100% sind 20% mehr als 80%.

  • Like 1
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...