네트워크에서 악성 봇을 식별하는 5단계 방법

Malicious Bots on your Network
Malicious Bots on your Network

악성 봇이 기업 네트워크의 보안 침해에 중요한 역할을 한다는 것은 이미 잘 알려져 있습니다. 맬웨어는 주로 봇을 이용하여 기업 네트워크 내에 확산되는 경우가 많습니다. 하지만 소프트웨어 업데이트와 같이 많은 운영 환경에서 일상적으로 일어나는 프로세스도 봇이기 때문에 악성 봇을 식별하고 제거하기는 무척 까다롭습니다.

최근까지도 보안 팀이 이러한 ‘나쁜’ 봇과 ‘좋은’ 봇을 효과적으로 구별할 수 있는 방법이 없었습니다. 봇을 식별할 목적으로 제공되는 커뮤니티 보안 규칙과 오픈 소스 피드는 거의 도움이 되지 않습니다. 오탐 사례가 너무 많기 때문입니다. 결국 보안 분석가들은 정상적인 봇이 발생시키는 모든 무의미한 보안 경고를 분석하고 추적하다가 지쳐 나가떨어지게 됩니다.

Cato는 고객의 네트워크를 보호할 때 이와 유사한 문제에 직면했었습니다. 저희는 문제를 해결하기 위해 새로운 접근 방식을 개발했습니다. 당사의 서비스형 보안에 구현된 다차원적 접근 방식은 오픈 소스 피드나 커뮤니티 보안 규칙을 사용했을 때 보다 72% 더 많은 악성 활동을 식별할 수 있습니다.

무엇보다 좋은 점은 귀사 네트워크에서도 이와 같은 전략을 구현할 수 있다는 것입니다. 어떤 네트워크 엔지니어라도 사용하는 기본 도구만 있으면 됩니다. 네트워크 접근 권한, 트래픽을 캡처할 수 있는, 탭센서 같은 장치, 일주일 치 패킷을 저장할 수 있는 충분한 디스크 공간을 예로 들 수 있습니다. 캡처한 패킷을 분석하여 네트워크 보안을 향상시키는 방법을 소개합니다.

악성 봇 트래픽 식별을 위한 다섯 가지 기준

앞에서 설명했듯이 당사는 다차원 접근 방식을 사용합니다. 단일 변수로는 악성 봇을 정확하게 식별할 수는 없지만, 여러 요소를 평가하여 종합적인 통찰력을 얻는다면 정확히 찾아낼 수 있습니다. 이 접근 방식은 사람이 생성한 세션에서 네트워크에 위험을 유발할 가능성이 높은 세션으로 조금씩 범위를 좁혀나가는 방법을 사용합니다.

당사의 프로세스는 다음과 같이 단순합니다.

  • 봇과 사람 분리
  • 브라우저와 다른 클라이언트 구분
  • 브라우저 내에서 봇 구분
  • 페이로드 분석
  • 대상의 위험성 결정

각 단계에 대해 자세히 설명해 보겠습니다.

통신 빈도를 측정하여 봇과 사람 구분하기

일반적으로 모든 유형의 봇은 대상과 지속적으로 통신합니다. 봇은 명령을 수신하거나, 연결 유지 신호를 보내거나, 데이터를 유출해야 하기 때문입니다. 봇과 사람을 구별하는 첫 번째 단계는 대상과 반복적으로 소통하는 장비를 식별하는 것입니다.

그리고 주기적이고 지속적으로 많은 대상과 통신하는 호스트를 찾아야 합니다. 저희 경험상, 일주일 분량의 트래픽만 있으면 클라이언트 및 대상 간 통신의 성격을 충분히 파악할 수 있습니다. 통계적으로 통신 패턴이 일정할수록 봇에 의해 생성된 통신일 가능성이 높습니다(그림 1 참조).

빈도 그래프
그림 1: 이 빈도 그래프는 올해 5월 중순의 봇 통신 내역을 보여줍니다. 통신 내역이 완전히 균일하게 분포하는 것에 주목하십시오. 이는 봇 트래픽임을 나타내는 강력한 징후입니다.
허위 정보에서 딥페이크에 이르는 다양한 주제를 다루는 사이버 보안 마스터클래스에 참가하십시오

 

브라우저와 기타 클라이언트 구분

단순히 장치에 봇이 존재한다는 사실을 아는 것만으로는 큰 도움이 되지 않습니다. 앞서 말했듯 대부분의 장치는 어느 정도의 봇 트래픽을 생성하기 때문입니다 네트워크에서 통신하는 클라이언트의 유형도 살펴봐야 합니다. 일반적으로 ‘좋은’ 봇은 브라우저 내에 있고 ‘나쁜’ 봇은 브라우저 외부에서 작동합니다.

운영 체제에 포함된 다양한 유형의 클라이언트와 라이브러리는 트래픽을 생성합니다. 예를 들어, Chrome, WinInet, Java Runtime Environment는 모두 다른 유형의 클라이언트입니다. 처음에는 클라이언트 트래픽이 동일해 보일 수 있지만, 클라이언트를 식별하고 추가 정보를 확보할 방법은 있습니다.

애플리케이션 계층의 헤더부터 분석하십시오. 대부분의 방화벽 구성은 HTTP와 TLS를 모든 주소에 대해 허용하므로 많은 봇이 이러한 프로토콜을 사용하여 대상과 통신합니다. 클라이언트가 구성한 HTTP 및 TLS 기능 그룹을 분석하면 브라우저 외부에서 작동하는 봇을 식별할 수 있습니다.

모든 HTTP 세션에는 요청을 정의하고 서버가 이를 처리하는 방법을 지정하는 일련의 요청 헤더가 있습니다. 이 헤더와 그 순서, 값은 HTTP 요청을 작성할 때 설정됩니다(그림 2 참조). 마찬가지로, 암호화 스위트, 확장 목록, ALPN(Application-Layer Protocol Negotiation), 타원 곡선 등의 TLS 세션 속성은 초기 TLS 패킷인 ‘Client Hello’ 패킷에서 설정되며, 이 패킷은 암호화되지 않습니다. HTTP 및 TLS 속성의 다양한 시퀀스를 그룹화하면 서로 다른 봇을 식별하는 데 도움이 될 수 있습니다.

이렇게 진행한다면, 예를 들어, 서로 다른 암호화 스위트를 사용하는 TLS 트래픽을 식별할 수 있습니다. 이는 브라우저 외부에서 트래픽이 생성되고 있음을 나타냅니다. 사람이 트래픽을 생성하는 것과 매우 다른 방식이기 때문에 봇 트래픽임을 보여주는 매우 강력한 증거가 될 수 있습니다.

패킷 헤더 시퀀스
그림 2: 다음은 Windows의 암호화 라이브러리에서 생성된 패킷 헤더 시퀀스(쉼표로 구분됨)의 예입니다. 헤더의 시퀀스, 키, 값의 변화는 봇을 분류하는 데 도움이 될 수 있습니다.

브라우저 내에서 봇 구분

악성 봇을 식별하는 또 다른 방법은 HTTP 헤더에 포함된 특정 정보를 분석하는 것입니다. 인터넷 브라우저는 명확하고 표준화된 헤더 이미지를 가지는 경우가 많습니다. 정상적인 브라우징 세션에서 브라우저 내의 링크를 클릭하면 해당 URL에 대한 다음 요청에 포함될 ‘리퍼러’ 헤더가 생성됩니다. 봇 트래픽은 대부분 ‘리퍼러’ 헤더가 없고, 헤더가 포함되더라도 위조됩니다. 모든 트래픽 흐름에서 동일해 보이는 봇은 악성 봇일 가능성이 높습니다.

리퍼러 헤더 사용
그림 3: 브라우징 세션의 헤더 내에서 리퍼러 헤더를 사용한 예입니다.

User-Agent는 요청을 시작하는 프로그램을 나타내는 가장 대표적인 문자열입니다. fingerbank.org 등 다양한 출처는 User-Agent 값을 알려진 프로그램 버전과 대조하여 일치 여부를 확인합니다. 이 정보를 사용하면 비정상적인 봇을 식별하는 데 도움이 될 수 있습니다. 예를 들어, 최신 브라우저는 user-agent 필드에 ‘Mozilla 5.0’ 문자열을 사용합니다. 모질라 버전이 이보다 낮거나 버전 표시가 없다면 비정상적인 봇의 user-agent 문자열이라는 의미입니다. 신뢰할 수 있는 브라우저는 user-agent 값 없이 트래픽을 생성하지 않습니다.

페이로드 분석

그렇다고 해서 봇 검색 범위를 HTTP 및 TLS 프로토콜로만 제한하려는 것은 아닙니다. HTTP 및 TLS 이외의 프로토콜에서도 봇을 검색할 수 있습니다. IRC 프로토콜에서 IRC 봇이 악성 봇넷 활동에 사용된 사례를 예로 들 수 있습니다. 또한 저희는 이미 잘 알려진 포트에서 독점적인 미확인 프로토콜을 사용하는 맬웨어 샘플을 관찰한 바 있으며, 이러한 맬웨어는 애플리케이션 식별 기능을 활용해 감지할 수 있습니다.

트래픽의 방향(인바운드 또는 아웃바운드)도 중요한 의미가 있습니다.
인터넷에 직접 연결된 장치는 지속적인 스캔 작업에 노출되는데, 이러한 스캔 작업을 하는 봇은 인바운드 스캐너로 불릴 수 있습니다. 반면, 외부로 나가는 스캔 작업이 감지된다면 스캔 봇에 감염된 장치가 있음을 시사합니다. 이러한 스캔 작업은 스캔 대상에게 해로울 수 있으며 조직의 IP 주소 평판에도 부정적인 영향을 미칠 수 있습니다. 아래 그래프는 단시간 동안 트래픽 흐름이 급증하는 양상을 보여줍니다. 이는 스캔 봇이 활동하고 있음을 나타내는 것일 수 있습니다. 스캔 봇의 활동은 초당 트래픽 흐름을 계산하여 분석할 수 있습니다.

주기적인 아웃바운드 스캔 작업
그림 4: 고빈도 아웃바운드 스캔 작업의 예입니다.

대상 분석: 목적지 파악하기

지금까지 클라이언트-서버 간 통신 빈도와 클라이언트 유형을 분석하여 봇의 활동 가능성을 살펴보았습니다. 또 다른 요소인 목적지 또는 대상을 분석해 보겠습니다. 악성 대상을 식별하려면 다음의 두 가지 요소를 고려해야 합니다. 바로 대상의 평판과 인기도입니다.

대상 평판은 여러 흐름에서 수집한 경험을 바탕으로 도메인이 악성일 가능성을 평가합니다. 평판은 제3자 서비스에서 결정하거나, 사용자가 대상을 악성으로 신고할 때마다 기록하여 자체적으로 평가할 수 있습니다.

하지만 대상 평판을 결정할 때 URL 평판 피드와 같은 간단한 출처만을 사용하는 것만으로는 충분하지 않은 경우가 많습니다. 매달 수백만 개의 신규 도메인이 등록됩니다. 새로운 도메인이 너무 많기 때문에 도메인 평판 분석 시스템은 이를 적절하게 분류하는 데 필요한 관련 데이터가 부족하여 높은 오탐률을 나타냅니다.

종합적으로 살펴보기

지금까지 알아본 모든 것을 종합하면, 세션은 다음과 같이 식별될 수 있습니다.

  • 사람이 아닌 장치에 의해 생성됩니다
  • 브라우저 외부에서 생성되었거나 비정상적인 메타데이터가 있는 브라우저 트래픽입니다
  • 인기도가 낮은 대상, 특히 분류되지 않았거나 악성으로 표시된 대상과의 통신은 의심스러울 수 있습니다. 정상적이고 신뢰할 수 있는 봇이라면 인기도가 낮은 대상과 통신해서는 안 됩니다.

연습: 안드로메다 맬웨어가 네트워크에서 작동하는 원리

이러한 방법을 조합하여 네트워크에서 다양한 유형의 위협을 발견할 수 있습니다. 안드로메다 봇을 감지하는 것을 예로 들어보겠습니다. 안드로메다는 다른 맬웨어를 다운로드하는 데 자주 사용되는 대표적인 다운로더입니다. 저희는 앞서 설명한 다섯 가지 접근 방식 중 네 가지를 사용하여 데이터를 분석함으로써 안드로메다를 식별합니다.

대상 평판

여러 평판 분석 서비스에서 악성으로 분류하고 있는 ‘disorderstatus[.]ru’ 도메인과의 통신을 감지했습니다. 다양한 출처에서 이 사이트는 ‘알려진 감염원, 봇 네트워크’로 분류됩니다. 하지만 앞에서 언급했듯이 그것만으로는 충분하지 않습니다. 그러한 분류는 해당 호스트가 안드로메다에 감염되었는지 여부를 나타내지 않기 때문입니다. 사용자가 해당 사이트를 방문하기만 한 것일 수 있습니다. 또한 언급한 바와 같이 귀하의 URL은 ‘알 수 없음’ 또는 ‘악성이 아님’으로 분류됩니다.

대상의 인기도

1만 명의 사용자 중 단 한 사용자의 장치만이 이 대상과 통신하고 있습니다. 매우 비정상적입니다. 이로 인해 해당 대상은 낮은 인기도 점수를 받습니다.

통신 빈도

일주일 간 모니터링한 결과, 클라이언트와 대상 사이의 트래픽이 3일 연속으로 유지되었습니다. 반복적인 통신은 봇이 활동하고 있을 가능성을 알리는 또 다른 징후입니다.

클라이언트-대상 통신1
그림 5: 사용자와 disorderstatus[.]ru 간의 클라이언트-대상 통신 빈도는 1시간 간격으로 3일 동안 표시됩니다

헤더 분석

요청하는 user-agent는 ‘Mozilla/4.0’으로, 이는 최신 브라우저에서 사용되지 않는 값이므로 해당 user-agent가 봇일 가능성이 높습니다.

HTTP 헤더 이미지
그림 6: 위는 disorderstatus[.]ru의 트래픽에서 캡처한 HTTP 헤더 이미지입니다. 이러한 요청 중 어느 것에도 ‘리퍼러’ 헤더가 없다는 사실에 주목하십시오. 또한 User-Agent 값도 Mozilla/4.0으로 설정되어 있습니다. 두 가지 모두 안드로메다 세션임을 알리는 징후입니다.

요약

IP 네트워크에서 봇을 감지하는 일은 쉬운 작업이 아니지만, 네트워크 보안 실무 및 맬웨어 추적 작업의 핵심적인 부분이 되고 있습니다. 이 글에서 제시한 다섯 가지 기법을 함께 사용하면 악성 봇을 더욱 효율적으로 감지할 수 있습니다.

링크를 따라가면 당사의 보안 서비스, Cato 관리형 위협 탐지 및 대응 서비스, SASE 플랫폼에 대해 자세히 알아볼 수 있습니다.


Related Topics