| 페이스북 침투테스트 하다가 미스터리 백도어 발견! | 2016.04.25 |
버그바운티 참가차 페이스북 해부한 대만 해커, 누군가의 흔적 발견
페이스북, “버그바운티 참가자 중 한 명”... 하지만 자세한 설명은 생략 ![]() 그는 “페이스북의 인기가 갈수록 높아지고 있어, 언젠가 한 번은 보안 점검을 해보고 싶었다”고 밝혔는데, “다행히 2012년 페이스북이 버그바운티를 시작하면서 합법적으로 이를 해볼 기회가 생겼다”고 이번 점검의 이유를 드러냈다. 마음을 먹은 오렌지 차이는 먼저 ‘영역에 대한 정찰’부터 실행했다고 한다. 주안점은 출입구를 찾아내는 것이었다. 다음 질문들을 물어가며 작업을 시작했다. 1) 구글 해킹으로 찾아낼 수 있는 것은 무엇인가? 2) B Class IP 주소들은 얼마나 사용되고 있는가? C Class IP들은? 3) 어떤 도메인 이름들이 사용되고 있는가? 내부 도메인 이름은 무엇인가? 4) 페이스북이 선호하는 장비나 기술이 있는가? 5) 깃허브나 페이스트빈에 비슷한 정보가 있진 않은가? 오렌지 차이는 “버그바운티는 그저 제한을 두지 않을 테니 얼마든지 공격을 해도 괜찮다는 뜻은 아니”라며 “무차별 공격을 감행하는 것과 법을 지키며 보안 점검을 하는 건 다르니 이에 유의해야 한다”고 강조하기도 했다. 또한 대기업들을 대상으로 침투테스트를 할 때 흔히 발견하는 공통적인 보안 문제점들을 몇 가지 꼽기도 했다. 1. 네트워크의 경계선 혹은 네트워크라는 공간의 영역이라는 것은 규정하기가 상당히 까다롭다. 라우터, 서버, 컴퓨터가 수도 없이 연결되어 있어 ‘보호’라는 걸 제대로 한다면, 오히려 그게 더 신기할 지경이다. 물론 공통적으로 적용될 수 있는 일반 규칙이라는 게 있지만, 틈새는 어디나 존재한다. 공격하는 입장이 훨씬 편리하다. 2. 네트워크 장비 보호에 대한 인식은 아직도 굉장히 낮은 편이다. 네트워크 장비라고 하는 것들 대부분에는 SHELL 제어 장치가 없다. 사용자 인터페이스에서 설정하는 것이 고작이다. 이 장비들의 보호는 네트워크 레이어에서 구축되는데, 제로데이 공격이나 그밖에 다른 공격이 일어나도 사용자는 잘 알아채지 못한다. 3. 사람이 해킹을 매우 쉽게 만들어준다. 특히 소셜 엔지니어링 공격 등을 통해 이미 대량으로 수많은 사람들의 정보가 유출된 상태라 침투의 난이도가 매우 낮아진 상태다. 유출된 데이터베이스에 접속해 VPN 접근을 통해 사용자의 크리덴셜을 찾기만 하면 된다. 이 방법이 통하면 사실상 해킹도 필요 없고 보안 장치들도 무용지물이 된다. 하지만 이 사람은 해커가 아니라 보안 전문가였기 때문에 세 번째 방법을 쓸 수는 없었다. 그래서 평소 하던 방식 그대로 페이스북에 대한 침투 테스트를 했다. 그 일환으로 페이스북의 도메인 이름들을 검색했는데 페이스북뿐 아니라 Reverse Whois도 사용했다. 그런데 정말 재미있는 도메인 이름이 나왔다고 한다. 바로 tfbnw.net이었다. TFBNW는 페이스북 네트워크(The Facebook Network)의 줄임말 같아 보였다. 곧이어 퍼블릭 데이터를 통해 vpn.tfbnw.net이라는 서버도 발견할 수 있었다고 한다. vpn.tfbnw.net에 접근하니 주니퍼(Juniper)의 SSL VPN 로긴 인터페이스가 나왔다. “하지만 꽤나 최신 버전이었고, 익스플로잇 가능한 취약점을 찾기란 힘들어보였다. 그래서 다른 방법을 쓰기로 했다.” 오렌지 차이는 vpn.tfbnw.net의 C Class IP를 열거하기 시작했고, 역시나 재미있는 서버들을 찾았다고 전달한다. “Mail Server Outlook Web App, 5 BIGIP SSL VPN, CISCO ASA SSL VPN, Oracle E-Business, MobileIron MDM”이었다. 페이스북에 굉장히 중요한 C Class IP들일 것 같았다고 한다. “본격적인 이야기는 여기서부터다.” 취약점 찾아내기 위 C Class IP 중에서 특수한 서버가 하나 있었다고 오렌지는 기록한다. files.fb.com이었다. “로고와 푸터를 보건데 액셀리온(Accellion)의 안전파일전송(Secure File Transfer)와 관련된 것으로 보였다. 즉, FTA였던 것이다.” 오렌지는 “FTA는 파일 전송을 안전하게 해주는 제품으로 온라인 파일 공유 및 싱크 등을 가능하게 해준다”고 설명을 덧붙였다. “AD, LDAP, Kerberos, SSL VPN 서비스와 호환 및 통합이 가능하다.” 여기까지 온 오렌지는 혹시 공개된 익스플로잇이 있는지 조사했다. 그냥 평범한 인터넷 검색이었다. HD 무어(HD Moore)가 발견한 최신 익스플로잇에 대한 정보를 라피드7(Rapid7)에서 찾을 수 있었다. 하지만 해당 취약점은 적용대상이 될 수 없었다. files.fb.com이 이미 v0.20으로 업데이트가 되어 있었던 것. “그러나 소스코드 익스플로잇을 보니 응용해봄직 해보였다. 코딩 스타일 상 더 찾으면 취약점이 나올 것 같았다. 그래서 FTA 제품들에서 제로데이 취약점들을 찾기 시작했다.” 블랙박스 테스팅과 화이트박스 테스팅을 했고, 이전 버전의 소스코드 조각들을 검색해 참고했다. 그리고 원하던 걸 발견할 수 있었다. 하지만 익스플로잇이 쉬운 취약점은 아니었다고 그는 설명한다. 그래서 더 많은 조사와 연구를 해야 했다. 결국 7가지 취약점을 발견할 수 있었는데 1) XSS 취약점 세 개, 2) Pre-Auth SQL 인젝션 취약점 한 개, 3) 알려진 비밀 키 취약점 한 개, 4) 로컬 권한 상승 취약점 두 개가 바로 그것이었다. “페이스북과 액셀리온, CERT 팀에 이 사실을 알렸다. 이 네 가지 종류의 취약점에는 각각 새로운 CVE 번호가 부여되었다.” 해당 번호는 CVE-2016-2350, CVE-2016-2351, CVE-2016-2352, CVE-2016-2353이다. 그리고 오렌지 차이는 이 취약점들을 통해 서버를 완벽히 통제 아래 둘 수 있게 되었다고 한다. “이제 남은 건 들키지 않는 것”이었다며 “그러려면 공격자 혹은 테스터가 해당 환경과 ‘친해져야’ 한다”고 설명했다. 그런데 뭔가가 이상하다? 오렌지 차이는 취약점에 대한 세부 내용을 페이스북에 보고하기 위해 정리하기 시작했다. 그런데 웹 로그에서 뭔가 미심쩍은 부분이 있었다. “/var/opt/apache/php_error_log에 좀 이상한 PHP 오류 메시지들이 있었다. 읽어보니 코드를 온라인에서 수정할 때의 오류 메시지였다. 추적해보니 수상한 웹쉘 파일들이 이전 ‘방문자’들에 의해 남겨진 것을 발견할 수 있었다. “이상해서 파일을 더 조사해보니 누군가 크리덴셜 페이지에 프록시를 만들어놓고 페이스북에서 근무하는 직원들이 로그인 하기를 기다리고 있었던 것이었다. 누군가 로그인을 할 경우 암호는 웹 디렉토리에 저장이 되었고, 해커는 WGET을 가끔씩 실행시켜 수집된 정보를 빼간 것으로 보였다.” 오렌지 차이가 이 사실을 발견했을 때 이미 300여 개의 로그인 크리덴셜이 저장되어 있었다. 2월 1~7일 사이에 수집된 정보들이었다. 누군가 페이스북 내부자들의 크리덴셜을 은밀히 모으고 있었던 것. 차이는 곧바로 이 사실을 페이스북에 알렸고, 빠른 조치를 취해야 할 문제였으므로 스크린샷 다수와 시간의 흐름까지 포함된 자세한 설명도 남겼다. “작년 7월초와 9월 중순, 두 번에 걸쳐 해커의 침투가 이루어진 것처럼 보인다. 하지만 같은 자의 소행인지 아닌지, 해커의 정체가 무엇인지는 알 방법이 없었다.” 페이스북은 오렌지 차이에게 1만 달러의 버그바운티 보상금을 지불했다. 또한 차이가 발견한 ‘방문자’ 역시 페이스북 버그바운티 참가자라고 설명했지만 정체를 밝힐 수는 없다고 했다. 오렌지 차이의 그림까지 곁들인 자세한 설명은 본인 블로그에서 확인이 가능하다. [국제부 문가용 기자(globoan@boannews.com)] <저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지> |
|
|
|