FUZZING VỚI AFL

Giới thiệu

American Fuzzy Lop, được viết tắt là AFL là một công cụ kiểm thử mờ thông minh. Được dùng để tìm các lỗ hổng phần mềm bằng cách gửi dữ liệu đầu vào có định đạng sai tới ứng dụng. Nếu phần mềm crash hoặc hoạt động không đúng dự kiến, nó có thể là dấu hiệu của lỗ hổng an ninh

Cài đặt

Bước 1: Công cụ kiểm thử AFL có thể được tải về từ Github tại địa chỉ https://github.com/google/AFL

Text

Description automatically generated
Tải về AFL từ Github

Bước 2: Cài đặt công cụ

A screenshot of a computer

Description automatically generated with medium confidence
Bước cài đặt sau khi tải về AFL

Cài đặt thành công

Graphical user interface

Description automatically generated with low confidence
Sau khi cài đặt thành công AFL
A picture containing text, plaque, screenshot

Description automatically generated
Các chức năng của AFL

Ví dụ cụ thể

Để thực hiện thực nghiệm, nhóm chọn Fuzzgoat làm đối tượng được kiểm thử. Fuzzgoat là một chương trình C này đã được cố tình tạo ra chứa lỗi với một số lỗi hỏng bộ nhớ để kiểm tra tính hiệu quả của các fuzzer và các công cụ phân tích khác. Sử dụng AFL làm Fuzzer để kiểm thử.

Bước 1: Cài đặt Fuzzgoat (https://github.com/fuzzstati0n/fuzzgoat)

Text

Description automatically generated
Tải về Fuzzgoat từ Github
Text

Description automatically generated
Các bước cài đặt Fuzzgoat

Bước 2: Tạo một thư mục để lưu giữ tất cả các trường hợp thử nghiệm. Đặt tên thư mục này là “afl_in”

Tạo thư mục lưu trường hợp thử nghiệm

Thêm testcase bằng cách chuyển một số giá trị ngẫu nhiên/rác vào thư mục ở trên:

Chuyển một số giá trị ngẫu nhiên vào thư mục thử nghiệm

Bước 3: Tạo thư mục để lưu trữ các tệp dẫn đến sự cố hoặc bị treo

Tạo thư mục lưu kết quả lỗi

Bước 4: Tiến hành kiểm thử, chạy câu lệnh afl-fuzz -i afl_in -o afl_out — fuzzgoat/fuzzgoat

Text

Description automatically generated
Thực nghiệm kiểm thử sử dụng AFL

Trong đó:

    -i afl_in : chỉ ra đường dẫn với đầu vào testcase

    -o afl_out : chỉ ra đường dẫn đầu ra các tệp gây ra crash

    — : phân tách cấu trúc câu lệnh. Phía bên trái là nơi các cờ của AFL được chuyển qua và bên phải là nơi đặt lệnh chạy của mục tiêu, trong trường hợp này là fuzzgoat/fuzzgoat.

Kết quả thực nghiệm và đánh giá

Sau khi sử dụng AFL để kiểm thử fuzzgoat, ta thu được kết quả như sau:

A screenshot of a computer

Description automatically generated with medium confidence
A screenshot of a computer

Description automatically generated with medium confidence
Kết quả kiểm thử được trả về bởi AFL

– Giao diện và thông tin khá dễ hiểu nhưng có một số trường cần chú ý:

+ Process Timing Section: Nếu “last new path” hiển thị một khoảng thời gian lớn, điều đó có nghĩa là AFL không thể tìm thấy đường dẫn mới.

+ Overall Results Section: Khuyến cáo ít nhất 50 chu kỳ.

– Kiểm tra đầu ra ở thư mục /afl_out trong các mục /crash hoặc /hang

Bây giờ, chúng ta có thể xem xét các tệp này để biết chính xác AFL đã biến đầu vào thành gì và sau đó tìm ra lý do tại sao nó khiến ứng dụng bị treo hoặc bị treo. 

– Trong màn hình theo dõi có rất nhiều thông tin. Có một thông tin mà cần phải chú ý đến đầu tiên khi thực hiện kiểm thử là: cycles done. Con số này thể hiện cho số lượng vòng lặp thực hiện kiểm thử hoàn thành, con số này ít nhất phải lớn hơn 1. Vì lúc đó mới chắc chắn được có ít nhất 1 lần thực hiện kiểm thử chương trình hoàn thành.

Text

Description automatically generated
Thông số cycles done

Theo như thông số ở trên khi sau khi đi qua 4 lần kiểm thử, chương trình đã bị crash 17 lần. Qua theo dõi con số này không tăng lên ở các lần kiểm thử tiếp theo.

Published by Nhat Truong

Hi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: