Ngày nay, khi Internet được phổ biến rộng rãi ,các tổ chức đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy sinh là vi phạm ứng dụng của các ứng dụng web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau. Đôi khi cũng chỉ đơn giản là để thử tài hoặc đùa bởn với người khác.
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet, số lượng dịch vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy cập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập đến nhiều vấn đề bảo đảm và an toàn dữ liệu cho các máy tính kết nối vào mạng Internet.
Vì thế vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin doanh nghiệp, người dùng và bảo vệ hệ thống.
Tuy đã có nhiều cố gắng từ các nhà lập trình Web nhưng vẫn không thể đảm bảo ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mỹ, yếu tố tốc độ,…) nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong một vài khuôn khổ mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng.
Vì vậy, đề tài này được thực hiện với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật trong các ứng dụng Web.
65 trang |
Chia sẻ: nhungnt | Lượt xem: 4772 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Phương pháp tấn công vào trang web và cách phồng chống, xây dựng ứng dụng demo Sql Injection, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
MỞ ĐẦU
Ngày nay, khi Internet được phổ biến rộng rãi ,các tổ chức đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy sinh là vi phạm ứng dụng của các ứng dụng web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau. Đôi khi cũng chỉ đơn giản là để thử tài hoặc đùa bởn với người khác.
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet, số lượng dịch vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy cập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập đến nhiều vấn đề bảo đảm và an toàn dữ liệu cho các máy tính kết nối vào mạng Internet.
Vì thế vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet là cần thiết nhằm mục đích bảo vệ dữ liệu, bảo vệ thông tin doanh nghiệp, người dùng và bảo vệ hệ thống.
Tuy đã có nhiều cố gắng từ các nhà lập trình Web nhưng vẫn không thể đảm bảo ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng (chủ yếu chú trọng đến yếu tố thẩm mỹ, yếu tố tốc độ,…) nên dẫn đến nhiều khuyết điểm mới phát sinh. Sự tấn công không nằm trong một vài khuôn khổ mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng.
Vì vậy, đề tài này được thực hiện với mục đích tìm hiểu, phân tích các lỗ hổng bảo mật trong các ứng dụng Web.
* Mục tiêu và nhiệm vụ
- Tìm hiểu các vấn đề liên quan đến hoạt động của một ứng dụng Web.
- Tìm hiểu các kỹ thuật tấn công ứng dụng Web cơ bản như: XSS, Session, DOS.
- Tìm hiểu và nghiên cứu cụ thể kỹ thuật tấn công chèn câu truy vấn SQL Injection và các giải pháp phòng ngừa.
- Xây dựng ứng dụng Web Demo thể hiện các cách tấn công của kỹ thuật SQL Injection và đưa ra giải pháp fix các lỗ hổng trong chương trình.
- Kết quả thực hiện: nắm rõ bản chất và cách thức tấn công vào ứng dụng Web, áp dụng vào thực tế để hạn chế thấp nhất khả năng bị tấn công các ứng dụng Web sẽ triển khai.
* Đối tượng và phạm vi nghiên cứu
- Cở sở lý thuyết liên quan của hoạt động ứng dụng Web.
- Các mô hình tấn công đặc trưng vào ứng dụng Web.
- Kỹ thuật vượt qua cửa sổ đăng nhập.
- Kỹ thuật lợi dụng các câu lệnh Select, Insert.
- Kỹ thuật dựa vào các Stored Procedure.
- Các giải pháp phòng ngừa ở mức quản trị và người lập trình ứng dụng.
- Ngôn ngữ ASP.NET, SQL Server 2005.
* Phương pháp nghiên cứu
- Tổng hợp tìm hiểu, nghiên cứu từ các tư liệu liên quan.
- Phân tích, đánh giá các kỹ thuật tấn công. Đưa ra các giải pháp phòng ngừa ở các mức.
- Thiết kế table cơ sở dữ liệu, xây dựng ứng dụng Web Demo thể hiện các cách tấn công của SQL Injection.
* Ý nghĩa thực tiễn của đề tài
- Về mặt lý thuyết, đề tài thể hiện rõ các cách tấn công cơ bản thường được hacker sử dụng để tấn công vào các ứng dụng Web từ trước đến nay, và có thể sử dụng tiếp trong thời gian dài trong tương lai.
- Về mặt thực tiển, với các cách tấn công của hacker như đã tìm hiểu, nghiên cứu trong báo cáo này, nếu áp dụng tốt các phương pháp phòng ngừa trong đề tài nêu ra sẽ góp phần nâng cao khả năng bảo vệ các ứng dụng Web trước nguy cơ tấn công của kẽ xấu.
* Bố cục của báo cáo đồ án tốt nghiệp
Báo cáo tốt nghiệp được chia thành 3 chương:
- Chương 1: TỔNG QUAN VỀ WEB VÀ CÁC NGUY CƠ TẤN CÔNG ỨNG DỤNG WEB
- Chương 2: MỘT SỐ PHƯƠNG PHÁP TẤN CÔNG VÀO TRANG WEB VÀ CÁCH PHỒNG CHỐNG
- Chương 3: XÂY DỰNG ỨNG DỤNG DEMO SQL INJECTION
CHƯƠNG 1
TỔNG QUAN VỀ WEB VÀ CÁC NGUY CƠ TẤN CÔNG ỨNG DỤNG WEB
1.1 TỔNG QUAN VỀ WEB
1.1.1 Khái niệm ứng dụng Web
Ứng dụng Web là một ứng dụng chủ, khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác.
Trình khách dành cho người sử dụng thường là một trình duyệt web như Internet Explorer hay Netscape Navigator. Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động. Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web. Các chương trình có thể là các trang trao đổi mua bán, các diển đàn ,gửi nhận e-mial…
Tốc độ phát triển của các kỹ thuật xây dựng ứng dụng web cũng phát triển rất nhanh. Trước đây những ứng dụng web thường được xây dựng bằng CGI (Common Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở dữ liệu đơn giản trên cùng máy chủ. Ngày nay, ứng dụng web thường được viết bằng Java và chạy trên máy chủ phân tán, kết nối đến nhiều nguồn dữ liệu.
Dù có nhiều biến thể, một ứng dụng Web thông thường được cấu trúc như một ứng dụng ba lớp:
Hình 1.1 Một số ứng dụng web thường có kiến trúc
Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể có thêm các ứng dụng tạo bố cục cho trang web.
Lớp ứng dụng: Là nơi xử lý các ứng dụng web. Nó sẽ xử lý thông tin người dùng yêu cầu, đưa ra quyết định, gửi kết quả đến “lớp trình bày” lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, NET, PHP hay ColdFusion, được triển khai trên các trình chủ như IBM WebSphere, WebLogic, Apache, IIS…
Lớp dữ liệu : thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng.
Hình 1.2 Mô hình hoạt động của một ứng dụng Web
Kiến trúc một ứng dụng Web
Trong đó :
Trình duyệt: Internet Explorer, Nétcap Navigator
Trình chủ : Apache, IIS….
Hệ quản trị cơ sỡ dữ liệu : SQL, Server, MySQL, DB2, Access…
Bên cạnh đó, một gải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa, nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng vì chức năng chính của firewall là kiểm soát luồng thông tinh giữa các máy tính. Có thể xem là firewall như một bộ lộc thông tin, nó xác định cho phép một máy tính này được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không.
Người ta thường dùng firewall vào mục đích:
Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài.
Cho phép hoặc cấm những dịch vụ từ ngoài truy nhập vào trong.
Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
1.1.2 Các vấn đề liên quan đến ứng dụng Web
1.1.2.1 Nguồn gốc phát triển ứng dụng Web
Các ứng dụng Web được phát triển từ nhiều nguồn khác nhau, nên các lỗ hổng, các lỗi bảo mật cũng rất đa dạng. Tuy vậy, các ứng dụng Web chủ yếu được phát triển từ các nguồn chính sau đây:
Người lập trình tự phát triển ứng dụng Web (Sử dụng các ngôn ngữ kịch bản để tạo ứng dụng, phát triển rộng rãi mà ít quan tâm đến quá trình phát triển ứng dụng an toàn. Thiếu đội ngũ lập trình với kỹ năng nhận biết phát triển ứng dụng tránh các lỗi bảo mật).
Sử dụng ứng dụng Web từ mã nguồn mở (Thường không theo dõi và cập nhật các bản vá lỗi bảo mật).
Phát triển ứng dụng Web từ một ứng dụng mở khác (Trường hợp này thường không kiểm tra lỗi bảo mật ứng dụng củ trước khi phát triển tiếp, nên vẫn tồn tại các lỗi bảo mật).
1.2.1.2 Sự phát triển đa dạng của ứng dụng Web
Ngày nay với sự phát triển không ngừng của Internet, các ứng dụng Web cũng phát triển đa dạng trên nhiều lĩnh vực: Cổng thông tin điện tử, báo tin tức điện tử, giao dịch tài chính ngân hàng, thị trường chứng khoán, trang thông tin điện tử doanh nghiệp,…
1.1.3 Mô tả hoạt động của ứng dụng Web
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST….của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như: C,C++,java… hoặc trình chủ yêu cầu bộ diển dịc thực thi các trang ASP, JSP…theo yêu cầu của trình khách.
Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán kết nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gữi đến… và từ đó trả về cho trình khách 1 luồng dữ liệu cố định dạng theo giao thức HTTP nó gồm 2 phần:
Header mô tả các thông tin về gói dữ liệu và thuộc tính, trạng thái trao đổi giữa trình duyệt và WebServer.
Body là phần nội dung dữ liệu mà Server gữi về Client,nó có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì.
Theo mô hình ở hình với firewall, luồng thông tin giữa trình chủ và trình khách là luồng thông tin hợp lệ. Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng dụng Web thì firewall không còn hữu dụng trong việc ngăn chặn hacker này. Do đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những sơ suất (hay lổ hổng) trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là tấn công trực tiếp và hệ thống mạng, hệ điều hành. Tuy nhiên, hacker cũng có thể lợi dụng các lổ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không liên quan khác.
1.2 CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN
1.2.1 Hacker
Hacker là một thuật ngữ dùng để chỉ những chuyên gia về máy tính. Hacker không tạo ra các kẻ hở cho hệ thống, nhưng hacker lại là những người am hiểu về hệ điều hành, hệ quản trị dữ liệu, các ngôn ngữ lập trình…. Họ sử dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng của hệ thống mạng.
Một số hacker chỉ dừng lại việc phát hiện và thông báo lổi tìm được cho những nhà bảo mật hay người phát triển chương trình, họ được xem như là WhiteHat (Hacker mũ trắng). Một số Hacker dựa vào lỗ hổng thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người này bị xem như là BlackHat (Hacker mũ đen).
1.2.2 Giao thức HTTP và HTTPS
HTTP là chữ viết tắt từ HyperText Transfer Protocol (giao thức truyền tải siêu văn bản). Nó là giao thức cơ bản mà World Wide Web sử dụng. HTTP xác định cách các thông điệp (các file văn bản, hình ảnh đồ hoạ, âm thanh, video,…) được định dạng và truyền tải ra sao, và những hành động nào mà các Web server và các trình duyệt Web phải làm để đáp ứng các lệnh. Khi gõ một địa chỉ Web URL vào trình duyệt Web, một lệnh HTTP sẽ được gửi tới Web server để ra lệnh và hướng dẫn nó tìm đúng trang Web được yêu cầu và kéo về mở trên trình duyệt Web.
Tóm lại, HTTP là giao thức truyền tải các file từ một Web server vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên Internet. HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet).
HTTP header là phần đầu (header) của thông tin mà trình khách và trình chủ gữi cho nhau. Những thông tin của trình khách gữi cho trình chủ được gọi là HTTP requests (yêu cầu) còn trình chủ gữi cho trình là HTTP responses (trả lời). Thông thường một HTTP header gồm nhiều dòng, mỗi dòng dựa trên tham số và giá trị. Một số tham số có thể dùng trong cả header yêu cầu và header trả lời, còn số khác chỉ được dùng riêng trong từng loại.
GET /tintuc/homnay.asp HTTP/1.1
Accept: */*
Accept-Language: en-us
Connection: Keep-Alive
Host: localhost
Referer:
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Accept-Encoding: gzip, deflate
Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP .
Tiếp theo là các tham số. Chẳng hạn như :
Accept Language: cho biết ngôn ngữ dùng trong trang web.
Host: cho biết địa chỉ của máy chủ.
Referer: Cho biết địa chỉ của trang web tham chiếu tới.
Header của HTTP request sẽ kết thúc bằng một dòng trống.
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Thu, 13 Jul 2000 05:46:53 GMT
Content-Length: 2291
Content-Type: text/html
Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ;
path=/
Cache-control: private
...
Dòng đầu là dòng trạng thái, để cho biết phiên bản HTTP được dùng, mã trạng thái (200) và trạng thái (OK) Tiếp theo là các tham số. Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo là phần thân của HTTP response.
HTTPS (Securety HTTP), là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo mật trên Internet. Các kết nối HTTPS thường được sử dụng cho các giao dịch thanh toán trên World Wide Web và cho các giao dịch nhạy cảm trong các hệ thống thông tin công ty, trong đó dữ liệu cần phải được an toàn. HTTPS không nên nhầm lẫn với Secure HTTP (S-HTTP) quy định trong RFC 2660.
Theo hai khái niệm ở trên, ta có thể thấy nếu trang Web có địa chỉ bắt đầu bằng “ http:// ” thì có nghĩa rằng trang Web không an toàn. Nói cách khác, một người nào đó có thể nghe lén những gì trao đổi với trang Web và có thể lấy những dữ kiện gửi đi từ máy của bạn đến trang Web như tên tuổi, địa chỉ, số thẻ tín dụng,… Nhưng nếu địa chỉ của trang Web bắt đầu bằng “https:// ” thì điều này có nghĩa là liên lạc an toàn với server của trang Web và người ta không thể nghe lén và trộm những thông tin gửi đi.
1.2.3 Session
HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTP không lưu trạng thái làm việc giữa trình duyệt với trình chủ. Sự thiếu sót này đã gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết được trước đó trình duyệt đã có những trạng thái nào. Vì thế để giải quyết vấn đề này, ứng dụng web đưa ra một khái niệm phiên làm việc(Session). Còn SessionID là một chuỗi để chứng thực phiên làm việc. Một số trình chủ sẽ cung cấp một SessionID cho người dùng khi họ xem trang web trên trình chủ.
Để duy trì phiên làm việc thì SesionID thường được lưu vào:
Biến trên URL
Biến ẩn form
Cookie
Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được cấu hình quy định tại trình chủ hay với ứng dụng thực thi. Trình chủ sẽ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống.
1.2.4 Cookie
Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa trình chủ và trình duyệt giữa người dùng.
Các Cookie được lưu trữ dưới dạng file dữ liệu nhỏ dạng text, được ứng dụng tạo ra để lưu trữ, truy tìm, nhận biết các thông tin về người dùng đã ghé thăm trang web và những vùng họ đi qua trong trang. Những thông tin này có thể bao gồm tên, định dạng người dùng, mật khẩu, sở thích, thói quen.. cookie được trình duyệt của người dùng chấp nhận lưu trên đĩa cứng của máy mình, tuy nhiên không phải lúc nào trình duyệt cũng hỗ trợ cookie, mà còn tùy thuộc vào người dùng có chấp nhận chuyện lưu trữ đó hay không.
Ở những lần truy cập sau đến trang web đó, ứng dụng có thể dùng lại những thông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo Messenger..) mà người dùng không phải làm lại những thao tác đăng nhập hay phải cung cấp lại các thông tin khác.
Persistent và Secure
Persistent và Non-Secure
Non-Persistent và Secure
Non-Persistent và Non-Secure
Persistent cookie được lưu trữ dưới dạng tập tin.txt (ví dụ trình duyệt Nestcape Navigator sẽ lưu các cookie thành một tập tin cookie.txt còn Internet Explorer sẽ lưu thành nhiều tập tin *.txt trong đó mỗi tập tin là một cookie) trên máy khách trong một khoảng thời gian xác định.
Non-persistent cookie thì được lưu trữ trên bộ nhớ RAM của máy khách và sẽ bị hủy khi đóng trang Web hay nhận được lệnh từ trang web.
Secure cookie chỉ có thể được gửi thông tin qua HTTPS (SSL).
Non-Secure cookie có thể được gữi bằng hai giao thức HTTPS hay HTTP. Thực chất là đố với sercure cookie thì trình chủ sẻ cung cấp chế độ truyền bảo mật.
Các thành phần của một cookie gồm :
Domain
Flag
Path
Secure
Expiration
Name
Value
www.redhat.com
FALSE
FALSE
1154029490
Apache
64.3.40.151.16
018996349247 409
Domain: Tên miền của trang web đã tạo cookie (ví dụ trên là www.redhat.com)
Flag: Mang giá trị TRUE/FALSE-Xác định các máy khác với cùng tên miền có được truy xuất đến cookie hay không.
Path: Phạm vị các địa chỉ có thể truy xuất cookie. Ví dụ : Nếu path là”/tracuu”thì các địa chỉ trong thư mục /tracuu cũng như tất cả các thư mục con của nó như /tracuu/baomat có thể truy xuất đến cookie này. Còn nếu giá trị là “/” thì cookie có thể truy xuất đến tất cả địa chỉ thuộc miền trang web tạo cookie.
Secure: Mang giá trị TRUE/FALSE. Xác định đây là một secure cookie hay không nghĩa là kết nối có sử dụng SSL hay không.
Expiration: Thời gian hết hạn của cookie, đực tính bằng giây kể từ 00:00:00 giờ GMT ngày 01/01/1970. Nếu giá trị này không được thiết lập thì trình duyệ sẽ hiểu đây là non-persistent cookie và chỉ lưu trong bộ nhớ RAM và sẽ xóa nó khi trình duyệt bị đóng.
Name: Tên biến (trong trường hợp này là Apache)
Value: Với cookie được tạo ở trên thì giá trị của Apache là 64.3.40.151. 16018996349247480 và ngày hết hạn là 27/07/2006, của tên miền
Máy trạm có thể lưu tối đa là 300 cookies. Kích thước tối đa của cookie là 4kb. Số cookie tối đa cho một tên miền là 20 cookie. Các máy chủ không mong máy trạm vượt quá những giới hạn này. Khi giới hạn 300 cookie hoặc 20 cookie mỗi tên miền của máy chủ bị vượt quá, máy trạm sẽ xoá cookie được sử dụng ít nhất.
1.2.5 Proxy
Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặc biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host. Những chương trình client của người sử dụng sẽ qua trung gian proxy server thay thế cho server thật sự mà người sử dụng cần giao tiếp.
Proxy server cần xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng như trả lời server đến client. Vì vậy proxy server giống cầu nối trung gian giữa server và client.
1.2.6 Firewall
Một giải pháp dùng để bảo vệ một hệ thống mạng thường được sử dụng là bức tường lửa - Firewall (hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử dụng). Nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính. Có thể xem firewall như một bộ lọc thông tin, nó xác định và cho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này có được truy xuất đến mạng kia hay không.
Người ta thường dùng firewall vào mục đích:
Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài.
Cho phép hoặc cấm những dịch vụ từ bên ngoài truy nhập vào trong.
Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập.
1.3 SƠ LƯỢC VỀ QUÁ TRÌNH TẤN CÔNG CỦA HACKER
1.3.1 Các giai đoạn tấn công
Quá trình tấn công của một hacker có thể được khái quát qua 3 giai đoạn:
Thu thập thông tin.
Phân tích và hành động.
Dừng và xoá dấu vết.
Hình 1.3 Quá trình tấn công của hacker
Giai đoạn 1: Thu thập thông tin
Gồm 3 bước chính FootPrinting, Scanning, Enumeration.
FootPrinting (In dấu chân): Là bước mà kẻ tấn công thu thập thông tin về đối tượng, người dùng, doanh nghiệp, các chi nhánh của công ty, máy chủ,… bao gồm các chi tiết Domain Name, Địa chỉ IP, Networking Prototcols, thông tin về người quản trị,…Đây là một bước quan trọng cho hacker ,đôi khi với những thông tin này hacker đã có thể làm chủ hệ thống. Công cụ hỗ trợ: Nslookup, Smart Whois, UseNet, Google Earth, Search engines (công cụ tìm kiếm), http:// www. archive. org
Sanning (Quét thăm dò mạng): Phần lớn thông tin quan trọng từ server có được từ bước này. Xác định hệ điều hành, xác định hệ thống có đang chạy không, tìm hiểu các dịch vụ đang chạy hay đang lắng nghe, tìm hiểu các lỗ hổng, kiểm tra các cổng, xác định các dịch vụ sử dụng giao thức TCP và UDP,... Công cụ hổ trợ như LANGuard, xScan, NetScanToolsiNetToolsNmap.
Enumeration (Điểm danh mạng - liệt kê tìm lỗ hổng): Đến đây, các attacker bắt đầu kiểm soát server sơ bộ. Bước này là tìm kiếm những tài nguyên được bảo vệ kém, hoặc tài khoản người dùng mà có thể sử dụng để xâm nhập, bao gồm các mật khẩu mặc định, các script và dịch vụ mặc định. Rất nhiều người quản trị mạng không biết đến hoặc không sửa đổi lại các giá trị này của thiết bị. Công cụ hỗ trợ: DumpSec, NbtScan, SuperScan, NetviewX, UserInfo,…
Giai đoạn 2: Phân tích và