欢迎访问Sunbet官网(www.sunbet.us),Allbet欧博官网(www.ALLbetgame.us)!

首页Sunbet_安全防护正文

授人予渔:你必需晓得的 SYSTEM 令牌盗取攻防技术细节_申博官方网

b9e08c31ae1faa592019-11-1274内网渗透

申博官方网

申博官方网站知名于海内外,被广大网民所爱不释手。申博官网网站是源于菲律宾申博官网公司打造的一个服务大众的娱乐网站。轮盘骰子,经典桌游等等娱乐游戏让用户体验各种刺激和惊喜。官方网站全力保证绿色、安全,绝无不公平的现象存在。稳定、有保障的娱乐休闲方式,申博开户也快捷方便。我们竭诚为您打造让您满意的平台,如有需求,联系我们!
, 弁言

这篇博文将形貌接见令牌支配的观点,以及怎样针对winlogon运用这类手艺。从管理员高低文模仿体系接见令牌。该手艺可以在 MITRE ATT&CK 手艺框架中的 接见令牌支配 中找到。

在经由历程组策略从当地管理员帐户中作废某些特权的情况下,模仿体系接见令牌异常有用。比方,可以从当地管理员组中删除SeDebugPrivilege,以使攻击者更难转储凭证或与其他历程的内存举行交互。然则,不能从体系帐户取消特权,因为支配体系须要这些特权才运转。这使得体系接见令牌关于加固环境中的攻击者异常有价值。

在引见了接见令牌支配的观点今后,我将展现怎样运用体系接见掌握列表(SACL)来审计历程对象来检测歹意的接见令牌支配。这类检测的一个瑕玷是防御者必须主动地相识哪些历程是接见令牌支配的目的。

末了,我将讨论其他体系历程,它们的接见令牌可以像winlogon.exe一样被模仿。我诠释了发明这些历程背地的要领,以及我在此历程当中学到的东西。

盗取接见令牌

注重:假如你熟习接见令牌支配并愿望深切研讨搜刮可以模仿接见令牌的备用体系历程背地的要领,请跳过本节。

可以运用以下 Windows API 挪用来盗取和滥用接见令牌: OpenProcess(), OpenProcessToken(), ImpersonateLoggedOnUser() , DuplicateTokenEx(), CreateProcessWithTokenW()。

OpenProcess()接收一个历程标识符(PID)并返回一个历程句柄。必须运用PROCESS_QUERY_INFORMATION、PROCESS_QUERY_LIMITED_INFORMATION或PROCESS_ALL_ACCESS接见权限翻开历程句柄,才运用OpenProcessToken()。

OpenProcessToken()接收一个历程句柄和一个接见权限标志作为输入参数。它将翻开与历程关联的接见令牌的句柄。必须运用TOKEN_QUERY和TOKEN_DUPLICATE接见权限翻开令牌句柄,才在ImpersonateLoggedOnUser()中运用。别的,可以运用DuplicateTokenEx()翻开令牌句柄,只要TOKEN_DUPLICATE接见权限可以运用。

经由历程OpenProcessToken()的令牌句柄,我们可以运用ImpersonatedLoggedOnUser()来许可当前线程模仿另一个登录用户。在挪用RevertToSelf()或线程退出之前,线程将继承模仿登录用户。

假如我们想以另一个用户的身份生成一个历程,我们必须在 OpenProcessToken()的效果令牌句柄上运用 DuplicateTokenEx()来建立一个新的接见令牌。 必须运用 TOKEN_ADJUST_DEFAULT TOKEN_ADJUST_SESSIONID, TOKEN_QUERY, TOKEN_DUPLICATE 和TOKEN_ASSIGN_PRIMARY 接见权限来挪用 DuplicateTokenEx() ,才运用 CreateProcessWithTokenW()。 经由历程DuplicateTokenEx()建立的接见令牌可以传递给CreateProcessWithTokenW(),从而运用复制的令牌生成一个历程。

我编写了一小段代码来演示这一点,大部分代码都参考于kondencuotas写的这篇文章中关于重要令牌支配的内容。

在我的测试中运用的代码可以在这里找到: https://github.com/justinbui/PrimaryTokenTheft

运用 winlogon.exe 升级到体系权限

本年早些时刻, Nick Landers  提到一个简朴的要领可以将当地管理员提升到 NT AUTHORITY\SYSTEM。

作为当地管理员(在高完整性高低文中) ,你可以盗取 winlogon.exe 的接见令牌,以便在当前线程中模仿 SYSTEM 或以 SYSTEM 权限生成新历程。

检测

接见掌握列表(ACL)是接见掌握项(ACE)的列表。 ACL 中的每一个 ACE 标识了一个受信者,并为该受信者指定许可、谢绝或审计的接见权限。 平安对象的平安形貌符可以包括两种范例的 ACL: DACL 和 SACL。 (材料泉源)

我们的检测将基于体系接见掌握列表(SACL)。 我们可以运用 SACL 来处置惩罚对象,以纪录对 Windows 平安日记的胜利或失利接见尝试。

我们可以运用 James Forshaw 的 NtObjectManager 轻松地完成这一点。 下面的大部分事情大批改编自 James Forshaw 的博客文章:绕过 SACL 审计 LSASS ,可以点击这里检察。 他的博文让我很好地舆解了 SACL,以及它们是怎样被 NtObjectManager 支配的。

auditpol /set /category:"Object Access" /success:enable /failure:enable
$p = Get-NtProcess -name winlogon.exe -Access GenericAll,AccessSystemSecurity
Set-NtSecurityDescriptor $p “S:(AU;SAFA;0x1400;;;WD)” Sacl

让我们剖析一下,第一行代码将启用对胜利和失利的对象接见的体系审计。

第二行代码将取得具有 GenericAll 和 AccessSystemSecurity 接见权限的 winlogon.exe 历程的句柄。 AccessSystemSecurity 权限是接见 SACL 所必须的。

第三行代码将运用一个审计 ACE 范例(AU) ,它将为 Everyone (WD)组的胜利和失利接见(SAFA)生成一个平安事宜。 0x1400异常重要,因为它是0x400 (PROCESS_QUERY_INFORMATION)和0x1000 (PROCESS_QUERY_LIMITED_INFORMATION)的按位或运算获得的。 可以运用这两种接见权限中的任何一种从历程对象(以及PROCESS_ALL_ACCESS)猎取接见令牌。

太好了! 有了这个 SACL,我们应当可以在运用特定接见权限接见 winlog.exe 时取得警报。

案例1:PROCESS_QUERY_INFORMATION

在运转测试顺序时,我们看到生成了 EID (事宜 ID)4656,它显现了请求的历程对象、请求接见的历程和请求的接见权限。 0x1400的接见掩码是因为具有PROCESS_QUERY_INFORMATION接见权限的句柄也被自动授与PROCESS_QUERY_LIMITED_INFORMATION接见权限。

案例2:PROCESS_QUERY_LIMITED_INFORMATION

我从新编译了测试顺序,只须要 PROCESS_QUERY_LIMITED_INFORMATION 接见权限,然后从新运转测试顺序。 我们看到,EID 4656再次生成,显现了请求 winlogon.exe 句柄的历程,该句柄的接见权限为0x1000,示意 PROCESS_QUERY_LIMITED_INFORMATION接见权限。

另外,我们看到生成的 EID 4663显现了我们的测试顺序在请求句柄今后尝试接见历程对象。 这许可我们经由历程搜刮 EID 4656和 EID 4663来更正确的检测接见令牌支配行动。

案例3: PROCESS_ALL_ACCESS

从新编译测试顺序,此次运用 PROCESS_ALL_ACCESS 接见权限,效果获得与案例2雷同的 EID,而 EID 4656显现了所请求的分外接见权限。

风趣的是,EID 4663的接见掩码是0x1000,它示意PROCESS_QUERY_LIMITED_INFORMATION接见权限。另外,当运用PROCESS_QUERY_INFORMATION接见权限运转测试顺序时,将生成EID 4656,而不生成EID 4663。

要领:寻觅winlogon.exe替换计划

除了 winlogon.exe 以外,我还想晓得是不是另有其他 以 SYSTEM 权限运转的历程能够成为令牌盗取的目的。 假如有,它们与其他没法举行令牌盗取的 SYSTEM 历程有什么区分?

磨练假定

起首,我想看看是不是有其他历程可以从中盗取一个体系令牌。 作为在高完整性高低文中运转的当地管理员,我强迫运用 SYSTEM 历程(不包括 svchost.exe) ,并发明了一些可以从中盗取 SYSTEM 令牌的其他历程。 这些历程是 lsass.exe、 OfficeClickToRun.exe、 dllhost.exe 和 unsecapp.exe。 我将这些历程称为“已知的好历程”。

当我浏览 SYSTEM 历程列表时,我注重到一些历程在 OpenProcess()时期因接见谢绝而失利(体系毛病代码5) ,这将致使顺序的其余部分失利。

关于某些 SYSTEM 历程来讲,OpenProcess()会胜利,然则 OpenProcessToken()会失利,而且存在谢绝接见毛病。 我将在今后的研讨中相识个中的缘由。

深切探究

我的目的是找出许可令牌支配胜利的体系历程之间的平安设置差别。

我决议对 winlogon.exe 和 spoolsv.exe 举行比较。 这两个都是 SYSTEM 历程,然则,我只能从 winlogon.exe 盗取 SYSTEM 接见令牌。

Session ID

我在 Process Explorer  中翻开了这两个历程,并尝试手动发明它们之间的差别。 我记得 Nick 在推特上提到 winlogon.exe 是 ID 为 1的会话中的一个破例。

我将其与其他“已知的好历程”举行了比较,发明它们都在 Session ID 0中运转的。 不幸的是,这并非我想要找到的差别。

动态内存之堆的分配(二) 动态内存之堆的分配(一) AllGlobalAlloctrait GlobalAlloctrait定义了堆分配器必须提供的功能,该属性很特殊,因为程序员几乎从不直接使用它。相反,当使用分配和集合类型的alloc时,编译器会自动地将适当的调用插入到trait方法中。 因为我们需要为所有的分配器类型实现该属性,因此有必要仔细研究其声明: pub unsafe trait GlobalAlloc { unsafe fn alloc(&self, layout: Layout) -> *mut u8; unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout); unsafe f

历程资源管理器中的高等平安设置

我决议进一步研讨 winlogon.exe 和 spoolsv.exe 的高等平安设置。 我注重到Administrators组的权限条目具有稍微差别的高等权限。 关于 winlogon.exe 来讲,Administrator 组具有 Terminate、 Read Memory 和 Read Permissions 特权。 Spoolsv.exe 中的 Administrator 组不能运用这些特权。

我试图启用 spoolsv.exe 上的一切权限,并试图盗取接见令牌。 不幸的是,这并没有弹出 SYSTEM 权限的 cmd。

授人予渔:你必需晓得的 SYSTEM 令牌盗取攻防技术细节_申博官方网  内网渗透 第1张

我还试图再次启动和住手历程,以检察是不是在历程启动时运用权限,效果这也失利了。

Get-ACL

我决议在 PowerShell 中运用 Get-ACL 来检察 winlogon.exe 和 spoolsv.exe 的平安形貌符。

两个历程之间的一切者、组和接见好像是雷同的。 接下来,我决议运用 ConvertFrom-SddlString 转换平安形貌符定义言语(Security Descriptor Definition Language,SDDL)字符串来查找差别。

授人予渔:你必需晓得的 SYSTEM 令牌盗取攻防技术细节_申博官方网  内网渗透 第2张

winlogon.exe 和 spoolsv.exe历程的SDDL

BUILTIN\Administrators组的 DiscretionaryAcl 好像是雷同的。 我已没有什么好主意了,但照样决议末了再看一次历程浏览器。

打破! (TokenUser vs TokenOwner)

在历程资源管理器中再次检察高等平安设置时,我看到一切“已知好”历程中的 Owner 字段都指定了当地 Administrators 组!

授人予渔:你必需晓得的 SYSTEM 令牌盗取攻防技术细节_申博官方网  内网渗透 第3张

winlogon.exe 和 unsecapp.exe历程的TokenOwner

我将其与一些没法从中盗取接见令牌的 SYSTEM 历程举行了比较。 Owner 字段好像是一个异乎寻常的要素。

我的同事@jaredcatkinson 提到过,历程浏览器中指定的 Owner 是 TokenOwner,可以运用 随意马虎的是,我在 GitHub 上找到了一个名为 Get-Token.ps1 的 PowerShell 剧本。 这个剧本可以罗列一切历程和线程令牌。

 

检察 winlogon.exe,可以看到 UserName 和 OwnerName 字段不婚配。 检察剧本的完成,我发明这些字段与TOKEN_USER 和 TOKEN_OWNER构造相干。

TOKEN_USER 构造标识的是与接见令牌关联的用户。 TOKEN_OWNER 构造标识的是用接见令牌建立的任何历程的一切者。 这好像是重要的区分,这个缘由好像就是许可我们从一些 SYSTEM 历程盗取接见令牌,而不是从其他历程!

关于某些 SYSTEM 历程来讲,OpenProcess()会胜利,然则 OpenProcessToken()会失利,而且存在谢绝接见毛病。 我将在今后的研讨中相识个中的缘由。

如今我可以回覆我之前问过本身的这个题目,为何在某些 SYSTEM 历程上 OpenProcessToken() 会失利而且接见被谢绝? 失利的缘由是,因为我不是 TOKEN_OWNER。

下面的一行代码将对 Get-Token 的输出举行剖析,个中用户名为 SYSTEM,而 OwnerName 不是 SYSTEM。 然后,它将从每一个对象猎取 ProcessName 和 ProcessID 属性。

Get-Token | Where-Object {$_.UserName -eq ‘NT AUTHORITY\SYSTEM’ -and $_.OwnerName -ne ‘NT AUTHORITY\SYSTEM’} | Select-Object ProcessName,ProcessID | Format-Table

太棒了! 列出的这些以 SYSTEM 权限运转的历程就是我们可以接见令牌并模仿一个 SYSTEM 接见令牌的历程。 让我们来考证我们的假定。

我手动浏览了 PID 列表,注重到大多数 PID 都是接见令牌支配的有用候选对象! 但是,有一些历程在实际支配的时刻失利了。

 

受庇护的历程属性

我看到,在 OpenProcess ()挪用时期,因为接见被谢绝,我没法从每一个 SYSTEM 历程盗取令牌。 我翻开历程资源管理器,发明了一个好像能够致使这类行动的大众属性: PsProtectedSignerWinTcb-Light。

授人予渔:你必需晓得的 SYSTEM 令牌盗取攻防技术细节_申博官方网  内网渗透 第4张

当我浏览 SYSTEM 历程列表时,我注重到一些历程在 OpenProcess ()时期因接见谢绝而失利(体系毛病代码是5) ,这将致使顺序的其余部分失利。

经由历程浏览 Alex Ionescu 的博客和这篇 Stack Overflow 的文章,我相识到这个受庇护的属性与 Protected Process Light (PPL)有关。

只要在指定的接见权限为PROCESS_QUERY_LIMITED_INFORMATION时,PPL才许可在历程上挪用OpenProcess()。 我们的测试顺序请求运用 PROCESS_QUERY_INFORMATION 接见权限挪用 OpenProcess() ,以使句柄与 OpenProcessToken()兼容,从而致使体系毛病ー代码5(接见被谢绝)。 最少我是这么想的..。

在测试检测历程时,我相识到 OpenProcessToken()所需的最小权限是PROCESS_QUERY_LIMITED_INFORMATION 接见权限,这与 微软官方文档的申明是相反的。 我修改了 OpenProcess() API 挪用时期请求的接见权限,并取得了一个 SYSTEM 权限的 cm。

授人予渔:你必需晓得的 SYSTEM 令牌盗取攻防技术细节_申博官方网  内网渗透 第5张

效果

运用PROCESS_QUERY_INFORMATION接见权挪用OpenProcess()时,以下体系历程的接见令牌能够被盗取:

· dllhost.exe

· lsass.exe

· OfficeClickToRun.exe

· svchost.exe (only some PIDs)

· Sysmon64.exe

· unsecapp.exe

· VGAuthService.exe

· vmacthlp.exe

· vmtoolsd.exe

· winlogon.exe

当运用PROCESS_QUERY_LIMITED_INFORMATION接见权挪用OpenProcess()时,以下带有 Protected Process Light 的体系历程的接见令牌能够被盗取:

· csrss.exe

· Memory Compression.exe

· services.exe

· smss.exe

· wininit.exe

个中一些历程能够特定于我的 Windows 开辟环境,但我勉励你在本身的环境中实行这个测试!

总结

回忆一下本文的内容,winlogon.exe 有一个接见令牌,可以经由历程盗用该令牌来模仿 SYSTEM 高低文。 我深切研讨了怎样运用 SACL 和 Windows 平安日记检测接见令牌的支配行动。

我试图搜刮具有与 winlogon.exe 相似属性的其他 SYSTEM 历程。 我强调了深切研讨这个主题的要领,而且可以找到其他随意马虎举行接见令牌支配的 SYSTEM 历程。 另外,我还深切研讨了为何某些历程轻易实行接见令牌支配,而其他历程不轻易实行接见令牌支配的根本缘由。

从 SYSTEM 历程中盗取接见令牌的步骤以下:

· BUILTIN\Administrator 必须是为历程实行OpenProcessToken()的令牌一切者。

· 将OpenProcess()与PROCESS_QUERY_LIMITED_INFORMATION 接见权限一同用于Protected Process Light(PPL)庇护的体系历程。

谢谢你花时间浏览这篇文章,我愿望你对Windows API、SACL、Windows历程、Windows令牌和接见令牌支配已有一些相识!

本文翻译自:https://posts.specterops.io/understanding-and-defending-against-access-token-theft-finding-alternatives-to-winlogon-exe-80696c8a73b

网友评论