Fuzzing là gì?

Fuzzing là gì

Giới thiệu: Fuzzing là gì?

Năm 2014, tin tặc Trung Quốc xâm nhập vào Hệ thống Y tế Cộng đồng, một chuỗi bệnh viện vì lợi nhuận của Hoa Kỳ và đã đánh cắp dữ liệu của 4.5 triệu bệnh nhân. Các tin tặc đã khai thác một lỗi có tên là Heartbleed được phát hiện trong thư viện mật mã OpenSSL vài tháng trước vụ hack.

Heartbleed là một ví dụ về lớp vectơ tấn công cho phép kẻ tấn công truy cập mục tiêu bằng cách gửi các yêu cầu không đúng định dạng đủ hợp lệ để vượt qua kiểm tra sơ bộ. Mặc dù các chuyên gia làm việc trên các phần khác nhau của ứng dụng cố gắng hết sức để đảm bảo tính bảo mật của ứng dụng, nhưng không thể nghĩ ra tất cả các trường hợp góc cạnh có thể làm hỏng ứng dụng hoặc khiến ứng dụng dễ bị tấn công trong quá trình phát triển.

Đây là nơi 'làm mờ' xuất hiện.

Fuzzing Attack là gì?

Làm mờ, kiểm tra mờ hoặc tấn công làm mờ, là một kỹ thuật kiểm tra phần mềm tự động được sử dụng để cung cấp dữ liệu ngẫu nhiên, không mong muốn hoặc không hợp lệ (được gọi là fuzz) vào một chương trình. Chương trình được theo dõi để phát hiện các hành vi bất thường hoặc không mong muốn như tràn bộ đệm, treo máy, rò rỉ bộ nhớ, treo luồng và vi phạm quyền truy cập đọc/ghi. Sau đó, công cụ làm mờ hoặc bộ làm mờ được sử dụng để khám phá nguyên nhân của hành vi bất thường.

Fuzzing dựa trên giả định rằng tất cả các hệ thống đều chứa lỗi đang chờ được phát hiện và có thể được cung cấp đủ thời gian và nguồn lực để làm như vậy. Hầu hết các hệ thống đều có trình phân tích cú pháp rất tốt hoặc ngăn ngừa xác thực đầu vào tội phạm mạng từ việc khai thác bất kỳ lỗi giả định nào trong một chương trình. Tuy nhiên, như chúng tôi đã đề cập ở trên, rất khó để bao gồm tất cả các trường hợp góc trong quá trình phát triển.

Bộ làm mờ được sử dụng trên các chương trình nhận đầu vào có cấu trúc hoặc có một số loại ranh giới tin cậy. Ví dụ: một chương trình chấp nhận tệp PDF sẽ có một số xác thực để đảm bảo tệp có phần mở rộng .pdf và trình phân tích cú pháp để xử lý tệp PDF.

Một fuzzer hiệu quả có thể tạo ra các đầu vào đủ hợp lệ để vượt qua các ranh giới này nhưng cũng đủ không hợp lệ để gây ra hành vi không mong muốn trong chương trình. Điều này rất quan trọng vì việc có thể vượt qua các xác nhận không có ý nghĩa gì nhiều nếu không gây ra thêm tác hại nào.

Fuzzers phát hiện ra các vectơ tấn công rất giống và bao gồm các kiểu tấn công như SQL injection, cross-site scripting, tràn bộ đệm và tấn công từ chối dịch vụ. Tất cả các cuộc tấn công này là kết quả của việc cung cấp dữ liệu ngẫu nhiên, không hợp lệ hoặc không mong muốn vào hệ thống. 

 

Các loại Fuzzer

Fuzzers có thể được phân loại dựa trên một số đặc điểm:

  1. mục tiêu tấn công
  2. Phương pháp tạo lông tơ
  3. Nhận thức về cấu trúc đầu vào
  4. Nhận thức về cấu trúc chương trình

1. Mục tiêu tấn công

Sự phân loại này dựa trên loại nền tảng mà fuzzer đang được sử dụng để kiểm tra. Fuzzers thường được sử dụng với các giao thức mạng và ứng dụng phần mềm. Mỗi nền tảng có một loại đầu vào cụ thể mà nó nhận được và do đó yêu cầu các loại bộ làm mờ khác nhau.

Ví dụ: khi xử lý các ứng dụng, tất cả các nỗ lực làm mờ xảy ra tại các kênh đầu vào khác nhau của ứng dụng, chẳng hạn như giao diện người dùng, thiết bị đầu cuối dòng lệnh, đầu vào biểu mẫu/văn bản và tệp tải lên. Vì vậy, tất cả các đầu vào được tạo bởi bộ làm mờ phải khớp với các kênh này.

Fuzzers xử lý các giao thức truyền thông phải xử lý các gói. Fuzzers nhắm mục tiêu vào nền tảng này có thể tạo ra các gói giả mạo hoặc thậm chí hoạt động như các proxy để sửa đổi các gói bị chặn và phát lại chúng.

2. Phương pháp tạo lông tơ

Các bộ làm mờ cũng có thể được phân loại dựa trên cách chúng tạo ra dữ liệu để làm mờ. Trước đây, các fuzzer tạo ra fuzz bằng cách tạo dữ liệu ngẫu nhiên từ đầu. Đây là cách mà Giáo sư Barton Miller, người khởi xướng kỹ thuật này, đã làm ban đầu. Loại fuzzer này được gọi là fuzzer dựa trên thế hệ.

Tuy nhiên, mặc dù về mặt lý thuyết, người ta có thể tạo dữ liệu vượt qua ranh giới tin cậy, nhưng sẽ mất nhiều thời gian và nguồn lực để làm như vậy. Do đó phương pháp này thường được sử dụng cho các hệ thống có cấu trúc đầu vào đơn giản.

Một giải pháp cho vấn đề này là thay đổi dữ liệu đã biết là hợp lệ để tạo dữ liệu đủ hợp lệ để vượt qua ranh giới tin cậy, nhưng đủ không hợp lệ để gây ra sự cố. Một ví dụ tốt về điều này là một bộ lọc DNS lấy một tên miền và sau đó tạo một danh sách lớn các tên miền để phát hiện các miền độc hại tiềm ẩn nhắm mục tiêu chủ sở hữu của miền được chỉ định.

Cách tiếp cận này thông minh hơn cách trước và thu hẹp đáng kể các hoán vị có thể. Fuzzers sử dụng phương pháp này được gọi là fuzzers dựa trên đột biến

Có một phương pháp thứ ba gần đây hơn sử dụng các thuật toán di truyền để hội tụ dữ liệu lông tơ tối ưu cần thiết nhằm loại bỏ tận gốc các lỗ hổng. Nó hoạt động bằng cách liên tục tinh chỉnh dữ liệu mờ của nó, xem xét hiệu suất của từng dữ liệu thử nghiệm khi được đưa vào chương trình. 

Các bộ dữ liệu hoạt động kém nhất sẽ bị xóa khỏi nhóm dữ liệu, trong khi các bộ dữ liệu tốt nhất được thay đổi và/hoặc kết hợp. Thế hệ dữ liệu mới sau đó được sử dụng để kiểm tra lại fuzz. Những fuzzer này được gọi là fuzzers dựa trên đột biến tiến hóa.

3. Nhận thức về cấu trúc đầu vào

Sự phân loại này dựa trên việc một fuzzer có biết và tích cực sử dụng cấu trúc đầu vào của một chương trình trong việc tạo dữ liệu fuzz hay không. Một đồ ngốc (một fuzzer không biết cấu trúc đầu vào của chương trình) tạo ra fuzz theo kiểu chủ yếu là ngẫu nhiên. Điều này có thể bao gồm cả các bộ làm mờ dựa trên thế hệ và đột biến. 


Nếu một bộ lọc mờ được cung cấp cùng với mô hình đầu vào của một chương trình, thì bộ lọc mờ sau đó có thể cố gắng tạo hoặc thay đổi dữ liệu sao cho nó khớp với mô hình đầu vào được cung cấp. Cách tiếp cận này tiếp tục giảm lượng tài nguyên dành cho việc tạo dữ liệu không hợp lệ. Một fuzzer như vậy được gọi là thông minh fuzzer.

4. Nhận Thức Về Cấu Trúc Chương Trình

Các bộ làm mờ cũng có thể được phân loại dựa trên việc chúng có biết về hoạt động bên trong của chương trình mà chúng đang làm mờ hay không và sử dụng nhận thức đó để hỗ trợ tạo dữ liệu mờ. Khi các fuzzer được sử dụng để kiểm tra một chương trình mà không hiểu cấu trúc bên trong của nó, nó được gọi là kiểm tra hộp đen. 

Dữ liệu mờ được tạo ra trong quá trình thử nghiệm hộp đen thường là ngẫu nhiên trừ khi bộ tạo mờ là một bộ tạo mờ dựa trên đột biến tiến hóa, trong đó nó 'học' bằng cách theo dõi tác động của việc tạo mờ và sử dụng dữ liệu đó. thông tin để tinh chỉnh tập dữ liệu fuzz của nó.

Mặt khác, kiểm thử hộp trắng sử dụng mô hình cấu trúc bên trong của chương trình để tạo dữ liệu mờ. Cách tiếp cận này cho phép một fuzzer đến các vị trí quan trọng trong một chương trình và kiểm tra nó. 

Công cụ Fuzzing phổ biến

Có rất nhiều mờ công cụ ngoài đó được sử dụng bởi bút thử nghiệm. Một số trong những cái phổ biến nhất là:

Hạn chế của Fuzzing

Mặc dù Fuzzing là một kỹ thuật pen-test thực sự hữu ích, nhưng nó không phải là không có lỗi. Một số trong số này là:

  • Phải mất một thời gian khá dài để chạy.
  • Sự cố và các hành vi không mong muốn khác được tìm thấy trong quá trình kiểm tra hộp đen của một chương trình có thể khó khăn, nếu không muốn nói là không thể phân tích hoặc gỡ lỗi.
  • Việc tạo các mẫu đột biến cho các bộ làm mờ dựa trên đột biến thông minh có thể tốn nhiều thời gian. Đôi khi, thậm chí có thể không thực hiện được do mô hình đầu vào là độc quyền hoặc không xác định.

 

Tuy nhiên, nó là một công cụ khá hữu ích và cần thiết cho bất kỳ ai muốn phát hiện ra lỗi trước kẻ xấu.

Kết luận

Fuzzing là một kỹ thuật pen-test mạnh mẽ có thể được sử dụng để phát hiện ra các lỗ hổng trong phần mềm. Có nhiều loại bộ lọc mờ khác nhau và các bộ lọc mờ mới luôn được phát triển. Mặc dù fuzzing là một công cụ cực kỳ hữu ích, nhưng nó cũng có những hạn chế. Ví dụ, các fuzzer chỉ có thể tìm thấy rất nhiều lỗ hổng và chúng có thể khá tốn tài nguyên. Tuy nhiên, nếu bạn muốn tự mình thử kỹ thuật tuyệt vời này, chúng tôi có một API Fuzzer DNS miễn phí mà bạn có thể sử dụng trên nền tảng của chúng tôi. 

Bạn đang chờ đợi điều gì? 

Bắt đầu fuzzing ngày hôm nay!

Google và huyền thoại ẩn danh

Google và huyền thoại ẩn danh

Google và Huyền thoại ẩn danh Vào ngày 1 tháng 2024 năm XNUMX, Google đã đồng ý giải quyết một vụ kiện bằng cách hủy hàng tỷ bản ghi dữ liệu được thu thập từ chế độ Ẩn danh.

Đọc thêm "