해결책
2015년 7월, 해커 피니어스 피셔는 이탈리아 감시 소프트웨어 업체 해킹팀의 데이터 약 400GB를 공개했는데, 여기에는 내부 이메일도 포함되어 있었다. 그중에서 카스퍼스키 랩의 코스틴 라이우는 2013년의 한 협상 내용을 발견했다. 익스플로잇 판매자 비탈리 토로포프가 해킹팀에 '2.5년 전에 작성'되었으며 '앞으로도 몇 년간 살아남을 가능성이 충분한' 실버라이트 제로데이를 제안한 것이었다. 이는 패치도, 공개된 세부 정보도 없는 익스플로잇이 여전히 시스템을 감염시키고 있을 수 있다는 증거였지만, 카스퍼스키가 그것을 찾아낼 수 있어야만 했다.
제로데이는 보통 침해 사고의 포렌식 사후 분석 과정에서 우연히 발견된다. 라이우는 정반대의 접근을 시도했다. 즉 작성자를 프로파일링한 것이다. 그는 토로포프가 공개적인 취약점 공개가 끊기기 전인 2011년부터 2013년 사이에 버그 바운티 프로그램에 공개했던 개념 증명 익스플로잇들을 모아 살펴보았고, 여러 파일에서 반복적으로 나타나는 세 개의 디버깅 문자열을 발견했다. 이는 개발자들이 의도치 않게 컴파일된 코드에 흔히 남기는 잔여물이었다. 7월에 그는 이 문자열들을 YARA 규칙으로 작성해 카스퍼스키의 자동 익스플로잇 방지 도구와 고객 공유 텔레메트리 네트워크에 배포한 뒤 기다렸다.
몇 달이 지나도 아무것도 없었다. 그러다 2015년 11월 25일, 중동의 한 고객 컴퓨터가 일치했다. 토로포프가 공개한 계산기 PoC의 코드를 기반으로 만들어진 실버라이트 원격 코드 실행 익스플로잇이었다. 몇 시간 후 라오스에서 업로드되어 7월 21일에 컴파일된 두 번째 샘플이 바이러스토탈에 나타났는데, 이는 유출된 이메일이 온라인에 공개된 지 2주 후였다. 카스퍼스키는 해당 취약점을 보고했고, 마이크로소프트는 2016년 1월 실버라이트 BinaryReader 버그에 대한 '긴급' 패치를 배포했다.
성과
한 번도 본 적 없는 익스플로잇도 추적할 수 있다. 샘플이 아니라 작성자의 지문을 채취하는 것이다. 그가 공개한 개념 증명에는 비공개 작업물이 물려받을 수 있는 디버그 문자열이 들어 있다.
통한 이유
유출된 자료는 조기 경보 시스템으로 재활용되었다. 훔쳐진 판매용 제안서가 방어자들에게 어떤 미확인 익스플로잇이 존재하는지, 대략 얼마나 오래된 것인지, 누가 만들었는지를 알려준 것이다.
작성자는 곧 서명이다. 익스플로잇 작성자들은 자신의 라이브러리를 재사용하며, 디버그 코드는 컴파일된 바이너리까지 살아남는 경향이 있으므로 공개된 PoC로 비공개 후속 작업을 지문 채취할 수 있다.
센서 네트워크는 이미 존재했다. 카스퍼스키의 옵트인 텔레메트리에 YARA 규칙을 배포함으로써 새로운 것을 배포하지 않고도 수천 대의 고객 컴퓨터를 경보 장치로 바꿀 수 있었다.
방어적 예절이 흔적을 남겼다. 토로포프가 버그 바운티 프로그램에 책임 있게 버그를 공개하며 보낸 수년간의 활동, 즉 공개된 PoC가 그의 비공개 익스플로잇의 지문이 되었다.
공격 귀속은 역으로도 작동한다. 작성자의 습관이 곧 서명이다. 산출물을 찾을 수 없을 때는 그가 공개한 것들로 제작자를 모델링하고, 센서가 일치를 기다리게 하라.
그 후
카스퍼스키는 추가 샘플을 찾지 못했으며, 이는 구매자가 익스플로잇을 외과수술적으로 사용했음을 시사한다. 라이우는 이 익스플로잇의 제로데이 시장 가치를 2만~4만 달러로 추정했다. 토로포프는 코드를 검토한 뒤 WIRED에 해당 익스플로잇은 '내 것이 아니다'라고 말했지만, PoC 부분은 자신의 것임을 확인했다. 라이우는 자신의 팀이 추적하려고 계획했던 무언가를 잡아낸 첫 사례라고 평가했으며, 이 기법을 이제 다른 판매자들의 공개 코드에 적용할 수 있다고 언급했다. 마이크로소프트의 패치는 특정 위협을 제거했지만, 작성자의 지문을 채취한 뒤 기다리는 이 방법은 도구함에 남았다.
근거 확인하기
출처
- Hacking Team's Leak Helped Researchers Hunt Down a Zero-Day WIRED · wired.com ·