openssl과 함께 afl-fuzz(American Fuzz Lop)를 사용하는 방법

openssl과 함께 afl-fuzz(American Fuzz Lop)를 사용하는 방법

우분투에서 openssl과 함께 afl-fuzz를 사용하려고 합니다. afl-fuzz의 일반적인 사용법은 다음과 같습니다.

afl-gcc test.c //-- this will produce a.out

mkdir testcases
echo "Test case here." > testcases/case1

afl-fuzz -i testcases -o findings ./a.out

이제 openssl의 경우 다음과 같습니다.

afl-gcc ./config
make //-- not sure of this :)
afl-fuzz -i test -o findings <exe_name>

여기서 "test"는 openssl 테스트 사례가 포함된 폴더입니다.

내 질문은 openssl의 "exe_name" 매개변수가 무엇입니까? 코드의 나머지 부분을 잘못 이해했다면 정정해 주세요. 감사해요

답변1

"openssl의 "exe_name" 매개변수"가 무엇을 의미하는지 완전히 확신하지만:

afl-fuzz -i test -o findings ~/path/to/binary/to/fuzz @@

바이너리는 퍼지되고 시드 파일에서 생성된 돌연변이 테스트 케이스의 경로로 ~/path/to/binary/to/fuzz대체됩니다 .@@test

답변2

openssl 바이너리를 있는 그대로 사용할 수 없습니다. openssl 라이브러리를 사용할 별도의 프로그램을 작성한 다음 afl-fuzz를 사용하여 해당 exe를 퍼지해야 합니다.

전체적인 과정은 이렇습니다

openssl 다운로드

1. ./config // If you disable something here like no-comp then you have to run`make depend`.
2. Replace gcc with afl-gcc in Makefile 
3. make && make install

이 프로세스는 afl-gcc를 사용하여 openssl을 컴파일하며, 대상 파일에 계측을 추가하는 방법을 볼 수 있습니다. 마지막으로 openssl 디렉토리에 파일이 저장됩니다 libssl.a.libcrypto.a

openssl을 성공적으로 컴파일한 후 샘플 애플리케이션(예: example.c)에서 사용하고 이 파일을 컴파일합니다.

4. afl-gcc sample.c -o sample libssl.a libcrypto.a -ldl

그런 다음 마지막으로 퍼지 테스트를 수행합니다. 5. afl-fuzz -i testcases -o discovery -m none -- ./sample

당신은 볼 수 있습니다이것그리고이것아이디어를 얻고 샘플 파일도 찾아보세요.

관련 정보