Nghiên cứu đã làm rõ các vấn đề liên quan đến fuzzing có định hướng, bao gồm cách định hướng một công cụ dé hoạt động trong môi trường có số lượng đầu vào cần kiểm tra lớn và cách tăng h
TONG QUAN VE TINH HÌNH NGHIÊN CỨU
Mục tiêu luận văn - 1 tt St ST HH HH gi 8 2.4 Nội dung và phương pháp nghiên cứu - - + + + ++++c+£++zxzxex+ 8 Chương 3 CƠ SỞ LÝ THUYET VÀ PHƯƠNG PHÁP LUAN
Luận văn mong muốn áp dụng kỹ thuật của thuật giải di truyền trong việc phân tích luỗng thực thi của ứng dụng web trong quá trình fuzzing Nhằm tăng mức độ bao phủ mã khi fuzzing, giảm thiểu tài nguyên khi thực thi công cụ mà vẫn đảm bảo kết quả đạt được mong đợi.
Quá trình thực nghiệm của luận văn sẽ chủ yếu khai thác lỗ hồng thực thi mã từ xa và so sánh với các công cụ Blackbox fuzzing như ffuf và wfuzz Bằng cách so sánh với các phương pháp khác, luận văn hi vọng sẽ giúp tìm ra các đặc điểm mạnh và yếu của thuật giải di truyền, từ đó có thé cải tiến các công cụ fuzzing và áp dụng phân tích các ứng dụng thực tế.
Dé đánh giá giải thuật được đề xuất, luận văn sẽ dùng tập dữ liệu là các phần mềm mã nguồn mở phỏ biến được nhiều người sử dụng dé đảm bảo bao quát hết các trường hợp của các phần mềm được phát triển bằng ngôn ngữ PHP khác nhau trong quá trình phân tích.
2.4 Nội dung và phương pháp nghiên cứu
Fuzzing là một kỹ thuật kiểm thử tự động dé phát hiện các điểm đột biến trong ứng dụng Trong đó, giải thuật di truyền này khi áp dụng vào fuzzing sẽ tạo ra một quy trình xây dựng và đưa mã khai thác mới vào chương trình để giúp tìm ra các điểm đột biến nhanh và tối ưu hơn.
Nội dung 1 Tìm hiểu các công cụ phát hiện lỗ héng web khác nhau và triển khai các phương pháp phát hiện lỗ hồng trong ứng dụng web đồng thời xây dựng tập dữ liệu mã khai thác thích hợp dé sử dụng trong quá trình fuzzing.
Nội dung 2 Tập trung vào việc tự động hoá việc lựa chọn mã khai thác và đầu vào trong quá trình fuzzing ứng dụng web Áp dụng giải thuật được xây dựng vào giúp tìm kiếm các mã khai thác phù hợp và tăng độ bao phủ mã trong các ứng dụng
PHP một cách tự động.
Nội dung 3 Xây dựng các ứng dụng sử dụng mã nguồn mở khác nhau dé đánh giá hiệu quả của phương pháp Công cụ xây dựng sẽ được thực nghiệm trên các ứng dụng mã nguồn mở khác nhau và so sánh với các công cụ tìm kiếm lỗ hồng web hiện có với cùng một tập mã khai thác.
Chương 3 CO SỞ LÝ THUYET VÀ PHƯƠNG PHÁP LUẬN
Kỹ thuật phân tích động fuzzing - +22 +csscsretsesrerrreree 10 1 Fuzzing dựa trên đầu vào ngẫu nhiên (Random fuzzing) II 2 Fuzzing đột biến (Mutation Fuzzing) c:c52ccscc+ccssccesrs 1 3 Fuzzing sử dung dữ liệu từ điển (Grammar-based Fuzzing)
Phân tích động (Dynamic analysis) là một kỹ thuật sử dụng dé nghiên cứu đánh giá hành vi của phần mềm trong quá trình thực thi nó Kỹ thuật này sẽ tập trung vào việc quan sát, theo dõi hành vi và phân tích các sự thay đôi có xảy ra của ứng dụng trong thời gian thực.
Một số kỹ thuật phân tích động phô biến có thể kể đến bao gồm: debugging, profiling, fuzzing, monitoring va tracing Trong nghiên cứu nay, chúng tôi sẽ sử dụng kỹ thuật fuzzing dé áp dụng trong việc tìm kiếm lỗ hồng web.
So sánh với dấu hiệu sẵn có có
Lưu trữ bug tìm thấy
Hình 3.1 Sơ do của phương pháp fuzzing
Fuzzing là một trong những kỹ thuật phân tích động dùng tìm kiếm lỗ hong trong ứng dụng bằng cách đưa vào đầu vào ngẫu nhiên hoặc đầu vào được thiết kế dé thử nghiệm các giá trị đặc biệt hoặc không hợp lệ.
3.1.1 Fuzzing dựa trên đầu vào ngẫu nhiên (Random fuzzing) Đây là phương pháp fuzzing đơn giản nhất, trong đó các đầu vào được tạo ra ngau nhiên và truyền vào ứng dụng dé xem liệu có tạo ra lỗi hay không.
Phương pháp ngẫu nhiên trong fuzzing này thường được sử dụng trong các công cụ fuzzing hộp đen để tạo ngẫu nhiên đầu vào truyền vào ứng dụng. Random fuzzing tương đối hiệu quả đối với các ứng dụng có đầu vào đơn giản từ đó công cụ fuzzing có thé tạo ra được các đầu vào phù hợp để tìm ra điểm yêu của hệ thông.
3.1.2 Fuzzing đột biến (Mutation Fuzzing)
Phương pháp này tạo ra các đầu vào bằng cách biến đổi đầu vào hiện có. Các biến đổi này có thé là việc thêm hoặc xóa các ký tự, hoán đổi vị trí ký tự, hoặc biến đôi các giá tri SỐ. Đại diện của phương pháp mutation fuzzing này trong ứng dụng web có thé kế đến công cụ wfuzz và ffuf.
Wfuzz thực hiện fuzzing dòng lệnh với các tham số đầu vào được cung cấp nhằm tìm ra lỗ hồng trong các trang web Wfuzz thường sử dụng với mục đích kiểm tra sự chống chịu của hệ thống, tìm kiếm các thông tin, lỗ hồng tiềm tàng. Wfuzz sử dụng các từ điển và áp dụng kỹ thuật fuzzing với các tham số của URL, HTTP Headers và các thông số khác của ứng dụng Kết quả của quá trình fuzzing được hién thi đưới dạng danh sách các kết qua tương ứng với các truy vấn được thực hiện.
Tương tự với wfuzz, ffuf cũng là một công cụ fuzzing mã nguồn mở được viết bằng Go, các tham số cũng được truyền tương tự như ứng dụng wfuzz tuy nhiên ffuf có tốc độ fuzzing nhanh hơn.
Trong các thử nghiệm so với các công cụ fuzzing có tồn tại hiện tại sẽ sO sánh công cụ xây dựng với wfuzz và ffuf đê đánh giá hiệu quả của công cụ.
Requests/sec.: 0 webfuzz@webfuzz-All-Series:~$ wfuzz -z file, /media/webfuzz/24c742b7-ca4c-44c5-9b12-a0ed84e774f9/webfuzz-fuzzer/webFuzz/webFuz z/Payloads/os_rce/unix "http://dvpa.lab:8000/RCE-Labs/RCE-2/rce_2.php?domain=FUZZ" xxx YY SSIS IIIS ISS SIES II ISS ISS ISS III I I i iH
* wfuzz 3.1.0 - The Web Fuzzer it
(000000001: "≪ | #exec%20cmd=" /bin/cat%20/etc/passwd" - -> "
(000000003: ”≪ | #exec%20cmd=" /usr/bin/id; > "
Hình 3.2 Công cu fuzzing hộp den wfuzz.
3.1.3 Fuzzing sử dung dữ liệu từ dién (Grammar-based Fuzzing)
Phương pháp grammar-based fuzzing là một phương pháp fuzzing trong ứng dụng web dựa trên việc sử dụng ngữ pháp (grammar) cua input chương trình đê có thê tạo ra mã khai thác truyên vào.