컨텐츠 바로가기

TLS 핑거프린트 통한 이상 탐지, 공급망 해킹 문제 해결 가능…스플렁크의 최근 논문

댓글 첫 댓글을 작성해보세요
주소복사가 완료되었습니다
지난 몇 년 동안 여러 사건을 통해 드러났듯이 공격자들이 소프트웨어 개발의 인프라를 해킹해 정상적인 업데이트를 트로이목마 바이러스로 감염시키는 침입은 해당 소프트웨어 사용자가 탐지하기 어렵다. 연구원들은 만능 솔루션이 없다는 점에 동의하지만 네트워크 방어자는 기법들을 조합해 중요한 소프트웨어와 배치된 시스템의 동작 방식의 미묘한 변화를 탐지할 수 있다.
ITWorld

ⓒ Getty Images Bank

<이미지를 클릭하시면 크게 보실 수 있습니다>



보안 분석업체 스플렁크(Splunk)의 연구진은 최근 한 소프트웨어 애플리케이션이 HTTPs 연결을 설정하는 것을 식별하기 위해 구축한 고유한 핑거프린트에서 여러 개의 기법을 분석했다. 다만 이 분석은 제공 방식에 상관없이 악성코드 프로그램이 자체적인 TLS 라이브러리나 TLS 구성이 있는 경우가 많고, HTTPs 핸드쉐이크(Handshake)는 트래픽 로그에서 사전에 승인된 애플리케이션의 TLS 클라이언트 해시와 비교해 식별 가능하다는 전제가 있다.


JA3 표준 활용

SSL/TLS 클라이언트 핑거프린트를 사용해 네트워크의 악성 트래픽을 탐지하는 아이디어는 새로운 것은 아니다.

세일즈포스의 연구진은 TLS 핸드쉐이크의 시작 메시지인 일명 ‘클라이언트 헬로(Client Hello)’로 전송되는 클라이언트 TLS 구성의 여러 속성에서 MD5 해시를 구축하는 JA3라는 표준을 개발했다.

SSL 버전, 수락된 암호(cipher), 확장 프로그램 목록, ECDH(Elliptic Curves Diffie-Hellman) 프로토콜 등의 속성은 사슬처럼 연결되어 있으며, MD5 해시가 그 결과로부터 계산된다. 다양한 클라이언트 애플리케이션이 유사한 TLS 구성을 가질 수 있지만 여러 속성의 조합은 프로그램 식별에 사용할 만큼 고유한 것으로 여겨지고 있다.

유사한 접근방식을 활용해 ‘서버 헬로(server hello)’ 메시지의 속성에 기초해 TLS 서버를 위한 핑거프린트를 구축할 수 있다. 이것을 JA3S라 부르지만 서버가 여러 개의 TLS 버전과 구성을 지원하고 클라이언트가 지원하고 요청하는 것에 따라 응답을 조정하기 때문에 신뢰성이 낮을 수 있다. 그래서 같은 서버가 클라이언트마다 다른 TLS 구성 속성 세트로 응답한다.

개발 후 JA3S 지원이 여러 오픈소스 및 사용 네트워크 모니터링 및 보안 도구에 추가됐다. 스플렁크 연구진은 스플렁크 데이터 분석 플랫폼에서 여러 쿼리 유형으로 JA3 사용을 위한 여러 방법론의 효과성을 조사했다.

이번에 공개한 논문에서 “실제 기업 데이터와 테스트 환경에서 생성된 데이터를 사용한 테스트에서 비정상 JA3S 해시를 통해 발생 가능성이 높은 비정상 활동을 탐지할 수 있는 것으로 나타났다. 하지만 효과는 여러 요소에 따라 개별적인 차이가 있을 수 있다. 십중팔구, 허용 목록으로 인지된 긍정 오류의 수를 제한해야 할 것이다”라고 밝혔다.

최선의 결과는 아웃바운드 연결을 개시하도록 허용된 제한된 수의 애플리케이션을 실행하는 중요한 서버의 악성 트래픽을 탐지하는 것이다. 예를 들어, 솔라윈즈 공급망 공격 사례에서 공격자들은 해당 기업의 오리온(Orion) 인프라 모니터링 및 관리 플랫폼의 업데이트의 일환으로 트로이목마 바이러스로 감염된 바이너리를 제공했다. 공격 목표는 인프라를 모니터링하는 것이기 때문에 솔라윈즈 오리온은 무제한 네트워크 접근권한을 갖는 경우가 많으며 일반적으로 전용 기기에서 구동한다.


처음 목격된 핑거프린트와 가장 희귀한 JA3 핑거프린트

스플렁크 팀이 조사한 2가지 유형의 쿼리의 목적은 특정 호스트 시스템의 네트워크 트래픽 안에서 JA3 핑거프린트의 '처음 목격되고', '가장 희귀한' 발생을 탐지하는 것이다. 두 쿼리의 결과로 백도어와 트로이목마 바이러스 등 잠재적으로 승인되지 않은 애플리케이션이 HTTPs 연결을 수행하고 있음을 파악할 수 있다.

연구진은 "처음 목격된 쿼리를 통한 비정상 활동 탐지는 분석가가 네트워크 활동에 익숙하고 (알려진 항목을 필터링하기 위해 JA3S 해시 또는 서버 이름에 대한) 허용 목록을 활용할 때 유용한 것으로 입증됐다”라고 설명했다.

쿼리 처리된 트래픽 데이터의 시간대가 너무 길거나 짧으면 악의적인 활동을 놓칠 수 있기 때문에 이 부분도 중요하다. 연구진은 7일의 시간대가 이 유형의 쿼리에 가장 적합하다는 사실을 알아냈다. 악성 요청이 상위 20개 쿼리 결과에 나타났다.

적절한 시간대와 허용 목록은 데이터 세트의 'server_name'에 의해 가장 드물게 발생하는 JA3S를 찾아내는 것이 목적인 가장 희귀한 유형의 쿼리에 더욱 중요하다. 여러 시간대에서 이 유형의 쿼리 결과는 일관적이지 못했고 긍정 오류가 많아 연구진은 의심스러운 연결을 식별하기 위해서는 다른 쿼리의 결과와 함께 사용해야 한다는 결론을 내렸다.

그리고 연구진은 쿼리의 결과를 필터링하고 각 이벤트의 확률 점수를 계산하기 위해 사용할 수 있는 'anomalydetection'라는 네이티브 스플렁크 명령을 사용했다. 효과는 있었지만 수집되는 데이터의 양과 원하는 민감도에 따라 확률 한계값을 수정해야 했다.

연구진은 "anomalydetection 명령을 사용하면 24 또는 48시간 동안 악성 비정상 활동을 식별하는 데 매우 효과적이었다. 이것보다 긴 기간 동안은 쿼리의 효과성이 감소했다. 단일/24 넷블럭을 통한 소규모 네트워크 테스트에서 알려진 악의적인 활동은 상위 30개 이벤트에서 허용 목록 없이 일관되게 식별됐다. 하지만 광범위한 넷블럭이 여러 개인 네트워크에서는 그렇지 않았다”라고 평가했다.


악의적인 활동의 문제 분류 개선하기

분석 속도를 개선하기 위해 연구진은 룩업 테이블(lookup table)에 쿼리 결과를 저장하고 정리한 후 해당 테이블을 기준으로 다른 쿼리를 실행하는 기법을 고안했다. 이상 탐지 정확도가 개선되지는 않았지만 확장성이 훨씬 뛰어났고 일상 운영 활동에 사용할 때 100배나 빨랐다.

마지막으로 JA3 쿼리 결과와 윈도우 시스템 모니터링 서비스인 'Sysmon' 데이터를 조합했을 때 잠재적인 악의적인 활동의 문제를 더욱 잘 분류할 수 있었다. 왜냐하면 'Sysmon'은 프로세스 실행에 관한 정보를 추가하기 때문이다.

연구원들은 "이를 통해 윈도우 프로세스를 'server_name'과 함께 JA3S 해시에 연계시킬 수 있을 것이다. 예를 들어, 외부 호스트에 연결하는 'powershell.exe' 프로세스를 식별할 수 있을 것이다. 관련된 데이터를 수집하기 위해 'Sysmon'이 네트워크 연결에 의해 개시된 EventCode 3 이벤트를 수집하도록 구성해야 한다. 올라프 하통은 'Sysmon'을 모듈 방식으로 구성하기 위한 유틸리티를 작성해 오픈소스로 공개했으며, 이것이 필요한 데이터를 신속하게 수집하는 가장 쉬운 방법일 수 있다"라고 설명했다.


TLS 핑거프린트의 한계

스플렁크 팀이 해당 기업의 데이터 분석 플랫폼 환경에서 이런 방법론을 연구하기는 했지만 여기에만 국한되지 않으며 다른 데이터 수집 및 트래픽 분석 도구와 함께 사용하도록 조정할 수 있다.

하지만 이런 기법은 일반 탐색이 허용되거나 여러 애플리케이션으로부터 여러 서버로 많은 양의 HTTPs 트래픽을 발생시키는 엔드포인트들에서 이상을 탐지하기 위해 사용할 때 많은 양의 긍정 오류를 발생시키기 쉽다. 즉, 이런 이상 탐지 기법은 고위험 고가치 애플리케이션 서버 또는 가장 중요한 네트워크 부문에서 실행되는 시스템에 적용될 때 가장 잘 작동한다.

스플렁크 보안 전략가 라이언 코바르는 "이런 경우, 우리는 자산과 네트워크 큰 위험이 되는 솔라윈즈 등을 활용한다. 실제로 유입되는 변경사항을 확인할 수 있는가? 현재, 어도비 리더(Adobe Reader)와 이 (해당 환경에 배치된 애플리케이션에서) 모든 것을 탐지하지 못할 수도 있다는 뜻인가? 100%이며, 우리도 이해하지만 실제로 이런 고위험 애플리케이션 서버에서는 점진적으로 시작할 수 있다. 마이크로소프트 윈도우 같은 것을 살펴볼 수도 있지만 모든 단일 데스크톱 호스트는 살펴보지 않는다. 윈도우 서버 2016을 살펴보고 있다. 티어 제로(Tier Zero) 네트워킹 영역에 있는 자산들을 살펴보고 있을 수 있다. 여기에서 규모를 줄일 수 있는지 살펴봤고, 여기에서 가치를 알아볼 수 있었던 고객 및 다양한 파트너들과 테스트를 수행했다"라고 밝혔다.

물론, 소프트웨어 공급망 공격은 제한된 수의 시스템에 배치되는 서버형 애플리케이션에만 영향을 미치지는 않는다. 2017년, 공격자들은 시스템 최적화 및 정리 도구인 씨클리너(CCleaner)의 인프라를 해킹해 소비자와 기업 소유의 컴퓨터 220만 대로 트로이목마 바이러스에 감염된 업데이트를 제공할 수 있었다.

2단계 페이로드는 IT 기업 등 제한된 수의 고가치 표적에만 제공됐다. 같은 해, 마이크로소프트는 공격자들이 기업이 사용하는 서드파티 편집 도구를 위한 업데이트 메커니즘을 해킹했다고 보고했다. 이런 유형의 제품은 기업 내의 워크스테이션 및 직원 노트북에 널리 배치할 수 있다.

하지만 소프트웨어 공급망 공격은 컴퓨터와 업데이트 배포 채널에서 설치된 애플리케이션이 갖고 있는 정상적인 권한을 악용하기 때문에 해당 공격을 완벽하게 탐지해 차단할 수 있는 하나의 제품이나 기법은 없다. 그렇다고 소프트웨어 업데이트가 몇 개월 또는 몇 년 동안 배치되지 않아 시스템이 알려진 익스플로잇 공격에 취약했던 시절로 돌아가는 것은 해결책이 아니다.

많은 기업이 네트워크의 어떤 컴퓨터에서 어떤 애플리케이션이 실행되고 있는지 파악하기 위한 최신 소프트웨어 및 IT 자산 인벤토리가 없다는 것도 문제다. 많은 직원이 집에서 기업 네트워크에 연결하도록 허용된 자신의 기기로 일하고 있는 현재 더욱 그렇다.

최신 CMDB(Configuration Management Database)가 있더라도 네트워크에 존재하는 가능한 모든 애플리케이션을 위한 소프트웨어 업데이트 서버에 대한 허용 목록은 제공업체가 이 정보를 공개하지 않기 때문에 불가능하다. 공개한다 하더라도 도메인 이름과 IP 주소가 자주 변경된다.

기업들은 언젠가 이 문제를 해결하기 시작한다면, 인터넷에 대한 아웃바운드 연결 수가 꽤 제한적이어야 하는 고위험 애플리케이션과 서버에 집중해야 한다.

코바르는 "우선, 자산 목록을 작성한 후 JA3S 같은 것을 사용해 공급망 공격을 탐지하는 것을 중심으로 우리가 했던 조사 방법론을 적용할 수 있다. 광범위하게 시작할 수 있으며, 작성한 자산 목록만 조사한다면 즉시 결과를 얻을 수 있다고 논문에서 밝혔다. 하지만 어느 정도 화이트리스트가 없으면 세부도와 정확도를 달성할 수 없으며, 방어하고자 하는 자산이 정확히 무엇인지 파악하지 못하면 더욱 그럴 것이다. 이런 경우 네트워크에 있는 모든 것 대신에 결과를 보고 싶은 대상이나 변경사항에 집중해야 한다. 모든 솔라윈즈 호스트에 대한 자산 인벤토리가 있는가? 그러면 네트워크에 있는 2만 개의 시스템이 아니라 여기부터 살펴봐야 한다”라고 권고했다. editor@itworld.co.kr

Lucian Constantin editor@itworld.co.kr
저작권자 한국IDG & ITWorld, 무단 전재 및 재배포 금지
기사가 속한 카테고리는 언론사가 분류합니다.
언론사는 한 기사를 두 개 이상의 카테고리로 분류할 수 있습니다.