Mạng Căn Bản – Bài 7: Hệ thống DNS & những giao thức thường gặp ở lớp Application

Chào mừng các bạn đã đến với bài 7 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 Application 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:

  • Series này sẽ không dạy các kiến thức để thi CCNA hoặc MSCA cũng như các kiến thức về quản trị mạng ví dụ như cách thiết lập DHCP, DNS, Routing protocols, vâng vâng.
  • Series Mạng Căn Bản sẽ không bao gồm phần lab xây dựng mạng mà chỉ đơn thuần lý thuyết và một vài thực hành nhỏ.
  • Series Mạng Căn Bản sẽ chỉ có kiến thức căn bản và sẽ không đi quá sâu vào bất kỳ một chủ đề nào. Mục đích chính là để tránh series này bị kéo dài một cách không cần thiết. Tuy nhiên, với những bạn muốn nghiên cứu thêm, mình sẽ đính kèm tài liệu tự nghiên cứu trong bài nhé.

Lớp Application nằm trên cùng của mô hình TCP/IP. Đây có thể được xem là lớp có nhiều giao thức nhất trong cả mô hình TCP/IP. Tất cả những giao thức cần cho những dịch vụ mạng mà bạn đang sử dụng hàng ngày từ gửi email, lướt web, chat chit, gọi điện qua mạng v.v. đều nằm tại lớp Application này (Bạn nào quên khái niệm mô hình TCP/IP và dịch vụ mạng có thể xem lại tại đây nhé).

Các giao thức sử dụng tại lớp Application chính là mục tiêu ưu thích của các hacker khi tìm cách xâm nhập vào hệ thống.

Vì số lượng giao thức rất nhiều, nên mình sẽ chỉ bao quát những protocol phổ biến nhất và hay gặp nhất khi các bạn thực hành Penetration Testing tại giai đoạn 4 thôi. Nhưng các bạn yên tâm, nếu sau này gặp những giao thức mới, mình sẽ giải thích cho các bạn tại thời điểm đó.

Mình cũng muốn lưu ý là hầu như tất cả các giao thức của lớp Application đều sẽ theo mô hình client-server. Nghĩa là server sẽ là máy chủ cung cấp dịch vụ và client sẽ là thiết bị cá nhân có nhu cầu sử dụng dịch vụ. Mô hình client-server mình cũng đã nhắc một lần trong phần giao thức DHCP của bài trước, các bạn có thể xem lại nếu quên nhé.

1/ Giao thức FTP – Port 20, 21

Giao thức FTP viết tắt của File Transfer Protocol. Giao thức FTP được dùng để trao đổi file giữa 1 client và 1 server. Hay nói cách khác, FTP sẽ cho phép các máy trong cùng một mạng có thể trao đổi file dữ liệu qua lại với nhau thông qua một server trung gian.

Một cách tóm tắt thì FTP sẽ hoạt động như sau:

  1. Bạn sẽ được cấp cho một tài khoản với username và password để từ máy của bạn (client) kết nối đến máy chủ đang chạy FTP (server).
  2. Bạn sẽ dùng username và password được cấp để đăng nhập vào server FTP.
  3. Server FTP làm nhiệm vụ xác thực username và password của bạn, nếu hợp lệ sẽ cho phép bạn truy cập vào server FTP cũng lưu trữ các file dữ liệu.
  4. Sau khi đã đăng nhập, bạn có quyền tải file dữ liệu của mình lên FTP server để chia sẻ cho mọi người dùng trong mạng, hoặc download dữ liệu từ FTP server xuống máy của bạn.

Ví dụ bạn muốn chuyển dữ liệu cho bạn Nguyễn Thi A bằng giao thức FTP. Cả hai bạn đều có quyền truy cập vào FTP server. Bạn sẽ làm như sau:

  1. Dùng tài khoản được cấp của bạn tải file lên FTP server
  2. Gọi điện hoặc nhắn tin cho bạn A biết file hiện đang lưu trữ tại FTP server
  3. Bạn A sẽ đăng nhập vào FTP server để tải file về máy mình

Giao thức FTP sử dụng giao thức TCP. Để thực hiện việc trao đổi dữ liệu, 2 đường truyền TCP sẽ đuwọc sử dụng song song. Một đường truyền dùng cho việc quản lý và một dành cho dữ liệu.

Đường truyền quản lý (port 21) sẽ được dùng để gửi username và password từ máy client đến server, nhận lệnh từ máy client (ví dụ như lệnh download file, upload file), v.v.

Đường truyền dữ liệu (port 20) sẽ được dùng để client có thể gửi file từ máy mình đến và lưu trữ file tại máy chủ server.

FTP có một account đặc biệt với usernam và password đều là anonymous. Account này được coi như là một public account mà ai cũng có thể vào được, được dùng để chia sẻ file dữ liệu với những cá nhân không được cấp tài khoản FTP. Tuy nhiên, nếu không được quản lý cẩn thận, account này hoàn toàn có thể được sử dụng để gửi và thực thi mã độc.

Trên Linux, bạn có thể dùng lệnh sau để kết nối đến FTP server.

ftp <IP-address> <port>  
hoặc 
nc <IP-address> <port> 

2/ Giao thức SSH – Port 22

Giao thức SSH viết tắt của Secure Shell. SSH là một giao thức dùng cho phép bạn truy cập máy chủ từ xa với đường truyền được mã hóa nhằm bảo vệ thông tin được truyền đi.

Không chỉ dùng để kết nối đến máy chủ, SSH còn cho phép bạn thực thi mệnh lệnh và truy cập từ xa vào các hệ thống mạng, thiết bị và ứng dụng nằm trong mạng nội bộ của công ty.

Thực thi mệnh lệnh từ xa là sao? Nghĩa là từ nhà bạn, thông qua giao thức SSH, bạn hoàn toàn có thể ra lệnh tắt máy, ra lệnh cho máy chạy một tác vụ nào đó v.v. Hay nói cách khác, SSH cho phép bạn gần như nằm toàn bộ hoặc một phần quyền điều khiển máy chủ/thiết bị đó.

SSH thường được cấp cho những người làm quản trị viên hệ thống, cho phép họ có thể truy cập hệ thống công ty từ nhà.

SSH sử dụng mô hình client-server với server là máy chủ và client là thiết bị cá nhân của người có nhu cầu cần kết nối đến máy chủ. Để truy cập vào server SSH, bạn cần phải được cấp một username và password.

Vì cách thức hoạt động cũng như giao thức SSH liên quan khá nhiều đến mã hóa nằm ngoại phạm vi của series nên mình xin phép không trình bày. Nhưng các bạn có thể tham khảo tại đây:

Ở giai đoạn 4, sẽ có 1 máy chúng ta sẽ thực hành hack giao thức SSH, đến lúc đó mình sẽ nói sâu hơn các thành phần dùng để xác thực người dùng trên SSH nhé.

Trên Linux, bạn có thể kết nối với SSH server bằng lệnh sau:

ssh <IP-address>/<host>  
hoặc
ssh username@<IP-address>/<host>

3/ Giao thức Telnet – Port 23

Giao thức Telnet có chức năng gần giống với giao thức SSH. Tức là Telnet có thể được dùng để kết nối từ máy client tới máy chủ server, cho phép quản trị viên hệ thống có thể truy cập để điều hành hệ thống từ xa.

Giao thức Telnet sử dụng giao thức TCP và phương thức truyền dữ liệu in-band để truyền và nhận dữ liệu.

Cũng giống như SSH, để có thể sử dụng Telnet, người dùng phải được cấp một username và password để xác thực người dùng khi đăng nhập.

Tuy nhiên điểm khác biệt quan trọng nhất đó chính là giao thức Telnet không mã hóa đường truyền của nó. Tất cả mọi thông tin được truyền đi đều là ở dạng chữ mà con người có thể đọc và hiểu được. Dẫn đến nguy cơ nếu hacker kiểm soát được đường truyền thì khả năng lộ thông tin nhạy cảm là rất cao.

Trên Linux, bạn có thể kết nối với Telnet server bằng command sau:

telnet <IP-address>/<host> 

4/ Bộ giao thức Email (SMTP – Port 25, POP3 – Port 110 & IMAP – Port 143)

4a/ Giao thức POP3 – Port 110

POP3 viết tắt của Post Office Protocol version 3 và sử dụng giao thức TCP. POP3 là một giao thức nhận email một chiều do nó chỉ có một chiều tương tác từ server đến máy bạn và không có chiều ngược lại. Nghĩa là khi email được chuyển tới email server, POP3 sẽ download email đó xuống máy của bạn; sau khi hoàn thành tác vụ này, nó sẽ xóa luôn email gốc đang được lưu trên email server của bạn.

Tuy nhiên, hiện nay rất nhiều dịch vụ cung cấp email có một tùy chỉnh cho phép bạn lưu lại email gốc trên server. Với tùy chỉnh này bạn có thể xem cùng 1 email trên nhiều thiết bị khác nhau.

Nếu không có tùy chỉnh trên, POP3 sẽ chỉ phù hợp với những người chỉ có nhu cầu kiểm tra email trên một thiết bị duy nhất, hoặc những ai có hộp thư gần đầy bộ nhớ nhưng chứa toàn email không thể xóa được. Tuy nhiên, do POP3 không có mặc định đồng bộ dữ liệu giữa hộp thư chứa email trong máy bạn với server online, thế nên nếu bạn vô tình làm mất thiết bị truy cập mail của mình, hoặc làm hỏng nó, bạn coi như mất toàn bộ dữ liệu mail được lưu trong máy.

4b/ Giao thức IMAP – Port 143

Trái ngược với POP3, giao thức IMAP, viết tắt của Internet Message Access Protocol, là một giao thức nhận email 2 chiều và sử dụng giao thức TCP. Nghĩa là nó không chỉ giao tiếp từ máy client đến server mà có cả chiều giao tiếp từ server đến client nữa. Không như POP3, IMAP không download toàn bộ nội dung email từ server xuống máy của bạn mà lưu trữ hoàn toàn trên mail server. IMAP chỉ download phần đầu thư bao gồm địa chỉ nhận, địa chỉ gửi xuống thôi. Điều này cho phép nhiều thiết bị khác nhau có thể xem nội dung của cùng 1 email.

IMAP cũng có tính năng đồng bộ dữ liệu từ hộp mail của máy bạn lên server. Ví dụ khi bạn xóa 1 email trong máy bạn, server cũng sẽ tự động xóa email đó.

IMAP còn có một tính năng đặc biệt đó là cho phép bạn tìm lại email dựa theo từ khóa, giúp đơn giản hóa việc tìm và quản lý email.

IMAP phù hợp với những người có nhu cầu đăng nhập hộp email trên nhiều thiết bị khác nhau. Tuy nhiên với những tính năng vừa kể như trên, IMAP đòi hỏi đường truyền Internet của bạn phải ổn định đặc biệt phải chú ý dọn email thường xuyên để có dung lượng cho email mới.

4c/ Giao thức SMTP – Port 25

Giao thức SMTP viết tắt của Simple Mail Transfer Protocol. Đây là một giao thức client-server và server-server. Giao thức SMTP được dùng để gửi email từ người gửi đến SMTP mail server của người nhận nhờ vào việc sử dụng một phần mềm được gọi là Message Transfer Agent (MTA).

Các SMTP server có một cơ sở dữ liệu liệt kê những địa chỉ email nào có thể được nhận hoặc gửi email, và nó cũng có thể quy định một tài khoản email được phép gửi tối đa bao nhiêu email trong một khoản thời gian nhất định.

4d/ Cách thức gửi và nhận email

Ví dụ mình muốn gửi một email từ mình tới anh Khoa NT đi.

Đầu tiên mình sẽ đăng nhập vào tài khoản email của mình, soạn email và nhấn gửi. Lúc này giao thức SMTP sẽ kết nối máy mình (client) đến máy chủ SMTP email (server) của Gmail (giả dụ mình xài Gmail đi).

Sau đó SMTP server của Gmail sẽ kiểm tra phần đầu thư chứa thông tin về người gửi và địa chỉ email của người nhận. Vì mình hiện đang ở Canada, và phần đầu thư chứa thông tin của mình có chứa cả địa chỉ IP máy mình đang dùng để gửi email. Địa chỉ đó là 1 địa chỉ IP của Canada.

Anh Khoa NT ở Việt Nam và trong phần địa chỉ email của anh có chứa cả địa chỉ IP của thiết bị anh dùng gần nhất. Đây là một địa chỉ IP ở Việt Nam sau khi đã được tra cứu từ DNS system.

Lúc này server SMTP của Gmail ở Canada sẽ gửi email của mình về server SMTP của Gmail ở Việt Nam. Và khi anh Khoa đăng nhập vào hộp mail của mình trên điện thoại hoặc trên máy tính, nếu anh Khoa sử dụng POP3, email của mình sẽ được tải xuống và hiển thị nội dung ra cho anh. Còn nếu anh Khoa sử dụng IMAP, IMAP sẽ nạp nội dung email từ SMTP server vào trong hộp email của anh.

Sự khác nhau ở đây là, POP3 sẽ download toàn bộ nội dung email xuống và lưu vào hộp mail của anh Khoa, sau đó có thể POP3 sẽ xóa đi nội dung gốc trong SMTP server. Còn IMAP, giống như tạo một bản copy nội dung của email mình gửi và lưu lại vào hộp mail của anh Khoa; bản email gốc vẫn còn nguyên trên SMTP server.

5/ Giao thức HTTP – Port 80 & giao thức HTTPS – Port 443

5a/ Giao thức HTTP – Port 80

Giao thức HTTP viết tắt của Hybertext Transfer Protocol (HTTP). Đây là giao thức nền tảng của Word Wide Web. Giao thức HTTP được sử dụng để tải nội dung của một website từ server chứa website đó đến máy của bạn.

Giao thức HTTP sử dụng mô hình client-server và sử dụng giao thức TCP.

Giao thức HTTP sử dụng 2 phương thức truy vấn dữ liệu sau để giao tiếp với server:

  • GET request: Get request được dùng để yêu cầu hoặc truy vấn dữ liệu từ một nguồn xác định nào đó. Ví dụ như khi bạn truy cập vào trang tuhocnetworksecurity.business.blog của chúng ta, bạn đang gửi một GET request đến server chứa website này để yêu cầu, truy vấn hay để lấy nội dung của website tuhocnetworksecurity.busines.blog từ server đang chứa nó về hiển thị trên trình duyệt của bạn.
  • Post request: Post request được dùng để gửi thông tin mà bạn đã nhập đến web server để sử lý. Ví dụ khi bạn nhập mật khẩu và password vào trang đăng nhập Facebook và bấm đăng nhập, bạn đang gửi một Post request đến server của Facebook đi kèm theo username và password của của bạn để Facebook xác thực tài khoản.

Để dễ nhớ bạn hãy nhớ như sau:

  • Động từ get trong tiếng Anh thường được dùng để chỉ hành động chủ động lấy một thứ gì đó.
  • Động từ post trong tiếng Anh có nghĩa là đăng (ví dụ post bài) hoặc gửi một dữ liệu gì đó.

Khi bạn gửi truy vấn đến một server chứa website nào đó, bạn sẽ nhận lại một HTTP response, có thể được hiểu như phản hồi của server về yêu cầu mà bạn đã gửi đến.

Một HTTP response sẽ bao gồm những phần sau:

  1. HTTP status code
  2. HTTP response header
  3. HTTP body (optional)

Trong đó HTTP status code, sẽ cho biết là liệu HTTP request có được đáp ứng hay không. HTTP status code có dạng một dãy có 3 chữ số như sau:

  1. 1xx Hiển thị thông tin
  2. 2xx Báo hiệu yêu cầu đã được đáp ứng thành công
  3. 3xx Báo hiệu request đã được chuyển hướng sang một địa chỉ server khác
  4. 4xx Lỗi do client
  5. 5xx Lỗi do server

Giá trị xx sẽ chạy từ 00 đến 99.

Hẳn các bạn đã thường gặp những status code như 404 NOT FOUND, thông báo người dùng đã truy cập vào một trang không tồn tại chứ? Đó là ví dụ của status code.

Các bạn có thể tìm hiểu thêm về status code tại đây.

HTTP response header, sẽ cho biết những thông tin quan trọng như ngôn ngữ (ở đây là HTML) và định dạng dữ liệu nào được gửi ở phần HTTP body, status code, ngày giờ dữ liệu được gửi, v.v.

HTTP response body, sẽ là phần nội dung mà bạn yêu cầu. Đương nhiên nếu server gặp lỗi, không phản hồi thì HTTP response sẽ không có phần này.

Giao thức HTTP có một điểm yếu chết người đó là dữ liệu được truyền qua HTTP sẽ không được mã hóa mà ở dạng chữ người thường có thể đọc được. Dẫn đến khả năng bị lộ thông tin mật khẩu rất cao.

5b/ Giao thức HTTPS – Port 443

Giao thức HTTPS viết tắt của Hypertext Transfer Protocol Secure. HTTPS cũng được dùng để trao đổi dữ liệu giữa client và server, tuy nhiên HTTPS sẽ mã hóa toàn bộ thông tin trước khi được truyền đi, làm giảm thiểu việc lộ thông tin nhạy cảm.

HTTPS sử dụng một giao thức được gọi là Transport Layer Security (TLS) hay trước đây còn được gọi là Secure Sockets Layer (SSL) để mã hóa đường truyền. Đây là kiến thức liên quan đến mã hóa nằm ngoài lộ trình nên mình xin phép không đề cập đến, tuy nhiên bạn có thể tham khảo thêm tại đây.

5c/ Phân biệt HTTP và HTTPS trên thanh trình duyệt

Khi duyệt web bằng Google Chrome, Torch hay Cốc Cốc (các trình duyệt dùng nhân Chromium của Google), bạn hãy chú ý nhìn vào biểu tượng nằm bên trái của thanh url. Chúng ta sẽ có 3 biểu tượng sau:

  • Lock Sử dụng HTTPS – An toàn
  • View site information Thông tin cần chú ý hoặc không an toàn
  • Dangerous Sử dụng HTTP – Không an toàn

Đọc thêm tại đây.

Ví dụ sử dụng giao thức HTTP

Trên các trình duyệt khác ví dụ như Firefox trước đây sẽ có khác biệt một tí. Đó là Firefox có khoá màu xanh lá và khoá màu xám, cả hai đều chứng tỏ đường truyền của bạn được mã hoá bởi HTTPS. Các bạn có thể tìm hiểu thêm tại 2 link sau:

  1. Sự khác biệt giữa khoá xanh và khoá xám
  2. Tìm hiểu về EV

Các bạn cũng lưu ý là link số 1 ở trên đã có từ năm 2015, ở thời điểm hiện tại, cả Chrome và Firefox đều đã bỏ icon khoá xanh, vì sau khi thử nghiệm họ nhận thấy chứng chỉ EV không bảo vệ người dùng như họ đã tưởng. Chi tiết bài viết tại đây .

Thế nên ở thời điểm hiện tại, bạn chỉ cần quan tâm có khoá hay không khoá khi duyệt web thôi nhé 😀

6/ Giao thức SMB/Samba -Port 139 và 445

Giao thức SMB viết tắt của Server Message Block. Giao thức SMB sử dụng giao thức TCP. SMB là một giao thức quan trọng và mặc định trên Windows, nó có chức năng gần giống với giao thức FTP. SMB sẽ cho phép người dùng truy cập từ xa vào hệ thống máy chủ hoặc máy tính để truy xuất, mở và chỉnh sửa dữ liệu được lưu tại máy chủ hoặc máy tính đó.

SMB là một giao thức theo mô hình client-server. Lúc đầu, SMB sử dụng port 139 để các máy có thể kết nối đến nó. Nhưng kể từ Windows 2000, port 445 đã được sử dụng.

Samba là tên của một chương trình được phát triển để cài đặt giao thức SMB trên các hệ thống chạy hệ điều hành Linux. Samba cho phép các hệ thống này có thể giao tiếp và trao đổi dữ liệu bình thường với các thiết bị chạy Windows.

7/ Hệ thống DNS

Hệ thống DNS viết tắt của Domain Name System. Đây là một hệ thống có nhiệm vụ dịch từ tên miền ra địa chỉ IP được dùng để gán cho tên miền đó.

Như mình đã nói ở bài trước, địa chỉ IPv4 hoặc IPv6 rất khó nhớ đối với người dùng thông thường. Nên thay vì bắt họ phải nhớ một dãi số để truy cập một website, để cho họ nhớ một chuỗi ký tự có nghĩa ví dụ như tuhocnetworksecurity sẽ dễ hơn nhiều. Và DNS đã ra đời để hoàn thành sứ mạng đó.

Có thể xem DNS giống như một cuốn danh bạ điện thoại vậy. Thay vì lưu giữ tên công ty với số điện thoại tương ứng, DNS sẽ lưu giữ tên miền (ví dụ tuhocnetworksecurity) với địa chỉ IP tương ứng.

Các bạn có thể thử check địa chỉ IP ứng với tên miền bằng câu lệnh sau trên Kali Linux

vincent@kali:~$ nslookup 
> google.com
Server:		64.59.135.143
Address:	64.59.135.143#53

Non-authoritative answer:
Name:	google.com
Address: 172.217.14.206
Name:	google.com
Address: 2607:f8b0:400a:801::200e

Như bạn đã thấy, câu lệnh nslookup đã cho mình biết được website google.com tương ứng với địa chỉ IPv4 172.217.14.206. Server 64.59.135.143 chính là nơi lưu trữ DNS có chứa domain google.com.

Đề tìm hiểu cách hệ thống DNS hoạt động, mình đã tìm được một nguồn khá hấp dẫn trình bày cách thức hệ thống DNS hoạt động dưới dạng truyện tranh. Các bạn theo dõi nhé.


Cám ơn các bạn đã đón xem, bài cuối tạm khép lại series Mạng Căn Bản, trình bày về các hình thức tấn công mạng phổ biến sẽ được post vào thứ 3 tuần sau. Các bạn nhớ theo dõi nhé.

Xin chân thành cám ơn,

Vincent Nguyễn

Source:

https://www.hostinger.com/tutorials/what-is-ftp#:~:text=FTP%20(File%20Transfer%20Protocol)%20is,as%20FTP%20host%2Fsite).
https://www.geeksforgeeks.org/file-transfer-protocol-ftp-in-application-layer/
https://www.geeksforgeeks.org/simple-mail-transfer-protocol-smtp/?ref=lbp
https://www.hostinger.com/tutorials/email/pop3-imap-smtp-protocols-explained-ports
https://www.cloudflare.com/learning/ddos/glossary/hypertext-transfer-protocol-http/
https://blog.google/products/chrome/milestone-chrome-security-marking-http-not-secure/
https://www.cloudflare.com/learning/ssl/what-is-https/
https://nordvpn.com/blog/what-is-smb/

Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s