PowerShell添加或修改注冊表開機啟動項腳本


我的測試代碼:

直接使用命令行操作,添加注冊表:

REG ADD HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v xxxxKey /t REG_SZ /d "powershell -file helloword.ps1"

 

使用ps添加開機啟動:

$name = "test_date"
$value = "powershell -file D:\out_test\test2.ps1"
New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name $name -PropertyType String -Value $value -ErrorAction Stop

  

運行方法:

powershell -file add2startup.ps1

 

再看我的test2.ps1

Write-Host 'Hello, World!'
Get-Process | Out-File -FilePath D:\out_test\processes.txt
Get-Date | Out-File -FilePath D:\out_test\date.txtt 

 

然后每次開機啟動都會生成2個日期和進程的文件!!!

 

類似的惡意文件案例:

https://any.run/report/765b38e1840a1d06361268647372dfc164062ceb5b081dfd9ac1f623a5fa2dfa/aaa62403-7ecb-4327-bf47-7edc78d7d4e5#registry

實現開機啟動連接C2服務器:

3660
powershell.exe
write
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
SoftwareUpdater
C:\Users\admin\AppData\Roaming\CTkld85U\presentationhost.exe
 
 
https://any.run/report/f5a763e43cf2258a3add2a1769f9cc9aed3da84f108f4f87831bed16dd6a409b/6bbd7ddf-bd22-4684-b343-3e306214b87a
直接通過powershell進程設置:
Powershell Set-Item -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Run -Value 'C:\Users\admin\AppData\Local\Microsoft\s.vbs
3888
Powershell.exe
write
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
C:\Users\admin\AppData\Local\Microsoft\s.vbs
 
類似的,通過mshta創建開機啟動項的:
https://any.run/report/a0c31e0b30559e9ec0bb20242226e569e3979a6b536cb0c96fb2450593890e05/c6d527f7-a532-4aa7-a591-c20b1aa68fc9

------------------------------

 

PowerShell添加或修改注冊表開機啟動項腳本

簡介: 代碼如下: $name = Read-Host "請輸入開機啟動項的名字(隨便起)" $value = Read-Host "請輸入開機啟動項的值" try{ New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name $name -PropertyType String -Value $value -ErrorAction Stop $tip = "成功添加開機啟動項"+$name+"。

代碼如下:

$name = Read-Host "請輸入開機啟動項的名字(隨便起)"
$value = Read-Host "請輸入開機啟動項的值"
try{
    New-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name $name -PropertyType String -Value $value -ErrorAction Stop
    $tip = "成功添加開機啟動項"+$name+"。"
    Write-Host $tip -ForegroundColor Green
}catch [System.Exception]{
    Write-Host "開機啟動項已經存在,無需添加。修改開機啟動項值,請按1:" -ForegroundColor Green
    $value = Read-Host
    if($value -eq "1"){
        $new_value = Read-Host "請為啟動項賦予新值" Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name $name -Value $new_value
        $tip = "開機啟動項"+$name+"的值已經修改,新的值為‘"+$new_value+"’。"
        Write-Host $tip -ForegroundColor Green
    }
}finally{
    Read-Host "按任意鍵退出"
}

腳本保存到本地xx.ps1文件並設置打開方式為用PowerShell運行,雙擊運行腳本文件。添加開機啟動項(啟動項的值為在cmd里可以執行的內容):

目標啟動項存在,修改開機啟動項:

對應實現的注冊表效果如下:

 

 

 

 

 

 

 

PowerShell腳本開機自啟動

 

家里有兩台台式機,性能還不錯,尤其是其中一台機器插了64GB內存,適用於某些內存消耗量大的工作。因此,我打算做內網穿透,以便在外工作時隨時連回家里機器。

配置好frp之后,測試OK,可以從外網訪問內網機器。但是問題來了,我下載的frp windows客戶端沒有開機自啟動的選項,它的啟動方式是在CMD或PowerShell中輸入命令./frpc -c frpc.ini。

如何在系統開機后(而非登錄后)自動運行這段PowerShell腳本呢? 方法很簡單,寫一個PowerShell腳本文件,通過PowerShell命令將其設置為開機自啟動即可。

  1. PowerShell腳本文件
    打開記事本,輸入啟動新frpc進程的命令:
    start-process -FilePath C:\frp\frpc.exe -ArgumentList "-c C:\frp\frpc.ini" -WindowStyle Hidden
    將此文件存為frpc.ps1腳本文件。
  2. 開機時自動運行PowerShell腳本
    由於Windows系統默認策略不允許隨意運行腳本文件,所以要更改一下:
    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
    定義觸發器,設置定時任務:
    $trigger = New-JobTrigger -AtStartup -RandomDelay 00:00:30
    Register-ScheduledJob -Trigger $trigger -FilePath C:\frp\frpc.ps1 -Name StartFrpc

參考資料:

  1. Use PowerShell to Create Job that Runs at Startup
  2. About Execution Policies
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM