Elastic Security를 사용한 CVE-2021-44228(Log4j2) 취약점 공격 탐지

blog-security-detection-720x420.png

중요한 유의사항:

  • Elastic이 현재 Elastic 제품에서 이러한 취약점에 대한 내부 위험을 어떻게 평가하고 있는지 이해하려면여기를 참조하세요.
  • 이 블로그는 2021년 12월 14일에 업데이트되었으며, 최초 게시 이후 추가 탐지 및 헌팅 기능이 개선되었습니다.

개요

이 블로그 게시물은 CVE-2021-44228의 요약을 제공하며 Elastic Security 사용자가 사용자 환경에서 액티브 취약점 공격을 찾을 수 있는 탐지를 제공합니다.

더 자세한 내용을 알게 되면 이 게시물에 대한 추가 업데이트를 제공해 드리겠습니다. 이 버전은 2021년 12월 14일 화요일을 기준으로 정확합니다. Apache의 업데이트는 Log4j2의 보안 페이지를 통해 직접 조사할 수 있습니다.

CVE-2021-44228 요약(Log4Shell)

Log4j2는 최종 사용자 시스템과 서버 양쪽 모두에서 많은 Java 기반 애플리케이션에 통합된 오픈 소스 로깅 프레임워크입니다. 2021년 11월 말, 알리바바 클라우드 보안팀의 첸 자오준은 원격 코드 실행의 취약점을 확인하였으며, 최종적으로 CVE ID: CVE-2021-44228로 보고되었고, 2021년 12월 10일 대중에게 공개되었습니다. 이 취약점 공격은 프레임워크에 전달된 사용자 입력의 부적절한 역직렬화를 통해 이루어집니다. 원격 코드 실행을 허용하고 공격자가 대상 시스템에서 환경 변수와 같은 중요한 데이터를 유출하거나 악성 소프트웨어를 실행할 수 있습니다.

확인된 취약점은 버전 2.0-beta9에서 버전 2.14.1까지의 모든 Log4j2 버전에 영향을 미칩니다. 이 문제를 해결하기 위한 초기 방법들은 많은 릴리즈 후보들을 낳았고, 이 게시물 당시 프레임워크를 Log4j2 2.15.0-rc2로 업그레이드하라는 권고로 절정에 이르렀습니다.

사소한 복잡성과 관찰된 광범위한 취약점 공격의 특성을 고려할 때, 취약한 버전의 Log4j2를 활용하는 소프트웨어를 식별한 모든 환경에서 완화를 중요한 사항으로 간주해야 합니다.

Elastic Security에서 Log4Shell 공격 탐지

Elastic Security 사용자는 다음 이벤트 상관 관계 탐지 규칙을 사용하여 Log4j2의 액티브 취약점 공격을 식별할 수 있습니다. 호스트 기반 이벤트 데이터의 형식에 따라 데이터 필드에 맞게 이 탐지를 수정해야 할 수도 있습니다.

엔드포인트 데이터 사용 시 탐지 규칙

sequence by host.id with maxspan=1m
 [network where event.action == "connection_attempted" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pid자세히 보기

Auditbeat 데이터 사용 시 탐지 규칙

sequence by agent.id with maxspan=1m
 [network where event.action == "connected-to" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pid자세히 보기

Endgame 스트리밍 이벤트 사용 시 탐지 규칙

sequence by agent.id with maxspan=1m
 [network where event.category == "network" and 
  process.name : "java" and
  /* 
     outbound connection attempt to 
     LDAP, RMI or DNS standard ports 
     by JAVA process 
   */ 
  destination.port in (1389, 389, 1099, 53, 5353)] by process.pid
 [process where event.type == "start" and 

  /* Suspicious JAVA child process */
  process.parent.name : "java" and
   process.name : ("sh", 
                   "bash", 
                   "dash", 
                   "ksh", 
                   "tcsh", 
                   "zsh", 
                   "curl",
                   "perl*",
                   "python*",
                   "ruby*",
                   "php*", 
                   "wget")] by process.parent.pid자세히 보기

이 탐지 규칙은 LDAP, RMI 및 DNS용 표준 포트(최근 발견된 JAVA/JNDI 주입 공격을 통해 종종 남용됨)에 대한 아웃바운드 연결 시도 시퀀스와 이에 이어 진행되는 동일한 Java 프로세스 인스턴스의 하위 프로세스를 찾습니다.

이제 이 규칙이 log42j 취약점 공격을 탐지하는 방법을 시연해 보겠습니다.

위의 스크린샷에서는 공격자가 base-64로 인코딩된 페이로드로 취약점을 공격하는 모습을 보여 줍니다.

위의 스크린샷에서는 공격자가 Christophe Tafani-Dereeper에서 만든 취약한 예제 애플리케이션을 대상으로 base-64로 인코딩된 페이로드로 취약점을 공격하는 모습을 보여 줍니다.

이 스크린샷에서는 Elastic Security 내에서 CVE-2021-44228의 액티브 취약점 공격 탐지를 보여 주며 취약점 공격의 경보 및 타임라인 보기를 자세히 설명합니다.

이 스크린샷에서는 Elastic Security 내에서 CVE-2021-44228의 액티브 취약점 공격 탐지를 보여 주며 취약점 공격의 경보 및 타임라인 보기를 자세히 설명합니다.

위의 스크린샷에서는 탐지 경보 조사에서 Java가 셸 스크립트를 실행하여 bash 스크립트를 다운로드하고 실행했음을 보여줍니다.
  • We're hiring

    Work for a global, distributed team where finding someone like you is just a Zoom meeting away. Flexible work with impact? Development opportunities from the start?