2. Mô hình kiến trúc loggic của Honeynet
2.3. Modul phân tích dữ liệu
2.3.1. Vai trò
Vai trò của module phân tích dữ liệu trong Honeynet nhằm hỗ trợ người phân thích thực hiện việc sàng lọc, thu gọn dữ liệu nhằm loại bỏ những dữ liệu dư thừa, để dễ dàng tìm ra mối tương quan giữa các dữ liệu nhằm phát hiển ra vấn đề trọng tâm cần phần tích (như dữ liệu liên quan đến quá trình tấn công, xâm nhập hay hoạt động bất hợp pháp của hacker). Hỗ trợ phân tích dữ liệu thu nhận được nhằm đưa ra: kỹ thuật, công cụ và mục đích tấn công của hacker. Từ đó giúp người quản trị đưa ra các biện pháp phòng chống kịp thời.
Đối với hệ thống Honeynet, nếu kẻ tấn công sử dụng Kỹ thuật tấn công mới hay công cụ tấn công mới thì Honeynet lưu giữ lại toàn bộ các dữ liệu về quá trình thực hiện tấn công này của Hacker. Do đó, người quản trị có thể sử dụng các dữ liệu này để phân tích và đưa ra cơ chế, mục đích, công cụ, phương pháp của cuộc tấn công thậm chí có thể xây dựng các mẫu tấn công mới để cập nhật cho hệ thống IDS giúp cho IDS phát hiện ra tấn công mới này nếu tiếp tục gặp lại ở lần sau.
Honeyney cung cấp cho chúng ta một số công cụ như Hflow, Walleye để hỗ trợ người quản trị dễ dàng phân tích, tìm ra cơ chế, mục đích, công cụ và phương pháp tấn công của hacker.
2.3.2. Cơ chế phân tích dữ liệu
Honeynet hỗ trợ hai công cụ sau để thực hiện quá trình phân tích dữ liệu : * Một là Hflow: có khả năng tự động kết hợp dữ liệu
* Hai là Walleye: có khả năng báo cáo, thống kê thông qua giao diện web thân thiện với người dùng.
Cả hai công cụ này đều được tích hợp sẵn trên Honeywall. Dưới đây là Sơ đồ kiến trúc Honeywall :
Hình 2.15 - Sơ đồ kiến trúc Honeywall
Theo sơ đồ kiến trúc này thì quá trình Hflow và Walleye thực hiện phân tích dữ liệu như sau :
Hflow:
Hflow có nhiệm vụ kết hợp dữ liệu từ module thu nhận dữ liệu gửi về, chuẩn hóa dữ liệu sau đó lưu vào cơ sở dữ liệu (ở đây là My SQL).
Hflow tự động xác định :
- Hệ điều hành khởi tạo kết nối mạng. - Sự kiện IDS liên quan đến kết nối mạng.
- Sự kiện IDS liên quan đến tiến trình và người dùng trên Honetpot. - Danh sách các tệp liên quan đến cuộc tấn công.
Walleye :
Walleye có nhiệm vụ lấy dữ liệu thu thập được đã được Hflow chuẩn hóa trong Cơ sơ dữ liệu để cung cấp cho người phân tích thông qua giao diện web.Nhờ vậy, mà người phân tích có thể nắm được khung cảnh chung các hoạt động hệ thống, nắm được chi tiết các hoạt động trong mạng.
Dưới đây là giao diện của Walleye:
Hình 2.16 - Giao diện của Walleye
Tóm lại : Module này có nhiệm vụ hỗ trợ người phân thích thực hiện việc sàng
lọc, thu gọn dữ liệu nhằm loại bỏ những dữ liệu dư thừa, hỗ trợ phân tích dữ liệu thu nhận được nhằm đưa ra: kỹ thuật, công cụ và mục đích tấn công của hacker. Từ đó giúp người quản trị đưa ra các biện pháp phòng chống kịp thời.
Kết luận: Ở chương này, Chuyên đề đã trình bày về mô hình kiến trúc và nguyên lý hoạt
động của Hệ thống Honeynet. Qua đó, giúp chúng ta hiểu sâu hơn về quá trình làm việc, hoạt động của Honeynet.
Chương III – MỘT SỐ KỸ THUẬT TẤN CÔNG DỊCH VỤ WEB
Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đề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à khi phạm vi ứ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 các 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 nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến 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.
Có 64,2 triệu lượt máy tính tại Việt Nam bị nhiễm virus là tổng kết năm 2011 từ Hệ thống giám sát virus của Bkav. Trung bình một ngày đã có hơn 175 nghìn máy tính bị nhiễm virus. Năm 2011, đã có 38.961 dòng virus xuất hiện mới, lây lan nhiều nhất là virus W32.Sality.PE. Virus này đã lây nhiễm trên 4,2 triệu lượt máy tính.
Ngay ở Việt Nam ta, theo bản tổng kết tình hình an ninh mạng tại Việt Nam trong năm 2007 của Trung tâm An ninh mạng BKIS cho thấy : Việt Nam có 342 Website bị tấn công, trong đó có 118 Website do Hacker trong nước và 224 website là do Hacker nước ngoài thực hiện. Và gần đây nhất là vụ tấn công website và đoạt tên miền của Công ty chuyên cung cấp hosting Pavietnam, đã khiến cho không chỉ riêng Website của công ty này mà còn ảnh hưởng tới hàng nghìn website của các công ty khác đã thuê hosting ở PAvietnam.
Năm 2011 là năm của các cuộc tấn công mạng. Liên tiếp xảy ra các cuộc tấn công với các hình thức khác nhau vào hệ thống của các tổ chức, doanh nghiệp tại Việt Nam. Có những cuộc tấn công xâm nhập trái phép phá hoại cơ sở dữ liệu hoặc deface các website. Cũng có những cuộc tấn công DDoS làm tê liệt hệ thống trong thời gian dài. Tấn công cướp tên miền của các doanh nghiệp cũng đã diễn ra liên tiếp. Nguy hiểm hơn, đã xuất hiện nhiều cuộc tấn công âm thầm, cài đặt các virus gián điệp đánh cắp tài liệu của các cơ quan quan trọng.
Các vụ tấn công xảy ra phần lớn có nguyên nhân từ nhận thức của lãnh đạo các cơ quan, doanh nghiệp về tầm quan trọng của an ninh mạng, dẫn đến sự đầu tư dàn trải, thiếu một giải pháp tổng thể cho an toàn an ninh hệ thống.
Đáng chú ý trong năm 2011 là sự việc hơn 85.000 máy tính tại Việt Nam bị cài virus Ramnit để lấy cắp dữ liệu quan trọng. Điều này cho thấy các cuộc tấn công còn có thể gây ảnh hưởng đến an ninh quốc gia. Không chỉ tại Việt Nam, hệ thống botnet này còn được hacker điều khiển thông qua nhiều máy chủ đặt ở Mỹ, Nga, Đức và Trung Quốc để lấy cắp thông tin trên toàn cầu. Đây là tình trạng phổ biến trên thế giới trong năm 2011.
Theo như tổ chức Web Hacking Incident Database đưa ra số liệu cho năm 2011(WHID) cho thấy tồn tại rất nhiều phương pháp tấn công khác nhau, Nhưng SQL Injection và XSS là phổ biến nhất. Có đến 18,87% là các cuộc tấn công nhằm vào lỗ hổng SQL Injection, 12,58% là XSS. Ngoài ra còn có 8.06% là tấn công từ chối dịch vụ và rất nhiều các cuộc tấn công khác.
Hình 2 17 – Cách phương thức tấn công năm 2011
Trong phạm vi của Đồ án “Nghiên cứu Hệ thống Honeypot, Honeynet nhằm mục đích thu thập các kỹ thuật tấn công dịch vụ Web”, chương này sẽ trình bày một số kỹ thuật tấn công dịch vụ web phổ biến hiện nay để chúng ta có thể dễ dàng hiểu, nhận ra
được các kỹ thuật, các thủ thuật tấn công web khi Hacker tấn công vào Hệ thống Honeynet của chúng ta. Qua đó, chúng ta đưa ra các biện pháp phòng chống, bảo vệ cho dịch vụ web.
1. Các kỹ thuật tấn công cơ bản.
1.1. Các nguy cơ mất an toàn dịch vụ web
Dưới đây là giới thiệu sơ lược các nguy cơ mất an toàn, các kĩ thuật tấn công Web đã được phân loại dựa trên mức độ gây tác hại đối với ứng dụng, với người dùng.
1.1.1. Chiếm hữu phiên làm việc (Session Mangement)
Kỹ thuật này được chia làm hai loại :
1.1.1.1. Ấn định phiên làm việc( Session Fixation)
Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằng cách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhập vào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trở thành người dùng hợp lệ.
1.1.1.2. Đánh cắp phiên làm việc (Session Hijacking)
Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ sau khi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họ được lưu trữ trong cookie hay tham số URL, biến ẩn của form.
1.1.2. Lợi dụng việc thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ (Input validation)
Hacker lợi dụng những ô nhập dữ liệu để gửi đi một đoạn mã bất kì khiến cho hệ thống phải thực thi đoạn lệnh đó hay bị phá vỡ hoàn toàn.
1.1.2.1. Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt (Client-Side validation)
Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript..) đuợc thực thi trên trình duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểm tra.
1.1.2.2. Tràn bộ đệm (Buffer OverFlow)
Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay vào đó
phải thực thi một đoạn mã bất kì do hacker đưa vào hệ thống. Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên hệ thống.
1.1.2.3. Vượt qua đường dẫn (Path Traversal)
Là phương pháp lợi dụng đường dẫn truy xuất một tập tin trên URL để trả kết quả về cho trình duyệt mà hacker có thể lấy được nội dung tập tin bất kì trên hệ thống.
1.1.2.4. Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross- Site Scripting)
Đây là kĩ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính của người dùng hơn là vào hệ thống máy chủ. Bằng cách thêm một đoạn mã bất kì ( thường được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…), hacker có thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đó trở thành người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắp này. Cross-Site scripting cũng là một kiểu tấn công “session hijacking”.
1.1.2.5. Chèn câu truy vấn SQL (SQL Injection)
Trong lập trình với cơ sở dữ liệu, người lập trình đã sai sót trong vấn đề kiểm tra giá trị nhập vào để từ đó hacker lợi dụng thêm vào những câu truy vấn hay những giá trị không hợp lệ để dễ dàng đăng nhập vào hệ thống.
1.1.3. Từ Chối Dịch Vụ (Denial of service (DoS)
Một khối lượng lớn yêu cầu được gửi cho ứng dụng trong một khoảng thời gian nhất định khiến hệ thống không đáp ứng kịp yêu cầu dẫn đến hệ thống bị phá vỡ.
Vì khuôn khổ và thời gian của Đồ án là có hạn nên Đồ án chỉ thực hiện tìm hiểu một số kĩ thuật tấn phổ biến và có khả năng phá hoại một hệ thống mạng với mức độ cao. Và trong các chương ở phần thứ hai, luận văn sẽ trình bày kĩ hơn từng kĩ thuật sau :
•Tấn công SQL Injection
•Tấn công Cross-site Scripting (XSS)
•Tấn công Từ chối dịch vụ (DoS)
1.2. Tấn công SQL Injection 1.2.1. Khái niệm SQL Injection
Khi triển khai các ứng dụng web trên internet, nhiều người vẫn nghĩ rằng việc đảm bảo an toàn, bảo mật nhằm giảm thiểu tối đa khả năng bị tấn công bởi các tin tặc chỉ đơn thuần tập trung vào các vấn đề như chọn hệ điều hành, hệ quản trị cơ sở dữ liệu,
webserver để chạy ứng dụng …mà quên mất rằng ngay cả bản thân ứng dụng chạy trên đó cũng tiềm ẩn lỗ hổng bảo mật rất lớn. Một trong các lỗ hổng này là SQL Injection. Tại Việt Nam, đã qua thời kỳ các quản trị website lơ là việc quét virus, cập nhật các bản vá lỗi từ các phần mềm hệ thống nhưng việc chăm sóc các lỗi của các ứng dụng lại rất ít được quan tâm. Đó là lý do vì sao trong thời gian vừa qua, không ít các website tại Việt Nam bị tấn công và đa số đều là SQL Injection. Vậy SQL Injection là gì?
SQL injection là một kĩ thuật cho phép những kẻ tấn công ( Hacker) lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" và thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất tai hại cho phép những kẻ tấn công chiếm quyền kiểm soát web. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase.
Về bản chất, đây là lỗi tồn tại trong Các hệ quản trị cơ sở dữ liệu ( SQL server, MySQL, Oraccle ….). Tuy nhiên, chúng ta có thể khắc phục lỗi này bằng cách kiểm tra dữ liệu được nhập vào trên ứng dụng Web.
1.2.2. Các dạng tấn công thường gặp
1.2.2.1. Dạng tấn công vượt qua kiểm tra đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web.Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp. Trong trường hợp này, người ta có thể dùng hai trang, một trang HTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí thông tin nhập từ phía người dùng.
Ví dụ:
login.htm
Username: <input type="text" name="fUSRNAME"><br>
Password: <input type="password" name="fPASSWORD"><br> <input type="submit">
</form>
execlogin.asp
<%
Dim vUsrName, vPassword, objRS, strSQL vUsrName = Request.Form("fUSRNAME") vPassword = Request.Form("fPASSWORD")
strSQL = "SELECT * FROM T_USERS " & _"WHERE USR_NAME=' " & vUsrName & _ " ' and USR_PASSWORD=' " & vPassword & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..."
If (objRS.EOF) Then
Response.Write "Invalid login." Else
Response.Write "You are logged in as " & objRS("USR_NAME") End If
Set objRS = Nothing %>
Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất cứ một lỗ hổng về an toàn nào. Người dùng không thể đăng nhập mà không có tên đăng nhập và mật khẩu hợp lệ. Tuy nhiên, đoạn mã này thực sự không an toàn và là tiền đề cho một lỗi SQL injection.
Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng được dùng để xây dựng trực tiếp câu lệnh SQL. Chính điều này cho phép những kẻ tấn công có thể điều khiển câu truy vấn sẽ được thực hiện.
Ví dụ: nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu username/password của trang login.htm là: ' OR ' ' = ' '.
Lúc này, câu truy vấn sẽ được gọi thực hiện là:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and USR_PASSWORD= '' OR ''=''
Câu lệnh so sánh trên luôn luôn đúng (vì ‘’ luôn bằng ‘’). Do đó câu điều kiện trong mệnh đề WHERE luôn đúng. Giá trị tên người sử dụng của dòng đầu tiên trong bảng sẽ được chọn.Như vây, câu truy vấn này là hợp lệ và sẽ trả về tất cả các bản ghi của T_USERS và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ.
Ngoài ra, trong chuỗi SQL-injection được tiêm vào thường chứa chứa các kí tự
đặc biệt của SQL :
• kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn
• kí tự “--” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng
Một ví dụ khác sử dụng kí tự đặc biệt SQL để thâm nhập vào hệ thống như sau:
Username: admin’-- Password:
Câu lệnh SQL như sau:
SELECT tkUsername FROM User WHERE tkUsername= ‘admin’-- AND