跳转至

T1134-001-win-访问令牌操作-Runas命令

来自ATT&CK的描述

攻击者可能会复制,然后冒充另一个用户的令牌用于提升特权并绕过访问控制。攻击者可以创建一个新的访问令牌,该令牌使用来复制现有令牌DuplicateToken(Ex)。然后可以将该令牌用于ImpersonateLoggedOnUser允许调用线程模拟已登录用户的安全上下文,或者SetThreadToken用于将模拟令牌分配给线程。

当攻击者具有要将新令牌分配给的特定现有进程时,他们可以执行此操作。例如,当目标用户在系统上具有非网络登录会话时,这可能很有用。

测试案例

runas是Windows系统上自带的一个命令,通过此命令可以以指定权限级别间接启动我们的程序,而不止是继承父进程的权限。

打开cmd或者PowerShell,输入runas命令可以看到其用法。

C:\Users\Administrator>runas
RUNAS 用法:

RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ]
        /user:<UserName> program

RUNAS [ [/noprofile | /profile] [/env] [/savecred] ]
        /smartcard [/user:<UserName>] program

RUNAS /trustlevel:<TrustLevel> program

   /noprofile        指定不应该加载用户的配置文件。
                     这会加速应用程序加载,但
                     可能会造成一些应用程序运行不正常。
   /profile          指定应该加载用户的配置文件。
                     这是默认值。
   /env              要使用当前环境,而不是用户的环境。
   /netonly          只在指定的凭据限于远程访问的情况下才使用。
   /savecred         用用户以前保存的凭据。
   /smartcard        如果凭据是智能卡提供的,则使用这个选项。
   /user             <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
   /showtrustlevels  显示可以用作 /trustlevel 的参数的
                     信任级别。
   /trustlevel       <Level> 应该是在 /showtrustlevels 中枚举
                     的一个级别。
   program           EXE 的命令行。请参阅下面的例子

示例:
> runas /noprofile /user:mymachine\administrator cmd
> runas /profile /env /user:mydomain\admin "mmc %windir%\system32\dsa.msc"
> runas /env /user:[email protected] "notepad \"my file.txt\""

注意:  只在得到提示时才输入用户的密码。
注意:  /profile 跟 /netonly 不兼容。
注意:  /savecred 跟 /smartcard 不兼容。

检测日志

Windows 安全日志

测试复现

演示降权操作:域环境下测试,提权为域管理员权限执行时,需要输入域管理员密码。

演示

测试留痕

注意:演示主机与日志留痕主机,非相同主机。仅为了证明Windows server 12以上版本操作系统可记录操作命令行及其参数。

已创建新进程。

创建者主题:
 安全 ID:  QAX\Administrator
 帐户名:  Administrator
 帐户域:  QAX
 登录 ID:  0x4463EA

目标主题:
 安全 ID:  NULL SID
 帐户名:  -
 帐户域:  -
 登录 ID:  0x0

进程信息:
 新进程 ID:  0x12ac
 新进程名称: C:\Windows\System32\runas.exe
 令牌提升类型: %%1936
 强制性标签:  Mandatory Label\High Mandatory Level
 创建者进程 ID: 0x12b0
 创建者进程名称: C:\Windows\System32\cmd.exe
 进程命令行: runas  /user:qax\weixin cmd

检测规则/思路

sigma规则

title: Runas命令进行权限提升
description: 攻击Runas命令:能让域用户/普通User用户以管理员身份运行指定程序。
status: experimental
references:
    - https://walterlv.blog.csdn.net/article/details/89838982
logsource:
​    product: windows
​    service: security
detection:
​    selection:
​        EventID:
​                - 4688 #Windows 安全日志
        New Process Name: 'runas.exe' #Application Name
        Commanline: 
                - '/user'
​    condition: selection
level: high

建议

如果攻击者使用标准cmd或者powershell,则分析人员可以通过审核命令行活动来检测令牌操纵。具体地说,分析人员应寻找该runas命令的使用。Windows默认情况下不启用详细的命令行日志记录。

分析师还可以监视Windows API(例如DuplicateToken(Ex))的使用 ImpersonateLoggedOnUser ,并将 SetThreadToken 活动与其他可疑行为相关联,以减少可能由于用户和管理员的正常良性使用而导致的误报。

相关TIP

[[T1134-001-win-CVE-2020-1472]] [[T1134-005-win-SID历史记录注入]]

参考推荐

MITRE-ATT&CK-T1134-001

https://attack.mitre.org/techniques/T1134/001/

Runas命令:能让域用户/普通User用户以管理员身份运行指定程序

https://walterlv.blog.csdn.net/article/details/89838982