
YARA 및 정규식 매치를 바이너리와 텍스트 데이터 모두에서 시각적으로 검사하고 강제 디코딩하며, 색상으로 표시합니다. 많은 색상.

바이너리 데이터 및/또는 텍스트에서 발견된 모든 정규식 일치 (그리고 더 섹시하고 비밀스러운 사촌인 YARA 일치)를 시각적으로 검사합니다. 일치된 바이트에 다양한 문자 인코딩을 강제로 적용했을 때 어떤 일이 일어나는지 확인하세요. 색상과 함께.
pipx install yaralyzer
# YARA 규칙 파일로 스캔:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# 임의의 정규식으로 스캔:
yaralyze --regex-pattern 'good and evil.*of\s+\w+byte' --regex-modifier wide the_crypto_archipelago.exe
# 임의의 YARA 16진수 패턴으로 스캔
yaralyze --hex-pattern 'd0 93 d0 a3 d0 [-] 9b d0 90 d0 93' one_day_in_the_life_of_ivan_cryptosovich.bin
'/.+/'을 스캔하면 슬래시 사이에 있는 모든 바이트를 즉시 확인할 수 있습니다. 따옴표, BOM 등에도 동일하게 적용됩니다. YARA가 처리할 수 있는 모든 정규식이 지원되므로 가능성은 무한합니다.chardet은 문자 인코딩 추측을 위한 정교한 라이브러리이며 여기에서 활용됩니다.chardet을 활용하여 바이트가 알려진 인코딩의 패턴에 맞는지 확인합니다. chardet의 신뢰도가 충분히 높으면(구성 가능) 해당 인코딩을 사용하여 바이트를 디코딩한 결과가 표시됩니다.Yaralyzer의 기능은 Pdfalyzer에서 추출되었습니다. 바이너리에서 패턴 일치를 시각화하고 디코딩하는 것이 PDF 분석 도구에서만 유용한 것이 아니라는 것이 분명해졌기 때문입니다.
YARA는 잘 모르는 분들을 위해1, 악성코드 분석/경고 도구로 브랜드화되어 있지만 실제로는 그보다 훨씬 더 많은 기능과 더 적은 기능을 제공합니다. YARA를 스테로이드를 맞은 정규식 일치 엔진으로 생각할 수 있습니다. 다른 정규식 엔진처럼 바이너리에서 정규식 일치를 찾을 수 있지만, 정규식을 논리적 그룹으로 결합하거나, 바이너리의 모든 256개 XOR 버전에 대해 정규식을 비교하거나, 패턴의 base64 및 기타 인코딩을 확인하는 등의 훨씬 더 강력한 작업도 수행할 수 있습니다. 아마도 가장 중요한 것은 YARA가 사람들이 자신의 강화된 정규식을 전 세계와 _공유_할 수 있는 표준 텍스트 기반 형식을 제공한다는 점입니다. 이러한 기능은 특히 악성코드를 분석하거나 리버스 엔지니어링할 때 유용합니다. 악성코드 작성자는 일반적으로 발견하기 어렵게 만드는 데 많은 시간을 투자하기 때문입니다.
하지만... 그게 YARA가 하는 전부입니다. 나머지는 사용자에게 달려 있습니다. YARA는 단지 일치 엔진일 뿐이며, 무엇을 일치시킬지(또는 어떤 문자 인코딩으로 일치시킬 수 있는지) 모른다면 그 가치는 제한적입니다. 저는 몇 가지 중요한 패턴의 모든 일치를 YARA로 살펴보려고 할 때 약간의 좌절감을 느꼈습니다:
\".+\" 및 \'.+\')/.+/). 많은 구현에서 슬래시는 정규식을 구분하며, 이 패턴과 일치하는 바이트가 실제로 정규식인지 확인하려고 했습니다.YARA는 바이트 위치와 일치된 문자열만 알려줄 뿐, 해당 바이트가 UTF-8, UTF-16, Latin-1 등인지(또는 그 외의 것인지)는 알려주지 않습니다. 또한 일치된 바이트 _자체_뿐만 아니라 일치된 바이트 주변 영역에서 무슨 일이 일어나고 있는지 이해하고 싶었습니다. 즉, 일치된 바이트 바로 앞뒤의 바이트 범위를 보고 싶었습니다.
Yaralyzer가 등장합니다. 일치 주변 영역을 빠르게 스캔할 수 있을 뿐만 아니라 해당 영역을 다양한 문자 인코딩으로 강제 변환했을 때 어떻게 보일지도 보여줍니다.
Yaralyzer는 악성코드 리버싱 도구가 아닙니다. CyberChef와 같은 도구가 하는 일을 할 수 없으며, 그렇게 하려고 하지도 않습니다. 바이너리에서 의심스러운 영역에 대한 빠른 시각적 개요를 제공하여 더 진지한 도구로 검사할 영역을 좁히는 데 더 중점을 둡니다.
pipx 또는 pip3으로 설치하세요. pipx는 약간 더 나은 솔루션입니다. pipx로 설치된 모든 패키지가 로컬 Python 환경의 나머지 부분과 격리된다는 것을 보장하기 때문입니다. 물론 로컬 Python 환경이 없다면 이는 논쟁의 여지가 없으며 pip/pip3으로 설치해도 됩니다.
pipx install yaralyzer
yaralyze -h를 실행하여 명령줄 옵션을 확인하세요 (아래 스크린샷).

SVG 이미지, HTML 등의 내보내기에 대한 정보는 예제 출력을 참조하세요.
홈 디렉터리 또는 현재 작업 디렉터리에 .yaralyzer 파일을 배치하면 해당 .yaralyzer 파일에 지정된 환경 변수가 yaralyzer가 호출될 때마다 환경에 추가됩니다. 이를 통해 다양한 명령줄 옵션을 영구적으로 구성하여 반복해서 입력하지 않아도 되는 메커니즘을 제공합니다. 자세한 내용은 예제 파일 .yaralyzer.example의 주석을 참조하세요.
하나의 .yaralyzer 파일만 로드되며, 작업 디렉터리의 .yaralyzer가 홈 디렉터리의 .yaralyzer보다 우선합니다.
Yaralyzer가 주요 클래스입니다. Yaralyzer의 다양한 클래스와 메서드에 대한 자동 생성 문서는 여기에서 찾을 수 있습니다. 다음을 지원하는 다양한 대체 생성자가 있습니다:
.yara 파일에서 YARA 규칙 로드bytes 스캔Yaralyzer가 사용하는 BytesMatch (YARA 일치에 대한 re.Match 객체와 유사) 및 BytesDecoder (디코딩 시도 통계 추적) 객체를 반복하려면 다음과 같이 할 수 있습니다:
from yaralyzer.yaralyzer import Yaralyzer
yaralyzer = Yaralyzer.for_rules_files(['/secret/rule.yara'], 'lacan_buys_the_dip.pdf')
for bytes_match, bytes_decoder in yaralyzer.match_iterator():
do_stuff()
숫자 오류 코드와 함께 yara.Error가 발생하면 여기에서 해당 코드의 의미를 확인할 수 있습니다.
Yaralyzer는 Rich와 함께 제공되는 파일 내보내기 기능과 (다소 제한된) 일반 텍스트 JSON 형식을 사용하여 시각화를 HTML, ANSI 색상 텍스트, PNG 및 SVG 벡터 이미지로 내보낼 수 있습니다.
아래와 같은 .png 이미지를 Yaralyzer에서 직접 내보내려면 다음 중 하나를 수행해야 합니다:
brew install --cask inkscape로 설치 가능)img 추가 패키지 요청 (pipx install yaralyzer[img]). 그러면 cairosvg가 설치됩니다. 또한 운영 체제에 따라 CairoSVG 실행 파일을 수동으로 설치해야 합니다. 자세한 내용은 CairoSVG 문서를 참조하세요.경험상 Inkscape와 CairoSVG 모두 작동하지만, CairoSVG를 사용하여 Yaralyzer가 렌더링한 SVG를 렌더링할 때 일부 깜빡임 현상이 관찰되었으므로 Inkscape를 권장합니다.


chardet.detect()가 바이트가 특정 인코딩/언어에 속할 가능성에 대해 어떻게 생각하는지 확인:
기여는 언제나 환영합니다. 환경 설정, 테스트 스위트 실행 등에 대한 자세한 내용은 CONTRIBUTING.md를 참조하세요. 또한 거기에 수행해야 할 작업의 TODO 목록도 있습니다.
최근까지 저도 그랬습니다. ↩