MỤC LỤC
Chương 1. TỔNG QUAN VỀ AN TOÀN BẢO MẬT HỆ THỐNG THÔNG TIN 5
1.1 Các khái niệm 5
1.1.1 Một số khái niệm về bảo mật 5
1.1.2 Một số hình thức tấn công mạng 6
1.1.3 Các mức bảo vệ an toàn mạng 8
1.2 Một số lỗ hổng về an toàn thông tin 9
1.2.1 Lỗ hổng trong hệ điều hành 9
1.2.3 Lỗ hổng trong dịch vụ mạng 9
1.3 Một số giải pháp chung bảo đảm an toàn thông tin 10
1.3.1 Tường lửa (Firewall) 10
1.3.2 Mạng riêng ảo (VPN) 11
1.3.3 Mã hóa 12
Chương 2. PHƯƠNG PHÁP DO THÁM HỆ THỐNG 13
2.1 Phương pháp “in dấu chân” 13
2.1.1 Khái niệm về “in dấu chân” (footprint) 13
2.1.2 In dấu chân mạng Internet 14
2.2 Quét (scanning) 20
2.2.1 Vấn tin ICMP 20
2.2.2 Quét cổng 24
2.2.3 Dò hệ điều hành 28
2.3 Liệt kê 32
2.3.1 Liệt kê trong Windows 32
2.3.2 Liệt kê trong UNIX 36
Chương 3: PHƯƠNG PHÁP XÂM NHẬP HỆ THỐNG 37
3.1 Xâm nhập hệ thống Windows: 37
3.1.1 Tìm tài khoản quản trị(Administrator) 37
3.1.3 Cửa sau (backdoor) và biện pháp đối phó: 42
3.1.4 Kết luận: 43
3.2 Xâm nhập hệ thống UNIX 44
3.2.1 Truy cập từ xa 44
3.2.2 Truy cập cục bộ 48
Chương 4: PHƯƠNG PHÁP TỪ CHỐI DỊCH VỤ (DOS) 49
4.1 Ngốn giải thông( Bandwidth consumption ) 49
4.2 Tước đoạt tài nguyên (Resource Starvation) 52
4.3 Lỗi lập trình ( programing Flaws ) 52
60 trang |
Chia sẻ: lethao | Lượt xem: 2921 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Khóa luận Nghiên cứu một số lỗ hổng trong an toàn thông tin, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t động hay không. Ping sẽ gửi gói dữ liệu ICMP (Internet Control Messege Protocol) đến hệ thống đích và nếu hệ thống đích vẫn hoạt động thì sẽ nhận được gói tin ICMP gửi trả lại từ hệ thống đó.
Hình 10 – Quét kết nối
Khi lưu lượng ICMP bị chặn, quét cổng(port scanning) là kỹ thuật xác định máy chủ hoạt dộng hay không. Bằng cách quét cổng trên từng địa chỉ IP, kẻ tấn công xác định được máy chủ nào hoạt động. Kỹ thuật này thường mất nhiều thì giờ và thường không thuyết phục. Công cụ nmap cho phép quét ping TCP với tùy chọn cổng là 80. Với tùy chọn cổng này hầu hết các các địa điểm đều cho phép đi qua bộ định tuyến đến hệ thống, hoặc hơn nữa là đi qua bức tường lửa chính. Tùy chọn này sẽ gửi gói dữ liệu TCP SYN đến mạng đích rồi chờ hồi âm. Máy chủ còn hoạt động sẽ đáp lại bằng gói dữ liệu TCP SYN/ACK.
Quét ping (ICMP ECHO) chỉ là phần nổi khi nói đến thông tin ICMP về hệ thống. Kẻ tấn công có thể thu thập đủ loại thông tin giá trị về hệ thống bằng cách gửi gói dữ liệu ICMP đến đó. Với công cụ icmpquery hoặc icmpush trong UNIX, kẻ tấn công có thể yêu cầu giờ trên hệ thống (để xem múi giờ) qua thông báo ICMP loại 13 (TIMESTAMP). Và có thể yêu cầu mặt nạ mạng của thiết bị bằng thông báo ICMP loại 17(ADDRESS MASK REQUEST). Mặt nạ mạng (subnet mask) của card mạng rất quan trọng vì nó giúp kẻ tấn công xác định tất cả mạng con đang dùng. Với vốn kiến thức về mạng con, kẻ tấn công dễ dàng hướng cuộc tấn công vào mạng con cụ thể và tránh đụng độ địa chỉ truyền(broadcast).
Icmpquery có tùy chọn yêu cầu xem giờ và mặt nạ địa chỉ:
Icmpquery [-B] [-f fromhost] [-d delay] [-T time] target
Trong đó option là các lựa chọn sau đây:
-t : truy vấn giờ hệ thống (mặc định).
-m : truy vấn mặt nạ địa chỉ.
Độ trễ giữa các lần gửi gói tin được tính theo thời gian là micro giây.
target : là danh sách tên máy hoặc địa chỉ.
-T: Lượng thời gian tính bằng giây để đợi máy đích trả lời. Mặc định là 5.
-B: kiểu truyền. icmpquery sẽ đợi hết khoảng thời gian nào đó và đưa kết quả ra màn hình.
Ví dụ muốn truy vấn giờ trên bộ định tuyến thông qua icmpquery, chạy lệnh:
[localuser@localhost /localDirectory]# icmpquery –t address[hostname].
Để truy vấn mặt nạ mạng con trên bộ định tuyến icmpquery, chạy lệnh:
[localuser@localhost /localDirectory]# icmpquery –m address[hostname].
Nhưng không phải bộ định tuyến hay hệ thống nào cũng đáp ứng ICMP TIMESTAMP hoặc NETMASK, cho nên việc áp dụng thành công vấn tin icmpquery và icmpush sẽ tùy thuộc nhiều vào máy chủ.
Biện pháp đối phó với truy vấn ICMP:
Lập bảng đồ mạng thông qua quét ping là phương pháp dành cho việc do thám mạng trước khi tấn công thật sự. Do đó, dò hoạt động quét ping có tính chất quyết định trong việc nhận biết thời điểm diễn ra cuộc tấn công và do ai tiến hành. Các phương pháp chính để dò quét ping là dùng các chương trình IDS và cơ chế dựa trên máy chủ (lập cấu hình máy chủ với việc ghi lại các tiến trình sử dụng tài nguyên trong hệ thống).
Trong UNIX có một vài tiện ích dò và ghi nhật ký những cuộc xâm nhập bất hợp pháp.
Program
Resource
Scanlogd
Protolog
Trong Windows: công cụ BlackICE (www.networkice.com) là giải pháp dò quét cổng TCP hữu hiệu.
Phòng ngừa: Do nhu cầu của tổ chức buộc phải cho phép thông qua một số lưu lượng ICMP nào đó, nên hạn chế lưu lượng ICMP và cân nhắc kỹ là nên cho thông qua loại ICMP nào. Phương pháp tối thiểu là chỉ cho phép gói dữ liệu ICMP ECHO REQUEST, DESTINATION UNREACHABLE, TIME EXCEEDED được thông qua.
Hình 11- Cấu hình chống quét ICMP
2.2.2 Quét cổng
Quét cổng (port scanning) là tiến trình nối cổng TCP và UDP trên hệ thống đích để xác định dịch vụ nào đang chạy hay trong tình trạng LISTENING. Nhân diện cổng nghe sẽ giúp kẻ tấn công xác định loại hệ điều hành và ứng dụng đang dùng. Dịch vụ hoạt động có thể cho phép người truy cập bất hợp pháp hệ thống bị lập cấu hình sai hoặc chạy phiên bản phần mềm được biết là có chỗ yếu bảo mật
Sau đã nhận diện được hệ thống là đang hoạt động, tiếp theo kẻ tấn công sẽ xác định cổng nghe.
Một vài mục tiêu muốn đến khi quét cổng của hệ thống.
Nhận diện dịch vụ TCP và UDP chạy trên hệ thống đích.
Nhận diện loại hệ điều hành trên hệ thống đích.
Nhận diện ứng dụng hoặc phiên bản dịch vụ cụ thể.
- Quét kết nối TCP : kiểu quét này nối cổng đích hoàn tất bắt tay 3 chiều (three-way handshake).
Hình 12 – Kết nối TCP
-Máy nguồn sẽ gửi đến máy đích gói tin SYN tới cổng nào đó trên máy đích và kèm theo số thứ tự để xác nhận.
-Nếu dịch vụ hoặc cổng trên máy đích đang mở, máy đích gửi trả lại gói tin SYN/ACK với số thứ tự tăng thêm 1. Sau đó cổng này đặt vào danh sách lắng nghe(listen queue) một khoảng thời gian ít nhất là 75 giây để chờ tín hiệu gửi trả lại. Thông thường một máy có khả năng lưu giữ rất ít số lượng kết nối kiểu này. Nếu một máy tính gửi một số lượng lớn tín hiệu SYN tới máy nạn nhân thì sẽ làm cho danh sách này sẽ nhanh chóng bị đầy và làm cho máy đích ngừng mở các kết nối mới cho tới tận khi các kết nối này đã hoàn tất hoặc thời gian đợi đã hết.
- Khi nhận được gói tin SYN/ACK,máy nguồn sẽ xác nhận bằng cách gửi cho máy đích gói tin xác nhận ACK và kết thúc quá trình kết nối bắt tay 3 chiều.
Bất cứ khi nào gói phần nhận được mà không đúng (về địa chỉ IP hoặc số hiệu cổng) như như phần đã gửi thì gói tin RST sẽ được gửi.
Với kỹ thuật quét TCP, thay vì gửi gói dữ liệu ICMP ECHO, kẻ tấn công sẽ gửi gói TCP ACK hoặc TCP SYN tới mạng đích. Số hiệu cổng có thể tùy chọn dựa vào mục đích của kẻ tấn công. Thông thường sẽ là các cổng 21/22/23/25/80. Việc nhận được gói tin trả lời là tín hiệu tốt cho việc xác định hệ thống đích hoạt động. Gói tin trả lời phụ thuộc vào hệ điều hành đích.
Nmap là các công cụ hỗ trợ quét TCP dựa trên cả hai nền UNIX và Windows.
[root@mia /root] $nmap –sP –PT80 192.168.2.0/24
TCP probe port is 80
Starting nmap V. 2.2-BETA4 by Fyodor (fyodor@dhp.com, www.insecure.org/nmap/)
Host host1.MyDomain.com (192.168.2.0) appears to be up.
Host host2.MyDomain.com (192.168.2.1) appears to be up.
Host.host3.MyDomain.com (192.168.2.2) appears to be up.
Host host4.MyDomain.com (192.168.2.3) appears to be up.
Host host5.MyDomain.com (192.168.2.4) appears to be up.
Host host6.MyDomain.com (192.168.2.5) appears to be up.
…
Host host254.MyDomain.com (192.168.2.254) appears to be up.
Nmap run completed -- 32 IP addresses (13 hosts up) scanned in 12 seconds
- Quét kết nối TCP SYN: Kỹ thuật này gọi là “quét bán mở” (half open) vì không tạo nối kết TCP đầy đủ. Thay vào đó, gói dữ liệu TCP SYN được gửi đến cổng đich, nếu nhận SYN/ACK từ cổng đích có thể suy luận hệ thống đích ở trong tình trạng LISTENING. Giả sử nhận RST/ACK thì thường cho thấy cổng này không lắng nghe. Hệ thống quét cổng sẽ gửi RST/ACK để không bao giờ lập kết nối đầy đủ. Kỹ thuật này có ưu điểm là kín đáo hơn nối TCP đầy đủ và không bị hệ thống đích ghi nhật ký.
Hình 13 - Kết nối TCP SYN
- Quét TCP Connect(): Kiểu quét này sử dụng kỹ thuật thiết lập kết nối TCP. Để mở kết nối tới cổng trên máy đích:
Gói SYN được gửi tới cổng trên máy đích.
Đợi xem kiểu gói tin nào được gửi trả lại từ máy đích. Nếu nhận được gói SYN/ACK thì cổng đó đang trong tình trạng lắng nghe(LISTENING). Nếu nhận được gói RST/ACK thì có nghĩa là cổng đó không lắng nghe và kết nối được thiết lập lại.
Kết thúc kết nối bắt tay 3 bước nếu nhận được gói SYN/ACK bằng cách gửi tới cổng đích gói ACK.
Một kết nối là hoàn tất sau khi tất cả tiến trình thiết lập vừa hoàn thành.
Kiểu quét này dễ bị phát hiện. Vì hệ thống đích sẽ kiểm tra và hiển thị tất cả các nối kết thành công cũng như các nối kết bị lỗi ngay sau khi một trong các kết nối đó được khởi tạo.
- Quét TCP FIN: Kỹ thuật này gửi gói dữ liệu FIN(Fully Integrated Network) đến cổng đích. Hệ thống gửi trả RST cho tất cả cổng đóng. Kỹ thuật này thường chỉ tác dụng trên dãy giao thức TCP/IP trên UNIX.
- Quét TCP Xmas Tree: Kỹ thuật này gửi các gói TCP với các cờ FIN, URG (Urgent) và PUSH đến cổng đích. Hệ thống đích gửi trả RST cho tất cả cổng đóng.
- Quét UDP: Kỹ thuật này gửi gói dữ liệu UDP đến cổng đích. Nếu cổng đích đáp lại bằng thông báo “ICMP port unrachable”(UNIX) thì có nghĩa là cổng đóng. Ngược lại nếu không nhận được thông báo đó thì có thể suy luận là cổng mở. Vì UDP là giao thức phi nối kết nên độ chính xác của kỹ thuật này phụ thuộc vào nhiều yếu tố liên quan đến mạng và tài nguyên hệ thống. Hơn nữa quét UDP là tiến trình diễn ra rất chậm, nên sẽ nhận được những kết quả không đáng tin cậy nếu quét thiết bị có áp dụng cơ chế lọc gói dữ liệu.
Biện pháp đối phó quét cổng:
Dò tìm: Kẻ tấn công thường quét cổng với âm mưu xác định cổng TCP và UDP đang lắng nghe trên hệ thống từ xa. Dò hoạt động quét cổng có ý nghĩa quan trọng trong việc biết được thời điểm diễn ra cuộc tấn công và người thực hiện. Các phương pháp dò quét cổng chủ yếu là triển khai hệ thống IDS (Intrusion Detection System).
Hình 14 - Hệ thống IDSTrên mức ứng dụng sử dụng các chương trình IDS như: BlackICE (Windows).
Hình 15 – IDS Software
2.2.3 Dò hệ điều hành
Mục tiêu đầu tiên của kẻ tấn công của việc quét cổng là nhận diện cổng TCP và UDP lắng nghe trên hệ thống đích. Mục tiêu thứ hai là xác định loại hệ điều hành đang quét. Thông tin hệ điều hành sẽ bổ ích trong giai đoạn vẽ bản đồ chỗ yếu. Kẻ tấn công sẽ cố gắng xác định càng chính xác càng tốt những chỗ yếu trên hệ thống đích. Do đó kẻ tấn công có thể nhận diện hệ điều hành đích. Có thể sử dụng kỹ thuật chộp banner đơn giản để chộp thông tin từ những dịch vụ như FTP, Telnet, SMTP, HTTP, POP,... Đây chính là cách đơn giản nhất để dò hệ điều hành và số hiệu phiên bản dịch vụ đang chạy.
Thông qua quét cổng TCP và UDP, kẻ tấn công có thể giả định sự lộ diện của hệ thống mà chúng đang nhắm tới. Ví dụ như cổng 139 mở trên máy phục vụ thì rất có khả năng hệ điều hành đích là Windows NT. Vì thông thường Windows NT lắng nghe cổng 135 và 139.
Chộp banner (Banner Grabbing): Một vài dịch vụ có thể được sử dụng để nhận dạng hệ điều hành. Telnet là dịch vụ đáng chú ý nhất. Nếu hệ thống sử dụng dịch vụ Telnet, bởi vậy telnet đến hệ thống đích và tìm kiếm banner là mục tiêu của kẻ tấn công. Ví dụ:
[root@pooh] # telnet 192.168.1.13
Debian GNU/Linux 2.1 target.domain.com
login:
In dấu tay dãy giao thức(TCP/IP Stack Fingerprinting): Đây là kỹ thuật sử dụng sự khác biệt trong việc thi hành dãy giao thức TCP để xác định loại hệ điều hành từ xa.
Ý tưởng là gửi một gói TCP đặc biệt tới hệ thống đích và chờ hệ thống đó trả lời. Do mỗi hệ điều hành có cách thi hành giao thức TCP là khác nhau nên bằng cách dò những khác biệt này kẻ tấn công có thể xác định hệ điều hành mà hệ thống đang dùng.
Các công cụ thường được sử dụng cho việc in dâu tay dãy giao thức là Nmap, queso. Và để đạt được độ tin cậy cao nhất, đòi hỏi hệ điều hành đích đang dùng có ít nhất một cổng đang lắng nghe.
Các đầu dò(Probe) giúp phân biệt hệ điều hành này với hệ điều hành khác:
Dò FIN: Gói dữ liệu FIN được gửi đến cổng mở. Nhiều hệ thống sẽ không trả lời với gói dữ liệu kiểu này. Tuy nhiên có một số hệ điều hành sẽ đáp trả bằng gói dữ liệu RESET như Windows, CISCO...
Dò Cờ giả(Bogus Flag): Gói dữ liệu SYN cùng với cờ không xác định được gửi tới hệ thống đích. Hệ thống Linux sẽ đáp trả với cờ đã thiết lập. Một vài hệ điều hành thiết lập lại nối kết khi nhân được gói tin này.
Theo dõi “Don’t Fragment Bit”: Một số hệ điều hành sẽ ấn định “Don’t fragment bit” nhằm nâng cao hiệu suất thi hành. Có thể theo dõi bit này để xác định loại hệ điều hành nào đang hoạt động.
Kích thước cửa sổ đầu TCP: Theo dõi dấu vết kích thước cửa sổ đầu trên gói dữ liệu trả về. Đối với các hệ điều hành, trong cách thi hành dãy giao thức, kích thước này không trùng lặp và có thể tăng thêm độ chính xác của cơ chế lấy dấu vân tay.
Giá trị ACK: Giá trị sử dụng cho trường ACK là khác nhau trong các dãy giao thức IP khác nhau.Ví dụ: khi gửi một gói FIN|PSH|URG tới một cổng đóng, hầu hết các hệ điều hành đích sẽ thiết lập số xác nhận(Acknowledgement number) trong gói gửi trả lại giống như là số thứ tự gói mà nó nhận được. Đối với Windows, sẽ gửi trả lại gói có số thứ tự tăng thêm 1.
Sự chấm dứt thông báo lỗi ICMP(ICMP error message Quenching): Hệ điều hành có thể giới hạn tốc độ gửi thông báo lỗi. Do vậy kẻ tấn công cũng có thể xác định hệ điều hành bằng cách gửi gói dữ liệu UDP đến cổng có số hiệu cao và ngẫu nhiên, sau đó đếm số thông báo lỗi nhận được trong khoảng thời gian đã cho.
Trích dẫn thông báo ICMP(ICMP Message Quoting): Trong Windows, thông báo lỗi ICMP có thể trích ra lượng nhỏ thông tin từ thông báo ICMP mà chúng gây ra lỗi. Với hầu hết các hệ điều hành thông tin được trích dẫn trong IP header+8bytes khi nhận được thông báo PORT UNREACHABLE. Hệ điều hành Solaris có thể gửi nhiều thông tin cần thiết hơn và Linux thì càng nhiều hơn nữa.
Tính toàn vẹn phản hồi thông báo lỗi ICMP: Việc thực thi dãy giao thức có thể thay đổi IP header khi gửi trả thông báo lỗi ICMP. Bằng cách kiểm tra việc thay đổi IP header, kẻ tấn công dễ dàng đặt ra một số giả thiết về hệ điều hành đích.
Type Of Service (TOS): Khi thông báo ICMP PORT UNREACHABLE được gửi trả lại, kẻ tấn công có thể kiểm tra trường TOS trong gói tin ICMP. Hầu hết các hệ điều hành sử dụng giá trị 0 cho trường TOS, ngoại trừ Linux sử dụng 0xC0.
Xử lý mảnh (Framentation Handling): Các dãy giao thức khác nhau sẽ xử lý mảnh khác nhau. Một số dãy giao thức sẽ ghi chồng dữ liệu mới lên dữ liệu cũ và ngược lại khi tái hợp dịch mảnh. Bằng cách ghi nhận cách tái hợp dịch gói dữ liệu, có thể giả thiết về hệ điều hành đích.
Tùy chọn TCP: Khi gửi gói dữ liệu với một tùy chon tới hệ thống đích, nếu hệ thống đích hỗ trợ tùy chọn đó thì chúng sẽ thiết lập tùy chọn đó trong thông báo gửi trả lại. Trong cùng một gói kẻ tấn công có thể thử tất các tùy chọn. Một vài hệ điều hành hỗ trợ tất cả các tùy chọn cấp cao trong khi đó một số khác hỗ trợ ít hơn.
Nmap áp dụng các kỹ thuật trình bày ở trên(ngoại trừ xử lý mảnh và trích dẫn thông báo lỗi) qua tùy chọn –O:
Hình 16 – NmapCho dù không có cổng nào mở trên hệ thống đích, nmap vẫn đoán được hệ điều hành:
[root@tsunami /root] # nmap –O 192.268.1.10
Starting nmap V.2.12 by Fyodor(fyodor@dhp.com, www. insecure.org/nmap)
Warning: No ports found open on this machine, OS detection will be MUCH less reliable
No ports open on host (10.10.10.10)
Remote OS guesses: Linux 2.0.27-2.0.30, Linux 2.0.32-34, Linux 2.1.76
Nmap run completed – 1 address (1 host up) scanned in 1 second.
Biện pháp đối phó dò hệ điều hành:
Có thể theo dõi vịêc dò hệ điều hành bằng các công cụ dò quét cổng như scanlog (UNIX) hay BlackICE (WINDOWS). Thiết lập hệ thống tường lửa nhằm ngăn chặn những cuộc dò xét bất hợp pháp.
2.3 Liệt kê
Sau khi đã nhận diện được hệ điều hành kẻ tấn công chuyển sang nhận diện tài khoản người dùng hợp lệ hoặc dùng chung tài nguyên được bảo vệ kém.Có nhiều cách sử dụng tài khoản hợp lệ hoặc tài nguyên trên hệ thống.
Khác biệt giữa kỹ thuật thu thập thông tin và liệt kê là ở mức độ xâm nhập - liệt kê bao hàm nối kết hệ thống và vấn tin trực tiếp. Tiến trình này ắt bị ghi nhật ký và bị để ý.
Một khi đã liệt kê được tên người dùng hợp lệ hoặc tài nguyên dùng chung thì vấn đề chỉ còn là thời gian trước khi kẻ tấn công đoán ra mật mã tương ứng hoặc nhận diện chỗ yếu liên quan đến giao thức dùng chung tài nguyên.
Có thể nhóm một số thông tin cần liệt kê thành những thể loại sau:
Tài nguyên dùng chung
Người dùng và nhóm
Ứng dụng và banner
2.3.1 Liệt kê trong Windows
Liệt kê vùng:
Windows vốn được thiết kế với tính dễ duyệt tài nguyên mạng, cho nên liệt kê hệ thống và vùng NT là việc đơn giản thông qua công cụ sẵn có trong hệ điều hành như net view. Công cụ này cho phép liệt kê các vùng trên mạng và các máy trong vùng.
Hình 17 - Liệt kê băng Net view
Liệt kê Netbios share: Windows cho phép liệt kê tài nguyên chia sẻ trên vùng do đó kẻ tấn công có thể liệt kê toàn bộ thư mục chia sẻ trên một máy trạm nào đó trên mạng.
Hình 18 - Liệt kê NetBIOS share
Biện pháp đối phó: Ngăn chặn truy cập các thông tin này bằng cách lọc các cổng TCP và UDP từ 135 đến 139 tại các thiết bị truy cập vòng ngoài (Router, Firewall...) và các hệ thống tường lửa. Bằng cách từ chối các truy cập qua các cổng đó thì sẽ vô hiệu hóa các hoạt động trên. Đối với hệ thống Windows độc lập nối mạng TCP/IP, có thể vô hiệu hóa NetBIOS binding để hạn chế sự nối kết với bên ngoài.
Hình 19- Ngăn chặn Liệt kê
Liệt kê nhóm và người dùng:
Mặc dù đã biết được các máy và thư mục dùng chung, nhưng mục tiêu cao hơn của kẻ tấn công là tên người dùng. Kẻ tấn công có thể sẻ dụng công cụ đoán mật mã tự động để có thể xâm nhập hợp pháp vào hệ thống. Với các máy lập cấu hình không đúng sẽ cung cấp các thông tin người dùng rất hữu ích cho kẻ muốn tấn công.
Hình 20 – Liệt kê người dùng và nhóm
Lệnh này sẽ cung cấp các thông tin về tên người dùng, nhóm người dùng.
Từ tên người dùng kẻ tấn công có thể xác định được số nhận diện bảo mật và ngược lại.
Thông qua công cụ user2sid, kẻ tấn công sẽ lấy số nhận diện bảo mật đó để liệt kê tên ngườidùng tương ứng:
Hình 21 - Sử dụng user2id để nhận diện người dùng
Số nhận diện bảo mật cho máy là chuỗi số bắt đầu bằng S-1, phân cách bằng dấu gạch nối. Chuỗi số theo sau dấu gạch nối cuối cùng là số nhận diện tương đối(RID-relative identifier), nó định sẵn cho nhóm và người dùng NT như Administrator hoặc Guest. Ví dụ số nhận diện tương đối của người dùng Administrator luôn là 500, và của người dùng Guest là 501. Từ đây kẻ tấn công có thể lần ra tên tài khoản Administrator(thậm chí đã đổi tên) thông qua sid2user và chuỗi số nhận diện bảo mật đi với số nhận diện tương đối.
Hình 22 - Sử dụng sid2user để nhận diện quyền truy cập
Từ đây kẻ tấn công đã xác định được tài khoản đăng nhập hệ thống.
2.3.2 Liệt kê trong UNIX
Hầu hết hệ thống UNIX thi hành dựa trên nền tảng TCP/IP nên không dễ cung cấp thông tin như Windows thông qua NetBIOS. Tuy nhiên kẻ tấn công sẽ chủ yếu lợi dụng các chỗ yếu dựa trên các dịch vụ như Remote Produre Call(RPC), Network Information System(NIS), và Network File System(NFS).
NFS là giao thức chia sẻ file trong UNIX. Có thể dùng lệnh showmout để liệt kê tài nguyên chia sẻ trên mạng.
Hình 23 - Showmount
Chương 3: PHƯƠNG PHÁP XÂM NHẬP HỆ THỐNG
3.1 Xâm nhập hệ thống Windows:
Hiện tại Windows vẫn là mạng phổ biến hầu hết trên toàn cầu, do đó mục tiêu tấn công các máy chủ Windows cũng là phổ biến và chiếm đại đa số so với các máy chủ UNIX và Novell.
Một số đặc điểm cho thấy tính an toàn mà Windows được thể hiện khác so với hệ thống UNIX, chẳng hạn:
Windows không có khả năng chạy mã từ xa trong không gian xử lý trên máy phục vụ. Bât kỳ tập tin thi hành khởi động từ máy khách đều nạp vào bộ nhớ chính và CPU trên máy khách. Trừ ngoại lệ là Terminal Server Edition vốn cung cấp shell đa người dùng từ xa.
Theo mặc định, quyền đăng nhập console giới hạn ở các tài khoản quản trị, do vậy kẻ tấn công bẻ khóa những tài khoản này, chúng vẫn chưa có được thẩm quyền điều khiển hệ thống.
Microsoft giới hạn rất nhiều việc truy cập vào mã nguồn, do đó chẳng dễ gì khai thác từ xa việc tràn bộ đệm trên hệ thống Windows.
3.1.1 Tìm tài khoản quản trị (Administrator)
Nếu không phải là Administrator thì kẻ tấn công sẽ hầu như chẳng làm được gì nguy hại đến hệ thống. Cho dù Windows vốn cũng trang bị tính năng thi hành lệnh từ xa nhưng vẫn giới hạn ở tài khoản quản trị, giới hạn người dùng từ xa(không phải Admin). Bởi vậy kẻ tấn công sẽ đi tìm tài khoản tương đương Administrator.
Có nhiều cách để thực hiện việc tìm tài khoản quản trị. Sau bước liệt kê kẻ tấn công đã có danh sách các tài khoản hợp lệ, việc bây giờ của chúng là việc đoán mật khẩu:
Đoán mật khẩu thủ công:
Người sử dụng thường sử dung mật khẩu rỗng hoặc mật khẩu thật dễ nhớ chẳng hạn như tên người dùng, tên công ty,...Do đó việc đoán mật khẩu bằng tay là cách đơn giản nhất để có thể đăng nhập hệ thống.
Nhìn chung,kẻ tấn công cố đoán mật khẩu tài khoản cục bộ đã biết trên NT Server hoặc Workstation độc lập, thay vì tài khoản cục bộ trên máy điều khiển vùng NT. Tài khoản cục bộ phản ánh chính xác hơn những sơ hở bảo mật của người quản trị hệ thống và người dùng. Ngoài ra Windows còn cho nguời dùng quyền đăng nhập tương tác(tức là bất cứ ai cũng có thể đăng nhập cục bộ), tạo điều kiện dễ dàng cho thi hành lệnh từ xa.
Mặc dù đoán mật khẩu thủ công cho tỉ lệ thành công khá cao, song kẻ tấn công thường ít dùng việc đoán mật khẩu thủ công như vậy vì nó chiếm mất nhiều thời gian.
Đoán mật khẩu tự động:
Công cụ đoán mật khẩu tự động thực hiện đăng nhập hệ thống từ xa với từng username và password trong danh sách do kẻ tấn công cung cấp.
Hình 24 – Đoán mật khẩu tự động
Nghe lén trao đổi qua mạng:
Bằng cách bắt các gói tin được luân chuyển trên mạng , các phiên đăng nhập giữa các hệ thống Windows, đặc biệt là các tập tin mật khẩu được truyền trên mạng, kẻ tấn công có thể giải mã các tập tin mật khẩu đó để có được mật khẩu của tài khoản quản trị hệ thống.
Trong Windows các thông tin tài khoản trên hệ thống được lưu giữ trong file SAM. SAM chứa toàn bộ cơ sở dữ liệu về username, password, và quyền truy cập hệ thống.
Vì lý do tương thích lùi, Microsoft đã làm giảm sút hiệu quả bảo mật của SAM bằng cách dùng thuật toán mã hóa một chiều vốn có từ LANMAN. Tuy đã có thuật toán NT mới hơn, nhưng hệ điều hành phải lưu LanMan hash cũ cùng với cái mới nhằm duy trì tính tương thích với máy khách Windows 9x và Windows for Workgróup. Thuật toán Lanman Hash yếu hơn này là nhược điểm cho phép phá khóa dễ dàng mã hóa mật khẩu NT, tùy theo thành phần mật mã.
Các công cụ phá mật mã có vẻ giống như bộ giải mã. Chúng tính trước thuật toán mã hóa mật mã trong đầu vào (danh sách từ hoặc chuỗi tạo ngẫu nhiên) rồi so sánh với mật mã người dùng. Nếu khớp, mật mã đã đoán thành công hoặc đã bị phá. Tiến trình này thường thực hiện ngoại tuyến trên tập tin mật mã đã sao chép, và tiến trình đoán mật khẩu có thể chiếm rất nhiều thời gian. Với lượng lớn thông tin mã hóa sẽ tốn rất nhiều thời gian và bộ vi xử lý, song tính đơn giản của thuật toán LanMan sẽ đẩy nhanh tiến trình này đối với hầu hết các mật mã. Do đó, việc tìm ra mật mã đơn giản là vấn đề thời gian và kích thước từ điển.
Windows lưu giữ liệu SAM trong tập tin “SAM” trong thư mục system32\config trong suốt thời gian chạy hệ điều hành.Tập tin SAM là một trong năm tập tin tổ ong (hive) chính trong Registry.
Có bốn cách lấy dữ liệu SAM: khởi động hệ thống đích vào hệ điều hành thay thế rồi sao chép tập tin SAM, sao chép bản sao tập tin SAM đã tạo bằng NT Repair Disk Utility, hoặc lấy trực tiếp mật mã từ SAM. Và nghe lén trao đổi tên người dùng/mật khẩu.
Một khi đã lấy được file SAM của hệ thống, kẻ tấn công có thể dễ dàng tìm ra các tài khoản (bao gồm username và password) bằng các công cụ bẻ khóa, ví dụ điển hình cho công cụ này la L0phtcrack.
Hình 25 – Phá mật khẩu bằng L0phtcrack
Biện pháp đối phó việc đoán mật khẩu:
Cách tôt nhất để phòng tránh khả năng đoán mật khẩu đó là khóa việc truy cập cổng 135-139 tại các hệ thống tường lửa hoặc bộ định tuyến, vô hiệu hóa liên kết WINS Client(TCP/IP).
Đối với máy chủ có hai card giao tiếp mạng (hoặc hai địa chỉ IP), có thể vô hiệu hóa NetBIOS trên card giao tiếp mạng Internet và kích hoạt card giao diện mạng trong sao cho dùng chung tập tin Windows vẫn khả dụng đối với người dùng tin cậy. Khi vô hiệu hóa NetBIOS theo cách này, cổng ngoài vẫn lắng nghe nhưng không đáp lại yêu cầu.
Nếu hệ thống Windows là máy phục vụ tập tin và phải giữ lại nối kết Windows, thì những biện pháp này rõ ràng là không hiệu quả, bởi chúng sẽ khóa hoặc vô hiệu hóa tất cả các dịch vụ. Phải thi hành những biện pháp truyền thống như: Khóa tài khoản sau số lần đăng nhập thất bại, tăng cường mật khẩu mạnh, và ghi nhật ký các nỗ lực thất bại.
Để hạn chế việc nghe lén mật khẩu qua mạng là chuyển sang kiến trúc mạng chuyển mạch hoặc định tuyến. Trong môi trường chuyển mạch hoặc định tuyến thì mối nguy cơ bị bắt các gói tin giảm khá nhiều bởi lưu lượng thông tin trên mạng được giảm đi đáng kể.
Có thể vô hiệu hóa chứng thực Lanman nhằm hạn chế chứng thực mật khẩu qua mạng, bằng cách bổ sung giá trị “LMCompatibility” với giá trị “REG_DWORD=4” vào khóa Registry sau:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\LSA
Đối phó việc phá mật mã:
Chọn mật mã mạnh: Chỗ yếu quan trọng của LM hash là phân mật mã thành hai nửa gồm 7 ký tự. Do đó mật mã 8 ký tự có thể diễn dịch thành mật mã 7 ký tự và mật mã 1 ký tự. Các công cụ như L0phtcrack lợi dụng chỗ yếu này để đồng thời phá cả hai nửa mã như thể là mật mã riêng biệt. Ví dụ mật mã người dùng đưa vào gồm 12 ký tự “123456Qwerty”, khi mật mã được mã hóa bằng thuật toán Lanman, trước tiên, nó sẽ chuyển hết thành chữ hoa “123456QWERTY”. Sau đó mật mã được đắp thêm ký tự rỗng cho đủ 14 ký tự “123456QWERTY__”. Trước khi mã hóa mật mã này, chuỗi 14 ký tự sẽ chia làm hai: “123456Q” và “WERTY__”. Sau đó sẽ mã hóa cho từng xâu một. L0phtcrack có thể tìm ra mật mã của người sử dụng trong thời gian rất ngắn.
Do đó để đối phó cho việc phá mật mã này, cách đơn giản nhất là đặt mật mã với 7 hoặc 14 ký tự, các mật mã khác 7 hoặc 14 ký tự