Kant's IT/Issue on IT&Security

Google, Go 기반 악성코드 문자열 복호화 도구 GoStringUngarbler 공개

Kant Jo 2025. 4. 12. 01:07

Google Unveils GoStringUngarbler to Crack Go-Based Malware Encryption

 

  • 개요 및 도구 목적
    • Google의 FLARE 팀은 Go 언어 기반 악성코드의 문자열 난독화를 해제하기 위한 오픈소스 도구 GoStringUngarbler를 공개
    • Go 컴파일러의 garble 옵션으로 난독화된 바이너리에 대해 문자열 복호화 및 바이너리 패치 기능 제공
    • 기존 정적 분석을 무력화하는 garble의 리터럴 난독화 기법 대응 목적
  • garble의 문자열 난독화 메커니즘
    • 리터럴 난독화(-literals) 옵션을 통해 AST 수준에서 프로그램 의미를 유지한 채 복잡한 문자열 암호화 수행
    • 주요 난독화 유형
      • 스택 기반 변환: XOR/ADD/SUB 연산 및 키 적용
      • 스왑 변환: 위치 기반 키 및 바이트 교환
      • 셔플 변환: 인덱스 난수화 및 다층 암호화
      • 시드 기반 변환: 암호화 바이트가 시드 값을 갱신하며 종속성 형성
      • 분할 기반 변환: 상태 기반 SWITCH 구조로 문자열을 분할 및 재조립
  • GoStringUngarbler의 3단계 복호화 파이프라인
    • 1단계: 서브루틴 식별
      • 정규 표현식 및 YARA 룰을 활용해 runtime_slicebytetostring 호출 전후 패턴을 식별
    • 2단계: 에뮬레이션 엔진
      • Unicorn 엔진을 사용하여 메모리 복사 및 해독 함수 에뮬레이션 수행
      • 실제 악성코드 실행 없이 복호화된 문자열 확보 가능
    • 3단계: 바이너리 패치
      • 원래의 암호 해독 루틴을 정적 문자열 로딩 코드로 대체
      • 함수 영역은 INT3 명령으로 패딩하여 재실행 방지
  • 분석 및 보안 효과
    • 악성코드 TTP 자동 추출: 테스트 샘플 기준 92% 이상 문자열 복호화 성공
    • 툴 통합 용이성: Python 기반으로 Ghidra, Binary Ninja 등과 쉽게 연동 가능
    • EDR 선제 대응 가능성: 실행 전 복호화 기반 정적 탐지 룰 구축 가능
    • 악성 Go 바이너리 분석 시간 단축 및 IOC 생성 속도 향상
  • 결론
    • GoStringUngarbler는 Go 기반 악성코드 분석에서 난점이던 문자열 난독화 해제를 자동화하며 분석 역량을 강화
    • garble을 통한 복잡한 암호화 기법에도 불구하고, 패턴 인식 + 에뮬레이션 + 바이너리 조작 조합으로 대응 가능함을 입증
    • 보안 분석가 및 EDR 벤더는 해당 도구를 분석 워크플로우에 즉시 통합하여 난독화된 Go 악성코드 대응 체계를 구축해야 함