சம்பவ தகவல்களை சேகரிக்க 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 class உடன் get-ciminstance cmdlet ஐ ஒதுக்குகிறோம். Select-Object cmdlet ஐப் பயன்படுத்தி, நீங்கள் கூடுதல் வெளியீட்டு அளவுருக்களைச் சேர்க்கலாம், எங்கள் விஷயத்தில் இவை parentprocessid (பெற்றோர் செயல்முறை ஐடி 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 ஐப் பயன்படுத்தி, நிலையான கணினி சரிபார்ப்பு மூலம் பார்க்க முடியாத தரவை நீங்கள் மறைக்கலாம். இது தீங்கிழைக்கும் குறியீட்டை உட்செலுத்துவது மற்றும்/அல்லது தரவை மறைப்பது சாத்தியமாக்குகிறது.

பவர்ஷெல்லில் மாற்றுத் தரவு ஓடைகளைக் காண்பிக்க, நாம் get-item cmdlet மற்றும் உள்ளமைக்கப்பட்ட கருவியைப் பயன்படுத்துவோம். Windows சாத்தியமான அனைத்து ஸ்ட்ரீம்களையும் காண, * குறியீட்டுடன் ஸ்ட்ரீம் செய்யவும்; இதற்காக நாம் $ADS என்ற ஒரு மாறியை உருவாக்குவோம்.

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

கணினியில் உள்நுழைந்துள்ள பயனர்களின் பட்டியலைக் கண்டுபிடிப்பது பயனுள்ளதாக இருக்கும்;

$user = quser

தாக்குபவர்கள் கணினியில் காலூன்றுவதற்கு autorun இல் மாற்றங்களைச் செய்யலாம். தொடக்கப் பொருட்களைப் பார்க்க, நீங்கள் 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

DDoS பாதுகாப்பு, VPS VDS சர்வர்கள் கொண்ட தளங்களுக்கு நம்பகமான ஹோஸ்டிங் வாங்கவும் 🔥 DDoS பாதுகாப்புடன் கூடிய நம்பகமான இணையதள ஹோஸ்டிங், VPS, VDS சர்வர்களை வாங்குங்கள் | ProHoster