Hướng dẫn sử dụng Scapy linux
Hướng dẫn sử dụng Scapy linux
Môn: Khoa học máy tính (GDUD205)
Trường: Đại học Gia Định
Thông tin:
Tác giả:
Preview text:
PHẦN 1. SƠ LƯỢC VỀ SCAPY VÀ CÁC CHỨC NĂNG CỦA SCAPY
1.1 Giới thiệu sơ lược về Scapy
Scapy là một chương trình Python giúp cho người dùng có thể gửi, nghe lén, phân tích và giả mạo các gói tin mạng.
Các tính năng của Scapy cho phép xây dựng các công cụ với mục đích thăm dò, quét kiểm tra và tấn công mạng. Bên cạnh
đó, Scapy còn là một chương trình thao tác và tương tác với các gói tin mạng một cách mạnh mẽ. Scapy có thể giả mạo
hoặc giải mã các gói tin trên một số lượng lớn các giao thức mạng. Scapy sẽ thực hiện gửi các gói tin, bắt các gói tin, đưa ra
tập các gói tin yêu cầu và các gói tin trả lời tương ứng với các gói tin yêu cầu… Scapy có thể dễ dàng thực hiện các tác vụ
như scanning, tracerouting, probing, unit test, attack hoặc network discovery… Scapy có thể thay thế hping, arpspoof, arp-
sk, arping, p0f, Nmap, tcpdump, tshark... Hình bên dưới là những phần mà Scapy có thể thực hiện được.
Các công cụ Packet foring: giả mạo gói tin và gửi các gói tin giả mạo. Các công cụ như là packeth, packit,
packetexcalibur, nemesis, tcpinject, libnet, IP sorcery, pacgen, arp-sk, arpspoof, dnet, dpkt, pixiliate, irpas, sendIP, IP
packet generator, sing, aicmpsend, libpal,…
Các công cụ Sniffing tool: bắt, nghe lén và phân tích các gói tin. Các công cụ như là ethereal, tcpdump, net2pcap,
cdpsniffer, aimsniffer, vomit, tcptrace, tcptrack, nstreams, argus, karpski, ipgrab, nast, cdpr, aldebaran, dsniff, irpas, iptraf, …
Các công cụ Testing tool: các công cụ như là ping, hping2, hping3, traceroute, tctrace, tcptraceroute,…
Các công cụ Scanning tool: quét và thăm dò các thông tin trong mạng. Các công cụ như là nmap, amap, vmap,
hping3, unicornscan, ttlscan, ikescan, paketto, firewalk,…
Các công cụ Fingerprinting tool: các công cụ như là nmap, xprobe, p0f, cron-OS, queso, ikescan, amap, synscan,…
Các công cụ Attacking tool: các công cụ tấn công mạng. Các công cụ như là dnsspoof, poisonivy, ikeprobe, ettercap,
dsniffsuite, cain, hunt, airpwn, irpas, nast, yersinia,…
Scapy khá dễ để sử dụng, được xây dựng trên ngôn ngữ Python và tích hợp sẵn trên Kali Linux. Hiện tại scapy chưa
được tích hợp giao diện nên chỉ làm việc trên nền core. Có thể nói Scapy gồm 2 nhiệm vụ chính: gửi các gói tin và nhận lại
các gói tin trả lời. Scapy có thể định nghĩa tập các gói tin, gửi các gói tin, nhận các gói trả lời, đưa ra tập các gói tin tương
tứng giữa yêu cầu và trả lời hay tập các gói tin không tương ứng giữa yêu cầu và trả lời. Scapy có thể thực hiện thêm các
tác vụ đặc biệt mà các công cụ khác không thể thực hiện được như: gửi các gói tin không hợp lệ, thực viện việc xen vào các
frame trong 802.11, kết hợp các kỹ thuật như VLAN hopping và ARP cache poisoning, giải mã gói tin VoIP được mã hóa. Đặc
biệt, Scapy có thể xây dựng được nhiều chức năng cao cấp. Mô hình tổng quan của Scapy được cho trong hình bên dưới.
1.2 Các vấn đề Scapy có thể giải quyết được so với các công cụ khác
Scapy được xây dựng trên Python nhưng không cần phải tìm hiểu quá kỹ Python trước khi sử dụng. Scapy có ưu điểm
vì cú pháp đơn giản, xử lí nhanh và ít lỗi nên scapy có thể thay thế một số công cụ hiện hành kém ưu hơn.
Đầu tiên, các công cụ thường dùng trong phân tích các yêu cầu an toàn mạng thì không thể thay đổi ý muốn của tác
giả làm ra công cụ đó. Các công cụ này được xây dựng cho các mục đích riêng biệt và không thể làm lệnh các mục đích này.
Ví dụ như công cụ ARP cache poisoning không thể đóng gói 802.1q 2 lần hoặc gửi các gói ICMP với phần padding. Do đó,
mỗi lần cần một mục đích nào đó mới thì cần phải xây dụng một công cụ mới.
Thứ hai, thường có sự nhầm lẫn giữa giải mã và thông dịch. Máy tính có khả năng giải mã tốt và có thể giúp con
người với việc giải mã. Thông dịch được dành riêng cho con người. Một số chương trình cố bắt chước thói quen này. Ví dụ,
thường nói là “this port is open” thay cho “I received a SYN-ACK”. Vì thông báo “I received a SYN-ACK” có thể đồng nghĩa
với “this port is open”. Điều này có
thể đúng hoặc sai. Đối với những người mới bắt đầ u thì 2 ý nghĩa này được xem là như
nhau, nhưng khi cố gắng suy ra những gì thực sự đã xảy ra từ cách thông dịch của chương trình thì lúc này có thể đã mất
một lượng lớn thông tin. Thông thường thì người dung sẽ sử dụng tcpdump -xX để giải mã và thông dịch những gì công cụ đã bỏ qua.
Thứ ba, các chương trình thường chỉ giải mã nhưng không cung cấp tất cả các thông tin sẽ nhận được. Thông thường
thì các công cụ sẽ cung cấp thông tin mà tác giả của của công cụ nghĩ là cần thiết. Ví dụ khó kiếm công cụ có thể đưa ra
thông tin phần padding của Ethernet.
Scapy có thể giải quyết được các vấn đề này. Scapy cho phép xây dựng chính xác các gói mà người dùng mong
muốn. Ngay cả khi việc xếp chồng lớp 802.1q lên trên TCP hoặc gửi các gói tin không đầy đủ thông tin. Scapy có một mô
hình linh hoạt cố gắng tránh những giới hạn như trên. Với Scapy thì có thể đặt bất kỳ giá trị bạn muốn vào trường tương
ứng trong các cấu trúc header của gói tin và xếp chồng theo cách mà người dùng mong muốn. Trong thực tế, Scapy giống
như xây dựng một công cụ mới tùy theo từng nhu cầu nhưng thay vì cả trăm dòng lệnh C thì chỉ viết 2 dòng Scapy.
Sau khi thăm dò mạng (quét, traceroute,…). Scapy luôn luôn cung cấp đầy đủ các gói tin được giải mã từ quá trình
thăm dò, trước quá trình thông dịch. Ví dụ thực hiện traceroute và quan sát thông tin trong phần padding.
Có 2 cụm từ hay được nhắc đến khi nói về một ngôn ngữ lập trình là biên dịch (compiled) và thông dịch (interpreted).
2 cụm từ này biểu đạt cho cách thức mà máy tính có thể hiểu được những gì người dùng viết và thực thi nó.
Ngôn ngữ được coi là thông dịch khi chương trình được viết ra, khi chạy sẽ được trực tiếp thành mã máy (ngôn ngữ
mà máy tính có thể hiểu được) để máy tính thực thi chúng. Khi chương trình chạy đến dòng lệnh nào sẽ chuyển thành mã
máy đến đó để máy tính có thể thực thi. Bộ thông dịch thực hiện quá trình thông dịch gọi là interpreter. Thông dịch có ưu
điểm: Interpreter dễ hiện thực hơn do bỏ qua việc kiểm tra lỗi và tối ưu code thường được thực hiện trong quá trình
compiled, hỗ trợ đa nền tảng. kích thước chương trình thực thi nhỏ hơn. Nhưng thông dịch lại có nhược điểm: chương trình
có độ tin cậy thấp hơn do bỏ qua bước kiểm tra loại bỏ một số lỗi thường thực hiện trong quá trình compiled, Source code
dễ dàng bị dịch ngược, tốc độ thực thi chậm hơn, tiềm tàng nguy cơ có lỗi.
Cách hoạt động của trình biên dịch khác so với thông dịch. Thay vì chạy trực tiếp thành mã máy, trình biên dịch sẽ
phải chuyển đổi ngôn ngữ lập trình thành mã máy rồi chứa kết quả vào ổ đĩa cứng để có thể thực thi ở lần chạy sau. Bộ biên
dịch thực hiện quá trình biên dịch được gọi là compiler. Biên dịch có ưu điểm là: chương trình sau đó được thực thi nhanh
hơn, độ tin cậy cao, khó bị dịch ngược mã nguồn. Biên dịch có nhược điểm: khó xây dựng một compiler có tính chính xác
cao để chuyển toàn bộ chương trình thành mã máy, mã máy của mỗi nền tảng là khác nhau, khó thực hiện đa nền tảng.
1.2.1 Tạo gói tin một cách nhanh chóng
Đa số công cụ đều theo mô hình “program-that-you-run-from-a-shell”. Việc này dẫn đến phải cần cú pháp
phức tạp để mô tả gói tin. Ví dụ, chỉ địa chỉ IP được sử dụng để thực hiện port scanning. Còn cấu trúc của Scapy sử dụng
ngôn ngữ DSL (Domain Specific Language) cho phép mô tả mạnh mẽ và nhanh chóng bất kỳ loại gói tin nào. Sử dụng cú
pháp Python và bộ thông dịch Python có nhiều ưu điểm: không cần viết một trình thông dịch riêng biệt, người dùng không
cần phải học một ngôn ngữ khác. Có thể nói Scapy ngắn gọn và mạnh mẽ.
Scapy cho phép người dùng mô tả một gói hoặc tập hợp các gói như các lớp được xếp chồng lên nhau. Scapy không
bắt buộc người dùng phải sử dụng các phương thức hoặc mẫu được xác định trước. Điều này làm giảm bớt yêu cầu viết một
công cụ mới trong các tình huống khác nhau. Trong C, có thể mất trung bình 60 dòng để mô tả một gói tin. Với Scapy, các
gói được gửi có thể được mô tả chỉ bằng một dòng duy nhất với một dòng khác để in kết quả. 90% công cụ thăm dò mạng
có thể được viết lại bằng 2 dòng Scapy.
1.2.2 Thăm dò 1 lần, thông dịch nhiều lần
Khi thăm dò một mạng, nhiều “kích thích” được gửi đi, trong khi chỉ một số ít được trả lời. Nếu các kích thích thích
hợp được chọn, thông tin mong muốn có thể thu được. Không giống như nhiều công cụ, Scapy cung cấp tất cả thông tin, tức
là tất cả các kích thích đã gửi và tất cả các câu trả lời đã nhận được. Việc kiểm tra dữ liệu này sẽ cung cấp cho người dùng
thông tin mong muốn. Khi tập dữ liệu nhỏ, người dùng chỉ có thể khai thác nó. Trong các trường hợp khác, việc thông dịch
dữ liệu sẽ phụ thuộc vào quan điểm được thực hiện. Hầu hết các công cụ chọn một quan điểm nhất định và loại bỏ tất cả
các dữ liệu không liên quan đến quan điểm đó. Vì Scapy cung cấp dữ liệu thô hoàn chỉnh, dữ liệu đó có thể được sử dụng
nhiều lần cho phép quan điểm phát triển trong quá trình phân tích.
1.2.3 Scapy giải mã, không thông dịch
Một vấn đề thường gặp với các công cụ thăm dò mạng là cố gắng thông dịch các câu trả lời nhận được thay vì chỉ giải
mã và đưa ra các sự kiện. “Received a TCP Reset on port 80” không phải chịu lỗi thông dịch. “Port 80 is closed” là một cách
giải thích chính nhưng sai trong một số ngữ cảnh cụ thể mà tác giả của công cụ không tưởng tượng ra được. Ví dụ, khi thực
hiện quét thì có xu hướng báo cáo một cổng TCP được lọc khi nhận được một ICMP destination unreachable. Điều này có thể
đúng, nhưng trong một số trường hợp nó có nghĩa là gói tin không được lọc bởi tường lửa hay đúng hơn là không có máy
chủ để chuyển tiếp gói tin đến.
PHẦN 2. MÔ HÌNH THỰC NGHIỆM
- Dùng Unetlab kết hợp Vmware để giả lập mô hình. - Đặt IP như mô hình.
- Cấu hình các thông tin như VLAN, định tuyến. Đảm bảo Kali và 2012 kết nối Internet thành công.
- Các lệnh cấu hình IP trên kali: + File cấu hình IP:
+ Chỉnh sửa nội dung file cấu hình IP:
+ File cấu hình DNS cho Kali:
+ Chỉnh sửa nội dung file cấu hình DNS:
+ Khởi động lại dịch vụ mạng:
- IP của server 2012: - Kết quả cấu hình:
+ 2012 ping và kết nối internet thành công:
+ Kali ping và kết nối internet thành công:
- Kiểm tra kết nối giữa Kali và 2012:
- Trên server 2012 triển khai các dịch vụ: HTTP, FTP, DNS và DHCP.
+ Kali truy cập web thành công trên server 2012:
+ Kali truy cập FTP thành công trên server 2012:
PHẦN 4. CÁC TÌNH HUỐNG CỦA SCAPY
TÌNH HUỐNG 1: CÁC LỆNH CƠ BẢN TRONG SCAPY
1. Các lệnh cơ bản xem thông tin ban đầu.
- Để mở scapy thì từ terminal của Kali dùng lệnh “scapy”:
- Scapy hoạt động dựa trên các lớp (layers). Lớp ở đây có thể được hiểu là các giao thức và cấu trúc của gói tin như: cấu
trúc gói tin lớp 3 (IP header version 4 và 6), cấu trúc gói tin lớp 4 (TCP, UDP), cấu trúc gói tin lớp 2 (Ethernet) hoặc cấu trúc
của các giao thức như DHCP, DNS, ARP, ESP, Dot1q, SNMP, NTP, AH… Để hiển thị danh sách các lớp dùng lệnh như bên dưới.
- Mỗi lớp có các thuộc tính tương ứng. Thuộc tính ở đây có thể hiểu là các trường trong cấu trúc gói tin, ví dụ như trường
Time to Live trong IP header. Để thực hiện xem danh sách thuộc tính thì dùng lệnh như các hình bên dưới. Trong () là trên
lớp muốn xem thuộc tính.
- Để tương tác với các lớp và các thuộc tính của lớp thì cần dùng đến tập lệnh trong scapy. Ví dụ: để gửi 1 gói tin lớp 3 thì
dùng lệnh “send”. Nếu muốn hiển thị danh sách lệnh có sẵn trong Scapy thì dùng lệnh như hình bên dưới.
- Mỗi lệnh có các thông số. Để hiển thị trợ giúp thông số các lệnh thì dùng cách bên dưới.
2. Ví dụ về việc tạo một gói tin lớp 3 (TCP/IP)
Phần tạo gói tin lớp 2 hoặc lớp 4 cũng được thực hiện tương tự.
Yêu cầu đặt ra: tạo gói tin lớp 3 sẽ được gửi giữa máy kali và server 2012.
Để thực hiện tạo gói tin cơ bản lớp 3 thì dùng 1 trong 2 cách như bên dưới. Cần chú ý là trong phần này chỉ là phương pháp
tạo, chứ không phải là gửi gói tin đã tạo. Phần gửi gói tin sẽ được thực hiện ở các phần bên dưới.
Để tạo gói tin lớp 3 thì có thể dùng 1 trong 2 cách bên dưới.
Cách 1: Thực hiện khai báo từng bước.
+ Khai báo biến a mang thông tin của lớp IP (IP header version 4): lưu ý là key “IP” trong lệnh gán a = IP() phải được nằm
trong danh sách các lớp của scapy (có thể dùng lệnh ls () để xem lại). “IP” được viết hoa hay viết thường cũng tùy thuộc
vào các lớp được show ra trong lệnh ls().
+ Nếu chỉ khai báo biến a mà không cấu hình thuộc tính nào thì biến a sẽ dùng các giá trị thuộc tính mặc định của lớp.
+ Bây giờ bắt đầu thiết lập địa chỉ nguồn và địa chỉ đích của gói tin:
+ Nhập a để xem toàn bộ thông tin đã cấu hình cho biến a. Còn nếu muốn xem thuộc tính nào của lớp thì dùng cấu trúc là:
biến.thuộc tính. Xem ví dụ như bên dưới:
+ Xoá thuộc tính đã thiết lập thì dùng lệnh del theo cấu trúc: del (biến.thuộc tính muốn xóa). Ví dụ bên dưới là xóa địa chỉ
IP bên nhận gói tin. Sau khi xóa thì dùng xem lại thông tin của biến a, thấy địa chỉ bên nhận đã biến mất.
+ Cấu hình lại địa chỉ bên nhận:
+ Thêm giá trị của thuộc tính Tive to Live:
+ Để tổng hợp lại thông tin đã cấu hình dùng lệnh:
+ Để biết thêm thông tin của gói tin dùng lệnh:
Cách 2: Có thể dùng luôn 1 lệnh sau.
>>>a=IP(dst=“192.168.1.10”,src=“192.168.2.10”,ttl=50).
Chú ý là các thuộc tính cách nhau bằng dấu “phẩy”.
- Khi làm đến đây thì cần ghi nhớ các chú ý sau khi tạo gói tin:
+ Các thuộc tính (các trường) trong cấu trúc của lớp như: src, dst, ttl… cần ghi đúng như trong lệnh a.show(). Nghĩa là tên
thuộc tính có phân biệt chữ hoa và chữ thường.
+ Khi dữ liệu được đóng theo mô hình OSI thì mỗi gói tin được xây dựng từ lớp đến lớp. Ví dụ khi tạo 1 gói tin Web đầy đủ
theo mô hình TCP/IP thì lớp application là http, lớp transport là TCP, lớp Internet là IP…
+ Dùng “/” để liên kết các lớp với nhau. Chú ý là “/” không phải hàm toán học.
+ Để gửi các gói tin theo OSI thì mỗi lớp có thể được xếp chồng lên lớp khác.
+ Mỗi lớp hay gói tin có thể được thao tác đến.
+ Mỗi thuộc tính trong lớp hoạt động với giá trị mặc định nếu không được thiết lập. Có thể xem các giá trị mặc định của mỗi
lớp bằng lệnh ls () bên trên.
+ Vài thuộc tính có thể bao gồm một giá trị hoặc thiết lập nhiều giá trị.
+ Nếu thiết lập đúng một gói tin TCP cần đi qua những trường thông tin từ thấp nhất lên cao nhất, từ trái sang phải… (Ethernet IP TCP).
+ Với Scapy có thể xếp chồng những thuộc tính mong muốn tại nơi bất kì.
+ Có thể đặt giá trị mong muốn vào bất kỳ trường nào.
Chú ý: có thể kết hợp cả 2 cách trên. Quan sát ví dụ bên dưới.
3. Các lệnh gửi gói tin cơ bản trong Scapy
Trong () có thể là biến hoặc gói tin cần gửi. Các lệnh gửi gói tin cơ bản được cho trong bảng bên dưới. Lệnh Tác dụng Chú ý sendp() Gửi các gói tin lớp 2. sr1p()
Gửi các gói tin lớp 2 và chỉ đợi tín hiệu trả lời đầu tiên.
Chú ý là lệnh send() và lệnh sendp() chỉ srp() Gửi dùng
và nhận các gói tin lớp 2.
để gửi gói tin. 2 lệnh này nếu dùng
thêm thông số “return_packets=True” thì có send()
Gửi các gói tin lớp 3. Nghĩa là lệnh này sẽ hỗ trợ định
thể nhận thêm gói tin trả về. tuyến và lớp 2. sr1()
Gửi các gói tin lớp 3 và chỉ đợi tín hiệu trả lời đầu tiên. sr():
Gửi và nhận các gói tin lớp 3.
Chú ý: Theo như trên thì Scapy hoạt động với các lớp. Các lớp được xem như những hàm độc lập. Các hàm này được liên
kết với nhau bằng kí tự “/” để xây dựng gói tin. Sự liên kết này còn được gọi là xếp chồng các lớp (Stacking).
4. Các ví dụ về việc gửi gói tin cơ bản
4.1 Ví dụ 1:
- Biến a là lớp 3 (IP).
- Biến b là lớp 4 (TCP).
- Biến c là liên kết a với b.
- Cuối cùng là dùng lệnh send() để gửi biến c. Chú ý là lệnh send() chỉ là gửi gói tin.
Chú ý là ngoài các thông số được khai báo trong a và b thì các thông số còn lại đề được dùng mặc định. Có thể kiểm tra
bằng cách hiển thị lại thông tin của biến c bằng lệnh:
Có thể kiểm tra quá trình gửi gói tin (hay cả quá trình nhận các gói tin trong các ví dụ bên dưới bằng phần mềm wireshark.
Tạm thời trong các ví dụ cơ bản này chưa dùng đến wireshark). Có thể nhận thấy các câu lệnh bên dưới là từ máy kali gửi
đến google. Đến đây có thể nhận xét được là Scapy có thể dùng để tạo gói tin và gửi gói tin. Bình thường muốn gửi gói tin
từ 1 máy tính đến google thì cần dùng đến các phần mềm ứng dụng trung gian như trình duyệt web, terminal của Linux,
Power shell của Microsoft… Nói cách khác, nhờ có Scapy mà người học có thể tác động vào việc gửi và nhận gói tin.
4.2 Ví dụ 2
Tạo 1 gói tin lớp 2, lớp 3 và lớp 4 kết hợp. Biết là lớp 2 có địa chỉ MAC là broadcast, lớp 3 có source là máy kali, destination
là google.com và zing.vn, ttl có giá trị từ 1 đến 10 và lớp 4 là UDP. Chú ý là lệnh “srp” dùng cho bên dưới là gửi và nhận các
gói tin lớp 2. Vì chỉ để gửi các gói tin lớp 2 nên TCP, UDP là “Unanswered”.
Hoặc có thể dùng 1 lệnh như bên dưới. khi đã rành về lệnh thì không cần dùng biến cũng được.
Chú ý: Trong quá trình cấu hình nếu muốn in ra các thông tin cần xem trong quá trình tạo gói tin thì dùng phương thức
sprintf() như hình bên dưới.
4.3 Ví dụ 3
Dùng lệnh sr() để gửi trong trường hợp này. 2012 là server web và ví dụ này mang ý nghĩa là kali muốn có file default.html của server web.
4.4 Ví dụ 4
Gửi 1 gói tin ICMP request đến máy có địa chỉ là 192.168.2.10. Nếu không dùng Scapy thì thao tác trên máy tính thông
thường là thực hiện thao tác “ping”.
4.5 Ví dụ 5
Gửi 1 gói tin lớp 2 và chọn cổng để gửi gói tin. Ở dưới chọn interface là eth0 vì hiện nay máy kali này chỉ có 1 card mạng tên là eth0.
4.6 Ví dụ 6
Gửi 1 gói tin lớp 2 và chọn cổng để gửi gói tin. Cho gói tin này được truyền liên tục.
4.7 Ví dụ 7
Gửi gói tin lớp 2 và yêu cầu gói tin trả về.
4.8 Ví dụ 8
- Trong ví dụ này thì gửi gói tin từ kali sang 2012, với phần data là “anh yeu em”. Dùng Wireshark trên kaki hoặc 2012 để capture gói tin.
- Các thông tin trong ví dụ 8: a là biến thuộc lớp IP, b là biến thuộc lớp TCP, packet là biến để ghép a và b, data là “anh yeu em”. - Thực hiện lệnh: - Kết quả wireshark:
5. Lệnh str() và lệnh hexdump() trong phân tích gói tin cơ bản.
Theo ví dụ bên dưới thì có 1 gói tin được gửi từ 192.168.1.1 đến máy kali. Dùng thêm lệnh str() và lệnh hexdump() để phân tích thêm gói tin.
6. Lệnh vẽ hình cấu trúc của gói tin
Dùng lệnh pdfdump dùng để vẽ cấu trúc gói tin và phân tích.
7. Đọc 1 file pcap
Nếu có sẵn 1 file wireshark đã lưu từ trước thì có thể mở file này lên bằng lệnh như hình bên dưới.
8. Tạo nhiều gói tin
Trong phần trên chỉ hướng dẫn tạo 1 gói tin. Trong phần này sẽ hướng dẫn tạo tập nhiều gói tin.
9. Lệnh Fuzzing
Chức năng fuzz() cho phép thay đổi bất cứ giá trị mặc định nào mà không được tính toán (ví dụ như Checksum) bằng một
đối tượng có giá trị random. Trong ví dụ bên dưới, lớp IP được sử dụng bình thường, UDP và NTP là Fuzzing. Giá trị UDP
checksum sẽ được đặt đúng và dport UDP sẽ sử dụng port 123 của NTP, version của NTP là 4. Tấ cả các port khác là
random. Nếu muốn random IP của lớp IP() thì dùng RandIP(). 10. SYN Scans
Tìm một địa chỉ IP của google.
Thực hiện 1 kết nối bằng gói SYN đến địa chỉ của google, với port 80.
Kết quả nhận được. Nhận thấy là google sẽ trả lời bằng gói SA (SYN-ACK), có thể nhận biết điều này khi nhìn vào trường flags=SA.
Có thể kiểm tra thêm 2 ví dụ:
11. TCP Traceroute