連接埠掃描器(zz)

來源:互聯網
上載者:User


--  連接埠掃描器
第一節、連接埠掃描器
一、連接埠掃描器功能簡介:
   伺服器上所開放的連接埠就是潛在的通訊通道,也就是一個入侵通道。對目標電腦進行連接埠掃描,能得到許多有用的資訊,進行連接埠掃描的方法很多,可以是手工進行掃描、也可以用連接埠掃描軟體進行。
   掃描器通過選用遠程TCP/IP不同的連接埠的服務,並記錄目標給予的回答,通過這種方法可以搜集到很多關於目標主機的各種有用的資訊,例如遠程系統是否支援匿名登陸、是否存在可寫的FTP目錄、是否開放TELNET服務和HTTPD服務等。
二、常用連接埠掃描技術:
   1、TCP connect()掃描:
   這是最基本的TCP掃描,作業系統提供的connect()系統調用可以用來與每一個感興趣的目標電腦的連接埠進行串連。如果連接埠處於偵聽狀態,那麼connect()就能成功。否則,這個連接埠是不能用的,即沒有提供服務。這個技術的一個最大的優點是,你不需要任何許可權。系統中的任何使用者都有權利使用這個調用。另一個好處就是速度,如果對每個目標連接埠以線性方式,使用單獨的connect()調用,那麼將會花費相當長的時間,使用者可以通過同時開啟多個通訊端來加速掃描。使用非阻塞I/O允許你設定一個低的時間用盡周期,同時觀察多個通訊端。但這種方法的缺點是很容易被察覺,並且被防火牆將掃描資訊包過濾掉。目標電腦的logs檔案會顯示一連串的串連和串連出錯訊息,並且能很快使它關閉。
   2、TCP SYN掃描:
   這種技術通常認為是“半開放”掃描,這是因為掃描程式不必要開啟一個完全的TCP串連。掃描程式發送的是一個SYN資料包,好象準備開啟一個實際的串連並等待反應一樣(參考TCP的三向交握建立一個TCP串連的過程)。一個SYN|ACK的返回資訊表示連接埠處於偵聽狀態:返回RST表示連接埠沒有處於偵聽態。如果收到一個SYN|ACK,則掃描程式必須再發送一個RST訊號,來關閉這個串連過程。這種掃描技術的優點在於一般不會在目標電腦上留下記錄,但這種方法的缺點是必須要有root許可權才能建立自己的SYN資料包。
   3、TCP FIN 掃描:
   SYN掃描雖然是“半開放”方式掃描,但在某些時候也不能完全隱藏掃描者的動作,防火牆和包過濾器會對管理員指定的連接埠進行監視,有的程式能檢測到這些掃描。相反,FIN資料包在掃描過程中卻不會遇到過多問題,這種掃描方法的思想是關閉的連接埠會用適當的RST來回複FIN資料包。另一方面,開啟的連接埠會忽略對FIN資料包的回複。這種方法和系統的實現有一定的關係,有的系統不管連接埠是否開啟都會回複RST,在這種情況下此種掃描就不適用了。另外這種掃描方法可以非常容易的區分伺服器是運行Unix系統還是NT系統。
   4、IP段掃描:
   這種掃描方式並不是新技術,它並不是直接發送TCP探測資料包,而是將資料包分成兩個較小的IP段。這樣就將一個TCP頭分成好幾個資料包,從而過濾器就很難探測到。但必須小心:一些程式在處理這些小資料包時會有些麻煩。
   5、TCP 反向 ident掃描:
   ident 協議允許(rfc1413)看到通過TCP串連的任何進程的擁有者的使用者名稱,即使這個串連不是由這個進程開始的。例如掃描者可以串連到http連接埠,然後用identd來探索服務器是否正在以root許可權運行。這種方法只能在和目標連接埠建立了一個完整的TCP串連後才能看到。
   6、FTP 返回攻擊:
   FTP協議的一個有趣的特點是它支援代理(proxy)FTP串連,即入侵者可以從自己的電腦self.com和目標主機target.com的FTP server-PI(協議解譯器)串連,建立一個控制通訊串連。然後請求這個server-PI啟用一個有效server-DTP(資料轉送進程)來給Internet上任何地方傳送檔案。對於一個User-DTP,儘管RFC明確地定義請求一個伺服器傳送檔案到另一個伺服器是可以的,但現在這個方法並不是非常有效。這個協議的缺點是“能用來發送不能跟蹤的郵件和新聞,給許多伺服器造成打擊,用盡磁碟,企圖越過防火牆”。
   7、UDP ICMP連接埠不能到達掃描:
   這種方法與上面幾種方法的不同之處在於使用的是UDP協議,而非TCP/IP協議。由於UDP協議很簡單,所以掃描變得相對比較困難。這是由於開啟的連接埠對掃描探測並不發送確認資訊,關閉的連接埠也並不需要發送一個錯誤資料包。幸運的是許多主機在向一個未開啟的UDP連接埠發送資料包時,會返回一個ICMP_PORT_UNREACH錯誤,這樣掃描者就能知道哪個連接埠是關閉的。UDP和ICMP錯誤都不保證能到達,因此這種掃描器必須還實現在一個包看上去是丟失的時候能重新傳輸。這種掃描方法是很慢的,因為RFC對ICMP錯誤訊息的產生速率做了規定。同樣這種掃描方法也需要具有root許可權。
   8、UDP recvfrom()和write() 掃描:
   當非root使用者不能直接讀到連接埠不能到達錯誤時,Linux能間接地在它們到達時通知使用者。比如,對一個關閉的連接埠的第二個write()調用將失敗。在非阻塞的UDP通訊端上調用recvfrom()時,如果ICMP出錯還沒有到達時回返回EAGAIN-重試。如果ICMP到達時,返回ECONNREFUSED-串連被拒絕。這就是用來查看連接埠是否開啟的技術。
--  作者:錐子
--  發布時間:2005-1-16 22:21:00

--  

三、編寫一個簡單的連接埠掃描程式:
/********************************************/
/* 連接埠掃描器 原始碼 */
/* PortScanner.cpp */
/********************************************/

#include <stdio.h>
#include <string.h>
#include <winsock.h>

int main(int argc, char *argv[]) {

int mysocket;

int pcount = 0;

struct sockaddr_in my_addr;

WSADATA wsaData;

WORD wVersionRequested=MAKEWORD(1,1);

if(argc < 3) {

printf("usage: %s <host> <maxport>//n", argv[0]);

exit(1);

}

if (WSAStartup(wVersionRequested , &wsaData)){

printf("Winsock Initialization failed.//n");

exit(1);

}

for(int i=1; i < atoi(argv[2]); i++){

if((mysocket = socket(AF_INET, SOCK_STREAM,0)) == INVALID_SOCKET){

printf("Socket Error");

exit(1);

}

my_addr.sin_family = AF_INET;

my_addr.sin_port = htons(i);

my_addr.sin_addr.s_addr = inet_addr(argv[1]);

if(connect(mysocket, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == SOCKET_ERROR)

closesocket(mysocket);

else{

pcount++;

printf("Port %d - open//n", i);

}}

printf("%d ports open on host - %s//n", pcount, argv[1]);

closesocket(mysocket);

WSACleanup();

return 0;
}
   這個程式使用Borland C++編譯,程式中關鍵代碼是“my_addr.sin_port = htons(i)”,因為變數i是一個迴圈量,它從一開始到使用者設定值結束,而htons(i)則是對串連遠程伺服器需要使用的連接埠進行定義,之後使用connect()函數串連指定連接埠,通過傳回值判斷這個連接埠是否開啟,這樣一個連接埠掃描的思路就出現了。
   程式中用到的socket函數庫是專門實現網路連接的一套綜合函數庫,這套函數內容豐富,在各種流行程式設計語言中都有,駭客在學習了C語言和socket函數庫以後,便可以快速掌握各種程式設計語言、並能夠編寫出相當數量的駭客工具。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.