Kỹ thuật phân tích động là phƣơng pháp phân tích các thông tin nhận đƣợc trong quá trình thực thi ứng dụng để phát hiện các lỗ hổng. Các thông tin này có thể bao gồm: Các phản hồi nhận đƣợc từ ứng dụng Web, các thông báo lỗi…Phân tích động có
34
thể đƣợc thực hiện tại thời điểm kiểm thử ứng dụng trong quá trình phát triển xây dựng, hoặc thời điểm sau khi ứng dụng đƣợc phát hành[2]
Mục tiêu của kỹ thuật này là để phát hiện ra các lỗ hổng bảo mật trong chƣơng trình khi nó đang thực hiện các truy vấn bất hợp pháp/ truy vấn logic sai, truy vấn UNION, truy vấn bổ sung. [7]
Phƣơng pháp phân tích động có lợi thế hơn phƣơng pháp phân tích tĩnh vì không phải lúc nào mã nguồn của ứng dụng web cũng đƣợc công bố. Tuy nhiên, những lỗ hổng này phải đƣợc vá hay sữa chữa bởi các lập trình viên, mà không phải tất cả các lập trình viên đều có thể sử dụng phƣơng pháp này để tìm kiếm lỗ hổng trên ứng dụng web của họ
Tiếp cận dựa trên phỏng đoán
Giới thiệu
Kỹ thuật tiếp cận dựa trên phỏng đoán là một kỹ thuật dựa trên cơ sở tri thức heuristics. Cụ thể trong phƣơng pháp này, đầu tiên sẽ phân tích ứng dụng web với mục đích xác định các hình thức đầu vào của nó. Sau đó, nó gieo một loạt các cuộc tấn công SQL chuẩn với mục tiêu cho phép các ứng dụng web gửi ra thông báo lỗi. Cuộc tấn công chuẩn sẽ bao gồm một tập hợp các chuỗi truy vấn mà không phụ thuộc vào các ứng dụng web. Sau đó, nó so sánh các thông báo trả về của ứng dụng web với một thƣ viện chuẩn chứa các thông báo lỗi liên quan mà cơ sở dữ liệu có thể trả về. Từ đó, tiếp tục tấn công sử dụng các thông báo lỗi, cho tới khi xác định đƣợc tên trƣờng, bảng hoặc cấu trúc cơ sở dữ liệu .
Phƣơng pháp tiếp cận
Kỹ thuật tiếp cận này bao gồm 4 bƣớc
Bƣớc 1: Phục hồi cấu trúc ứng dụng Web
Giai đoạn này nhằm mục đích thu thập thông tin về cấu trúc của các ứng dụng Web cần kiểm tra, bao gồm các trang và siêu liên kết có thể kết nối tới một trang khác. Về cơ bản, trong giai đoạn này công cụ hoạt động nhƣ một trình thu thập web, bằng cách điều hƣớng và tải trang web (tĩnh hoặc động) dựa trên các siêu liên kết.
Bƣớc 2: Xác định các Đầu vào ứng dụng web cũng đƣợc gọi là "điểm nóng"
Giai đoạn này sẽ dựa trên cấu trúc website xây dựng đƣợc từ bƣớc 1, để xác định các thông số đầu vào trong các form HTML. Đây chính là điểm khởi đầu cho các cuộc tấn công ở bƣớc 3.
Bƣớc 3:Thực hiện các cuộc tấn công
Trên cơ sở các thông số dễ bị tổn thƣơng, công cụ đƣợc sử dụng trong kỹ thuật (V1p3R)bắt đầu tiêm chuỗi SQL trong đầu vào, sử dụng một bộ biến heuristic có sẵn trong cơ sở tri thức của mình. Chi tiết sẽ đƣợc trình bày trong phần sau
35
V1p3R sẽ tạo ra tập file log, nơi mà tất cả các bƣớc của cuộc tấn công đƣợc ghi nhận. Giai đoạn này sẽ theo dõi tất cả các thông tin về các cuộc tấn công thành công, cũng nhƣ các trang, tham số, HTTP header dễ bị tổn thƣơng. Giai đoạn này cũng sinh ra các tri thức mới dựa trên các kết quả đầu ra chính xác hoặc không chính xác của ứng dụng web và sẽ đƣợc sử dụng để tạo ra dữ liệu thử nghiệm mới, nghĩa là lặp đi lặp lại cách tiếp cận thông qua Bƣớc III cho đến khi nó kết thúc danh sách các thông số đƣợc liệt kê.
Khai thác thông tin từ các message lỗi
Có rất nhiều kiểu message lỗi có thể trả ra nếu một trang web bị lỗi, mà từ đó có thể thực hiện các cuộc tấn công
Ví dụ:
Hình 2.1:Một thông báo lỗi đƣợc trả về liên quan tới hệ quản trị CSDL
Các thông báo này cung cấp thông tin về các hệ quản trị CSDL (Microsoft SQL Server)và dữ liệu truy cập (ODBC). Nó cũng cung cấp thông tin về phƣơng ngữ SQL đƣợc sử dụng, (Transact-SQL trong ví dụ này).
Phía dƣới là một lỗi xảy ra cho thấy các truy vấn gửi đến cơ sở dữ liệu đã đƣợc xây dựng bằng cách soạn các chuỗi đƣợc định nghĩa trong mã nguồn với các giá trị của các đầu vào mà không đƣợc thực hiện lọc
Loại thông báo lỗi thứ 2 liên quan tới cấu trúc của cơ sở dữ liệu, và giúp phát hiện ra kiểu, tên của các trƣờng trong các bảng
Ví dụ thông báo lỗi sau:
36
Thông báo này cho biết trong CSDL có một bảng có tên là “user”, trong bảng này có một trƣờng là “id”. Từ đây có thể tiếp tục tấn công để khai thác thông tin về CSDL của webiste này.
Nói chung, V1p3R cố gắng so khớp các thông báo lỗi xuất ra bởi hệ thống với một thƣ viện các biểu thức thông thƣờng, đƣợc xác định cho 15 mẫu lỗi sản xuất bởi 5 DBMS khác nhau.
Rõ ràng, một thƣ viện nhƣ vậy có thể dễ dàng mở rộng thêm nhiều mẫu nữa. Khi kết hợp các mẫu, nhƣ thể hiện trong ví dụ trên, dựa vào các thông tin mà ứng dụng web trả ra, nó có thể sử dụng để tiếp tục tấn công.
Khai thác thông tin từ các đầu ra hợp lệ
Nếu một trang web không xuất ra các thông báo lỗi, V1p3R có thể thu thập thông tin về cấu trúc của cơ sở dữ liệu bằng cách áp dụng kỹ thuật gọi là SQL injection suy luận(inferential SQL injection). Kỹ thuật này chỉ gồm việc sẽ có đƣợc một trả lời đúng hay sai khi tiêm(injection), từ đó có thể khai thác đƣợc thông tin CSDL
Sau đây, là chi tiết về kiến trúc của công cụ hỗ trợ trong kỹ thuật này V1p3R
Hình 2.3: Kiến trúc V1p3R
Công cụ này đƣợc phát triển bằng ngôn ngữ Perl, một ngôn ngữ khá phổ biến
Đầu tiên “Crawler” sẽ thu thập thông tin và dựng lại cấu trúc trang web(bƣớc 1). Sau đó các điểm nóng sẽ đƣợc xác định (bƣớc 2). Từ đó “injector ” sẽ thực hiện gửi các yêu cầu tới ứng dụng web sử dụng các SQL string library(bƣớc 3). Cuối cùng các thông báo lỗi trả ra từ ứng dụng web sẽ đƣợc so sánh với Error patterns libraray. Nếu
37
lỗi đƣợc xác định của DBMS nào thì V1p3R sẽ thực hiện tiêm các câu lệnh đặc biệt tƣơng ứng. Nếu một thông báo là mới, chƣa xác định đƣợc của DBMS nào thì V1p3R cung cấp khản năng xác định các mẫu cơ sở dữ liệu mới và lƣu chúng vào thƣ viện. Cuối cùng là lƣu các thông tin báo cáo vào Testlog(bƣớc 4)