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 명령으로 패딩하여 재실행 방지
- 1단계: 서브루틴 식별
- 분석 및 보안 효과
- 악성코드 TTP 자동 추출: 테스트 샘플 기준 92% 이상 문자열 복호화 성공
- 툴 통합 용이성: Python 기반으로 Ghidra, Binary Ninja 등과 쉽게 연동 가능
- EDR 선제 대응 가능성: 실행 전 복호화 기반 정적 탐지 룰 구축 가능
- 악성 Go 바이너리 분석 시간 단축 및 IOC 생성 속도 향상
- 결론
- GoStringUngarbler는 Go 기반 악성코드 분석에서 난점이던 문자열 난독화 해제를 자동화하며 분석 역량을 강화
- garble을 통한 복잡한 암호화 기법에도 불구하고, 패턴 인식 + 에뮬레이션 + 바이너리 조작 조합으로 대응 가능함을 입증
- 보안 분석가 및 EDR 벤더는 해당 도구를 분석 워크플로우에 즉시 통합하여 난독화된 Go 악성코드 대응 체계를 구축해야 함