經過Fox-IT咱們可讓客戶瞭解其企業組織中出現的常見安全風險。當攻擊者能夠利用NT LAN Manager身份驗證協議(如下簡稱:NTLM身份驗證)時,憑據重用就有這樣的風險,即這種協議一般在Microsoft Active Directory中保持啓用狀態。NTLM認證中的不安全性已有超過15年。該協議可能被濫用,是經過一個被稱爲「中繼」的過程劫持受害者的會話,該過程經過將受害者的憑據轉發到與預期不一樣的服務來濫用受害者的憑據。在許多狀況下,默認狀況仍然支持和啓用NTLM身份驗證,即便它已被更安全的Kerberos替換爲默認身份驗證方法。html
在本文中,咱們將演示如何使用NtlmRelayx將憑證中繼到LDAP、IMAP和MSSQL,NtlmRelayx是著名的smbrelayx工具的FOX IT擴展。要防護此類攻擊:git
NTLM身份驗證是一種基於挑戰 - 響應的協議。挑戰- 響應協議使用一個通用的共享祕密(在本例中是用戶密碼)來驗證客戶端。服務器發送一個質詢,客戶端回覆此質詢的響應。若是質詢與服務器計算的質詢相匹配,則接受身份驗證。NTLM身份驗證是一種複雜的協議,這裏只是簡單的闡述。能夠在http://davenport.sourceforge.net/ntlm.html中找到很是詳細的描述。github
NTLM身份驗證協議有3個步驟:shell
交互3條消息後,服務器將回復一條消息,代表身份驗證成功,或者身份驗證失敗。根據使用的協議,客戶端與服務器之間的會話如今已通過身份驗證。此過程以下圖所示:數據庫
做爲攻擊者,若是客戶端可以被劫持鏈接到攻擊者,那麼這個過程可能會被濫用。如何作到這一點將在下一節中闡述。一旦攻擊者擁有一個進行身份驗證的鏈接客戶端,他們就能夠輕鬆地將3條消息轉發到客戶端和服務器之間的服務器,直到質詢 - 響應週期完成。瀏覽器
在鏈接經過身份驗證時,攻擊者能夠簡單地向客戶端發送錯誤消息,或者斷開鏈接。以後,攻擊者可使用該會話從中繼身份驗證的用戶中與服務器進行交互。安全
NTLM身份驗證被封裝在其餘協議中,但不管上層協議如何,消息都是相同的。這容許在其餘協議中使用NTLM消息。例如,使用HTTP進行身份驗證的客戶端會在「受權」標頭中發送NTLM身份驗證消息。攻擊者能夠從HTTP標頭中取出這些消息,並在其餘協議(如SMB)中使用它們。服務器
NTLM在多種協議中被支持,例如SMB,HTTP(S),LDAP,IMAP,SMTP,POP3和MSSQL。網絡
還有一點還沒有解釋,那就是如何讓客戶端與攻擊者鏈接,而不是與真正的服務器鏈接。有幾種方法能夠得到可中繼的流量:dom
在Fox-IT中常常遇到使用不安全協議的名稱解析流量。工做站或服務器一般被配置爲網絡中再也不存在的主機或沒法使用DNS解析其主機名的主機。當這種狀況發生時,Windows工做站會退回到名稱解析協議,如NBNS和LLMNR,它們依賴廣播流量來請求同一網絡中的主機將主機名解析爲IP地址。因爲同一網段中的全部主機均可以查看此流量(取決於防火牆配置),所以任何主機均可以回覆請求。這使攻擊者有機會僞造所請求名稱的地址。該過程以下所示。
也許過去幾年黑客中最臭名昭著的功能是Windows代理自動檢測(WPAD)功能。此功能基本上會經過DNS查找名爲WPAD的主機名,若是不成功,則能夠經過上面描述的llmnr和nbns進行攻擊,而後鏈接到它能找到的第一個主機。濫用此功能變得更加容易,由於當提示進行身份驗證時,工做站將自動嘗試使用NTLM身份驗證進行驗證,而後攻擊者可能會中繼該身份驗證。微軟在2016年6月修補了這方面的一些問題,但有時Fox-IT仍在網絡中遇到這種狀況。
攻擊者接管受害者流量的中間人攻擊一般在企業網絡中具備很大的破壞性,尤爲是在使用諸如ARP欺騙之類的技術時。可是,當企業設備鏈接到不受信任的網絡(例如公共WiFi網絡)時,攻擊者能夠攻擊受害者並攔截不受TLS保護的流量,將其重定向到受害者工做站信任的位置。而後,若是啓用了自動內部網檢測(這是默認設置),受害者將自動進行身份驗證。
有幾種工具能夠濫用NTLM身份驗證。其中一個是smbrelayx,它是Core Security的impacket 庫的一部分。Ntlmrelayx是由Fox-IT開發的smbrelayx工具的擴展和部分重寫。它具備適用於各類協議的中繼功能。該工具接受多個目標,在每一個目標之間循環,以找到要進行身份驗證的系統。該工具具備一個SMB和HTTP服務器,從中它能夠將NTLM身份驗證中繼到SMB、HTTP(S)、IMAP、LDAP和MSSQL。
中繼到smb是一種經典攻擊,它已是smbrelayx的一部分。若是您不熟悉此攻擊,中繼到SMB容許攻擊者在禁用了SMB簽名的主機上執行文件,前提是被中繼的用戶在設備上具備管理權限。對於非管理用戶,ntlmrelayx添加了啓動smbclient shell的選項,容許攻擊者與共享進行交互,例以下載或上傳文件。可使用交互式標誌(-i)完成此攻擊,該標誌將生成本地TCP shell,該shell能夠與例如netcat鏈接。
中繼到LDAP是Ntlmrelayx中的一個新增功能。LDAP是一個有趣的協議,由於它用於直接查詢目錄,該目錄包含了許多攻擊者感興趣的信息。更有趣的是,在默認狀況下,域中的全部賬戶(包括計算機賬戶)均可以讀取這些信息的大部分。這就是Ntlmrelayx與另外一個Fox IT開發工具ldapdomaindump集成的地方。此工具嘗試從域中收集儘量更多的信息,包括用戶,其組成員身份,域計算機和域策略。
除了收集信息以外,還能夠經過LDAP寫入目錄。若是ntlmrelayx遇到具備域管理員權限的用戶,它將建立一個新的域管理員賬戶,該賬戶當即使攻擊者能夠徹底控制域:
雖然在當前版本的Exchange中默認狀況下未啓用,但許多企業組織在其Exchange服務器上經過IMAP進行NTLM身份驗證。這容許中繼到IMAP,使攻擊者能夠直接訪問受害者的電子郵件。當中繼到IMAP時,ntlmrelayx能夠選擇在電子郵件中搜索關鍵字,或者只在用戶的指定收件箱中下載全部最新的電子郵件。
中繼到MSSQL目前僅做爲理論證實存在,但能夠在命令行上指定查詢,這些查詢將在數據庫的受害者上中被執行
那麼,在企業組織能夠作些什麼來抵禦這些攻擊呢?上述全部攻擊都濫用了NLTM身份驗證協議,所以惟一完整的解決方案是徹底禁用NTLM並切換到Kerberos。可是,許多企業組織都有不支持Kerberos身份驗證的舊產品或操做系統,所以禁用NTLM將對業務產生至關大的影響。做爲緩解措施,那麼能夠啓用多種設置以減小最小化的中間人攻擊風險。
除了這些特定的服務器端設置以外,如下通常強化能夠防止NTLM中繼:
Ntlmrelayx已經提交到Impacket存儲庫中,能夠在Impacket 示例目錄中找到。
0x04 更多資源咱們在嘗試理解NTLM方面的大部分研究都是在如下資源的幫助下完成的: