如何提取SID字符串?

逆向工程 部件
2021-06-19 00:42:50

我在木马样本中发现了以下内容。首先,它获取当前进程的令牌,然后GetTokenInformation()使用TokenGroups作为InfoClass参数调用API 所以,它把 TOKEN_GROUPS 结构放到了某个地方。稍后,它使用AllocateAndInitializeSid()具有以下参数API:

      PUSH EAX
      PUSH EBX
      PUSH EBX
      PUSH EBX
      PUSH EBX
      PUSH EBX
      PUSH EBX
      PUSH 220
      PUSH 20
      PUSH 2
      LEA EAX, DWORD PTR DS:[EBP - C]
      PUSH EAX
      CALL DWORD PTR DS:[&ADVAPI32.AllocateAndInitializeSid]

那么,SID 字符串是 S-1-20-220 吗?如果没有,我如何提取它?

注意:在几行之后,木马使用EqualSid()API将此 SID 与 TOKEN_GROUPS 结构中的 SID 值进行比较我的意思是,它访问 TOKEN_GROUPS 结构的第二个字段,该结构是一个由 SID_AND_ATTRIBUTES 结构组成的数组。这些结构中的每一个都有一个 SID 字段,用于与初始化的 SID 进行比较。出于这个原因,我想知道初始化的 SID 是什么样子的。

最好的祝福,

1个回答

基于以下文档AllocateAndInitializeSid()

  PUSH EAX ; pSid
  PUSH EBX ; dwSubAuthority7
  PUSH EBX ; dwSubAuthority6
  PUSH EBX ; dwSubAuthority5
  PUSH EBX ; dwSubAuthority4
  PUSH EBX ; dwSubAuthority3
  PUSH EBX ; dwSubAuthority2
  PUSH 220 ; dwSubAuthority1
  PUSH 20  ; dwSubAuthority0
  PUSH 2   ; nSubAuthorityCount
  LEA EAX, DWORD PTR DS:[EBP - C]
  PUSH EAX ; pIdentifierAuthority
  CALL DWORD PTR DS:[&ADVAPI32.AllocateAndInitializeSid]

我猜它EBX被设置为0,所以这实际上是来自https://msdn.microsoft.com/en-us/library/windows/desktop/aa379620(v=vs.85).aspx的以下片段

片段

的 SIDBUILTIN\AdministratorsS-1-5-32-544