ããªã³ãŒããŒïŒ ãŸããPowerShellãã¯ãããžãŒã«åºã¥ããŠæ©èœããŸãã
ã¯ããç§ã¯PowerShellãã¯ãããžãŒã®ãã¡ã³ã§ãããããã¬ãŒããããŸã§èããããªãã£ããããã¯ã倧èã«æ¢ããŸãã Linuxã·ã§ã«ã®åºæ¬èšèªã§æè²ãåãã人ã«ãšã£ãŠãPowerShellã¯éåžžã«é«åºŠãªãã¯ãããžãŒã®ããã«èŠããŸãã PowerShellã®ãã€ãã¯æ©èœã®1ã€ã¯ãåã®èšäºã§è¿°ã¹ãããã«ããã¡ã€ã«ã®æŽæ°ãªã©ã®äœã¬ãã«ã®OSã€ãã³ãã远跡ããæ©èœã§ãã
Register-WmiEventãªã¯ãšã¹ãã®è©³çŽ°ãªåæ
åå説æãã1è¡ã ãã§ãã¡ã€ã«ãç£èŠããããã®ãã°ãããPSã³ãŒãã«æ»ããŸãããã
1. Register-WmiEvent -Query "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'CIM_DataFile' and TargetInstance.Path = '\\Users\\bob\\' and targetInstance.Drive = 'C:' and (targetInstance.Extension = 'doc' or targetInstance.Extension = 'txt)' and targetInstance.LastAccessed > '$($cur)' " -sourceIdentifier "Accessor" -Action $action
ãæ³åã®ãšããã远跡察象ã®ããžãã¯ã¯ãRegister-WmiEventã¯ãšãªãã©ã¡ãŒã¿ãŒã®WQLã«å«ãŸããŠããŸãã
æãåºãããã«ãWQLã䜿çšãããšãã¹ã¯ãªããäœæè ã¯Windowsã·ã¹ãã å ã®ã€ãã³ãã«é¢ããäžè¬çãªæ å ±ãååŸã§ããŸãããŸããä»åã®å Žåã®ããã«ããã¡ã€ã«ã€ãã³ãïŒãã¡ã€ã«ã®äœæãæŽæ°ãå€æŽïŒã«é¢ããæ å ±ãååŸã§ããŸãã ãã®ã¯ãšãªã䜿çšãããšãCIM_DataFileã¯ã©ã¹ã®åœ¢åŒã§è¡šç€ºãããWindowsã®æãå Žæãããã¡ã€ã«å€æŽã€ãã³ãã«é¢ããæ å ±ãç°¡åã«ååŸã§ããŸãã
WQLã§ã¯ãæ€çŽ¢ããã¡ãã£ã¢ãšãã©ã«ããŒãæå®ã§ããŸãã ãããè¡ãã«ã¯ããã©ã€ããšãã¹ã®äžèšã®ããããã£ã䜿çšããŸãã
ã¯ã€ã«ãã«ãŒãæ€çŽ¢ã¯äœ¿çšã§ããŸããããããã¯èšèªæ©èœã§ããããšã©ãŒã§ã¯ãããŸãã-代ããã«ãç¹å®ã®ãã¡ã€ã«æ¡åŒµåãæ€çŽ¢ã§ããŸãã ãã®ã¡ã¢ã®ã¹ã¯ãªããã®éçºã«ãããç§ã®ç®æšã¯ãITã»ãã¥ãªãã£ã®å°é家ãããã¹ããã¡ã€ã«ã«é¢é£ããéå°ãªã¢ã¯ãã£ããã£ãæ€åºã§ããããã«ããããšã§ããã ãããã£ãŠãdocãŸãã¯txtæ¡åŒµåãæã€ãã¡ã€ã«ãæ€çŽ¢ããããã®è«çæ¡ä»¶ãèšå®ããŸãã è«ççã§ããïŒ
次ã«ã1ã€ã®éèªæãªç¹ãèããŠã¿ãŸãããã
誰ãããã¡ã€ã«ã«ã¢ã¯ã»ã¹ããããšãããšãã«çºçããã€ãã³ãã«é¢ããæ å ±ãåéããå¿ èŠããããŸããå€æŽãå ããã«Microsoft Wordææžã®ã¿ãèªãå Žåãªã©ã§ãã
ãããè¡ãããšã¯å¯èœã§ããïŒ
Windowsãšã¯ã¹ãããŒã©ãŒã§ãã¡ã€ã«ã®äžèŠ§ã衚瀺ãããšãã«äœ¿çšã§ãã[å€æŽæ¥]ãã£ãŒã«ãã«ã€ããŠã¯ãããç¥ã£ãŠããŸãã ããããã¢ã¯ã»ã¹æ¥ä»ãã£ãŒã«ããããããšããåç¥ã§ããïŒ Windowsãã¡ã€ã«ãèªã¿åããã³ã«ããã®ãã£ãŒã«ãã¯çè«çã«ã¯çŸåšã®ã¿ã€ã ã¹ã¿ã³ãã瀺ããŸãã åèŠåºããã¯ãªãã¯ããŠã¢ã¯ã»ã¹æ å ±ãã£ãŒã«ãããªã³ã«ããããšã§ããããèªåã§ç¢ºèªã§ããŸãïŒä»¥äžãåç §ïŒã
ãã ããå®éã«ã¯ããã¡ã€ã«ãç·šéçšã§ã¯ãªãèªã¿åãå°çšã§éãããå ŽåãWindowsã³ã³ãã¥ãŒã¿ãŒã¯éåžžããã®å éšãã£ãŒã«ããæŽæ°ããããã«æ§æãããŠããŸããã Microsoftã¯ãããã«ããããã©ãŒãã³ã¹ãäœäžãããšäž»åŒµããŠããŸãã ããããç念ã¯ããŠãããŸãããã
Windowsã§ãã¡ã€ã«ã¢ã¯ã»ã¹æéã®ç¶ç¶çãªæŽæ°ãæ§æããã«ã¯ãéå°è©äŸ¡ãããŠããfsutilãŠãŒãã£ãªãã£ïŒç®¡çè æš©éãå¿ èŠïŒã次ã®ãã©ã¡ãŒã¿ãŒãšãšãã«äœ¿çšããŸãã
fsutil set behavior disablelastaccess 0
ãã¹ãç°å¢ã§ãã¡ã€ã«ã¢ã¯ã»ã¹ã€ãã³ããèšå®ããããšã«ãããWindowsã§èªã¿åãå°çšã€ãã³ããèšé²ã§ããããã«ããŸããã
ãã®çµæãäžèšã®WQLã³ãŒãã§ãã®ãããªè«ççãªæ€çŽ¢æ¡ä»¶ã瀺ããŸããã
targetInstance.LastAccessed > '$($cur)'
ã€ãŸããRegister-WmiEventã®éå§åŸã«ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ãããã¡ã€ã«ã€ãã³ãã«ã®ã¿èå³ããããšããããšã§ãã ãšããã§ã$ curå€æ°ã«ã¯ãGet-Dateã³ãã³ãã¬ããããååŸããçŸåšã®æå»å€ãå²ãåœãŠãããŸãã
ãã¡ã€ã«ã¢ã¯ã»ã¹åæ
WQLèšèªã調ã¹ãŸãããæ®ãã®Register-WmiEventãã©ã¡ãŒã¿ãŒã«ç§»ããŸãããã
SourceIdentiferã§ã¯ãã€ãã³ãã®ååãæå®ã§ããŸãã ããŒãã³ã°-人ãã¶ã¡ç«ãããªã¢-ã䜿çšããããšããå§ãããŸããããã«ãããå¿ èŠã«å¿ããŠããããåŒã³åºãããšãã§ããŸãã
ãããŠãã€ãã³ãã«é©ããŠããŸãïŒ ãã®èå¥åãå¿ èŠãšããããã€ãã®ã³ãã³ãã¬ããããããŸãã åå¿è ã®å ŽåïŒUnregister-Eventã䜿çšããŠç¹å®ã®ã€ãã³ããµãã¹ã¯ãªãã·ã§ã³ãåé€ããŸããGet-Eventã䜿çšãããšããã¥ãŒã«å ¥ãããããã¹ãŠã®ã€ãã³ãã衚瀺ã§ããŸããRemove-Eventã䜿çšããŠãã¥ãŒå ã®çŸåšã®ã€ãã³ããåé€ããŸãã ãããã®ã³ãã³ãã¬ããã®ããã€ããæçµã³ãŒãã§äœ¿çšããŸãã
ã¹ã¯ãªããã®äž»èŠã³ã³ããŒãã³ããäœæããŸããã
Actionãã©ã¡ãŒã¿ãŒãæ€èšããå¿ èŠããããŸãã Register-WmiEventã¯ã€ãã³ãã«éåæçã«å¿çãããããããªã¬ãŒãããã€ãã³ããžã®åå¿ãåŠçããã³ãŒããå¿ èŠã§ãããã®äžã§ãããšãã°ãéä¿¡ãããPowerShellã³ãŒãã®ãããã¯å ã®ã¢ã¯ã·ã§ã³ã§ãã
ãããŠãããã¯ã¹ã¯ãªããã§å®éã«éæããããšããŠãããã®ã«ã€ãªããã®ã§ãPowerShellã³ãŒãã®æ°è¡ã§ãŠãŒã¶ãŒã®è¡åãåæããäžçå šäœãåŸæãããšãã壮倧ãªèšç»ãæããã«ããªããã°ãªããŸããã
ãããèšç»ã§ãã ãã®PSã¹ã¯ãªããã¯ããã¡ã€ã«ã¢ã¯ã»ã¹ã€ãã³ãã®åŒ·åºŠã远跡ããåºæºå€ãšæ¯èŒããŠããã®åŒ·åºŠãæœåšçãªããã¯ã®è©Šã¿ã瀺ãå¯èœæ§ãããéç¹æ§å€ã®ç¯å²ã«å ¥ããã©ãããå€æããŸãã ãã®ãããå€ã«éãããšãææ°ã®ã¢ã¯ãã£ããã£ããŒã¿ãå«ãåªããããã·ã¥ããŒãã衚瀺ãããŸãã
ã€ãŸããç¹å®ã®ãã£ã¬ã¯ããªå ã®ããã¹ããã¡ã€ã«ã«é¢ããç°åžžãªåäœãéç¥ããã¢ã©ãŒããåããè åšè¿œè·¡ã·ã¹ãã ã䜿çšããŸãã
Powershellã¯ä»ã®ã»ãã¥ãªãã£ãœãªã¥ãŒã·ã§ã³ãåžå ŽããæŒãåºããŸããïŒ
ãããã ãŽã¡ããã¹ã¯ããã€ãã®çç±ã§ããã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããã
ãŸããWindowsã§ã®ã€ãã³ããã©ããã³ã°ã¯å¹æçãšã¯èšããŸããã å®éãMicrosoftã¯ãfsutilãä»ãããã¡ã€ã«ãžã®æåŸã®ã¢ã¯ã»ã¹ã«é¢ããæŽæ°ãå«ãããšãã·ã¹ãã ã®è² è·ãå¢å ããããšãèŠåããŠããŸãã ããã«ãRegister-WmiEventã¯å éšã€ãã³ãã®ãã©ã€ãã€ãŒã«ãé«éåããŸããã³ãã³ãã¬ãããã·ã¹ãã ã®é床ãäœäžãããå¯èœæ§ããããšããã³ã¡ã³ãã«åºäŒããŸããã
次ã«ããã®ç£èŠããªã¢ã«ã¿ã€ã ãŸãã¯ã»ãŒãªã¢ã«ã¿ã€ã ã§å®è¡ãããªãããšã«æ°ä»ããŸããããã¡ã€ã«ã€ãã³ãã®åä¿¡ã«é 延ãããã30å以äžã«éããŸãã å°ãªããšããAWSä»®æ³ãã·ã³ã§ã¹ã¯ãªãããå®è¡ããçµéšããããŸããã ãããããç¹å®ã®ãã·ã³ã§çµæãè¯ããªããããããŸããããMicrosoftãããã«ã€ããŠäœããçŽæã§ãããšã¯æããŸããã
第äžã«ãã©ã®ããã«è©ŠããŠãããã¡ã€ã«å€æŽã€ãã³ããã¢ããªã±ãŒã·ã§ã³ã®ãŠãŒã¶ãŒã«æ¥ç¶ã§ããŸããã§ããããããã€ãã³ãã®åå ã§ããã ã€ãŸãããã¡ã€ã«ã€ãã³ããçºçããããšã¯ç¥ã£ãŠããŸãããæ®å¿µãªãããRegister-WMIEventã䜿çšããŠèª°ããããè¡ã£ãã®ããç¹å®ããããšã¯ã§ããŸããã
ãã®ããããã¡ã€ã«ãžã®ã¢ã¯ã»ã¹ã远跡ã§ããã¹ã¯ãªãããåãåããŸããããIDã¯ç¢ºç«ããŸããã ããŒã...ç§ã®ã¢ã¯ã»ã¹ã«é¢ããããŒã¿ãåéãããã¡ã€ã«ã¢ã¯ã»ã¹åæãšåŒã°ããæ°ããã»ãã¥ãªãã£å¶åŸ¡ã«ããŽãªãäœæããŸãããã ã¬ãŒãããŒãèãããŸããïŒ
ãã¡ãããç¹å®ã®ãŠãŒã¶ãŒã®è¡åã¯èå³æ·±ãæ å ±ã§ããããããŠãŒã¶ãŒã®è¡åãåæããããšã¯ãè åšãèå¥ããããã®ã¯ããã«å¹æçãªæ¹æ³ã§ãã ãã¡ã€ã«ã¢ã¯ã»ã¹ã®è©³çŽ°ã§ã¯ãªãåæã¯ãæçšã§ã¯ãããŸãããè€æ°ã®ãŠãŒã¶ãŒããã€ãã³ãã«é¢ããããŒã¿ãåéãããããéæ³ãªåäœãç¹å®ããããšã¯ã§ããŸããã
ãã ããç»é²ã¢ã«ãŠã³ãã®æ°ãå°ãªãäžå°äŒæ¥ã®å Žåããã¡ã€ã«ã¢ã¯ã»ã¹åæã§ååãªå ŽåããããŸãã ããšãã°ã管çè ã¯ãæ©å¯ããŒã¿ãå«ããã£ã¬ã¯ããªã«é »ç¹ã«é¢å¿ãæã€ãŠãŒã¶ãŒã®åäœãçãããå Žåããããã®ã¹ã¯ãªããã䜿çšã§ããŸãã ãã®ã³ãŒãã«ã¯ãããã«é åçãªæ©èœããããŸãã
ãŸããç§ã®ã¹ã¯ãªãããå®å šã«æ©èœããªãå Žåã§ããPowerShellïŒãŸãã¯äœ¿çšããå¥ã®èšèªïŒã䜿çšããŠWindowsã€ãã³ããæäœããè€éããç解ããããšãããã«éèŠãªè°è«ã§ããããšã³ã¿ãŒãã©ã€ãºã¯ã©ã¹ã®ãœãªã¥ãŒã·ã§ã³ã«æ³šæãæãå¿ èŠããããŸãã
ããã§ãRegister-WmiEventã³ãã³ãã¬ããã®Powershellã¹ã¯ãªãããããã¯ã確èªããæºåãã§ããŸããã
1. $action = { 2. $Global:Count++ 3. $d=(Get-Date).DayofWeek 4. $i= [math]::floor((Get-Date).Hour/8) 5. 6. $Global:cnts[$i]++ 7. 8. #event auditing! 9. 10. $rawtime = $EventArgs.NewEvent.TargetInstance.LastAccessed.Substring(0,12) 11. $filename = $EventArgs.NewEvent.TargetInstance.Name 12. $etime= [datetime]::ParseExact($rawtime,"yyyyMMddHHmm",$null) 13. 14. $msg="$($etime)): Access of file $($filename)" 15. $msg|Out-File C:\Users\bob\Documents\events.log -Append 16. 17. 18. $Global:evarray.Add(@($filename,$etime)) 19. if(!$Global:burst) { 20. $Global:start=$etime 21. $Global:burst=$true 22. } 23. else { 24. if($Global:start.AddMinutes(15) -gt $etime ) { 25. $Global:Count++ 26. #File behavior analytics 27. $sfactor=2*[math]::sqrt( $Global:baseline["$($d)"][$i]) 28. write-host "sfactor: $($sfactor))" 29. if ($Global:Count -gt $Global:baseline["$($d)"][$i] + 2*$sfactor) { 30. 31. 32. "$($etime): Burst of $($Global:Count) accesses"| Out-File C:\Users\bob\Documents\events.log -Append 33. $Global:Count=0 34. $Global:burst =$false 35. New-Event -SourceIdentifier Bursts -MessageData "We're in Trouble" -EventArguments $Global:evarray 36. $Global:evarray= [System.Collections.ArrayList] @(); 37. } 38. } 39. else { $Global:burst =$false; $Global:Count=0; $Global:evarray= [System.Collections.ArrayList] @();} 40. } 41. }
ã¯ããOut-Fileã³ãã³ãã¬ããã䜿çšããŠãã°ã€ã³ããã§ãã¯ããåã¢ã¯ã»ã¹ã±ãŒã¹ã®ã¿ã€ã ã¹ã¿ã³ãä»ããšã³ããªãäœæããŸãã ãŸããã€ãã³ãã®æ°ã$ GlobalïŒããŒã¹ã©ã€ã³é åã®åç §å€ãšæ¯èŒãããšã15åããšã«ãã¡ã€ã«ã¢ã¯ã»ã¹ã®æ¥å¢ãæ€åºãããŸãã
ããã§å°ã空æ³ããåææ¥ã®åºæºå€ã«å«ãŸããã€ãã³ãæ°ã®ç¥è©±äžã®å¹³åå€ãèšå®ããåæ¥ã3ã€ã®8æéã®æéã«åå²ããŸããã ç¹å®ã®æéã®ããŒã¯ã¢ã¯ãã£ããã£ãæ£èŠååžæ²ç·ã®æåŸå°Ÿã«ããå Žåãè åšãæ€åºããããšèŠãªãããšãã§ããŸãã
ãã¡ã€ã«ã¢ã¯ã»ã¹åæããã·ã¥ããŒã
$ GlobalïŒevarrayïŒã¿ã€ã ã¹ã¿ã³ãä»ãã®ãã¡ã€ã«ãéãïŒã§ã®ã€ãã³ãæ°ã®ããŒã¯å¢å ã«é¢ããããŒã¿ãåãåã£ãã®ã§ããã®ããŒã¿ãã¹ã¿ã€ãªãã·ã¥ãªæ å ±ããã«ã®åœ¢åŒã§è¡šç€ºããããšããå§ãããŸãã ãããããã®ã³ãŒããã¹ã¯ãªãããããã¯ã«è¿œå ãã代ããã«ããã®ããŒã¿ãåå¥ã®ã€ãã³ãã«ããã¥ãŒãããåã ã®ã¢ããªã±ãŒã·ã§ã³ã§åŠçã§ããŸãã
ãªã«ïŒ
説æãããŠãã ããã ããã¯ãäžèšã®ã¹ã¯ãªãããããã¯ã®æåŸã«New-Eventã³ãã³ãã¬ãããç»å Žããå Žæã§ãã ãã®ã³ãŒããã¹ã¯ãªãããããã¯ã«ãã€ã³ãããã«ãå¥ã®ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ã¹ã¯ãªããã«éåæã§ä¿¡å·ãéä¿¡ã§ããããã次ã®ãã¡ã€ã«ã¢ã¯ã»ã¹ã€ãã³ããåŠçã§ããŸãã
次ã®ããŒãã§ã¯ããã¡ã€ã«ã¢ã¯ã»ã¹ãåæããããã®PowerShellã¹ã¯ãªããã®å®å šãªã³ãŒãã玹ä»ããŸãã ããã§ãWait-Eventã³ãã³ãã¬ãããæ§æãããšèšããŸãããã®å¯äžã®ç®çã¯ãã€ãã³ãã®ãããã®ããŒã¹ããéžæããOut-GridViewã䜿çšããŠçŸããããŒãã«ã®åºåã«éä¿¡ããããšã§ãã
管çã³ã³ãœãŒã«ã«è¡šç€ºãããæçµçµæã¯æ¬¡ã®ãšããã§ãã
ãã¡ã€ã«ã¢ã¯ã»ã¹åæçšã®ããã©ãããã©ãŒã ãå šäœã60è¡ã®PSã³ãŒãã§å®è£ ãããŠãããšèããå Žåã®åªãããœãªã¥ãŒã·ã§ã³ã§ãã
ä»æ¥ã¯ååãªéã®è³æã調ã¹ãŸããã
次åããã¡ã€ã«ã¢ã¯ã»ã¹åæã¹ã¯ãªããã«ã€ããŠè©³ãã説æãã次ã«ãPowerShellã³ã³ãã³ãã®åªããåé¡æ©èœã«ã€ããŠèª¬æããŸãã