1. Xác định hệ thống có đang hoạt động hay không?
Một trong những bước cớ bản lập ra một mạng nào đó là ping sweep trên một dãy mạng và IP để xác định các thiết bị hoặc hệ thống có đang hoạt động hay không. Ping thường được dùng để gửi các gói tin ICMP ECHO tới hệ thống đích và cố gắng nhận được một ICMP ECHO REPLY để biết hệ thống đó đang hoạt động. Ping có thể được chấp nhận để xác định số lượng hệ thống còn sống có trong mạng trong mạng vứa và nhỏ ( Lớp C có 254 và B có 65534 địa chỉ) và chúng ta có thể mất hàng giờ, hàng ngày để hoàn thành cho nhánh mạng lớp A 16277214 địa chỉ.
a) Netword Ping Sweeps
Netword pinging là hành động gửi các loại của giao thông mạng tới đích và phân tích kết quả. Pinging sử dụng ICMP (Internet Control Message Protocol). Ngoài ra, nó còn sử dụng TCP hoặc UDP để tìm host còn sống.
Để thực hiện ICMP ping sweep, ta có thể sử dụng fping, nmap,….
Fping –a –g 192.168.10.1 192.168.10.10
-a hiện thi host đang sống: alive
29
Nmap –sP –PE 192.168.10.0/24
-sP: ping scan -PE: ping echo
30 Phòng chống: chúng ta có thể dùng pingd giữ tất cả các giao thông mạng ICMP ECHO và ICMP ECHO REPLY ở cấp độ host. Điểm này đạt được bằng cách gỡ bỏ sự hỗ trợ của việc xử lý ICMP ECHO từ nhân hệ thống. Về mặt cơ bản, nó cung cấp một cơ chế điều khiển truy cập ở mức độ hệ thống.
b) ICMP query
Ping sweeps (or ICMP ECHO packets) có thể nói chỉ là đỉnh đầu của tảng băng khi nói đến thông tin ICMP về một hệ thống. chúng ta có thể thu thập nhiều loại thông tin có giá trị đơn giản bằng cách các gói tin ICMP. Chúng ta có thể yêu cầu mặt nạ mạng của một thiết bị nào đó với Address Mask Request. Mặt nạ mạng rất quan trọng vì chúng ta có thể xác định được tất cả địa chỉ của đích, biết được gatewate mặt định, địa chỉ broadcast. Nhờ vào gateway mặc định, chúng ta có thể tấn công router. Với địa chỉ broadcast. Nhưng không phải tất cả các router nào cũng hỗ trợ Time và Netmask.
Phòng chống: Khóa loại ICMP mà cung cấp thông tin tại router biên (router đi ra ISP). Để giảm tới mức thiểu, chúng ta nên dùng access list (ACLs):
o Access-list 101 deny icmp any any 13 // yêu cầu timestamp o Access-list 101 deny icmp any any 17 // yêu cầu address mask
31
2. Xác định các dịch vụ đang chạy hoặc đang lắng nghe.
a) Port Scanning
Port scanning là quá trình gửi các gói tin tới cổng TCP và UDP trên hệ thống đích để xác định dịch vụ nào đang chạy hoặc trong tình trạng đang lắng nghe. Việc xác định đang lắng nghe là rât quan trọng để xác định các dịch vụ đang chạy. Thêm vào đó, chúng ta có thể xác định loại và phiên bản hệ điều hành đang chạy và ứng dụng đang xử dụng.
b) Các Loại Scan
Trước khi thực hiện port scanning, chúng ta nên điểm qua một số cách thức quét sẵn có:
TCP Connect scan: loại này kết nối tới cổng đích và thực hiện đầy đủ quy trình bắt tay ba bước (SYN, SYN/ACK, ACK). Tuy nhiên điều này thì dễ dàng bị phát hiện bởi hệ thống đích. Nó sử dụng lời gọi hệ thống thay cho các gói tin sống (raw packets) và thường được sử dụng bởi những người dùng Unix không có quyền.Vì SYN Scan không thể thực hiện được.
TCP SYN scan: nó không tạo ra một kết nối tới nguồn mà chỉ gửi gói tin SYN(bước đầu tiên trong ba bước tạo kết nối) tới đích. Nếu a gói tin SYN/ACK được trả về thì chúng ta biết được cổng đó đang lắng nghe. Ngược lại, nếu nhận được RST/ACK thì cổng đó không lắng nghe. Kỹ thuật này khó bị phát hiện hơn là TCP connect và nó không lưu lại
32 thông tin ở mày tính đích. Tuy nhiên, một trong những nhược điểm của kỹ thuật này là có thể tạo ra điều kiện từ chối dịch vụ DoS nếu có quá nhiều kết nối không đầy đủ được tạo ra. Vì vậy, kỹ thuật này là an toàn nếu không có quá nhiều kết nối như trên được tạo ra.
TCP ACK Scan: kỹ thuật này được dùng để vạch ra các quy tắt thiết lập tường lửa. nó có thể giúp xác định xem tường lửa là trình trích lọc các gói tin đơn giản cho phép tạo kết nối hay là trình trích lọc năng cao. Tuy nhiên nó không thể phân biệt được cổng nào open hay closed. TCP Windows Scan: Giống với ACK Scan, điểm khác là nó có thể phát
hiện cổng open với closed.
UDP Scan: kỹ thuật này gửi một gói tin UDP tới cổng đích. Nếu cổng đích trả lời với thông điệp “ICMP port unreachable ” thì cổng closed. Nếu không nhận được thông điệp trên thì cổng trên đang mở. Tuy nhiên, UDP scan là một quá trình rất chập nếu như chúng ta cố gắng scan một thiệt bị nào đó mà được áp chính sách trích lọc gói tin mạnh. TCP FIN, XMAS, NULL: chúng chuyên nghiệp trong việc lén lút vượt
tường lửa để khám phá các hệ thống ở phía sau. Tuy nhiên, chúng lại phụ thuộc nhiều vào cách xử lý của hệ thống đích mà(điển hình là Windows) thì không có biểu hiện gì.
c) Xác định các dịch vụ TCP và UDP đang chạy
33 Netcat là một tiện ích mạng Unix đơn giản tính năng đọc và ghi dữ liệu qua kết nối mạng, sử dụng giao thức TCP / IP.Nó được thiết kế như là một công cụ đáng tin cậy "back-end" có thể được sử dụng trực tiếp hoặc dễ dàng điều khiển bởi các chương trình và các script khác. Đồng thời, nó là công cụ gỡ lỗi mạng với nhiều tính năng và công cụ thăm dò.
Nc –v –z –w2 192.168.10.102 1-4000 -v: xuất chi tiết ra màn hình
-z: zero-I/O mode – không gửi dữ liệu nào chỉ phát ra một gói tin. 192.168.10.102: host
1-4000: port cần quét.
Nmap (Network Mapper) là một tiện ích nguồn mở miễn phí cho phát hiện mạng và kiểm toán an ninh. Nhiều quản trị mạng và hệ thống cũng tìm thấy sự hữu ích cho các công việc như kiểm kê mạng lưới, dịch vụ quản lý lịch trình, và theo dõi thời gian hoạt động dịch vụ và máy chủ. Nmap sử dụng các gói tin IP thô trong các phương pháp mới để xác định host nào có sẵn trên mạng, các dịch vụ (tên ứng dụng và phiên bản) mà host đó đang cung cấp, hệ điều hành gì (và các phiên bản hệ điều hành) mà họ đang chạy, loại bộ lọc gói tin hoặc tường lửa nào đang sử dụng, và nhiều đặc điểm khác. Nó được thiết kế để scan nhanh chóng các mạng
34 lớn, nhưng ho. Nmap chạy được trên tất cả các hệ điều hành, và các gói nhị phân chính thức có sẵn cho Linux, Windows, và Mac OS X.
Cách dùng đơn giản nhất, không đặc tả tham số: nmap 192.168.10.0/24
35 a. Chuyển <target> từ hostname thành Ipv4 sử dụng DNS. Nếu là một địa
chỉ IP thì không cần chuyển.
b. Thực hiện ping tới host, mặc định với một gói tin yêu cầu ICMP echo và một gó tin TCP ACK gới tới cổng 80 để xác định host đó có đang up hay không? Nếu không, nmap sẽ thoát và hiện thông báo. Chúng ta có thể sử dung Ping NULL(-PN) để bỏ qua bước này.
c. Chuyển IP đích thành tên với truy vấn DNS ngược. điều này có thể bỏ qua vơi thuộc tính –n để cải thiện tốc độ và khả năng không bi phát hiện. d. Thực hiện quét TCP port với hơn 1000 port phổ biến được liệt kê tại
nmap-services. Quá trình scan SYN sẽ được thực hiện, nhưng Connect scan sẽ được thay thế khi người dùng Unix không phải root thiếu quyền cần thiết để gửi các gói tin thô.
e. In kết qua lên màn hình
Quét host đang up: nmap –sP –PE 192.168.10.0/24
-sP: ping scan -PE: ping echo
36 Phụ thuộc vào độ phức tạp của mạng đích và các host, quá trình quét có thể dễ dàng bị phát hiện.Nmap cung cấp khả năng làm giả địa chỉ nguồn với tùy chọn –Ddecoy. Nó được tạo ra để làm tràn ngập cái site đích với những thông tin giả mạo. Thứ cơ bản nằm phía sau tùy chọn này là chạy scan giả cùng lúc với scan thật. Hệ thống đích sẽ trả lời trên các địa chỉ giả cũng như scan port thực của chúng ta. Và quan trọng hơn cả là địa chỉ giả phải còn sống. Ngược lại, quá trìnhscan với SYN và dẫn đến điều kiện từ chối dịch vụ
37
d) Phòng chống:
Tắt tất cả các dịch vụ không cần thiết. Trên Unix, chúng ta có thể thực hiện điều này bằng cách xem các dịch vụ không cần thiết trong /ect/inetd.conf và tắt các dịch vụscript lúc khởi động. Trên Windows, rất khó để tắt các dịch vụ không cần thiết vì theo cách hoạt động của Windows, cổng TCP 139 và 445 cung cấp nhiều chức năng Windows hoạt động.
3. Xác định hệ điều hành
Nhiều công cụ mạnh và nhiều kỹ thuật quét port có sẵn để tìm các cổng mở trên hệ thống đích. Nếu nhìn lại, đối tượng đầu tiên của chúng ta là quét cổng để xác định các cổng TCP và UDP trên máy đích. Và với những thông tin đó, chúng ta có thể cổng nào đó đang lắng nghe có điểm yếu nào đó chăng? Nhưng chúng ta cần tìm nhiều thông tin hơn về mục tiêu. Đó chình là xác định hệ điều hành.
a) Active OS Detection
Thông tin càng chi tiết về hệ điều hành thì nó càng hữu ích trong việc phân tích điểm yếu. chúng ta có thể sử dụng kỹ thuật banner-grabbing, thứ lấy thông tin từ các dịch vụ FTP, telnet, SMTP, HTTP. Đây là cách đơn giản nhất để phát hiện hệ điều hành và phiên bản mà nó đang chạy. Theo đó, kỹ thuật đúng đắn là kỹ thuật stack fingerprinting. Nó là một kỹ thuật rất mạnh cho phép chúng ta biết chắc hệ điều hành đích với độ tin cậy cao. Stack fingerprinting sẽ yêu cầu ích nhất một cổng đang lắng nghe. Nmap có đoán được trong trường hợp không có cổng nào đang mở.
38 Active OS detection gửi các gói tin đến đích để xác định điểm đặc trưng chi tiết trong stack mạng, điều này cho phép chúng ta đoán hệ điều hành. Vì phải gửi các gói tin như thế, nên rất dễ dàng bị phát hiện. vì thế đây không phải là cách mà hacker áp dụng để tấn công.
Nmap với –O để xác định hệ điều hành.
b) Passive OS Detection
Sử dụng passive stack fingerprinting. Nó tương tự như khái niệm active stack fingerprinting. Thay vì gửi các gói tin tới đích để dễ dành bị phát hiện. Kẻ tấn công âm thầm giám sát giao thông mạng để xác định hệ điều hành đang sử dụng. Vì vậy, bằng việc giám sát giao thông mạng giữa các hệ thống khác nhau, chúng ta có thể xác định được hệ điều hành. Kỹ thuật này phụ thuộc vào vị trí trung tâm trên mạng và trên cổng cho phép bắt gói tin.
39
Chương 4: ENUMERATION I. Enumeration là gì?
Enumeration (Liệt kê) là bước tiếp theo trong quá trình tìm kiếm thông tin của tổ chức , xảy ra sau khi đã scanning và là quá trình tập hợp và phân tích tên người dùng, tên máy,tài nguyên chia sẽ và các dịch vụ . Nó cũng chủ động truy vấn hoặc kết nối tới mục tiêu để có được những thông tin hợp lý hơn . Enumeration (liệt kê) có thể được định nghĩa là quá trình trích xuất những thông tin có được trong phần scan ra thành một hệ thống có trật tự. Những thông tin được trích xuất bao gồm những thứ có liên quan đến mục tiêu cần tấn công, như tên người dùng (user name), tên máy tính (host name), dịch vụ (service), tài nguyên chia sẽ (share).Những kỹ thuật liệt kê được điều khiển từ môi trường bên trong. Enumeration bao gồm cả công đoạn kết nối đến hệ thống và trực tiếp rút trích ra các thông tin. Mục đích của kĩ thuật liệt kê là xác định tài khoản người dùng và tài khoản hệ thống có khả năng sử dụng vào việc hack một mục tiêu. Không cần thiết phải tìm một tài khoản quản trị vì c húng ta có thể tăng tài khoản này lên đ ến mức có đặc quyền nhất để cho phép truy cập vào nhiều tài khoản hơn đã cấp trước đây.
II. Banner Grabbing
Kỹ thuật chủ yếu nhất của enumeration là banner grabbing, Nó có thể được định nghĩa đơn giản như là kết nối đến ứng dụng từ xa và quan sát đầu ra. Nó có nhiều thông tin cho kẻ tấn công từ xa. Ít nhất chúng ta cũng đã xác định được mô hình dịch vụ đang chạy mà nhiều trường hợp là đủ để tạo nên quá trình nghiên cứu các điểm yếu. Phòng chống: tắt các dịch vụ không cần thiết. chúng ta có thể giới hạn việc truy cập tới các dịch vụ điều khiển truy cập mạng.
III. Enumerating các dịch vụ mạng 1. Http fingerprinting 1. Http fingerprinting
a) Telnet
TELNET (viết tắt của TerminaL NETwork) là một giao thức mạng (network protocol) được dùng trên các kết nối với Internet hoặc các kết nối tại mạng máy tính cục bộ LAN. Tài liệu của IETF, STD 8, (còn được gọi là RFC 854 và RFC 855) có nói rằng: Mục đích của giao thức TELNET là cung cấp một phương tiện truyền thông chung chung, có tính lưỡng truyền, dùng độ rộng 8 bit, định hướng byte. TELNET là một giao thức khách-chủ (client-server protocol), dựa trên nền TCP, và phần khách (người dùng) thường kết nối vào cổng 23 với một máy chủ, nơi cung cấp chương trình ứng dụng thi hành các dịch vụ.
40 Sử dụng telnet để tìm hiểu thông tin từ cổng dịch vụ đang mở, sử dụng công cụ từ xa để lấy thông tin thông qua cổng telnet mà hầu hết các hệ điều hành điều hổ trợ.
C:\>telnet www.google.com 80
b) Netcat
Là một tool cho phép ghi và đọc data thông qua giao thức TCP và UDP. Netcat có thể sử dụng như port scanner, backdoor, port redirecter, port listener,…
Sử dụng netcat bằng dòng lệnh:
- Chế độ kết nối : nc [-tùy_chọn] tên_máy cổng1[-cổng2]
- Chế độ lắng nghe: nc -l -p cổng [-tùy_chọn] [tên_máy] [cổng]
Ví dụ:
Lấy banner của Server:
nc đến 192.168.10.102, cổng 80 Quét cổng
41 chạy netcat với tùy chọn -z. Ví dụ để scan các cổng TCP(1->500) của host 192.168.10.102
nc –v www.google.com 80
www.google.com [74.215.71.105] 80 (http) open
c) Open SSL
Là sự nỗ lực hợp tác nhằm phát triển bộ mã nguồn mở với đầyđủ tính năng, được triển khai trên giao thức SSL (version 2 và version 3) vàgiao thức TSL(version 1) được quản lý bởi cộng đồng những người tìnhnguyện trên toàn thế giới sử dụng Internet để kết nối và phát triển bộOpenSSL và các tài liệu có liên quan.
Hầu hết các phần mềm như IMAP&POP, Samba, OpenLDAP, FTP,Apache và những phần mềm khác đều yêu cầu công việc kiểm tra tính xácthực của người sử dụng trước khi cho phép sử dụng các dịch vụ này. Nhưngmặc định việc truyền tải sự xác minh thông tin người sử dụng và mật khẩu(password) ở dạng văn bản thuần túy nên có thể được đọc hoặc thay đổi bởimột người khác. Kỹ thuật mã hóa như SSL sẽ đảm bảo tính an toàn và nguyênvẹn của dữ liệu, với kỹ thuật này thông tin truyền trên mạng ở dạng điểm nốiđiểm được mã hóa. Một khi OpenSSL đã được cài đặt trên Linux server chúng ta có thể sử dụng nó như một công cụ thứ ba cho phép các ứng dụngkhác dùng tính năng SSL
OpenSSL là một bộ công cụ mật mã triển khai trên giao thức mạng SSLvà TLS và các chuẩn mật mã có liên quan. Chương trình OpenSSL là một công cụ dòng lệnh
42 để sử dụng các chứcnăng mật mã của các thư viện crypto của OpenSSL từ nhân. OpenSSL có các thư viện cung cấp các chức năng mật mã cho các ứngdụng như an toàn webserver.
Là phần mềm mã nguồn mở , có thể sử dụng được cho cả mục đích thương mại và phi thương mại với tính năng mã hoá mạnh trên toàn thế giới, hỗ trợ các giao thức SSLv2 và SSLv3 và TLSv1, cho cả phép mã hoá RSA và Diffie-Hellman, DSO. Hỗ trợ cho OpenSSL và RSArefUS, nâng cao khả năng xử lý cụm mật khẩu đối với khoá riêng .Chứng chỉ X.509 dựa vào xác thực cho cả phía client và server, Hỗ trợ danh sách thu hồi chứng chỉ X.509, khả năng tái điều chỉnh đối với mỗi URL của các tham số bắt tay SSL.