go語言syn端口掃描 goby全端口掃描
端口掃描的基本原理是什么?端口掃描技術分哪幾類?
端口掃描的基本原理就是看指定的端口是否開放。
我們提供的服務有:網站建設、做網站、微信公眾號開發、網站優化、網站認證、青羊ssl等。為成百上千企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的青羊網站制作公司
技術就是嘗試連接指定的端口,分類的話有2個,
1、半連接連接(syn掃描,不完成3次握手)
2、全連接 (完成3次握手)
SYN掃描是什么意思
呵呵,我來簡單回答一下吧!
首先你搞錯了一個問題,就是沒有SYN掃描這種東西,只有TCP掃描和UDP掃描。而TCP掃描一般是使用TCP的SYN數據包來進行的,也就是不嚴格地說,你說的這兩個是同一個東西,呵呵!
所以我在這里詳細地解釋一下TCP掃描和UDP掃描以及它們的區別,希望能對你有所幫助。
TCP端口掃描是通過SYN數據包進行的,用于掃描目標機器的端口上是否存在程序監聽,通常意義上,普通個人機器上的某個端口如果有程序監聽的話,那么它一般是系統漏洞。由于TCP是一個有連接的可靠協議,所以要使用三次握手來建立連接,三次握手的報文分別是(SYN)、(ACK SYN)和(ACK)。進行端口掃描時,首先向對方主機的某一端口發送(SYN)報文,如果對方這一端口上有程序在監聽(或者說存在漏洞),則回復(SYN ACK)報文,否則回復(RST)報文。據此就可以判斷對方端口上是否有程序在監聽了,或者是否存在漏洞了。
UDP端口掃描是通過普通數據包進行的,也是用于掃描對方端口上是否有程序在運行,就像上面所說的,如果普通個人機器上存在這樣的端口,那一般也是系統漏洞。但對于UDP來說,不存在監聽這個概念,因為它是無連接不可靠的協議,發送數據包過去以后,通常也不會有任何的對等回應。因此,UDP端口掃描主要是檢測是否存在ICMP端口不可達數據包。若該數據包出現,則說明對方這一端口上沒有程序在監聽,或者說該端口不存在漏洞,否則就說明該端口上有程序在監聽,或者說存在漏洞。
呵呵,現在可以總結一下他們的區別了,主要是以下幾點:
1. TCP是有連接的協議,而UDP是無連接的;
2. TCP掃描檢測(ACK SYN)或者是(RST)報文,而UDP檢測ICMP端口不可達報文;
3. TCP協議是可靠但低效的,可以有效進行端口掃描,范圍廣,效率低,可以應用于任何網絡中;UDP協議時不可靠但高效的,范圍小,效率高,一般應用于局域網內部,隨著網絡規模的增大,UDP端口掃描的結果準確度會越來越差,極端情況是,如果對Internet使用UDP端口掃描,所得到的結果一定不準確。
呵呵,回答完畢,希望能對你有所幫助!
SYN掃描器要怎么用?
SYN掃描器按如下方式使用:
1. 將數據線的一端連接至電腦對應端口
2 . 將數據線的另一端插入摩托羅拉掃描器的電纜接口處,這時掃描器一般會發出“嘀嘀”的蜂鳴聲,表示掃描器可以開始工作了。
3 . 在電腦上打開一個記事本,或Word,Excel等只要是光標可以輸入的地方都可以。然后掃描條碼,條碼即時傳輸至記事本中。
可以進行的掃描:
1.兩種不同的掃描方式(SYN掃描和一般的connect掃描)。
2.可以掃描單個IP或IP段所有端口。
3.可以掃描單個IP或IP段單個端口。
4.可以掃描單個IP或IP段用戶定義的端口。
5.可以顯示打開端口的banner。
6.可將結果寫入文件。
7.TCP掃描可自定義線程數- K/ 。
什么是端口的SYN(半連接)掃描技術
TCP
SYN
掃描是使用最為廣泛的掃描方式,其原理就是像帶掃描端口發送SYN
數據包,如果能夠收到SYN+ACK
數據包,則代表此端口開放,如收到RST
數據包,則證明此端口關閉,如未收到任何數據包,且確定該主機存在,則證明該端口被防火墻等安全設備過濾。由于SYN
掃描并不會完成TCP
連接的三次握手過程,所以SYN
掃描又叫做半開放掃描。
SYN
掃描的最大優點就是速度,在Internet
上,如果不存在防火墻,SYN
掃描每秒鐘可以掃描數千個端口,但是SYN
掃描由于其掃描行為較為明顯,容易被入侵檢測系統發現,也容易被防火墻屏蔽,且構造原始數據包需要較高系統權限。
滲透測試之端口掃描
端口掃描:端口對應網絡服務及應用端程序
服務端程序的漏洞通過端口攻入
發現開放的端口
更具體的攻擊面
UDP端口掃描:
如果收到ICMP端口不可達,表示端口關閉
如果沒有收到回包,則證明端口是開放的
和三層掃描IP剛好相反
Scapy端口開發掃描
命令:sr1(IP(dst="192.168.45.129")/UDP(dport=53),timeout=1,verbose=1)
nmap -sU 192.168.45.129
TCP掃描:基于連接的協議
三次握手:基于正常的三次握手發現目標是否在線
隱蔽掃描:發送不完整的數據包,不建立完整的連接,如ACK包,SYN包,不會在應用層訪問,
僵尸掃描:不和目標系統產生交互,極為隱蔽
全連接掃描:建立完整的三次握手
所有的TCP掃描方式都是基于三次握手的變化來判斷目標系統端口狀態
隱蔽掃描:發送SYN數據包,如果收到對方發來的ACK數據包,證明其在線,不與其建立完整的三次握手連接,在應用層日志內不記錄掃描行為,十分隱蔽,網絡層審計會被發現跡象
僵尸掃描:是一種極其隱蔽的掃描方式,實施條件苛刻,對于掃描發起方和被掃描方之間,必須是需要實現地址偽造,必須是僵尸機(指的是閑置系統,并且系統使用遞增的IPID)早期的win xp,win 2000都是遞增的IPID,如今的LINUX,WINDOWS都是隨機產生的IPID
1,掃描者向僵尸機發送SYN+ACY,僵尸機判斷未進行三次握手,所以返回RST包,在RST數據包內有一個IPID,值記為X,那么掃描者就會知道被掃描者的IPID
2,掃描者向目標服務器發送SYN數據包,并且偽裝源地址為僵尸機,如果目標服務器端口開放,那么就會向僵尸機發送SYN+ACK數據包,那么僵尸機也會發送RST數據包,那么其IPID就是X+1(因為僵尸機足夠空閑,這個就為其收到的第二個數據包)
3,掃描者再向僵尸機發送SYN+ACK,那么僵尸機再次發送RST數據包,IPID為X+2,如果掃描者收到僵尸機的IPID為X+2,那么就可以判斷目標服務器端口開放
使用scapy發送數據包:首先開啟三臺虛擬機,
kali虛擬機:192.168.45.128
Linux虛擬機:192.168.45.129
windows虛擬機:192.168.45.132
發送SYN數據包:
通過抓包可以查看kali給linux發送syn數據包
linux虛擬機返回Kali虛擬機SYN+ACK數據包
kali系統并不知道使用者發送了SYN包,而其莫名其妙收到了SYN+ACK數據包,便會發RST包斷開連接
也可以使用下列該命令查看收到的數據包的信息,收到對方相應的SYN+ACK數據包,scapy默認從本機的80端口往目標系統的20號端口發送,當然也可以修改
如果向目標系統發送一個 隨機端口:
通過抓包的獲得:1,kali向linux發送SYN數據包,目標端口23456,
2,Linux系統由自己的23456端口向kali系統的20號端口返回RST+ACK數據包,表示系統端口未開放會話結束
使用python腳本去進行scapy掃描
nmap做隱蔽端口掃描:
nmap -sS? 192.168.45.129 -p 80,21,110,443 #掃描固定的端口
nmap -sS 192.168.45.129 -p 1-65535 --open? #掃描該IP地址下1-65535端口掃描,并只顯示開放的端口
nmap -sS 192.168.45.129 -p --open? #參數--open表示只顯示開放的端口
nmap -sS -iL iplist.txt -p 80
由抓包可知,nmap默認使用-sS掃描,發送SYN數據包,即nmap=nmap? -sS
hping3做隱蔽端口掃描:
hping3 192.168.45.129 --scan 80 -S? #參數--scan后面接單個端口或者多個端口.-S表示進行SYN掃描
hping3 192.168.45.129 --scan 80,21,25,443 -S
hping3 192.168.45.129 --scan 1-65535 -S
由抓包可得:
hping3 -c 100? -S? --spoof 192.168.45.200 -p ++1 192.168.45.129
參數-c表示發送數據包的數量
參數-S表示發送SYN數據包
--spoof:偽造源地址,后面接偽造的地址,
參數-p表示掃描的端口,++1表示每次端口號加1,那么就是發送SYN從端口1到端口100
最后面跟的是目標IP
通過抓包可以得知地址已偽造,但對于linux系統(192.168.45.129)來說,它收到了192.168.45.200的SYN數據包,那么就會給192.168.45.200回復SYN+ACK數據包,但該地址卻是kali偽造的地址,那么要查看目標系統哪些端口開放,必須登陸地址為kali偽造的地址即(192.168.45.200)進行抓包
hping3和nmap掃描端口的區別:1,hping3結果清晰明了
2,nmap首先對IP進行DNS反向解析,如果沒成功,那么便會對其端口發送數據包,默認發送SYN數據包
hping3直接向目標系統的端口發送SYN數據包,并不進行DNS反向解析
全連接端口掃描:如果單獨發送SYN數據包被被過濾,那么就使用全連接端口掃描,與目標建立三次握手連接,結果是最準確的,但容易被入侵檢測系統發現
response=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="S"))
reply=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="A",ack=(response[TCP].seq+1)))
抓包情況:首先kali向Linux發送SYN,Linux回復SYN+ACK給kali,但kali的系統內核不清楚kali曾給linux發送給SYN數據包,那么kali內核莫名其妙收到SYN+ACK包,那么便會返回RST請求斷開數據包給Linux,三次握手中斷,如今kali再給Linux發ACK確認數據包,Linux莫名其妙收到了ACK數據包,當然也會返回RST請求斷開數據包,具體抓包如下:
那么只要kali內核在收到SYN+ACK數據包之后,不發RST數據包,那么就可以建立完整的TCP三次握手,判斷目標主機端口是否開放
因為iptables存在于Linux內核中,通過iptables禁用內核發送RST數據包,那么就可以實現
使用nmap進行全連接端口掃描:(如果不指定端口,那么nmap默認會掃描1000個常用的端口,并不是1-1000號端口)
使用dmitry進行全連接端口掃描:
dmitry:功能簡單,但功能簡便
默認掃描150個最常用的端口
dmitry -p 192.168.45.129? #參數-p表示執行TCP端口掃描
dmitry -p 192.168.45.129 -o output? #參數-o表示把結果保存到一個文本文檔中去
使用nc進行全連接端口掃描:
nc -nv -w 1 -z 192.168.45.129 1-100:? ? ? 1-100表示掃描1-100號端口
參數-n表示不對Ip地址進行域名解析,只把其當IP來處理
參數-v表示顯示詳細信息
參數-w表示超時時間
-z表示打開用于掃描的模式
網頁題目:go語言syn端口掃描 goby全端口掃描
文章出自:http://www.xueling.net.cn/article/hejpes.html