-
1
- 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
-
2
-
MỞ ĐẦU
Với sự phát triển mạnh mẽ của công nghệ thông tin, đặc biệt là sự
xuất hiện của mạng máy tính toàn cầu Internet đã làm thay đổi phương thức khai
thác máy tính cổ điển. Mạng và công nghệ mạng mặc dù ra đời cách đây không
lâu nhưng nó đã được triển khai ứng dụng ở hầu hết khắp mọi nơi trên thế giới.
Tôi xin đăng ký đề tài khóa luận tốt nghiệp là:
“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.”
Xuất phát từ yêu cầu thực tiễn nói trên, nội dung cơ bản của khóa luận
giúp cho người sử dụng có kiến thức cơ bản về các phương thức tấn công trên
mạng, trên cơ sở đó xây dựng một số chương trình “tấn công” qua giao thức
Telnet(đây là giao thức được ứng dung trong khoá luận). Đồng thời, khoá luận
cũng đề xuất một số giải pháp bảo mật cho hệ thống tham gia mạng Internet.
Để đạt được mục đích nói trên, ngoài phần mục lục, lời nói đầu và kết
luận, khoá luận được chia làm 3 chương cơ bản như sau:
Chương I: Tổng quan về mạng Internet và giao thức Telnet.
Ở chương này, khoá luận tập trung trình bày về các giao thức cơ bản của
Internet, tập trung vào giao thức Telnet là giao thức được ứng dụng trong khoá
luận.
Chương II: Một số giải pháp bảo mật thông tin trên mạng.
Mục đích chương II nhằm nghiên cứu những nguy cơ gây có thể
gây mất an ninh trên mạng, trên cơ sở đó đề xuất một số giải pháp bảo
mật thông tin cho các hệ thống máy tính trên mạng.
Chương III: Xây dựng một số chương trình tấn công qua giao thức
Telnet.
Trên cơ sở những vấn đề đã nghiên cứu ở trên, khoá luận đưa ra
một số chương trình tấn công qua thư điện tử, xâm nhập Web, Crack
phần mềm và một số kỹ thuật quét tường lửa. -
-
5
-
một cách độc lập với liên kết vật lý của mạng. Một liên mạng đã khá quen thuộc
với chúng ta là mạng Internet 1.1.2 Mạng Internet
Internet là một tổ hợp hàng triệu máy được kết nối với nhau thông qua
giao thức TCP/IP để có thể chia sẻ thông tin với nhau, trong đó có đủ loại máy
tính, và chúng sử dụng nhiều hệ điều hành khác nhau.Thông tin trên Internet
gồm đủ loại từ thư điện tử (Email), các File đồ hoạ đến Video và còn nhiều
thông tin khác được cung cấp bởi những người sử dụng Internet.
Những máy chủ (Host) mạnh thường sử dụng những hệ điều hành đa
nhiệm, ví dụ như UNIX, để người sử dụng kết nối vào. Những máy chủ được
định vị tại các điểm như thư viện, các trường đại học, các tổ chức, các đại lý, các
công ty trên toàn thế giới. Những máy chủ này được kết nối với nhau qua đường
điện thoại và chỉ mất khoảng 640/1000 giây để bắt đầu nhận thông báo từ Bắc
Mỹ tới Nam cực.
1.1.2.1 Các dịch vụ mức ứng dụng ban đầu trên Internet
- Thư điện tử (Electronic mail) Cho phép người dùng ngồi trước máy tính
tại nhà mình gửi E-mail tới bất cứ ai ở đâu trên thế giới nếu họ có địa chỉ E-mail.
Họ có thể tham gia các nhóm thảo luận (Discussion group) về những đề tài khác
nhau hay bắt đầu một nhóm mới về những chủ đề mà họ ưa thích.
mạng.
1.1.3 Giao thức truyền thông và mô hình tham chiếu OSI
1.1.3.1 Giao thức truyền thông
Các máy tính trên mạng có thể trao đổi thông tin với nhau thông qua một
bộ những phần mềm cùng làm việc theo một chuẩn nào đó. Giao thức truyền
thông (Protocol) là tập hợp các quy tắc quy định phương thức truyền nhận thông
tin giữa các máy tính trên mạng.
Các mạng máy tính hiện đại được thiết kế bằng cách phân chia cấu trúc ở
mức độ cao nhằm làm giảm sự phức tạp khi thiết kế. Các giao thức mạng thường
-
7
-
được chia làm các tầng (Layer), mỗi tầng được xây để dựng dựa trên dịch vụ của
tầng dưới nó và cung cấp dịch vụ cho tầng cao hơn.
1.1.3.2 Mô hình tham chiếu OSI(Open Systems Interconect Referent
model)
Mô hình mạng máy tính do tổ chức tiêu chuẩn hoá quốc tế (International
Standard Organization - ISO) đưa ra năm 1983 được gọi là mô hình tham chiếu
các hệ thống mở (Open Systems Interconect referent model - OSI). Mô hình
tham chiếu OSI chứa 7 tầng mô tả chức năng của giao thức truyền thông. Mỗi
tầng của mô hình OSI miêu tả một chức năng được thực hiện khi dữ liệu di
chuyển giữa các ứng dụng giữa các mạng.
Virtual Communication
Session
Presentation
Physical
Data Link
Network
Transport
-
8
-
Các lớp giao thức được xếp chồng lớp nọ trên lớp kia. Chính sự xuất
hiện của nó, cấu trúc thường được gọi là Stack hoặc giao thức xếp chồng.
Hai hệ thống khác nhau có thể truyền thông với nhau nếu chúng bảo
đảm những nguyên tắc chung (cài đặt cùng một giao thức truyền thông). Các
chức năng được tổ chức thành một tập các tầng đồng mức cung cấp chức năng
như nhau. Các tầng đồng mức phải sử dụng một giao thức chung.
Một tầng không định nghĩa một giao thức đơn, nó định nghĩa một chức
năng truyền thông có thể được thi hành bởi một số giao thức. Do vậy, mỗi tầng
có thể chứa nhiều giao thức, mỗi giao thức cung cấp một dịch vụ phù hợp cho
- Việc thiết kế tầng vật lý cần quan tâm đến các vấn đề về ghép nối cơ khí,
điện tử, thủ tục và môi trường truyền tin bên dưới nó, ví dụ mức điện áp tương
ứng với bit 0 - 1, thời gian tồn tại của xung
Tầng liên kết dữ liệu (Data link layer)
- Liên kết, thiết lập, duy trì, huỷ bỏ các liên kết dữ liệu là nhiệm vụ của
tầng liên kết dữ liệu.
- Ngoài ra tầng liên kết dữ liệu còn kiểm soát lỗi đường truyền, thông
lượng. Tầng này thực hiện việc đóng gói thông tin gửi thành các frame, gửi các
frame một cách tuần tự đi trên mạng, xử lý các thông báo xác nhận
(Acknowledgement frame) do bên nhận gửi về. Xác định ranh giới giữa các
frame bằng cách ghi một số byte đặc biệt vào đầu và cuối frame. Giải quyết vấn
đề thông lượng truyền giữa bên gửi và bên nhận (Vấn đề này có thể được giải
quyết bởi một số lớp trên).
Tầng mạng (Network layer)
- Vấn đề chủ chốt của tầng mạng là routing (dẫn đường), định rõ các gói
tin (packet) được truyền theo những con đường nào từ nguồn đến đích. Các con
đường này có thể cố định, ít bị thay đổi, được thiết lập khi bắt đầu liên kết hay
động (dynamic) thay đổi tuỳ theo trạng thái tải của mạng.
- Nếu có nhiều gói tin truyền trên mạng có thể xảy ra tình trạng tắc
nghẽn, tầng mạng phải giải quyết vấn đề này.
- Thực hiện chức năng giao tiếp với các mạng bao gồm việc đánh lại địa
chỉ, cắt hợp gói tin cho phù hợp với các mạng.
-
10
-
-
11
-
- Nén/giãn dữ liệu để giảm số lượng bit truyền trên mạng.
- Mã hoá dữ liệu để thực hiện quyền truy cập.
Tầng ứng dụng (Application layer)
- Tầng ứng dụng cung cấp giao diện sử dụng cho người dùng và môi
trường truyền tin.
- Thực hiện chức năng chuyển file trong đó có giải quyết vấn đề không
tương thích như cách đặt tên file hay các mã điều khiển trong một tệp văn bản
- Cung cấp các dịch vụ Electronic mail, Remote login, Directory
lookup 1.1.4 Bộ giao thức TCP/IP
1.1.4.1 Giao thức chuyển địa chỉ ARP (Address Resolution Protocol) và
giao thức chuyển ngược địa chỉ RARP (Reverse Address Resolution
Protocol)
Mọi máy tính cùng nằm trên một mạng có cùng một net id và các máy
tính cùng trên một mạng vật lý có thể gửi frame vật lý trực tiếp cho nhau nên
việc truyền thông tin giữa hai máy tính trong cùng một mạng vật lý không cần sử
dụng Gateway. Việc dẫn đường trực tiếp chỉ sử dụng phần địa chỉ máy host id
trong địa chỉ IP. Trạm gửi chỉ việc kết khối dữ liệu vào frame, chuyển địa chỉ IP
của trạm đích thành địa chỉ vật lý và gửi trực tiếp frame tới máy nhận.
Một cơ chế sử dụng để chuyển địa chỉ IP thành địa chỉ vật lý là ARP
(Address Resolusion Protocol). Khi hai máy tính cùng nối vào một mạng vật lý,
tin gửi một thông báo tới toàn bộ các máy tính trên mạng, trong thông báo đó có
chứa địa chỉ IP của máy tính nó cần liên lạc, mọi máy sẽ nhận được thông báo và
máy nào thấy địa chỉ IP của mình thì trả lại một thông báo chứa địa chỉ vật lý,
khi đó, hai máy tính có thể “nói chuyện” với nhau. Host A Host D
Host C
Host B
ARP Request
Host A
Host D
Host C Host B
ARP Reply
-
13
-
1.1.4.2 Giao thức điều khiển truyền tin (Internet Control Message Protocol
- Hướng dòng (Stream Orientation): TCP coi dữ liệu nó gửi đi là một dòng
byte không phải là gói tin. Do đó, TCP đảm bảo số thứ tự của các byte gửi nhận.
TCP chuẩn không bắt hệ thống phải sử dụng một số đặc biệt nào để đánh số
dòng byte, mỗi hệ thống tự chọn một số mà nó sẽ dùng làm điểm bắt đầu. Mỗi
trạm cuối phải biết số thứ tự mà trạm kia dùng.
- Chuyển giao bộ đệm (Buffered Transfer): Để giảm số lượng truyền
thông, giao thức cố gắng sử dụng số lượng tối thiểu các segment để truyền tải
thông tin, do vậy, giao thức sử dụng tối đa độ dài có thể của segment.
- Kết nối hai chiều (Full Duplex Connection): TCP/IP cung cấp kết nối
cho cả hai đầu của liên kết. Điều này có nghĩa là tầng phía dưới cung cấp khả
năng gửi trả thông báo từ trạm đích trở lại trạm nguồn. TCP là giao thức hướng
kết nối. Nó thiết lập quan hệ logic giữa 2 trạm tham gia liên kết.
TCP cung cấp dịch vụ tin cậy với một cơ chế gọi là "Positive
Ackowledgment with Retransmission" (PAR). Đơn giản là trạm nguồn tiếp tục
gửi thông tin đi cho tới khi nó nhận được thông báo dữ liệu đã được nhận chính
xác tại trạm đích. Đơn vị thông tin chuyển giao giữa các ứng dụng gọi là
segment, mỗi segment chứa checksum để đảm bảo rằng segment không bị phá
huỷ trên đường truyền, nếu segment không bị phá huỷ, trạm nhận gửi thông báo
xác nhận lại trạm gửi, nếu segment bị phá huỷ, trạm nhận huỷ bỏ nó và sau một
thời gian nào đó, trạm gửi sẽ gửi lại gói tin mà nó không nhận được thông báo
xác nhận.
-
15
-
Receive ACK 1
Receive ACK 2
Send Paket 1
Send ACK 1
Send ACK 2
Send Paket 2
Receive Paket 1
Receive Paket 2
-
16
-
chuyển tải dữ liệu xuất từ máy tính ở xa ngược trở về màn hình của người sử
dụng. Dịch vụ này được gọi là “trong suốt” (transparent) vì nó cho ta cảm giác
như là bàn phím và màn hình của người sử dụng nối trực tiếp vào máy tính ở xa.
Thông thường, phần mềm Telnet ở Client cho phép người sử dụng xác
định một máy ở xa bằng cách chỉ ra tên miền hoặc địa chỉ IP của nó. Giao thức
Telnet cung cấp một giao diện chuẩn, thông qua một chương trình ở một máy
(Telnet Client) có thể khai thác tài nguyên ở một máy khác (Telnet Server). Ví
dụ, một người sử dụng máy trạm của mạng LAN có thể kết nối với một máy
trong mạng như thể là một máy trạm kết nối trực tiếp với máy đó.
cùng, trong Telnet thì hai đầu của kết nối là đối xứng. Cụ thể, Telnet không bắt
buộc dữ liệu nhập của Client phải đến từ bàn phím, nó cũng không bắt buộc
Client phải thể hiện dữ liệu xuất ra màn hình. Như thế, Telnet cho phép một
chương trình bất kỳ có thể đóng vai trò Client và hai đầu của kết nối có thể
thương thảo về các lựa chọn.
Host A Host B
Negotiation
Hình 4. Mô hình đối xứng của Telnet.
Client reads Client sends Server
From Terminal to Server sends to
pseudo
terminal
Server receives
NVT
Operating
System
Operating
System
TCP/IP
Internet
User’s
keyboard
& display
Telnet
client
Telnet
client
thống trạm làm việc ảo, thì Telnet Server có thể được cài đặt với các chương
trình ứng dụng. Mỗi Server phụ kết nối một dòng TCP từ một Client đến một
trạm làm việc ảo.
-
19
-
Việc bố trí để Telnet Server là một chương trình mức ứng dụng có cả ưu
điểm lẫn khuyết điểm. Ưu điểm lớn nhất là nó làm cho việc sửa đổi và kiểm soát
của Server dễ hơn so với trường hợp chúng được nhúng vào trong hệ điều hành.
Khuyết điểm hiển nhiên nhất là sự kém hiệu quả. Mỗi ký tự nhập từ bàn phím
của người sử dụng sẽ di chuyển qua hệ điều hành để đến chương trình Client, từ
chương trình Client ngược trở về hệ điều hành và đi qua Internet để đến được
máy chủ. Sau khi đến được máy chủ, dữ liệu lại phải di chuyển ngược lên hệ
điều hành của Server để đến chương trình ứng dụng của Server, và từ chương
trình ứng dụng Server ngược trở về hệ điều hành của Server tại điểm vào của
trạm làm việc ảo. Cuối cùng, hệ điều hành ở xa sẽ chuyển phát ký tự này đến
chương trình ứng dụng mà người sử dụng đang chạy. Trong khi đó, kết xuất di
chuyển ngược trở về từ Server đến Client theo cùng một con đường như vậy.
1.2.3 Hoạt động của giao thức Telnet trong những hệ không đồng nhất
Để cho Telnet hoạt động được trong càng nhiều hệ khác nhau càng tốt,
nó phải chấp nhận được các chi tiết của nhiều hệ điều hành khác nhau. Ví dụ,
một số hệ yêu cầu các dòng văn bản được kết thúc bởi ký tự ASCII carriage
control (CR), những hệ khác lại yêu cầu ký tự ASCII linefeed (LF). Lại có những
hệ yêu cầu chuỗi hai ký tự CR-LF. Thêm vào đó, hầu hết các hệ tương tác cung
NVT gồm một màn hình và một bàn phím. Bàn phím thực hiện việc gửi
dữ liệu thông qua kết nối Telnet. Màn hình nhận dữ liệu gửi về. Đặc trưng cơ
bản của mỗi NVT, nếu nó không bị thay đổi bởi những thoả thuận chung là:
- Biểu diễn dữ liệu là tập hợp ký tự ASCII chuẩn 7 bit hoặc là tập hợp ký tự
8 bit.
- NVT là một thiết bị xử lý đồng thời.
- NVT cung cấp một bộ phận báo hiệu lại (Local echo function).
User’s
keyboard
& display
Client Server
Server’s
System
Keyboard
Local
Terminal(Client) Host(Server)
Hình 7. Sơ đồ truyền tín hiệu từ Client đến Server
Định nghĩa của dạng NVT tương đối đơn giản. Mọi thông tin liên lạc đều
sử dụng các byte - 8bit. Tập hợp ký tự ASCII chuẩn gồm 95 ký tự in được và 33
mã điều khiển. Chuẩn NVT định nghĩa ý nghĩa của các ký tự điều khiển như sau:
Command
ASCII
Action
Null (NUL)
0
No operation
Bell (BEL)
7
Sound audible/visible signal(no motion)
Backspace(BS)
8
13
Move to the left m
argin on the current line
Other control
-
No operation (has no effect on output)Hình 8. Các ký tự điều khiển của NVT
1.2.3.2 Các lựa chọn Telnet
Telnet bao gồm một cơ chế cho phép Client và Server thương thảo các
lựa chọn, nó cung cấp một tập hợp lựa chọn chuẩn (ví dụ, một trong những lựa
A
Z
-
22
-
chọn này là để điều khiển việc truyền dữ liệu qua kết nối sẽ sử dụng tập hợp ký -
23
-
Hình 9. Một số lựa chọn thông dụng của Telnet.
Việc thương thảo các lựa chọn trong Telnet
Trong một số lựa chọn cụ thể, Server thường là phía khởi động việc
thương thảo. Vì thế, các giao thức được thiết kế sao cho đầu nào cũng có thể
đưa ra yêu cầu. Giao thức này được gọi là đối xứng với tiến trình chọn lựa. Nơi
nhận có thể đáp ứng lại yêu cầu bằng việc chấp nhận hoặc từ chối. Trong thuật
ngữ của Telnet, yêu cầu là WILL X, có nghĩa là “bạn đồng ý để tôi sử dụng lựa
chọn X” và lời đáp có thể là DO X hay DON’T, có nghĩa là “tôi đồng ý để bạn sử
dụng lựa chọn X” hay là “tôi không đồng ý để bạn sử dụng lựa chọn X”.
Như vậy. chúng ta có thể tóm tắt như sau: Telnet sử dụng một cơ chế
thương thảo chọn lựa đối xứng để cho phép Client và Server cấu hình lại các
tham số điều khiển việc tương tác giứa chúng. Bới vì, tất cả các phần mềm Telnet
hiểu giao thức cơ bản của NVT, Client và Server có thể hợp tác với nhau ngay cả
khi một bên hiểu được sự lựa chọn còn bên kia thì không.
1.2.3.3 Cấu trúc lệnh Telnet
Việc giao tiếp giữa Client và Server được thực hiện bởi các lệnh bên trong
mà người sử dụng không thể truy cập. Tất cả các lệnh Telnet bao gồm 2-3 byte
liên tiếp, tuỳ theo loại lệnh.
Telnet NVT chấp nhận các chức năng điều khiển bằng việc định nghĩa
cách chúng được chuyển từ Client đến Server. Về mặt khái niệm chúng ta xem
Ví dụ: Byte 1 Byte 2 Byte 3
255 253 24
Terminal Type
WILL
IAC
Command
Code
Meaning
SB
249
Start of option sub
-
negotiation
SE
240
End of option sub
-
negotiation
253
Approval to allow specified option
DON’T
254
Denial of request to perform specified option
NOP
241
No operation
EOR
239
End of recordHình 10. Cấu trúc lệnh của Telnet.
Để có thể thực hiện việc thương thảo các lựa chọn Telnet sử dụng các lệnh
bên trong. Các lựa chọn có thể được thương thảo bằng các mã lệnh: WILL, DO,
DON’T, WON’T. Ngoài ra, một số lựa chọn còn có các lựa chọn phụ: nếu cả hai
bên đồng ý với lựa chọn, chúng sử dụng lệnh SB và SE để quản lý lựa chọn phụ.
Một ví dụ đơn giản, việc thương thảo các lựa chọn được thực hiện như sau:
SB terminal type
IBM=3278-2 SE
My terminal is a 3278
-
2
DO echo
WON’T echo