2019.05.09

리뷰 | '소문 무성했던' NSA 리버스 엔지니어링 툴 '기드라'

J.M. Porup | CSO
블록 버스터급 악성코드 스턱스넷(Stuxnet)의 개발 배후로 알려진 NSA(National Security Agency)가 악성코드를 연구하는 리버스 엔지니어의 수를 늘리기 위해 오픈 소스 리버스 엔지니어링 프레임워크 '기드라(Ghidra)'를 공개했다. 오랫동안 IDA 프로(IDA Pro)가 지배하던 리버스 엔지니어링 시장에 균열을 일으키는 것은 물론, 많은 사람이 비싼 IDA 프로 라이선스 없이 리버스 엔지니어링 세계에 입문할 수 있게 될 전망이다.

물론 기존 IDA 프로 사용자는 기드라로의 전향을 서두르지 않고 있다. 워크플로와 사용자 정의를 기드라로 이식하는 시간과 노력이 최소한 단기적으로는 그만한 가치가 없기 때문이다. 그러나 장기적으로 기드라 생태계가 활성화하면 IDA 프로의 시장 점유율을 잠식하고 빠르게 성장할 것이다.

지난 3월 RSA에서 아파치 라이선스로 공개된 기드라는 필요에 따라 손쉽게 수정해 사용할 수 있다. 실제로 전 세계 보안 연구원이 신속하게 기드라의 소스 코드를 손대기 시작했다. 기드라는 몇 개의 컴퓨터에 정식 라이선스가 설치돼 있는지 확인할 필요가 없으며, 원하는 대로 여러 워크스테이션(또는 서버)에 설치할 수 있다. 기드라는 공개된 지 얼마 되지 않았지만 IDA 프로의 대안으로 인식되기에 충분했다. 여기서는 일단 기드라가 무엇인지, 사용하기 위해 무엇이 필요한지 살펴보자.

기드라란 무엇인가?
기드라는 미국 정부가 자체 개발한 리버스 엔지니어링 프레임워크다. 2017년 위키리크스는 볼트(Vault) 7 조사의 일환으로 기드라의 존재 사실을 폭로한 바 있다. 2년이 지난 올해 RSA에서 NSA는 기드라의 소스 코드를 정식으로 공개했다.
 
기드라 설치

NSA가 왜 기드라를 공개했는지 의도에 대한 논쟁은 차지하고, 기드라가 유용하다는 것은 부인할 수 없는 사실이다. 리버스 컴파일러, 문맥 도움말 메뉴, 일반 사용자를 위한 사용자 인터페이스 등을 지원한다. 리버스 엔지니어링 경험이 전혀 없는 사람도 1시간 정도면 기드라를 설치해 사용할 수 있고 어셈블리 편집과 바이너리 리컴파일도 막힘없이 할 수 있다.
 
기드라의 자동 분석 기능

이 프레임워크는 플랫폼을 가리지 않는다. 윈도우, 리눅스, 맥에서 구동된다. 그러나 대부분의 사용자는 OS X 버전이 다소 신뢰성이 떨어지므로 리눅스나 윈도우를 권장한다. 여기서는 리눅스를 사용해 기드라를 테스트했다.
 
단계적 어셈블리와 역컴파일된 C 코드
 
기드라는 헤드리스 모드를 지원하므로 연구원이 여러 개의 클라우드 인스턴스를 생성해 대규모 리버스 엔지니어링을 수행할 수 있다. IDA 프로를 사용했다면 기술적으로 어렵고 비용도 높았을 것이다. 또한 기드라는 대형 바이너리를 리버스 엔지니어링 할 때 헤드리스 모드로 서버로써 배치해 그룹 협업을 할 수 있다. 이는 IDA 프로가 지원하지 않는 기능이다.

기드라 시작하기
리버스 엔지니어링은 매우 난해한 분야지만 기드라를 이용하면 손쉽게 시작할 수 있다. 리버스 엔지니어링에 문외한인 초보자라면 온라인에서 초보 리버스 엔지니어를 위한 교육 툴 크랙미(crackme)를  참고하면 된다. 구글에서 다양한 크랙미 튜토리얼을 검색해 찾을 수 있다. 프로그래밍 경험이 있다면 도움이 될 것이고 C에 대한 지식도 유용하다. 일부 경우는 어셈블리가 필요할 수도 있다.

리버스 엔지니어링 초보자에게 가장 유용한 기능은 기드라의 역컴파일러(Decompiler)다. 쇼군 랩(Shogun Lab)의 취약성 연구원 스티븐 패터슨은 "어셈블리의 일부를 선택하면 역컴파일러 창 안에서 역컴파일링된 코드가 강조 표시된다. 이를 통해 하이레벨 코드가 어떻게 역어셈블리된 코드로 맵핑 되는지 이해할 수 있다. 리버스 엔지니어링을 처음 시작하는 경우 (기드라의) 진입 장벽이 매우 낮다"라고 말했다.

숙련된 리버스 엔지니어라면 기드라에 포함된 연습 파일이 기드라를 빠르게 이해하는 데 도움이 될 것이다. 독점 소프트웨어인 IDA 프로와 달리 기드라는 사용자가 작동 방식을 스크립트로 작성하거나 별도로 자유롭게 정의할 수 있다.
 
기드라 vs. IDA 프로
그렇다면 기드라와 IDA 프로를 비교하면 어떨까? 이에 대해 숙련된 리버스 엔지니어의 의견은 갈린다. 기드라가 NSA에서 실제로 쓰이는 완성도 높은 소프트웨어이며 많은 경우 IDA 프로를 대체할 수 있음은 분명하다. 그러나 이미 관련 인프라와 워크플로를 가진 기업은 툴을 교체하는 데 시간이 걸리고 결국 기존의 IDA 프로 라이선스를 유지하는 것보다 비용이 높을 수 있다.

보안 전문가 마이클 그런은 블로그를 통해 "기존 솔루션에서 사용하고 있는 툴, 도움말, 스크립트를 기드라에서 사용할 수 없을 가능성이 크다. 따라서 이런 것을 주로 사용하고 모든 것을 기드라로 이식할 시간이 없다면 기존 방식을 고수하는 것이 더 좋을 수 있다"라고 밝혔다. 이런 '사소한' 점이 모이면 결국 많은 기업이 기드라를 사용할 수 없는 이유가 될 수도 있다. 그런은 "이런 기업은 기존의 툴 체인에 많은 엔지니어링 작업이 포함된 경우가 많다. 무수히 많은 플러그인, 확장기능, 워크플로, 과거 분석, 직원 교육 같은 것이다. 기드라에는 이 모든 것이 빠져 있으므로 처음부터 다시 시작해야 한다"라고 말했다.

결국 단기적으로 보면 기드라는 기존 기업의 작업 방식을 혁신하기는 힘들 것이다. 그러나 새로운 기업의 진입 장벽을 낮추고 신규 리버스 엔지니어를 교육하는 데는 도움이 될 것이다. 중장기적으로는 이 무료 오픈 소스 툴이 IDA 프로의 시장 점유율을 잠식할 수밖에 없을 것이다. 언젠가는 기드라 사용자가 NSA 악성코드를 찾아 리버스 엔지니어링 하는 날이 올 수도 있다. ciokr@idg.co.kr



2019.05.09

리뷰 | '소문 무성했던' NSA 리버스 엔지니어링 툴 '기드라'

J.M. Porup | CSO
블록 버스터급 악성코드 스턱스넷(Stuxnet)의 개발 배후로 알려진 NSA(National Security Agency)가 악성코드를 연구하는 리버스 엔지니어의 수를 늘리기 위해 오픈 소스 리버스 엔지니어링 프레임워크 '기드라(Ghidra)'를 공개했다. 오랫동안 IDA 프로(IDA Pro)가 지배하던 리버스 엔지니어링 시장에 균열을 일으키는 것은 물론, 많은 사람이 비싼 IDA 프로 라이선스 없이 리버스 엔지니어링 세계에 입문할 수 있게 될 전망이다.

물론 기존 IDA 프로 사용자는 기드라로의 전향을 서두르지 않고 있다. 워크플로와 사용자 정의를 기드라로 이식하는 시간과 노력이 최소한 단기적으로는 그만한 가치가 없기 때문이다. 그러나 장기적으로 기드라 생태계가 활성화하면 IDA 프로의 시장 점유율을 잠식하고 빠르게 성장할 것이다.

지난 3월 RSA에서 아파치 라이선스로 공개된 기드라는 필요에 따라 손쉽게 수정해 사용할 수 있다. 실제로 전 세계 보안 연구원이 신속하게 기드라의 소스 코드를 손대기 시작했다. 기드라는 몇 개의 컴퓨터에 정식 라이선스가 설치돼 있는지 확인할 필요가 없으며, 원하는 대로 여러 워크스테이션(또는 서버)에 설치할 수 있다. 기드라는 공개된 지 얼마 되지 않았지만 IDA 프로의 대안으로 인식되기에 충분했다. 여기서는 일단 기드라가 무엇인지, 사용하기 위해 무엇이 필요한지 살펴보자.

기드라란 무엇인가?
기드라는 미국 정부가 자체 개발한 리버스 엔지니어링 프레임워크다. 2017년 위키리크스는 볼트(Vault) 7 조사의 일환으로 기드라의 존재 사실을 폭로한 바 있다. 2년이 지난 올해 RSA에서 NSA는 기드라의 소스 코드를 정식으로 공개했다.
 
기드라 설치

NSA가 왜 기드라를 공개했는지 의도에 대한 논쟁은 차지하고, 기드라가 유용하다는 것은 부인할 수 없는 사실이다. 리버스 컴파일러, 문맥 도움말 메뉴, 일반 사용자를 위한 사용자 인터페이스 등을 지원한다. 리버스 엔지니어링 경험이 전혀 없는 사람도 1시간 정도면 기드라를 설치해 사용할 수 있고 어셈블리 편집과 바이너리 리컴파일도 막힘없이 할 수 있다.
 
기드라의 자동 분석 기능

이 프레임워크는 플랫폼을 가리지 않는다. 윈도우, 리눅스, 맥에서 구동된다. 그러나 대부분의 사용자는 OS X 버전이 다소 신뢰성이 떨어지므로 리눅스나 윈도우를 권장한다. 여기서는 리눅스를 사용해 기드라를 테스트했다.
 
단계적 어셈블리와 역컴파일된 C 코드
 
기드라는 헤드리스 모드를 지원하므로 연구원이 여러 개의 클라우드 인스턴스를 생성해 대규모 리버스 엔지니어링을 수행할 수 있다. IDA 프로를 사용했다면 기술적으로 어렵고 비용도 높았을 것이다. 또한 기드라는 대형 바이너리를 리버스 엔지니어링 할 때 헤드리스 모드로 서버로써 배치해 그룹 협업을 할 수 있다. 이는 IDA 프로가 지원하지 않는 기능이다.

기드라 시작하기
리버스 엔지니어링은 매우 난해한 분야지만 기드라를 이용하면 손쉽게 시작할 수 있다. 리버스 엔지니어링에 문외한인 초보자라면 온라인에서 초보 리버스 엔지니어를 위한 교육 툴 크랙미(crackme)를  참고하면 된다. 구글에서 다양한 크랙미 튜토리얼을 검색해 찾을 수 있다. 프로그래밍 경험이 있다면 도움이 될 것이고 C에 대한 지식도 유용하다. 일부 경우는 어셈블리가 필요할 수도 있다.

리버스 엔지니어링 초보자에게 가장 유용한 기능은 기드라의 역컴파일러(Decompiler)다. 쇼군 랩(Shogun Lab)의 취약성 연구원 스티븐 패터슨은 "어셈블리의 일부를 선택하면 역컴파일러 창 안에서 역컴파일링된 코드가 강조 표시된다. 이를 통해 하이레벨 코드가 어떻게 역어셈블리된 코드로 맵핑 되는지 이해할 수 있다. 리버스 엔지니어링을 처음 시작하는 경우 (기드라의) 진입 장벽이 매우 낮다"라고 말했다.

숙련된 리버스 엔지니어라면 기드라에 포함된 연습 파일이 기드라를 빠르게 이해하는 데 도움이 될 것이다. 독점 소프트웨어인 IDA 프로와 달리 기드라는 사용자가 작동 방식을 스크립트로 작성하거나 별도로 자유롭게 정의할 수 있다.
 
기드라 vs. IDA 프로
그렇다면 기드라와 IDA 프로를 비교하면 어떨까? 이에 대해 숙련된 리버스 엔지니어의 의견은 갈린다. 기드라가 NSA에서 실제로 쓰이는 완성도 높은 소프트웨어이며 많은 경우 IDA 프로를 대체할 수 있음은 분명하다. 그러나 이미 관련 인프라와 워크플로를 가진 기업은 툴을 교체하는 데 시간이 걸리고 결국 기존의 IDA 프로 라이선스를 유지하는 것보다 비용이 높을 수 있다.

보안 전문가 마이클 그런은 블로그를 통해 "기존 솔루션에서 사용하고 있는 툴, 도움말, 스크립트를 기드라에서 사용할 수 없을 가능성이 크다. 따라서 이런 것을 주로 사용하고 모든 것을 기드라로 이식할 시간이 없다면 기존 방식을 고수하는 것이 더 좋을 수 있다"라고 밝혔다. 이런 '사소한' 점이 모이면 결국 많은 기업이 기드라를 사용할 수 없는 이유가 될 수도 있다. 그런은 "이런 기업은 기존의 툴 체인에 많은 엔지니어링 작업이 포함된 경우가 많다. 무수히 많은 플러그인, 확장기능, 워크플로, 과거 분석, 직원 교육 같은 것이다. 기드라에는 이 모든 것이 빠져 있으므로 처음부터 다시 시작해야 한다"라고 말했다.

결국 단기적으로 보면 기드라는 기존 기업의 작업 방식을 혁신하기는 힘들 것이다. 그러나 새로운 기업의 진입 장벽을 낮추고 신규 리버스 엔지니어를 교육하는 데는 도움이 될 것이다. 중장기적으로는 이 무료 오픈 소스 툴이 IDA 프로의 시장 점유율을 잠식할 수밖에 없을 것이다. 언젠가는 기드라 사용자가 NSA 악성코드를 찾아 리버스 엔지니어링 하는 날이 올 수도 있다. ciokr@idg.co.kr

X