MỞ ĐẦU
Cùng với sự phát triển của công nghệ thông tin, công nghệ mạng máy tính và đặc biệt là mạng Internet ngày càng phát triển đa dạng và phong phú. Các dịch vụ trên mạng Internet đã xâm nhập vào hầu hết các lĩnh vực trong đời sống xã hội. Các thông tin trao đổi trên Internet cũng đa dạng cả về nội dung và hình thức, trong đó có rất nhiều thông tin cần bảo mật cao bởi tính kinh tế, tính chính xác và tin cậy của nó.
Bên cạnh đó, những dịch vụ mạng ngày càng có giá trị, yêu cầu phải đảm bảo tính ổn định và an toàn cao. Tuy nhiên, các hình thức phá hoại mạng cũng trở nên tinh vi và phức tạp hơn, do đó đối với mỗi hệ thống, nhiệm vụ bảo mật đặt ra cho người quản trị là hết sức quan trọng và cần thiết.
Khóa luận trình bày một số kỹ thuật khai thác, xâm nhập, tấn công hệ thống mạng máy tính (Unix và Windows) thông qua một số lỗ hổng an toàn thông tin. Tương ứng với mỗi kỹ thuật là cách phòng chống cũng như là một sô biện pháp đối phó với những kỹ thuật đó.
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ẻ: lvcdongnoi | Lượt xem: 2790 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu 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
và hiển thị thông tin liên quan đến tổ chức cụ thể.
Vấn tin vùng: Truy vấn và hiển thị toàn bộ thông tin liên quan đến vùng cụ thể. Loại vấn tin này đưa ra thông tin liên quan đến:
Người đăng ký.
Tên vùng.
Thời điểm tạo và cập nhập các mẩu tin.
Máy phục vụ hệ thống (DNS).
Vấn tin mạng: Truy vấn và hiển thị toàn bộ thông tin liên quan đến mạng cụ thể hoặc địa chỉ IP
Hình 7 - Vấn tin tổ chức
Cơ sở dữ liệu interNIC
Cơ sở dữ liệu InterNIC cho phép truy vấn vùng (Domain), Tên tổ chức,công ty (Registrar), hay Tên máy chủ (Nameserver).
- Bước 3: Thẩm vấn DNS: DNS (Domain Name System) là cơ sở dữ liệu phân phối, ánh xạ tên máy chủ lên địa chỉ IP. Nếu DNS được lập cấu hình không an toàn thì có thể lấy thông tin tiết lộ về tổ chức.
Một trong những cấu hình sai nghiêm trọng mà người quản trị hệ thống có thể mắc phải đó là cho phép người dùng Internet không đáng tin cậy được tiến hành chuyển vùng DNS.
Chuyển vùng(zone transfer) cho phép máy phục vụ phụ cập nhập cơ sở dữ liệu từ máy chính. Nhiều máy phục vụ bị lập cấu hình sai và cung cấp bản sao vùng cho người nào đó yêu cầu.
Cách đơn giản để xem thông tin DNS là dùng tiện ích nslookup(có cả trong UNIX và Windows).:
Sử dụng nslookup để chuyển vùng
Đầu tiên chạy nslookup trong chế độ tương tác. Nó sẽ cho biết máy phục vụ tên mặc định, thường là máy phục vụ DNS của tổ chức hoặc máy phục vụ DNS của người cung cấp dịch vụ Internet. Tuy vậy máy phục vụ DNS(10.10.20.2) không có thẩm quyền cho vùng đích, nên sẽ không có mẩu tin DNS. Do đó kẻ tấn công sẽ cho nslookup biết là sẽ truy vấn máy phục vụ DNS nào. Trong ví dụ này, kẻ tấn công dùng máy phục vụ chính là 10.10.10.2
Tiếp theo là định loại mẩu tin là any. Tác vụ này cho phép lấy mẩu tin DNS bất kỳ.
Sau cùng là liệt kê toàn bộ mẩu tin liên quan đến vùng bằng tùy chọn ls -d. liệt kê tất cả các mẩu tin và đưa kết quả ra tập tin /tmp/zone_out.
Thực hiện chuyển vùng xong, xem nội dung thông tin trong tập tin.
Trong Windows có thể sử dụng tiện ích Sam Spade cũng có thể khai thác các thông tin quan trọng đối với một domain nào đó:
Hình 8 - Sử dụng Sam Spade để khai thác thông tin đối với tên miền vnexpress.net
Biện pháp đối phó: Bảo mật DNS
Thông tin DNS cung cấp quá dư thông tin cho kẻ tấn công, nên cần giảm lượng thông tin khả dụng trên Internet.
Lập cấu hình cho bức tường lửa hoặc bộ định tuyến từ chối tất cả nối kết trong không hợp pháp với cổng TCP 53. Vì yêu cầu tra cứu tên là UDP và yêu cầu chuyển vùng là TCP nên sẽ ngăn cản nỗ lực chuyển vùng một cách hiệu quả. Ngoài ra, có thể đặt thiết bị điều khiển truy cập hoặc hệ thống dò xâm nhập(IDS-Intrusion Detection System) nhằm ghi nhật ký thông tin. Không nên lập cấu hình máy phục vụ tiết lộ thông tin mạng trong mà chỉ cung cấp thông tin với hệ thống nối trực tiếp với mạng Internet.
- Bước 4: Do thám mạng:
Kẻ tấn công tìm cách xách định topo mạng và đường truy cập mạng. Thường những kẻ tấn công sẽ dùng công cụ traceroute trong UNIX hay tracert trong Windows.
Traceroute là công cụ cho phép xem tuyến đường của gói dữ liệu UDP từ máy chủ này sang máy chủ kế tiếp. Traceroute dùng tùy chọn time-to-live(TTL) trong gói dữ liệu IP tính thời gian TIME_EXCEEDED từ mỗi bộ định tuyến. Cần bộ định tuyến xử lý gói dữ liệu để giảm (decrement) giá trị của trường TTL. Vì vậy trường TTL trở thành bộ đếm lần nhảy(hop counter). Có thể xác định chính xác đường đi của gói dữ liệu thông qua chức năng traceroute . Traceroute cho phép khám phá topo mạng, bên cạnh việc nhận diện thiết bị điều khiển truy cập (bức tường lửa hoặc bộ định tuyến lọc gói dữ liệu).
Hình 9 – Do thám mạng
Biện pháp đối phó:
Có thể áp dụng vài biện pháp đối phó hầu ngăn chặn và nhận diện do thám mạng. Nhiều chương trình IDS sẽ dò kiểu do thám này. Cũng có thể lập cấu hình cho bộ định tuyến giới hạn lưu lượng ICMP và UDP ở hệ thống cụ thể, do đó giảm thiểu sự lộ diện của tổ chức mình.
2.2 Quét kết nối (scanning)
Nếu “in dấu chân” tương đương với thăm dò thông tin ở một nơi, thì quét tương đương với tìm cửa vào. Ở giai đoạn in dấu chân, kẻ tấn công lấy danh sách mạng và địa chỉ IP thông qua các kỹ thuật vấn tin và chuyển vùng. Những kỹ thuật này cung cấp thông tin quý giá cho kẻ tấn công bao gồm tên quản trị viên, số điện thoại, dãy địa chỉ IP, máy phục vụ DNS, máy phục vụ thư tín...Bây giờ kẻ tấn công sẽ xác định hệ thống nào đang hoạt động và có thể đến được thông qua Internet bằng những công cụ kỹ thuật như quét ping, quét cổng, công cụ phát hiện tự động.
Việc địa chỉ IP bị phát hiện cũng không có nghĩa là có thể xâm nhập hoặc tấn công được qua mạng Internet. Kẻ tấn công sẽ thử nghiệm từng hệ thống đích xem nó còn hoạt động hay không và lắng nghe cổng nào đang mở nếu có. Nhiều máy phục vụ tên bị lập cấu hình sai cho phép hiển thị địa chỉ IP của mạng riêng.
2.2.1 Vấn tin ICMP
Một trong những bước cơ bản trong vẽ bản đồ mạng là tự động quét dãy địa chỉ IP và khối mạng nhằm xác định hệ thống còn hoạ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ự đều không an toàn cao bằng 7 hoặc 14 ký tự. Kết hợp với các ký tự đặc biệt (!@#$%^&*,...), các chữ số (0,1,2,3,4,...), chữ viết hoa,...
Thi hành SYSKEY: mã hóa SYSKEY thiết lập mã hóa mật mã 128 bit, đối lập với cơ chế 40 bit theo mặc định. Có thể lập cấu hình bằng cách chạy syskey (trong cửa sổ Run).
Thường xuyên thay đổi mật khẩu, tạo các tài khoản riêng để thực hiện chức năng quản trị.
3.1.3 Cửa sau (backdoor) và biện pháp đối phó:
Sau khi thực hiện xâm nhập thành công hệ thống từ xa, kẻ tấn công sẽ tìm cách mở một cửa nào đó để thuận tiện cho việc xâm nhập lần sau. Bằng cách cài đặt các công cụ tự động chạy khi hệ thống khởi động và chúng sẽ mở một cổng trên hệ thống mà người quản trị trên hệ thống sẽ không biết, tạo ra một cửa sau thuận lợi cho kẻ tấn công.
Biện pháp đối phó để hạn chế việc mở cửa sau của kẻ tấn công là kiểm tra 4 khu vực chính: Tên tập tin, Khóa Registry, Quy trình xử lý, và cổng.
-Tên tập tin: Thường xuyên kiểm tra các thư mục của hệ thống như: \system, \system32, \startup. Đây là những nơi mà kẻ tấn công thường cài đặt các công cụ mở cửa sau. Bằng cách thường xuyên kiểm tra các thư mục này và phát hiện các file lạ sẽ giảm thiểu được sự xâm nhập của kẻ tấn công.
-Registry: Quan trọng nhật là kẻ tấn công đặt các giá trị Registry cần thiết trong khóa khởi động. Do vậy kiểm tra thường xuyên những khu vực này có xuất hiện lệnh lạ hay không. Thông thường các khu vực đó là:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run hoặc RunOne, RunOncEx,RunServices.
Ngoài ra phải giới hạn nghiêm ngặt quyền truy cập người dùng đối với những khóa này. Theo mặc định, nhóm “Everyone” có quyền “Set value” đối với HKLM\...\...\Run. Nên vô hiệu hóa khả năng này bằng cách cấu hình trong Security => permissions trong regedit.
-Tiến trình xử lý: Tìm các ứng dụng lạ đang chạy trong danh sách các tiến trình xử lý và gỡ bỏ chúng khỏi danh sách cũng sẽ làm hạn chế hoạt động của các công cụ khai thác thông tin và mở cổng trên hệ thống.
-Cổng: Thường xuyên kiểm tra các cổng đang lắng nghe:
Hình 26 - Kiểm tra cổng
3.1.4 Kết luận:
Kẻ tấn công sẽ không làm được gì nếu không có đặc quyền Administrator. Vì vậy hạn chế việc dò tìm Administrator và bảo mật cho hệ thống bằng những cách sau:
Chỉ cung cấp và kích hoạt những cổng và giao thức cần thiết cho hoạt động của hệ thống, đặc biệt là cổng 135 và 139.
Ấn định khóa RestrictAnonymous trong Registry nhằm hạn chế sự đăng nhập vô danh.
Cấu hình không cho phép nhóm người dùng Everyone đăng nhập hệ thống từ xa.
Thiết lập chính sách mật mã mạnh và thay đổi thường xuyên.
Đổi tên tài khoản Administrator và vô hiệu hóa tài khoản Guest
Kiểm tra thường xuyên các nhật ký Logon/Logoff hoặc áp dụng công cụ phân tích nhật ký tự động.
Định giá trị Hidden Registry trên các máy phục vụ nhạy cảm
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\Hidden, với REG_DWORD =1. Như vậy sẽ xóa máy chủ khỏi danh sách duyệt mạng (Network Neighborhood) nhưng vẫn cung cấp đầy đủ tính năng mạng của hệ thống máy chủ.
3.2 Xâm nhập hệ thống UNIX
UNIX là hệ điều hành đa người dùng, đa chương trình và đa xử lý. Là hệ điều hành mạnh và khả chuyển. Hỗ trợ tính toán song song. Bảo mật là đặc điểm nổi bật trong UNIX, mặc dù bảo mật không phải là một trog những đặc điểm thiết kế chính của UNIX, nhưng nếu thi hành hợp lý UNIX nổi bật hơn Windows về tính bảo mật và an toàn. Sự pha tạp của UNIX là do bản chất mở trong phát triển và cải tiến nhân hệ điều hành cũng như những công cụ nhỏ vốn làm cho hệ điều hành này mạnh hơn. Mặc dù vậy, UNIX không phải là hệ điều hành an toàn tuyệt đối, vẫn có những lỗ hổng tiềm ẩn trên hệ thống.
Kẻ tấn công cố gắng đoán chỗ yếu tiềm ẩn trên hệ thống đích, tiến trình này gọi là ánh xạ chỗ yếu (vulnerability mapping).
Ánh xạ chỗ yếu: Ánh xạ chỗ yếu là tiến trình ánh xạ thuộc tính bảo mật của hệ thống lên chỗ yếu. Đây là giai đoạn quyết định trong khám phá hệ thống đích. Kẻ tấn công cần ánh xạ các thuộc tính lên các lỗ hổng bảo mật như:
Dịch vụ đang lắng nghe (FTP, TFTP).
Số hiệu phiên bản máy phục vụ đang chạy (HTTP và SMTP chẳng hạn).
Kiến trúc hệ thống, và thông tin người dùng.
3.2.1 Truy cập từ xa
Truy cập từ xa (Remote access) có nghĩa là lấy truy cập qua mạng hoặc kênh truyền thông khác, chẳng hạn như modem quay số,DSL nối hệ thống UNIX
Một số phương pháp khai thác thông tin hệ thống UNIX.
Khai thác dịch vụ đang lắng nghe (TCP/UDP)
Định tuyến thông qua hệ thống UNIX cung cấp bảo mật giữa hai hay nhiều mạng.
Tấn công bằng thi hành từ xa do người dùng khởi tạo (Chẳng hạn như địa điểm web, email trojan horse).
Khai thác dịch vụ đang lắng nghe: Các dịch vụ phổ biến như là:
Telnet
FTP
Rsh, Rlogin,..
Secure Shell(ssh)
POP
HTTP, HTTPS
Một khi kẻ tấn công có danh sách tài khoản người dùng, chúng sẽ cố lấy truy cập shell đối với hệ thống đích bằng cách đoán mật mã liên quan đến số nhận diện.Có thể tự đoán mật mã thủ công nhưng thông thường đa phần kẻ tấn công sẽ thực hiện thông qua trình tiện ích tự động.
Một số công cụ đoán mật mã tự động tiêu biểu: brute_web.c, middlefinger...
Biện pháp đối phó việc đoán mật mã:
Áp dụng mật mã mạnh khó đoán.
Bảo đảm tất cả người dùng đều có mật mã hợp lệ
Thường xuyên thay đổi mật mã
Độ dài mật mã tối thiểu là 8 ký tự
Không dùng chung mật mã cho các tài khỏan khác nhau.
Không sử dụng mật mã mặc định cho các tài khoản Admin.
Sử dụng công cụ mã hóa mạnh để mã hóa mật mã.
3.2.1.1 Tràn bộ đệm:
Tình trạng tràn bộ đệm xảy ra khi người dùng hoặc quy trình xử lý cố đặt dữ liệu vào bộ đệm nhiều hơn phân phối ban đầu. Kiểu hoạt động này liên quan đến các hàm C như strcpy(), strcat(),sprintf(). Tình trạng tràn bộ đệm thường gây ra vi phạm mảnh (segmentation). Tuy nhiên có thể khai thác kiểu hoạt động này để lấy truy nhập hệ thống đích.
Một ví dụ về tràn bộ đệm: Với một bộ đệm độ dài cố định 128 byte.Giả thiết bộ đệm này quy định lượng dữ liệu lưu làm đầu vào lệnh VRFY trong sendmail. VRFY nhận diện người dùng trên hệ thống đích, thông qua kiểm tra địa chỉ email. Giả thiết sendmail là gốc SUID và chạy với đặc quyền root. Chuyện gì sẽ xảy ra nếu kẻ tấn công nối daemon sendmail rồi gởi khối dữ liệu gồm 1000 chữ “a” đến lệnh VRFY thay vì tên người dùng?
Bộ đệm VRFY sẽ bị tràn vì nó chỉ được quy định nắm giữ 128 byte mà thôi. Khi đưa toàn bộ 1000 byte vào bộ đệm VRFY có thể gây từ chối dịch vụ và làm daemon sendmail ngưng hoạt động; tuy nhiên, nguy hiểm hơn là làm hệ thống đích thi hành mã theo ý của kẻ tấn công. Thay vì gửi 1000 chữ ‘a’ đến lệnh VRFY, kẻ tấn công sẽ gửi mã làm tràn bộ đệm và thì hành lệnh shell trong /bin/sh. Sendmail chạy với quyền root nên khi thi hành /bin/sh, kẻ tấn công sẽ có ngay truy cập toàn quyền. Khi mở cuộc tấn công, một chuỗi mã nào đó gửi tới lệnh VRFY như một phần của chuỗi dùng làm tràn bộ đệm. Khi bộ đệm VRFY bị tràn, kẻ tấn công định địa chỉ hồi âm của hàm vi phạm, cho phép kẻ tấn công thay đổi luồng chương trình. Thay vì hàm trả về vị trí bộ nhớ thích hợp, kẻ tấn công thi hành mã gửi như một phần của dữ liệu làm tràn bộ đệm, vốn chạy với đặc quyền root. Mã này phụ thuộc vào hệ điều hành và kiến trúc của hệ thống đích.
Biện pháp tấn công tràn bộ đệm:
Bảo vệ thủ tục lập trình:
Thiết kế chương trình ngay từ ban đầu nhằm giảm thiểu lỗi xuất hiện trong khi chạy chương trình.
Cân nhắc sử dụng các bộ biên dịch
Phê chuẩn các đối số khi nhận từ người dùng hoặc chương trình. Làm như vậy sẽ khiến một số chương trình chạy châm lại nhưng tăng tính bảo mật của từng ứng dụng. Bao gồm việc kiểm tra từng biến, đặc biệt là biến môi trường.
Kiểm tra mã trả về từ khi gọi chương trình.
Giảm thiểu sử dụng chương trình có đặc quyền root.
Thử nghiệm và kiểm toán từng chương trình: Nhiều khi người lập trình không nhận ra tình trạng tràn bộ đệm tiềm ẩn; tuy nhiên bên thứ hai dễ dàng dò ra những thiếu sót. Một trong những ví dụ điển hình vè thử nghiệm và kiểm toán mã UNIX là OpenBSD của Theo de Raad. OpenBSD có khả năng kiểm toán mã nguồn và khắc phục hàng trăm tình trạng tràn bộ đệm, và nhiều sự cố khác liên quan đến bảo mật.
Vô hiệu hóa dịch vụ chưa dùng: Vô hiệu hóa các dịch vụ không cần thiết cho hoạt động của hệ thống UNIX. Kẻ tấn công khó lòng xâm nhập hệ thống thông qua dịch vụ không chạy. Áp dụng cơ chế chọn lọc danh sách điều khiển truy cập dựa trên cơ sở tiền dịch vụ với các đặc tính ghi nhật ký cải tiến.
3.2.1.2 Trivial FTP:
TFTP chuyên khởi động trạm làm việc không đĩa hoặc thiết bị mạng như bộ định tuyến. TFTP là giao thức UDP lắng nghe cổng 69 và cung cấp rất ít bảo mật. Nhiều khi kẻ tấn công định vị hệ thống có kích hoạt máy phục vụ TFTP rồi tìm cách sao chep bản sao tập tin /etc/shadow (tập tin này chứa toàn bộ thông tin các tài khoản của hệ thống) vào hệ thống của chúng. Nếu máy phục vụ TFTP bị lập cấu hình sai, hệ thống đích sẽ cho phép sao chép tập tin shadow. Bây giờ thì kẻ tấn công đã có danh sách tên người dùng. Nếu tập tin mật mã không bị che giấu, kẻ tấn công sẽ có tên người dùng và mật mã đã mã hóa.
Theo mặc định, nhiều phiên bản TFTP mới được lập cấu hình để cấm truy cập thư mục bất kỳ ngoại trừ /tftproot. Song kẻ tấn công có thể liệt kê tập tin bất kỳ từ trong thư mục /tftproot. Bao gồm sao chép tập tin cấu hình bộ định tuyến bằng cách đoán tên tập tin cấu hình bộ định tuyến đó, thường là .cfg. Trong nhiều trường hợp, kẻ tấn công có thể thấy tòan tập tin cấu hình bộ định tuyến TFTPing trên máy phục vụ TFTP không an toàn. Các tập tin cấu hình này được dùng khám phá mật mã bộ định tuyến.
Biện pháp đối phó: Lập cấu hình máy phục vụ TFTP để giới hạn truy cập ở những thư mục cụ thể như /tftproot. Như thế sẽ ngăn ngừa không cho kẻ tấn công sao chép các tập tin cấu hình hệ thống. Cân nhắc việc thi hành cơ chế điều khiển truy cập dựa trên máy chủ và mạng nhằm hạn chế truy nhập bất hợp pháp máy phục vụ TFTP.
3.2.1.3 FTP:
FTP là giao thức chuyển đổi file dựa trên giao thức TCP/IP. Cho phép tải các tệp tin từ hệ thống từ xa.
Kẻ tấn công thường lạm dụng FTP để lấy truy cập hệ thống từ xa hoặc lưu trữ các tệp tin. Nhiều máy phục vụ FTP cho phép truy cập vô danh, cho phép người dùng đăng nhập máy phục vụ FTP mà không cần chứng thực. Tệp tin hệ thống giới hạn ở nhánh cụ thể trên cây thư mục. Nhưng đôi khi máy phục vụ FTP vô danh cho phép người dùng trải ngang toàn bộ cấu trúc thư mục. Do đó, kẻ tấn công có thể sao chép các tệp tin cấu hình như etc/shadow. Nhiều máy phục vụ FTP có thư mục cho phép ghi được và sự đăng nhập vô danh. Lợi dụng đặc điểm này kẻ tấn công có thể đặt tệp tin .rhosts vào thư mục chủ của người dùng, cho phép kẻ tấn công rlogin vào hệ thống đích.
Biện pháp đối phó: Mặc dù FTP rất hữu ích nhưng cho phép truy cập FTP vô danh sẽ nguy hại đến máy phục vụ. Đánh giá nhu cầu chạy máy phục vụ FTP, và quyết định chắc chắn xem có nên cho phép truy cập FTP vô danh hay không. Cân nhắc kỹ lưỡng trước khi cho phép người dùng vô danh truy cập máy phục vụ.
3.2.2 Truy cập cục bộ
Truy cập cục bộ (local access) được định nghĩa là có shell lệnh hoặc đăng nhập hệ thống.
Hầu hết kẻ tấn công đều gắng sức lấy truy cập cục bộ. Vào thời điểm có shell lệnh tương tác, kẻ tấn công được xem là cục bộ trên hệ thống. Kẻ tấn công phải leo thang đặc quyền người dùng đến người dùng root.
Thư viện dùng chung: Thư viện dùng chung cho phép tâp tin thi hành mã từ thư viện chung khi thi hành. Mã này liên kết với thư viện dùng chung chủ trong lúc biện dịch. Khi chương trình thi hành, thư viện dùng chung đích được tham chiếu và có sẵn mã cần thiết cho chương trình đang chạy. Ưu điểm chính của thư viện dùng chung là lưu đĩa hệ thống và bộ nhớ, tạo điều kiện dễ dàng cho duy trì mã. Cập nhật thư viện dùng chung sẽ cập nhật chương trình sử dụng thư viện dùng chung. Nếu kẻ tấn công có thể sửa đổi thư viện dùng chung hoặc cung cấp thư viện dùng chung khác thông qua biến môi trường, chúng sẽ lấy được truy cập đặc quyền.
Chỗ yếu môi trường in.telnetd là một ví dụ cho loại chỗ yếu này. Đây là chỗ yếu rất điển hình. Một số phiên bản in.telnetd cho phép chuyển biến môi trường đến hệ thống từ xa khi người dùng cố gắng thiết lập nối kết. Do đó, kẻ tấn công có thể sửa đổi biến môi trường LD_PRELOAD sao cho dẫn vào thư viện dùng chung khi đăng nhập. Lúc in.telnetd thi hành /bin/login để chứng thực người dùng, bộ liên kết động sẽ nạp vào thư viện đã sửa đổi và giành quyền gọi thư viện bình thường. Như thế cho phép kẻ tấn công thi hanh mã với đặc quyền root.
Biện pháp đối phó: Bộ liên kết động ( dynamic linhker ) phải bỏ qua biến môi trường LD_PRELOAD cho đặc quyền root SUID. Phải bảo vệ thư viện dùng chung chẳng hạn như /usr/lib hoặc /lib với các mức độ bảo mật cao.
Chương 4: PHƯƠNG PHÁP TỪ CHỐI DỊCH VỤ (DOS)
4.1 Ngốn giải thông( Bandwidth consumption )
Tình huống 1: Người có đường truyền T1 ( 1.544-Mbps) hoặc cao hơn làm ngập kết nối mạng 56-Kbps(hoặc 128-Kbps). Kiểu tấn công này không giới hạn ở kết nối mạng tốc độ thấp.Có trường hợp kẻ tấn công lấy truy cập mạng có hơn 100-Mbps dải thông khả dụng, kẻ tấn công có thể mở cuộc tấn công chống lại các kết nối T1 và hoàn toàn nhấn chìm T1.
Tình huống 2: Kẻ tấn công sẽ khuếch đại cuốc tấn công của anh ta bằng cách dùng nhiều địa điểm để làm ngập kết nối mạng của nạn nhân.Bản chất của việc tấn công này là : kẻ tấn công sẽ nhờ vào yếu tố thứ 3 (" mạng khuếch đại") để làm ngập Bandwidth của nạn nhân .
4.1.1 Smurf Attack: Đây có lẽ là kiểu tấn công đáng sợ nhất do tác động của mạng khuếch đại.khi bạn gửi ping request (ICMP ECHO REQUEST) đến một máy tính hoặc một hệ thống mạng, máy tính hoặc hệ thống đó sẽ gửi lại cho bạn ping reply(ICMP ECHO REPLY), dựa vào điều này kẻ tấn công sẽ giả mạo địa chỉ IP nguồn là nạn nhân và gửi các packet đến mạng khuếch đại ,lúc đó mạng khuếch đại sẽ gửi các packet trả lời như thế cho nạn nhân ( vì kể tấn công đã giả mạo địa chỉ IP là nạn nhân ) Smurf attack tận dụng directed broadcast và yêu cầu tối thiểu là 3 điều kiện:- attacker- victim- mạng khuếch đại.
Hình 27 – Smurf Attack
Giải pháp đối phó: Thực ra đối phó là cả một vấn đề vì không một cá nhân nào làm được mà yêu cầu phải là một cộng đồng. Mỗi cá nhân,công ty,tổ chức phải biết config máy tính,hệ thống của mình để không bị biến thành mạng khuếch đại.Khi bị tấn công cần phải phối hợp với ISP nhằm giới hạn lưu lựong ICMP, tăng cường biện pháp đối phó.Theo rõi cuộc tấn công như kiểu này là rất khó nhưng không phải là không được.Để không bị biến thành mang khuếch đại nên vô hiệu hóa chức năng directed broadcast tại bộ định tuyến:+Đối với bộ định tuyến của Cisco: vô hiệu hóa bằng lệnh no ip directed-broadcast + Đối với thiết bị khác bạn nên tham khảo tài liệu+Solaris: bổ sung thêm dòng sau vào:/etc/rc2.d/S69inetndd -set /dev/ip ip_respond_to_echo_broadcast 0+Linux :Áp dụng bức tường lửa ở cấp độ nhân thông qua ipfw.Nhớ biên dịch bức tường lửa sang nhân rồi thi hành các lênh sau:ipfwadm -I -a deny -P icmp -D 10.10.10.0 -S 0/0 0 8ipfwadm -I -a deny -P icmp -D 10.10.10.255 -S 0/0 0 8
4.1.2 SYN flood attack: Đến khi Smurf attack trở nên thịnh hành thì SYN flood attack gây tàn phá nhiều nhất . PANIX là một ví dụ điển hình về khả năng tàn phá của Smurf attack.Khi hai hệ thống kết nối TCP với nhau,chúng sẽ phải bắt tay nhau qua 3 bước ( phương pháp bắt tay 3 bước):clien 1. ------------ SYN gửi từ clien ----------------> severclien 2. sever Sau 3 bước trên kết nối mới được thiệt lập giữa hai hệ thống.Trong hoàn cảnh bình thường ,SYN packet từ một công cụ thể trên hệ thông A đến một cổng cụ thể trên hệ thống B trong tình trang LISTEN.Vào thời điểm này kết nối trên hệ thông B ở tình trạng SYN_RECV. Vào giai đoạn này hệ thống B sẽ tìm cách gửi packet SYN/ACK về cho hệ thống A. Nếu mọi sự ổn thỏa hệ thông A sẽ gửi trả packet ACK,và kết nối truyển sang tình trạng ESTABLISHED.Dù có nhiêu lúc cơ chế này chẳng có vấn đề gì ,nhưng trong hệ thống có những chỗ yếu cỗ hữu để kẻ tân công có thể lơi dụng để DOS .Vấn đề là đa số hệ thông phân phối số lượng tài nguyên nhất định khi thiết lập kết nối tiềm tàng hoặc kết nối chưa được thiết lập hẳn ( SYN_RECV).Tuy rằng 1 hệ thống chấp nhân hàng trăm kết nối vào một cổng cụ thể ( ví dụ như cổng 80 ) nhưng chỉ lấy một chục yêu cầu kết nối là hết sạch tài nguyên phân phối cho thiết lập kết nối. Đây chính là điểm mà kẻ tấn công sẽ lợi dụng để vô hiệu hóa hệ thống. Attacker (hệ thống A ) sẽ gửi SYN packet đến Victim ( hệ thống B) và giả mạo địa chỉ IP của hệ thống C ( hệ thống C này không tồn tại trên thực tế nha) Lúc đó hệ thống B sẽ sử lí như thế nào ? hệ thống B sẽ gửi packet SYN/ACK đến hệ thống C. Giả sử rằng hệ thống C tồn tại ,nó sẽ gửi packet RST cho hệ thống B (vì nó không khởi đông kết nối).Nhưng chăng đời nào ATTACKER giả mạo IP của một hệ thông tồn tại ,chính vì thế mà hệ thống B sẽ chẳng bao giờ nhận được packet RST từ hệ thông C.Và lúc đó hệ thống B sẽ đặt kết nối này vào hàng đợi ( SYN_RECV).Do hàng đợi kết nối thường rất nhỏ attacker chỉ cần gửi vài packet SYN ( sau 10 giây thì có thể vô hiệu hóa hoàn toàn một cổng ).Giải pháp đối phó: Muốn biết mình có bị tấn công SYN flood không có thể dùng lênh : Netstat -aNếu thấy nhiều kết nối trong tình trạng SYN_RECV thì có nghĩa hệ thống đang bi tấn công. Một số giải pháp :- Tăng kích thước hàng đợi kết nối -Giảm khoảng thời gian thiết lập kết nối-tránh né tấn công syn flood bằng phần mềm. -IDS mạng
4.2 Tước đoạt tài nguyên (Resource Starvation)
Kiểu tấn công này khác với kiểu tấn công trước ở chỗ kiểu này sẽ chiếm dụng tài nguyên của hệ thống( CPU,RAM..) thay vì chiếm dụng tài nguyên mạng. Khi hệ thống bị chiếm hết tài nguyên ( ví dụ : bộ nhớ ) hệ thống sẽ không thể hoạt đông được dẫn đến bị "treo" .
4.3 Lỗi lập trình (programing Flaws)
Đây là nhưng lỗi của chương trình ứng dụng,hệ điêu hành... Kẻ tấn công sẽ gửi nhưng packet khó hiểu đến nạn nhân nhằm xác định xem Network Stack có xử lí ngoại lệ hay không hay là sẽ làm toàn bộ hệ thông ngừng hoạt động .Đối với những CT ứng dụng cần nhập dữ liệu kể tấn công có thể gửi những chuỗi dữ liệu dài đễn hàng ngàn dòng dẫn đến tràn bộ đệm -- dẫn đến hệ thống ngưng hoạt động.
4.4 Tấn công bằng định tuyến và DNS ( Routing and DNS attack)4.4.1 Routing Đa số các giao thức định tuyến như RIP,BGP không có chứng thực hoặc chứng thức rất yếu, đây là điểm tuyết vời cho kể tân công.Kẻ tấn công sẽ thay đổi tuyến đường hợp lệ bằng cách giả mạo địa chỉ IP nguồn Các nạn nhân sẽ có lưu lượng định tuyến qua mạng của kẻ tấn công hoặc các Black hole.4.4.2 DNS Kẻ tấn công có thể đổi một lối vào trên Domain Name Server của hệ thống nạn nhân rồi cho chỉ đến một website nào đó của kẻ tấn công. Khi máy khách yêu cầu DNS phân tích địa chỉ bị xâm nhập thành địa chỉ IP, lập tức DNS ( đã bị kẻ tấn công thay đổi cache tạm thời ) sẽ đổi thành địa chỉ ip mà kể tấn công đã cho chỉ đến đó . Kết quả là thay vì phải vào trang Web muốn vào thì các nạn nhân sẽ vào trang Web do chính kể tấn công tạo ra.
KẾT LUẬN
Khóa luận này đã thu được một số kết quả như sau:
Nghiên cứu, tìm hiểu qua tài liệu để hệ thống lại các vấn đề sau:
- Một số lỗ hổng trong an toàn bảo mật thông tin.
- Các phương pháp do thám hệ thống.
- Các phương pháp xâm nhập hệ thống.
- Các phương pháp từ chối dịch vụ.
Với mỗi lỗ hổng trên, khóa luận đưa ra một số phương pháp khắc phục nhằm tăng tính bảo mật và an toàn thông tin của hệ thống.
Tài liệu tham khảo
Tài liệu Tiếng Việt:
[1] Vn-guide. Bảo mật trên mạng – bí quyết và giải pháp. Nxb Thống kê. 2000.
[2] PGS.TS Trịnh Nhật Tiến. Giáo trình an toàn dữ liệu.
[3] Dư Phương Hạnh. Giáo trình an toàn mạng.
Tài liệu tiếng Anh:
[4] Ofir Arkin. Network Scanning Techniques. 1999.
[5] Joseph D.Sloan. Network Troubleshooting Tools. 2001.
[6] Kevin Mitnick. The Art Of Intrusion. 2000.
[7] Authors. Hack Proofing Your Network. 2001.
[8] NewRider. Hackers Beware Defend Your Network. 2000.
[9] Paul Gurgul, Telnet Based Attacks. 8/2004.
[10] Paul Gurgul, Identify Techniques. 10/2004.
[11] McGrawHill. NetworkSecurityIllustrated. 2000
Các Website:
www.quantrimang.com
www.manguon.com
www.pcworld.com.vn
www.cert.org
www.securitydocs.com
www.javvin.com
www.infoseccorp.com
www.networkchemistry.com
www.securiteam.com
www.techworld.com