一旦攻击者可以在一台计算机上运行代码,就会下载powershell脚本文件(.ps1)到磁盘中 执行,甚至无需写到磁盘中执行,它可以直接在内存中运行,利用诸多特点攻击者可以持续攻击而不被轻易发现。
常用的powershell攻击工具有以下几种:
-
powerSploit:
常用于信息探测,权限提升,凭证窃取,持久化等操作
-
Nishang:
基于powershell的渗透测试专用工具,集成了框架,脚本和各种payload,包含下载和执行,键盘记录,DNS,延时命令等脚本
-
Empire:
基于powershell的远程控制木马,可以从凭证数据库中导出和跟踪凭证信息,常用于提供前期漏洞利用的集成模块,信息探测,凭证窃取,持久化控制。 -
powercat:
powershell版的Netcat,有着网络工具中的瑞士军刀美誉,他能通过tcp和udp在网络中读写数据,通过它和其他工具结合和重定向,读者可以在脚本中以多种方式使用它。
powershell优点:
- windows7中默认安装了
- powershell脚本可以运行在内存中,不需要写入磁盘
- 可以从另一个系统中下载powershell脚本并执行
- 目前很多工具都是基于powershell开发的
- 很多安全软件并不能检测到powershell的活动
- cmd.exe通常会被阻止运行,但powershell不会
- 可以用来管理活动目录
查看版本:Get-Host
powershell的基本概念
一个powershell脚本其实就是一个简单的文本文件,这个文件包含了一系列powershell命令,每个命令显示为独立的一行,对于被视为powershell脚本的文本文件,他的文件名需要加上.PS1的扩展名
执行策略:
为防止恶意脚本的执行,powershell有一个执行策略,默认情况下,这个执行策略被设置为受限
在powershell脚本无法执行时,可以使用下面的cmdlet命令来确定当前的执行策略
Get-ExecutionPolicy:
-
Restricted:脚本不能执行(默认设置)
-
RemoteSigned
本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书签名的除外)
-
AllSigned
仅当脚本由受信任的发布者签名时才能运行
-
Unrestricted
允许所有的script运行
设置执行策略:(必须为管理员权限)
Set-ExecutionPolicy < policy name >
运行脚本
运行一个脚本,必须键入完整的路劲和文件名,例如,你要运行一个名为a.ps1的脚本,可以键入c:\script\a.ps1
管道:
管道的作用就是将一个命令的输出作为另一个命令的输入,两个命令之间用管道符号(|)连接
例如:
假设停止所有目前运行中的,以"p"字符开头命名的程序
get-process p* | stop-process
powershell的常用命令:
基础:
在powershell下,类似“cmd命令”叫做"cmdlet"