Trong thuật ngữ máy tính well-known port là gì
Chào mừng các bạn đã đến với bài 6 của series Mạng Căn Bản. Hôm nay chúng ta sẽ tìm hiểu về network ports và những giao thức thường gặp ở lớp 3 và lớp 4 nhé. Trước khi vào bài chúng ta cũng cần làm rõ những nội dung mà series này không bao gồm:
Các bạn cũng lưu ý là những nội dung quan trọng sẽ được mình highlight như thế này nhé. 1/ Khái niệm network ports Network ports (hay còn gọi là cổng mạng) là một khái niệm trừu tượng thuộc lớp Transport trong mô hình TCP/IP. Network ports được dùng để cung cấp một dịch vụ mạng nhất định nào đó thông qua một giao thức được chỉ định hoạt động tại network port đó. Tất cả các network ports đều sử dụng một trong hai giao thức TCP và/hoặc UDP của lớp Transport để tạo và duy trì kết nối giữa máy cung cấp dịch vụ và máy yêu cầu dịch vụ trong lúc dịch vụ mạng đang được thực hiện. Những port sử dụng giao thức TCP được gọi là TCP ports, những port sử dụng UDP được gọi là UDP ports. Một port có thể đồng thời sử dụng cả 2 giao thức TCP hoặc UDP. Ví dụ port 53 sử dụng cho hệ thống DNS dùng cả TCP lẫn UDP. Mỗi network port sẽ chạy một giao thức giao thức nhất định, và số lượng port mà mỗi một host có thể có lên đến 65 535 ports. Bạn có thể tưởng tượng port giống như các phòng khoa khác nhau trong một bệnh viện, giả dụ nếu bạn muốn khám máu, bạn phải đi tới phòng 21 của khoa máu; bạn có nhu cầu khám phổi, bạn phải đi tới phòng 79 của khoa phổi. Chỉ khác một điều, phòng khoa trong bệnh viện là thật, bạn có thể sờ và nhìn thấy được, còn network ports là ảo và bạn không thể nhìn thấy được. Một số giao thức và ports thường gặp Port sốTên giao thức20, 21FTP 22SSH23 Telnet25 SMTP80HTTP110POP3123NTP443HTTPS Khi một port đang chạy một giao thức hay liên kết nào đó, nó sẽ được gọi là port mở, khi không có giao thức hay liên kết nào được chạy, port đó sẽ bị đóng lại để tránh bị hacker lợi dụng tấn công. Các ports mở không nhất định phải theo trình tự. Nghĩa là không cần port 10, 11 phải mở thì port 12 mới được mở. Một host hoặc server có thể cùng một lúc chạy nhiều giao thức trên nhiều network ports khác nhau. Để truy cập vào port của một host nào đó bạn sẽ làm như sau: https:// Có 3 loại TCP and UDP ports:
Khi các bạn thực hành pentest giai đoạn 4, các bạn sẽ chủ yếu là pentest các giao thức đang chạy trên các ports của máy mục tiêu. Mình cũng xin có vài lưu ý sau: Lưu ý 1: Mặc dù mặc định của một giao thức nào đó ví dụ như HTTP sẽ sử dụng port 80, nhưng không phải lúc nào port 80 cũng sẽ là HTTP. Quản trị viên hệ thống hoàn toàn có thể cài đặt giao thức HTTP chạy ở port 4003 hoặc 50000, hoặc bất kỳ port nào mà quản trị viên đó muốn. Lưu ý 2: Một host có thể có cùng một giao thức được mở trên nhiều port khác nhau. Mình đã từng thấy 3 giao port chạy HTTP trên cùng 1 host với mỗi port là một website có nội dung khác nhau. Nên việc kiểm tra tất cả các ports đang mở là hết sức cần thiết khi làm pentest. Lưu ý 3: Sẽ có những giao thức ví dụ như FTP hay SMB/Samba cần đến 2 ports để chạy giao thức. Lưu ý 4: Vì port chỉ có thể được mở từ bên trong bởi chính host/server sở hữu port đó, nên việc đầu tiên mà hacker phải làm sẽ luôn là thu thập thông tin và kiểm tra xem liệu có cách nào xâm nhập được vào hệ thống mục tiêu từ các ports đang mở hay không? Sau khi xâm nhập thành công, họ sẽ mở một port từ bên trong để tạo một kết nối từ máy mục tiêu tới máy hacker (kết nối này thường được gọi là cổng hậu hay backdoor) để phục vụ cho các bước pentest tiếp theo. Lưu ý 5: Khi bạn truy cập vào một website nào đó, chính là bạn đang truy cập vào port 80 của server đang host website đó. Vì port 80 và 443 được xem là mặc định để truy cập web khi dùng giao thức http và https, nên khi bạn dùng trình duyệt ví dụ như Chrome để truy cập một website như tuhocnetworksecurity.business.blog; thay vì bạn phải gõ http://www.tuhocnetworksecurity.business.blog: 80 hay https://www.tuhocnetworksecurity.business.blog: 443, bạn chỉ cần gõ http://www.tuhocnetworksecurity.business.blog hoặc https://www.tuhocnetworksecurity.business.blog là đủ. 2/ Những giao thức thường gặp ở lớp 3 và 4 2a/ Lớp Network 2a-1/ Giao thức IP Bạn nào quên thì xem lại bài 5 nhé. 2a-2/ Giao thức ICMP ICMP viết tắt của Internet Control Message Protocol. Đây là giao thức đứng đằng sau lệnh ping nổi tiếng trên cả Windows và Linux. Lệnh Ping hay giao thức ICMP được dùng để:
Cách thức hoạt động: Lệnh Ping sẽ gửi một loạt các gói tin ICMP đến máy mục tiêu. Khi gói tin đến mục tiêu nếu không bị chặn hoặc máy đang off, máy mục tiêu sẽ có tối đối đa vài giây để gửi phản hồi ngược lại cho máy đã gửi ICMP. (Tìm hiểu thêm tại đây) 2a-3/ Giao thức ARP ARP viết tắt của Address Resolution Protocol. Đây là giao thức được dùng để tìm địa chỉ MAC của một thiết bị nếu bạn đã biết địa chỉ IP của thiết bị đó và cập nhật vào một bảng gọi là ARP look-up, ARP cache hay ARP table. Cách thức hoạt động: Mỗi khi bạn gửi một gói tin ví dụ như bạn muốn ping tới một máy bên trong mạng. Chắc hẳn bạn vẫn còn nhớ ở bài 4, khi một gói tin được truyền đi, nó sẽ đi từ lớp cao nhất đến lớp thấp nhất của mô hình TCP/IP. Do ICMP là giao thức thuộc lớp Network sử dụng địa chỉ IP, nên để có thể xuống tới lớp Data Link bên dưới vốn sử dụng địa chỉ MAC, nó cần phải có dựa vào ARP table để tìm địa chỉ MAC của thiết bị có địa chỉ IP cần đến. ARP table được lập nên dựa vào việc gửi một gói tin arp broadcast đến tất cả các máy trong mạng để thu thập địa chỉ IP kèm theo địa chỉ MAC tương ứng sau đó cập nhật vào bảng có dạng như sau: ? (10.241.1.114) at 00:25:90:3e:dc:fc [ether] on vlan241 ? (10.252.1.8) at 00:c0:b7:76:ac:19 [ether] on vlan244 ? (10.252.1.9) at 00:c0:b7:76:ae:56 [ether] on vlan244 ? (10.241.1.111) at 00:30:48:f2:23:fd [ether] on vlan241 ? (10.252.1.6) at 00:c0:b7:74:fb:9a [ether] on vlan244 ? (10.241.1.121) at 00:25:90:2c:d4:f7 [ether] on vlan241 Ví dụ như bạn muốn ping tới địa chỉ 10.241.1.55. Khi địa chỉ MAC của máy bạn cần gửi gói tin nằm trong ARP table, máy sẽ dựa vào bảng trên để gửi gói tin của bạn đến đúng điểm cần đến. Khi địa chỉ MAC của máy bạn cần gửi gói tin không nằm trong ARP table, máy sẽ tự động gửi một gói tin arp broadcast khác tới tất cả các máy trong cùng mạng với nội dung “Ai có địa chỉ IP 10.241.1.55 xin trả lời và đính kèm địa chỉ MAC”, khi đó máy có địa chỉ 10.241.1.55 sau khi nhận được gói tin arp, sẽ phản hồi ngược lại “Tôi là 10.241.1.55 và đây là địa chỉ MAC của tôi …”. Thông tin của máy 10.241.1.55 sau đó sẽ được cập nhật lại vào ARP table. Vì ARP table không được cập nhật theo thời gian thực, nên khi có một máy mới tham gia vào mạng, ARP table sẽ không được update cho đến khi máy mới tham gia mạng nhận và phản hồi lại gói tin ARP broadcast hoặc đến khi ARP table được xóa để cập nhật mới. () 2a-4/ Giao thức DHCP DHCP viết tắt của Dynamic Host Configuration Protocol hay còn gọi là giao thức cấp IP tự động. Có 2 cách để địa chỉ IP được cấp cho thiết bị.
Cách thức hoạt động: DHCP có 2 thành phần. DHCP server làm nhiệm vụ cấp IP và DHCP làm nhiệm vụ yêu cầu và nhận IP được cấp.
Đọc thêm tại đây 2a-5/ Routing protocols (RIP, OSPF, EIGRP, etc.) Routing protocols là những giao thức có nhiệm vụ thiết lập kết nối giữa các routers với nhau nhằm mục đích truyền tải dữ liệu từ mạng này sang mạng khác. Ví dụ: Khi bạn dùng lệnh traceroute (trên Linux) hay tracert (trên Windows), nó sẽ dùng giao thức ICMP để xác định xem gói tin từ điểm bạn gửi đến điểm đích đã đi qua những routers nào. Các bạn hãy tham khảo bên dưới vincent@kali:~$ traceroute tuhocnetworksecurity.business.blog traceroute to tuhocnetworksecurity.business.blog (192.0.78.31), 30 hops max, 60 byte packets 1 _gateway (10.0.0.1) 4.939 ms 4.835 ms 5.806 ms 2 174.0.0.1 (174.0.0.1) 12.762 ms 18.158 ms 18.113 ms 3 rc3no-be140-1.cg.shawcable.net (64.59.132.85) 19.664 ms 19.620 ms 19.577 ms 4 rc2wt-be100.wa.shawcable.net (66.163.75.233) 34.796 ms 34.753 ms 34.710 ms 5 rc1wt-be18-1.wa.shawcable.net (66.163.64.81) 37.597 ms 38.953 ms 37.509 ms 6 six.automattic.net (206.81.81.70) 37.465 ms 30.436 ms 36.484 ms 7 192.0.78.31 (192.0.78.31) 31.212 ms 36.231 ms 36.180 ms Như bạn đã thấy, khi mình dùng lệnh traceroute để tìm xem từ chỗ mình đến website tuhocnetworksecurity.business.blog, gói tin phải đi qua bao nhiêu routers, mình đã phát hiện ra, gói tin phải đi qua 7 routers tất cả kể cả router wifi nhà mình để đến được điểm đích. Để các routers này có thể truyền dữ liệu được cho nhau, chúng cần phải được thiết lập một giao thức routing. Vì routing protocols là một chủ đề rất lớn và có không ít hơn 5 protocols khác nhau, và vì nội dụng của nó thuộc về kiến thức thi CCNA, nên mình sẽ không đi sâu vào nhé. Tuy nhiên các bạn nào muốn tìm hiểu thêm có thể tham khảo tại đây. 2a-6/ Giao thức NAT NAT là viết tắt của Network Address Translation. Nhiệm vụ của NAT là chuyển đổi từ địa chỉ IP cá nhân (IP private) (địa chỉ IP bạn tự set hay được set trên router wifi nhà bạn) sang địa chỉ IP công cộng (IP public) được nhà mạng cấp. Hãy thử tưởng tượng một công ty với nhiều phòng ban khác nhau có địa chỉ là 123 Trần Hưng Đạo, TPHCM, VN. Thư từ gửi tới giám đốc, kế toán, trưởng phòng của công ty đều sẽ được gửi trực tiếp đến công ty. Lúc này, bộ phận lễ tân sẽ làm nhiệm vụ phân loại thư gửi đến ví dụ như thư cho anh Nguyễn Văn A ở phòng kế toán, thư cho chị Trần Thị B ở phòng nhân sự, hay thư cho gíam đốc C, v.v sau đó nhân viên lễ tân sẽ trao tận thư cho người cần nhận thư trong công ty. Nói tóm lại, nhân viên chuyển phát thư của bưu điện, khi cần chuyển thư cho một ai đó trong công ty, chỉ cần đến thẳng công ty và giao cho bộ phận lễ tân, nhân viên lễ tân sẽ giao thư cho người cần nhận. Chức năng của NAT y chang như vậy. Sơ đồ A-1So sánh sơ đồ A-1 với ví dụ mình đưa ra bên trên, ta sẽ có công ty chính là phần mạng nằm ở nhánh B của router. Địa chỉ công ty chính là địa chỉ IP Public ở nhánh A. Quầy lễ tân cũng chính là giao thức NAT, nơi tiếp nhận thư tín sẽ là ở ngay chỗ đặt router. Như vậy, khi một gói tin gửi đến máy 192.168.0.3 được gửi đến router, NAT sẽ làm việc để chuyển gói tin đó đến cho máy 192.168.0.3. Địa chỉ IP tại nhánh B của router được gọi là địa chỉ default gateway. Đây là điểm mà bất cứ gói tin nào bên trong mạng, muốn được chuyển ra ngoài mạng đều phải đi qua. Cũng giống như trong ví dụ công ty mà mình đã nói bên trên, khi một nhân viên trong công ty muốn gửi thư cho đối tác ở ngoài công ty, thay vì tự đi gửi, họ sẽ thông qua bộ phận lễ tân của công ty để gửi thư đi. Điều tương tự cũng xảy ra, khi một gói tin muốn được chuyển ra ngoài, nó sẽ phải đi qua giao thức NAT để chuyển đổi từ private IP thành public IP. 3 máy tính trong sơ đồ A-1 sẽ có chung địa chỉ IP public là 77.15.66.20/16 mặc dù địa chỉ IP private của mỗi máy là khác nhau. Cũng giống như một công ty dù có bao nhiêu phòng ban, mỗi phòng ban ở một phòng riêng biệt, nhưng đều có chung địa chỉ công ty là 123 Trần Hưng Đạo, TPHCM, VN. Tại sao chúng ta cần giao thức NAT? Có 2 nguyên nhân chính:
Làm sao để biết được địa chỉ IP public của mình là bao nhiêu? Bạn có thể vào trang sau để kiểm tra địa chỉ IP public của mình. Ngoài ra, bạn có thể thử kiểm tra địa chỉ IP public trên nhiều thiết bị được kết nối trong cùng một mạng và bạn sẽ thấy mặc dù địa chỉ IP của mỗi thiết bị là khác nhau, nhưng đều có chung địa chỉ IP public. Làm sao NAT biết được gói tin đến từ ngoài mạng là của máy nào ở trong mạng? Mình sẽ gọi mạng sử dụng địa chỉ IP public là mạng ngoài và mạng sử dụng IP Private là mạng trong nhé. Có một số cách mà NAT có thể dùng để xác định xem gói tin đến là của máy nào trong mạng. Ví dụ như, mỗi máy trong mạng sẽ được gán cho một port ID, gói tin từ máy đó đi ra khỏi mạng và gói tin phản hồi đều sẽ chứa port ID đó, và NAT căn cứ vào port ID này để chuyển gói tin để đúng máy. Một cách khác đó là địa chỉ IP public không nhất thiết phải là 1 địa chỉ mà có thể là một dải địa chỉ IP public ví dụ như từ 77.15.66.12/16 đến 77.15.66.25/16. Mỗi máy ở trong mạng khi chuyển gói tin ra ngoài sẽ được NAT đổi IP từ IP trong mạng thành IP đầu tiên trong dải IP public đã cho chưa được sử dụng để gửi gói tin đi. Ví dụ như máy 192.168.0.10 muốn chuyển gói tin ra ngoài mạng, NAT sẽ kiểu tra dải IP và nhận thấy địa chỉ 77.15.66.12 và 77.15.66.13 đã được sử dụng, trong khi địa chỉ IP từ 77.15.66.14 trở đi chưa được sử dụng. NAT sẽ dùng địa chỉ 77.15.66.14 làm địa chỉ IP public cho máy 192.168.0.10 để chuyển gói tin đi. Default gateway là gì? Default gateway chính là địa chỉ IP của router wifi hay router mạng nơi gói tin từ trong hay từ ngoài mạng vào đều phải đi qua. Đây cũng là nơi chạy DHCP protocol để cấp phát địa chỉ IP tự động cho các máy trong mạng và đây cũng là nơi thường được chọn để đặt tường lửa nhằm bảo vệ toàn mạng bên trong. Địa chỉ IP thường được chọn làm địa chỉ default gateway là địa chỉ liền sau địa chỉ mạng ví dụ 192.168.0.1. Các bạn có thể tìm hiểu thêm về giao thức NAT tại đây. 2b / Lớp Transport 2b-1/ Giao thức TCP TCP là viết tắt của Tranmission Control Protocol. Là một giao thức coi trọng kết nối ở lớp Transport. Giao thức TCP cho phép một máy tính gửi dữ liệu đến một máy khác nằm trong hay ngoài mạng và TCP sẽ đảm bảo mỗi gói tin đều được chuyển đi an toàn và không bị hư hao. Nếu gói tin được chuyển đến bị thiếu hụt, TCP sẽ hủy gói tin đó và gửi lại gói tin toàn vẹn khác. Kết nối TCP chỉ bị ngắt sau khi các gói tin đã được chuyển đến điểm cần đến đầy đủ và an toàn hoặc một vấn đề khiến cho việc khôi phục kết nối không thể xảy ra ví dụ như cúp điện. Giao thức TCP chỉ có thể được dùng cho truyền dữ liệu unicast. Nghĩa là chỉ có 1 máy gửi dữ liệu và 1 máy nhận dữ liệu tại mọi thời điểm. Tại lớp transport, trước khi được chuyển đi bằng giao thức TCP, gói tin sẽ được cắt thành những đơn vị nhỏ hơn cho mục đích truyền dữ liệu trong mạng. Đơn vị này được gọi là segment. Mỗi segment trước khi được truyền đi đều sẽ được đánh số, thứ tự gửi các segment sẽ được đính kèm trong mỗi segment nhằm mục đích phát hiện nếu có một segment bị mất và để ráp lại dữ liệu tại điểm đích. Giao thức TCP nổi tiếng với cơ chế three way hankshake khi thiết lập kết nối từ máy này đến máy khác. Sơ đồ A-2 – Cơ chế three way handshakeCơ chế three way handshake hoạt động như sau:
Một số ứng dụng và giao thức sử dụng giao thức TCP như trình duyệt web, giao thức HTTP. Khi người dùng truy cập một website, trình duyệt sẽ sử dụng HTTP để gửi truy vấn thông qua giao thức TCP đến server chứa website đó. Sau đó, server dùng HTTP để gửi lại nội dung website đến trình duyệt cũng thông qua giao thức TCP. Ngoài ra còn có giao thức Telnet, FTP và SMTP (cho email). 2b-2/ Giao thức UDP UDP là viết tắt của cụm từ User Datagram Protocol. Trái ngược với TCP, UDP là một giao thức không coi trọng kết nối. UDP được sử trong những ứng dụng không cần phải duy trì kết nối. Thật vậy, sau khi UDP truyền tải một gói tin, UDP gần như sẽ ngay lập tức quên ngay gói tin đó và không quan tâm gói tin đó có đến được đích, có bị mất hay bị hư hao khi truyền đi hay không. Nếu có 2 gói tin được gửi đến cùng một người nhận bằng UDP, UDP cũng sẽ không đảm bảo gói tin nào đến trước, gói tin nào sẽ đến sau. Vì tính đơn giản của nó, UDP mặc dù nhanh hơn TCP (do TCP phải thực hiện three way handshake và kiểm tra các gói tin để đảm bảo chúng đến an toàn và không có lỗi), nhưng lại không đảm bảo như TCP. Giao thức UDP thích hợp với những ứng dụng chú trọng về tốc độ kết nối hơn là đảm bảo chất lượng kết nối đường truyền. Sau khi gửi gói tin, ứng dụng sẽ chờ phản hồi trong một khoản thời gian nhất định, nếu không thấy phản hồi, ứng dụng sẽ gửi lại gói tin hoặc không làm gì cả. UDP có thể được dùng cho multicast và broadcast. Một số giao thức sử dụng UDP: giao thức DHCP (vì DHCP client phải gửi gói tin broadcast để tìm và phản hồi lại DHCP server), hệ thống DNS (Domain Name System). Hệ thống DNS hoạt động như sau, khi trình duyệt web muốn truy cập một website ví dụ như tuhocnetworksecurity.business.blog chẳng hạn, DNS sẽ gửi một gói tin UDP đến DNS server để tìm domain tuhocnetworksecurity.business.blog. Sau khi tìm thấy, nó sẽ gửi trả lại địa chỉ IP của domain đó đến trình duyệt bằng một gói tin UDP khác. Well known port là gì?Well Known Port (viết tắt là WKP) gồm các port có địa chỉ từ 0 đến 1023. Chúng được giữ cho các ứng dụng phổ biến như port 80 (web), port 25 (mail), port 21 (FTP)… Registered Port (viết tắt là RP) gồm các port có địa chỉ từ 1024 đến 49151. Port 53 dùng để làm gì?Port 53 được sử dụng cho các dịch vụ phân giải tên miền. Nếu bạn có ý định vận hành một ứng dụng dạng này (chẳng hạn Pi-Hole) bạn sẽ cần đến nó. Port 22 là gì?22 – TPC /UDP – SSH Remote Login Protocol: Nếu bạn chạy SSH Secure Shell, cổng 22 được yêu cầu cho người dùng SSH để kết nối tới người phục vụ của bạn. 23 – TPC – Telnet: Trường hợp bạn chạy một người phục vụ Telnet, cổng này được yêu cầu cho người dùng Telnet kết nối tới người phục vụ của các bạn. Một máy tính có bao nhiêu port?Hiện nay, với máy tính sẽ có đến 65535 port được phân làm 3 phần: WKP: Well Known Port quy định từ 0 đến 1032. |