㈠ Python 實現埠掃描
一、常見埠掃描的原理
0、秘密掃描
秘密掃描是一種不被審計工具所檢測的掃描技術。
它通常用於在通過普通的防火牆或路由器的篩選(filtering)時隱藏自己。
秘密掃描能躲避IDS、防火牆、包過濾器和日誌審計,從而獲取目標埠的開放或關閉的信息。由於沒有包含TCP 3次握手協議的任何部分,所以無法被記錄下來,比半連接掃描更為隱蔽。
但是這種掃描的缺點是掃描結果的不可靠性會增加,而且掃描主機也需要自己構造IP包。現有的秘密掃描有TCP FIN掃描、TCP ACK掃描、NULL掃描、XMAS掃描和SYN/ACK掃描等。
1、Connect()掃描
此掃描試圖與每一個TCP埠進行「三次握手」通信。如果能夠成功建立接連,則證明埠開發,否則為關閉。准確度很高,但是最容易被防火牆和IDS檢測到,並且在目標主機的日誌中會記錄大量的連接請求以及錯誤信息。
TCP connect埠掃描服務端與客戶端建立連接成功(目標埠開放)的過程:
① Client端發送SYN;
② Server端返回SYN/ACK,表明埠開放;
③ Client端返回ACK,表明連接已建立;
④ Client端主動斷開連接。
建立連接成功(目標埠開放)
TCP connect埠掃描服務端與客戶端未建立連接成功(目標埠關閉)過程:
① Client端發送SYN;
② Server端返回RST/ACK,表明埠未開放。
優點:實現簡單,對操作者的許可權沒有嚴格要求(有些類型的埠掃描需要操作者具有root許可權),系統中的任何用戶都有權力使用這個調用,而且如果想要得到從目標埠返回banners信息,也只能採用這一方法。
另一優點是掃描速度快。如果對每個目標埠以線性的方式,使用單獨的connect()調用,可以通過同時打開多個套接字,從而加速掃描。
缺點:是會在目標主機的日誌記錄中留下痕跡,易被發現,並且數據包會被過濾掉。目標主機的logs文件會顯示一連串的連接和連接出錯的服務信息,並且能很快地使它關閉。
2、SYN掃描
掃描器向目標主機的一個埠發送請求連接的SYN包,掃描器在收到SYN/ACK後,不是發送的ACK應答而是發送RST包請求斷開連接。這樣,三次握手就沒有完成,無法建立正常的TCP連接,因此,這次掃描就不會被記錄到系統日誌中。這種掃描技術一般不會在目標主機上留下掃描痕跡。但是,這種掃描需要有root許可權。
·埠開放:(1)Client發送SYN;(2)Server端發送SYN/ACK;(3)Client發送RST斷開(只需要前兩步就可以判斷埠開放)
·埠關閉:(1)Client發送SYN;(2)Server端回復RST(表示埠關閉)
優點:SYN掃描要比TCP Connect()掃描隱蔽一些,SYN僅僅需要發送初始的SYN數據包給目標主機,如果埠開放,則相應SYN-ACK數據包;如果關閉,則響應RST數據包;
3、NULL掃描
反向掃描—-原理是將一個沒有設置任何標志位的數據包發送給TCP埠,在正常的通信中至少要設置一個標志位,根據FRC 793的要求,在埠關閉的情況下,若收到一個沒有設置標志位的數據欄位,那麼主機應該舍棄這個分段,並發送一個RST數據包,否則不會響應發起掃描的客戶端計算機。也就是說,如果TCP埠處於關閉則響應一個RST數據包,若處於開放則無相應。但是應該知道理由NULL掃描要求所有的主機都符合RFC 793規定,但是windows系統主機不遵從RFC 793標准,且只要收到沒有設置任何標志位的數據包時,不管埠是處於開放還是關閉都響應一個RST數據包。但是基於Unix(*nix,如Linux)遵從RFC 793標准,所以可以用NULL掃描。 經過上面的分析,我們知道NULL可以辨別某台主機運行的操作系統是什麼操作系統。
埠開放:Client發送Null,server沒有響應
埠關閉:(1)Client發送NUll;(2)Server回復RST
說明:Null掃描和前面的TCP Connect()和SYN的判斷條件正好相反。在前兩種掃描中,有響應數據包的表示埠開放,但在NUll掃描中,收到響應數據包表示埠關閉。反向掃描比前兩種隱蔽性高些,當精確度也相對低一些。
用途:判斷是否為Windows系統還是Linux。
4、FIN掃描
與NULL有點類似,只是FIN為指示TCP會話結束,在FIN掃描中一個設置了FIN位的數據包被發送後,若響應RST數據包,則表示埠關閉,沒有響應則表示開放。此類掃描同樣不能准確判斷windows系統上埠開發情況。
·埠開放:發送FIN,沒有響應
·埠關閉:(1)發送FIN;(2)回復RST
5、ACK掃描
掃描主機向目標主機發送ACK數據包。根據返回的RST數據包有兩種方法可以得到埠的信息。方法一是: 若返回的RST數據包的TTL值小於或等於64,則埠開放,反之埠關閉。
6、Xmas-Tree掃描
通過發送帶有下列標志位的tcp數據包。
·URG:指示數據時緊急數據,應立即處理。
·PSH:強制將數據壓入緩沖區。
·FIN:在結束TCP會話時使用。
正常情況下,三個標志位不能被同時設置,但在此種掃描中可以用來判斷哪些埠關閉還是開放,與上面的反向掃描情況相同,依然不能判斷windows平台上的埠。
·埠開放:發送URG/PSH/FIN,沒有響應
·埠關閉:(1)發送URG/PSH/FIN,沒有響應;(2)響應RST
XMAS掃描原理和NULL掃描的類似,將TCP數據包中的ACK、FIN、RST、SYN、URG、PSH標志位置1後發送給目標主機。在目標埠開放的情況下,目標主機將不返回任何信息。
7、Dump掃描
也被稱為Idle掃描或反向掃描,在掃描主機時應用了第三方僵屍計算機掃描。由僵屍主機向目標主機發送SYN包。目標主機埠開發時回應SYN|ACK,關閉時返回RST,僵屍主機對SYN|ACK回應RST,對RST不做回應。從僵屍主機上進行掃描時,進行的是一個從本地計算機到僵屍主機的、連續的ping操作。查看僵屍主機返回的Echo響應的ID欄位,能確定目標主機上哪些埠是開放的還是關閉的。
二、Python 代碼實現
1、利用Python的Socket包中的connect方法,直接對目標IP和埠進行連接並且嘗試返回結果,而無需自己構建SYN包。
2、對IP埠進行多線程掃描,注意的是不同的電腦不同的CPU每次最多創建的線程是不一樣的,如果創建過多可能會報錯,需要根據自己電腦情況修改每次掃描的個數或者將seelp的時間加長都可以。
看完了嗎?感覺動手操作一下把!
python學習網,免費的在線學習python平台,歡迎關注!
本文轉自:https://www.jianshu.com/p/243bb7cfc40f
㈡ 什麼是埠掃描器它有什麼作用
s 掃描器是一款命令行下高速掃描利器,通過最新的瑞星殺毒軟體測試
命令: s.exe syn ip1 ip2 埠號 /save
s.exe tcp ip1 ip2 埠號 線程數 /save
s.exe掃描器的使用說明
首先我解釋下什麼是S掃描器,S掃描器是針對微軟ms04045漏洞出的一個掃描,原來作者出這東西
的目的是為了掃描這個漏洞,但現在已經變成我們黑客手中的兵器了,大家也許看過很多如何找肉雞的
動畫或刷QB的動畫,那些動畫裡面很多都是用S掃描器來掃描肉雞或別人電腦所開放的埠及一些漏洞,
都用這工具的好處是它的掃描速度實在是一個字---強! 今天我就來教下大家如何使用S掃描器。
簡單說明下它的用處:
S掃描器是一個簡單的使用兩種常用的掃描方式進行埠掃描的埠掃描器程序.
可實現的功能是:
1.兩種不同的掃描方式(SYN掃描和一般的connect掃描)
2.可以掃描單個IP或IP段所有埠
3.可以掃描單個IP或IP段單個埠
4.可以掃描單個IP或IP段用戶定義的埠
5.可以顯示打開埠的banner
6.可將結果寫入文件
7.TCP掃描可自定義線程數
用法:scanner TCP/SYN StartIP [EndIP] Ports [Threads] [/Banner] [/Save]
參數說明:
TCP/SYN -> TCP方式掃描或SYN方式掃描(SYN掃描需要在win 2k或以上系統才行),SYN掃描對本機無效
StartIP -> 起始掃描的IP
EndIP -> 結束掃描的IP,可選項,如果這一項沒有,就只是對單個IP掃描
Ports -> 可以是單個埠,連續的一段埠或非連續的埠
Threads -> 使用最大線程數去掃描(SYN掃描不需要加這一項),不能超過1024線程
/Banner -> 掃描埠時一並將Banner顯示出來,這一選項只對TCP掃描有效
/Save -> 將結果寫入當前目錄的Result.txt文件中去
打開S掃描器,下面我舉幾個例子演示下S掃描器的主要幾個作用。
例子一:
S TCP 218.80.12.1 218.80.12.123 80 512
TCP掃描218.80.12.1到218.80.12.123這IP段中的80埠,最大並發線程是512
例子二:
S TCP 218.80.12.1 218.80.12.123 21,5631 512 /Banner
TCP掃描218.80.12.1到218.80.12.123這IP段中的21和5631埠,最大並發線程是512,並顯示Banner
例子三:
S TCP 218.80.12.1 218.80.12.12 1-200 512
TCP掃描218.80.12.1到218.80.12.12這IP段中的1到200埠,最大並發線程是512
例子四:
S TCP 218.80.12.7 1-200 512
TCP掃描218.80.12.7這IP中的1到200埠,最大並發線程是512
例子五:
S SYN 218.80.12.7 1-65535 /Save
SYN掃描218.80.12.7這IP中的1到65535埠,將結果寫入Result.txt
掃描結束後Result.txt就存放在你的S掃描器所在的目錄里。剛才掃描的東西都在裡面。
例子六:
S SYN 218.80.12.1 218.80.12.255 21 /Save
SYN掃描218.80.12.1到218.80.12.255這IP段中的21埠,將結果寫入Result.txt
這個我重點說明一下,因為這條命令就是專門用來找肉雞的,掃描一個IP段有沒有開3389的或1433的
我示範下:S SYN 218.80.1.1 218.80.255.255 3389 /Save
注意:
1.SYN掃描是很依賴於掃描者和被掃描者的網速的,如果你是內網的系統,那你不一定可以使用SYN掃描的
,因為你的網關的類型會決定內網系統是否能進行SYN掃描.如果你的配置較低的話,我也不推薦使用
SYN掃描.SYN掃描速度是比TCP掃描的速度快很多的,但在穩定性方面卻不是太好,所以自己決定使用
哪種模式進行掃描。
2.SYN掃描不需要線程那個參數,請看上面例子5和6
3.TCP掃描的最大並發線程不能超過1024.
4.使用SYN模式掃描,不能掃描Banner,具體為什麼不能,請查看有關SYN的資料
5.內網用戶的朋友可以用tcp掃描
關於S.exe 的用法和錯誤解釋
S掃描器掃描命令是:
文件名 參數 起始IP 結束IP 要掃描的埠 保存
s SYN 61.0.0.0 61.255.255.255 1433 save
1433是SQL server 伺服器埠
8080是代理伺服器埠
㈢ 埠掃描原理及工具 - 安全工具篇
"埠"是英文port的意譯,可以認為是設備與外界通訊交流的出口。埠可分為虛擬埠和物理埠,其中虛擬埠指計算機內部埠,不可見。例如計算機中的80埠、21埠、23埠等。
一台擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那麼,主機是怎樣區分不同的網路服務呢?顯然不能只靠IP地址,因為IP 地址與網路服務的關系是一對多的關系。實際上是通過「IP地址+埠號」來區分不同的服務的。
因此,一個開放的埠代表一個提供的服務,不同的服務具有不同的埠號, 因此要對服務進行測試,首先要確定是否開放對應埠號 。
TCP埠和UDP埠。由於TCP和UDP 兩個協議是獨立的,因此各自的埠號也相互獨立,比如TCP有235埠,UDP也 可以有235埠,兩者並不沖突。
1、周知埠
周知埠是眾所周知的埠號,范圍從0到1023,其中80埠分配給WWW服務,21埠分配給FTP服務等。我們在IE的地址欄里輸入一個網址的時候是不必指定埠號的,因為在默認情況下WWW服務的埠是「80」。
2、動態埠
動態埠的范圍是從49152到65535。之所以稱為動態埠,是因為它 一般不固定分配某種服務,而是動態分配。
3、注冊埠
埠1024到49151,分配給用戶進程或應用程序。這些進程主要是用戶安裝的程序。
1、使用Nmap工具查找ip的tcp埠
-O :獲取操作系統版本信息
2、使用Nmap工具查找udp埠
-sU :表示udp scan , udp埠掃描
-Pn :不對目標進行ping探測(不判斷主機是否在線)(直接掃描埠)
對於udp埠掃描比較慢,掃描完6萬多個埠需要20分鍾左右
3、使用Nmap工具獲取埠Banner
只會返回有Banner信息的,沒有則不會返回。
4、使用Nmap嗅探服務版本信息
如果沒有返回banner信息的,也可以使用該方法嘗試嗅探服務版本信息。
5、利用nmap對目標進行完整測試
在針對內容測試時,有授權的情況下,可以利用nmap對目標進行完整測試