සිදුවීම් තොරතුරු රැස් කිරීමට PowerShell භාවිතා කිරීම

PowerShell යනු බොහෝ විට අනිෂ්ට මෘදුකාංග සංවර්ධකයින් සහ තොරතුරු ආරක්ෂණ විශේෂඥයින් විසින් භාවිතා කරන තරමක් පොදු ස්වයංක්‍රීය මෙවලමකි.
තොරතුරු ආරක්ෂණ සිදුවීම් වලට ප්‍රතිචාර දැක්වීමේදී අවසාන උපාංග වලින් දුරස්ථව දත්ත රැස් කිරීමට PowerShell භාවිතා කිරීමේ විකල්පය මෙම ලිපියෙන් සාකච්ඡා කරනු ඇත. මෙය සිදු කිරීම සඳහා, ඔබට අවසන් උපාංගය මත ධාවනය වන ස්ක්‍රිප්ට් එකක් ලිවීමට අවශ්‍ය වන අතර පසුව මෙම ස්ක්‍රිප්ට් පිළිබඳ සවිස්තරාත්මක විස්තරයක් ඇත.

function CSIRT{
param($path)
if ($psversiontable.psversion.major -ge 5)
	{
	$date = Get-Date -Format dd.MM.yyyy_hh_mm
	$Computer = $env:COMPUTERNAME
	New-Item -Path $path$computer$date -ItemType 'Directory' -Force | Out-Null
	$path = "$path$computer$date"

	$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname,
	processid, commandline, parentprocessid

	$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress,
	localport, remoteaddress, remoteport, owningprocess, state
	
	$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress,
	localport, remoteaddress, remoteport, owningprocess, state

	$task = get-ScheduledTask | Select-Object author, actions, triggers, state, description, taskname|
	where author -notlike '*Майкрософт*' | where author -ne $null |
	where author -notlike '*@%systemroot%*' | where author -notlike '*microsoft*'

	$job = Get-ScheduledJob

	$ADS =  get-item * -stream * | where stream -ne ':$Data'

	$user = quser

	$runUser = Get-ItemProperty "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"

	$runMachine =  Get-ItemProperty "HKLM:SoftwareMicrosoftWindowsCurrentVersionRun"

	$array = $process, $netTCP, $netUDP, $task, $user, $runUser, $runMachine, $job, $ADS
	$arrayName = "Processes", "TCPConnect", "UDPConnect", "TaskScheduled", "Users", "RunUser", "RunMachine",
	"ScheduledJob", "AlternativeDataStream"


	for ($w = 0; $w -lt $array.count; $w++){
		$name = $arrayName[$w]
		$array[$w] >> $path$name.txt
		}

	}

}

ආරම්භ කිරීමට, කාර්යයක් සාදන්න CSIRT දිගුව, තර්කයක් ගෙන යනු ඇත - ලැබුණු දත්ත සුරැකීමට මාර්ගය. බොහෝ cmdlets Powershell v5 හි ක්‍රියා කරන නිසා, PowerShell අනුවාදය නිවැරදි ක්‍රියාකාරිත්වය සඳහා පරීක්ෂා කරන ලදී.

function CSIRT{
		
param($path)# при запуске скрипта необходимо указать директорию для сохранения
if ($psversiontable.psversion.major -ge 5)

සාදන ලද ගොනු හරහා සංචාලනය කිරීමේ පහසුව සඳහා, විචල්‍ය දෙකක් ආරම්භ කර ඇත: $date සහ $Computer, පරිගණකයේ නම සහ වත්මන් දිනය පවරනු ලැබේ.

$date = Get-Date -Format dd.MM.yyyy_hh_mm
$Computer = $env:COMPUTERNAME
New-Item -Path $path$computer$date –ItemType 'Directory' -Force | Out-Null 
$path = "$path$computer$date"

අපි වත්මන් පරිශීලකයා වෙනුවෙන් ක්‍රියාත්මක වන ක්‍රියාවලි ලැයිස්තුව පහත පරිදි ලබා ගනිමු: $process විචල්‍යයක් සාදන්න, එයට win32_process පන්තිය සමඟ get-ciminstance cmdlet පවරන්න. Select-Object cmdlet භාවිතයෙන්, ඔබට අමතර ප්‍රතිදාන පරාමිති එකතු කළ හැක, අපගේ නඩුවේදී මේවා parentprocessid (මාපිය ක්‍රියාවලි ID PPID), සාදන දිනය (ක්‍රියාවලි නිර්මාණය කරන දිනය), සැකසූ (ක්‍රියාවලි ID PID), ක්‍රියාවලි නාමය (ක්‍රියාවලියේ නම), විධාන රේඛාව ( විධානය ක්‍රියාත්මක කරන්න).

$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname, processid, commandline, parentprocessid

සියලුම TCP සහ UDP සම්බන්ධතා ලැයිස්තුවක් ලබා ගැනීමට, පිළිවෙලින් Get-NetTCPConnection සහ Get-NetTCPConnection cmdlets ලබා දීමෙන් $netTCP සහ $netUDP විචල්‍යයන් සාදන්න.

$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state

$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state

සැලසුම් කළ කාර්යයන් සහ පැවරුම් ලැයිස්තුව සොයා ගැනීම වැදගත් වනු ඇත. මෙය සිදු කිරීම සඳහා, අපි get-ScheduledTask සහ Get-ScheduledJob cmdlets භාවිතා කරමු. අපි ඔවුන්ට $task සහ $job යන විචල්‍යයන් පවරමු, මන්ද මුලදී, පද්ධතියේ නියමිත කාර්යයන් රාශියක් ඇත, පසුව අනිෂ්ට ක්‍රියාකාරකම් හඳුනා ගැනීම සඳහා නීත්‍යානුකූල උපලේඛනගත කාර්යයන් පෙරීම වටී. Select-Object cmdlet මේ සඳහා අපට උපකාර කරනු ඇත.

$task = get-ScheduledTask | Select-Object author, actions, triggers, state, description, taskname| where author -notlike '*Майкрософт*' | where author -ne $null | where author -notlike '*@%systemroot%*' | where author -notlike '*microsoft*' # $task исключает авторов, содержащих “Майкрософт”, “Microsoft”, “*@%systemroot%*”, а также «пустых» авторов
$job = Get-ScheduledJob

NTFS ගොනු පද්ධතිය තුළ විකල්ප දත්ත ප්‍රවාහ (ADS) වැනි දෙයක් තිබේ. මෙයින් අදහස් කරන්නේ NTFS හි ගොනුවක් අත්තනෝමතික ප්‍රමාණයේ බහු දත්ත ප්‍රවාහයන් සමඟ විකල්ප වශයෙන් සම්බන්ධ කළ හැකි බවයි. ADS භාවිතයෙන්, ඔබට සම්මත පද්ධති පරීක්ෂාවන් හරහා දෘශ්‍යමාන නොවන දත්ත සැඟවිය හැක. මෙමගින් අනිෂ්ට කේතය එන්නත් කිරීමට සහ/හෝ දත්ත සැඟවීමට හැකි වේ.

PowerShell හි විකල්ප දත්ත ප්‍රවාහයන් ප්‍රදර්ශනය කිරීම සඳහා, හැකි සියලුම ප්‍රවාහ බැලීම සඳහා අපි get-item cmdlet සහ * සංකේතය සහිත බිල්ට් වින්ඩෝස් ප්‍රවාහ මෙවලම භාවිතා කරමු, මේ සඳහා අපි $ADS විචල්‍යය සාදන්නෙමු.

$ADS = get-item * -stream * | where stream –ne ':$Data' 

පද්ධතියට ලොග් වී ඇති පරිශීලකයින්ගේ ලැයිස්තුව සොයා ගැනීම ප්‍රයෝජනවත් වනු ඇත; මේ සඳහා අපි $user විචල්‍යයක් සාදා එය quser වැඩසටහන ක්‍රියාත්මක කිරීමට පවරමු.

$user = quser

ප්‍රහාරකයින්ට පද්ධතිය තුළ ස්ථාවරයක් ලබා ගැනීම සඳහා ස්වයංක්‍රීය ධාවනයට වෙනස්කම් කළ හැකිය. ආරම්භක වස්තූන් බැලීම සඳහා, ඔබට Get-ItemProperty cmdlet භාවිතා කළ හැක.
අපි විචල්‍ය දෙකක් නිර්මාණය කරමු: $runUser - පරිශීලකයා වෙනුවෙන් ආරම්භය බැලීමට සහ $runMachine - පරිගණකය වෙනුවෙන් ආරම්භය බැලීමට.

$runUser = Get-ItemProperty 
"HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
$runMachine = Get-ItemProperty 
"HKLM:SoftwareMicrosoftWindowsCurrentVersionRun"

සියලුම තොරතුරු විවිධ ගොනු වලට ලියා ඇති පරිදි, අපි විචල්‍යයන් සහිත අරාවක් සහ ගොනු නාම සහිත අරාවක් සාදන්නෙමු.


$array = $process, $netTCP, $netUDP, $task, $user, $runUser, $runMachine, $job, $ADS
$arrayName = "Processes", "TCPConnect", "UDPConnect" "TaskScheduled", "Users", "RunUser", "RunMachine",
"ScheduledJob", "Alternative Data Stream"

සහ for loop භාවිතා කරමින්, ලැබුණු දත්ත ගොනු වලට ලියා ඇත.

for ($w = 0; $w -lt $array.count; $w++){
	$name = $arrayName[$w]
	$array[$w] >> $path$name.txt

ස්ක්‍රිප්ට් එක ක්‍රියාත්මක කිරීමෙන් පසු අවශ්‍ය තොරතුරු අඩංගු පෙළ ගොනු 9ක් නිර්මාණය වේ.

අද, සයිබර් ආරක්ෂණ වෘත්තිකයන්ට ඔවුන්ගේ කාර්යයේ විවිධ කාර්යයන් විසඳීමට අවශ්‍ය තොරතුරු පොහොසත් කිරීමට PowerShell භාවිතා කළ හැකිය. ආරම්භයට ස්ක්‍රිප්ට් එකක් එකතු කිරීමෙන්, ඩම්ප්, පින්තූර ආදිය ඉවත් නොකර ඔබට යම් තොරතුරු ලබා ගත හැක.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න