티스토리 뷰

시간을 거치며서 퍼징 도구는 더 이상 랜덤 데이터 생성에만 의지하지 않습니다.

퍼징 도구는 각각 장단점이 있으며 댜양한 퍼징 도구와 파라미터로 시험하는 것이 좋습니다.


변형 퍼징 도구(Mutation Fuzzer)


가장 간단한 종류이며 입력 값을 랜덤하게 설정한다는 점에서 기본적인 퍼징 개념과 가깝습니다. 램덤으로 데이터를 변형하기 때문에 붙여진 이름입니다. 그리고 변형된 데이터는 소프트웨어와의 충돌을 위해서 사용됩니다. 변형 퍼징 도구에는 일반적으로 설정 가능한 두 가지 파라미터가 있습니다.


1. 변형 세그먼트(Mutation Segment)


변형 데이터 부분에 해당합니다. 전체 데이터를 변경하는 것일 수도 있습니다. 모든 데이터가 중요한 것은 아니기 때문에 파일의 특정 부분은 건너뛰는 것이 좋을 것입니다. 예를 들어 PE 나 ELF 를 구분하는 매직넘버같은 것이 있습니다. 이 부분까지 랜덤 설정이된다면 난감해질 것입니다. 그래서 상관없는 테스트를 줄이기 위해 사용합니다. 이 것을 유용하게 사용하면 확률을 끌어올릴 수 있습니다.


변경 세크먼트를 설정하는 두 가지 형태는 다음과 같습니다.


모든 데이터를 변경해버립니다. 이 것은 장점은 대부분의 취약점의 테스트가 가능하다는 점입니다. 단점은 테스트할 조합이 너무 많고 소프트웨어가 많은 양의 소프트웨어 테스트를 냠냠해버립니다. 요컨데 비효율적이다라는 것입니다.


부분적인 변경도 있습니다. 이 경우 특정 데이터들에 대해서 규칙에의해 다루어집니다. 이 방식은 퍼징 프로세스가 대상의 관심있는 특정 부분만을 테스트하게 할 수 있습니다. 이 때 이러한 '특정' 부분으 감이나 경험을 통해 결정됩니다. 하지마 퍼징 범위가 제한되기 때문에 데이터 형식이 특정 부분을 얼마나 정확하게 확인하는가에 따라서 좌우됩니다.


2. 변형 알고리즘(Mutation Algorithm)


일반적으로 퍼징하는동안 데이터를 변형, 변경하는 방법에는 세 가지가 있습니다.


.랜덤화 : 이 것은 퍼징을 수행하는 가장 쉽게 흔한 방법입니다 랜덤하게 생성되는 패턴으로 일부를 교체하는 방식으로 데이터를 변경합니다. 문제는 제한된 시간에 모든 가능한 조합을 테스트할 수 없기 때문에 운이 따라야하며 시간도 많이 걸립니다. 랜덤과 세트 기반을 조합하면 대규모 랜덤 테스트를 하기 전에 일반적인 취약점 테스트가 가능합니다.


세트 기반(set based) : 이 형태는 너무 큰 조합을 시도한다는 문제를 해결합니다. 이 것은 엄선한 더 작은 세트로 범위를 줄여서 검사합니다.  먼저 세트기반으로 하고 나서 랜덤으로 할 수 있다.


규칙 기반(Rule based) : 이 형태는 랜덤 기반 그리고 세트 기반의 균형을 추구하는 방식입니다. 이 경우 테스트할 때 사용할 패턴 생성이나 범위를 정합니다.


Generation Fuzzer 는 문법 기반 또는 화이트박스 테스트라고 불립니다. 왜냐하면 이 접근법은 테스트할 대상의 내부 작동을 이해해야 가능하기 때문입니다. 이러한 모델의 가장 주요한 문제는 데이터 모델 작성입니다. 문서가 있는 간단한 프로토콜이면 상관없지만... 대다수 복잡하며 문서나 규약이 있다고해도 퍼징 모델로 옮기려면 상당한 노력이 필요합니다. 프로토콜이나 규약도 공개하지 않는 경우 리버스 엔지니어링 해야합니다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함