보이지 않는 채굴자: 고스트엔진의 암호화폐 채굴 작업 공개

Elastic Security Labs는 REF4578이라는 침입 세트를 식별했습니다. 이 세트는 여러 악성 모듈을 포함하고 있으며 취약한 드라이버를 이용해 암호화폐 채굴을 위해 알려진 보안 솔루션(EDR)을 비활성화합니다.

25분 읽기공격 패턴
보이지 않는 채굴자: GHOSTENGINE의 암호화폐 채굴 작업 공개

서문

Elastic Security Labs는 여러 개의 악성 모듈을 통합하고 취약한 드라이버를 활용하여 알려진 보안 솔루션(EDR)을 비활성화하여 암호화폐 채굴을 위한 침입 세트를 식별했습니다. 또한 팀은 지속성을 확립하고, 이전에 문서화되지 않은 백도어를 설치하고, 암호화폐 채굴기를 실행하는 기능을 발견했습니다. 이 침입 세트를 REF4578, 주요 페이로드를 GHOSTENGINE이라고 합니다(Antiy 팀의 선행 연구에 따르면 이 침입 세트의 일부가 HIDDENSHOVEL로 명명되었습니다).

핵심 사항

  • 멀웨어 제작자는 많은 우발적 메커니즘과 복제 메커니즘을 통합했습니다.
  • GHOSTENGINE은 취약한 드라이버를 활용하여 배포된 잘 알려진 코인 채굴기를 방해할 가능성이 있는 알려진 EDR 에이전트를 종료하고 삭제합니다.
  • 이 캠페인은 XMRIG 채굴기의 설치와 지속성을 모두 보장하기 위해 매우 복잡한 과정을 거쳤습니다.

코드 분석

On May 6, 2024, at 14:08:33 UTC, the execution of a PE file named Tiworker.exe (masquerading as the legitimate Windows TiWorker.exe file) signified the beginning of the REF4578 intrusion. The following alerts were captured in telemetry, indicating a known vulnerable driver was deployed.

실행 시 이 파일은 침입의 전체 실행 흐름을 조율하는 PowerShell 스크립트를 다운로드하고 실행합니다. 분석 결과, 이 바이너리는 아래 스크린샷에 표시된 것처럼 공격자 C2로부터 추가 도구, 모듈 및 구성을 다운로드하는 데 사용되는 난독화된 스크립트( get.png, )를 검색하기 위해 하드코딩된 PowerShell 명령줄을 실행하는 것으로 나타났습니다.

GHOSTENGINE

GHOSTENGINE은 머신에서 모듈을 검색하고 실행하는 역할을 담당합니다. 주로 HTTP를 사용하여 구성된 도메인에서 파일을 다운로드하며, 도메인을 사용할 수 없는 경우를 대비하여 백업 IP를 사용합니다. 또한 자격 증명이 내장된 보조 프로토콜로 FTP를 사용합니다. 다음은 실행 흐름을 요약한 것입니다:

이 스크립트는 clearn.png, 같은 계열이지만 다른 캠페인에 속하는 이전 감염의 잔여물을 시스템에서 제거하도록 설계된 구성 요소를 다운로드하여 실행합니다; C:\Program Files\Common Files\System\adoC:\PROGRA~1\COMMON~1\System\ado\ 에서 악성 파일을 제거하고 이름별로 다음과 같은 예약된 작업을 제거합니다:

  • Microsoft Assist Job
  • System Help Center Job
  • SystemFlushDns
  • SystemFlashDnsSrv

이러한 예약된 작업 아티팩트의 증거는 이전 감염의 지표가 될 수 있습니다.

실행하는 동안 Windows Defender를 비활성화하고 다음 Windows 이벤트 로그 채널을 정리하려고 시도합니다:

  • Application
  • Security
  • Setup
  • System
  • Forwarded Events
  • Microsoft-Windows-Diagnostics-Performance
  • Microsoft-Windows-AppModel-Runtime/Operational
  • Microsoft-Windows-Winlogon/Operational

get.png 는 Windows Defender를 비활성화하고 원격 서비스를 사용하도록 설정하며 다음 내용을 지웁니다:

  • C:\Windows\Temp\
  • C:\Windows\Logs\
  • C:\$Recycle.Bin\
  • C:\windows\ZAM.krnl.trace

get.png 또한 C:\ 볼륨에 파일을 다운로드할 수 있는 최소 10 MB의 여유 공간이 있는지 확인하여 C:\Windows\Fonts 에 파일을 저장합니다. 그렇지 않은 경우 시스템에서 대용량 파일을 삭제한 후 충분한 공간이 있는 다른 적절한 볼륨을 찾아 $RECYCLE.BIN\Fonts 아래에 폴더를 생성합니다.

C2 도메인 이름에 대한 현재 DNS 확인을 얻기 위해 GHOSTENGINE은 하드코딩된 DNS 서버 목록인 1.1.1.18.8.8.8 을 사용합니다.

다음으로 지속성을 설정하기 위해 get.png 은 다음 예약된 작업을 SYSTEM 으로 만듭니다:

  • msdtc 을 사용하여 악성 서비스 DLL C:\Windows\System32\oci.dll 을 20 분마다 실행하는 원드라이브클라우드싱크 (나중에 설명)
  • get.png 스크립트를 다운로드하고 60 분마다 실행하는 C:\Users\Public\run.bat, 을 실행하도록 DefaultBrowserUpdate를 설정합니다.
  • 40 분마다 C:\Windows\Fonts\smartsscreen.exe 을 실행하는 OneDriveCloudBackup

get.png 은 현재 프로세스를 제외한 모든 curl.exe 프로세스 및 명령줄에 *get.png* 이 포함된 모든 PowerShell 프로세스를 종료합니다. 이는 동시에 실행 중인 멀웨어 인스턴스를 종료하는 방법입니다.

그런 다음 이 스크립트는 검색한 PE 파일의 해시가 포함된 JSON 파일인 config.txt 을 다운로드합니다. 이 파일은 이전에 감염되었을 때 다운로드한 파일의 해시를 확인하여 업데이트된 바이너리를 다운로드할지 여부를 확인합니다.

마지막으로 get.png 에서 모든 모듈과 다양한 PE 파일을 다운로드합니다. 아래는 다운로드한 각 파일에 대한 설명이 포함된 표입니다:

경로유형설명
C:\Windows\System32\drivers\aswArPots.sys커널 드라이버Avast의 취약한 드라이버
C:\Windows\System32\drivers\IObitUnlockers.sys커널 드라이버IObit의 취약한 드라이버
C:\Windows\Fonts\curl.exePE 실행 파일cURL을 통해 파일을 다운로드하는 데 사용
C:\Windows\Fonts\smartsscreen.exePE 실행 파일핵심 페이로드(GHOSTENGINE)의 주요 목적은 보안 계측을 비활성화하고 초기 감염을 완료한 후 채굴기를 실행하는 것입니다.
C:\Windows\System32\oci.dll서비스 DLLPersistence/updates module
backup.png파워쉘 스크립트Backdoor module
kill.png파워쉘 스크립트보안 센서를 죽이는 PE 파일을 주입하고 실행하는 PowerShell 스크립트입니다.

GHOSTENGINE 모듈

GHOSTENGINE은 보안 도구를 변조하고, 백도어를 만들고, 소프트웨어 업데이트를 확인할 수 있는 여러 모듈을 배포합니다.

EDR 에이전트 컨트롤러 및 마이너 모듈: smartsscreen.exe

이 모듈은 주로 크립토 마이너를 다운로드하고 설치하기 전에 모든 활성 EDR 에이전트 프로세스를 종료합니다.

멀웨어는 실행 중인 모든 프로세스를 검사하고 하드코딩된 알려진 EDR 에이전트 목록과 비교합니다. 일치하는 항목이 있으면 먼저 Avast 안티 루트킷 드라이버 파일( aswArPots.sys )을 활용하여 보안 에이전트를 종료하고, IOCTL( 0x7299C004 )을 사용하여 PID로 프로세스를 종료합니다.

smartscreen.exe 를 사용하여 다른 취약한 드라이버( iobitunlockers.sys )와 함께 보안 에이전트 바이너리를 삭제한 다음, IOCTL 0x222124 을 사용하여 IObit에서 삭제합니다.

smartscreen.exe 를 클릭한 다음 C2 서버에서 taskhostw.png 으로 XMRig 클라이언트 마이닝 프로그램(WinRing0x64.png)을 다운로드합니다. 마지막으로 XMRig와 드라이버, 구성 파일 config.json 을 실행하여 채굴 프로세스를 시작합니다.

Update/Persistence module: oci.dll

PowerShell 스크립트는 msdtc 에서 로드하는 팬텀 DLL인 서비스 DLL(oci.dll)을 만듭니다. DLL의 아키텍처는 머신에 따라 다르며 32비트 또는 64비트일 수 있습니다. 주요 기능은 C2에서 get.png 스크립트를 다운로드하고 실행하여 시스템 지속성을 생성하고 C2 서버에서 업데이트를 다운로드하는 것입니다.

msdtc 서비스가 시작될 때마다 oci.dll 을 로드하여 get.png 을 실행하는 PowerShell 원라이너를 생성합니다:

EDR 에이전트 종료 모듈: kill.png

kill.png 은 현재 프로세스에 셸코드를 삽입하여 PE 파일을 해독하고 메모리에 로드하는 PowerShell 스크립트입니다.

이 모듈은 C++로 작성되었으며, 작성자는 작업에 중복성을 통합했습니다. 이러한 중복성은 smartsscreen.exe 에서 EDR 에이전트 바이너리를 종료 및 삭제하는 데 사용되는 기술을 복제하여 새로운 프로세스를 지속적으로 검색하는 데서 분명하게 드러납니다.

파워쉘 백도어 모듈: backup.png

PowerShell 스크립트는 백도어처럼 작동하여 시스템에서 원격 명령을 실행할 수 있습니다. Base64로 인코딩된 명령을 기다리는 동안 현재 시간과 컴퓨터 이름에서 파생된 고유 ID가 포함된 Base64로 인코딩된 JSON 객체를 계속 전송합니다. 그런 다음 해당 명령의 결과가 다시 전송됩니다.

이 예제에서 eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9 는 Base64로 인코딩된 JSON 객체입니다:

$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}

채굴자 구성

XMRig는 합법적인 암호화폐 채굴자이며, 여기에 구성 파일 사용법과 요소를 문서화했습니다. 이 게시물의 서두에서 언급했듯이, REF4578 침입 세트의 궁극적인 목표는 환경에 액세스하여 지속적 모네로 암호화폐 채굴기인 XMRig를 배포하는 것이었습니다.

저희는 채굴기에서 구성 파일을 추출했는데, 이 파일을 통해 모네로 결제 ID를 보고하고 작업자 및 풀 통계, 채굴된 암호화폐, 거래 ID 및 인출을 추적할 수 있었기 때문에 매우 유용했습니다.

아래는 REF4578 XMRig 구성 파일에서 발췌한 내용입니다:

{
    "autosave": false,
    "background": true,
    "colors": true,

...truncated...

    "donate-level": 0,
    "donate-over-proxy": 0,
    "pools": [
        {
            "algo": "rx/0",
            "coin": "monero",
            "url": "pool.supportxmr[.]com:443",
            "user": "468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f",
            "keepalive": true,
            "tls": true

...truncated...

    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "verbose": 0,
    "watch": true,
    "pause-on-battery": false,
    "pause-on-active": false
}

Monero 결제 ID

모네로는 익명성과 프라이버시를 보장하기 위해 난독화 및 대체 가능성에 중점을 둔 블록체인 암호화폐입니다. 결제 ID는 32 바이트(16진수 64자) 또는 8 바이트(통합 주소의 경우)로 구성되는 임의의 선택적 거래 첨부 파일입니다.

위의 구성 발췌문(468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f)에서 결제 ID를 사용하여 구성에 나열된 모네로 마이닝 풀 사이트중 하나에서 작업자 및 풀 통계를 볼 수 있습니다.

또한 모네로 블록체인 탐색기에서 트랜잭션 해시를 확인할 수 있습니다. 거래 날짜는 4개월 전으로 거슬러 올라가지만, 이는 이 특정 작업자와 계정의 잠재적인 금전적 이득을 나타내는 것일 뿐입니다.

블록체인 탐색기와 결제 ID에서 얻은 거래 해시 중 하나를 사용하면 공개 키, 출금된 금액, 출금 시기를 확인할 수 있습니다. 이러한 공개 키는 일회성 주소 또는 스텔스 주소와 함께 사용되며, 공격자가 개인 키를 사용하여 자금을 잠금 해제할 수 있다는 점에 유의하세요.

In the above example for transaction 7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442 we can see that there was a withdrawal of 0.109900000000 XMR (the abbreviation for Monero) totaling $14.86 USD. The Monerao Mining Pool site shows four transactions of approximately the same amount of XMR, totaling approximately $60.70 USD (January - March 2024).

이 연구 발표 시점을 기준으로 REF4578 결제 ID에 연결된 활성 채굴자가 여전히 존재합니다.

이 특정 결제 ID가 큰 수익을 올린 것으로 보이지는 않지만, REF4578이 이 침입 세트를 성공적으로 운영할 수 있음은 분명합니다. 이 캠페인의 다른 피해자들은 침입을 추적하는 데 사용되는 결제 ID가 다를 수 있으며, 이를 결합하면 전체 피해 규모가 더 커질 수 있습니다.

멀웨어 및 MITRE ATT&CK

Elastic은 위협이 엔터프라이즈 네트워크에 대해 사용하는 일반적인 전술, 기술 및 절차를 문서화하기 위해 MITRE ATT& CK 프레임워크를 사용합니다.

전술

전술은 기술 또는 하위 기술의 이유를 나타냅니다. 이는 적의 전술적 목표, 즉 행동을 수행하는 이유입니다.

기술

기술은 공격자가 행동을 수행하여 전술적 목표를 달성하는 방법을 나타냅니다.

고스트 엔진 완화

탐지

GHOSTENGINE 멀웨어의 첫 번째 목표는 엔드포인트 보안 솔루션을 무력화하고 프로세스 생성 및 서비스 등록을 기록하는 보안 및 시스템 로그와 같은 특정 Windows 이벤트 로그를 비활성화하는 것입니다. 따라서 이러한 초기 조치의 탐지 및 예방에 우선순위를 두는 것이 중요합니다:

  • 의심스러운 PowerShell 실행
  • 비정상적인 디렉토리에서 실행
  • 시스템 무결성에 대한 권한 높이기
  • 취약한 드라이버 배포 및 관련 커널 모드 서비스 설정.

취약한 드라이버가 로드되면 탐지 기회가 크게 줄어들고 조직은 SIEM으로 로그 전송을 중단하는 손상된 엔드포인트를 찾아야 합니다.

네트워크 트래픽이 생성되어 식별될 수 있는 경우 DNS 레코드 조회가 HTTP(80) 및 HTTPS(443)와 같이 잘 알려진 포트를 통해 알려진 마이닝 풀 도메인을 가리키고 있을 수 있습니다. 스트라텀은 또한 기본적으로 포트 4444 를 통해 채굴자들에게 널리 사용되는 또 다른 네트워크 프로토콜입니다.

이 침입 집합을 분석한 결과 다음과 같은 탐지 규칙과 행동 방지 이벤트가 발견되었습니다:

예방

악성 파일 방지 :

셸코드 인젝션 방지:

취약한 드라이버 파일 생성 방지(Windows.VulnDriver.ArPotWindows.VulnDriver.IoBitUnlocker )

YARA

Elastic Security는 이 활동을 식별하기 위해 YARA 규칙을 만들었습니다.

관찰

모든 관측값은 ECS 및 STIX 형식으로도 다운로드할 수 있습니다.

이 연구에서는 다음과 같은 관찰 가능성에 대해 논의했습니다.

Observable유형이름참조
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753SHA-256C:\Windows\Fonts\smartsscreen.exeGHOSTENGINE EDR 컨트롤러 모듈
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1SHA-256C:\Windows\System32\drivers\aswArPots.sysAvast 취약 드라이버
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8aeSHA-256C:\Windows\System32\drivers\IObitUnlockers.sys취약한 Iobit 드라이버
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150SHA-256C:\Windows\System32\oci.dll업데이트/지속성 모듈(64비트)
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7abSHA-256C:\Windows\System32\oci.dll업데이트/지속성 모듈(32비트)
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03fSHA-256C:\Windows\Fonts\taskhostw.exe마이너 클라이언트
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1caSHA-256C:\Windows\Fonts\config.json채굴기 구성 파일
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5SHA-256C:\Windows\Fonts\WinRing0x64.sys광부 드라이버
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22bSHA-256C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exe초기 스테이저
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347eSHA-256backup.pngGHOSTENGINE 백도어 모듈
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1SHA-256get.png고스트엔진 로더
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104SHA-256kill.pngGHOSTENGINE EDR 종료 모듈
download.yrnvtklot[.]com도메인C2 서버
111.90.158[.]40IPv4-addrC2 서버
ftp.yrnvtklot[.]com도메인C2 서버
93.95.225[.]137IPv4-addrC2 서버
online.yrnvtklot[.]com도메인C2 서버

참고 자료

위의 조사에서 참조한 내용은 다음과 같습니다: