메인 콘텐츠로 건너뛰기
Tanium 블로그

평균 패치 시간 추적 방법

이번 글은 저희 조직 내에서 Tanium 플랫폼을 어떻게 활용하고 있는지 살펴보는 4부작 블로그 시리즈 중 세 번째 글입니다. 이번 기사에서는 SecOps 엔지니어 그렉 포티에(Greg Pothier)가 Tanium과 Splunk를 함께 활용해 패치 관리 데이터를 제공하는 방법을 소개하며, CSO 및 기타 보안 책임자들이 이를 바탕으로 잠재적 위험을 평가할 수 있는 방법을 설명합니다.

평균 소요 시간 추적

네트워크에 연결된 모든 기기에 대해 ‘패치까지 소요되는 평균 시간(Mean Time to Patch)’을 추적하는 것이 얼마나 유용할까요? CIO, CSO 또는 운영 부사장이 요청할 때마다 미해결 패치 수에 대한 정확한 결과를 즉시 제공할 수 있다면 어떨까요?

이것들은 우리 타늄에서 스스로에게 던지기 시작한 질문들이었습니다. 이 답변들은 당사의 보안 및 IT 책임자들에게 실질적인 비즈니스 가치를 제공하며, 이들은 해당 데이터를 활용하여 공격 표면과 패치 적용 현황을 지속적으로 모니터링할 수 있습니다.

대부분의 조직이 자사 네트워크 전반에 걸친 패치 현황조차 파악하지 못하고 있는 것은 사실이지만, 타늄(Tanium)에서는 이를 파악할 뿐만 아니라 패치 적용에 소요되는 평균 시간을 추적할 수 있는 지표도 개발했습니다.

이것이 바로 저희 Tanium에서 Tanium 플랫폼을 활용하여 조직의 패치 관리 수행 현황에 대한 지표를 수집하는 가장 정확한 방법입니다. Tanium을 사용하면 아무리 대규모의 기업 환경에서도 적용되지 않은 중요 패치나 설치된 모든 애플리케이션의 상태와 같은 정확한 정보를 손쉽게 수집할 수 있습니다. CSO 및 기타 보안 책임자들에게 있어, 전사적으로 적용되지 않은 패치의 현황을 파악하는 것은 잠재적 위험을 평가하는 데 도움이 되므로 반드시 확보해야 할 핵심 지표입니다. Tanium을 활용하면 한 단계 더 나아가, 전사적으로 패치를 적용하는 데 걸리는 평균(중간값) 시간을 측정함으로써 패치 적용 현황을 평가할 수 있습니다. Tanium과 , Splunk (새 탭에서 열림), 데이터 분석 도구인 을 활용하여 이를 달성하는 방법은 다음과 같습니다.

Tanium Connect

먼저, Tanium Connect (새 탭에서 열림) 을 설정하여, “모든 컴퓨터에서 컴퓨터 이름, 운영 체제 및 사용 가능한 패치를 가져오기”라는 Tanium 쿼리를 Splunk로 전송하도록 했습니다. 운영 체제는 선택 사항입니다. 향후 특정 운영 체제를 기준으로 결과를 필터링해야 할 경우를 대비해 추가해 두었습니다.

컴퓨터 인벤토리 쿼리 결과와 Splunk 연결 상태를 보여주는 Tanium Connect 통합 대시보드

Tanium에서 Connect를 생성한 후, 이를 실행하고 Splunk에서 결과가 예상대로 처리되고 있는지 확인합니다. 이 연결이 ‘Tanium’으로 색인화되도록 구성했기 때문에, ‘index=“tanium”’ 쿼리로 검색을 시작합니다. 그런 다음, 다음 내용을 추가합니다:

<code>index=”tanium”
Question="모든 컴퓨터에서 컴퓨터 이름, 일련번호 및 사용 가능한 패치 정보 가져오기"
</code>

이 기능은 컴퓨터 이름별로 정렬된 모든 사용 가능한 패치 결과를 제공합니다. 이제 제목, 심각도, CVE_ID 등을 포함한 모든 패치 목록이 준비되었습니다. (참고: 아래 스크린샷에서 결과의 가독성을 높이기 위해 표 형식을 사용했으나, 이는 시각적 편의를 위한 것일 뿐, 본문 작성 시 반드시 표 형식을 사용할 필요는 없습니다.)

Tanium에서 제공한 Windows 보안 업데이트 및 패치 데이터의 검색 결과를 보여주는 Splunk 인터페이스

이 단계에서 심각도 유형별로 패치를 시각적으로 잘 정리해 보여줍니다. 중복된 결과를 처리하지 않도록 하기 위해, 연결 정보를 다음과 같은 중복 제거 함수로 전달합니다:

<code>| Computer_Serial_Number, KB_Article, CVE_ID, Title 중 중복 제거</code>
Tanium 연동을 통해 Windows 패치 및 보안 업데이트의 검색 결과를 표시하는 Splunk 인터페이스

이를 통해 해당 값들(Computer_Serial_Number, KB_Article, CVE_ID, Title)이 한 번만 보고되어 고유하게 유지됩니다. 고유 값을 확보한 후, 간단한 함수를 실행하여 심각도별로 결과를 그래프로 표시합니다:

<code>| 심각도별 차트 수
</code>

이 결과는 각 심각도 유형별 총 개수와 비율을 잘 보여주는 멋진 차트를 만들어 냅니다:

Windows 패치 또는 업데이트 배포 현황을 원형 차트로 보여주는 Splunk 시각화

이제 심각도별로 분류된 현재 진행 중인 패치 현황을 한눈에 확인할 수 있는 견고하고 자동화된 대시보드가 마련되었습니다. 리눅스나 Mac OS X와 같은 다른 운영 체제를 실행하는 컴퓨터에서도 동일한 작업을 쉽게 수행할 수 있다는 점에 유의하십시오. 이제 ‘패치에 소요되는 평균 시간’을 계산하고 표시하는 자동화 솔루션을 구축하겠다는 목표를 이어가 보겠습니다.

다음으로, 기본 쿼리로 돌아가 중복 제거 조건을 제거하여 수신된 모든 패치 로그를 처리할 수 있도록 하겠습니다. 그런 다음 다음을 추가합니다:

<code>| Computer_Name, CVE_ID, Severity, Title에 대해 stats earliest(_time)을 First로, latest(_time)을 Last로 계산</code>
Windows 보안 업데이트 및 카탈로그 정보를 보여주는 Splunk 검색 결과 표

이 기능은 통계 기능을 활용하여 컴퓨터 이름, CVE_ID, 심각도 및 제목별로 패치가 처음 보고된 시점과 마지막으로 보고된 시점을 확인합니다. 이 보고서는 패치가 처음 확인된 시점과 마지막으로 확인된 시점에 대한 타임스탬프를 제공합니다. 이제 두 값의 차이를 구해 지속 시간을 확인한 다음, 에포크 시간 형식을 읽기 쉬운 문자열로 변환합니다:

<code>| eval diff = Last - First | eval diff2 = tostring(diff, "duration")</code>
중요도 등급이 표시된 Windows 보안 업데이트를 보여주는 Splunk 검색 결과

결과에는 컴퓨터 이름, 패치 정보, 그리고 각 컴퓨터에서 각 패치가 ‘미해결’ 상태로 보고된 기간이 나열되어 있습니다. 이제, 그 차이값들의 실제 최대값, 최소값, 평균을 계산해 보겠습니다:

<code>| 통계값: 개수, max(차이), min(차이), mean(차이)
</code>

그게 다예요. 이제 모든 패치의 최대값, 최소값, 평균값을 알게 되었습니다. mean(diff)를 average로 이름을 바꾸고, 소수점 이하 자릿수를 반올림하며, 일·시간·분 등을 표시하는 보기 좋은 형식의 문자열을 생성함으로써 결과를 깔끔하게 정리합니다.

<code>| mean(diff)의 이름을 average로 변경 | eval average = round(average, 0) | eval averageTime = tostring(average, </code>
보안 업데이트 집계에 대한 검색 쿼리가 표시된 Splunk 인터페이스

이 블로그 게시물에서는 Tanium에 저장된 질문 하나(Tanium Connect를 통해 하루에 한 번 Splunk로 전송됨)를 활용하여 두 가지 중요한 자동화된 메트릭을 생성했습니다. IT 경영진은 이 정보를 활용하여 현재 상황은 물론 시간의 경과에 따른 공격 표면 면적과 패치 적용 성과를 측정할 수 있습니다.

이 글은 4부작 시리즈 중 세 번째 편입니다.  () 1부()에서는 Tanium에서 중요한 취약점을 어떻게 추적하는지 소개합니다.  ()의 2부()에서는 Tanium을 활용하여 중요한 규정 준수 지표를 추적하는 방법을 설명합니다.  ()의 4부()에서는 평균 응답 시간에 대한 지침을 제시하고, 신속한 응답 시간이 모든 비즈니스에 왜 중요한지 설명합니다.

저자 소개: 그렉 포티에(Greg Pothier)는 타늄(Tanium)의 보안 엔지니어로, 보안 자동화, 데이터 분석, 침투 테스트 및 소프트웨어 개발 분야에서 경력을 쌓아왔습니다. 타늄에 합류하기 전, 그렉은 미국의 여러 정보 기관 및 정부 기관에서 선임 엔지니어로 근무했습니다. 그렉은 조지 메이슨 대학교에서 컴퓨터 과학 석사 학위를 취득했으며, 재학 중 NSA 정보보안 사이버 장학금을 수상하기도 했다.