亚洲 日韩 激情 无码 中出,无码人妻久久一区二区三区蜜桃,亚无码乱人伦一区二区,四虎影视永久免费观看,四虎成人精品一区二区免费网站

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

小編:餓狼 更新時(shí)間:2022-05-04 16:41

前面介紹過了二層、三層發(fā)現(xiàn),今天就來分享一些四層發(fā)現(xiàn)的工具。

二三四層網(wǎng)絡(luò)發(fā)現(xiàn)掃描目的是為了發(fā)現(xiàn)網(wǎng)絡(luò)中存活的IP地址,雖然第四層是基于TCP和UDP進(jìn)行掃描,但不對(duì)目標(biāo)端口的狀態(tài)進(jìn)行識(shí)別。

四層網(wǎng)絡(luò)的掃描發(fā)現(xiàn)只是使用了四層的網(wǎng)絡(luò)通信來識(shí)別目標(biāo)IP的存活狀態(tài)。

四層發(fā)現(xiàn)有這些優(yōu)點(diǎn):

可路由且結(jié)果可靠

不太可能被防火墻過濾掉

甚至可以發(fā)現(xiàn)所有端口都被過濾的主機(jī)

當(dāng)然也有一些缺點(diǎn):

基于狀態(tài)過濾的防火墻可能過濾掃描

全端口掃描速度較慢

前面說了四層發(fā)現(xiàn)使用了TCP和UDP,簡(jiǎn)單來說,大概是下面這樣。

TCP:

未經(jīng)請(qǐng)求的ACK-RST

SYN-SYN/ACK、RST

直接發(fā)送ACK數(shù)據(jù)包,一般來說狀態(tài)為up的目標(biāo)主機(jī)會(huì)返回一個(gè)RST數(shù)據(jù)包以終止這個(gè)不正常的TCP鏈接;也可以發(fā)送正常的SYN數(shù)據(jù)包,如果目標(biāo)主機(jī)返回SYN/ACK或者SRT數(shù)據(jù)包,都可以證明目標(biāo)主機(jī)為up狀態(tài)。

UDP:

ICMP端口不可達(dá)、一去不復(fù)返

如果目標(biāo)ip為up狀態(tài)且UDP目標(biāo)端口為關(guān)閉狀態(tài),目標(biāo)主機(jī)就會(huì)返回一個(gè)目標(biāo)端口不可達(dá)的數(shù)據(jù)包,這就可以證明目標(biāo)端口是up狀態(tài)。

TCP和UDP的具體定義和交互邏輯就不在這里展開了,沒有概念的可以網(wǎng)上查一下,有比較詳細(xì)的講解帖子。

需要注意的是,隨著對(duì)于網(wǎng)絡(luò)安全意識(shí)的提升,有些服務(wù)器對(duì)于掃描其實(shí)做了一定的防護(hù),比如收到直接收到一個(gè)ACK的包就不返回?cái)?shù)據(jù)包,避免被掃描到。所以現(xiàn)在掃描到的結(jié)果,都只是作為參考,不要完全相信。

scapy-TCP

用scapy演示一下使用TCP做四層掃描:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

scapy使用tcp做四層掃描

收到的響應(yīng)包:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

a.display()

可以看出來返回的數(shù)據(jù)包flags=R,表示是一個(gè)RST。

用一行代碼請(qǐng)求:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

a = sr1(IP(dst='192.168.31.97')/TCP(dport=80,flags='A'), timeout=1)

根據(jù)上面的這些講解,就可以做一個(gè)使用tcp做四層發(fā)現(xiàn)的腳本了:

#!/usr/bin/python import logging logging.getLogger('scapy.runtime').setLevel(logging.ERROR) from scapy.all import * if len(sys.argv) != 2: print('Usage ./ack_ping_script.py [/24 network address]') print('Example ./ack_ping_script.py 172.18.14.0') print('Example will perform an TCP ACK ping scan of the 172.18.14.0/24 range') sys.exit() address = str(sys.argv[1]) ip_num_list = address.split('.') prefix = ip_num_list[0] + '.' + ip_num_list[1] + '.' + ip_num_list[2] + '.' for addr in range(1, 254): a = sr1(IP(dst=prefix+str(addr))/TCP(dport=333,flags='A'), timeout=0.1, verbose=0) try: if int(a[TCP].flags) == 4: print(prefix+str(addr)) except: pass

解釋一下腳本中20行為什么用4作為判斷:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

收到的響應(yīng)包里面flags

從圖片中可以看到RST轉(zhuǎn)換成十進(jìn)制后就是4,所以腳本中用來這樣的判斷。

執(zhí)行前還是要改權(quán)限,執(zhí)行過程就是這樣:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

python3 ack_ping_script.py 192.168.31.0

scapy-UDP

使用udp做四層掃描的時(shí)候,要設(shè)置那些幾乎不會(huì)被使用的端口,因?yàn)槲覀兙褪窃谕ㄟ^目標(biāo)端口不可達(dá)來探測(cè)ip是否有效。

具體使用:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

scapy使用udp做四層掃描

如果遇到ip不存在或者端口正常開放就不會(huì)收到返回的數(shù)據(jù)包:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

目標(biāo)ip不存在

也寫一個(gè)使用udp做四層發(fā)現(xiàn)的腳本:

#!/usr/bin/python import logging logging.getLogger('scapy.runtime').setLevel(logging.ERROR) from scapy.all import * if len(sys.argv) != 2: print('Usage ./udp_ping_script.py [/24 network address]') print('Example ./udp_ping_script.py 172.18.14.0') print('Example will perform an UDP ping scan of the 172.18.14.0/24 range') sys.exit() address = str(sys.argv[1]) ip_num_list = address.split('.') prefix = ip_num_list[0] + '.' + ip_num_list[1] + '.' + ip_num_list[2] + '.' for addr in range(1, 254): a = sr1(IP(dst=prefix+str(addr))/UDP(dport=23687), timeout=0.1, verbose=0) try: if int(a[IP].proto) == 1: print(prefix+str(addr)) except: pass

解釋一下第20行的判定依據(jù):

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

1代表了ICMP

執(zhí)行結(jié)果:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

python3 udp_pinger.py 192.168.31.0

我在scapy使用tcp和udp做四層發(fā)現(xiàn)的時(shí)候,獲取到的結(jié)果是有點(diǎn)差異的,所以再次提醒各位同學(xué),對(duì)于掃描結(jié)果,只能作為參考。

nmap

nmap在三層、四層發(fā)現(xiàn)中的作用,應(yīng)該算主流,當(dāng)然也有可能是我接觸的工具還比較少,如果更好用的工具,也請(qǐng)推薦給我一下。接下來介紹一下nmap在四層發(fā)現(xiàn)中的使用。

nmap使用udp做四層發(fā)現(xiàn):

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

nmap 192.168.31.1-254 -PU12345 -sn

nmap使用tcp做四層發(fā)現(xiàn):

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

nmap 192.168.1.1-254 -PA12345 -sn

其實(shí)nmap還提供了一些其他參數(shù)用來做四層發(fā)現(xiàn):

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

四層發(fā)現(xiàn)的參數(shù)

實(shí)際使用中如果時(shí)間充裕,最好多換幾種參數(shù)進(jìn)行四層發(fā)現(xiàn),也許會(huì)得到不一樣的結(jié)果,綜合比較后的結(jié)果會(huì)更有參考性。

前面的文章里也說過nmap也可以傳ip文檔作為入?yún)ⅲ瑢?duì)文檔中指定的ip進(jìn)行掃描:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

nmap -iL ip.txt -PA123 -sn

hping3

hping3也可以用來做四層發(fā)現(xiàn),使用udp的話,就是這樣:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

hping3 --udp 192.168.31.97 -p 12345 -c 1

如果是用udp做四層發(fā)現(xiàn),在傳參中的端口也要使用一個(gè)沒有被開啟的端口。

寫個(gè)用hping3做四層發(fā)現(xiàn)的腳本:

#!/bin/bash if ["$#" -ne 1];then echo 'Usage ./udp_hping3.sh [/24 network address]' echo 'Example ./udp_hping3.sh 192.168.31.0' echo 'Example will perform a UDP ping sweep of the 192.168.31.0/24 network and output to an output.txt file' exit fi prefix=$(echo $1 | cut -d '.' -f 1-3) for addr in $(seq 1 254);do hping3 $prefix.$addr --udp -p 13215 -c 1 >> r.txt done grep Unreachable r.txt | cut -d ' ' -f 5 | cut -d '=' -f 2 >> output.txt rm r.txt

hping3在使用的時(shí)候不加--udp,就是默認(rèn)使用tcp方式進(jìn)行掃描:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

hping3 192.168.31.168 -c 1

也可以寫一個(gè)使用tcp的hping3腳本:

#!/bin/bash if ["$#" -ne 1];then echo 'Usage ./udp_hping3.sh [/24 network address]' echo 'Example ./udp_hping3.sh 192.168.31.0' echo 'Example will perform a UDP ping sweep of the 192.168.31.0/24 network and output to an output.txt file' exit fi prefix=$(echo $1 | cut -d '.' -f 1-3) for addr in $(seq 1 254);do hping3 $prefix.$addr -c 1 >> r.txt done grep Unreachable r.txt | cut -d ' ' -f 5 | cut -d '=' -f 2 >> output.txt rm r.txt

執(zhí)行結(jié)果就是這樣:

網(wǎng)絡(luò)安全里四層發(fā)現(xiàn)的工具介紹

./tcp_hping3.sh 36.152.44.0

這里提一下,如果你用hping3來掃描同網(wǎng)段的話,會(huì)自動(dòng)降級(jí)使用arp協(xié)議,變成二層掃描,通過抓包可以看到,感興趣可以試試。