Úsáid PowerShell chun Faisnéis Teagmhais a Bhailiú

Is uirlis uathoibrithe sách coitianta é PowerShell a úsáideann forbróirí malware agus speisialtóirí slándála faisnéise go minic.
Pléifidh an t-alt seo an rogha PowerShell a úsáid chun sonraí a bhailiú go cianda ó fheistí deiridh agus iad ag freagairt ar theagmhais slándála faisnéise. Chun seo a dhéanamh, beidh ort script a scríobh a reáchtálfar ar an bhfeiste deiridh agus ansin beidh cur síos mionsonraithe ar an script seo.

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
		}

	}

}

Chun tús a chur leis, cruthaigh feidhm síneadh CSIRT, a ghlacfaidh argóint - an cosán chun na sonraí a fuarthas a shábháil. Mar gheall ar an bhfíric go n-oibríonn an chuid is mó cmdlets i Powershell v5, seiceáladh an leagan PowerShell le haghaidh oibriú ceart.

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

Ar mhaithe le nascleanúint a dhéanamh trí na comhaid cruthaithe, cuirtear tús le dhá athróg: $date agus $Computer, a sannfar ainm an ríomhaire agus an dáta reatha dóibh.

$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"

Faighimid liosta na bpróiseas reatha thar ceann an úsáideora reatha mar seo a leanas: cruthaigh athróg $process, ag tabhairt an cmdlet get-ciminstance dó leis an rang win32_process. Ag baint úsáide as an cmdlet Select-Object, is féidir leat paraiméadair aschuir bhreise a chur leis, inár gcás beidh siad seo mar parentprocessid (ID Próiseas tuismitheora PPID), dáta cruthú (dáta cruthú próisis), próiseáilte (Próiseas ID PID), ainm próisis (ainm próisis), líne na n-orduithe ( rith ordú).

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

Chun liosta a fháil de na naisc TCP agus UDP go léir, cruthaigh na hathróga $netTCP agus $netUDP trí na cmdlets Get-NetTCPConnection agus Get-NetTCPConnection a shannadh dóibh, faoi seach.

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

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

Beidh sé tábhachtach liosta na dtascanna agus na dtascanna atá beartaithe a fháil amach. Chun seo a dhéanamh, úsáidimid na cmdlets get-ScheduledTask agus Get-ScheduledJob. A ligean ar a shannadh dóibh na hathróga $tasc agus $job, mar gheall ar Ar dtús, tá go leor tascanna sceidealta sa chóras, ansin chun gníomhaíocht mailíseach a aithint is fiú tascanna dlisteanacha sceidealta a scagadh. Cabhróidh an cmdlet Select-Object linn leis seo.

$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

I gcóras comhaid NTFS tá a leithéid de rud ann agus sruthanna sonraí eile (ADS). Ciallaíonn sé seo gur féidir comhad in NTFS a nascadh go roghnach le sruthanna sonraí iolracha de mhéid treallach. Trí úsáid a bhaint as ADS, is féidir leat sonraí a cheilt nach mbeadh infheicthe trí sheiceálacha caighdeánacha córais. Fágann sin gur féidir cód mailíseach a instealladh agus/nó sonraí a cheilt.

Chun sruthanna sonraí eile a thaispeáint i PowerShell, úsáidfimid an cmdlet get-item agus an uirlis srutha Windows ionsuite leis an tsiombail * chun féachaint ar na sruthanna go léir is féidir, chuige seo cruthóimid an athróg $ADS.

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

Beidh sé úsáideach liosta na n-úsáideoirí atá logáilte isteach sa chóras a fháil amach; chuige seo cruthóimid athróg $user agus sannfaimid é d’fheidhmiú an chláir quser.

$user = quser

Is féidir le hionsaitheoirí athruithe a dhéanamh ar uathrun chun bonn a fháil sa chóras. Chun féachaint ar réada tosaithe, is féidir leat an cmdlet Get-ItemProperty a úsáid.
Cruthaímid dhá athróg: $runUser - chun am tosaithe a fheiceáil thar ceann an úsáideora agus $runMachine - chun am tosaithe a fheiceáil thar ceann an ríomhaire.

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

Ionas go scríobhtar an fhaisnéis go léir chuig comhaid éagsúla, cruthaímid eagar le hathróga agus eagar le hainmneacha comhaid.


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

Agus úsáid á baint agat as lúb, scríobhfar na sonraí a fuarthas chuig comhaid.

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

Tar éis an script a fhorghníomhú, cruthófar 9 gcomhad téacs ina mbeidh an fhaisnéis riachtanach.

Sa lá atá inniu ann, is féidir le gairmithe cybersecurity PowerShell a úsáid chun an fhaisnéis a theastaíonn uathu a shaibhriú chun tascanna éagsúla a réiteach ina gcuid oibre. Trí script a chur leis an am tosaithe, is féidir leat roinnt faisnéise a fháil gan dumpaí, íomhánna, etc.

Foinse: will.com

Add a comment