Terrance DeJesusEric Forte

사이버 데이터 분석용 Google 클라우드

Google Cloud로 사이버 위협 데이터의 바다를 항해하기

42분 읽기보안 연구
사이버 데이터 분석용 Google 클라우드

서문

오늘날과 같은 디지털 시대에 디바이스와 시스템에서 생성되는 엄청난 양의 데이터는 보안 실무자에게 도전이자 기회가 될 수 있습니다. 대량의 데이터를 분석하여 사이버 공격 동향에 대한 가치 있고 실행 가능한 인사이트를 도출하려면 정밀한 도구와 방법론이 필요합니다.

데이터 분석 작업을 시작하기 전에 궁금한 점이 있을 수 있습니다:

  • 답변하고자 하는 구체적인 질문은 무엇이며 필요한 데이터를 보유하고 있나요?
  • 모든 관련 데이터는 어디에 위치하나요?
  • 이 데이터에 액세스하려면 어떻게 해야 하나요?
  • 데이터에 액세스하면 데이터를 이해하고 정리하는 데 어떤 단계가 포함되나요?
  • 데이터를 추출, 해석 또는 시각화하는 데 가장 효과적인 도구는 무엇인가요?
  • 원시 데이터를 즉시 분석해야 하나요, 아니면 처리될 때까지 기다려야 하나요?
  • 가장 중요한 것은 데이터에서 어떤 실행 가능한 인사이트를 도출할 수 있는가 하는 것입니다.

이 질문들에 공감이 간다면 올바른 길을 가고 있는 것입니다. 이러한 궁금증을 해결하고 종합 보고서를 작성하는 과정을 안내해 드리는 Google Cloud의 세계에 오신 것을 환영합니다.

접근 방식에는 다음 순서로 몇 가지 단계가 포함됩니다:

탐색: 데이터에 대한 철저한 이해부터 시작합니다. 이 단계에서는 발견하고자 하는 잠재적 인사이트를 파악하고 필요한 데이터의 가용성을 확인합니다.

추출: 여기에서 분석에 가장 관련성이 높고 최신 정보에 초점을 맞춰 필요한 데이터를 수집합니다.

전처리 및 변환: 이 단계에서는 분석을 위해 데이터를 준비합니다. 여기에는 추가 처리를 위한 준비 상태를 보장하기 위해 데이터를 정규화(정리, 구성 및 구조화)하는 작업이 포함됩니다.

트렌드 분석: 대부분의 위협 발견과 관찰은 이러한 노력에서 비롯됩니다. 처리된 데이터를 분석하여 패턴, 트렌드, 이상 징후를 확인합니다. 시계열 분석 및 집계와 같은 기술을 사용하여 시간에 따른 위협의 진화를 파악하고 다양한 플랫폼에서 중요한 사이버 공격을 강조합니다.

축소: 이 단계에서는 가장 중요하고 인사이트를 얻을 수 있는 측면에 초점을 맞춰 데이터를 가장 관련성이 높은 요소로 추출합니다.

프레젠테이션: 마지막 단계는 조사 결과를 발표하는 것입니다. Google Workspace의 도구를 활용하여 명확하고 간결하며 시각적으로 매력적인 방식으로 인사이트를 표시하는 것을 목표로 합니다.

결론: 결론: 이 여정을 되돌아보며 올바른 분석 도구를 갖추는 것의 중요성에 대해 논의해 보겠습니다. 사이버 위협 데이터를 분석하는 데 이상적인 환경을 제공하는 Google Cloud Platform(GCP)이 어떻게 원시 데이터를 의미 있는 인사이트로 변환할 수 있도록 지원하는지 살펴보겠습니다.

탐색: 사용 가능한 데이터 결정

정교한 분석에 들어가기 전에 연구하고자 하는 데이터 환경에 대한 이해를 바탕으로 준비해야 합니다.

접근 방식은 다음과 같습니다:

  1. 사용 가능한 데이터 파악하기: 첫 번째 단계는 어떤 데이터에 액세스할 수 있는지 확인하는 것입니다. 여기에는 멀웨어 현상, 엔드포인트 이상 징후, 클라우드 신호 등이 포함될 수 있습니다. 이러한 데이터 유형의 가용성을 확인하는 것은 필수적입니다.
  2. 데이터 저장소 찾기: 데이터의 정확한 위치 파악. 데이터베이스, 데이터 레이크, 기타 스토리지 솔루션 등 데이터가 어디에 있는지 알면 이후 분석 프로세스를 간소화하는 데 도움이 됩니다.
  3. 데이터 액세스: 필요한 데이터 집합에 액세스하는 데 필요한 권한 또는 자격 증명이 있는지 확인하는 것이 중요합니다. 그렇지 않은 경우 리소스 소유자를 식별하고 리소스 소유자에게 액세스를 요청해야 합니다.
  4. 데이터 스키마 이해하기: 데이터의 구조를 이해하는 것은 매우 중요합니다. 스키마를 알면 분석 프로세스를 효과적으로 계획하는 데 도움이 됩니다.
  5. 데이터 품질 평가하기: 모든 철저한 분석과 마찬가지로 데이터의 품질을 평가하는 것도 중요합니다. 데이터가 의미 있는 트렌드 분석을 위해 충분히 세분화되고 상세하게 분류되어 있는지 확인합니다.

이 단계에서는 분석이 견고하고 현실적인 토대를 바탕으로 이루어지도록 하는 것입니다. 글로벌 위협 보고서와 같은 보고서의 경우 다음과 같은 풍부하고 관련성 있는 데이터 세트에 의존합니다:

  • 클라우드 신호 데이터: 여기에는 글로벌 보안 정보 및 이벤트 관리(SIEM) 경보의 데이터가 포함되며, 특히 AWS, GCP, Azure와 같은 클라우드 플랫폼에 중점을 둡니다. 이 데이터는 공개 탐지 규칙에서 가져오는 경우가 많습니다.
  • 엔드포인트 경보 데이터: 다양한 공개 엔드포인트 행동 규칙을 통합하여 글로벌 Elastic Defend 경보에서 수집한 데이터입니다.
  • 맬웨어 데이터: 여기에는 MalwareScore와 공개 YARA 규칙으로 강화된 글로벌 Elastic Defend 경보의 데이터가 포함됩니다.

각 데이터 세트는 MITRE ATT& CK와 같은 프레임워크, Elastic Stack 세부 정보 및 고객 인사이트를 통해 맥락에 맞게 분류되고 보강됩니다. BigQuery 및 Google 클라우드 스토리지(GCS) 버킷과 같은 Google 클라우드 플랫폼의 스토리지 솔루션은 분석을 위한 강력한 인프라를 제공합니다.

또한 연례 보고서의 경우 365 일 이전의 데이터는 제외하는 데이터 '최신성' 임계값을 설정하여 관련성과 정확성을 보장하는 것도 중요합니다.

마지막으로, 편견 없는 관점을 제공하는 데이터를 선택하는 것을 잊지 마세요. 내부 데이터를 제외하거나 포함하는 것은 가시성과의 관련성에 따라 의도적이고 전략적으로 결정해야 합니다.

요약하면, 종합적이고 인사이트가 풍부한 분석을 위해서는 올바른 도구와 데이터 집합을 선택하는 것이 기본입니다. 각각의 선택은 데이터 분석의 전반적인 효과에 고유하게 기여하여 최종 인사이트가 가치 있고 영향력 있는 결과를 얻을 수 있도록 합니다.

추출: 데이터 분석의 첫 번째 단계

필요한 데이터를 식별하고 찾은 다음, 분석 여정의 다음 단계는 스토리지 솔루션에서 이 데이터를 추출하는 것입니다. 이 단계는 다음 단계의 심층 분석을 위한 발판이 되므로 매우 중요합니다.

데이터 추출 도구 및 기법

데이터 추출에는 Python, R, Go, Jupyter Notebook, Looker Studio 등 다양한 도구와 프로그래밍 언어를 활용할 수 있습니다. 각 도구는 고유한 장점을 제공하며, 분석의 특정 요구 사항에 따라 선택이 달라집니다.

데이터 추출 작업에서 필요한 데이터를 추출하기 위해 BigQuery, Colab Notebook, 버킷Google Workspace를 조합하여 가장 성공적인 결과를 얻었습니다. 콜랩 노트북은 주피터 노트북과 마찬가지로 Google의 클라우드 환경에서 작동하며 다른 Google 클라우드 서비스와 원활하게 통합됩니다.

데이터 스테이징 및 쿼리를 위한 BigQuery

"분석 프로세스의 핵심 단계는 BigQuery를 사용하여 데이터 집합을" 단계화하는 것입니다. 여기에는 BigQuery 쿼리를 활용하여 개체를 생성하고 저장하여 팀 전체에서 재사용하고 공유할 수 있도록 하는 것이 포함됩니다. 이를 위해 엔드포인트 행동 알림, 고객 데이터, 규칙 데이터 등 여러 데이터 집합 을 하나의 포괄적인 데이터 집합으로 결합할 수 있는 CREATE TABLE 문을 사용합니다.

이렇게 통합된 데이터 세트는 이 목적을 위해 특별히 지정된 BigQuery 테이블에 저장되며, 이 예에서는 이를 '글로벌 위협 보고서' 데이터 세트라고 부릅니다. 이 접근 방식은 클라우드 신호와 멀웨어 데이터 세트를 포함한 다양한 유형의 데이터에 일관되게 적용됩니다.

예를 들어 새로 생성된 데이터 테이블의 이름은 elastic.global_threat_report.ep_behavior_raw 입니다. BigQuery에서 정의한 이 명명 규칙은 데이터 집합을 효과적으로 구성하고 찾는 데 도움이 되며, 이는 추출 프로세스의 후속 단계에 매우 중요합니다.

이 프로세스에서 사용되는 BigQuery 쿼리의 예는 다음과 같습니다:

CREATE TABLE elastic.global_threat_report.ep_behavior_raw AS
SELECT * FROM ...

내보낸 데이터 집합 테이블에 대한 BigQuery 쿼리 다이어그램

또한 BigQuery의 EXPORT DATA 문을 사용하여 테이블을 쪽모이 세공 파일 형식으로 Google Cloud Storage(GCS) 버킷으로 내보내는 등 다른 GCP 서비스로 테이블을 전송할 수도 있습니다.

EXPORT DATA
  OPTIONS (
    uri = 'gs://**/ep_behavior/*.parquet',
    format = 'parquet',
    overwrite = true
  )
AS (
SELECT * FROM `project.global_threat_report.2023_pre_norm_ep_behavior`
)

단계별 데이터 세트 로드를 위한 Colab 노트북

Colab Notebook은 데이터 추출 프로세스를 체계화하는 데 중요한 역할을 합니다. 이를 통해 GitHub 및 Google 드라이브와 같은 플랫폼에 저장된 데이터 스크립트에 쉽게 액세스하고 관리할 수 있습니다.

인증 및 권한 부여를 위해 Google은 Google Workspace 자격 증명을 사용하여 BigQuery 및 Colab Notebook을 비롯한 다양한 Google 클라우드 서비스에 대한 액세스를 간소화합니다. 다음은 인증이 어떻게 처리되는지에 대한 기본적인 예입니다:

Google 클라우드 서비스 간 인증 및 권한 부여 다이어그램

주피터 노트북이나 데이터프레임을 처음 사용하시는 분들은 이러한 도구에 익숙해지는 데 시간을 투자하는 것이 좋습니다. 모든 데이터 분석가의 툴킷에서 기본이 되며, 효율적인 코드 관리, 데이터 분석 및 구조화를 가능하게 해줍니다. 이러한 도구를 숙달하는 것이 효과적인 데이터 분석의 핵심입니다.

Google Colab에서 노트북을 만들면 사용자 지정 테이블(예: project.global_threat_report.ep_behavior_raw)을 추출할 준비가 된 것입니다. 에서 그런 다음 이 데이터는 데이터 조작과 분석을 용이하게 하는 Python 라이브러리인 Pandas 데이터프레임에 로드됩니다. Python으로 대규모 데이터 집합을 처리하는 것은 어려울 수 있지만 Google Colab은 강력한 가상 컴퓨팅 리소스를 제공합니다. 필요한 경우 이러한 리소스는 Google 클라우드 마켓플레이스 또는 Google 클라우드 콘솔을 통해 확장할 수 있으므로 대규모 데이터 세트도 효율적으로 처리할 수 있습니다.

데이터 분석을 위한 필수 Python 라이브러리

데이터 분석 프로세스에서는 각각 특정 용도에 맞는 다양한 Python 라이브러리를 활용합니다:

라이브러리설명
날짜 시간데이터의 날짜 및 시간과 관련된 모든 작업을 처리하는 데 필수적입니다. 분석을 위해 날짜 및 시간 정보를 조작하고 서식을 지정할 수 있습니다.
google.auth인증 및 액세스 권한을 관리하여 Google 클라우드 서비스에 대한 안전한 액세스를 보장합니다. 이는 데이터와 서비스에 액세스할 수 있는 사용자를 제어하는 데 중요한 역할을 합니다.
google.colab.authGoogle Colab 노트북 내에서 Google 클라우드 서비스에 액세스하기 위한 인증을 제공하여 클라우드 기반 리소스에 안전하게 연결할 수 있습니다.
google.cloud.bigqueryGoogle Cloud의 BigQuery 서비스에서 대규모 데이터 집합을 관리하기 위한 도구입니다. 이를 통해 방대한 양의 데이터를 효율적으로 처리하고 분석할 수 있습니다.
google.cloud.storageGoogle 클라우드 스토리지에 데이터를 저장하고 검색하는 데 사용됩니다. 클라우드에서 다양한 데이터 파일을 처리하는 데 이상적인 솔루션입니다.
gspreadGoogle 스프레드시트와의 상호 작용을 촉진하여 스프레드시트 데이터를 쉽게 조작하고 분석할 수 있습니다.
gspread.dataframe.set_with_dataframePandas 데이터 프레임과 Google 스프레드시트 간에 데이터를 동기화하여 두 형식 간에 데이터를 원활하게 전송하고 업데이트할 수 있습니다.
matplotlib.pyplot.plt차트와 그래프를 만들기 위한 Matplotlib 라이브러리의 모듈입니다. 데이터를 그래픽 형식으로 시각화하여 패턴과 추세를 더 쉽게 이해할 수 있도록 도와줍니다.
pandasPython에서 데이터를 조작하고 분석하기 위한 기본 도구입니다. 숫자 테이블과 시계열을 조작하기 위한 데이터 구조와 연산을 제공합니다.
pandas.gbq.to_gbqPandas 데이터프레임에서 Google BigQuery로 직접 데이터를 전송할 수 있어 클라우드 기반 분석 플랫폼으로 데이터를 이동하는 프로세스를 간소화할 수 있습니다.
pyarrow.parquet.pq대용량 데이터 세트에 최적화된 컬럼형 저장 파일 형식인 Parquet 형식으로 데이터를 효율적으로 저장하고 검색할 수 있습니다.
seaborn매력적이고 유익한 통계 그래픽을 그리기 위한 높은 수준의 인터페이스를 제공하는 Matplotlib 기반의 Python 시각화 라이브러리입니다.

다음으로, 앞서 설명한 대로 BigQuery로 인증하고 데이터 집합에 액세스할 수 있는 권한을 부여받습니다. Google Workspace 자격 증명을 사용하면 BigQuery 및 기타 Google 클라우드 서비스에 쉽게 액세스할 수 있습니다. 이 프로세스에는 일반적으로 인증을 위한 간단한 코드 스니펫이 포함됩니다:

from google.colab import auth
from google.cloud import bigquery

auth.authenticate_user()
project_id = "PROJECT_FROM_GCP"
client = bigquery.Client(project=project_id)

인증이 완료되면 데이터에 액세스하고 조작할 수 있습니다. Google Colab과 Google Cloud 서비스의 통합은 이 프로세스를 간소화하여 효율적이고 안전하게 만들어 줍니다.

분석 전 Colab 노트북 정리하기

주피터 노트북으로 작업할 때는 미리 노트북을 정리해 두는 것이 좋습니다. 데이터를 처리하고 조작하는 데는 다양한 단계가 필요하며, 이를 체계적으로 관리하면 반복 가능하고 포괄적인 프로세스를 만드는 데 도움이 됩니다.

저희는 노트북에서 Jupyter 노트북 헤더를 사용해 코드를 체계적으로 정리합니다. 이 구조는 여러 단계를 거쳐야 하는 복잡한 데이터 작업을 처리할 때 특히 유용한 명확한 구획화와 접을 수 있는 섹션 생성을 가능하게 합니다. 이 체계적인 구성은 노트북을 효율적으로 탐색하는 데 도움이 되며, 데이터 추출 및 분석 프로세스의 각 단계에 쉽게 액세스하고 관리할 수 있도록 해줍니다.

게다가 노트북의 워크플로는 선형적으로 보일 수 있지만, 실제로는 더 동적인 경우가 많습니다. 데이터 분석가는 데이터나 결과에 따라 필요에 따라 여러 섹션을 넘나들며 멀티태스킹을 자주 수행합니다. 또한, 한 단계에서 발견한 새로운 인사이트가 다른 단계의 프로세스에 영향을 미쳐 노트북을 완성하기까지 몇 번이고 반복될 수 있습니다. |

빅쿼리 데이터 집합을 데이터 프레임으로 추출하기

노트북의 구조를 설정하고 BigQuery로 성공적으로 인증한 후, 다음 단계는 필요한 데이터 집합을 검색하는 것입니다. 이 프로세스는 종합적인 연구에 필요한 핵심 구성 요소를 선택하는 것과 유사하게 이러한 출처의 정보가 분석의 기초를 형성하므로 나머지 보고서의 기초가 됩니다.

다음은 BigQuery에서 데이터를 가져오는 방법의 예입니다:

import datetime

current_year = datetime.datetime.now().year
reb_dataset_id = f'project.global_threat_report.{current_year}_raw_ep_behavior'
reb_table = client.list_rows(reb_dataset_id)
reb_df = reb_table.to_dataframe()

이 스니펫은 일반적인 데이터 검색 프로세스를 보여줍니다. 먼저 관심 있는 데이터 집합을 정의합니다(해당 연도의 글로벌 위협 보고서( project.global_threat_report.ep_behavior_raw )를 참조하세요). 그런 다음 BigQuery 쿼리를 사용하여 이 데이터 세트에서 데이터를 선택하고 Pandas 데이터 프레임에 로드합니다. 이 데이터프레임은 이후 데이터 분석 단계의 기초가 됩니다.

빅쿼리에서 판다스 데이터 프레임으로 데이터를 추출하기 위한 Colab Notebook 스니펫

이 프로세스가 완료되면 추출 단계가 완료됩니다. BigQuery를 성공적으로 탐색하여 필요한 데이터 집합을 선택 및 검색하고 데이터 프레임 내의 노트북에 로드했습니다. 추출 단계는 데이터를 수집할 뿐만 아니라 심층 분석을 위한 기반을 구축하는 것이므로 매우 중요한 단계입니다. 이는 더 큰 발견 여정의 초기 단계로, 데이터에서 더 자세한 인사이트를 발견하는 변환 단계로 이어집니다.

요약하자면, 데이터 여정의 이 부분은 단순히 데이터 집합을 수집하는 것 이상의 의미를 가지며, 그 다음 단계인 심층 분석을 위해 구조적으로 준비하는 과정입니다. 추출 단계를 구성하고 실행하는 이러한 세심한 접근 방식은 데이터 분석의 후속 단계에서 도출하고자 하는 혁신적인 인사이트를 위한 기반을 마련합니다.

전처리 및 변환: 데이터 분석의 중요한 단계

원시 데이터에서 실행 가능한 인사이트로 전환하려면 데이터 처리에서 일련의 중요한 단계를 거쳐야 합니다. 데이터를 추출한 후에는 분석을 위해 데이터를 정제하는 데 초점을 맞춥니다. 사이버 보안 데이터 세트에는 종종 오탐 및 이상 징후와 같은 다양한 형태의 노이즈가 포함되며, 정확하고 관련성 있는 분석을 보장하기 위해서는 이러한 노이즈를 해결해야 합니다.

데이터 전처리 및 변환의 주요 단계:

  • 데이터 정리: 이 단계에서는 데이터 집합의 무결성을 보장하기 위해 NULL 값을 채우고, 데이터 정렬 불량을 수정하고, 데이터 유형을 검증합니다.
  • 데이터 보강: 이 단계에서는 데이터 세트에 추가 컨텍스트가 추가됩니다. 예를 들어 VirusTotal과 같은 출처의 멀웨어 평판과 같은 타사 데이터를 통합하면 분석의 깊이를 높일 수 있습니다.
  • 정규화: 이 프로세스는 데이터를 표준화하여 일관성을 보장하며, 엔드포인트 멀웨어 알림과 같이 다양한 데이터 세트에 특히 중요합니다.
  • 이상 징후 탐지: 데이터 세트의 정확성을 유지하려면 이상값 또는 오탐을 식별하고 수정하는 것이 중요합니다.
  • 특징 추출: 분석을 위해 추가로 추출할 수 있는 의미 있고 일관된 데이터 포인트를 식별하는 프로세스입니다.

데이터 정리 기술 수용

데이터 정리는 특히 사이버 보안에서 포괄적인 분석을 위해 데이터 집합을 준비하는 기본 단계입니다. 이 프로세스에는 데이터 무결성과 신뢰성을 보장하기 위한 일련의 기술적 점검이 포함됩니다. 구체적인 단계는 다음과 같습니다:

  • MITRE ATT&CK 프레임워크에 매핑: 데이터 세트의 모든 탐지 및 대응 규칙이 MITRE ATT&CK 프레임워크의 해당 전술 및 기법에 정확하게 매핑되어 있는지 확인합니다. 이 검사에는 데이터가 프레임워크와 일치하는 방식에서 NULL 값이나 불일치하는 부분이 있는지 확인하는 것이 포함됩니다.

  • 데이터 유형 유효성 검사: 데이터 세트 내의 데이터 유형이 적절하고 일관성이 있는지 확인합니다. 예를 들어 타임스탬프는 표준화된 날짜/시간 형식이어야 합니다. 이 단계에는 문자열 형식을 날짜/시간 개체로 변환하거나 숫자 값이 올바른 형식인지 확인하는 작업이 포함될 수 있습니다.

  • 중요한 데이터의 완전성: 데이터 세트에서 중요한 정보가 누락되지 않았는지 확인합니다. 여기에는 엔드포인트 동작 로그에서 SHA256 해시 또는 실행 파일 이름과 같은 필수 요소의 존재 여부를 확인하는 것이 포함됩니다. 이러한 데이터가 없으면 불완전하거나 편향된 분석으로 이어질 수 있습니다.

  • 데이터 형식 전반의 표준화: 데이터 집합 전반에서 데이터 형식의 표준화를 평가하고 구현하여 일관성을 보장합니다. 여기에는 텍스트 형식 정규화, 일관된 대문자 사용, 날짜 및 시간 표시 표준화 등이 포함될 수 있습니다.

  • 중복 항목 식별: XDR 에이전트 ID 또는 클러스터 ID와 같은 고유 식별자를 검사하여 중복 항목을 식별하고 제거합니다. 이 프로세스에는 중복을 감지하고 제거하여 각 데이터 항목의 고유성을 보장하는 함수를 사용하는 것이 포함될 수 있습니다.

  • 관련 없는 내부 데이터 제외: 데이터 세트에 실수로 포함되었을 수 있는 내부 데이터를 찾아서 제거합니다. 이 단계는 내부 편견이나 관련 없는 정보가 분석에 영향을 미치는 것을 방지하는 데 매우 중요합니다.

데이터 정리 또는 '데이터 스크러빙'은 워크플로 전반에 걸쳐 지속적으로 이루어지는 작업이라는 점에 유의해야 합니다. 계속해서 데이터의 레이어를 벗겨내고 다양한 인사이트를 얻기 위해 데이터를 분석하면서 추가적인 변화를 파악할 수 있을 것으로 예상됩니다.

데이터 정리를 위한 판다 활용

Python의 Pandas 라이브러리는 사이버 보안 상황에서 데이터 정리에 특히 유용한 몇 가지 기능을 제공합니다. 이러한 방법 중 일부는 다음과 같습니다:

  • DataFrame.isnull() 또는 DataFrame.notnull() 를 클릭하여 누락된 값을 확인합니다.
  • DataFrame.drop_duplicates() 를 클릭하여 중복 행을 제거합니다.
  • 타임스탬프 형식 표준화를 위한 pd.to_datetime() 같은 데이터 유형 변환 방법.
  • 부울 인덱싱을 활용하여 특정 기준에 따라 관련 없는 데이터를 필터링합니다.

올바른 청소 방법을 결정하려면 데이터 세트에 대한 철저한 이해가 필수적입니다. 정리 또는 변환이 필요한 특정 영역을 식별하기 위해 데이터 집합을 미리 탐색해야 할 수도 있습니다. 유용한 방법과 워크플로에 대한 자세한 내용은 Real Python 블로그에서 확인할 수 있습니다.

특징 추출 및 강화

특징 추출과 보강은 데이터 분석의 핵심 단계이며, 특히 사이버 보안의 맥락에서 더욱 그렇습니다. 이러한 프로세스에는 데이터 집합을 변환하고 보강하여 분석에 대한 유용성을 높이는 작업이 포함됩니다.

  • 기존 데이터에서 새 데이터를 만듭니다: 기존 데이터를 수정하거나 기존 데이터를 사용하여 열이나 행을 추가하는 단계입니다.
  • 타사로부터 새 데이터를 추가합니다: 여기서는 기존 데이터를 데이터 세트에 추가할 수 있는 추가 데이터로 응답하는 타사 RESTful API에 대한 쿼리 참조로 사용합니다.

특징 추출

실제 사례를 살펴보겠습니다. Elastic이 커뮤니티와 공유하는 공개적으로 사용 가능한 YARA 서명에 대한 포상금이 주어졌다고 상상해 보세요. 이러한 시그니처는 데이터 세트의 일부 엔드포인트 멀웨어 경고를 트리거합니다. 물론 원시 데이터에 표시되는 규칙 이름( OperationsSystem_MalwareCategory_MalwareFamily)을 기준으로 일관된 명명 규칙을 준수했습니다. 이러한 이름은 보다 구체적인 인사이트를 제공하기 위해 해체할 수 있습니다. 판다를 활용하면 데이터를 전문적으로 분류하고 분석할 수 있습니다. BigQuery를 사용하여 데이터 집합 준비 단계에서 이 작업을 수행하는 것을 선호하는 경우, SPLITOFFSET 절을 조합하여 비슷한 결과를 얻을 수 있습니다:

df[['OperatingSystem', 'MalwareCategory', 'MalwareFamily']] = df['yara_rule_name'].str.split('_', expand=True)

YARA 데이터로 특징 추출

데이터 분석에서 특징 추출을 위한 추가적인 접근 방식, 방법 및 프로세스가 있습니다. 이해관계자의 요구 사항/필요 사항을 참조하고 데이터를 탐색하여 추출에 필요한 사항과 방법을 결정하는 데 도움을 받을 것을 권장합니다.

데이터 Enrich(보강)

데이터 보강은 사이버 보안 데이터 세트의 깊이와 컨텍스트를 향상시킵니다. 한 가지 효과적인 접근 방식은 외부 데이터 소스를 통합하여 기존 데이터에 대한 추가적인 관점을 제공하는 것입니다. 이는 사이버 보안 경고를 이해하고 해석하는 데 특히 유용할 수 있습니다.

데이터 강화의 예: VirusTotal 평판 데이터 통합 사이버 보안에서 데이터 보강의 일반적인 방법에는 VirusTotal (VT)과 같은 외부 위협 인텔리전스 서비스의 평판 점수를 통합하는 것이 포함됩니다. 이 프로세스에는 일반적으로 다음이 포함됩니다:

  1. 평판 데이터 가져오기: VT의 API 키를 사용하여 데이터 세트의 고유 식별자(예: 바이너리의 SHA256 해시)를 기반으로 평판 데이터를 쿼리할 수 있습니다.
import requests

def get_reputation(sha256, API_KEY, URL):
    params = {'apikey': API_KEY, 'resource': sha256}
    response = requests.get(URL, params=params)
    json_response = response.json()
    
    if json_response.get("response_code") == 1:
        positives = json_response.get("positives", 0)
        return classify_positives(positives)
    else:
        return "unknown"

이 함수에서 classify_positives 은 파일을 악성으로 플래그 지정한 안티바이러스 엔진의 수를 기준으로 평판을 분류하는 사용자 지정 함수입니다.

  1. 데이터 세트에 평판 데이터 추가하기: 바이러스 토탈에서 가져온 평판 데이터를 기존 데이터 세트에 통합합니다. 이는 데이터프레임의 각 관련 항목에 get_reputation 함수를 적용하여 수행합니다.
df['reputation'] = df['sha256'].apply(lambda x: get_reputation(x, API_KEY, URL))

여기에서는 데이터 프레임에 reputation 이라는 새 열이 추가되어 VirusTotal의 탐지율을 기반으로 각 바이너리에 대한 추가 정보 계층을 제공합니다.

이 데이터 강화 방법은 사이버 보안 위협 데이터를 강화하는 데 사용할 수 있는 여러 옵션 중 하나에 불과합니다. 강력한 도우미 기능을 활용하고 외부 데이터 저장소를 활용함으로써 분석가는 데이터 집합을 상당히 풍부하게 만들 수 있습니다. 이러한 보강을 통해 데이터를 보다 포괄적으로 이해할 수 있으므로 정보에 입각한 미묘한 분석이 가능합니다. 여기서 설명하는 기법은 사이버 보안 데이터 분석을 더욱 정교하게 만들 수 있는 광범위한 고급 데이터 조작 방법의 일부입니다.

정규화

특히 엔드포인트 알림 및 클라우드 SIEM 알림과 같이 사이버 보안에서 다양한 데이터 집합을 다룰 때는 데이터를 최대한 활용하기 위해 정규화가 필요할 수 있습니다.

정규화 이해하기: 정규화의 핵심은 서로 다른 척도로 측정된 값을 공통 척도로 조정하고, 비례적으로 표현되도록 하며, 중복성을 줄이는 것입니다. 사이버 보안의 맥락에서 이는 이벤트나 경고를 의도치 않게 그 중요성을 증폭시키거나 축소하지 않는 방식으로 표현하는 것을 의미합니다.

엔드포인트 멀웨어 데이터 세트를 살펴보세요. 예를 들어 멀웨어 계열이나 카테고리를 기반으로 감염 추세를 분석할 때는 정확한 표현을 목표로 합니다. 그러나 엔드포인트의 단일 멀웨어 감염은 확장 탐지 및 대응(XDR) 시스템에 따라 여러 개의 경고를 생성할 수 있습니다. 이를 방치하면 위협 환경에 대한 이해가 크게 왜곡될 수 있습니다. 이에 대응하기 위해 XDR 솔루션의 일부로 배포되는 Elastic 에이전트를 고려합니다. 각 엔드포인트에는 멀웨어가 탐지된 경우 단일 감염 인스턴스를 나타내는 고유한 에이전트가 있습니다. "따라서 이 데이터 집합을 정규화하기 위해" 을 평평하게 하거나 고유한 상담원 ID를 기준으로 조정합니다. 즉, 분석 시 원시 알림 수보다는 특정 멀웨어 제품군 또는 카테고리의 영향을 받는 고유 에이전트 ID 수를 고려합니다.

고유 에이전트에 의한 멀웨어 경보 정규화 시각화 예시

위 이미지와 같이 트렌드 분석을 준비하기 위해 멀웨어 데이터를 정규화하지 않으면 주요 결과에서 부정확한 정보가 표시될 수 있습니다. 이러한 부정확성은 일반적인 YARA 규칙, 단일 엔드포인트에서 반복적으로 플래그가 지정된 프로그래밍 작업 등과 같은 수많은 데이터 불일치에서 비롯될 수 있습니다.

접근 방식 다양화: 반면에 엔드포인트 동작 알림 또는 클라우드 알림(AWS, GCP, Azure, Google Workspace 및 O365와 같은 플랫폼에서)을 처리할 때는 정규화 접근 방식이 다를 수 있습니다. 이러한 데이터 세트에는 고유한 뉘앙스가 있을 수 있으며 멀웨어 알림에 사용되는 "플랫화" 기법이 필요하지 않을 수도 있습니다.

정규화 옵션 개념화하기: 정규화의 목표는 데이터의 중복성을 줄이는 것임을 기억하세요. 나중에 돌아가서 수정해야 할 경우를 대비하여 작업을 가능한 한 원자 단위로 유지하세요. 이는 정규화와 표준화를 모두 수행할 때 특히 그렇습니다. 때로는 분리하기 어려울 수 있으며, 두 가지를 왔다 갔다 해야 할 수도 있습니다. 분석가에게는 다양한 옵션이 있습니다. 0 에서 1 사이의 범위로 값을 이동 및 재조정하는 최소-최대 스케일링부터 평균에서 0과 표준 편차를 중심으로 값을 조정하는 Z점수 정규화(또는 표준화)까지 다양한 방법을 사용할 수 있습니다. 기술 선택은 데이터의 특성과 분석의 특정 요구 사항에 따라 달라집니다.

기본적으로 정규화는 사이버 보안 분석이 공평한 경쟁의 장에 기반하여 이해관계자가 과도한 왜곡 없이 위협 환경을 정확하게 파악할 수 있도록 보장합니다. 이는 트렌드 분석에 앞서 중요한 단계입니다.

이상 징후 탐지: 데이터 분석 프로세스 개선

사이버 보안 분석의 영역에서는 이상 징후 탐지에 대한 획일적인 접근 방식은 존재하지 않습니다. 이 프로세스는 당면한 데이터의 특정 특성에 따라 크게 달라집니다. 주요 목표는 잠재적으로 분석을 왜곡할 수 있는 이상값을 식별하고 해결하는 것입니다. 이를 위해서는 데이터 집합의 뉘앙스를 이해하는 것이 중요한 역동적이고 적응력 있는 방법론이 필요합니다.

사이버 보안에서 이상 징후 탐지는 다양한 유형의 데이터 이상 징후에 적합한 다양한 기술과 방법론을 탐색하는 것을 포함합니다. 하나의 방법을 엄격하게 적용하는 것이 아니라 데이터에 대한 깊은 이해를 바탕으로 각 상황에 가장 적합한 기법을 선택하는 것이 전략입니다. 유연성과 적응성에 중점을 두어 선택한 접근 방식이 데이터에 대한 가장 명확하고 정확한 인사이트를 제공할 수 있도록 합니다.

통계적 방법 - 분석의 근간입니다:

통계 분석은 특히 사이버 보안 데이터에 대한 이상 징후 탐지에 있어 항상 선택적인 접근 방식입니다. 데이터의 고유한 분포와 중심 경향을 이해함으로써 표준에서 벗어난 값을 강조할 수 있습니다. 간단하지만 강력한 방법인 Z-점수는 표준 편차 측면에서 데이터 포인트의 평균과의 거리를 측정합니다.

import numpy as np

# Derive Z-scores for data points in a feature
z_scores = np.abs((df['mitre_technique'] - df['mitre_technique'].mean()) / df['mitre_technique'].std())

outliers = df[z_scores > 3]  # Conventionally, a Z-score above 3 signals an outlier

이것이 중요한 이유 이 방법을 사용하면 데이터 포인트의 편차의 중요성을 정량적으로 측정할 수 있습니다. 이러한 이상값은 평균과 같은 집계 메트릭을 크게 왜곡하거나 심지어 머신 러닝 모델 학습에 악영향을 미칠 수 있습니다. 이상값을 항상 제거해서는 안 되며, 컨텍스트가 중요하다는 점을 기억하세요! 때로는 이상값을 구체적으로 찾고 있을 수도 있습니다.

키 라이브러리: 위에서 NumPy를 활용했지만 복잡한 통계 연산에도 SciPy를 사용할 수 있습니다.

집계 및 정렬 - 레이어 풀기:

데이터는 종종 여러 계층으로 존재합니다. 개괄적인 관점에서 시작하여 점차 세부적인 사항으로 들어가면 불일치나 이상 징후를 찾을 수 있습니다. MITRE ATT&CK 전술과 같은 카테고리별로 집계한 다음 더 깊이 파고들면 기술에서 규칙 로직 및 경보 컨텍스트로 이동하면서 점차 세부적인 사항과 잠재적인 이상 징후를 발견할 수 있습니다.

# Aggregating by tactics first
tactic_agg = df.groupby('mitre_tactic').size().sort_values(ascending=False)

여기에서 가장 일반적인 전술을 식별하고 가장 많은 수를 가진 전술을 선택할 수 있습니다. 그런 다음 이 전술에 대한 데이터를 필터링하여 가장 일반적인 전술과 관련된 가장 일반적인 기술을 식별합니다. 기술은 전술보다 더 구체적인 경우가 많으므로 관찰 대상에 대해 더 많은 설명을 추가할 수 있습니다. 그런 다음 동일한 접근 방식에 따라 이 특정 기술을 필터링하고 규칙별로 집계한 다음 해당 탐지 규칙을 검토하여 더 많은 컨텍스트를 확인할 수 있습니다. 여기서 목표는 데이터 집합을 왜곡할 수 있으므로 관련 알림을 제거해야 하는 '노이즈가 많은' 규칙을 찾는 것입니다. 이상값이 제거되고 백분율이 더 정확하게 표시될 때까지 이 주기를 반복할 수 있습니다.

이것이 중요한 이유: 이 계층화된 분석 접근 방식은 모든 것을 놓치지 않도록 보장합니다. 일반적인 사항에서 구체적인 사항으로 이동하여 체계적으로 불일치를 제거합니다.

키 라이브러리: Pandas는 데이터 관련 잡일을 능숙하게 처리할 수 있도록 준비된 영웅입니다.

시각화 - 선명도의 렌즈:

때때로 사람의 눈은 올바른 시각적 표현의 도움을 받으면 가장 복잡한 알고리즘도 놓칠 수 있는 것을 직관적으로 감지할 수 있습니다. 예를 들어, 박스 플롯은 데이터의 중심 경향과 확산을 보여줄 뿐만 아니라 이상값을 뚜렷하게 표시합니다.

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(12, 8))
sns.boxplot(x='Malware Family', y='Malware Score', data=df)
plt.title('Distribution of Malware Scores by Family')
plt.show()

예제 데이터 세트의 제품군별 멀웨어 배포 점수 시각화 예시

이것이 중요한 이유 비주얼리제이션은 추상적인 데이터를 실질적인 인사이트로 변환합니다. 필요에 따라 전체적이고 세분화된 관점을 제공합니다.

주요 라이브러리: Matplotlib을 기반으로 구축된 Seaborn은 데이터를 시각적 스토리로 전환하는 데 탁월합니다.

머신 러닝 - 고급 가드:

기존 방법으로 충분하지 않은 경우 머신 러닝이 개입하여 이상 징후를 예측할 수 있는 렌즈를 제공합니다. 많은 알고리즘이 알려진 패턴을 분류하도록 설계되어 있지만, 딥러닝의 자동 인코더와 같은 일부 알고리즘은 '정상' 데이터를 다시 생성하는 방법을 학습하여 모든 편차를 이상 징후로 표시합니다.

이것이 중요한 이유 데이터 복잡성이 증가함에 따라 이상 징후에 대한 경계가 모호해지고 있습니다. 머신러닝은 데이터에 따라 진화하는 적응형 솔루션을 제공합니다.

주요 라이브러리: Scikit-learn은 사용자 친화적이고 고전적인 머신 러닝 기술의 보고이며, PyTorch는 딥 러닝의 강력한 기능을 제공합니다.

데이터 분석에서 이상 징후 탐지를 완벽하게 수행하는 것은 연습과 반복을 통해 복잡한 기술을 연마하는 것과 비슷합니다. 이 프로세스에는 종종 시행착오가 수반되며, 반복할 때마다 분석가는 데이터 집합에 대한 친숙도를 높일 수 있습니다. 이러한 점진적인 이해는 최종 분석의 견고함과 통찰력을 보장하는 데 핵심적인 역할을 합니다. 데이터 분석에서 탐색과 개선의 여정은 최종 결과만큼이나 중요합니다.

심층적인 트렌드 분석을 진행하기 전에 데이터를 철저하게 사전 처리하고 변환하는 것이 매우 중요합니다. 꼼꼼한 작업에서 정확성과 신뢰성이 필수인 것처럼, 데이터 분석에서도 정확성과 신뢰성은 똑같이 중요합니다. 의미 있는 인사이트를 도출하기 위한 기초 데이터의 정리, 정규화, 보강, 이상값 제거 단계를 거칩니다. 이러한 세심한 준비가 없으면 분석 결과가 약간 부정확한 것부터 상당히 오해의 소지가 있는 것까지 다양할 수 있습니다. 데이터가 적절하게 정제되고 왜곡이 없어야만 진정한 가치를 드러낼 수 있으며, 이를 통해 트렌드 분석에서 신뢰할 수 있고 실행 가능한 인사이트를 얻을 수 있습니다.

트렌드 분석: 데이터에서 패턴 발견하기

위협 행위자가 지속적으로 전술, 기술 및 절차(TTP)를 발전시키는 역동적인 사이버 보안 분야에서는 새로운 위협에 한발 앞서 대응하는 것이 중요합니다. 트렌드 분석은 시간이 지남에 따라 사이버 위협의 패턴과 행동을 식별하고 이해할 수 있는 방법을 제공하는 중요한 도구입니다.

사이버 보안 전문가는 MITRE ATT&CK 프레임워크를 활용하여 진화하는 위협을 분석하고 분류하는 체계적이고 표준화된 접근 방식을 갖출 수 있습니다. 이 프레임워크는 공격 방법론의 패턴을 체계적으로 식별하여 방어자가 공격자의 행동 변화를 효과적으로 예측하고 대응할 수 있도록 지원합니다.

MITRE ATT&CK 프레임워크의 렌즈를 통한 트렌드 분석은 원시 사이버 보안 원격 분석을 실행 가능한 인텔리전스로 전환합니다. 이를 통해 분석가는 공격 전략의 진화를 추적하고 그에 따라 방어 메커니즘을 조정하여 사이버 보안 관리에서 선제적인 자세를 유지할 수 있습니다.

전반적인 개요부터 시작하겠습니다: 집계 및 정렬

조감도로 분석을 시작하는 것이 가장 중요합니다. 이러한 파노라마적 관점을 통해 보다 세분화된 기법과 기본 탐지 규칙을 살펴보기 전에 먼저 광범위한 전술을 정확히 파악할 수 있습니다.

주요 전술: MITRE ATT&CK 전술을 기반으로 데이터를 집계하여 공격자들이 가장 많이 사용하는 전략을 파악할 수 있습니다. 이를 통해 초기 액세스, 실행 또는 탈출 등 주요 목표에 대한 그림을 그릴 수 있습니다.

top_tactics = df.groupby('mitre_tactic').size()
 .sort_values(ascending=False)

기술 자세히 살펴보기: 눈에 띄는 전술을 파악한 후에는 해당 전술과 관련된 기법을 집중적으로 살펴볼 수 있습니다. 이를 통해 공격자의 구체적인 수법을 파악할 수 있습니다.

chosen_tactic = 'Execution'

techniques_under_tactic = df[df['mitre_tactic'] == chosen_tactic]
top_techniques = techniques_under_tactic.groupby('mitre_technique').size()
 .sort_values(ascending=False)

탐지 규칙 및 로직 특정 기법에 대해 집중적으로 살펴보았으니, 이제 경고를 트리거한 탐지 규칙을 더 자세히 살펴볼 차례입니다. 이는 탐지된 내용을 보여줄 뿐만 아니라 탐지 로직을 검토함으로써 플래그가 지정된 정확한 행동과 패턴에 대한 이해도 높일 수 있습니다.

chosen_technique = 'Scripting'

rules_for_technique = techniques_under_tactic[techniques_under_tactic['mitre_technique'] == chosen_technique]

top_rules = rules_for_technique
 .groupby('detection_rule').size().sort_values(ascending=False)

이러한 계층적, 계단식 접근 방식은 양파 껍질을 벗기는 것과 비슷합니다. 각 레이어를 통해 더 복잡한 세부 사항을 노출하여 관점을 다듬고 인사이트를 선명하게 합니다.

시간의 힘: 시계열 분석

사이버 보안 영역에서 시간은 단순한 지표가 아니라 내러티브입니다. 종종 간과되는 타임스탬프는 인사이트의 금광입니다. 시계열 분석을 통해 시간 경과에 따른 이벤트를 플로팅하여 적의 캠페인, 특정 공격 파동 또는 휴면기를 나타낼 수 있는 패턴, 급증 또는 소강 상태를 파악할 수 있습니다.

예를 들어, 엔드포인트 멀웨어 경고를 시간별로 플로팅하면 공격자의 활동 시간을 파악하거나 동기화된 다중 벡터 공격을 발견할 수 있습니다:

import matplotlib.pyplot as plt

# Extract and plot endpoint alerts over time
df.set_index('timestamp')['endpoint_alert'].resample('D').count().plot()
plt.title('Endpoint Malware Alerts Over Time')
plt.xlabel('Time')
plt.ylabel('Alert Count')
plt.show()

시계열 분석은 단순히 "언제" 를 강조하는 것이 아니라, 특정 급증이나 이상 현상 뒤에 "왜" 가 있는지에 대한 인사이트를 제공하는 경우가 많습니다. 새로운 익스플로잇의 출시와 같은 외부 이벤트와 내부 데이터 동향의 상관관계를 파악하는 데 도움이 됩니다.

상관관계 분석

서로 다른 데이터 세트 간의 관계를 이해하면 귀중한 인사이트를 얻을 수 있습니다. 예를 들어, 한 유형의 경보가 급증하면 시스템에서 다른 유형의 활동과 연관되어 다단계 공격 캠페인이나 우회 전략을 파악할 수 있습니다.

# Finding correlation between an increase in login attempts and data exfiltration activities
correlation_value = df['login_attempts'].corr(df['data_exfil_activity'])

판다스 코러의 도움을 받은 이 분석은 고립된 것처럼 보이는 여러 활동이 조직화된 공격 체인의 일부인지 여부를 식별하는 데 도움이 될 수 있습니다.

상관관계도 꼭 메트릭 기반일 필요는 없습니다. 위협을 분석할 때 이전 결과와 새로운 결과를 비교하면 가치와 새로운 인사이트를 쉽게 찾을 수 있습니다.

머신 러닝 & 이상 징후 탐지

방대한 양의 데이터로 인해 수동 분석은 비현실적입니다. 머신러닝은 사람의 눈을 피할 수 있는 패턴과 이상 징후를 식별하는 데 도움을 줄 수 있습니다. 격리 포레스트나 K-최근접 이웃(KNN)과 같은 알고리즘은 일반적으로 일반적으로 관련된 데이터의 편차나 클러스터를 발견하는 데 사용됩니다.

from sklearn.ensemble import IsolationForest

# Assuming 'feature_set' contains relevant metrics for analysis
clf = IsolationForest(contamination=0.05)
anomalies = clf.fit_predict(feature_set)

여기서 이상 변수는 표준에서 벗어난 데이터 요소에 플래그를 지정하여 분석가가 비정상적인 동작을 신속하게 찾아낼 수 있도록 도와줍니다.

행동 패턴 & 엔드포인트 데이터 분석

탐지 규칙에서 수집한 엔드포인트 행동 데이터를 분석하면 광범위한 위협 환경, 사이버 캠페인 또는 진화하는 공격자 TTP를 나타낼 수 있는 중요한 패턴과 추세를 발견할 수 있습니다.

전술 진행 패턴: 시간 경과에 따라 탐지된 행동의 순서를 모니터링하여 공격자가 공격 체인을 통해 이동하는 패턴을 파악할 수 있습니다. 예를 들어, 초기 접근 기법이 실행된 후 측면 이동으로 이어지는 일관된 추세가 있다면 일반적인 공격자 플레이북이 사용되고 있음을 나타냅니다.

명령줄 트렌드 분석: 악의적인 명령줄 인수 내에서도 특정 패턴이나 시퀀스가 나타날 수 있습니다. 가장 자주 탐지되는 악성 인수를 모니터링하면 선호하는 공격 도구나 스크립트에 대한 인사이트를 얻을 수 있습니다.

예:

# Most frequently detected malicious command lines
top_malicious_commands = df.groupby('malicious_command_line').size()
 .sort_values(ascending=False).head(10)

프로세스 상호 작용 트렌드: 개별 부모-자식 프로세스 관계는 악의적일 수 있지만, 이러한 상호 작용의 추세를 파악하면 광범위한 멀웨어 캠페인이나 공격자 TTP를 암시할 수 있습니다. 예를 들어 엔드포인트의 대규모 하위 집합이 동일한 비정상적인 프로세스 상호 작용을 보이는 경우 공통 위협을 암시할 수 있습니다.

시간적 행동 패턴: 다른 유형의 데이터와 마찬가지로, 엔드포인트 행동 데이터의 시간적 측면도 중요한 정보를 제공할 수 있습니다. 특정 악성 행위의 빈도와 시기를 분석하면 공격자의 활동 시간이나 캠페인 기간에 대한 힌트를 얻을 수 있습니다.

예:

# Analyzing frequency of a specific malicious behavior over time
monthly_data = df.pivot_table(index='timestamp', columns='tactic', values='count', aggfunc='sum').resample('M').sum()

ax = monthly_data[['execution', 'defense-evasion']].plot(kind='bar', stacked=False, figsize=(12,6))

plt.title("Frequency of 'execution' and 'defense-evasion' Tactics Over Time")

plt.ylabel("Count")
ax.set_xticklabels([x.strftime('%B-%Y') for x in monthly_data.index])
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

참고: 이 이미지는 글로벌 위협 보고서가 아닌 예시 데이터에서 가져온 것입니다.

거시적 수준에서 엔드포인트 행동 데이터를 집계하고 분석함으로써 고립된 위협을 식별하는 데 그치지 않고 파동, 트렌드, 새로운 패턴을 파악할 수 있습니다. 이러한 폭넓은 관점을 통해 사이버 보안팀은 대규모 사이버 위협을 보다 효과적으로 예측, 대비, 대응할 수 있습니다.

이는 트렌드 분석을 수행하는 방법의 몇 가지 예시이지만, 옳고 그른 접근 방식은 없습니다. 모든 애널리스트는 자신이나 이해관계자가 선호하는 질문이나 질문 유형이 있습니다. 다음은 분석가가 트렌드 분석을 수행할 때 사이버 보안 데이터에 대해 가질 수 있는 몇 가지 추가 질문 또는 쿼리입니다.

  • 이번 분기에 공격자들이 가장 많이 활용하는 상위 3가지 전술은 무엇인가요?
  • 어떤 탐지 규칙이 가장 많이 트리거되고 있으며, 공통점이 있나요?
  • 엔드포인트 알림에 공격자의 시간대를 암시할 수 있는 시간 기반 패턴이 있나요?
  • 더 많은 서비스가 클라우드로 마이그레이션되면서 클라우드 알림은 어떻게 발전해 왔나요?
  • 어떤 멀웨어 군이 더 널리 퍼지고 있으며 그 원인은 무엇일까요?
  • 데이터 패턴을 보면 연말에 활동이 증가하는 등 계절적 요인이 있나요?
  • 외부 이벤트와 사이버 활동의 급증 사이에 상관관계가 있나요?
  • 평일 데이터와 주말 데이터는 알림 및 공격 측면에서 어떻게 다른가요?
  • 어떤 조직 자산이 가장 많이 표적이 되고 있으며, 해당 자산에 대한 방어는 최신 상태인가요?
  • 권한이 있는 계정에서 내부 위협이나 비정상적인 행동의 징후가 있나요?

사이버 보안의 트렌드 분석은 역동적인 프로세스입니다. 몇 가지 기본적인 기술과 질문을 제시했지만, 이 방대한 영역에 접근하는 방법은 무궁무진합니다. 분석가마다 선호하는 도구, 도구, 방법론이 다를 수 있으며, 이는 지극히 당연한 일입니다. 핵심은 위협에 노출된 각 생태계에 대해 끊임없이 변화하는 위협 환경을 인지하면서 접근 방식을 지속적으로 발전시키고 적응하는 데 있습니다.

감소: 간소화: 명확성을 위한 간소화

데이터 분석의 초기 단계를 진행했으니 이제 다음 단계인 축소 단계로 넘어갑니다. 이 단계는 포괄적인 데이터를 보다 이해하기 쉽고 집중할 수 있는 형식으로 정제하고 집중하는 단계입니다.

지금까지의 분석 여정을 요약합니다:

  • 추출: 초기 단계에서는 Google 클라우드 환경을 설정하고 분석을 위해 관련 데이터 집합을 선택했습니다.
  • 전처리 및 변환: 이 단계에서는 데이터를 Colab 노트북 내에서 추출, 처리 및 변환하여 세부 분석을 위한 준비를 마쳤습니다.
  • 트렌드 분석: 이 단계에서는 사이버 공격 전술, 기법 및 멀웨어에 대한 심층적인 인사이트를 제공하여 분석의 핵심을 형성했습니다.

콜랩 노트북의 상세 데이터는 분석가에게는 방대하고 유익한 정보이지만, 일반 사용자에게는 너무 복잡할 수 있습니다. 따라서 축소 단계에서는 이 정보를 보다 간결하고 접근하기 쉬운 형태로 추출하는 데 중점을 둡니다. 조사 결과를 명확하고 이해하기 쉽게 만들어 다양한 부서 또는 이해관계자에게 효과적으로 전달하고 활용할 수 있도록 하는 것이 목표입니다.

주요 데이터 포인트 선택 및 집계

조사 결과를 효과적으로 전달하기 위해서는 청중의 요구에 맞게 프레젠테이션을 구성해야 합니다. 모든 이해관계자가 수집된 데이터의 전체 내용을 필요로 하는 것은 아니며, 많은 이해관계자가 가장 실행 가능한 요점을 강조하는 요약본을 선호합니다. 여기에서 데이터 선택 및 집계가 중요한데, 가장 중요한 요소에 집중하여 접근하기 쉬운 형식으로 표시합니다.

다음은 엔드포인트 행동의 주요 측면에 초점을 맞춰 Pandas를 사용하여 데이터 집합을 집계하고 압축하는 방법의 예입니다:

required_endpoint_behavior_cols = ['rule_name','host_os_type','tactic_name','technique_name']


reduced_behavior_df = df.groupby(required_endpoint_behavior_cols).size()
 .reset_index(name='count')
 .sort_values(by="count", ascending=False)
 .reset_index(drop=True)

columns = {
    'rule_name': 'Rule Name', 
    'host_os_type': 'Host OS Type',
    'tactic_name': 'Tactic', 
    'technique_name': 'Technique', 
    'count': 'Alerts'
}

reduced_behavior_df = reduced_behavior_df.rename(columns=columns)

이 코드와 프로세스에서 주목할 만한 점은 유연성을 제공한다는 점입니다. 예를 들어, 필요에 따라 다양한 데이터 포인트별로 데이터를 그룹화할 수 있습니다. 적들이 자주 사용하는 전술을 파악하고 싶으신가요? MITRE ATT&CK 전술에 따라 그룹화합니다. 가장한 악성 바이너리에 대해 자세히 알아보고 싶으신가요? 추출을 다시 방문하여 파일 경로, 방어 회피 필터링, 집계와 같은 더 많은 Elastic Common Schema(ECS) 필드를 추가하여 일반적으로 밟는 경로를 표시합니다. 이러한 접근 방식을 통해 분석의 출처를 이해하고자 하는 이해관계자를 위한 맞춤형 데이터 집합을 만들 수 있으며, 압도적으로 풍부하지 않으면서도 유익한 데이터 집합을 만들 수 있습니다.

이 프로세스에는 규칙 이름, 호스트 OS 유형, MITRE ATT&CK 전술 및 기법 등 관련 범주별로 데이터를 그룹화한 다음 발생 횟수를 계산하는 작업이 포함됩니다. 이 방법은 데이터에서 가장 널리 퍼진 패턴과 추세를 파악하는 데 도움이 됩니다.

축소된 데이터 집합을 얻기 위한 데이터 집계 다이어그램 예시

접근성을 위해 축소된 데이터를 Google 스프레드시트로 내보내기

이제 메모리에 데이터 프레임으로 저장된 축소된 데이터를 내보낼 준비가 되었습니다. 광범위한 접근성과 사용자 친화적인 인터페이스를 갖춘 Google 스프레드시트를 이러한 인사이트를 공유하는 플랫폼으로 사용하고 있습니다. Google 클라우드 서비스와의 통합 덕분에 데이터를 Google 스프레드시트로 내보내는 과정이 간단하고 효율적입니다.

다음은 Colab 노트북에서 Python을 사용하여 데이터를 Google 스프레드시트에 업로드하는 방법의 예입니다:

auth.authenticate_user()
credentials, project = google.auth.default()
gc = gspread.authorize(credentials)
workbook = gc.open_by_key("SHEET_ID")
behavior_sheet_name = 'NAME_OF_TARGET_SHEET'
endpoint_behavior_worksheet = workbook.worksheet(behavior_sheet_name)
set_with_dataframe(endpoint_behavior_worksheet, reduced_behavior_df)

몇 줄의 간단한 코드만으로 데이터 분석 결과를 Google 스프레드시트로 효과적으로 전송할 수 있었습니다. 이 접근 방식은 접근성과 사용 편의성 때문에 널리 사용되고 있습니다. 그러나 데이터를 표시하는 다른 여러 가지 방법이 있으며, 각각 다른 요구 사항과 대상에 적합합니다. 예를 들어, 처리된 데이터를 보다 동적인 대시보드 형식으로 표시하기 위해 Looker와 같은 플랫폼을 선택하는 경우도 있습니다. 이 방법은 대화형이며 시각적으로 매력적인 데이터 프레젠테이션을 만드는 데 특히 유용합니다. 이를 통해 데이터 분석의 기술적 측면에 익숙하지 않은 이해관계자(예: Jupyter Notebook을 사용하는 사람)도 쉽게 이해하고 인사이트에서 가치를 도출할 수 있습니다.

이 간소화된 데이터 축소 및 표시 프로세스는 클라우드 SIEM 알림, 엔드포인트 행동 알림, 멀웨어 알림 등 다양한 유형의 데이터 세트에 적용할 수 있습니다. 데이터를 단순화하고 집중하여 명확하고 실행 가능한 인사이트를 얻는다는 목표는 변함없습니다.

프레젠테이션 인사이트 소개

데이터 세트를 꼼꼼하게 다듬은 후, 이제 마지막 단계인 프레젠테이션에 집중합니다. 이제 Google 스프레드시트나 Looker와 같은 플랫폼에서 깔끔하게 정리된 데이터 집합을 가져와서 유익하고 매력적인 형식으로 변환합니다.

심층 분석을 위한 피벗 테이블

피벗 테이블을 사용하면 트렌드 분석 결과에 대한 종합적인 개요를 만들 수 있습니다. 이 표를 사용하면 데이터를 다차원적으로 표시하여 널리 퍼진 MITRE ATT&CK 전술, 선택된 기술, 선호하는 멀웨어 제품군 등 사이버 보안의 다양한 측면에 대한 인사이트를 얻을 수 있습니다.

데이터 시각화에 대한 우리의 접근 방식에는 다음이 포함됩니다:

  • MITRE ATT&CK 전술에 대한 광범위한 개요: 일반적인 관점에서 시작하여 피벗 테이블을 사용하여 사이버 위협에 사용되는 다양한 전술을 개괄적으로 살펴봅니다.
  • 세부 분석: 이 파노라마 보기에서 각 인기 전술에 대해 별도의 피벗 테이블을 만든 다음 각 기법 및 특정 탐지 규칙에 대한 세부 분석으로 분기하여 더 자세히 살펴봅니다.

이 체계적인 프로세스는 탐지 로직과 경고의 복잡성을 밝혀내고 사이버 위협 환경에 대한 이야기를 효과적으로 서술하는 데 도움이 됩니다.

상황에 맞는 보고서 정보로 유입되는 집계를 보여주는 다이어그램

다양한 대상의 접근성: Tableau의 데이터 프레젠테이션은 데이터 과학에 정통한 사람부터 보다 간단한 이해를 선호하는 사람까지 다양한 대상에 맞게 설계되었습니다. 구글 워크스페이스 에코시스템은 이러한 인사이트의 공유를 용이하게 하여 피벗 테이블, 축소된 데이터 세트 및 기타 요소를 보고서 작성 프로세스에 관련된 모든 사람이 쉽게 액세스할 수 있도록 합니다.

보고서에 시각화 통합 예를 들어 Google 문서 도구에서 보고서를 작성할 때 Google 스프레드시트의 차트와 표를 원활하게 통합할 수 있습니다. 이러한 통합을 통해 데이터 세트 또는 피벗 테이블의 모든 수정 사항이 보고서에서 쉽게 업데이트되어 프레젠테이션의 효율성과 일관성을 유지할 수 있습니다.

청중에 맞게 프레젠테이션을 조정합니다: 데이터 인사이트 프레젠테이션은 단순히 정보를 전달하는 것이 아니라 시각적으로 매력적이고 이해하기 쉬운 방식으로 전달해야 합니다. 기술에 정통한 청중에게는 동적 차트와 기능을 갖춘 대화형 Colab Notebook이 이상적일 수 있습니다. 반대로 마케팅팀이나 디자인팀에게는 Looker의 잘 디자인된 대시보드가 더 적합할 수 있습니다. 핵심은 청중의 특정 선호도와 필요에 맞게 명확하고 간결하며 시각적으로 매력적인 프레젠테이션을 만드는 것입니다.

결론 결론: 데이터 분석 여정 돌아보기

결론을 내리면서 사이버 위협 데이터를 분석하는 데 있어 우리가 탐색해 온 영역을 되돌아보는 것은 매우 중요합니다. 이 여정에는 몇 가지 주요 단계가 포함되었으며, 각 단계는 최종 인사이트에 크게 기여했습니다.

Google 클라우드 생태계 여정 살펴보기

저희는 GCP, GCE, Colab Notebook, Google Workspace를 비롯한 여러 Google 클라우드 서비스를 사용했습니다. 각각 중추적인 역할을 담당했습니다:

데이터 탐색: 우리는 답을 찾고자 하는 사이버 관련 질문부터 시작하여 우리가 사용할 수 있는 방대한 데이터 집합을 탐색했습니다. 이 블로그에서는 BigQuery에서 사용할 수 있는 원격 분석에만 초점을 맞췄습니다. 데이터 추출: 대량의 데이터를 효율적으로 처리하기 위해 BigQuery를 활용하여 원시 데이터를 추출하는 것부터 시작했습니다. 추출은 BigQuery와 Colab 노트북 내에서 모두 이루어졌습니다. 데이터 랭글링 및 처리: 요리사가 능숙하게 재료를 준비하듯, 파이썬과 판다 라이브러리의 강력한 기능을 활용하여 데이터를 정리, 집계, 정제했습니다. 트렌드 분석: 그런 다음 여러 가지 방법론을 사용하여 개혁된 데이터 세트에 대한 트렌드 분석을 수행하여 시간 경과에 따른 적의 전술, 기법 및 절차에 대한 귀중한 인사이트를 얻었습니다. 감소: 트렌드 분석의 근간에서 이해관계자 및 동료에게 발표할 준비를 위해 다양한 데이터 집합을 대상 데이터 포인트별로 집계했습니다. 프레젠테이션으로 전환: 웹 브라우저 내에서 데이터 분석에서 프레젠테이션으로 쉽게 전환할 수 있는 도구의 민첩성을 강조하여 원활한 워크플로우를 촉진했습니다.

워크플로우의 모듈화 및 유연성

저희 접근 방식의 핵심적인 측면은 워크플로우의 모듈식 특성입니다. 데이터 추출에서 프레젠테이션에 이르는 각 단계는 Google 클라우드 에코시스템의 상호 교환 가능한 구성 요소를 사용하여 특정 요구 사항에 맞게 프로세스를 조정할 수 있었습니다:

다양한 도구: Google 클라우드 플랫폼은 다양한 도구와 옵션을 제공하여 데이터 저장, 분석 및 프레젠테이션을 유연하게 수행할 수 있도록 지원합니다. 맞춤형 분석 경로: 분석의 특정 요구 사항에 따라 다양한 도구와 방법을 조정하고 선택하여 각 데이터 집합에 대한 맞춤형 접근 방식을 보장할 수 있습니다. 인증 및 권한 부여: Google 클라우드 에코시스템에 소속되어 있기 때문에 다양한 도구, 사이트, 데이터 등에 대한 액세스가 모두 간편하여 서비스 간 원활한 전환이 가능했습니다.

오케스트레이션 및 도구 동기화

우리의 기술력과 선택한 도구 간의 시너지가 결정적이었습니다. 이러한 조화는 분석 프로세스가 이 프로젝트에 효과적이었을 뿐만 아니라 향후 더 효율적이고 인사이트가 풍부한 분석을 위한 토대를 마련했습니다. 이러한 도구는 기술적인 복잡성에 얽매이기보다는 의미 있는 인사이트를 도출하는 데 집중하면서 역량을 강화하는 데 사용되었습니다.

요약하자면, 데이터 분석을 통한 이 여정은 신중한 접근 방식, 올바른 도구와 기법 활용, 사이버 위협 데이터 분석의 요구 사항을 충족하는 적응력의 중요성을 강조했습니다. 최종 결과는 단순한 결과 집합이 아니라 끊임없이 진화하는 사이버 보안 분야의 향후 데이터 분석 노력에 적용할 수 있는 정교한 방법론입니다.

행동 유도 나만의 데이터 분석 여정 시작하기

분석 작업 공간이 준비되었습니다! Google Cloud 또는 기타 데이터 분석 플랫폼에 대해 어떤 혁신적인 접근 방식이나 경험을 가지고 있나요? 데이터 분석의 영역은 방대하고 다양하며, 분석가마다 고유한 방식으로 접근하지만 기본 방법과 원칙은 보편적입니다.

목표는 단순히 현재 분석 프로젝트에서 뛰어난 성과를 내는 것이 아니라 지속적으로 기술을 향상하고 적용하는 것입니다. 이러한 지속적인 개선을 통해 데이터 분석에 대한 향후 노력이 더욱 생산적이고, 깨달음을 주고, 영향력을 발휘할 수 있도록 보장합니다. Google Cloud로 데이터 분석의 세계를 탐험해 보세요!

이 주제에 대한 피드백과 참여를 환영합니다! 그렇게 하고 싶으시다면 Elastic의 공개 #보안 Slack 채널에 자유롭게 참여해 주세요.