د پیښو معلوماتو راټولولو لپاره د پاور شیل کارول

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 = 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' 

دا به ګټور وي چې سیسټم ته د ننوتلو کاروونکو لیست ومومئ؛ د دې لپاره به موږ د $ کاروونکي متغیر جوړ کړو او د 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 ($w = 0; $w -lt $array.count; $w++){
	$name = $arrayName[$w]
	$array[$w] >> $path$name.txt

د سکریپټ اجرا کولو وروسته، 9 متن فایلونه به رامینځته شي چې اړین معلومات لري.

نن ورځ، د سایبر امنیت مسلکیان کولی شي پاور شیل وکاروي ترڅو هغه معلومات بډایه کړي چې دوی ورته اړتیا لري د دوی په کار کې مختلف دندې حل کړي. د پیل لپاره د سکریپټ اضافه کولو سره، تاسو کولی شئ د ډمپونو، انځورونو او نورو لرې کولو پرته ځینې معلومات ترلاسه کړئ.

سرچینه: www.habr.com

Add a comment