歷史沿革 早期
SMB 協定在網路上傳輸明文口令。後來出現 LAN Manager Challenge/Response 驗證機制,簡稱LM,它是如此簡單以至很容易就被破解。微軟提出了WindowsNT挑戰/回響驗證機制,稱之為NTLM。現在已經有了更新的NTLMv2以及Kerberos驗證體系。NTLM是windows早期安全協定,因向後兼容性而保留下來。NTLM是NT LAN Manager的縮寫,即NT LAN管理器。
NTLM 工作流程 從Win2000開始默認協定為Kerboros,下列情況會調用NTLM:
UNIX客戶端需要與NT伺服器通話時。
有正在使用驗證NTLM的伺服器信息塊(SMB)後台程式的
UNIX 客戶端時。
也即認證方或被認證方有僅支持NTLM情況時。
它以挑戰/回響(Challenge/Response)順序為基礎。
1.客戶端傳送用戶名和域名到伺服器。
3.DC用客戶端密碼隨機產生一個8位元組得挑戰(Challenge),傳送給
伺服器 。
4.伺服器將挑戰轉發給客戶端。
5.客戶端用密碼經過hash及DES
加密算法 等操作得到一個加密結果回響(Response)傳送給伺服器。
6.伺服器將回響轉發給DC。
7.DC做同樣操作驗證客戶端回響。
8.驗證結束,返回結果通知伺服器。
身份驗證 從工作流程我們可以看出,NTLM是以當前用戶的身份向Telnet伺服器傳送登錄請求的,而不是用你自己的帳戶和密碼登錄,顯然,你的登錄將會失敗。舉個例子來說,你家的機器名為A(
本地機器 ),你登錄的機器名為B(遠地機器),你在A上的帳戶是ABC,密碼是1234,你在B上的帳號是XYZ,密碼是5678,當你想Telnet到B時,NTLM將自動以當前用戶的帳號和密碼作為登錄的憑據來進行上面的7項操作,即用ABC和1234,而並非用你要登錄帳號XYZ和5678,且這些都是自動完成的,根本不給你動手的機會,因此你的登錄操作將失敗。
NTLM
身份驗證 選項有三個值。默認是2。可以有下面這些值:
0:不使用NTLM身份驗證。
1:先嘗試NTLM身份驗證,如果失敗,再使用用戶名和密碼。
2:只使用NTLM身份驗證。
Telnet
伺服器 使用NTLM的有3選項之一時,客戶機會顯示下面情況中的一種:
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:
NTLM身份驗證選項為0時不使用NTML身份驗證,直接輸入用戶名和密碼,比如你可以輸入自己的登錄帳號密碼XYZ和5678。
2)身份驗證選項=1時
NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:
這時先嘗試NTLM
身份驗證 ,如果失敗,再使用用戶名和密碼,其實這種方式對於我們來說,與上一種方式沒什麼區別。
3)身份驗證選項=2時,就是我們一開始遇到的現象。
對NTLM身份驗證選項值的改變可以使用Win2000為我們提供Telnet
伺服器管理 程式
tlntadmn.exe ;其實Win2000同時為我們提供了Telnet客戶機和
伺服器 程式:Telnet.exe是客戶機程式(Client),
tlntsvr.exe 是伺服器程式(server),及Telnet伺服器管理程式tlntadmn.exe。若我們不需要NTLM身份驗證可以按以下步驟設定:
1、單擊“開始”—>;“運行“,鍵入tlntadmn,然後確定
2、在彈出的選項中選擇Display,再選擇Change Registry Settings。
3、選擇NTLM。
4、改變NTLM值為0不使用NTML身份驗證
5、重新啟動Telnet伺服器。
AllowTrustedDomain:是否允許域用戶訪問。默認值是1,允許信任域用戶訪問。可以改為0:不允許域用戶訪問(只允許
本地用戶 )。
DefaultDomain:可以對與該計算機具有信任關係的任何域設定。默認值是"."。
DefaultShell:顯示shell安裝的路徑位置。默認值是:%systemroot%\System32\Cmd.exe /q /k
MaxFailedLogins:在連線終止之前顯示嘗試登錄失敗的最大次數。默認是3。
LoginScript:顯示Telnet伺服器登錄腳本的路徑位置。默認的位置就是“%systemroot%\System32\login.cmd”,你可以更改腳本內容,這樣登錄進Telnet的歡迎螢幕就不一樣了。
TelnetPort:顯示telnet
伺服器 偵聽telnet請求的連線埠。默認是:23。你也可以更改為其他連線埠。
因此NTLM也是Windows 2000的一種重要安全策略,對於入侵者來說,NTLM就是橫在面前的一座大山,哪怕你獲得了管理員帳號和密碼,想簡單通過NTLM也並非易事,況且win2000中的telnet默認僅以NTLM方式驗證身份,當然道高一尺,魔高一丈,作為
網路管理員 ,不是說有了NTLM保護,就可以高枕無憂了,對於網路高手或黑客來說,時刻在撲捉
系統漏洞 和管理員疏忽,要突破NTLM的封鎖,常見的有以下幾種方法:
1、通過修改遠程註冊表更改telnet
伺服器配置 ,將驗證方式從2改為1或0;
2、使用NTLM.exe,上傳後直接運行,可將telnet
伺服器 驗證方式從2改為1;
3、在本地建立掃描到的用戶,以此用戶身份開啟telnet客戶機並進行
遠程登錄 ;
4、使用軟體,比如opentelnet.exe(需要管理員許可權且開啟IPC管道)
5、使用腳本,如
RTCS ,(需要管理員許可權但不依賴IPC管道)
基本上是以上的5種,其中後兩種是我們比較常用的開telnet的手法,而且使用方法十分簡單,命令如下:
OpenTelnet.exe \\server username password NTLMAuthor telnetport
OpenTelnet.exe \\
伺服器 地址 管理員用戶名 密碼 驗證方式(填0或1) telnet連線埠
cscript RTCS.vbe targetIP username password NTLMAuthor telnetport
cscript RTCS.vbe
禁用驗證 Windows NT Servers Service Pack 4和後續的版本都支持三種不同的
身份驗證 方法:LanManager (LM)身份驗證;Windows NT(也叫NTLM)身份驗證;Windows NT Version 2.0(也叫NTLM2)身份驗證。
默認的情況下,當一個客戶嘗試連線一台同時支持LM和NTLM身份驗證方法的
伺服器 時,LM身份驗證會優先被使用。所以建議禁止LM身份驗證方法。
2.定位到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa;
3.選擇選單“編輯”,“添加數值”;
4.數值名稱中輸入:LMCompatibilityLevel,數值類型為:DWORD,單擊確定;
5.雙擊新建的數據,並根據具體情況設定以下值:
0-傳送LM和NTLM回響;
1-傳送LM和NTLM回響;
2-僅傳送NTLM回響;
3-僅傳送NTLMv2回響;(Windows 2000有效)
4-僅傳送NTLMv2回響,拒絕LM;(Windows 2000有效)
5-僅傳送NTLMv2回響,拒絕LM和NTLM;(Windows 2000有效)
7.重新啟動機器。