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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AlphaGolang — Golang 바이너리 분석을 위한 IDApython 스크립트 | Kitploit
도구/GitHubGitHub/sentinelabs/alphagolang
Static AnalysisReverse EngineeringDebuggersMalware AnalysisBinary Analysis
GitHubsentinelabs/alphagolang

AlphaGolang

Golang 바이너리 분석을 위한 IDApython 스크립트

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AlphaGolang

by Juan Andres Guerrero-Saade (JAG-S @ SentinelLabs)

설명:

AlphaGolang은 IDAPython 스크립트 모음으로, 맬웨어 리버스 엔지니어가 Go 바이너리를 마스터하는 데 도움을 주기 위해 만들어졌습니다. 아이디어는 스크립트를 구체적인 단계로 나누어 깨지기 쉬운 모놀리식 스크립트를 피하고, 분석가가 Go 바이너리를 다룰 때 따를 수 있는 방법론을 모방하는 것입니다.

스크립트는 GPL 라이선스로 배포됩니다 (Tim Strazzere의 원본 GolangLoaderAssist를 리팩터링하고 Python3용으로 업데이트했으며, Tim에게 감사를 표합니다 :)). 기여는 언제나 환영합니다!

요구사항: IDA Pro (이상적으로 v7.6+) 및 Python3 (ew) 처음 두 단계(recreate_pclntab 및 function_discovery_and_renaming)는 IDA v7.5-에서도 작동하지만, 이후 스크립트는 IDAv7.6+가 필요합니다. 최신 버전은 향후 스크립트의 이상적인 대상입니다.

원본 참고: Mandiant Cyber Defense Summit 2021 발표 (동영상 예정)

AlphaGolang 분석 방법론

  • 단계 0: Go 바이너리 식별을 위한 YARA 규칙 (PE/ELF/MachO)

    • identify_go_binaries.yara
      • 간단한 헤더 검사 + Go 빌드 ID 문자열 정규식.
      • 빌드 ID 길이 범위를 개선할 수 있을 것입니다.
  • 단계 1: pcln 테이블 재생성

    • recreate_pclntab.py (IDA v7.5- 호환)
      • 휴리스틱을 기반으로 gopclntab 섹션을 재생성합니다.
      • 주로 IDA v7.5-에서 유용합니다.
  • 단계 2: pcln 테이블을 순회하여 함수를 찾고 모든 함수에 이름을 추가

    • function_renaming.py (IDA v7.5- 호환)
      • golang_loader_assist에서 분리됨
      • pcln 테이블을 기반으로 누락된 함수를 무차별 대입 방식으로 발견합니다.
      • py3 전환 과정에서 발생한 일부 함수 이름 정리 문제를 수정했습니다.
      • Akamai의 Panchan!을 기반으로 Go v1.18에 대한 개선 사항을 추가하도록 리팩터링되었습니다. Alex(CycleOfTheAbsurd)에게 감사드립니다.
  • 단계 3: 사용자 생성 함수 표면화

    • categorize_go_folders.py (IDA v7.6+ 필요)
      • 함수를 자동으로 폴더로 분류합니다.
      • IDAv7.6+ 필요 및 함수 보기에서 '폴더 표시'가 활성화되어 있어야 합니다.
      • 업데이트 2022.05.16: IDA v7.7 폴더 정렬과의 충돌 수정
      • 이 플러그인을 실행하기 전에 Lumina의 메타데이터를 되돌리는 것을 강력히 권장합니다.
  • 단계 4: 문자열 참조 수정

    • fix_string_cast.py
      • golang_loader_assist에서 분리됨
      • 새 문자열을 정의하기 전에 기존 문자열 블롭을 정의 해제하는 로직 추가
      • 새로운 무결성 검사로 훨씬 더 효과적
  • 단계 5: 타입 정보 추출 (Ivan Kwiatkowski 작성)

    • extract_types.py
      • newobject, makechan 등에 대한 모든 호출의 인수에 주석을 추가합니다.
      • 이러한 객체에 올바른 C 타입을 적용하고 이름을 바꿉니다.
      • 사람이 읽을 수 있는 이름을 가져와 주석으로 추가합니다.

수정해야 할 사항 및 기여할 부분:

  • fix_string_cast.py - 여전히 리팩터링과 더 나은 문자열 로드 휴리스틱이 필요합니다. - 대규모 바이너리에서 잠길 수 있습니다. - 일부 간접 문자열 로드 메커니즘이 누락되었습니다.
  • extract_types.py - 현재 PE 및 Mach-O 파일에서 하드코딩된 .rdata 또는 __rodata 섹션 이름을 찾아서 작동합니다. - 가변 정수 인코딩된 크기에 대한 적절한 검사/구현이 필요합니다.

다음 단계:

  • 사용자 생성 함수가 참조하는 문자열 추적
  • 사용자 생성 함수를 기반으로 YARA 시그니처 자동 생성
  • 사용자 생성 함수에 대한 hex-rays pseudocode 출력 생성
  • 동적 분석을 위한 인수에 자동으로 중단점 설정
  • ???

감사:

  • Tim Strazzere: 원본 golang_loader_assist를 공개해 주셔서 감사합니다.
  • Milan Bohacek (Avast Software s.r.o.): idatree API를 이해하는 데 귀중한 도움을 주셨습니다.
  • Joakim Kennedy (Intezer)
  • Ivan Kwiatkowski (Kaspersky GReAT): 단계 5 제공
  • Igor Kuznetsov (Kaspersky GReAT)
  • Alex (일명 CycleOfTheAbsurd) from ESET: Go v1.18 지원을 위해 단계 2를 리팩터링해 주셨습니다.
도구 다운로드