백도어
백도어(backdoor)는 인증되지 않은 사용자에 의해 컴퓨터의 기능이 무단으로 사용될 수 있도록 컴퓨터에 몰래 설치된 통신 연결 기능으로서, 정상적인 인증 절차를 거치지 않고 컴퓨터와 암호 시스템 등에 접근할 수 있도록 하는 방법이다.
개요
백도어의 사전적인 정의는 '뒷문'인데, 의미도 뒷문 그대로이다. 백도어는 정상적인 인증 절차를 거치지 않고 컴퓨터와 암호 시스템 등에 접근할 수 있도록 하는 방법이다. 시스템을 설계한 시스템 설계자, 혹은 시스템을 관리하는 관리자에 의해 남겨진 시스템적인 보안 허점이다. 설계자가 허점을 일부러 남겨놓는 경우도 있는데, 이는 개발 단계에서의 테스트를 위해 혹은 유지 보수를 할 때 효율성을 위해 특수 계정을 허용하는 것이다. 하지만 이런 개발을 위한 의도를 비양심적으로 활용하여 비인가된 접근을 시도하거나, 개발이 완료된 후 삭제되지 않은 백도어를 발견하여 악용하게 될 경우는 위험하다. 그렇게 된다면 누군가 사용자의 접속 기록 및 로그인 정보 등 시스템 사용 내역을 볼 수 있는데, 더 심한 경우에는 사용자의 금융 정보를 탈취하여 금전적인 피해까지 입힐 수 있다.[1]
백도어는 시스템에 최단 기간에 침입 가능하며 모든 패스워드를 바꾸는 등, 관리자가 아무리 안전하게 관리하려고 해도 시스템에 침입할 수 있기 때문에 더욱 위험하다. 게다가 발견되지 않고 시스템에 침입할 수 있으며 대부분의 백도어 프로그램은 로그를 남기지 않아 온라인으로 접속해도 이를 발견할 수 없다.[2] 얼마 전, 중국 화웨이(huawei)의 스마트폰에서 사용자의 개인정보를 수집하는 백도어가 심어져 있다는 것이 밝혀져 논란이 있었다. 이런 백도어를 예방하기 위해서는 최신의 운영체제 및 소프트웨어 업데이트를 통해 보안 취약점을 제거해야 한다.[1]
종류
- 패스워드 크래킹 백도어(password cracking backdoors)
- 유닉스 시스템에 접속하기 위한 최초이며 고전적인 침입 방법으로 백도어들은 패스워드 크래커를 실행하여 취약한 패스워드를 가진 계정을 알아낸다. 이러한 계정들은 시스템에 침입하기 위한 백도어의 가능성을 내재하고 있다. 침입자들은 취약한 패스워드를 가진 계정들 중 사용하지 않는 계정을 탐색하여 그 패스워드를 어려운 계정으로 바꿔버린다. 시스템 관리자가 유추 가능한 취약한 패스워드를 찾아 사용을 금지하려 해도 이미 계정을 찾을 수 없는 상태가 돼버린다.
- Rhost++ 백도어
- 네트워크에 연결된 유닉스 시스템에서 사용의 편리성을 위해 rsh, rlogin 등의 서비스를 많이 사용한다. 이 명령어들은 호스트 이름에 의해 인증이 이루어지고 추가적인 패스워드를 묻지 않는 보안 취약성을 내재하는데, 이를 이용해 침입자는 어떤사람의 rhosts 파일에 '++'을 넣어 어떤 호스트의 어떤 사용자라도 해당 사용자로 패스워드 없이 들어올 수 있도록 한다. 많은 침입자가 NFS가 홈디렉터리를 모든 호스트에 내보내고 있으면 이 방법을 많이 사용한다. 이 계정들은 시스템에 침입할 수 있는 백도어가 된다. 시스템 관리자가 rhosts 파일에서 '++'를 검사할 수 있으므로, 침입자는 여기에 자신이 해킹한 다른 계정을 등록함으로써 발견 가능성을 줄인다.
- 체크섬과 타임스팸트 백도어(checksum and timestamp backdoors)
- 침입자들이 실행 파일을 자신의 트로이목마 버전으로 교체시키는 경우가 있다. 많은 시스템 관리자들은 타임스탬프와 유닉스의 섬(sum) 프로그램 등과 같은 체크섬 값에 의해 실행 파일의 변경 유무를 진단한다. 하지만 침입자들의 기술도 발달하여 트로이목마 프로그램의 타임스탬프를 원래 파일의 타임스탬프 값으로 생성시킬 수 있고, CRC 체크섬 값도 원래의 체크섬 값으로 가장할 수 있다. MD5 체크섬은 이러한 임의적인 가장이 불가능하므로 무결성을 위한 도구로 권고한다.
- 로그인 백도어(login backdoors)
- 유닉스 시스템에서 로그인 프로그램은 사용자가 텔넷을 통해 시스템에 접속할 경우 패스워드 인증을 수행한다. 침입자들은 login.c 프로그램을 수정하여 특정한 백도어 패스워드가 입력될 경우 관리자가 어떤 패스워드를 설정하든 상관없이 로그인을 허용하고, utmp나 wtmp와 같은 로그 파일에 기록도 하지 않아서 침입자는 침입한 흔적을 남기지 않고 시스템에 로그인하여 셸을 획득할 수 있다. 시스템 관리자는 strings라는 명령어를 사용하여 로그인 실행 프로그램에 백도어 패스워드의 유무를 점검하기도 하지만, 침입자들은 백도어 패스워드를 암호화하여 저장함으로써 이러한 명령어에 의한 발견을 피할 수 있다. 가장 좋은 방법은 MD5 체크섬을 이용하여 이러한 백도어들을 탐지해내는 것이다.
- 텔넷 백도어(telnetd backdoors)
- 사용자가 시스템에 텔넷 접속을 할 때, inetd 서비스가 그 포트를 in.telnet에 연결해 주고, in.telnet은 로그인 프로그램을 구동한다. 어떤 침입자는 시스템 관리자가 로그인 프로그램을 수시로 점검하기 때문에 아예 in.telnetd을 수정하는 경우도 있다. in.telnetd는 사용자들로부터 터미널 종류 등 몇 가지 사항을 점검한다. 일반적으로 터미널은 X텀(Xterm)이나 VT100으로 설정 되어 있는데, 침입자는 터미널 종류가 letmein 등으로 특수하게 설정되어 있어 인증과업 없이 셸을 부여하도록 in.telnetd을 수정할 수 있다. 또한 침입자는 어떤 서비스에 백도어를 설치하여 특정 소스 포트로부터 오는 연결에 대해서는 셸을 부여하도록 할 수도 있다.
- 서비스 백도어(services backdoors)
- 대부분 네트워크 서비스들, 즉 finger, rsh, rexec, rlogin, ftp 심지어 inetd 등은 백도어 버전이 존재하는데, 이 프로그램들은 uucp와 같이 전혀 사용되지 않는 서비스를 백도어 프로그램으로 교체하여 inetd.conf 파일레 등록하는 경우도 있다. 관리자는 시스템에서 어떤 서비스들이 제공되고 있는지 항상 점검하고, 원래 서비스가 수정되지 않았는지 MD5 체크섬에 의해서 진단해야 한다.
- 크론잡 백도어(cronjob backdoors)
- 크론잡(cronjob)은 유닉스 시스템에서 특정 프로그램을 특정 시간에 구동될 수 있도록 해준다. 침입자는 백도어 셸 프로그램을 크론잡에 추가하여 마치 크론잡에서 전형적으로 구동되는 합법 프로그램인 것처럼 가장해 새벽 시간에 구동하도록 설정한 시스템에 접속할 수 있다.
- 라이브러리 백도어(library backdoors)
- 대부분 유닉스 시스템에서는 공유 라이브러리를 사용한다. 같은 루틴들을 재사용하여 프로그램의 크기를 줄이기 위해 공유 라이브러리를 사용하는데, 어떤 침입자들은 crypt.c나 _crypt.c 프로그램 같은 루틴들에 백도어 프로그램을 넣어 두기도 한다. login.c는 crypt() 루틴을 사용하게 되는데 백도어 패스워드가 사용될 경우 바로 셸을 부여하게 된다. 관리자가 로그인 프로그램의 MD5를 점검한다고 하더라고 백도어 코드를 찾을 수 없고 대다수의 관리자가 백도어의 근원지를 찾아내기가 상당히 힘들다. 라이브러리 백도어에 대한 대책은 MD5 체크섬 점검기를 정적으로 연결하여 시스템에서 구동하는 것이며 정적으로 연결된 프로그램은 트로이목마의 공유 라이브러리를 사용하지 않는다.
- 커널 백도어(kernel backdoors)
- 커널은 유닉스 시스템이 운용되는 핵심으로서, 라이브러리에서 사용되었던 같은 방법으로 MD5 체크섬을 우회할 수 있다. 잘 만들어진 백도어가 설치된 커널은 관리자가 찾기 가장 어려운 백도어이다. 다행이 커널 백도어 스크립트들은 널리 쓰이고 있지는 않지만 아무도 실제로 얼마나 배포되어 쓰이고 있는지 모른다.
- 파일 시스템 백도어(file system backdoors)
- 침입자는 서버로부터 획득한 전리품과 데이터들을 관리자에게 발각되지 않고 저장한다. 침입자들이 저장하는 파일들은 일반적으로 해킹 스크립트의 도구박스, 백도어들, 스니퍼(sniffer) 로그들, 전자우편 메시지들과 같은 데이터, 소스코드 등이다. 침입자는 특정 디렉터리나 특정 파일을 숨기기 위해 'ls', 'du', 'fsck' 와 같은 시스템 명령어들을 수정한다. 그렇지 않으면 숨기려는 부분을 'bad' 섹트로 보이게 하고, 침입자는 숨겨진 파일을 오직 특수한 도구를 통해서만 보아게 할 수도 있다.
- 부트블록 백도어(bootblock backdoors)
- 일반 컴퓨터에서는 바이러스가 부트블록(bootblock)에 자신을 숨기고 대부분의 바이러스 백신은 부트블록이 바뀌었는지를 감시한다. 유닉스 시스템에서는 부트블록을 점검할 수 있는 소프트웨어가 거의 없어서 침입자들이 부트블록 공간에 백도어를 숨겨두기도 한다.
- 프로세스 은닉 백도어(process hiding backdoors)
- 침입자는 그들이 구동하고 있는 프로그램들을 숨기려고 하는데, 그들이 숨기려고 하는 프로그램들은 일반적으로 패스워드 크래커, 스니퍼 프로그램 등이 있다. 다음은 프로세스를 숨기는 몇가지 방법이다.
- 숨기려는 프로그램 자신의 argv[]를 수정하여 다른 프로세스 이름으로 보이도록 한다.
- 침입자는 스니퍼 프로그램을 in.syslog와 같은 합법적인 서비스로 이름을 바꿀 수 있다. 관리자가 'ps' 등으로 어떤 프로세스들이 구동되고 있는지 점검하면 정상적인 이름들이 나타나게 된다.
- 침입자는 라이브러리 루틴들을 수정하여 'ps'가 특정 프로세스를 보여주지 못하게 할 수 있다.
- 백도어 프로그램을 패치하거나 인터럽트 driven 루틴들을 삽입하여 프로세스 테이블에 나타나지 않도록 할 수 있다.
- 커널을 수정하여 특정 프로세스를 숨기도록 할 수 있다.
- 루트킷(rootkit)
- 백도어를 설치하는 가장 인기 있는 패키지 중 하나이다. 루트킷(rootkit)에 소개된 전형적인 백도어용 프로그램은 다음과 같다.
- z2 : utmp, wtmp, lostlog로부터 특정 엔트리를 제거한다.
- Es : sun4 기반 커널들의 이더넷 스니퍼
- Fix : 체크섬 값을 가장하는 도구
- Sl : 매직 패스워드를 통하여 관리자로 로그인하는 도구
- 네트워크 트래픽 백도어(network traffic backdoors)
- 침입자들은 시스템에서 자신들의 흔적을 숨기려고 할 뿐 아니라 가능하면 자신들의 네트워크 트래픽까지 숨기기를 원한다. 이러한 네트워크 트래픽 백도어들은 간혹 침입 차단시스템(firewall)을 거쳐서 침입할 수 있는 것도 존재한다. 많은 네트워크 백도어들은 일반적으로 사용하지 않는 네트워크 포트를 사용해 시스템에 침입하므로 관리자들이 침입자의 트래픽을 간과하기 쉽다.
- TCP 셸 백도어
- 침입자는 침입 차단시스템이 막지 않는 높은 TCP 포트에 TCP 셸 백도어들을 설치할 수 있다. 관리자들은 넷스탯(netstat)를 통해 어느 포트들이 연결을 기다리고 있고, 어느 포트가 연결되어 있는지 점검할 수 있다. 이러한 백도어들은 SMTP 포트 상에서 구동될 수도 있어, 이메일을 허용하는 침입 차단 시스템을 통과할 수 있다.
- UDP 셸 백도어
- 관리자들이 TCP 연결에 대해서는 관리를 잘하고 이상한 행위를 감지하기 쉽지만, UDP 셸 백도어는 유닉스 시스템에 접속한 상태를 넷스탯 등으로 감지하기 쉽지 않다. 침입 차단시스템에서 DNS 서비스 등을 위해 UDP 패킷들을 허락하도록 설정되어 있어 침입자는 UDP 백도어를 설치하여 침입 차단시스템을 무사히 통과할 수 있다.
- ICMP 셸 백도어
- 핑(Ping)은 ICMP 패킷을 보내고 받음으로써 시스템이 살아있는지 확인하는 가장 일반적인 방법이다. 많은 침입 차단시스템들이 외부로부터 내부 시스템에 대한 핑을 허락하는데, 침입자는 핑 ICMP 패킷에 데이터를 추가하여 핑을 하는 시스템과 셸을 받을 수 있도록 한다. 시스템관리자는 다량의 핑 패킷을 발견하겠지만 패킷 속의 데이터를 보지 않는 이상 침입 사실을 알 수가 없다.
- 암호화된 링크
- 관리자가 스니퍼를 설치하여 셸에 접근하려는 사람을 찾으려고 할 수 있다. 하지만 침입자는 네트워크 트래픽 백도어를 암호화하여 실제 두 시스템 간에 어떤 데이터가 전송되고 있는지를 숨긴다.
- 윈도우 NT(windows NT)
- 윈도우 NT는 유닉스 시스템처럼 단일 시스템에 다수 사용자를 접속하도록 허락하지 않는다. 이는 침입자가 윈도우 NT 시스템에 침입하여 백도어를 설치하고 시스템을 공격하는 것을 어렵게 한다. 그러나 다수 사용자 기술이 발달함에 따라 윈도우 NT 시스템에 대한 공격사례가 늘어나고 있다. 윈도우 NT를 위한 텔넷 데몬이 이미 나와있고, 네트워크 트래픽 백도어를 윈도우 NT 시스템에 설치하기가 쉬워졌다.[1]
대안
백도어 탐지 기법 및 대응
백도어 프로그램은 주로 SetUID 권한을 가진 파일을 변조해서 사용하며, 언제 어디서든 쉽게 접근하기 위해 프로세스를 항상 동작하게 만들거나, 포트를 열어두는 방식을 사용한다. 또한, 백도어 프로그램을 설치하기 위해서는 침입 후 관리자 권한을 획득하는 과정이 선행되어야 하는데 이러한 특징들을 이용해 백도어를 탐지할 수 있다.
- 현재 동작 중인 프로세스 및 열린 포트 확인 : 해커가 접근을 위해 실행시켜둔 프로세스가 있는지, 열어둔 포트가 있는지 확인한다.
- SetUID 파일 검사 : SetUID 권한의 파일을 많이 사용하므로, SetUID 권한이 있는 파일들을 검사해 본다.
- 바이러스 및 백도어 탐지 툴 사용 : 백신 등의 바이러스 탐지 툴을 사용해 찾을 수 있다.
- 무결성 검사 : 침입자에 의해 변경된 파일이 있는지 검사해본다.
- 로그 분석 : 침입자의 기록을 분석해 보면 누가, 어떠한 공격을 했는지 알 수 있다.[3]
사례
- 화웨이 백도어 논란
- 2012년 10월 미국 하원은 화웨이와 쫑씽통신(ZTE)을 조사한 후, 이 회사가 중국군 사이버 부대에 특별 네트워크 서비스를 제공했다며 미국 정부와 기업들이 이 회사의 통신 장비를 사용할 결우 비상시 중대 안보위협에 노출될 수 있다고 경고했다. 또 "중국이 악성 하드웨어나 소프트웨어가 탑재된 통신장비를 활용에 전시에 미국 안보 시스템을 마비시킬 수 있다."고 지적하고, "중국은 악의적인 목적으로 통신 기업들을 이용할 수단과 동기가 있다"며 이들 장비를 도입하는 기업들에 주의를 요했다.
- 2016년 11월 중국회사들이 미국에 판매한 수백만 대의 휴대전화에 백도어가 발견되었다. 이는 사용자가 어디에 갔는지, 누구와 통화했는지 어떤 메시지를 보냈는지를 모니터링할 수 있는 백도어이며, 스마트폰에 선탑재되어 72시간마다 이 정보를 중국에 있는 서버에 전송하는 식이다. 이에 화웨이 변호인 측은 백도어 탑재를 인정했으나 데이터가 중국 정부에 전송된 것이 아니고 단순히 회사의 실수라고 하였다. 보안 전문가들은 이 백도어가 탑재된 소프트웨어가 취약점이나 버그가 아니라 중국 측 회사가 의도적으로 개발한 것으로 파악하고 있다.
- 2018년 미국의 연방수사국(FBI), 중앙정보국(CIA), 국가안전보장국(NSA)는 공식적으로 미국 국민에게 화웨이와 ZTE의 휴대전화 쓰지 말라고 권고하였다. 미국 3대 정보기관이 쓰지 말라고 자국민에게 공개적으로 경고하는 것은, 그러한 결정을 이끌어내는 과정에서 화웨이 측의 알려지지 않은 스파이 행위가 발각된 적이 있었음을 추론할 수 있고, 그에 의한 경고의 의미가 있는 것으로 보인다.
- 2018년 7월 6일부터 미국과 중국 간의 무역전쟁이 시작됐고 화웨이는 이에 주요 타깃이 되어 곤란한 상황을 맞이했다. 이에 화웨이는 2019년 스마트폰 등 여러 제품의 제조, 판매에 심각한 장애가 생기자 다급해져 한국 기업들에 미국의 제재가 부당하다는 것을 호소하여 협조를 구했으나 화웨이의 스파이와 기술 훔치기에 가장 큰 피해자들이 한국기업이라는 점과 대한민국과 미국이 동맹국이라는 점을 봤을때 마냥 화웨이에 협조하기는 어렵다. 2019년 5월 15, 도널드 트럼프 미국 대통령이 화웨이와의 모든 거래를 사실상 금지하는 행정명령에 서명하며 화웨이 논란은 더 심화되고 있다.[4]
각주
- ↑ 1.0 1.1 1.2 Luuii, 〈백도어(Backdoor)〉, 《티스토리》, 2017-11-27
- ↑ 유수현 기자, 〈(카드뉴스) 왕초보를 위한 용어 풀이, 백도어란?〉, 《보안뉴스》, 2017-12-13
- ↑ luuzun, 〈시스템 해킹 5강 - 백도어(Backdoor) 탐지〉, 《네이버 블로그》, 2014-02-05
- ↑ 나무위키 - https://namu.wiki/w/%ED%99%94%EC%9B%A8%EC%9D%B4/%EB%85%BC%EB%9E%80
참고자료
- 위키 백과 - https://ko.wikipedia.org/wiki/%EB%B0%B1%EB%8F%84%EC%96%B4
- 유수현 기자, 〈(카드뉴스) 왕초보를 위한 용어 풀이, 백도어란?〉, 《보안뉴스》, 2017-12-13
- Luuii, 〈백도어(Backdoor)〉, 《티스토리》, 2017-11-27
- luuzun, 〈시스템 해킹 5강 - 백도어(Backdoor) 탐지〉, 《네이버 블로그》, 2014-02-05
같이 보기