Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
choronzon — 진화적 지식 기반 퍼저 | Kitploit
도구/GitHubGitHub/census/choronzon
Vulnerability AnalysisExploitationFuzzingBinary Analysis
GitHubcensus/choronzon

choronzon

진화적 지식 기반 퍼저

저장소 보기
2726110년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Choronzon - 진화적 지식 기반 퍼저

소개

이 문서는 Choronzon의 배경 이론을 간략히 설명하는 것을 목표로 합니다. 또한 내부 구조와 새로운 요구사항을 충족하기 위해 Choronzon을 확장하는 방법에 대한 세부 정보를 제공합니다. Choronzon의 아키텍처 개요는 ZeroNights 2015 컨퍼런스에서 처음 발표되었습니다. 발표 녹화와 슬라이드 데크도 제공됩니다.

Choronzon은 진화적 퍼저입니다. 더 나은 결과를 계속 생성하기 위해 진화 과정을 모방하려고 합니다. 이를 위해 퍼징된 파일 중 흥미로운 것과 버려야 할 것을 분류하는 평가 시스템을 갖추고 있습니다.

또한 Choronzon은 지식 기반 퍼저입니다. 사용자 정의 정보를 사용하여 대상 파일 형식의 파일을 읽고 씁니다. Choronzon의 용어에 익숙해지려면 각 파일이 chromosome으로 표현된다고 생각해야 합니다. 사용자는 고려 중인 파일 형식의 기본 구조를 설명해야 합니다. 모든 세부 사항과 측면을 설명하는 대신 파일 형식의 높은 수준의 개요가 선호됩니다. 사용자 정의된 각 기본 구조는 gene으로 간주됩니다. 각 chromosome은 gene 트리를 포함하며, 이를 통해 해당 파일을 구축할 수 있습니다.

Choronzon은 Tracer 모듈, Chromosome 모듈 및 퍼저의 세 가지 하위 시스템으로 나뉩니다.

간단히 말해, Chromosome 구성 요소는 대상 파일 형식을 설명하는 데 사용됩니다. 사용자는 새 형식이나 사용자 정의 형식을 지원하기 위해 자체 모듈을 작성할 수 있습니다. 테스트 사례로 PNG 모듈이 Choronzon과 함께 제공됩니다.

반면, Tracer 구성 요소는 대상 애플리케이션을 모니터링하고 실행에 대한 다양한 정보를 수집하는 역할을 합니다. 이 버전의 Choronzon은 실행 중 방문한 기본 블록을 기록하기 위해 Intel의 Pin 바이너리 계측 도구를 사용합니다. 그러나 Choronzon은 다른 추적 백엔드도 지원할 수 있습니다. 또한 다음 버전의 Choronzon에서는 성능에 큰 영향을 미치기 때문에 Pin이 대체될 예정입니다.

마지막으로, 퍼저 구성 요소는 테스트할 파일의 내용을 변경하는 데 사용됩니다. 이 모듈에는 Mutators와 Recombinators의 코퍼스가 포함되어 있습니다. Mutators는 일반적인 퍼저처럼 파일을 변경합니다. 예를 들어, 바이트 뒤집기, 바이트 교체, 무작위 바이트 변형 등을 수행합니다. 그러나 Choronzon에는 퍼저들 사이에서 흔하지 않은 또 다른 기능이 있습니다. Recombinators는 Chromosome 모듈이 제공하는 파일 형식 구조에 대한 정보를 사용하여 지능형 퍼징을 수행합니다.

Chromosome

chromosome/parsers 디렉토리에서 PNG.py 파일을 찾을 수 있습니다. 이 Python 모듈은 PNG 파일 형식을 퍼저에 설명합니다. 다른 파일 형식에 대한 사용자 정의 모듈을 이 디렉토리에 추가할 수 있습니다.

Chromosome 하위 시스템의 기본 아이디어는 Deserializer를 사용하여 초기 시드 파일을 Genes 트리로 변환하는 것입니다. 어떤 시점에서 (퍼징된) Genes는 Serializer를 사용하여 파일로 작성됩니다.

Choronzon에서 파서 모듈의 목표는 모든 세부 사항 대신 파일 형식의 기본 구조를 제공하는 것입니다. 이렇게 하면 퍼저가 대부분 정상적인 파일을 구성하여 대상 애플리케이션에서 조기에 종료되는 것을 방지할 수 있습니다. 또한 파일 형식의 모든 측면을 설명하는 것은 시간이 많이 걸리고 상당한 개발 오버헤드를 초래하므로 이 접근 방식은 시간을 절약해 줍니다.

사용자 정의 파서 작성 방법

새 파서 모듈은 다음을 임포트해야 합니다:

  • chromosome.gene.AbstractGene
  • chromosome.serializer.BaseSerializer
  • chromosome.deserializer.BaseDeserializer

그리고 다음을 구현해야 합니다:

  • chromosome.gene.AbstractGene에서 파생된 Gene 클래스,
  • chromosome.serializer.BaseSerializer에서 파생된 Serializer 클래스,
  • chromosome.deserializer.BaseDeserializer에서 파생된 Deserializer 클래스.

Choronzon과 함께 제공되는 예제에서 각 PNGGene은 PNG 청크에 해당합니다. 일반적으로 Gene을 대상 형식의 기본 데이터 구조로 생각할 수 있습니다. 각 Chromosome은 Genes 트리로 구성되며 고유한 파일을 나타냅니다. 각 Gene은 트리에서 하위 Genes의 데이터와 결합된 자체 데이터를 포함하는 바이트 문자열을 생성할 수 있어야 합니다.

PNGSerializer는 Genes 목록이 주어지면 (대체로 정상적인) 파일을 생성할 수 있어야 합니다. 반면 PNGDeserializer는 대상 형식의 유효한 파일을 구문 분석하고 이를 Genes 트리로 역직렬화할 수 있어야 합니다.

PNG 형식에 대한 주석이 포함된 예제는 chromosome/parsers/PNG.py를 확인하세요.

Tracer

Tracer 모듈은 대상 애플리케이션(및/또는 하나 이상의 라이브러리)을 디스어셈블하는 데 사용됩니다. 이 버전의 Choronzon에서는 IDA를 사용하여 이를 수행합니다. 퍼징 캠페인에서 얻은 흥미로운 정보를 IDB와 연관시킬 수 있기 때문에 이 접근 방식을 사용했습니다. 그러나 Choronzon을 더 이식 가능하고 접근하기 쉽게 만들기 위해 가까운 시일 내에 IDA에 대한 의존성을 제거할 수도 있습니다.

Pin 유틸리티의 도움으로 파일이 애플리케이션에 대해 테스트됩니다. analyzer/coverage 디렉토리에는 이 Pin 도구의 소스 코드가 있으며, 이 도구는 대상 애플리케이션의 각 기본 블록 시작 부분에 후크를 삽입합니다. 실행이 완료되면 적중된 기본 블록을 바이너리의 기본 블록과 연관시킵니다. 따라서 우리에게 가치 있는 메트릭(커버리지 등)을 계산할 수 있습니다.

Fuzzer

Fuzzer 구성 요소는 Chromosome 표현을 사용하여 파일을 퍼징합니다. 앞서 언급했듯이 Choronzon에는 두 가지 퍼징 방법이 있습니다.

첫 번째 방법의 경우 Choronzon은 하나 이상의 유전자에서 콘텐츠를 가져와 Mutators 중 하나를 적용합니다. Mutators는 무작위 바이트 변형, 하이 비트 설정, 바이트 교체 등 일반적이지만 효과적인 퍼징 방법을 구현합니다. 또한 자신만의 사용자 정의 뮤테이터를 작성하여 fuzzers/mutators.py에 추가할 수 있습니다.

두 번째 퍼징 방법은 재조합(recombination)이라고 합니다. Recombinators는 파일의 구조를 변경하는 데 사용됩니다. PNG 형식의 예는 다음과 같습니다.

PNG 파일은 4개의 필드를 포함하는 연속적인 청크로 구성됩니다:

  • 길이,
  • 청크 유형,
  • 청크 데이터,
  • 및 CRC.

IHDR, IDAT 및 IEND 청크만 있는 PNG 파일이 있다고 가정해 보겠습니다. 그 구조는 다음과 같습니다:

root@kitploit:~
[ PNG signature ] [ IHDR ] [ IDAT ] [ IEND ]

Choronzon은 기본 구조(즉, PNG 청크)를 알고 있으므로 시퀀스를 변경할 수 있습니다. 성공적인 재조합 후 퍼징된 PNG 출력 파일은 다음과 같을 수 있습니다:

root@kitploit:~
[ PNG signature ] [ IDAT ] [ IHDR ] [ IEND ]

Choronzon은 복잡한 파일 형식도 처리할 수 있는 더 많은 재조합 전략을 포함하고 있습니다.

설치

Choronzon은 Ubuntu 16.04 LTS (Linux 커널 4.4) 및 Windows 10에서 Python 2.7, Pin 3, IDA Pro 6.6~6.9와 함께 테스트되었습니다.

실행하려면 sortedcontainers Python 패키지를 설치해야 합니다. 여기에서 찾거나 pip를 통해 설치할 수 있습니다.

또한 Choronzon은 IDA Pro(사실상 터미널 버전)가 필요합니다. IDA Pro의 경로는 다음과 같이 구성 파일에 지정해야 합니다:

root@kitploit:~
DisassemblerPath = 'C:\\Program Files (x86)\\IDA 6.6'

IDA Pro 6.6, 6.7, 6.8 및 6.9에서 성공적으로 테스트되었습니다.

Choronzon의 커버리지 Pin 도구는 analyzer/coverage에 있으며 컴파일해야 합니다. 자세한 내용은 Pin의 문서를 확인하거나 다음 단계를 수행할 수 있습니다:

  1. coverage.cpp 및 makefile.rules 파일을 /path/to/pin/source/tools/MyPinTool로 복사합니다.
  2. make를 실행합니다. Windows를 사용하는 경우 Visual Studio 명령줄을 실행하고 Cygwin의 make 유틸리티와 종속성을 사용해야 합니다.
  3. 새로 생성된 obj-intel64 디렉토리(32비트 시스템의 경우 obj-ia32)를 /path/to/choronzon/analysis/coverage로 다시 복사합니다.

구성

Choronzon으로 퍼징하려면 구성 파일을 제공해야 합니다. settings 디렉토리에 Choronzon 구성의 예가 있습니다.

도구 다운로드