IoT 그리고 임베디드 리눅스 악성코드
CSI 뉴욕 시즌 6의 두 번째 에피소드인 ‘블랙리스트(Blacklist)'에서는 병으로 외출을 할 수 없는 범인이 집에서 자동차, POS 시스템, 엘리베이터를 해킹해 평소 앙심을 품고 있던 사람들을 살해하는 내용이 나온다. 다양한 사물이 인터넷에 연결되고 있는 사물인터넷 시대에 어울리는 내용이 아닐까 싶다. 드라마 특성상 다소 과장이 있을 수 있지만 현실에서도 인터넷에 연결된 다양한 기기가 범죄에 악용되기 시작했다.
인터넷에 연결된 기기가 증가하면서 이미 공격자들은 이들 기기를 대상으로 한 해킹 및 악성코드 제작을 시도하고 있다. 현재 사물인터넷은 다양한 플랫폼이 경쟁을 하고 있는데, 이 중 인기있는 임베디드 리눅스와 이를 겨냥한 악성코드에 대해 알아보자.
최근 다양한 제품이 인터넷에 연결 가능하게 출시되면서 사물인터넷 (Internet of Things)이란 용어가 유행하기 시작한다. 사물인터넷으로 분류될 수 있는 기기는 다양한데 이 중에서도 임베디드 리눅스를 이용한 다양한 제품이 존재한다.
임베디드 리눅스 기반의 기기
현재 다양한 운영체제가 사물인터넷 주도권을 놓고 경쟁하고 있다. 이중 임베디드 리눅스(Embedded Linux)도 많이 이용되고 있다. 특히 인터넷 공유기(홈 라우터, Wi-Fi Router, Wireless Router 등으로도 불림), 셋톱박스(Set-top box), NAS(Network Attached Storage) 등에서 임베디드 리눅스가 널리 이용되고 있다.
인터넷 공유기와 NAS는 주변에서 가장 흔하게 볼 수 있는 임베디드 리눅스로 구동되는 시스템 중 하나이다. 인터넷 공유기는 가정, 소형 사무실, 매장에서 널리 이용되고 있다. 공공 장소에 설치된 인터넷 공유기를 통해 다른 사람이 무선 통신 내용을 몰래 훔쳐보는 스니핑(Sniffing)은 잘 알려졌지만 인터넷 공유기 자체에 악성코드가 존재한다는 것이 더 큰 문제다.
특히 인터넷 공유기와 NAS는 인터넷 공유나 자료 공유를 위해 보통 24시간 켜져 있어 공격자가 노리는 대표적 시스템이다. 게다가 이들 시스템은 데스크톱과 비교했을 때는 저성능이지만 다른 사물 인터넷 제품과 비교했을 때 컴퓨터에 가까워 공격자들의 우선 목표가 되고 있다.
임베디드 리눅스 기반 기기의 보안 문제
임베디드 리눅스 기반의 기기들의 상당수는 보안을 고려하지 않고 설계했거나 제작자 편의의 백도어 기능을 포함한 경우가 있다.
보안을 고려하지 않은 설계
많은 사물인터넷 제품이 보안을 고려하지 않고 만들어지고 일부 인터넷 공유기와 IP 카메라는 텔넷(telnet) 포트를 열어 둬 외부에서 텔넷으로 접속할 수 있다. 접속을 위해서는 아이디와 암호가 필요한데 많은 사용자가 고정된 공장 초기 암호를 그대로 사용하고 있어 공격자가 쉽게 접속할 수 있다. 이런 기기에는 보통 비지박스(BusyBox)라는 리눅스 명령을 실행해 주는 프로그램이 내장되어 있는데 이 중 wget 명령을 지원하면 손쉽게 다른 악성코드를 다운로드 해 실행할 수도 있다.
[그림 1] 텔넷(telnet)으로 접속해 wget 명령 실행
백도어 기능 포함
많은 기기에서 외부에서 접속 할 수 있는 백도어가 발견되기도 한다. 개발자가 디버깅 목적 등으로 만들어 두는 경우도 있지만 제작사에서 의도적으로 만들어 둔 경우도 있다. 외부에서 기기에 접근할 수 있다는 것은 매우 심각한 문제이며, 특히 일반인이 기기에 내장된 백도어 기능을 찾기도 어렵다.
인터넷 연결에 따른 보안 위협
다양한 기기가 인터넷에 연결되면서 여러 위협에 노출되고 있다. 특히 사용자 편리를 위해 많은 인터넷 연결 기기가 외부에서 접속 가능하게 되어 있는데 공격자는 이점을 이용하기도 한다.
사생활 침해 및 정보유출
카메라가 장착된 기기의 경우에는 일상 생활을 몰래 훔쳐 보는 사생활 침해가 발생할 수 있다.
실제로 미국에서는 IP 카메라(아기 모니터 등으로도 불림)를 해킹해 집안을 훔쳐보거나 심지어 말을 건네는 일이 발생하기도 했다.
[그림 2] 공격자의 목표가 된 IP 카메라
또, 네트워크에 연결된 CCTV(Closed Circuit Television)에 몰래 접속해 매장에 사람이 있는지 확인하는 용도로 이용되기도 한다.
[그림 3] CCTV로 본 계산대
설정 변경/데이터 조작
기기가 해킹되면 내부 설정을 변경해 원하지 않는 내용을 출력하거나 보관 중인 데이터를 조작할 수 있다. 또, 원치 않는 광고가 노출 되거나 피싱 사이트나 악성코드 설치 사이트로 유도될 수 있다. 특히 의료 기기가 공격을 받아 수치가 조작될 경우 사람 목숨이 위험해 질 수도 있다.
악성코드 감염
임베디드 리눅스 시스템은 텔넷이나 웹 서버 기능 지원을 위해 다양한 포트를 열어두고 있다. 공격자는 로그인 정보를 추측하거나 취약점을 이용해 기기에 접속하는 악성코드를 만들 수 있다. 현재까지 발견된 악성코드는 대부분 디도스 공격, 광고 노출, 피싱 사이트 유도, 가상화폐 채굴 등의 목적으로 가지고 있다.
주요 임베디드 리눅스 악성코드
임베디드 리눅스 악성코드는 2008년에 처음 보고되었고 계속 발견되고 있다. 초기 임베디드 리눅스 악성코드는 밉스(MIPS) 프로세스를 사용하는 인터넷 공유기만 감염 시킬 수 있었지만 2012년 발견된 에이드라(Aidra) 웜은 밉스 외 다양한 프로세스를 지원해 인터넷 공유기뿐 아니라 셋톱 박스 등 다양한 임베디드 리눅스 환경에서 활동할 수 있었다. 많은 악성코드가 디도스 공격 기능을 가지고 있지만 2013년 발견된 달로즈(Darlloz) 웜은 비트코인과 같은 가상화폐 채굴이 주목적이다. 2014년 말에는 해킹 그룹 리자드 스쿼드(Lizard Squad)가 Gafgyt 변형으로 일으킨 디도스 공격으로 게임 관련 웹사이트 장애가 발생하기도 했다.
[그림 4] 주요 임베디드 리눅스 악성코드
하이드라(Hydra)
최초로 알려진 인터넷 공유기 악성코드는 하이드라(Hydra)이다. 하이드라는 디도스 공격 악성코드로, 2008년에도 언더그라운드 포럼에 관련 악성코드 정보가 올라와 있어 그 이전부터 제작되었을 가능성이 높다.
[그림 5] 2008년 하이드라(Hydra) 정보
싸이봇(Psybot)
싸이봇(Psybot)은 2009년 1월 테니 보메(Teny Baume)가 발견했다. 인터넷 공유기 악성코드 중 처음으로 일반에 널리 퍼졌으며 디도스 공격 기능을 가지고 있다.
유텔텐드(Uteltend, 척노리스 봇)
유텔텐드(Uetltend)는 척노리스 봇으로도 알려져 있으며, 2009년 말 체코 마사리코바(Masaryk) 대학에서 발견했다. 공격 대상 시스템을 찾아 텔넷 브루트 포스 공격(Telnet brute force attack)으로 감염시킨다. 소스코드 내 이탈리아어로 ‘[R]anger Killato : in nome di Chuck Norris!’가 존재한다고 한다. UPX 로 패킹되어 있으며 ‘Knb Keep nick bot 0.2.2’ 문자열이 존재한다.
에이드라(Aidra, Lightaidra)
에이드라는 2012년 2월 최초 보고되었으며 국내에도 감염 사례가 발생했다. 기존 임베디드 리눅스 악성코드가 밉스(MIPS) 프로세스를 사용하는 인터넷 공유기만 공격 대상이었다면 이 악성코드는 밉스뿐만 아니라 ARM, MIPSEL, 파워 PC, SuperH 등의 다양한 프로세스에서도 동작하도록 제작되었다. IRC 봇 악성코드로 디도스 공격 기능을 가지고 있으며 소스코드가 공개되어 다양한 변형이 존재한다. 2014년 발견된 변형은2013년 발견된 경쟁 악성코드인 달로즈(Darlloz) 제거 기능이 추가되었다.
달로즈(Darlloz, Zollard)
2013년 10월 발견된 사물인터넷 웜으로 x86, MIPS, ARM, 파워PC 등의 시스템을 감염 시킬 수 있다. 다른 악성코드가 주로 디도스 공격 기능이 있는데 반해 이 악성코드는 비트코인 같은 가상화폐 채굴 기능을 가지고 있다. 시만텍에 따르면 전 세계 31,000 대 시스템 감염이 추정되는데 17%가 국내 시스템이었다.
Gafgyt
Gafgyt는 2014년 8월부터 존재가 확인되었다. 특히 2014년 말 리자드 스쿼드(Lizard Squad)에서 엑스박스 라이브(Xbox Live)와 플레이스테이션 네트워크(PlayStation Network)에 디도스 공격할 때 이용돼 유명해졌다. 2015년 1월 소스코드가 공개되어 여러 변형이 존재한다.
임베디드 리눅스 악성코드 예방
현재까지 인터넷 공유기나 NAS에 악성코드가 감염되었을 때 진단 및 치료 할 수 있는 마땅한 방법이 없다. 백신 프로그램이 존재하지 않고 백신 프로그램이 존재해도 제조사 도움이 없으면 프로그램 설치도 어렵다. 따라서 악성코드 감염을 예방하기 위한 노력이 필요하다.
우선 인터넷 공유기나 NAS의 공장 초기화 암호는 반드시 변경해야 한다. 새로운 암호는 숫자와 특수 문자를 섞어서 사용하고 주기적으로 변경하면 가장 좋다.
공격자는 최근 인터넷 공유기 취약점을 찾아 계속 공격하고 있어 제조 업체에서도 주기적으로 펌웨어 업데이트를 제공하고 있다. 인터넷에 연결된 기기는 최신 펌웨어로 업데이트 해야 한다.
공격자들은 대부분 외부에서 접근하는 기능을 악용하고 있다. 따라서 꼭 필요한 경우가 아니라면 외부 접근 기능을 해제하고 사용한다.
이런 예방 조치에도 불구하고 악성코드에 감염될 수 있다. 하지만, 대부분의 임베디드 리눅스 시스템은 백신 프로그램이 존재하지 않아 악성코드에 감염되면 수동으로 제거해야 한다. 최신 펌웨어로 업데이트 해야 하는데 많은 사용자들이 펌웨어도 업데이트를 해야한다는 사실을 모르거나 펌웨어 업데이트 방법을 알지 못하는 실정이다. 따라서 제조 업체는 이러한 문제를 해결하기 위해서 컴퓨터 운영체제와 같은 자동 업데이트 기능을 고려되어야 한다.
최근 인터넷에 연결된 제품이 증가하고 있다. 이 중 인터넷 공유기나 NAS는 저가 컴퓨터만큼의 성능을 갖추고 있다. 공격자는 이런 시스템을 놓치지 않고 이미 몇 년 전부터 꾸준한 공격을 진행 중이었지만 잘 알려지지 않고 있었다. 게다가 몇몇 악성코드는 소스코드가 공개되어 다양한 변종이 출현했다. 하지만 아직까지 예방 방법도 쉽지 않고 악성코드에 감염되어도 마땅한 치료 방법이 없다. 인터넷에 연결된 기기가 다양해지고 시스템 성능이 올라갈수록 악성코드 문제도 증가할 것이다.
현재 임베디드 리눅스 악성코드는 주로 인터넷 공유기 같은 가정 내의 네트워크 장비에 국한되어 있지만 악성코드 제작자들은 좀더 다양한 기기를 감염시키기 위한 노력도 진행하고 있다. 문제가 더 심각해지기 전에 정부, 업계, 보안업체가 힘을 합쳐 보안 문제를 고민할 때가 아닐까 싶다. 그리고 개인과 기업도 인터넷 연결 기기를 구매할 때 가격보다는 보다 신뢰할 수 있고 지속적인 펌웨어 업그레이드가 가능한 업체를 선택해야 한다.
[참고 문헌]
[1] Marta Janus/Kaspersky, ‘Heads of the Hydra, Malware for Network Devices’, 2011
[2] Marta Janus/Kaspersky, ‘State of play: network devices facing bulls-eye’, 2014
[3] 손기종/공유기 공격 사례를 통한 사물인터넷 기기 보안 위협, 2015
- AhnLab분석팀 차민석 책임연구원