1. 程式人生 > >TCP埠掃描方式

TCP埠掃描方式

一、TCP

常用的埠掃描方式有以下三種:

1.connect掃描

我們知道,常見的TCP的socket實現過程為

更本質的連線和結束的過程是如下這個樣子的:


從上面兩個圖我們可以看出來目標主機的一個埠如果是監聽狀態(LISTENING或者LINSTEN),那麼當我connect目標主機時就能成功,否則說明埠是關閉的。

優點: 程式設計簡單,是需要一個API connect(),比較可靠,因為TCP是可靠協議,當丟包的時候,會重傳SYN幀。

缺點: 正因為TCP的可靠性,所以當埠不存在的時候,源主機會不斷嘗試發SYN幀企圖得到ack的應答,多次嘗試後才會放棄,因此造成了掃描的時間較長。並且,connect的掃描方式可能較容易被目標主機發現。

2.SYN掃描

上面說到出去開放狀態的埠,是在等待其它主機發送SYN幀,所以SYN掃描的原理就是向目標埠傳送SUN資料幀,如果源主機收到SYN+ACK資料包,說明此埠開放,如果收到RST說明此埠關閉。由於SYN掃描並不會完成TCP三次握手過程,所以又叫半開放掃描。

優點: 速度快;如果不被防火牆過濾的話,基本都能收到應答包。

缺點: 掃描行為容易被發現;因為是自己攢包發,是在ip層的,因此不可靠,可能會丟包;實現起來比connect稍複雜。

3.FIN掃描

根據上述四次揮手過程,主動結束的一方會發送FIN幀。當我們傳送FIN幀給一個非監聽的埠時,會有RST應答,反之,發給一個正在監聽的埠時,不會有任何迴應。

優點: 隱蔽性好;速度快。

缺點: 只能用於Linux系統,windows系統下無效,在windows下,無論埠是否監聽,都將回應RST幀,造成無法判斷;不可靠,當收不到應答包時,不確定是埠在監聽,還是丟包了。

二、UDP

 常見的方式有UDP recvfrom掃描,UDP ICMP埠不可達掃描,我採用的是後者,也就是,給一個埠傳送UDP報文,如果埠是開放的,則沒有響應,如果埠是關閉的,對方會回覆一個ICMP埠不可達報文(對應ICMP首部前兩個欄位:型別3 程式碼3,ICMP詳見ping那篇文章),

優點:linux windows都能用

缺點:也是不可靠的,因為返回的是錯誤資訊,所以速度相對於TCP的FIN,SYN掃描要慢一些,如果傳送的UDP包太快了,迴應的ICMP包會出現大量丟失的現象。

三、隨便玩玩

在開始程式設計前可以對埠的開放與否有個感性的認識。

檢視當前主機的開放埠可以使用netstat命令。

linux下檢視TCP的監聽埠:netstat -na -t TCP | grep LISTEN (測試環境 ubuntu 11.04)

windows下檢視TCP的監聽埠:netstat -na -p TCP | findstr LISTENING (測試環境 winXP)

linux下下掃描埠可以使用埠掃描工具nmap,有多種掃描方式,這裡列舉幾個常用的:

僅進行ping掃描,打印出對掃描做出響應的主機,不做進一步測試(如埠掃描或者作業系統探測):

nmap -sP 192.168.1.0/24

使用頻率最高的掃描選項:SYN掃描,又稱為半開放掃描,它不開啟一個完全的TCP連線,執行得很快:

nmap -sS 192.168.1.0/24

當SYN掃描不能用時,TCP Connect()掃描就是預設的TCP掃描:

nmap -sT 192.168.1.0/24

相關推薦

TCP掃描方式

一、TCP 常用的埠掃描方式有以下三種: 1.connect掃描 我們知道,常見的TCP的socket實現過程為 更本質的連線和結束的過程是如下這個樣子的: 從上面兩個圖我們可以看出來目標主機的一個埠如果是監聽狀態(LISTENING或者LINSTEN),那

Python黑客基礎:多執行緒進行TCP掃描的介紹

前言 今天為大家一個利用Python掃描開放主機的TCP埠,首先你要檢視其中的開放的埠,建立一個TCP全連線掃描器,一般使用so

linux下掃描的實現(TCP connect、TCP SYN、TCP FIN、UDP四種方式)

一、TCP 常用的埠掃描方式有以下三種: 1.connect掃描 我們知道,常見的TCP的socket實現過程為 更本質的連線和結束的過程是如下這個樣子的: 從上面兩個圖我們可以看出來目標主機的一個埠如果是監聽狀態(LISTENING或者LINSTEN),那

NEW 御劍高速 TCP掃描工具

在. NET 中,SocketAsyncEventArgs 很適合用來編寫高效網路通訊程式,這個類的主要功能是可以避免重複分配大量的非同步套接字 I/O 內進行同步的物件。 IOCP 網路程式設計模型也叫完成埠,完成埠會充分利用 Windows 核心來進行 I/O 的排程,理論上和大量的實踐中證明是

小白日記10:kali滲透測試之掃描-UDP、TCP、殭屍掃描、隱蔽掃描

埠掃描 二三四層發現的目的只是為了準確發現所有活著主機IP,確定攻擊面,埠掃描即發現攻擊點,發現開放埠。埠對應網路服務及應用端程式,服務端程式的漏洞通過埠攻入。【所有的掃描結果,都不要完全相信】 一

索引的幾種掃描方式

http table 技術分享 -1 9.png alt logs image 索引 索引的幾種掃描方式

掃描軟體Nmap使用一(下載於安裝)

埠掃描軟體Nmap使用一(下載於安裝)    Nmap的下載地址雖然很多,但是對於新手來說,儘量在官方網址下載,某些第三方下載網址很不人道,使用他們加速器的時候會繫結下載很多垃圾軟體,會給我們造成很多不必要的麻煩。下面提供了幾種下載方式。 官方下載地址:https://nmap.org

掃描詳解(kali linux)

簡介 nmap 是被專業人員廣泛使用的一款埠掃描工具,使用靈活,它已經是滲透人員必備的工具。還具備以下功能 (1)主機探測:Nmap 可查詢目標網路中的線上主機。預設情況下,Nmap通過4方式———ICMP echo 請求(ping)、向 443 埠傳送 TCP SYN 包、向80 埠傳

python-掃描工具(超級差版本)

# coding:utf-8 import optparse from socket import * def scan(tgtHost, tgtPort):     try:       &

nmap 掃描王,檢視是否可訪問,是否對外開放

NMap,也就是Network Mapper,最早是Linux下的網路掃描和嗅探工具包。 1 安裝 apt-get install nmap 2 使用,檢視ip下所有對外的埠 $ sudo nmap -sS ip Starting Nmap 7.01 ( https://nmap.org ) at

PHP 掃描工具

$arr = [80,8080,3306]; foreach ($arr as $port) { $fp = @fsockopen('172.29.159.198',$port,$errno,$errstr,0.1); if (!$fp) { ech

cetnos中nmap掃描工具的使用

1:安裝: yum -y install nmap 2:使用方法: nmap -p 1-65535 1.1.1.1 #掃描1.1.1.1此IP地址的所有埠 nmap -p 80,443 1.1.1.1 #掃描1.1.1.1此IP地址的指定埠 3:更多使用方法:

TCP狀態說明ESTABLISHED、TIME_WAIT

TCP狀態轉移要點 TCP協議規定,對於已經建立的連線,網路雙方要進行四次握手才能成功斷開連線,如果缺少了其中某個步驟,將會使連線處於假死狀態,連線本身佔用的資源不 會被釋放。網路伺服器程式要同時管理大量連線,所以很有必要保證無用連線完全斷開,否則大量僵死的連線

使用NMAP掃描程式碼實現

   Nmap是一個網路連線端掃描軟體,用來掃描網上電腦開放的網路連線端。確定哪些服務執行在哪些連線端,並且推斷計算機執行哪個作業系統(這是亦稱 fingerprinting)。其基本功能有三個,一是探測一組主機是否線上;其次是掃描 主機埠,嗅探所提供的網路服務;還可以推斷主機所用的作業系

python:掃描郵件推送

#!/usr/bin/env python import pickle import smtplib from email.mime.text import MIMEText import nmap from multiprocessing import Pool import time import

滲透測試---掃描

在滲透測試的過程中,埠掃描是必須的。也是很重要的一個步驟。 使用工具:nmap 1、nmap簡單掃描 nmap預設傳送一個ARP的PING資料包,來探測目標主機1-10000範圍內所開放的所有埠 命令語法: nmap < ip address> 其中

使用MSF發現主機和掃描

     使用MSF發現主機和埠掃描     使用search命令查詢需要的模組   MSF模組太多,記不住怎麼辦!!! 我們不需要記住所有模組,我們只要能找到我們想用的模組就行,平時積累使用的模組也行哦! 比如,我們通過掃描發現目

TCP空閒掃描例項

恩,雖然 Nmap 也提供了一定的掃描空閒主機的功能吧,但是覺得還是 MSF 的 ipidseq 掃描器用起來比較方便,正好可以開始講講 MSF 中模組的使用方法。 首先我們啟動postgresql資料庫服務,開啟 MSF 終端。 open-pg-and-ms

TCP空閒掃描原理

判斷一個TCP埠是否開放,其中一種方法是向該埠傳送一個 SYN(建立會話) 資料包,如果該埠是開放的,則它會返回一個 SYN/ACK(會話確認) 資料包;如果該埠是關閉的,則它返回 RST(重置) 資料包;如果埠是被過濾狀態,則它什麼都不返回。一般來說我們通過

34.非阻塞丶套接字異常處理丶掃描

非阻塞及套接字異常處理:   套接字異常捕獲: 套接字建立失敗,8000  socket.error  客戶端連線錯誤: