Ghidra란 무엇이며 왜 중요한가?
새로운 바이러스에 대응하는 작업의 상당 부분은 그 바이러스가 어떻게 작동하는지 파악하는 데서 시작됩니다. 이를 위해서는 리버스 엔지니어링(역공학)이 필수적인데, 미국 국가안보국(NSA)은 이런 작업을 매우 자주 수행해야 하기 때문에 이를 돕기 위한 자체 도구인 'Ghidra(기드라)'를 개발했습니다.
참고로 발음은 '기드라(Ghee-dra)'입니다. Ghidra는 2019년 3월 5일 샌프란시스코에서 열린 RSA 컨퍼런스에서 무료 오픈소스로 대중에 공개되었으며, 당시 NSA 선임 고문 로버트 조이스(Robert Joyce)의 발표 자료도 함께 공개되어 누구나 확인할 수 있습니다.
Ghidra의 공개가 왜 중요한 의미를 갖는지 제대로 이해하려면, 먼저 리버스 엔지니어링이 무엇이고 어떤 용도로 쓰이는지 알아야 합니다.
리버스 엔지니어링이란 무엇이고, 왜 사용될까?
일반적으로 리버스 엔지니어링(RE)은 어떤 것을 분해해서 그것이 어떻게 만들어졌는지 알아내는 과정을 말합니다. 집에 있는 소형 가전제품을 직접 고치려고 분해해 본 경험이 있다면 이미 리버스 엔지니어링을 해본 셈입니다. 하지만 여기서 말하는 것은 프로그램에 대한 RE입니다. 결국 프로그램도 코드인데, 그럼 코드만 보면 되지 않을까요?
C나 Java 같은 언어로 프로그램을 작성할 때, 코드를 작성하고 나서 컴퓨터에서 실제로 실행하기까지 한 단계가 더 필요합니다. 사람이 작성한 프로그래밍 언어는 사람에게는 읽을 수 있지만 컴퓨터가 바로 이해할 수 있는 형태는 아닙니다. 따라서 컴퓨터가 처리할 수 있는 형태로 변환해야 하는데, 이 과정을 '컴파일'이라고 합니다.
프로그램이 일단 컴파일되면 더 이상 사람이 읽을 수 없는 형태가 됩니다.
그 프로그램이 어떻게 작동하는지 알아내려면 내부 내용을 들여다볼 수 있는 수준까지 분해해야 합니다. 이를 위해서는 전용 툴킷이 필요합니다. 마치 소형 가전제품이나 엔진을 분해할 때 드라이버와 렌치 세트가 필요한 것과 같습니다.
바로 이 지점에서 Ghidra가 등장합니다. Ghidra는 소프트웨어를 분해해 그 작동 원리를 들여다보기 위한 도구 상자입니다. 이미 IDA, Radare, Binary Ninja 같은 유사한 도구들도 존재합니다.
NSA는 Ghidra를 활용해 바이러스, 악성코드, 국가 안보에 위협이 될 수 있는 각종 프로그램을 분석합니다. 그리고 분석 결과를 바탕으로 해당 위협에 대응하기 위한 행동 계획을 수립합니다. 최근 뉴스에서 국가 후원 해킹 사건이 끊이지 않는다는 점을 생각하면, 이것이 얼마나 중요한 일인지 짐작할 수 있습니다.
누구나 Ghidra를 사용할 수 있을까?
꼭 그렇지는 않습니다. 최소한 프로그래밍에 어느 정도 능숙해야 합니다. 소프트웨어 엔지니어일 필요는 없지만, 대학에서 프로그래밍 강좌를 몇 개 수강한 정도라면 Ghidra에 입문해 스스로 사용법을 익힐 수 있습니다.
또한 공식 Ghidra 웹사이트에는 설치 가이드, 빠른 참조 자료, 위키, 이슈 트래커 등이 마련되어 있습니다. 이 모든 것을 제공하는 목적은 누구나 배울 수 있게 하고, 함께 악성 해커로부터 더 안전한 세상을 만들기 위함입니다.
NSA가 이렇게 한 것은 로버트 조이스의 발표에서 밝혔듯이 "사이버 보안 도구를 개선"하고, Ghidra에 능숙하며 그 성장에 기여하는 연구자들의 "커뮤니티를 구축"하기 위해서입니다.
그런데 왜 Ghidra가 큰 의미를 가질까?
첫 번째 이유는 NSA가 만든 도구라는 점입니다. 미국 연방 기관이 보유한 수준의 자원을 가진 회사가 어디 있겠습니까? 세계에서 가장 강력한 국가의 안보를 책임지는 기관에 비하면, 최고의 보안 회사라고 해도 축적된 경험은 비교할 수 없을 것입니다.
그렇기에 매우 강력한 도구입니다. 실제로 보안 연구자 조센 코렛(Joxen Coret)은 "Ghidra는 IDA를 제외하면 기존의 어떤 RE 도구보다도 뛰어나다"고 평하기도 했습니다.
두 번째는 무료라는 점입니다. 사실상 가장 강력한 RE 도구를 무료로 얻을 수 있게 되면서, 보안 연구에 진입하는 장벽은 '컴퓨터 한 대와 인터넷 연결' 수준으로 낮아졌습니다.
이것이 NSA가 Ghidra를 공개한 이유 중 하나이기도 합니다. 새로운 세대의 연구자들이 Ghidra에 능숙해지고, 언젠가 NSA에서 경력을 쌓는 것을 고려하게 되기를 바라는 것입니다.
세 번째는 오픈소스라는 점입니다. 보안 기관이 내부를 쉽게 보여주지 않는 데에는 다 이유가 있습니다. 그들이 일하는 방식을 알면 그들을 무력화하기가 더 쉬워지기 때문입니다. 그럼에도 불구하고 Ghidra의 전체 소스 코드가 공개되어 누구나 살펴보고 정확히 어떻게 작동하는지 확인할 수 있습니다.
그리고 걱정과 달리 정부가 심은 백도어가 있다는 보고는 없습니다. 로버트 조이스는 이 문제를 빠르게 언급하며, 보안 연구 커뮤니티야말로 "백도어가 설치된 것을 공개해서는 안 되는, 이런 취약점을 찾아내 분해하는 사람들의 마지막 커뮤니티"라고 말했습니다.
교육적인 관점에서도 Ghidra는 예비 소프트웨어 엔지니어들이 프로그램을 분해해 작동 방식을 살펴보고, 자신의 프로젝트에 비슷한 방식을 적용하는 법을 배울 수 있게 해줍니다. 다른 사람의 코드를 살펴보는 것은 오랫동안 프로그래머와 개발자들이 실력을 키워온 검증된 방법입니다. 물론 그 코드가 공개적으로 공유된 경우에 한해서입니다.
어쩌면 가장 큰 특징은 Ghidra가 협업을 전제로 설계되었다는 점입니다. 동료나 친구들과 공유 저장소를 만들어 모두가 동시에 하나의 프로젝트에서 작업할 수 있습니다. 덕분에 분석 속도가 극적으로 빨라집니다.
앞으로는 어떻게 될까?
미국 연방 정부는 앞으로 더 많은 보안 관련 소프트웨어를 공개하겠다고 약속했습니다. Ghidra처럼 매우 전문적인 소프트웨어도 있고, 보안이 강화된 안드로이드 버전처럼 사용자 친화적인 소프트웨어도 있을 것입니다.
이 모든 것은 정부와 민간이 협력해 데이터 인프라를 최대한 안전하게 지키기 위한 독특한 시대의 시작을 알리는 신호입니다.