생각을 정리하는 마인드맵, 풀맵 →
릴스 해설

NSA가 푼 바이너리 해독 도구, Ghidra


한 줄 요약: 미국 국가안보국(NSA)이 만든 리버스 엔지니어링 프레임워크 Ghidra는 무료·오픈소스(Apache-2.0)로 실행 파일을 어셈블리와 C 비슷한 코드로 되돌려 보여 주고, 윈도우·macOS·리눅스와 수십 종 프로세서를 지원하며 Java·Python 스크립팅까지 되는 해석 도구예요.

42초짜리 짧은 영상이에요. 표지는 “NSA READS ANY BINARY”라는 문구 아래 16진수 덩어리가 C 코드로 바뀌는 장면이고, 이후 GitHub 저장소 화면(스타 76.7k, 커밋 18,476개, Apache-2.0 라이선스 표시), “PAY TO ENTER” 아래 잠긴 자물쇠, BINARY를 DECOMPILE·DISASSEMBLE·GRAPH로 갈라 보는 도식이 차례로 흘러요. 사실 확인부터 하면, 이 도구는 2019년 3월 RSA 콘퍼런스에서 NSA가 공개한 것으로 보도 기관들이 “사내에서 쓰던 역공학 도구의 공개 버전”으로 정리했어요. GitHub 저장소는 지금 스타 7.9만 개를 넘겼고, 공식 설명도 릴스 주장과 크게 다르지 않아요. 다만 제목의 “해킹 도구”라는 표현은 반쪽이에요. Ghidra는 남의 컴퓨터를 침입하는 도구가 아니라, 이미 만들어진 프로그램을 열어 보고 이해하는 해석 도구거든요. 무엇을 어디까지 되돌려 보여 주는지 풀어 볼게요.

기계어를 사람 말로 되돌린다

프로그램을 배포하면 우리 손에는 실행 파일, 즉 바이너리가 남아요. 바이너리는 0과 1로 짜인 기계 명령어 덩어리라서 사람이 바로 읽지 못해요. 여기서 소스 코드 없이 바이너리를 거꾸로 뜯어 이해하는 작업을 리버스 엔지니어링이라고 불러요. Ghidra는 이 작업의 두 단계를 한 프로그램에 담았어요. 디스어셈블리는 기계 명령어를 어셈블리라는 기계에 가까운 표기로 낱낱이 표기하는 작업이고, 디컴파일은 그 결과를 C 비슷한 언어의 문장으로 다시 엮는 작업이에요. 비유하면 낯선 외국어를 통역하는 일인데, 낱글자 사전 대조(디스어셈블리)를 거쳐 문장 단위 통역(디컴파일)까지 해 주는 통역사예요. 여기에 함수들이 서로 호출하는 경로를 지도처럼 그려 주는 콜 그래프가 붙어요. 릴스 초반 화면도 정확히 이 흐름이에요. 31 c0 48 85 c4 같은 바이트 나열이 int main(int argc) 같은 C 문장으로 바뀌죠.

돈 주던 도구가 무료가 된 이유

릴스가 “PAY TO ENTER”라고 짚은 이유가 있어요. 리버스 엔지니어링 시장은 오랫동안 IDA Pro 같은 고가 상용 도구가 주도했고, 대표 제품은 라이선스 하나에 수천 달러에 이르기도 했어요. 그런데 NSA 연구국이 만들어 내부용으로 쓰던 Ghidra를 2019년 3월 아파치 2.0 라이선스로 공개했어요. 당시 NSA의 롭 조이스는 “방어 임무를 이해시키고 기여하고 싶다”는 취지로 이유를 밝혔고, 언론은 “고가 상용 제품의 기능을 무료로 준다”고 받아 적었어요. NSA가 이런 도구를 내놓은 건 국가 사이버 방어 임무와 맞닿아 있어요. 악성코드를 분석하려면 해석 도구가 많은 연구자 손에 있어야 하니까요. 오픈소스가 된 덕분에 전 세계 연구자가 버그를 고치고 기능을 확장하는 구조도 생겼어요.

세 창이 함께 보인다

Ghidra의 실용성은 여러 시점을 동시에 보는 데 있어요. 왼쪽에는 어셈블리, 오른쪽에는 디컴파일된 C 비슷한 코드, 아래에는 콜 그래프를 함께 띄우고 서로 연결해 탐색할 수 있어요. 릴스의 BINARY → DECOMPILE · DISASSEMBLE · GRAPH 도식이 이 화면 구성을 압축한 거예요. 여기에 실행 환경의 폭이 더해져요. 공식 설명 기준으로 윈도우·macOS·리눅스에서 돌고, 수많은 프로세서 명령어 세트와 실행 파일 형식을 지원해요. 프로세서 지원이 넓다는 건 실무적으로 큰 의미가 있어요. 공유기·카메라·의료기기 같은 임베디드 기기의 펌웨어는 x86이 아니라 별난 프로세서로 만들어진 경우가 많거든요. 사용자는 자기 PC에서 익숙한 화면으로 별난 기계의 코드를 읽을 수 있어요.

스크립트로 분석을 자동화

릴스의 “You can even script” 장면은 Ghidra의 두 번째 얼굴이에요. 공식 설명 기준으로 Java 또는 Python으로 스크립트를 작성해 분석을 자동화하거나 기능을 확장할 수 있어요. 분석 대상이 수백 개 바이너리라면 손으로 창을 띄워가며 볼 수 없으니, 반복 작업을 스크립트로 묶는 게 연구자의 일과가 돼요. 확장 컴포넌트를 만들어 붙일 수도 있어서, 사용자 커뮤니티가 플러그인과 스크립트를 공유하는 생태계도 생겼어요. 이 확장성 덕분에 단일 도구라기보다 분석 플랫폼에 가까워요.

어디에 쓰고, 무엇을 조심하나

쓰임은 크게 두 갈래예요. 하나는 악성코드 분석이에요. README도 NSA가 Ghidra를 악성코드 분석에 적용해 왔다고 적고 있어서, 릴스의 “NSA 분석가가 실제 악성코드에 쓴다”는 말은 공식 설명과 맞아요. 다른 하나는 취약점 연구예요. 소스 코드가 없는 프로그램의 내부를 들여다봐야 약점을 찾을 수 있으니까요. 다만 세 가지를 조심해야 해요. 첫째, 제목의 “해킹 도구”는 과장이고 Ghidra 자체는 해석 도구예요. 둘째, README는 특정 버전의 Ghidra에 알려진 보안 취약점이 있다고 경고해요. 신뢰할 수 없는 바이너리를 여는 작업 특성상, 도구 자체도 최신 버전 유지가 중요해요. 셋째, 리버스 엔지니어링은 관할권과 소프트웨어 라이선스에 따라 허용 범위가 달라져서, 연구 목적이라도 법적 검토가 필요한 영역이에요.

마치며

이 릴스의 요점은 “비싼 면허가 필요하던 작업의 기본 장비가 무료가 됐다”는 점이에요. NSA가 자기들의 해석 도구를 세상에 풀면서, 보안 연구자의 책상 위에 기계어 통역사가 하나 더 놓였어요. 스타 7.9만 개는 그 선택의 수요를 숫자로 보여 주는 셈이죠. 다만 도구가 낯선 프로그램의 속을 들여다보는 만큼, 쓰는 사람의 목적과 책임은 도구 밖의 문제라는 것까지 기억하면 완성이에요. 소스 코드가 없는 프로그램이 눈에 걸리면, 이제 무료 통역사부터 찾아 보세요.

출처