1
MỤC LỤC
Trang
LỜI NHẬN XÉT
LỜI CẢM ƠN
MỤC LỤC...................................................................................................................1
MỞ DẦU ............................................................................................................................... 3
TÓM TẮT ...................................................................................................................4
Phần 1: CÁC KỸ THUẬT TẤN CÔNG .................................................................5
1. Mạng và các điểm yếu.......................................................................................5
2. Các bước chính thực hiện một cuộc tấn công ...................................................6
2.1.
Thu thập thông tin đích ...........................................................................6
2.1.1. In dấu chân ..........................................................................................7
2.1.2. Quét.....................................................................................................7
2.1.3. Điểm danh ...........................................................................................7
2.2.
Truy cập lần đầu ......................................................................................8
2.3.
Leo thang đặc quyền ...............................................................................8
2.4.
Che đậy dấu vết .......................................................................................9
2.5.
Đặt cửa sau ..............................................................................................9
3. Một số kỹ thuật tấn công cơ bản .......................................................................9
3.1.
Kỹ thuật Sniffer .......................................................................................9
3.1.1. Passive attack ......................................................................................9
3.1.2. Active attack .....................................................................................10
3.2.
Tấn công từ chối dịch vụ (Denial of Service attack – DoS) .................11
3.2.1. E-mail bombing ................................................................................11
3.2.2. Smurf.................................................................................................12
3.2.3. Brute-force ........................................................................................12
3.2.4. Ping of Death ....................................................................................12
3.2.5. Teardrop ............................................................................................12
2
3.2.6. SYN flood .........................................................................................13
4. Một số giải pháp ..............................................................................................13
Phần 2: CHƯƠNG TRÌNH MINH HỌA..............................................................15
1. Cấu trúc mạng .................................................................................................15
1.1.
IP ...........................................................................................................15
1.2.
TCP........................................................................................................17
1.3.
UDP .......................................................................................................18
1.4.
ICMP .....................................................................................................19
2. Chương trình quét cổng...................................................................................20
2.1.
Tạo Socket .............................................................................................20
2.2.
Phát hiện các cổng đang mở sử dụng giao thức TCP/IP .......................21
2.3.
Phát hiện các cổng đang mở sử dụng giao thức TCP/IP bằng cách gửi
gói tin SYN............................................................................................21
2.4.
Phát hiện các cổng đang mở sử dụng giao thức TCP/IP bằng cách gửi
gói tin ACK ...........................................................................................24
2.5.
Phát hiện các cổng đang mở sử dụng giao thức TCP/IP bằng cách gửi
gói tin FIN .............................................................................................26
2.6.
Phát hiện các cổng đang mở sử dụng giao thức UDP/IP ......................28
2.7.
Kiểm tra bằng gói tin ICMP ..................................................................29
2.8.
Kiểm tra Hệ điều hành đang được sử dụng...........................................30
KẾT LUẬN ...............................................................................................................34
1. Những vấn đề đạt được ...................................................................................34
2. Hướng phát triển của đề tài .............................................................................34
TÀI LIỆU THAM KHẢO
3
MỞ ĐẦU
Ngày nay cùng với sự phát triển của kinh tế, mạng Internet ngày càng phát triển.
Nó mở rộng phạm vi liên lạc của con người, các công ty tổ chức ở rất xa nhau vẫn
có thể sử dụng Internet để giao dịch với nhau, thông qua Internet họ có thể quản lý
khách hàng của mình.
Tuy nhiên cùng với sự phát triển của nó, việc tấn công vào các tổ chức, lấy cắp
dữ liệu trên Internet ngày càng phổ biến. Các cuộc tấn công này lợi dụng những
điểm yếu trên mạng để nhằm thực hiện những mục đích của kẻ tấn công.
Để thực hiện một cuộc tấn công, kẻ tấn công phải tìm hiểu những thông tin cụ thể
về mạng của tổ chức đó. Tuy nhiên, việc tìm hiểu những thông tin đó cũng giúp ích
cho những người quản trị mạng trong việc khắc phục những điểm yếu trên mạng
của họ.
Một chương trình quét cổng thường được sử dụng trong trường hợp này nhằm
tìm ra những kẽ hở của mạng. Việc quét cổng sẽ tìm ra các cổng đang mở, hệ điều
hành trên một hệ thống mạng cụ thể nếu như hệ thống đó không được bảo vệ cẩn
thận.
Trên cơ sở những giao thức mạng đã biết, trong Đề tài “Tìm hiểu các kỹ thuật tấn
công và xây dựng một chương trình quét cổng” này, em có xây dựng một chương
trình quét cổng nhằm củng cố những kiến thức mà mình đã tìm hiểu được. Tuy
nhiên chương trình không tránh khỏi những hạn chế do kiến thức của bản thân. Em
sẽ cố gắng khắc phục những hạn chế này trong thời gian tới.
4
TÓM TẮT
Báo cáo gồm 2 phần:
Phần thức nhất: Tìm hiểu các kỹ thuật tấn công
1. Mạng và các điểm yếu: Phần này giới thiệu chung về hiện trạng và các điểm
yếu của mạng hiện nay.
2. Các bước chính thực hiện một cuộc tấn công: giới thiệu chung về các bước cơ
bản của một cuộc tấn công trên mạng.
3. Một số kỹ thuật tấn công trên mạng: Đưa ra các kết quả tìm hiểu về các kỹ
thuật tấn công như: E-mail bombing, IP spoofing, SYN flood,…
4. Một số giải pháp: Từ việc hiểu các kỹ thuật tấn công mà đưa ra một số biện
pháp nhằm ngăn chặn và hạn chế các cuộc tấn công.
Phần thứ hai: Xây dựng một chương trình quét cổng
Những lý thuyết cơ bản về mạng: Cấu trúc gói tin IP, TCP, UDP, ICMP.
Dựa trên những kiến thức đã tìm hiểu để xây dựng một chương trình nhằm góp
phần tìm ra những lỗi bảo mật, góp phần quan trọng vào việc bảo vệ cũng như tấn
công.
Kết thúc báo cáo là phần kết luận, tóm lược những nội dung đã trình bày và đưa
ra hướng nghiên cứu tiếp theo và danh mục các tài liệu tham khảo.
5
Phần 1: CÁC KỸ THUẬT TẤN CÔNG
1. Mạng và các điểm yếu
Khi Internet ra đời thì nhu cầu trao đổi thông tin trở nên cần thiết. Mục tiêu của
việc nối mạng là để cho mọi người dùng chung tài nguyên từ những vị trí địa lý
khác nhau. Do đó, các tài nguyên rất dễ bị phân tán, dẫn đến việc chúng sẽ bị xâm
phạm gây mất mát dữ liệu cũng như các thông tin có giá trị. Càng giao thiệp rộng
càng dễ bị tấn công, đó là quy luật.
Do đó, mỗi nguy cơ trên mạng là mối nguy hiểm tiềm tàng. Một lỗ hổng bảo mật
nhỏ của các hệ thống nhưng nếu được lợi dụng với tần suất cao và kỹ thuật hack
điêu luyện thì cũng sẽ trở thành tai họa. Trong khi đó Internet là một mô hình vô
cùng rộng lớn.
Theo thống kê của tổ chức bảo mật nổi tiếng CERT (Computer Emegency
Response Team), các vụ tấn công ngày càng tăng, cụ thể :
- Năm 1989 có 200 vụ tấn công và truy cập trái phép trên mạng Internet.
- Năm 1991 có 400 vụ.
- Năm 1993 có 1400 vụ.
- Năm 1994 là 1300 vụ.
- Những năm 200x có hàng chục ngàn vụ trên mỗi năm.
Internet là nơi cực kỳ hỗn loạn, mọi thông tin truyền trên Internet đều có thể bị
xâm hại và nghe lén được. Thậm chí là công khai. Vì vậy, để bảo vệ được, chúng ta
phải hiểu rõ các điểm yếu của mạng để có thể tự bảo vệ.
Sau đây là 14 chỗ yếu dễ bị xâm nhập:
• Thiếu điều khiển truy cập bộ định tuyến và lập cấu hình sai ACL sẽ cho phép
rò rỉ thông tin qua ICMP, IP, NetBIOS, dẫn đến truy cập bất hợp pháp các
dịch vụ trên máy phục vụ DMZ.
•
Điểm truy cập từ xa không được theo dõi và bảo vệ sẽ là phương tiện truy
cập dễ dàng nhất đối với mạng công ty.
6
• Rò rỉ thông tin có thể cung cấp thông tin phiên bản hệ điều hành và chương
trình ứng dụng, người dùng, nhóm, DNS cho kẻ tấn công thông qua chuyển
vùng và các dịch vụ đang chạy như SNMP, SMTP, telnet, …
• Máy chủ chạy các dịch vụ không cần thiết (như FTP, DNS, SMTP) sẽ tạo ra
lối vào.
• Mật mã yếu, dễ đoán, dùng lại ở cấp trạm làm việc có thể dồn máy phục vụ
vào chỗ thỏa hiệp.
• Tài khoản người dùng hoặc tài khoản thử nghiệm có đặc quyền quá mức.
• Máy phục vụ internet có cấu hình sai, đặc biệt là kịch bản CGI trên máy phục
vụ web và FTP vô danh.
• Bức tường lửa hoặc ACL bị lập cấu hình sai có thể cho phép truy cập trực
tiếp hệ tống trong hoặc một khi đã thỏa hiệp xong máy phục vụ DMZ.
• Phần mềm chưa được sửa chữa, lỗi thời, dễ bị tấn công, hoặc để ở cấu hình
mặc định.
• Quá nhiều điều khiển truy cập thư mục và tập tin.
• Quá nhiều mối quan hệ ủy quyền như NT Domain Trusts, các tập tin .rhosts
và hosts.equiv trong UNIX sẽ cho kẻ tấn công truy cập hệ thống bất hợp pháp.
• Các dịch vụ không được chứng thực như X Windows.
• Thiếu tính năng ghi nhật ký, theo dõi, và dò tại mạng và cấp độ máy chủ.
• Thiếu chính sách bảo mật, thủ tục, và tiêu chuẩn tối thiểu.
2. Các bước chính thực hiện một cuộc tấn công.
Có nhiều cách để thực hiện một cuộc tấn công và tùy thuộc vào từng mục đích cụ
thể mà phương pháp tấn công có thể khác nhau. Nhưng điểm chung giống nhau là
nó đều được thực hiện qua 5 bước sau:
2.1. Thu thập thông tin đích
Để tiến hành một cuộc tấn công thì người tấn công phải nghiên cứu rất nhiều về
hệ thống trước khi tìm cách truy cập đặc quyền hệ thống đó. Việc thu thập thông tin
đích bao gồm các bước là in dấu chân, quét và điểm danh.
7
2.1.1
In dấu chân
In dấu ấn là việc dùng các công cụ và kỹ thuật để lấy thông tin cơ bản đầu tiên về
một tổ chức hoặc trang web muốn tấn công. Việc in dấu ấn có hệ thống một tổ chức
sẽ cho phép thấy rõ tình hình an ninh (độ bảo mật) của tổ chức đó. In dấu có thể
giúp định danh tất cả các mẩu tin và nắm những thông tin cơ bản.
Có rất nhiều kỹ thuật in dấu ấn khác nhau nhưng chủ yếu nhằm vào khám phá
thông tin liên quan đến những công nghệ: Internet, intranet, truy cập từ xa, extranet.
2.1.2
Quét
Nếu in dấu chân là thu thập tất cả thông tin có liên quan đến tổ chức đích thì
quét là một bước xác định xem trong đó thì cái nào là dùng được bằng các đợt quét
ping, quét cổng và các công cụ phát hiện tự động. Bước này cho phép xác định một
cách chính xác các hệ thống còn sống hay không thông qua ICMP hoặc thông qua
cổng quét chọn lọc.
• Truy vấn ICMP: Có thể thu thập tất cả các kiểu thông tin về một hệ thống
bằng cách đơn giản gửi một gói tin ICMP cho nó.
•
Quét cổng (port scan): Quét cổng là tiến trình nối với các cổng TCP và UDP
trên hệ đích để xác định các dịch vụ đang chạy hoặc đang ở trạng thái
LISTENNING. Các dịch vụ hoạt động đang lắng chờ (listenning) có thể cho
phép một người dùng trái phép giành được quyền truy cập các hệ thống bị cấu
hình sai. Mục tiêu của việc quét cổng là: Định danh các dịch vụ TCP và UDP
đang chạy trên hệ đích, định danh kiểu hệ điều hành của hệ đích, định danh
các ứng dụng cụ thể hoặc các phiên bản của một dịch vụ cụ thể.
2.1.3
Điểm danh mạng
Giả sử việc thực hiện in dấu chân và quét đều không thành công hoặc những
thông tin thu được không thể đủ để phát động một cuộc tấn công, người tấn công sẽ
chuyển sang phương pháp định danh các tài khoản người dùng hợp lệ hoặc các tài
nguyên dùng chung không được bảo vệ kỹ. Điểm danh là một cách để trích các tài
khoản hợp lệ hoặc các tài nguyên từ hệ thống.
8
Những thông tin mà kỹ thuật điểm danh thu được có thể tạm thu gọn thành các
phạm trù sau: Các tài nguyên mạng và các phần dùng chung, người dùng và nhóm,
các ứng dụng và biểu ngữ (banner).
Kỹ thuật điểm danh cũng cụ thể theo từng hệ điều hành của server, và do đó, nó
cũng phụ thuộc vào các thông tin thu thập được từ phần in dấu chân và quét.
2.2. Truy cập lần đầu
Sau khi có được những thông tin quan trọng ở bước trên, người tấn công bắt đầu
tấn công vào hệ thống đích dựa trên những lỗ hổng mà họ đã tìm được. Để tấn công
có hiệu quả thì người tấn công phải sử dụng những phương pháp tấn công phù hợp
nhằm đạt được hiệu quả cao nhất và tránh bị phát hiện.
2.3. Leo thang đặc quyền
Sự leo thang đặc quyền là một phương thức tấn công mà các User có quyền hạn
thấp hơn sẽ tấn công vào một điểm dễ bị tổn thương nhất của hệ thống để trở thành
một người quản trị hoặc có thể trở thành các User có quyền hạn cao hơn. Cách để
leo thang đặc quyền là chiếm quyền thông qua crack password của người quản trị,
tấn công tràn bộ đệm của máy đó và ăn cắp password.
Chỉ cần phát hiện ra được một Password cho ứng dụng thì coi như việc tấn công
leo thang đặc quyền đã thành công. Vì vậy khi sử dụng password nên chú ý một số
điểm sau:
• Thay đổi password thường xuyên để không bị mất password.
• Các password cần được đặt gồm đủ các ký tự cả số, không nên đặt password
có liên quan đến bản thân vì như vậy làm tăng nguy cơ password bị attacker
đoán được.
• Nên xoá các user không cần thiết sử dụng nếu như thật sự không cần nhằm
giảm nguy cơ bị tấn công leo thang đặc quyền.
• Không cho người lạ mặt tìm hiểu về hệ thống và có các tác động vật lý vào
server.
9
•
Thiết lập quyền không cho cài đặt các chương trình lạ đối với các user không
tin cậy vào máy server.
2.4. Che đậy dấu vết
Sau khi xâm nhập thành công, người tấn công thường phải xóa dấu vết mà những
nhà quản trị mạng có thể dùng để tìm ra họ. Có nhiều công cụ và kỹ thuật xóa dấu
vết tùy thuộc vào từng hệ điều hành khác nhau.
2.5. Đặt cửa sau
Việc đặt cửa sau là quan trọng nếu như người tấn công vẫn còn muốn quay lại hệ
thống đó. Việc đặt cửa sau cũng giống như việc tạo một tài khoản với user và
password hợp lệ cho người tấn công.
3. Một số kỹ thuật tấn công cơ bản
3.1. Kỹ thuật sniffer
Các hệ thống truyền thông tin qua mạng đôi khi không chắc chắn lắm và lợi dụng
điều này, hacker có thể truy cập vào đường truyền dữ liệu để nghe trộm hoặc đọc
trộm luồng dữ liệu truyền qua.
Các chương trình nghe trộm còn được gọi là các sniffer. Các sniffer này có
nhiệm vụ lắng nghe các cổng của một hệ thống mà hacker muốn nghe trộm. Nó sẽ
thu thập dữ liệu trên các cổng này và chuyển về cho hacker.
Có hai phương pháp mà các sniffer có thể thực hiện như sau:
3.1.1 Passive attack
Một cuộc tấn công passive thực hiện việc nghe lén thông tin nhưng không làm
ảnh hưởng tới tài nguyên của hệ thống. Ảnh hưởng chính của cách tấn công này là
nó đe dọa tính bí mật của dữ liệu đang được truyền. Như trong hình 1.1, dữ liệu
được truyền từ nguồn đến nơi nhận có thể bị theo dõi bởi người nghe lén ở giữa. Dữ
liệu này có thể là những thông điệp e-mail hay username và password được truyền
mà không mã hóa.
10
Hình 1.1: Dữ liệu bị nghe lén trên đường truyền
Trong cách tấn công này có hai phương pháp thường được sử dụng là: Tấn công
nghe trộm (passive wiretapping attack) và tấn công phân tích gói tin (traffic analysis
attacks).
• Tấn công nghe trộm (passive wiretapping attack): Attacker có thể hiểu và lấy
những thông tin mà dữ liệu đã mã hóa để truyền. Ví dụ như khi hai bên truyền
thông với nhau mà không tiến hành mã hóa thì một cuộc tấn công nghe trộm
có thể lấy được toàn bộ thông tin được mã hóa trong dữ liệu.
• Tấn công phân tích (Traffic analysis attack): Kẻ tấn công không thể hiểu
thông tin mà dữ liệu mã hóa để truyền. Thay vào đó, traffic analysis dựa vào
đặc điểm của các gói tin để đưa suy ra thông tin mà nó thu được. Ví dụ, nếu
hai công ty: Một công ty phát triển mạng và một công ty kém phát triển, họ
trao đổi với nhau một số lượng thông điệp lớn thì người tấn công có thể suy ra
rằng họ đang thảo luận về việc hợp nhất hai công ty đó.
Thành công của một cuộc tấn công passive attack phụ thuộc vào đường truyền
vật lý sử dụng và khả năng truy cập đường truyền của người tấn công.
3.1.2
Active attack
Một cuộc tấn công active nhằm thay đổi tài nguyên hệ thống hay làm ảnh hưởng
đến hoạt động của chúng. Nó đe dọa đến tính nguyên vẹn của dữ liệu đang được
truyền. Trong trường hợp như Hình 1.2, dữ liệu được truyền từ nguồn đến nơi nhận
không những chỉ bị theo dõi mà còn bị điều khiển bởi người nghe trộm ở giữa.
Bằng cách này người tấn công có thể chỉnh sửa, thêm vào, xóa hay gửi lại bất kỳ dữ
liệu nào.
11
Cách tấn công này dễ dàng thực hiện các mục đích tấn công khác nhau như là
làm lụt nơi nhận bằng tấn công từ chối dịch vụ (DoS), làm giảm chất lượng dịch vụ,
spoofing, session hijacking,…
Hình 1.2: Dữ liệu bị tấn công trên đường truyền
3.2. Tấn công từ chối dịch vụ (Denial of Service attack – DoS):
Kiểu tấn công này thông thường làm tê liệt một số dịch vụ. Và đây là một trong
những kiểu tấn công khó phòng ngừa nhất. Các tấn công này lợi dụng một số lỗi
trong phần mềm hay các lỗ hổng bảo mật trên hệ thống nhằm làm cho đường truyền
bị tắc nghẽn do có quá nhiều yêu cầu được gửi đến máy tính bị tấn công trong một
khoảng thời gian ngắn, khiến cho hệ thống mạng không thể gửi các gói tin báo nhận
kịp thời. Hay nhằm tước đoạt tài nguyên hệ thống làm cho những người dùng hợp lệ
bị từ chối sử dụng tài nguyên.
Có các kiểu tấn công từ chối dịch vụ như sau:
3.2.1 E-mail bombing
Kẻ tấn công làm lụt hộp thư của người bị tấn công với một số lượng lớn các
thông điệp giả mạo.
Các dạng e-mail bomb phổ biến là: E-mail có đính kèm virus, e-mail có đính
kèm file virus dưới dạng file nén, e-mail có đính kèm file nén là tập tin văn bản có
kích thước lớn nhưng chỉ có một ký tự được lặp đi lặp lại hàng ngàn lần.
Có hai phương pháp thực hiện một cuộc tấn công bằng e-mail bomb là: Mass
mailing và list linking.
• Mass mailing: Là việc gửi lặp đi lặp lại một mail tới một địa chỉ mail. Tương
tự như khi sử dụng trong spamming, những kẻ tấn công gửi hàng triệu, hàng
12
ngàn e-mail, nhưng địa chỉ của các e-mail này chỉ là một hay một vài địa chỉ
mà những kẻ tấn công muốn làm lụt.
• List linking: Mỗi thông điệp đến được thêm vào một file plain text gồm tất cả
các thông điệp đã chuyển đến trong ngày hôm đó. Khi ngày đó kết thúc, toàn
bộ file được gửi tới các thành viên khác. Bằng cách này, các thành viên khác
sẽ nhận được một file chứa tất cả các thông điệp trong ngày.
3.2.2 Smurf
Người tấn công gửi những gói tin ICMP echo request multicast hay broadcast tới
hệ thống nào đó với địa chỉ IP nguồn của gói tin là địa chỉ của hệ thống bị tấn công.
Nơi nhận thông điệp ICMP đó sẽ gửi lại thông điệp ICMP reply tới hệ thống bị tấn
công. Kết quả là hệ thống bị tấn công sẽ bị lụt.
3.2.3 Brute-force
Một tấn công kiểu Brute-force, như kiểu ‘Smurf’, nhằm nhanh chóng nhấn chìm
mạng đích với các dữ liệu vô nghĩa. Một hacker Smurf đặt địa chỉ IP đích của gói là
địa chỉ quảng bá của mạng. Máy đích sẽ quảng bá gói ICMP echo request đến tất cả
các trạm trong mạng. Nếu có nhiều trạm, điều này sẽ tạo ra một lượng lớn các gói
ICMP echo request làm tắc nghẽn mạng đích.
3.2.4 Ping of Death
Ping of Death sử dụng công cụ ‘PING’ để tạo các gói IP vượt quá mức tối đa
65535 byte dữ liệu cho phép bởi xác lập IP. Gói vượt kích thước đó được gửi đến
một hệ thống không chờ đợi khiến nó có thể bị hỏng, treo hoặc khởi động lại.
3.2.5 Teardrop
Teardrop khai thác sự yếu kém trong việc tái ghép các phân mảnh của gói IP. Khi
dữ liệu được truyền qua mạng, các gói IP thường được chia thành các mảnh nhỏ.
Mỗi mảnh trông giống như gói nguyên gốc trừ việc nó chứa trường offset. Chương
trình Teardrop tạo ra một loạt các mảnh IP với trường offset chồng chéo. Khi các
mảnh này được tái ghép tại đích, một số hệ thống sẽ bị hỏng, treo hoặc khởi động
lại.
13
3.2.6 SYN flood
Các tấn công SYN nhấn chìm một hệ thống đích với một loạt các gói SYN. Hệ
thống đích sẽ tạo và gửi lại một gói tin SYN/ACK sau khi nhận gói tin SYN. Trong
khi hệ thống đích chờ đợi ACK theo sau mỗi SYN/ACK, nó sẽ nạp vào hàng đợi tất
cả các gói SYN/ACK chờ đến lượt. Các gói SYN/ACK sẽ chỉ được đưa ra khỏi
hàng đợi khi ACK trở lại hoặc khi hết thời gian timeout mà chưa nhận được gói tin
ACK. Khi hàng đợi bị đầy, hệ thống sẽ bỏ qua các yêu cầu SYN khác, làm cho hệ
thống không sử dụng được bởi những người dùng hợp lệ.
Tấn công từ chối dịch vụ kiểu phân tán (Distributed Reflection Denial of
Dervice- DDoS): Kiểu tấn công này thực hiện bằng cách cùng một lúc nhiều máy
cùng gửi gói tin đến đích. Kết quả là máy đích không còn khả năng nhận gói tin.
Thế hệ sau của tấn công từ chối dịch vụ kiểu phân tán (Distributed Denial of
Dervice - DRDoS): Bằng cách giả mạo địa chỉ IP của máy đích, người tấn công
cùng một lúc gửi nhiều gói tin đến các hệ thống máy mạnh trên mạng. Các hệ thống
này khi nhận gói tin SYN giả này, nó chấp nhận kết nối và gửi gói tin SYN/ACK
đến địa chỉ IP trong gói tin SYN. Kết quả là cùng một lúc nhận được nhiều gói tin,
đường truyền đích không đủ đáp ứng, hệ thống máy đích từ chối nhận bất kỳ gói tin
nào.
4. Một số giải pháp
Dưới đây là một số cách có thể giúp nhà quản trị mạng ngăn chặn những cuộc tấn
công vào hệ thống mạng:
• Sử dụng bộ giao thức IPsec (Internet Protocol Security) để mật mã hóa và xác
nhận các gói dữ liệu trao đổi ở lớp mạng.
• Sử dụng danh sách kiểm soát việc truy cập (Access Control List - ACL) để
ngăn chặn những gói dữ liệu tải về có địa chỉ IP cá nhân.
• Cài đặt bộ lọc dữ liệu đi vào và đi ra khỏi hệ thống mạng.
14
•
Cấu hình các bộ chuyển mạch và bộ định tuyến để loại trừ những gói dữ liệu
từ bên ngoài vào hệ thống mạng nhưng lại khai báo là có nguồn gốc từ một
máy tính nằm trong hệ thống.
•
Kích hoạt các quy trình mật mã hóa trong bộ định tuyến để những máy tính
đã được xác nhận nhưng nằm ngoài hệ thống mạng có thể liên lạc một cách an
toàn với các máy tính nằm trong hệ thống.
•
Tắt những dịch vụ không cần thiết trên máy chủ.
•
Quản lý chặt chẽ các tài khoản người dùng và các điểm truy cập từ xa.
•
Bật tính năng ghi nhật ký, theo dõi và dò tại mạng.
• Thường xuyên cập nhật những phiên bản mới của các phần mềm.
15
Phần 2: CHƯƠNG TRÌNH MINH HỌA
(Chương trình quét cổng - Port scanning)
1. Cấu trúc mạng
Chúng ta biết rằng các máy tính chạy trên mạng Internet giao tiếp với nhau
thông qua hai giao thức TCP (Transmission Control Protocol) và UDP (User
Datagram Protocol). Mô hình mạng Internet có thể đựợc mô tả trong sơ đồ sau:
Hình 2.1: Mô hình mạng Internet
(1) Tầng ứng dụng (Application): Là các chương trình ứng dụng trên mạng.
(2) Tầng giao vận (Transport): Có nhiệm vụ cơ bản là tryền tin giữa hai điểm
giao tiếp trên mạng. Tại tầng này người ta sử dụng giao thức TCP hoặc UDP.
(3) Tầng mạng (Network): Có chức năng là tìm đường đi trên mạng, tại tầng
này với mạng Internet người ta sử dụng giao thức IP.
(4) Tầng liên kết (Link): Thực hiện việc kết nối máy tính với môi trường
mạng để có thể giao tiếp dữ liệu.
1.1. IP
IP là giao thức không tạo cầu nối (connectionless), thiếu tin cậy (unreliable) và
chuyển phát tổng lực (best-efort). Khi số liệu được đưa xuống lớp mạng, số liệu
được đóng thành gói. Một header được thêm vào gói tin như Hình 2.2, bao gồm
thông tin địa chỉ và các thông tin điều khiển khác:
16
• Version: Chỉ ra phiên bản hiện hành của IP đang được dùng; có 4 bit.
• IP header length (HLEN): Chỉ ra chiều dài của header theo các từ 32 bit.
• Type of service (TOS): Chỉ ra tầm quan trọng được gán bới một giao thức
lớp trên đặc biệt nào đó, có 8 bit.
• Total length: Chỉ ra chiều dài của toàn bộ gói tin tính theo byte, bao gồm dữ
liệu và header, có 16 bit.
• Identification: Chứa một số nguyên định danh cho datagram hiện hành, có
16 bit. Đây chính là chỉ số tuần tự.
• Flag: Có 3 bit, trong đó 2 bit có thức tự thấp điều khiển sự phân mảnh. Một
bít cho biết gói tin có thể bị phân mảnh hay không, bit kia cho biết gói có
phải là phân mảnh cuối cùng của chuỗi gói bị phân mảnh hay không.
• Fragment offset: Được dùng để ghép các mảnh datagram lại vói nhau, có
13bit.
• Time to live: Chỉ ra số bước nhảy (hop) mà một gói có thể đi qua.
• Protocol: Chỉ ra giao thức lớp trên sẽ tiếp nhận gói tin khi công đoạn xử lý
IP hoàn tất, như TCP hay UDP,…, có 8 bit.
• Header checksum: Giúp đảm bảo sự toàn vẹn của IP header, có 16 bit.
• Source address: Chỉ ra địa chỉ IP của node truyền datagram, có 32 bit.
• Destination address: Chỉ ra địa chỉ IP của node nhận, có 32 bit.
• Options: Cho phép IP hỗ trợ các tùy chọn khác nhau, chẳng hạn như bảo
mật, chiều dài thay đổi,….
• Padding: Các số 0 được bổ sung vào trường này để đảm bảo IP header luôn
là bội số của 32 bit.
• Data: Chứa thông tin của lớp trên, chiều dài thay đổi đến 64Kb.
17
Hình 2.2: Gói tin IP
1.2. TCP
TCP (Transmission Control Protocol) là một giao thức hướng kết nối, nó
cung cấp một đường truyền dữ liệu tin cậy giữa hai máy tính. Tính tin cậy thể
hiện ở việc nó đảm bảo dữ liệu được gửi sẽ đến được đích và theo đúng thứ tự
như khi nó được gửi. Hàm Send() và Receive() sẽ được sử dụng để gửi gói tin tới
đích và nhận gói tin quay trở lại từ đích.
Sau đây là các định nghĩa về các trường trong TCP segment (hình 2.3):
• Source port: Cổng mà gói tin đi ra.
• Destination port: Cổng mà gói tin đi đến.
• Sequence number: Chữ số được dùng để đảm bảo tuần tự chính xác của dữ
liệu đến.
• Acknowledgment number: TCP octet được mong đợi kế tiếp.
• HLEN: Số lượng các từ 32 bit trong header.
• Reserved: Tất cả các bit được bật thành 0.
• Code bit: Có các chức năng điều khiển như là thiết lập và kết thúc một phiên.
18
• Window: Số octet mà máy thu sẵn sàng chấp nhận.
• Checksum: Checksum được tính từ header và trường dữ liệu.
• Urgent pointer: Chỉ ra điểm kết thúc của dữ liệu chuẩn.
• Option: Một tùy chọn định ra kích thước tối đa hiện hành của TCP segment.
• Data: Dữ liệu giao thức của lớp trên.
Hình 2.3: Gói tin TCP
1.3. UDP
UDP (User Datagram Protocol) là giao thức không hướng kết nối, nó gửi các
gói dữ liệu độc lập gọi là datagram từ máy tính này đến máy tính khác mà không
đảm bảo việc dữ liệu sẽ tới đích. Không giống như TCP, vì ở đây một kết nối
chưa được tạo ra nên hàm SendTo() và ReceiveFrom() sẽ được dùng để gửi gói
tin tới đích và nhận gói tin quay trở lại.
skUdp.SendTo(bytesend, ep);
và
skUdp.ReceiveFrom(byterecv, ref ep);
Trong đó:
• bytesend: Gói tin gửi đi.
• byterecv: Gói tin nhận lại.
• ep: Địa chỉ đích.
19
Sau đây là định nghĩa các trường trong một UDP segment:
• Source port: Chữ số của port gọi.
• Destination port: Chữ số của port bị gọi.
• Length: Số byte trong header và trường dữ liệu.
• Checksum: Checksum được tính từ header và trường dữ liệu.
• Data: dữ liệu của giao thức lớp trên.
Hình 2.4: Gói tin UDP
1.4. ICMP
ICMP (Internet Control Message Protocol) là một giao thức thông báo lỗi của
IP. Khi quá trình truyền dữ liệu xảy ra lỗi thì ICMP được sử dụng để thông báo lỗi
cho nơi gửi dữ liệu.
Cấu trúc gói tin ICMP có dạng như hình 2.5
Hình 2.5: Gói tin ICMP
Trong đó:
• Type: Cho biết thông điệp nào của ICMP được gửi đi.
• Code: Cho biết chi tiết hơn về loại thông điệp ICMP.
• Checksum: Được sử dụng để kiểm tra lỗi cho dữ liệu.
20
• Identifier: Chứa một số nguyên định danh cho datagram hiện hành, có 16
bit.
• Sequence number: Chữ số được dùng để đảm bảo tuần tự chính xác của dữ
liệu đến.
• Optional data.
2. Chương trình quét cổng
Chương trình quét cổng sử dụng các kỹ thuật khác nhau dựa trên cơ sở mạng đã
có nhằm mục đích thu thập thông tin về một đích cụ thể nào đó. Nó có thể khám
phá chính xác những điểm yếu tồn tại bên trong đích đó. Một chương trình quét
cổng hữu ích cho cả việc bảo vệ và tấn công. Và để thực hiện thì phải hiểu rõ các
hoạt động truyền dữ liệu trên mạng.
2.1. Tạo Socket
Socket như một giao diện nằm giữa tầng ứng dụng và tầng khác trong mô
hình mạng OSI, có nhiệm vụ thực hiện việc giao tiếp giữa chương trình ứng dụng
với các tầng bên dưới của mạng.
Hình 2.3: Mô hình OSI rút gọn
Socket skUdp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Trong đó:
• AddressFamily.InterNetwork: Chỉ ra địa chỉ IP là version 4.
- Xem thêm -