보안 제품정보


새로운 윈도우 취약점 발견! 이름은 배드터널 2016.06.16

비행기 안에서 지루했던 보안전문가, 상상으로 취약점 발견
모든 버전의 윈도우에 적용되는 취약점... 윈도우 작동 방식 자체에 존재


[보안뉴스 문가용] 중국의 한 보안전문가가 MS 윈도우 모든 버전에서 네트워크 트래픽의 하이재킹을 가능하게 하는 설계 오류를 발견했다. 배드터널(BadTunnel)이라는 이름이 붙은 이 버그는 텐센트(Tencent) 쉬안우랩(Xuanwu Lab)의 양 유(Yang Yu)라는 인물이 발견했으며, 현재 MS에 의해 패치가 된 상태다.


“아마도 윈도우라는 것이 세상에 나타난 이후 가장 광범위한 영향력을 끼칠 수 있을 만한 취약점”이라고 양 유는 한 매체와의 인터뷰를 통해 설명했다. “다양한 방법으로 익스플로잇이 가능할 뿐만 아니라 가장 최신 버전인 10을 포함해 모든 버전의 윈도우에서 발견되기 때문입니다. 게다가 성공률도 높고, 공격 자체도 탐지가 매우 어렵습니다.”

배드터널은 여느 취약점처럼 코딩 단계에서 나타나는 오류가 아니다. “배드터널 오류가 나타는 이유는 굉장히 복합적입니다. 전송층 프로토콜, 애플리케이션층 프로토콜, OS가 애플리케이션층 프로토콜을 사용하는 몇 가지 방법, 방화벽 및 NAT 기기들이 사용하는 몇몇 프로토콜 등을 포함해 정상적인 것처럼 보이는 구현(implementation)이 연속적으로 일어날 때 발생합니다.”

배드터널은 모든 버전의 MS 오피스, 에지, IE, MS가 아닌 다른 곳에서 제작한 플러그인 몇 가지로 익스플로잇이 가능하다. 멀웨어를 사용할 수도 있지만 반드시 필요한 것은 아니다. “그렇기 때문에 배드터널 공격이 이루어질 때 탐지가 굉장히 어려워지는 겁니다. 보통 백신들은 멀웨어를 탐지하기 때문이죠. 또한 IIS와 아파치 웹 서버를 통해서도 공격이 가능합니다.”

양 유에 의하면 배드터널은 한 마디로 말해 여러 네트워크들을 가로지르는 NetBIOS 스푸핑 테크닉이라고 볼 수 있다. 공격자가 전혀 탐지되지 않은 채 피해자의 네트워크에 접근하는 게 가능하다는 것으로 방화벽을 우회하는 것은 물론 NAT(Network Address Translation) 기기들 역시 우회가 가능하다.

간단한 공격 방식은 다음과 같다. 1) 피해자가 IE나 에지를 사용해 조작된 웹 페이지를 방문하도록 유도한다. 2) 혹은 조작된 오피스 문서를 열도록 한다. 3) 혹은 악성 플래시 드라이브를 설치하도록 한다. 3) 공격자가 조작한 웹 페이지는 파일 서버나 로컬 프린트 서버처럼 보이나 실상은 피해자의 네트워크 트래픽을 하이재킹한다. 여기에는 HTTP, 윈도우 업데이트, CRL(Certificated Revocation List) 업데이트 등이 포함된다.

배드터널과 연관성이 있는 보안 취약점은 다음과 같다. 1) 네트워크 이름을 정리하고 응답을 수용하는 윈도우 시스템 고유의 방식 2) 임베드된 콘텐츠가 포함된 웹 페이지를 IE와 에지 브라우저가 호환하는 방식 3) IP 주소를 통하여 네트워크 경로를 처리하는 윈도우 시스템의 방식 4) NetBIOS Name Service NB와 NBSTAT 쿼리들이 디지털 교환 처리를 진행하는 방식 5) 같은 UDP 포트(137)에 대한 쿼리들을 처리하는 윈도우 시스템의 방식. 이 모든 것들이 다 합쳐졌을 때 네트워크는 배드터널 취약점을 갖게 된다.

양 유가 예상하는 공격 시나리오는 다음과 같다.
1. 앨리스와 밥은 같은 네트워크에 연결되어 있다. 네트워크에는 방화벽도 있고 NAT 기기도 있다. 밥의 137 UPD 포트에는 앨리스도 접근이 가능하다.

2. 밥이 139와 445 포트를 닫는다. 하지만 137/UDP 포트로 Listen은 계속한다.

3. 앨리스가 파일 URI 혹은 UNC 경로에 접근한다. 앨리스는 이 URI 혹은 UNC 경로가 밥의 것이라고 믿고 있다. 앨리스는 NBNS NBSTAT 쿼리를 밥에게 보낼 예정이다. 또한, NBNS NB 쿼리를 LAN 브로드캐스트 주소로도 보낼 예정이다.

4. 밥이 방화벽을 사용해 139 포트와 445 포트로의 접근을 차단한다면 앨리스는 NBNS NBSTAT 쿼리를 약 22초 후에 보낼 예정이다. 밥이 방화벽이 아니라 서버 윈도우 서비스나 TCP/IP 프로토콜을 통해 NetBIOS를 비활성화시켜서 139 포트와 445 포트를 닫는다면 앨리스는 역시 쿼리를 보낼 예정이다. 단 이 경우, 22초나 기다릴 필요가 없다.

5. 밥이 NBNS NBSTAT 쿼리를 받고나서 교환처리 ID(transaction ID)를 미리 예측해 NBNS NB 응답을 조작한다. 그리고 그것을 다시 앨리스에게로 돌려보낸다. 하트비트 패킷(Heartbeat Packet)을 짧은 주기로 계속 발송한다면 방화벽 및 NAT 기기 대부분은 137/UDP 터널을 열어둘 것이다.

6. 앨리스는 밥이 NBT 캐시로 보낸 분해된 주소를 추가한다. NBT 캐시 입력의 디폴트 TTL은 600초다.

7. 밥은 웹 프록시 자동발견 프로토콜(WPAD)이나 사이트내 자동 터널 주소 프로토콜(ISATAP) 서버인 것처럼 가장해 앨리스의 네트워크 트래픽을 하이재킹할 수 있게 된다.

양 유는 작년에 비행기를 타고 가던 중에 배드터널 오류를 발견했던 것으로 알려졌다. “비행 시간이 너무 길어서 지루했던 때였어요. 머릿속으로 여러 가지 공격 방법을 상상해보다가 전혀 새로운 방식의 무언가가 떠올랐죠. 그래서 비행기에서 내리자마자 제가 상상한 것들을 실험해봤어요. 여러 시스템과 환경에서 다양하게 시도해 보았죠.”

양 유는 해당 오류를 MS에 먼저 보고했다. 1월의 일이었다. 그 후 약 반년의 시간이 흘러 패치가 된 것인데, 아직 해당 방법을 이용한 공격이 실제 벌어지지는 않았다고 한다. “결국 일반 윈도우 사용자라면 패치를 제때 하는 것이 가장 좋은 해결책입니다. 패치를 할 수 없는 사정이 있다면 TCP/IP를 통한 NetBIOS는 비활성화시키세요.”

양 유는 배드터널 취약점에 대한 자세한 내용을 블랙햇 2016 행사를 통해 공개할 예정이다.
Copyrighted 2015. UBM-Tech. 117153:0515BC
[국제부 문가용 기자(globoan@boannews.com)]

<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>