C2란 무엇인가?
C2(C&C, Command and Control)란 무엇인가?
C2는 ‘Command and Control’의 약자로, 사이버 보안에서는 공격자가 침해한 시스템을 원격으로 제어하기 위해 명령을 전달하고 실행 결과를 수신하는 통신 행위와 이를 위한 채널 및 인프라 전반을 의미한다. 공격자는 감염된 시스템의 환경을 파악하고, 필요한 기능을 추가하거나 내부망을 탐색하며, 수집한 정보를 외부로 통신해야 할 때 C2를 활용한다. 감염 시스템은 C2 인프라에 접속해 명령을 확인하고, 악성코드는 명령을 실행한 뒤 결과를 전송한다.
MITRE ATT&CK는 C2를 공격자가 침해한 시스템과 통신하며 명령과 제어를 수행하기 위한 전술로 분류한다. C2 통신에는 애플리케이션 계층 프로토콜, 프록시, 동적 주소 결정, 암호화 채널, 웹 서비스 등 다양한 기술이 사용될 수 있다. 이 때문에 C2는 특정 서버나 악성코드 하나를 지칭하는 개념이 아닌, 공격자가 침해한 시스템과 통신하고 제어하는 데 사용하는 채널과 방식 전반을 의미한다.
C2의 주요 기능과 역할
C2는 침투 이후 공격자가 다양한 공격 활동을 수행하는 데 활용된다. 공격자는 C2를 이용해 시스템 정보를 수집하고 명령을 실행할 수 있으며 추가 악성코드를 전송하거나 파일을 탈취할 수 있다. 보안 도구를 무력화하거나 내부 시스템으로 이동하고, 랜섬웨어를 배포하는 등의 후속 공격 지시도 가능하다. C2는 침해한 시스템의 상태와 수집한 정보를 확인하면서 상황에 맞게 새로운 명령을 전달하고 공격을 이어갈 수 있기 때문에 같은 악성코드에 감염된 시스템이라도 C2 연결 상태와 이후 전달되는 명령에 따라 실제 수행되는 공격 행위와 피해 범위가 달라질 수 있다.
공격 과정에서는 C2 채널도 필요에 따라 추가하거나 변경할 수 있다. 공격자는 감염 직후 구축한 채널 외에 별도의 통신 경로를 만들거나, 기존 연결이 차단되면 대체 서버나 다른 프로토콜로 전환할 수 있다. 이 때문에 C2 통신을 조기에 탐지하고 차단하는 것이 후속 명령 전달을 막고 피해 확산을 제한하는데 중요하다.
C2 통신 과정
C2 통신의 구현 방식은 공격 도구마다 다르지만 기본 흐름은 비슷하다. 공격자는 피싱, 취약점 악용, 유출 계정, 공급망 침해 등으로 시스템에 접근한 뒤 악성코드나 원격 제어 도구를 실행해 외부 C2 인프라와 통신할 준비를 한다. 처음 C2에 연결할 때 악성코드는 감염 시스템의 호스트 이름과 운영체제, 사용자 계정, IP 주소, 보안 제품, 실행 권한 같은 환경 정보가 전송되기도 한다. 공격자는 이를 바탕으로 감염 시스템의 환경과 상태를 파악할 수 있다.
등록을 마친 악성코드는 일정한 간격으로 C2 인프라에 접속해 새로운 명령을 확인한다. 이를 비코닝(beaconing) 또는 콜백이라고 한다. 규칙적인 통신은 탐지되기 쉽기 때문에 공격자는 접속 간격에 무작위 변동값을 적용하고, 일정 시간 대기한 뒤 통신을 시작하거나 업무 시간에만 접속하도록 설정하기도 한다.
명령을 받은 악성코드는 프로세스와 파일 목록 조회, 화면 캡처, 명령 셸 실행, 계정 정보 수집, 추가 파일 다운로드 같은 작업을 수행한다. 작업 결과는 기존 C2 채널이나 별도 채널로 보낸다. 공격자는 수집한 정보를 바탕으로 새로운 명령을 내릴 수 있기 때문에, 악성코드에서 사전에 확인된 기능만으로 실제 공격 범위를 파악하기 어렵다.
공격이 끝난 뒤에도 C2 통신이 계속되는 경우가 있다. 확인된 악성코드를 삭제했더라도 예약 작업, 서비스, 시작 프로그램, 웹 셸, 추가 계정 등이 남아 있으면 공격자가 이를 이용해 다시 C2에 연결할 수 있다.
C2 인프라 구성 방식
C2 인프라는 명령 전달 구조에 따라 중앙집중식, 다계층 및 프록시형, P2P형, 웹 서비스 기반, 하이브리드형으로 나뉜다. 실제 공격에서는 주 채널과 대체 채널을 분리하거나 여러 구조를 섞어 운용하는 경우가 많다.
| 구조 | 작동 방식 | 보안 관점의 특징 |
|---|---|---|
| 중앙집중식 | 감염 시스템이 하나 또는 소수의 C2 서버에 접속 | 서버와 도메인을 식별하면 비교적 빠르게 차단할 수 있다. 주소 변경과 서버 교체에 대비해야 한다. |
| 다계층·프록시형 | 감염 시스템과 실제 제어 서버 사이에 리디렉터, 프록시, 중계 서버 구축 | 외부에 노출된 서버를 차단해도 운영 인프라가 남을 수 있어 추적이 복잡하다. |
| P2P형 | 감염 장치가 서로 명령이나 연결 정보를 전달한다. | 단일 서버에 의존하지 않아 전체 네트워크를 무력화하기 어렵다. |
| 웹 서비스 기반 | 클라우드 저장소, 코드 저장소, 소셜미디어 등 정상 서비스를 거쳐 명령이나 주소 전달 | 정상 업무 트래픽과 섞여있어 서비스 전체를 차단하기 어렵다. |
| 하이브리드형 | 여러 방식의 C2인프라를 같이 사용 | 주 채널이 막혀도 다른 경로로 제어를 복구할 수 있다. |
중앙집중식은 구조가 단순하고 운영하기 쉽다. 감염 시스템은 미리 설정된 도메인이나 IP 주소로 접속해 명령을 가져온다. 이와 같은 방식은 서버를 식별해 차단하거나 무력화하면 감염 시스템과의 통신을 끊어 공격자의 명령 전달과 후속 공격을 차단할 수 있다. 이 때문에 공격자는 여러 도메인을 준비하고 서버 주소를 빠르게 바꾸거나, 다계층 및 프록시형과 같이 실제 C2 서버를 중계 서버 뒤에 숨겨 이 약점을 보완한다.
P2P 구조에서는 감염 장치가 서버와 클라이언트 역할을 함께 맡아 다른 장치로 명령을 전달한다. 역할이 분산돼 일부 장치를 제거해도 네트워크가 유지될 수 있다. 공격자는 모든 장치에 일관된 명령을 빠르게 배포하고 통신 상태를 관리해야 하기 때문에 중앙집중식보다 운영과 제어가 복잡하다.
웹 서비스 기반 방식은 정상 서비스를 C2 통신에 악용한다. 공격자는 공개 게시물이나 파일, API 등에 암호화된 명령이나 C2 서버 주소를 저장하고, 감염 시스템은 해당 정보를 불러와 다음 동작을 수행한다. 정상 서비스와 동일한 인프라를 사용하기 때문에 도메인이나 IP 주소만으로 악성 통신을 구분하기 어렵고, 서비스 전체를 차단하면 정상 업무에도 영향을 줄 수 있다. 이 때문에 접속한 프로세스와 계정, 요청 내용, 통신 시점 등 주변 행위를 함께 분석해 악성 여부를 판단해야 한다.
C2 통신 방식
공격자는 C2 통신을 유지하면서 탐지를 피하기 위해 대상 조직에서 일상적으로 사용되고 외부 통신이 허용된 프로토콜을 주로 악용한다. 대표적인 방식이 HTTP와 HTTPS다. 두 프로토콜은 일반적으로 웹 접속에 사용되기 때문에 C2 명령이나 실행 결과를 웹 요청과 응답 형태로 주고받으면 정상적인 인터넷 통신과 구분하기 어렵다.
HTTPS 기반 C2 통신은 전송 내용이 암호화돼 네트워크 구간에서 명령이나 데이터를 직접 확인하기 어렵다. 또한 정상적인 웹 통신에서도 HTTPS를 사용하므로 암호화 여부나 유효한 인증서, 443 포트 사용만으로 정상 통신과 C2 통신을 구분할 수 없다. 이 때문에 통신 목적지와 접속 프로세스, 연결 주기, 전송량 등 여러 정보를 함께 분석해야 한다.
DNS도 C2 채널로 사용된다. 감염 시스템이 공격자 도메인의 하위 도메인에 데이터를 넣어 질의하거나 DNS 응답으로 짧은 명령을 받을 수 있다. DNS는 네트워크 운영에 필수이고 작은 요청이 계속 발생하기 때문에 악성 통신을 정상 질의 사이에 숨기기 쉽다.
이 밖에도 이메일과 파일 전송 프로토콜, 메시징 서비스, 원격 관리 소프트웨어, 사용자 정의 TCP·UDP 프로토콜이 사용될 수 있다. 공격자는 조직의 네트워크 정책과 탐지 환경을 파악한 뒤, 정상 업무에서 자주 사용돼 탐지 가능성이 낮은 프로토콜이나 서비스를 C2 통신에 활용한다.
| 통신 방식 | 통신 방법 | 주요 탐지 항목 |
|---|---|---|
| HTTP·HTTPS | 웹 요청과 응답을 이용해 C2 명령을 전달하고 실행 결과를 수신 | 프록시 로그, URL, 헤더, 인증서, 접속 프로세스, 반복 주기 |
| DNS | 도메인 질의와 응답에 명령 또는 데이터를 포함 | 긴 하위 도메인, 높은 문자 무작위성, 과도한 TXT 질의, 비정상 질의량 |
| 클라우드·웹 서비스 | 게시물, 파일, API를 명령 전달 수단으로 사용 | 비인가 애플리케이션의 API 호출, 업무와 무관한 서비스 접속 |
| 사용자 정의 프로토콜 | 특정 포트와 독자적인 메시지 형식을 사용 | 비표준 포트, 프로토콜 불일치, 알려지지 않은 외부 목적지 |
| 원격 관리 도구 | 정상 원격 지원 기능을 공격자가 악용 | 승인되지 않은 설치, 비정상 계정, 평소와 다른 접속 시간과 대상 |
C2 통신 은닉 기법
공격자는 C2 통신이 일반적인 네트워크 트래픽과 쉽게 구분되지 않도록 데이터 형식과 통신 주기, 접속 주소 등을 다양하게 바꾼다. 명령이나 실행 결과를 Base64 등으로 인코딩하거나 불필요한 데이터를 섞고, 정상 프로토콜과 유사한 형식으로 위장하기도 한다. 이미지나 문서 내부에 정보를 숨기는 스테가노그래피도 활용할 수 있다.
통신 주기를 조정해 반복적인 연결 패턴을 숨기기도 한다. 일정한 간격으로 C2 서버에 접속하면 비콘 통신으로 탐지될 가능성이 높기 때문에, 공격자는 접속 간격에 무작위 변동값을 적용하는 지터를 사용한다. 통신을 시작하기 전 일정 시간 대기하거나 특정 시간대에만 접속하도록 설정할 수도 있다. 한 번에 전송하는 데이터의 양을 줄여 장시간에 걸쳐 나눠 보내는 방식도 사용된다.
C2 서버의 주소를 계속 변경하는 방식도 있다. 도메인 생성 알고리즘(DGA)은 날짜나 특정 입력값을 기준으로 다수의 도메인을 생성하고, 공격자는 이 가운데 일부를 실제 C2 통신에 사용한다. Fast Flux는 하나의 도메인에 연결되는 IP 주소를 짧은 주기로 변경해 C2 인프라의 위치를 추적하거나 차단하기 어렵게 만든다.
정상적인 클라우드 서비스나 콘텐츠 전송 네트워크(CDN), 웹 서비스를 C2 통신에 악용하는 경우도 있다. 업무에 사용하는 정상 서비스와 C2 트래픽이 동일한 도메인이나 인프라를 이용할 수 있기 때문에 IP 주소나 도메인의 평판 정보만으로 악성 통신을 판단하기 어렵다. 서비스 전체를 차단할 경우 정상 업무에도 영향을 줄 수 있어 접속 프로세스와 계정, 통신 방식 등 추가 정보를 함께 확인해야 한다.
C2 활동의 주요 탐지 지점
알려진 악성 IP 주소나 도메인만 차단해서는 C2 활동을 막기 어렵기 때문에 목적지 정보뿐 아니라 네트워크 통신과 엔드포인트 활동을 함께 확인해야 한다.
반복적인 외부 통신
동일한 프로세스가 특정 외부 서버와 지속적으로 소량의 데이터를 주고받거나, 여러 시스템이 동일한 목적지에 비슷한 주기로 접속한다면 C2 비콘 통신을 의심해봐야 한다. 이 때 소프트웨어 업데이트나 시스템 상태 확인 기능도 일정한 주기로 통신하기 때문에 반복적인 연결만으로 악성 여부를 단정해서는 안 된다.
비정상적인 DNS 요청
DNS 로그에서는 평소 접속하지 않던 도메인, 지나치게 긴 하위 도메인, 무작위 문자열과 유사한 질의, 특정 DNS 레코드에 집중된 요청 등을 확인할 수 있다. 한 시스템에서 짧은 시간 동안 존재하지 않는 다수의 도메인을 반복해서 조회한다면 DGA 사용 가능성도 확인해야 한다. DNS 요청을 발생시킨 프로세스와 프로그램 설치 시점, 사용자 활동도 함께 분석할 필요가 있다.
엔드포인트의 비정상 활동
문서 프로그램이나 스크립트 인터프리터가 갑자기 외부 서버와 통신하거나 임시 폴더에서 실행된 파일이 네트워크 연결을 생성한다면 추가 조사가 필요하다. 새로 생성된 서비스와 예약 작업, 비정상적인 PowerShell 실행 등도 주요 확인 대상이다. 프로세스의 부모와 자식 관계를 분석하면 문서 실행 이후 스크립트가 동작하고 외부 C2 서버에 연결되는 과정도 파악할 수 있다.
프록시 및 방화벽 로그
프록시와 방화벽 로그에서는 업무와 관련이 적은 외부 서버와의 연결, 최근 생성된 도메인, 소량의 데이터를 장시간 주고받는 세션, 포트와 실제 프로토콜이 일치하지 않는 통신 등을 확인할 수 있다. TLS 통신은 인증서 정보와 서버 이름, 클라이언트 특성, 연결 횟수와 주기 등을 함께 분석해야 한다.
로그 연계 분석
정확한 C2 탐지를 위해서는 엔드포인트와 DNS, 프록시, 방화벽 등 여러 영역의 로그를 동일한 시간대를 기준으로 분석해야 한다. 단일 경보만 확인하기보다 어떤 프로세스가 어떤 계정으로 실행됐고, 어느 목적지와 어떤 방식으로 통신했는지를 연결해서 확인해야 실제 공격 흐름을 파악할 수 있다.
C2 탐지 체계 설계
C2 탐지를 위해서는 먼저 내부 시스템의 외부 통신을 추적할 수 있는 환경이 필요하다. 이 때 방화벽의 허용과 차단 기록만으로는 HTTPS 통신의 세부 행위나 DNS 요청을 생성한 프로세스까지 파악하기 어렵기 때문에 엔드포인트 정보와 네트워크 로그를 함께 분석할 수 있어야 한다.
정상적인 통신 기준은 시스템의 역할에 따라 구분해야 한다. 개발 서버가 코드 저장소에 접속하는 것과 재무 시스템이 동일한 서비스에 접속하는 것은 의미가 다를 수 있다. 시스템별로 평소 사용하는 외부 서비스와 통신 시간, 데이터 전송량, 허용된 애플리케이션 등을 파악하면 비정상적인 C2 통신을 보다 정확하게 구분할 수 있다.
위협 인텔리전스는 이미 확인된 C2 서버와 도메인을 빠르게 식별하는 데 활용할 수 있다. 이 때 IP 주소나 도메인을 자동으로 차단하기 전에는 정보가 확인된 시점과 신뢰도, 해당 주소가 여러 서비스에서 공동으로 사용되는지 등을 검토해야 한다. 과거 악성 활동에 사용된 IP 주소가 이후 정상 서비스에 할당되거나 하나의 클라우드 주소를 여러 서비스가 공유할 수 있기 때문이다.
새로운 C2 인프라는 통신 행위를 분석해 탐지해야 한다. 반복적인 콜백, 비정상적인 DNS 요청, 조직에서 거의 사용하지 않는 외부 목적지, 업무와 관련이 없는 프로세스의 네트워크 연결 등을 함께 분석하면 개별 신호만 확인할 때보다 탐지 정확도를 높일 수 있다. 지터가 적용된 C2 통신도 장기간의 연결 시간과 목적지, 전송량을 함께 비교하면 반복적인 특성이 나타날 수 있다.
탐지 규칙은 경보 발생만 하는 것이 아닌 실제 조사까지 이어질 수 있도록 해야 한다. 분석 담당자가 원본 로그와 시스템 정보, 사용자 정보, 프로세스 실행 관계를 바로 확인할 수 있도록 구성하고, 침해가 확인되면 동일한 목적지와 파일 해시, 인증서, 프로세스, 계정 등이 다른 시스템에서도 발견되는지 즉시 검색할 수 있어야 한다.
C2 의심 통신을 발견하면 무엇부터 해야 하는가
C2 통신이 의심되면 먼저 관련 시스템과 계정, 통신 목적지, 최초 통신 시점과 마지막 통신 시점을 확인해야 한다. 하나의 경보만으로 감염 범위를 판단하지 말고 동일한 목적지나 유사한 통신 행위가 다른 시스템에서도 발생했는지 조사해야 한다. 여러 시스템이 같은 C2 인프라와 연결됐다면 개별 시스템을 넘어 조직 내부에 감염이 확산됐을 가능성도 확인할 필요가 있다. C2 통신이 확인되었다면 침해 가능성이 높은 시스템은 네트워크에서 격리해 새로운 명령 수신과 내부 확산을 차단해야 한다. 다만 시스템 전원을 즉시 종료하면 메모리에만 존재하는 악성코드나 현재 네트워크 연결 정보 등 조사에 필요한 데이터가 사라질 수 있기 때문에 시스템의 중요도와 공격 진행 상황을 고려해 네트워크 격리와 증거 수집, 전원 종료 순서를 결정해야 한다.
확인된 C2 도메인과 IP 주소, URL, 인증서 등의 정보는 DNS 보안 정책과 방화벽, 프록시, 엔드포인트 보안 정책에 반영해 추가 통신을 차단한다. 정상적인 클라우드 서비스나 웹 서비스가 C2에 악용된 경우에는 서비스 전체 차단으로 발생할 수 있는 업무 영향을 확인해야 한다. 필요한 경우 URL과 애플리케이션, 계정, 프로세스 등을 기준으로 차단 범위를 세분화할 수 있다.
공격 경로와 피해 범위를 파악하기 위한 증거도 확보해야 한다. 실행 중인 프로세스와 네트워크 연결 정보, DNS와 프록시, 방화벽 로그, 악성 파일, 예약 작업과 서비스, 사용자 로그인 기록 등을 보존해야 한다. 이 때 C2 주소만 차단하고 관련 파일과 실행 기록을 먼저 삭제하면 최초 침투 경로나 공격자가 수행한 작업을 확인하기 어려워질 수 있다.
악성코드를 제거할 때는 악성 파일만 삭제하는 것이 아닌 예약 작업과 서비스, 레지스트리 설정, 웹 셸, 추가로 생성된 계정 등 공격자가 다시 접근하는 데 사용할 수 있는 요소를 함께 확인해야 한다. 계정 정보가 탈취됐을 가능성이 있다면 비밀번호를 변경하고 활성화된 세션과 토큰을 폐기해야 한다. 공격에 악용된 취약점이나 잘못된 설정도 함께 수정해야 재침투 가능성을 줄일 수 있다.
복구 이후에도 기존 C2 서버와의 통신이 다시 발생하는지 확인해야 한다. 기존과 다른 외부 서버나 프로토콜을 이용해 C2 통신을 재개할 가능성도 있기 때문에 일정 기간 관련 시스템의 네트워크 활동을 집중적으로 확인한다. 사고 과정에서 확인된 IP 주소와 도메인, 파일, 프로세스, 통신 패턴은 탐지 규칙과 위협 헌팅 조건, 사고 대응 절차에 반영한다.
C2 위협 완화를 위한 운영 원칙
C2 위험을 줄이기 위해서는 필요하지 않은 외부 통신을 제한해야 한다. 서버와 주요 업무 시스템은 업무에 필요한 목적지와 프로토콜만 외부 통신을 허용하도록 정책을 구성하는 것이 좋다. 인터넷 연결이 필요하지 않은 시스템의 외부 통신을 제한하면 악성코드가 외부 C2 서버에 접속할 가능성도 낮출 수 있다.
DNS 사용 환경도 통제할 필요가 있다. 조직에서 승인한 DNS 서버를 사용하도록 설정하고 DNS 로그를 중앙에서 수집하면 비정상적인 도메인 조회를 분석하기 쉬워진다. 엔드포인트가 임의의 외부 DNS 서버나 별도의 암호화 DNS 서비스를 사용하면 DNS 기반 C2 통신을 확인하기 어려워질 수 있으므로 조직의 보안 정책과 업무 환경에 맞는 관리 기준이 필요하다.
네트워크를 업무 영역과 자산 중요도에 따라 분리하면 감염된 시스템에서 다른 내부 시스템으로 공격이 확산되는 범위를 줄일 수 있다. 사용자 영역과 서버 영역, 중요 정보 시스템, 관리망 사이의 통신을 업무에 필요한 범위로 제한하고, 원격 관리 도구와 스크립트 실행 환경도 승인된 관리자와 시스템에서만 사용할 수 있도록 통제해야 한다.
운영체제와 애플리케이션의 보안 업데이트, 피싱 대응, 다중 인증, 최소 권한 적용, 애플리케이션 실행 통제도 C2 연결이 만들어지기 전 단계의 위험을 줄이는 데 중요하다. 네트워크 침입 탐지 및 방지 시스템은 알려진 악성코드의 통신 패턴이나 프로토콜 특성을 탐지하는 데 활용할 수 있다. 공격자가 서버 주소와 통신 형식을 계속 변경할 수 있으므로 알려진 침해지표 기반 탐지와 함께 행위 기반 탐지를 함께 적용해야 한다.
FAQ
C2 서버 접속 기록이 있으면 악성코드 감염이 확실한가
C2 서버로 알려진 주소에 접속한 기록만으로 악성코드 감염을 확정할 수는 없다. 해당 주소가 여러 서비스에서 공유되거나 다른 용도로 재사용됐을 가능성이 있기 때문이다. 접속을 발생시킨 프로세스와 파일, DNS 요청, 사용자 활동 등 관련 정보를 함께 확인해야 한다.
HTTPS 통신도 C2에 사용되는가
HTTPS도 C2 통신에 사용될 수 있다. 공격자는 C2 명령과 실행 결과를 암호화된 HTTPS 통신으로 주고받아 정상적인 웹 트래픽과 구분하기 어렵게 만들 수 있다. 유효한 인증서를 사용하거나 443 포트로 통신한다는 이유만으로 정상 통신이라고 판단해서는 안 된다.
비콘 통신은 항상 일정한 간격으로 발생하는가
비콘 통신이 항상 일정한 간격으로 발생하는 것은 아니다. 공격자는 탐지를 피하기 위해 접속 간격에 지터를 적용하거나 특정 시간과 사용자 활동 여부에 따라 C2 서버에 접속하도록 설정할 수 있다.
C2 연결을 차단하면 침해 사고가 해결되는가
C2 연결을 차단했다고 해서 침해 사고가 모두 해결되는 것은 아니다. 차단은 새로운 명령 수신을 막는 조치이며, 시스템에는 악성코드와 예약 작업, 서비스, 웹 셸, 탈취된 계정 등 공격자가 다시 접근하는 데 사용할 수 있는 요소가 남아 있을 수 있다. 따라서 최초 침투 경로와 피해 범위를 조사하고 관련 시스템과 계정의 안전성을 확인한 뒤 복구해야 한다.