백도어

**백도어**(영어: Backdoor)는 컴퓨터 보안에서 인증 절차 등 정상적인 보안 메커니즘을 우회하여 시스템에 대한 비인가 접근을 허용하는 비밀 통로를 말한다. 일반적으로 건물의 뒷문에 비유되며, 정문(정상적인 보안 절차)을 통과하지 않고 드나들 수 있다는 의미를 갖는다.

백도어는 시스템 관리나 유지보수 편의를 위해 의도적으로 만들어지기도 하지만, 대부분은 공격자가 악의적인 목적으로 시스템에 몰래 설치하는 악성 소프트웨어의 한 형태이다. 일단 설치되면, 공격자는 이 비밀 통로를 통해 시스템에 대한 최고 수준의 권한을 획득하고, 탐지를 회피하며 지속적으로 시스템을 통제할 수 있다.

## 개요
백도어는 시스템의 보안을 우회하는 모든 경로를 포괄하는 넓은 개념이다. 가장 일반적인 형태는 트로이 목마, 웜, 바이러스 등 다른 악성 소프트웨어에 의해 시스템에 설치되는 경우이다. 이 악성 소프트웨어는 네트워크의 특정 포트를 열어 공격자의 원격 접속을 대기하거나, 특정 조건이 충족되면 공격자에게 시스템 제어권을 넘기는 방식으로 작동한다.

개발자가 디버깅, 테스트, 또는 긴급 유지보수를 위해 남겨둔 백도어도 존재한다. 이는 "마스터 키"와 같은 하드코딩된 비밀번호나, 특정 인증 절차를 건너뛰는 숨겨진 명령어 형태일 수 있다. 이러한 백도어는 본래 악의적인 목적이 아니었더라도, 출시 후 제거되지 않으면 공격자에 의해 발견되어 심각한 보안 취약점으로 악용될 수 있다.

## 역사
백도어의 개념은 컴퓨터의 역사 초기부터 존재했다. 운영체제 개발자들은 시스템의 문제를 신속하게 해결하기 위해 관리자 인증을 우회하는 일종의 비상구를 만들어 두곤 했다.

컴퓨터 보안 분야에서 백도어의 개념을 확립한 상징적인 사건은 1983년 튜링상 수상 연설에서 켄 톰프슨이 언급한 "신뢰에 대한 성찰"이다. 그는 C 언어 컴파일러 자체에 백도어를 심는 방법을 시연했다. 이 백도어는 컴파일러가 유닉스의 `login` 명령어를 컴파일할 때, 정상적인 비밀번호 외에 특정한 마스터 비밀번호로도 로그인이 가능하도록 악성 코드를 삽입한다. 더 나아가, 이 컴파일러는 스스로를 컴파일할 때에도 이 백도어 코드를 새로운 컴파일러에 복제한다. 이로 인해 소스 코드 상에서는 어떤 흔적도 찾을 수 없는, 완벽하게 은폐된 백도어가 시스템에 영구적으로 존재하게 됨을 증명했다.

## 작동 원리 및 특징
백도어는 다양한 방식으로 작동하며, 공통적으로 높은 수준의 은밀성을 특징으로 한다.

* **특정 포트 리스닝**: 가장 고전적인 방식이다. 백도어 프로세스가 시스템의 특정 TCP/UDP 포트를 열고 공격자의 접속을 기다린다. 공격자가 해당 포트로 접속하면, 명령어 셸을 획득하거나 시스템 제어권을 넘겨받는다.
* **역방향 연결**: 방화벽이 외부에서의 접속을 차단하는 경우가 많기 때문에, 최근의 백도어는 시스템(피해자)에서 공격자의 C&C 서버로 먼저 연결을 시도하는 방식을 선호한다. 이는 내부에서 외부로 나가는 트래픽을 허용하는 경우가 많아 탐지가 더 어렵다.
* **특정 조건 응답**: 특정 포트를 항상 열어두는 대신, 평소에는 비활성 상태로 있다가 특정 패킷이나 비밀 명령어가 전송되었을 때만 활성화되어 작동하는 방식이다.
* **기존 프로세스 위장**: `svchost.exe`(윈도우)나 `init`(리눅스) 등 정상적인 시스템 프로세스의 이름으로 위장하여 실행되므로, 일반 사용자가 작업 관리자 등에서 발견하기 어렵다. 루트킷 기술과 결합하여 프로세스 목록, 파일, 네트워크 연결 자체를 숨기기도 한다.

## 유형 및 설치 경로
### 악성 소프트웨어에 의한 설치
가장 흔한 유형으로, 원격 접속 트로이목마가 대표적이다. 사용자가 이메일 첨부파일, 불법 소프트웨어 다운로드 등을 통해 악성 파일을 실행하면, RAT가 시스템에 설치되어 공격자에게 백도어를 제공한다. 백 오리피스는 1990년대 후반에 유행했던 악명 높은 RAT의 예이다.

### 개발자 및 공급망 백도어
#### 유지보수 및 디버깅용
개발자가 테스트의 편의성을 위해 인증을 우회하는 코드를 삽입하고, 최종 제품에서 이를 제거하는 것을 잊는 경우이다. 이는 비의도적이지만 심각한 보안 구멍이 된다.

#### 공급망 공격
공격자가 소프트웨어 개발사나 배포 업체를 직접 해킹하여, 정상적인 소프트웨어의 업데이트 파일이나 설치 프로그램에 백도어를 몰래 삽입하는 방식이다. 사용자는 신뢰할 수 있는 제작사의 공식 프로그램을 설치(혹은 업데이트)하는 과정에서 자신도 모르게 백도어에 감염된다. 2020년 솔라윈즈 사태가 대표적인 예이다.

#### 의도적인 악성 백도어
드물지만, 소프트웨어 제작사나 하드웨어 제조사가 의도적으로 백도어를 심는 경우이다. 이는 국가 기관의 감청 요청이나 정보 수집을 목적으로 할 수 있으며, 큰 윤리적, 법적 논란을 야기한다.

### 하드웨어 및 펌웨어 백도어
운영체제 수준이 아닌 BIOS나 UEFI 같은 펌웨어, 또는 네트워크 카드, 라우터, 하드 디스크 드라이브의 컨트롤러 칩 등 하드웨어 자체에 백도어가 내장된 경우이다. 이는 탐지가 극도로 어렵고, 운영체제를 재설치하거나 디스크를 포맷해도 사라지지 않는 영구성을 갖는다. 2013년 에드워드 스노든은 NSA가 일부 네트워크 장비에 백도어를 심어 출고했다는 의혹을 제기했다.

### 암호학적 백도어
암호화 알고리즘이나 난수 생성기에 의도적인 약점을 삽입하여, 겉보기에는 안전해 보이지만 특정 주체(주로 정보기관)만이 쉽게 복호화할 수 있도록 만드는 방식이다. 미국의 NIST가 표준으로 지정했던 난수 생성기 Dual_EC_DRBG는 NSA에 의해 의도적으로 백도어가 삽입되었다는 의혹을 받았다.

## 공격자의 활용 목적
백도어를 통해 시스템 접근 권한을 획득한 공격자는 다음과 같은 악의적 활동을 수행한다.

* **[[기밀 정보]] 유출**: 기업의 내부 자료, 고객의 개인정보, 금융 정보 등을 탈취한다.
* **지속적인 시스템 통제**: 언제든 시스템에 다시 접근하여 상태를 감시하거나 추가 공격을 감행한다.
* **[[봇넷]]으로 활용**: 감염된 시스템을 좀비 PC로 만들어 DDoS 공격, 스팸 메일 발송, 가상화폐 채굴 등에 동원한다.
* **내부망 침투**: 최초로 감염된 시스템을 교두보로 삼아, 해당 내부망에 연결된 다른 서버나 PC로 공격을 확산시킨다.
* **시스템 파괴 및 [[사보타주]]**: 시스템의 중요 데이터를 삭제하거나 랜섬웨어를 설치하여 금전을 요구한다.

## 탐지 및 예방
### 탐지 방법

* **[[네트워크 모니터링]]**: `netstat`과 같은 명령어를 사용하거나 네트워크 모니터링 도구를 이용해, 알 수 없는 프로세스가 비정상적인 포트나 의심스러운 외부 IP와 통신하는지 확인한다.
* **[[침입 탐지 시스템|IDS/IPS]]**: 알려진 백도어의 시그니처나 비정상적인 트래픽 패턴을 탐지하여 차단한다.
* **파일 무결성 검사**: `tripwire`와 같은 도구를 사용하여 시스템의 중요 파일(예: `login`, `sshd`)이 변경되지 않았는지 원본과 해시 값을 비교한다.
* **[[백신 소프트웨어|안티바이러스]] 및 [[루트킷]] 스캐너**: 알려진 백도어 및 루트킷을 탐지하고 제거한다.

### 예방 대책

* **강력한 [[방화벽 (네트워킹)|방화벽]] 정책**: 불필요한 포트를 모두 차단하고, 인가된 서비스만 접근을 허용하는 화이트리스트 방식을 사용한다.
* **[[운영체제]] 및 [[소프트웨어]] 최신화**: 알려진 취약점을 이용한 백도어 설치를 막기 위해 항상 최신 보안 패치를 적용한다.
* **[[최소 권한 원칙]]**: 사용자와 프로세스에 필요한 최소한의 권한만 부여하여, 만일의 사태에 백도어가 설치되더라도 시스템 전체의 제어권을 획득하기 어렵게 한다.
* **[[시큐어 코딩]]**: 소프트웨어 개발 단계에서 정적/동적 분석을 통해 하드코딩된 비밀번호나 디버그 코드가 최종 제품에 포함되지 않도록 검수한다.

## 법적 및 윤리적 쟁점
백도어는 기술적인 문제를 넘어 심각한 법적, 윤리적 쟁점을 안고 있다. 특히 정부 기관이 테러리즘 방지나 범죄 수사를 명목으로 암호화된 기기나 메신저 서비스에 "합법적 접근"을 위한 백도어를 의무화해야 한다고 주장하면서 논란이 되었다.

2016년 미국 FBI는 샌버너디노 총기 난사 사건 범인의 아이폰 잠금 해제를 위해 애플에 iOS의 보안 기능을 우회하는 백도어(혹은 특별한 펌웨어)를 만들 것을 요구했다. 애플은 이에 대해 "특정 아이폰 하나를 여는 문제가 아니라, 모든 사용자의 프라이버시와 보안을 약화시키는 위험한 선례가 될 것"이라며 거부했다.

보안 전문가들과 학자들은 "선의의 백도어는 존재할 수 없다"고 지적한다. 아무리 합법적인 목적으로 만들어진 백도어라 할지라도, 그 존재 자체가 취약점이며 결국 악의적인 공격자나 다른 국가에 의해 악용될 수밖에 없기 때문이다.

## 같이 보기
* 트로이 목마
* 루트킷
* 악성 소프트웨어
* 컴퓨터 보안
* 취약점
* 스파이웨어
* 제로 데이 공격
* 켄 톰프슨
* 백 오리피스

## 각주

분류:컴퓨터 보안
분류:악성 소프트웨어
분류:네트워크 보안
분류:사이버 범죄
분류:암호학
분류:소프트웨어 공학