I. CỔNG 2 a. Khái niệm 2 b. Quy ước và hoạt động của các loại cổng 3 c. Ứng dụng 5 II. QUÉT CỔNG 6 1. Khái niệm 6 2. Nguyên tắc quét cổng trên một hệ thống 7 3. Cài đặt thuật toán 9 III. KẾT LUẬN 10 1 I. CỔNG a. Khái niệm. Trong mạng máy tính, một cổng là một phần mềm ứng dụng cụ thể hay quá trình cụ thể xây dựng phục vụ như một thiết bị thông tin liên lạc đầu cuối trong hệ thống máy chủ điều hành của máy tính. Cổng được liên kết với một địa chỉ IP của máy chủ, cũng như các loại giao thức được sử dụng để giao tiếp. Mục đích của cổng là để nhận diện các ứng dụng khác nhau hoặc các tiến trình đang chạy trên một máy tính duy nhất và do đó cho phép chúng chia sẻ một kết nối vật lý đơn lẻ với một mạng chuyển mạch gói như Internet. Trong giao thức TCP và UDP, cổng là số nguyên 16 bit được chèn vào phần đầu (header) của mỗi gói tin, còn được gọi là số cổng. Số cổng, được thêm vào địa chỉ IP của máy tính, hoàn thành địa chỉ đích cho một phiên truyền thông. Đó là, các gói dữ liệu được chuyển qua mạng đến một địa chỉ IP đích cụ thể, và sau đó, khi tới máy đích, tiếp tục chuyển đến quá trình cụ thể ràng buộc với số cổng đích. Chẳng hạn, phía người dùng (client) có thể yêu cầu một máy chủ nào đó trên Internet cung cấp dịch vụ chia sẻ tập tin (file) qua máy chủ FTP. Để đáp ứng yêu cầu này, lớp phần mềm TCP trên máy của bạn phải nhận diện được port số 21 (đăng ký sẵn cho dịch vụ FTP) trong số các port 16 bit số nguyên được ghép theo gói tin yêu cầu của bạn. Tại máy chủ, lớp TCP sẽ đọc port 21 và chuyển tiếp yêu cầu đến máy chủ FTP. Hay nói cách khác, với một địa chỉ IP, chúng ta chỉ có thể xác định được một máy tính duy nhất trên mạng, tuy nhiên khi một máy tính chạy nhiều dịch vụ khác nhau thì chúng phải được phân biệt bởi khái niệm port. Ví dụ, máy chủ A (Server A) có dịch vụ web, DNS và FTP server, có địa chỉ IP là 210.245.126.14. Các máy tính khác khi muốn đến Server A thì cần đến địa chỉ IP (hay tên miền), nhưng để phân biệt dịch vụ là web, DNS hay FTP, cần xác định thêm port. Chẳng hạn, khi máy B muốn truy nhập dịch vụ web trên server A, trong gói tin gửi đi, IP đích sẽ là 210.245.126.14 và port đích sẽ là 80. Cùng lúc đó có máy C truy nhập đến dịch vụ DNS trên server A thì trong gói tin IP gửi đi, IP đích vẫn là 210.245.126.14 nhưng port đích sẽ là 53. Tương tự, máy D truy cập đến dịch vụ FTP trên server A, IP đích sẽ là 210.245.126.14 và port là 21. Thông 2 thường các ứng dụng thường ẩn các port này để giảm tính phức tạp của giao thức TCP/IP. Có tất cả 65535 cổng (port) và được chia thành 3 đoạn: Well Known Port (WKP), Registered Port (RP) và Dynamic/Private Port (D/PP). WKP gồm các port từ 0 đến 1023 và được giữ cho các ứng dụng phổ biến như web (port 80), mail (port 25), ftp (port 21) RP gồm các port từ 1024 đến 49151. Còn D/PP là các port từ 49152 đến 65535. IANA qui định WKP và RP phải được đăng ký với IANA (iana.org) trước khi sử dụng. b. Quy ước và hoạt động của các loại cổng i. Cổng phổ biến (Well Known Port 0-1023) Trong tầm từ 0-1023, hầu hết các port đã được đăng ký. Trong đó, nổi bật có các port phổ biến được liệt kê theo danh sách bên dưới. Với mạng cá nhân, muốn triển khai được các dịch vụ, chẳng hạn web server, ftp server hệ thống của bạn phải mở các port tương ứng. Ứng với mỗi thiết bị định tuyến (router) của từng hãng, bạn sẽ có cách mở port khác nhau. Để dễ dàng mở các port cũng như hướng dẫn chi tiết trên từng router, bạn có thể vào trang portforward.com để tìm đúng router đang có. Trang web này luôn cập nhật danh sách router mới nhất của nhiều hãng. Một điều cần lưu ý trước khi mở port là bạn nên kiểm tra lại hệ thống đã mở sẵn cổng này chưa bằng cách vào trang http://www.grc.com(nhớ tắt firewall trên Windows) hoặc dùng lệnh netstat -an để biết máy của bạn đang sử dụng và "lắng nghe" những port nào. Danh sách các cổng thông dụng 20 TCP File Transfer - FTP data 21 TCP File Transfer - FTP control 22 TCP/UDP SSH Remote Login Protocol/ pcAnywhere 23 TCP Telnet 25 TCP Simple Mail Transfer Protocol (SMTP) 38 TCP UDP Route Access Protocol (RAP) 3 42 UDP Host Name Server - Microsoft WINS 45 TCP Message Processing Module (receive) 46 TCP Message Processing Module (send) 50 TCP UDP Remote Mail Checking Protocol (RMCP) 66 TCP UDP Oracle SQL*NET 69 TCP UDP Trivial File Transfer Protocol (TFTP) 88 TCP UDP Kerberos Network Authentication Service 101 TCP UDP Network Information Center (NIC) Hostname Server 110 TCP UDP Post Office Protocol (POP) Version 3 118 TCP UDP SQL Services 119 TCP UDP Network News Transfer Protocol 130 TCP UDP Cisco FNATIVE 143 TCP UDP Internet Message Access Protocol (IMAP) Mail Server 161 TCP UDP SNMP 211 TCP UDP Texas Instruments 914C/G Terminal 280 TCP UDP http-mgmt 314 TCP UDP Opalis Robot 333 TCP UDP Texar Security Port 742 TCP UDP Network Revision Control System 747 TCP UDP Fujitsu Device Control 749 TCP UDP Kerberos Administration 767 TCP UDP Phonebook 777 TCP UDP Multiling HTTP 800 TCP UDP MDBS Daemon, Remotely Possible (Remote Control) 4 989 TCP UDP FTP Data Over TLS/SSL 990 TCP UDP FTP Control Over TLS/SSL 991 TCP UDP Netnews Administration System 992 TCP UDP Secure Telnet (over TLS/SSL) 993 TCP UDP Secure IMAP4 (over TLS/SSL) 994 TCP UDP Secure IRC (over TLS/SSL) 995 TCP UDP Secure POP3 (over TLS/SSL) 996 TCP Vsinet / Central Point Software Xtree License Server ii. Cổng đăng ký (Registered port: 1024–49151) Các cổng TCP và UDP có số từ 1024 đến 49151 được gọi là các cổng đăng ký (registered ports). IANA quản lý danh sách các dịch vụ sử dụng các port trong tầm số này để giảm thiểu việc sử dụng trùng nhau. Không giống nhu các port có số thấp hơn (0- 1023), những nhà phát triển dịch vụ TCP/UDP mới có thể chọn một số mới để đăng ký với IANA thay vì dùng trùng số đã đăng ký. iii. Cổng động/Cổng riêng (Dynamic/ Private Port: 49152–65535) Các cổng TCP và UDP có số bắt đầu từ 49152 đến 65535 được gọi là port động (dynamic port), port riêng (private port) hay port tạm (ephemeral port). IANA không quản lý Dynamic port cũng như không giới hạn việc sử dụng của người dùng. Các dịch vụ có thể chọn một hoặc vài port ngẫu nhiên miễn phí trong tầm số này khi cần truyền trên nhiều socket. c. Ứng dụng Hãy tưởng tượng, chiếc máy tính giống như ngôi nhà của bạn và port sẽ giống như các cửa ra vào. Bạn muốn mời một người nào đó vào nhà, nghĩa là phải chỉ cho họ biết lối vào (địa chỉ nhà) và mở sẵn cửa đón khách. Tương tự với máy tính, bạn phải cho 5 biết server đang lắng nghe (listening) ở port nào để client biết và gửi yêu cầu. Router trong mô hình bên dưới giữ vai trò như một người gác cổng. Nó sẽ mở các port dịch vụ trong mạng. II. QUÉT CỔNG 1. Khái niệm "Quét cổng" là thuật ngữ kỹ thuật để xác định cổng mở và các dịch vụ có sẵn trên một máy chủ mạng. Nó có thể được sử dụng bởi các chuyên gia an ninh để kiểm toán 6 các mạng máy tính cho các lỗ hổng có khả năng. Nó cũng có thể được sử dụng bởi những kẻ tấn công để kiểm tra các host/hosts có thể để khai thác. 2. Nguyên tắc quét cổng trên một hệ thống a. TCP scan Trên gói TCP/UDP có 16 bit dành cho Port Number điều đó có nghĩa nó có từ 1 – 65535 port. Không một hacker nào lại scan toàn bộ các port trên hệ thống, chúng chỉ scan những port hay sử dụng nhất thường chỉ sử dụng scan từ port 1 tới port 1024 mà thôi. Phần trên tôi đã trình bày về nguyên tắc tạo kết nối và ngắt kết nối giữa hai máy tính trên mạng. Dựa vào các nguyên tắc truyền thông tin của TCP, có thể Scan Port nào mở trên hệ thống bằng những phương thức sau đây: - SYN Scan: Khi Client bắn gói SYN với một thông số Port nhất định tới Server nếu server gửi về gói SYN/ACK thì Client biết Port đó trên Server được mở. Nếu Server gửi về cho Client gói RST/SYN tôi biết port đó trên Server đóng. - FIN Scan: Khi Client chưa có kết nối tới Server nhưng vẫn tạo ra gói FIN với số port nhất định gửi tới Server cần Scan. Nếu Server gửi về gói ACK thì Client biết Server mở port đó, nếu Server gửi về gói RST thì Client biết Server đóng port đó. - NULL Scan Sure: Client sẽ gửi tới Server những gói TCP với số port cần Scan mà không chứa thông số Flag nào, nếu Server gửi lại gói RST thì tôi biết port đó trên Server bị đóng. - XMAS Scan Sorry: Client sẽ gửi những gói TCP với số Port nhất định cần Scan chứa nhiều thông số Flag như: FIN, URG, PSH. Nếu Server trả về gói RST tôi biết port đó trên Server bị đóng. - TCP Connect: Phương thức này rất thực tế nó gửi đến Server những gói tin yêu cầu kết nối thực tế tới các port cụ thể trên server. Nếu server trả về gói SYN/ACK thì Client biết port đó mở, nếu Server gửi về gói RST/ACK Client biết port đó trên Server bị đóng. 7 - ACK Scan: dạng Scan này nhằm mục đích tìm những Access Controll List trên Server. Client cố gắng kết nối tới Server bằng gói ICMP nếu nhận được gói tin là Host Unreachable thì client sẽ hiểu port đó trên server đã bị lọc. - Có vài dạng Scan cho các dịch vụ điển hình dễ bị tấn công như: - RPC Scan: Cố gắng kiểm tra xem hệ thống có mở port cho dịch vụ RPC không. - Windows Scan tương tự như ACK Scan, nhưng nó có thể chỉ thực hiện trên một số port nhất định. - FTP Scan: Có thể sử dụng để xem dịch vụ FTP có được sử dụng trên Server hay không - IDLE cho phép kiểm tra tình trạng của máy chủ. b. UDP scan Nếu như gói tin truyền bằng TCP để đảm bảo sự toàn vẹn của gói tin sẽ luôn được truyền tới đích. Gói tin truyền bằng UDP sẽ đáp ứng nhu cầu truyền tải dữ liệu nhanh với các gói tin nhỏ. Với quá trình thực hiện truyền tin bằng TCP kẻ tấn công dễ dàng Scan được hệ thống đang mở những port nào dựa trên các thông số Flag trên gói TCP. Cấu tạo gói UDP: Như ta thấy gói UDP không chứa các thông số Flag, cho nên không thể sử dụng các phương thức quét cổng của TCP sử dụng cho UDP được. Thật không may hầu hết hệ thống đều cho phép gói ICMP. 8 Nếu một cổng bị đóng, khi Server nhận được gói ICMP từ client nó sẽ cố gắng gửi một gói ICMP type 3 code 3 port với nội dung là "unreachable" về Client. Khi thực hiện UDP Scan bạn hãy chuẩn bị tinh thần nhận được các kết quả không có độ tin cây cao. 3. Cài đặt thuật toán - Tư tưởng thuật toán: + Tạo một lớp socket với giao thức TCP + Kết nối tới địa chỉ IP và cổng cần quét + Nếu kết nối thành công → cổng mở + Ngược lại → cổng đóng. - Giao diện chính của chương trình: 9 III. KẾT LUẬN Việc quét cổng có ý nghĩa quan trọng trong việc kiểm tra, thăm dò máy chủ. Nó có ý nghĩa cả đối với các quản trị viên và những kẻ tấn công. Các quản trị viên dựa vào đó để có các chính sách an ninh mạng đối với hệ thống. Còn đối với những kẻ tấn công dựa vào đó để khai thác lỗ hổng, tấn công mạng. Mặc dù đã cố gắng, cùng với sự hướng dẫn tận tình của thầy Nguyễn Quang Uy, song vì thời gian còn hạn chế, kiến thức và kinh nghiệm còn chưa nhiều nên chương trình của chúng em không tránh khỏi những thiếu sót. Chúng em rất mong nhận được sự chỉ dẫn của thầy và sự góp ý của các bạn để chương trình được hoàn thiện hơn. 10 . dùng lệnh netstat -an để biết máy của bạn đang sử dụng và "lắng nghe" những port nào. Danh sách các cổng thông dụng 20 TCP File Transfer - FTP data 21 TCP File Transfer - FTP control 22. đó trên server đã bị lọc. - Có vài dạng Scan cho các dịch vụ điển hình dễ bị tấn công như: - RPC Scan: Cố gắng kiểm tra xem hệ thống có mở port cho dịch vụ RPC không. - Windows Scan tương tự như. port đó. - NULL Scan Sure: Client sẽ gửi tới Server những gói TCP với số port cần Scan mà không chứa thông số Flag nào, nếu Server gửi lại gói RST thì tôi biết port đó trên Server bị đóng. - XMAS