跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

渗透技巧——利用Windows中的网络会话


轩辕三官

推荐的帖子

0x00 前言

在Windows系统中,使用net use命令可以实现远程网络中其他计算机的资源共享,连接建立后会创建一个net会话。

在渗透测试中,如果我们获得一个Windows主机的许可,并在其上找到一个net会话,我们就可以使用这个net会话,并使用net会话的令牌来创建一个进程。

0x01 简介

本文将介绍以下内容:

查看网络会话的方法

的使用。网络会话

净会话清算

利用理念

辩护建议

0x02 测试环境

计算机01:

Win7 x64

域中的主机

192.168.10.2

使用帐户test1登录。

DC:

服务器2008 R2x64

域控制服务器

192.168.10.1

在DC上使用域管理员帐户Administrator通过net use远程连接到COMPUTER01,如下图所示。

2-1.png

0x03 查看net session的方法

1、cmd命令

网络会话

如下图

3-1.png

2、LogonSessions

下载地址:

https://docs . Microsoft . com/en-us/sys internals/downloads/logon sessions

如下图

3-2.png

你可以发现网络会话的登录类型是网络。

3、c++实现

首先,通过Windows API LSEnumerateLogonSessions()枚举当前登录会话

然后使用LsaGetLogonSessionData()获取每个登录会话的具体信息。

编程时需要注意的是,sid和时间不能直接显示,需要进行格式转换。

开放源代码地址:

https://github . com/3g student/home-of-C-Language/blob/master/listlogonsessions . CPP

根据代码登录会话的格式输出结果。

4、mimikatz

权限:调试

令牌:列表

如下图

3-3.png

测试\管理员对应的ID是6919466

补充mimikatz的命令

查看当前令牌:

token:whoami

恢复进程令牌:

令牌:还原

模拟为系统:

token:提升

模拟为域管理员:

token:elevate /domainadmin

模拟为企业管理员:

token:elevate /enterpriseadmin

模拟管理员:

token:提升/管理

模拟id为123456的令牌:

token:elevate /id:123456

0x04 net session的利用

的标记。net会话保存在lsass进程中,如下所示

3-0.png

就利用率而言,net session相当于其令牌的利用率。

1、mimikatz

id为6919466的模拟令牌:

token:提升/id:6919466

如下图

3-4.png

注:

上面的操作只是改变了线程令牌。

Windows下有两种令牌:主令牌和模拟令牌。

主令牌对应于进程令牌,每个进程都有一个唯一的主令牌。

模拟标记对应于线程标记,可以修改。

接下来,使用此内标识创建一个进程cmd.exe:

进程:启动cmd.exe

但是,这个命令不会使用新的线程标记,这意味着cmd.exe进程不是用TEST\Administrator启动的。

原因如下:

https://github . com/gentili kiwi/mimikatz/blob/110 a 831 ebe 7 b 529 C5 DD 3010 f 9 e 7 fced 0 D3 e 4 a 46 c/mimikatz/modules/kuhl _ m _ process . c # L38

如下图

3-5.png

https://github . com/gentili kiwi/mimikatz/blob/110 a 831 ebe 7 b 529 C5 DD 3010 f 9 e 7 fced 0d 3 e 3 a 46 c/modules/kull _ m _ process . c # L490

如下图

3-6.png

当mimikatz执行process:start命令时,他使用CreateProcess来创建进程,并且没有传入任何令牌。

解决方法:

修改mimikatz的源代码,用CreateProcessAsUser()创建一个进程,传入Token。

当然,我们也可以使用其他工具来实现这个过程。

2、使用incognito

开放源地址:

https://github.com/fdiskyou/incognito2

注:

隐姓埋名的用法在之前的《渗透技巧——Token窃取与利用》篇文章中有介绍。

列出当前令牌:

incognito.exe列表_令牌-u

使用“测试\管理员”启动cmd.exe:

incognito.exe执行-c '测试\管理员' cmd.exe

如下图

4-1.png

Net会话被成功利用,用户“TEST\Administrator”启动了进程cmd.exe,如下图所示。

4-2.png

0x05 net session的清除

1、cmd命令

网络会话/删除/y

2、删除net use连接

网络发起程序删除连接:

净使用* /del /y

0x06 利用思路

1、本地提权

如果没有获得本地管理员的权限,但是获得了SeImpersonate或SeAssignPrimaryToken的权限,可以在net session中使用Token创建新的进程,实现权限提升。

注:

之前的文章《Windows本地提权工具Juicy Potato测试分析》和《渗透技巧——Windows九种权限的利用》都提到过这个方法。

2、域内渗透

根据网络会话的权限,新创建的进程可以继承网络会话的令牌。

0x07 防御建议

1.限制域环境中的用户权限,尽量避免使用域管理员帐户进行远程连接。

2.使用net use远程连接后记得及时清除。

0x08 小结

本文介绍了利用网络会话令牌创建进程的方法,分析了使用它的思路,并给出了一些防御建议。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...