
악성 문서로부터 YARA 규칙을 자동으로 생성합니다.

Halogen은 악성 문서에 포함된 이미지 파일을 기반으로 Yara 규칙을 자동으로 생성하는 도구입니다. 이는 사이버 보안 전문가가 악성 위협에 대한 탐지 규칙을 작성하고, 대응자가 자신이 다루고 있는 특정 위협을 식별하는 데 도움을 줄 수 있습니다. 현재 Halogen은 JPG 및 PNG 파일을 기반으로 규칙을 생성할 수 있습니다.

python3 halogen.py -h
usage: halogen.py [-h] [-f FILE] [-d DIR] [-n NAME] [--png-idat] [--jpg-sos] [--jpg-sof2sos] [--jpg-jump] [-c CONTAINER] [--clam] [--rprefix RPREFIX]
Halogen: 오피스 문서에 포함된 이미지를 기반으로 Yara 규칙을 자동 생성합니다.
선택적 인자:
-h, --help 이 도움말 메시지를 표시하고 종료합니다.
-f FILE, --file FILE 분석할 파일
-d DIR, --directory DIR
이미지 파일을 검색할 디렉터리.
-n NAME, --rule-name NAME
규칙 파일의 사용자 지정 이름 지정
--png-idat PNG 매칭 시 PNG 파일 헤더 대신 IDAT 청크에서 시작합니다.
--jpg-sos JPG 매칭 시 헤더를 건너뛰고 스캔 시작 마커(Start of Scan)를 찾아 그 위치부터 매칭합니다.
--jpg-sof2sos JPG 매칭 시 헤더를 건너뛰고 SOF(Start of Frame)부터 SOS(Start of Scan)까지 매칭한 후, SOS 내 데이터의 45바이트를 추가로 매칭합니다.
--jpg-jump JPG 매칭 시 헤더를 건너뛰고 SOF와 SOS를 식별한 후, 실제 이미지 데이터를 읽어 반복되는 바이트를 찾아 해당 바이트를 건너뛰고 45바이트의 원시 이미지 데이터를 생성합니다.
-c CONTAINER, --container CONTAINER
ClamAV 컨테이너 유형을 지정합니다. 기본값은 CL_TYPE_MSOLE2, CL_TYPE_OOXML_WORD, CL_TYPE_OOXML_XL, CL_TYPE_OOXML_PPT입니다.
--clam Yara 규칙 대신 Clam 규칙을 생성합니다.
--rprefix RPREFIX ClamAV 규칙 접두사를 지정합니다.
테스트를 위해 이미지가 포함된 몇 개의 테스트 문서 파일을 준비했습니다. python3 halogen/halogen.py -d tests/ > /tmp/halogen_test.yara를 실행하면 tests/ 디렉터리 내 파일에서 발견된 모든 이미지가 포함된 테스트 Yara 파일이 생성됩니다.
그 후 yara -d /tmp/halogen_test.yara tests/를 실행하여 어떤 이미지가 어떤 파일과 일치하는지 확인할 수 있습니다.
--png-idat 옵션을 사용하여 PNG 파일 내 IDAT 청크에서 시작할 수 있습니다. IDAT 청크 매칭 시 반환되는 바이트 수도 줄였습니다.--jpg-sos 플래그를 사용하여 JPG 매칭을 스캔 시작 마커(Start of Scan)에서 시작할 수 있습니다.--jpg-sof2sos 플래그를 추가로 제공합니다. 이 플래그는 SOF(Start of Frame) 마커에서 SOS를 찾을 때까지 읽은 후 추가로 45바이트를 더 읽습니다. 이는 기본 --jpg-sos 플래그에서 오탐지(false positive)가 발생할 때 유용합니다.--jpg-jump 플래그를 추가했습니다. 이 플래그는 압축된 이미지 데이터를 읽고, 반복되는 이미지 바이트가 발견되면 Yara 출력에 16진수 점프(hex jump)를 생성합니다. 이를 통해 파일의 SOF 및 SOS와 이미지 내 더 고유한 데이터 일부를 매칭할 수 있습니다.풀 리퀘스트는 Python3로 제출해 주시고, 발견한 버그는 이슈로 등록해 주시기 바랍니다.