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 variable ٺاهيو، ان کي 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 ڪنيڪشن جي لسٽ حاصل ڪرڻ لاءِ، ترتيب ڏيو $netTCP ۽ $netUDP متغيرن کي ترتيب ڏيندي Get-NetTCPConnection ۽ Get-NetTCPConnection cmdlets.

$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 variable ٺاهينداسين ۽ ان کي 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 ٽيڪسٽ فائلون ٺاهي وينديون جن ۾ ضروري معلومات شامل هوندي.

اڄ، سائبر سيڪيورٽي پروفيشنل استعمال ڪري سگهن ٿا PowerShell معلومات کي بهتر ڪرڻ لاءِ جيڪي انهن جي ڪم ۾ مختلف ڪمن کي حل ڪرڻ جي ضرورت آهي. شروع ڪرڻ لاءِ اسڪرپٽ شامل ڪرڻ سان، توھان ڪجھ معلومات حاصل ڪري سگھو ٿا بغير ڊمپ، تصويرن وغيره کي ختم ڪرڻ جي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو