인터뷰

USB 꽂자마자 악성코드 감염…“해결하려면 최소 2년 필요”

이민형

[디지털데일리 이민형기자] 누구나 쉽고 편하게 사용할 수 있는 USB 메모리 드라이브가 기업, 기관의 시스템을 파괴할 수 있는 도구로 사용될 수 있다는 조사결과가 나왔다.

이 방법을 사용하면 윈도, 리눅스 등 운영체제에 상관없이 악성코드를 감염시킬 수 있으며, 일부 시스템에서는 부트로더까지 변조해 해당 시스템 부트영역에 악성코드를 심어 무한정 확산도 가능하다.

주목할 점은 USB의 내부에 자동실행 파일 등을 넣어두는 것이 아니라 USB 컨트롤러의 펌웨어를 조작한다는 것이다. 실제 변조된 USB안에는 어떤 파일도 존재하지 않으며, 포맷을 하더라도 악성코드는 여전히 살아있게 된다.

카르스텐 놀(Karsten Nohl) 시큐리티리서치랩스(Security Research Labs) 연구원
카르스텐 놀(Karsten Nohl) 시큐리티리서치랩스(Security Research Labs) 연구원
카르스텐 놀(Karsten Nohl) 시큐리티리서치랩스(Security Research Labs) 연구원은 6일 더케이서울호텔에서 열린 POC2014에서 ‘나쁜 USB(BAD USB)’를 만들 수 있는 방법과 이를 악용한 사례, 대응방안에 대해 설명했다.

상식적으로 포맷을 한 USB는 어떠한 위협도 존재해서는 안된다. 내부에 존재하는 데이터와 악성코드 모두를 디지털로 삭제하는 과정이기 때문이다. 하지만 USB의 동작을 제어하는 컨트롤러를 조작한다면 문제는 달라진다.

놀 연구원은 “USB 메모리 드라이브는 일반적으로 저장소의 역할만 갖고 있다. 하지만 컨트롤러의 펌웨어를 조작하면 USB를 키보드와 같은 입력장치로 만들 수도 있으며, DNS 서버와 같은 네트워크 카드 등으로도 만들 수 있다”고 설명했다.

USB는 기기별 식별 클래스를 구분해 사용된다. 저장소로 쓸때는 8번 클래스를, 오디오는 1번 클래스를, 비디오는 14번 클래스를 사용하는 식이다. USB의 펌웨어를 변조해 저장소 클래스를 입력 클래스로 바꾸면 USB 메모리 드라이브는 USB키보드로 변경되는 식이다.

이에 대해 놀 연구원은 “약 3개월의 시간을 투자해 USB 컨트롤러 펌웨어를 수정했다. 펌웨어의 소스코드를 변경하는 것은 불가능하기 때문에 특정 바이너리에 기능을 추가하는 방법을 사용했다. 후킹(Hooking)을 사용해 펌웨어가 갖지 못한 기능을 구동할 수 있도록 했다”고 설명했다.

이어 “USB메모리 드라이브를 USB키보드로 변경하면 사전에 입력해둔 명령어의 실행이 가능해진다. 즉, 펌웨어 조작이 된 USB는 아무 데이터가 없더라도 PC에 꽃자마자 자동으로 커맨드프롬프트나 터미널을 실행시켜 악성코드를 감염시킨다”고 덧붙였다.

또 인터넷에 연결돼 있지 않더라도 동작한다. USB를 꽂을 수 있는 포트만 있다면 얼마든지 응용이 가능하다는 것이다. 사라지지 않고 자가증식하는 악의적인 기능도 갖출 수 있다.

지난 2010년 이란 핵발전소를 마비시켰던 스턱스넷의 시작지점이 USB였다는 점을 상기해본다면 이에 대한 위험성은 이미 증명된 셈이다.

국내에서 확산중인 DNS 주소 변경을 통한 파밍도 가능하다. USB가 DNS 서버의 역할을 하면서 DNS 서버 주소를 변경하게 된다. 변경된 DNS 주소로 인해 사용자들은 정상적인 사이트가 아닌 파밍사이트에 접속하게 된다.

실제로 놀 연구원은 페이팔의 DNS 주소를 변조해 파밍사이트로 이동시키는 시연도 보여줬다.

놀 연구원은 “PC에서부터 ATM까지 USB포트가 있는 기기는 모두 위험하다. 한번 감염된 PC는 다른 USB까지 감염시킬 수 있다”며 “최근에는 부팅하는 과정에서 부트로더를 감염시킬 수 있는 취약점도 발견했다”고 말했다.

문제는 이 취약점을 해결할 수 있는 방법이 현재로선 없다는 점이다. 펌웨어를 수정하지 못하도록 막는 방법이 가장 현실적이지만, 이를 구현하기 위해서는 USB메모리 드라이브를 만드는 제조사들이 먼저 움직여야하는데 최소 2년 이상은 걸릴 것이라는게 놀 연구원의 주장이다.

그는 “이러한 취약점을 막기 위해서 화이트리스트 방식으로 시리얼 넘버를 매핑하거나 소스코드를 스캔하자는 의견이 나왔다. 하지만 USB키보드는 시리얼 넘버가 없기때문에 불가능한 일이며, 펌웨어 소스코드를 읽는 것 자체가 불가능하다”고 설명했다.

이어 “부트로더를 변경할 수 없게 개발하는 것도 제안됐으나, 삼성전자도 완벽히 하지 못하는 것을 USB메모리 드라이브 제조사들이 가능키나 하겠는가”라고 덧붙였다.

삼성전자는 매번 새로운 스마트폰을 출시할 때마다 부트로더를 막아 루팅을 못하게 했으나 결국엔 루팅돼 온 사례를 놀 연구원은 설명한 것이다.

USB 취약점 해소 방법에 대해 놀 연구원은 “펌웨어를 수정할 수 없도록 하는 것이 제일 현실적이다. 하지만 이는 쉬운 일이 아니며 최소 2년에서 3년의 시간은 걸릴 것”이라며 “그전까지는 알면서도 당할 수 밖에 없을 것”이라고 강조했다.

한편 놀 연구원은 올해 블랙햇2014에서 이 취약점을 처음으로 공개했으며 POC2014에서는 부팅 시 악성코드를 감염시키는 취약점을 추가로 발표했다.

<이민형 기자>kiku@ddaily.co.kr

이민형
webmaster@ddaily.co.kr
기자의 전체기사 보기 기자의 전체기사 보기
디지털데일리가 직접 편집한 뉴스 채널