seed lab 2020 packet sniffing and spoofing lab
本實驗均使用 python3 scapy 完成
本文可能使用到的同時發包和收包的程式如下:
1. import subprocess
2. from time import *
3. from sys import *
4.
5. sniffer=subprocess.Popen(['python3','tcp_sniffer.py'])
6. sleep(0.5)
7. sender=subprocess.run(args=['python3','tcp_sender.py'],stdout=subprocess.PIPE)
8. sleep(0.5)
9. sniffer.kill()
10.
11. print('\n\n'+str(sender.stdout,encoding='utf-8'))
12. exit()
Task1.1A
通過設定filter規則為’icmp’,可以過濾掉其他的資料包;通過指定prn的引數為顯示資料包的函式在終端列印資料包。在執行sniffer.py指令碼的同時,使用ping發出icmp資料包。
當使用sudo執行指令碼時可以正常捕獲icmp包,如下圖:
當不使用sudo執行指令碼時,顯示操作不被允許,根據報錯可以看到這是因為__init__socket.socket.init(self,family,type,proto,fileno)函式的執行需要更高的許可權。
Task1.1B
(1)
捕獲icmp的操作與task1.1A相同。
(2)
主機ip為10.222.182.210。
Seedlab主機ip:
編寫嗅探指令碼tcp_sniffer.py:
1. from scapy.all import *
2.
3. def print_pkt(pkt):
4. pkt.show()
5.
6. pkt=sniff(filter='tcp and src host 10.0.2.15 and dst port 23',prn=print_pkt)
編寫發包指令碼tcp_sender.py:
1. from scapy.all import *
2.
3. ip=IP()
4. ip.src='10.0.2.15'
5. ip.dst='10.222.182.210'
6. tcp=TCP()
7. tcp.dport=23
8. send(ip/tcp)
收到資料包結果:
(3)
發包指令碼subnet_sender.py:
1. from scapy.all import *
2.
3. def print_pkt(pkt):
4. pkt.show()
5.
6. pkt=sniff(filter='tcp and src host 10.0.2.15 and dst port 23',prn=print_pkt)
編寫發包指令碼tcp_sender.py:
1. from scapy.all import *
2.
3. ip=IP()
4. ip.src='10.0.2.15'
5. ip.dst='10.222.182.210'
6. tcp=TCP()
7. tcp.dport=23
8. send(ip/tcp)
收到資料包結果:
(3)
發包指令碼subnet_sender.py:
1. from scapy.all import *
2.
3. send(IP(dst='128.230.0.0/16'))
嗅探指令碼subnet_sniffer.py:
1. from scapy.all import *
2.
3. def print_pkt(pkt):
4. pkt.show()
5.
6. pkt=sniff(filter='dst net 128.230.0.0/16',prn=print_pkt)
利用script.py執行抓到資料包結果如下:
Task1.2
使用icmp_spoofing.py發包:
1. from scapy.all import *
2.
3. send(IP(dst='10.222.182.210')/ICMP())
用wireshark看到來回的資料包:
Task1.3
使用下面的tarcerout.py指令碼傳送syn包並接收返回包:
1. from scapy.all import *
2.
3. ans,unans=sr(IP(dst='www.baidu.com', ttl=(4,25))/TCP(flags=0x2))
4. for snd,rcv in ans:
5. print(snd.ttl, rcv.src, isinstance(rcv.payload, TCP))
實驗結果如下:
Task1.4
用sniff_spoof.py截獲本網段的資料包併發出回應包:
1. from scapy.all import *
2.
3. def print_pkt(pkt):
4. send(IP(src=pkt[IP].dst,dst=pkt[IP].src)/ICMP(type='echo-reply',code=0,id=pkt[ICMP].id,seq=pkt[ICMP].seq))
5.
6. pkt=sniff(filter='icmp[icmptype]==icmp-echo',prn=print_pkt)
被劫持的ping應答:
可以看到上面的應答包明顯比下面正常情況下的應答包速度快很多:
task2.1A
使用下面icmp_sniffer.py截獲資料包
1. from scapy.all import *
2.
3. def print_pkt(pkt):
4. pkt.show()
5.
6. pkt=sniff(filter='icmp',prn=print_pkt)
結果截圖:
qestion1:這個程式首先在包到達後通過filter指定的引數判斷是否是符合條件的包,如果是就呼叫prn指向的函式執行,並且將資料包返回給等號左邊的變數
qestion2:因為scapy涉及到資料包的監聽和修改,這些操作如果不根據使用者許可權進行限制將會造成安全問題
qestion3:使用混雜模式後可以截獲本網段下另一個機器的ping包,不使用則不行
task2.1b
使用下面指令碼捕獲icmp和ip為10.0.2.15和192.168.43.16之間的icmp:
1. from scapy.all import *
2. def print_pkt(pkt):
3. pkt.show()
4.
5. pkt=sniff(filter='icmp && host 10.0.2.15 && host 10.219.160.70',prn=print_pkt)
實驗結果:
用下面的程式碼捕獲tcp和指定埠的資料包:
1. from scapy.all import *
2. def print_pkt(pkt):
3. pkt.show()
4.
5. pkt=sniff(filter='tcp && dst portrange 10-100',prn=print_pkt)
ssh的埠號為22,可以用作測試。
截獲的ssh協議包:
task2.1c
將埠設為25監聽telnet的報文:
1. from scapy.all import *
2. def print_pkt(pkt):
3. pkt.show()
4.
5. pkt=sniff(filter='tcp port 25',prn=print_pkt)
密碼截圖省略。
task2.2A
發包指令碼:
1. from scapy.all import *
2.
3. send(IP(src='10.0.2.15',dst='10.219.160.70'))
用wireshark截獲的資料包
task2.2b
向www.baidu.com傳送請求icmp包:
1. from scapy.all import *
2.
3. send(IP(dst='www.baidu.com',src='10.0.2.15')/ICMP(type=8,code=0))
收到來自百度的應答報文:
question4:將資料包長度改為200依然能成功發出資料包
question5:用python不需要自己計算校驗和
question6:函式內部的呼叫需要root許可權,如果沒有許可權會停在下面的函式
task2.3
使用python和task1.4的操作相同。
相關文章
- 【SEED Labs】DNS Rebinding Attack LabDNS
- Seed Lab實驗:Attacks on the TCP ProtocolTCPProtocol
- 【SEED Labs】Public-Key Infrastructure (PKI) LabASTStruct
- 【csapp lab】shell labAPP
- CSAPP-Lab04 Architecture Lab 深入解析APP
- CSAPP-Lab03 Attack Lab 記錄APP
- Lab 1: MapReduce
- boom lab分析OOM
- CSAPP Malloc LabAPP
- CSAPP Cache LabAPP
- Wireshark Lab: HTTPHTTP
- cs144 lab0 lab1記錄CS144
- CS144_2020_Fall_lab3(流傳送)CS144
- ChCore-lab3
- ChCore-lab0
- ChCore-lab1
- ChCore-lab2
- Lab 1 CMOS Inverter
- csapp Lab1APP
- 2.7 Lab: Circular Shift
- MIT 6.824(Spring 2020) Lab1: MapReduce 文件翻譯MITSpring
- Linux8530_lab02Linux
- Linux8530_lab03Linux
- Lab4 記錄
- Lab1 記錄
- MIT6.S081(2023 Fall) Lab2 & Lab3 總結MIT
- MIT xv6 2020系列實驗:Lab8 lockMIT
- MIT xv6 2020系列實驗:Lab1 UtilitiesMIT
- Innovus Lab和Lab Guide下載地址 | Innovus教程 - Flow系列 - 資料準備GUIIDE
- xv6 lab9
- 【HITCON-Training】Lab 12 - SecretGardenAI
- xv6 lab10: mmap
- Isaac Lab 學習筆記:概述筆記
- MacPages模板包——Brochure Lab for Pages for MacMac
- MIT xv6 2020系列實驗:Lab6 Copy-on-Write ForkMIT
- Lab 4: Fault-tolerant Key/Value Service
- jupyter lab 的三個小問題
- 安裝SLM-Lab踩坑記