Một ứng dụng web thường có kiến trúc gồm: Hình 1.1: Kiến trúc một số ứng dụng web thông thường 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ể
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN
THÔNG -
Nguyễn Thu Hương
NGHIÊN CỨU CÁC DẠNG TẤN CÔNG ỨNG
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS TRẦN VIỆT HƯNG
Phản biện 1: ………
Phản biện 2: ………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc
sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3LỜI MỞ ĐẦU
Việc thiếu quan tâm và đầu tư nhất định đến hệ thống an ninh, bộ phận chuyên trách dẫn đến các vụ tấn công vào các website rất dễ xảy ra Điều này cũng đồng nghĩa với việc những nội dung dữ liệu của các đơn vị có nguy cơ bị mất là rất lớn khi an ninh mạng không được đảm bảo Vậy chúng ta cần phải làm gì để tăng cường khả năng phòng, chống các nguy cơ tấn công vào các website
và biện pháp ngăn chặn, khắc phục kịp thời các sự cố này
Việc đi sâu tìm hiểu về các dạng tấn công vào các website sẽ giúp cho chúng ta hiểu hơn về những lổ hổng trong công tác quản lý website, qua đó đưa ra những giải pháp giúp các nhà quản lý có những biện pháp khắc phục, ngăn chặn sự thâm nhập từ bên ngoài, cũng như vai trò quan trọng trong việc triển khai ứng dụng những công nghệ mới an toàn và bảo mật hơn Chính vì vây, tôi đã chọn đề tài “Nghiên cứu các dạng tấn công ứng dụng web
và giải pháp phòng chống” làm đề tài luận văn của mình
Trang 4Chương 1 - TỔNG QUAN VỀ WEB VÀ CÁC DẠNG TẤN CÔNG ỨNG DỤNG WEB
1.1 Tổng quan về web và an ninh web
1.1.1 Tìm hiểu về website và cách hoạt động
Website là một tập hợp các trang web (web pages) bao gồm văn bản, hình ảnh, video, flashv.v thường chỉ nằm trong một tên miền (domain name) hoặc tên miền phụ (subdomain) Trang web được lưu trữ ( web hosting) trên máy chủ web (web server) có thể truy cập thông qua Internet
1.1.2 Tìm hiểu về ứng dụng web
1.1.2.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 Firefox 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-mail…
Trang 5Một ứng dụng web thường có kiến trúc gồm:
Hình 1.1: Kiến trúc một số ứng dụng web thông thường
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
Trang 6Quá trình hoạt động bắt đầu với yêu cầu được tạo
ra từ người dùng trên trình duyệt, gửi qua Internet tới trình chủ Web ứng dụng (Web application Server) Web ứng dụng truy cập máy chủ chứa cơ sở dữ liệu để thực hiện nhiệm vụ được yêu cầu: cập nhật, truy vấn thông tin đang nằm trong cơ sở dữ liệu Sau đó ứng dụng Web gửi thông
tin lại cho người dùng qua trình duyệt
1.1.2.2 Mô hình hoạt động của một ứng dụng web
Hình 1.3: Mô hình hoạt động của một ứng dụng web
Trình khách ( hay còn gọi là trình duyệt): Internet Explorer, Firefox
Trình chủ: Apache, IIS, …
Hệ quản trị cơ sở dữ liệu: SQL Server, MySQL, DB2, Access…
Trang 7Hoạt động của một ứng dụng web:
Trình duyệt : gửi một yêu cầu (request) đến trình chủ thông qua các lệnh cơ bản GET, POST của giao thức HTTP
Trình chủ :
Thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++…
Yêu cầu bộ diễn dịch thực thi các trang ASP, JSP…
Trình chủ trả về cho trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP gồm 2 phần:
Header: Header mô tả các thông tin về gói
dữ liệu và các 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ì
1.1.2.3 Một số ứng dụng web
Ứng dụng dựa trên web là các chương trình được thiết kế để được sử dụng hoàn toàn trong trình duyệt Sử
Trang 8dụng ứng dụng, chúng ta có thể làm những việc như tạo tài liệu, chỉnh sửa ảnh và nghe nhạc… mà không phải cài đặt phần mềm phức tạp
Calendar (lịch trình)
Ưu điểm của các ứng dụng trên web
Ứng dụng web có các ưu điểm sau so với ứng dụng dành cho máy tính để bàn:
Cài đặt ứng dụng dễ dàng, nhanh chóng: Nhiều ứng
dụng sẵn có trên mạng chỉ bằng một cú nhấp chuột, thậm chí không phải khởi động lại trình duyệt hoặc máy tính của mình
Ứng dụng luôn có sẵn: Dù chúng ta đang sử dụng máy tính nào, chúng ta luôn có thể truy cập vào ứng dụng của mình…
Trang 91.1.3 Tìm hiểu về an ninh web
Theo thống kê các phương thức tấn công hiện nay (hình) chúng ta thấy các kiểu tấn công truyền thống như SQL Injection, Cross-Site Script, Brute Force vẫn đang gây thiệt hại cho hệ thống mạng dù đã được cảnh báo từ rất lâu
Các cuộc tấn công này chủ yếu tập trung vào các ứng dụng web được phát triển trong các dịch vụ thương mại điện tử với nền tảng ứng dụng web 2.0 Vấn đề bảo mật cho các ứng dụng hiện nay nói chung và ứng dụng web nói riêng vẫn còn khá “mới mẻ” đối với các doanh nghiệp Việt Nam
Trang 101.2 Các dạng tấn công ứng dụng web
1.2.1 Tấn công từ chối dịch vụ
1.2.1.1 DoS (Denial of Service)
DoS (Denial of Service) có thể mô tả như hành động ngăn cản những người dùng hợp pháp của một dịch
vụ nào đó truy cập và sử dụng dịch vụ đó Nó bao gồm cả việc làm tràn ngập mạng, làm mất kết nối với dịch vụ…
mà mục đích cuối cùng là làm cho server không thể đáp ứng được các yêu cầu sử dụng dịch vụ từ các client DoS
có thể làm ngưng hoạt động của một máy tính, một mạng nội bộ, thậm chí cả một hệ thống mạng rất lớn Thực chất của DoS là kẻ tấn công sẽ chiếm dụng một lượng lớn tài nguyên mạng như băng thông, bộ nhớ… và làm mất khả năng xử lý các yêu cầu dịch vụ đến từ các client khác
1.2.1.2 DDoS (Distributed Denial Of Service)
Distributed Denial Of Service (DDoS) là kỹ thuật tấn công làm các ISP lo âu, giới hacker chính thống thì không công nhận DDoS là kỹ thuật tấn công chính thống Thế nhưng Black hat đang có rất nhiều ưu thế khi triển
khai tấn công bằng kỹ thuật DDoS
Trang 11Việc phòng ngừa và ngăn chặn DDoS vẫn còn đang thực hiện ở mức độ khắc phục hậu quả và truy tìm thủ phạm
1.2.1.3 DRDoS (Distributed Reflection Denial of Service)
Mục tiêu chính của DRDoS là chiếm đoạt toàn bộ băng thông của máy chủ, tức là làm tắc ngẽn hoàn toàn đường kết nối từ máy chủ vào xương sống của Internet và tiêu hao tài nguyên máy chủ Trong suốt quá trình máy chủ bị tấn công bằng DRDoS, không một máy khách nào
có thể kết nối được vào máy chủ đó Tất cả các dịch vụ chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3, đều bị vô hiệu hóa
1.2.2 Chiếm hữu phiên làm việc (Session Management)
1.2.2.1 Ấn định phiên làm việc
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 SessionID 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 SessionID đó và nghiễm nhiên trở thành người dùng hợp
Trong kiểu tấn công ấn định một phiên làm việc, hacker ấn định sẵn session ID cho nạn nhân trước khi họ
Trang 12đăng nhập vào hệ thống Sau đó, hacker sẽ sử dụng session ID này để buớc vào phiên làm việc của nạn nhân
đó
1.2.2.2 Đánh cắp phiên làm việc
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ã SessionID của họ được lưu trữ trong Cookie hay tham số URL, biến ẩn của Form
1.2.3 Tấn công chèn câu truy vấn SQL Injection
SQL injection là kĩ thuật cho phép những kẻ tấn công 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” (inject) 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 vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh…do có toàn quyền trên cơ sỡ dữ liệu của ứng dụng, thậm chí là server mà nó ứng dụng đó đang chạy 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
Trang 13Khi Hacker gửi những dữ liệu (thông qua webform), ứng dụng web sẽ thực hiện và trả về cho trình duyệt kết quả câu truy vấn hay những thông báo lỗi có liên quan đến cơ sở dữ liệu Và nhờ những thông tin này mà haker biết được nội dung cơ sở dữ liệu và có thể điều khiển toàn bộ hệ thống ứng dụng
Các dạng tấn công SQL Injection:
- Có bốn dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập (authorization bypass), sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT, sử dụng các stored-procedures
1.2.4 Chèn mã lệnh thực thi trên trình duyệt Cross-Site Scripting
Khái niệm về XSS là thao tác các kịch bản phía máy khách của một ứng dụng web để thực hiện theo cách mong muốn của kẻ xấu Những kịch bản đã nhúng vào trang web sẽ được thực hiện khi người dùng tải trang hoặc có những tác vụ liên quan Cross-site Scripting (XSS) là lỗ hổng cho phép hacker có thể chèn những đoạn mã client-script (thường là Javascript hoặc HTML) vào trang web,
Trang 14khi người dùng vào những trên web này, mã độc sẽ được thực thi trên máy của người dùng
Hiện tồn tại 2 hình thức:
Stored-XSS:
Reflected-XSS:
Trang 15Chương 2: GIẢI PHÁP PHÒNG CHỐNG TẤN
CÔNG ỨNG DỤNG WEB
2.1 Phương thức tấn công ứng dụng web
2.1.1 Tấn công từ chối dịch vụ
2.1.1.1 DoS (Denial of Service)
Phá hoại dựa trên tính giới hạn hoặc không thể phục hồi của tài nguyên mạng
2.1.1.2 DDoS (Distributed Denial Of Service)
Bao gồm 3 giai đoạn:
Giai đoạn chuẩn bị
Giai đoạn xác định mục tiêu và thời điểm
Phát động tấn công và xóa dấu vết
Kiểm tra xem server có bị DDOS hay không
Hình 2.1 Mô hình cuộc tấn công DDoS
Trang 162.1.1.3 DRDoS (Distributed Reflection Denial of Service)
Về cơ bản, DrDoS là sự phối hợp giữa hai kiểu DoS và DDoS Nó có kiểu tấn công SYN với một máy tính đơn, vừa có sự kết hợp giữa nhiều máy tính để chiếm dụng băng thông như kiểu DDoS Kẻ tấn công thực hiện bằng cách giả mạo địa chỉ của server mục tiêu rồi gửi yêu cầu SYN đến các server lớn như Yahoo, Micorosoft…,để các server này gửi các gói tin SYN/ACK đến server mục tiêu Các server lớn, đường truyền mạnh đã vô tình đóng vai trò zoombies cho kẻ tấn công như trong DdoS
Hình 2.2 Sơ đồ mô tả kiểu tấn công DRDOS
Trang 172.1.2 Chiếm hữu phiên làm việc (Session Management)
2.1.2.1 Ấn định phiên làm việc
Bước 1: Thiết lập session ID
Bước 2: Gởi session ID đến trình duyệt nạn nhân
Bước 3: Đột nhập vào phiên làm việc của nạn nhân
2.1.2.2 Đánh cắp phiên làm việc
Tấn công kiểu dự đoán phiên làm việc
Tấn công kiểu vét cạn phiên làm việc
Tấn công kiểu dùng đoạn mã để đánh cắp phiên
làm việc
2.1.3 Tấn công chèn câu truy vấn SQL Injection
2.1.3.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
2.1.3.2 Dạng tấn công sử dụng câu lệnh SELECT
Trang 18Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc
tấn công
2.1.3.3 Dạng tấn công sử dụng câu lệnh INSERT
- Thông thường các ứng dụng web cho phép người dùng đăng kí một tài khoản để tham gia Chức năng không thể thiếu là sau khi đăng kí thành công, người dùng có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi hệ thống không kiểm tra tính hợp lệ của
thông tin nhập vào
2.1.3.4 Dạng tấn công sử dụng stored-procedures
- Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ
thống 'sa'
2.1.3.5 Tấn công SQL Injection nâng cao
2.1.4 Chèn mã lệnh thực thi trên trình duyệt Cross-Site Scripting
XSS là một lỗi phổ biến, có rất nhiều trang web bị mắc phải lỗi này, chính vì thế ngày càng có nhiều người quan tâm đến lỗi này Các bước thực hiện tấn công theo phương pháp này như sau:
Trang 19Truy tìm lỗ hổng XSS của web
Tấn công
2.2 Giải pháp phòng chống tấn công ứng dụng web
2.2.1 Tấn công từ chối dịch vụ
2.2.1.1 DoS (Denial of Service)
- Mô hình hệ thống phải được xây dựng hợp lý, tránh phụ thuộc lẫn nhau quá mức dễ dẫn đến một bộ phận gặp sự cố
Cách 1: Chống iframe
Cách 2: Chống tải lại trang web có ác ý
Cách 3: Giới hạn số kết nối website tại một thời điểm
2.2.1.3 DRDoS (Distributed Reflection Denial of Service)
chống do tính bất ngờ và thường là phòng chống trong thế
bị động khi sự việc đã diễn ra Các phương án phòng ngừa
có thể:
Trang 20 Thiết lập, cài đặt mật khẩu mạnh (strong password)
để bảo vệ các thiết bị mạng như máy chủ dịch vụ, các router,… và các nguồn tài nguyên quan trọng khác
Phòng ngừa các điểm yếu của ứng dụng Web, Webserver, DNS, SQL Database… Thường xuyên cập nhật các bản vá
là một trong những yêu cầu quan trọng…
2.2.2 Chiếm hữu phiên làm việc
Chống việc đăng nhập với một session ID có sẵn, ứng dụng phải hủy bỏ session ID được cung cấp bởi trình duyệt của người dùng khi đăng nhập và luôn tạo một session ID mới khi người dùng đăng nhập thành công sẽ khiến cho những hacker không phải là người dùng hợp lệ của hệ thống
Giới hạn phạm vi ứng dụng của session ID như kết hợp session ID với địa chỉ của trình duyệt, kết hợp session
ID với chứng thực được mã hoá SSL của người dùng, xóa
bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực, thiết lập thời gian hết hiệu lực cho session để tránh trường hợp hacker có thể duy trì session và sử dụng
nó lâu dài…