
PDF 파일을 심층 분석하기 위한 GUI 분석기. 악성 페이로드를 탐지하고, 객체 관계를 파악하며, 위협 분석을 위한 핵심 정보를 추출합니다.
대화형 PDF 분석(IPA라고도 함)은 모든 연구자가 PDF 파일의 내부 세부 사항을 탐색할 수 있게 해줍니다. PDF 파일은 취약점을 악용하는 악성 페이로드를 운반하거나 PDF 뷰어의 문제를 일으키는 데 사용될 수 있으며, 피싱 캠페인에서 사회공학적 아티팩트로 사용될 수도 있습니다. 이 소프트웨어의 목표는 모든 분석가가 PDF 파일을 스스로 깊이 있게 분석할 수 있도록 하는 것입니다. IPA를 통해 PDF 파일에서 중요한 페이로드를 추출하고, 객체 간의 관계를 이해하며, 악성 또는 신뢰할 수 없는 페이로드의 트리아지를 돕는 데 유용한 요소를 추론할 수 있습니다.
주요 영감은 Zynamics 뒤의 훌륭한 사람들과 그들의 뛰어난 제품인 PDF dissector에서 비롯되었습니다.
제가 악성코드 리버스 엔지니어링을 시작했을 때, 악성 페이로드를 분석하는 데 사용할 수 있는 주요 도구는 Didier Stevens의 뛰어난 도구들이었습니다. 사실상 표준이 되었지만, 이 도구들의 주요 문제 중 하나는 명령줄에서 사용해야 한다는 점이었고, 매우 많은 플래그 조합을 기억해야 했으며, 다양한 객체의 번호를 보고해야 했습니다. 분석가와 개발자가 매일 온갖 종류의 명령줄 도구와 씨름해야 한다고 해서, 새로운 그래픽 파일 검사 도구를 만들 수 없다는 의미는 아닙니다.
실제로 정적 분석과 리버스 엔지니어링 분야의 일부는 사용자 경험 관점에서 분석가에게 가장 중요한 정보를 어떻게 표시할지에도 초점을 맞추고 있습니다. Didier Stevens의 도구들과 peepdf는 이미 사용되고 있으며 잘 다듬어져 있습니다. 그러나 분석가는 다양한 객체 간의 관계를 이해하고, 어떤 페이지를 참조하는지, 어떤 객체 유형(이미지, 글꼴, 색상, 메타데이터)인지 파악하고, 스트림 콘텐츠를 간단한 방식으로 내보내고, 딕셔너리 내용을 표 형식으로 보기 위해 그래픽 도구를 사용할 수 있습니다.
주요 영감의 원천은 Zynamics가 개발한 PDF-dissector라는 도구입니다. 일부 기존 사용자들의 훌륭한 피드백과 오픈 소스로 공개해 달라는 끊임없는 요청이 이 도구를 만드는 데 며칠을 투자하도록 저를 자극했습니다.
이 도구는 Rust와 cargo로 컴파일할 수 있습니다. Rust와 가져온 크레이트 외에는 의존성이 필요하지 않습니다.
git clone https://github.com/seekbytes/IPA
cd IPA
## compile with debug symbols, the binary is inside ./target/debug/IPA
cargo b
## compile in release mode, the binary is inside ./target/release IPA
cargo b --release
IPA는 현재 다음과 같은 제한 사항이 있습니다:
결국, 이 도구는 정말로 개선될 수 있으며, 제 코드가 얼마나 나쁜지 눈치채는 사람들이 분명 있을 것이라고 장담합니다. 그중 한 명이라면 잠재적인 개선 사항, 더 나은 패턴, 그리고 어떤 제안이든 알려주세요.
문제, 개선 사항이 있거나 그냥 메시지를 보내고 싶다면 [email protected]으로 이메일을 보내주세요.