
Golang 바이너리에 대한 Imphash 유사 계산
gimphash는 Go 바이너리에 대한 imphash 동등 값을 계산하기 위해 제안된 방법입니다. 이름은 Go-import-hash를 나타냅니다.
Golang 바이너리는 실행 파일의 일부로 의존성을 포함합니다. 이러한 의존성에는 표준 라이브러리 패키지와 타사 의존성이 모두 포함되며, 고전적인 imphash와 유사하게 Golang 프로젝트를 식별하는 데 사용할 수 있습니다.
의존성은 각 Golang 바이너리에 포함된 pclntab을 사용하여 나열할 수 있습니다(Mandiant의 이 블로그 게시물도 참조). pclntab에는 리버스 엔지니어링에 유용한 여러 요소가 포함되어 있습니다. gimphash에서는 여기에 포함된 함수 이름을 사용합니다.
go. 또는 type.로 시작하는 함수 이름을 무시합니다(컴파일 산출물, 런타임 내부).vendor/가 포함된 경우 해당 부분 문자열과 그 이전의 모든 것을 제거합니다
(예: vendor/golang.org/x/text를 golang.org/x/text로 변환).internal/을 포함하는 함수 이름을 무시합니다.runtimesyncsyscalltypetimeunicodereflectstrconv/을 찾습니다. /이 없으면 시작 부분을 대신 사용합니다. 해당 위치에서 시작하여 다음 .을 찾습니다.. 뒤의 모든 것을 기본 함수 이름으로 추출합니다. .이 없으면 이전 단계에서 계산된 / 인덱스 이후의 모든 것을 사용합니다..이 존재하면 해당 . 뒤의 첫 번째 영숫자 문자가 소문자인 경우 해당 함수를 무시합니다.이 저장소에는 다음 언어로 된 개념 증명 코드가 포함되어 있습니다:
릴리스 섹션에는 Windows 및 Linux용 사전 빌드된 바이너리가 포함되어 있습니다.
단일 파일에 Gimphash 계산기 실행
./c_gimphash_linux /mnt/malware-repo/Godoh/godoh-windows64.exe
8200e76e42c4e9cf2bb308d76c017cbdcde5cbbf95e99e02b14d05e7b21505f3 /mnt/mal/Godoh/godoh-windows64.exe
악성코드 저장소에서 Gimphash 계산기 실행
find /mnt/malware-repo/ -type f -exec ./go_gimphash_linux {} \; 2>/dev/null
...
