شرح کلی
نوع: HackTool
درجه تخریب: بالا
میزان شیوع: کم
اسامی بدافزار
🔹 Padvish
- HackTool.Win32.APT-GANG8220
- Backdoor.Linux.Tsunami
- Trojan.Linux.Miner
🔹Kaspersky
- HEUR:Backdoor.Linux.Tsunami.bj
- HEUR:RiskTool.Linux.Miner
🔹Eset
- A Variant Of Linux/Tsunami.NAL
- A Variant Of Linux/CoinMiner.AV
🔹Microsoft
- Backdoor:Linux/Tsunami.C!MTB
- Trojan:Linux/CoinMiner.C12
HackTool چیست؟
Hacktoolها ابزارهایی هستند که جهت کمک به نفوذ طراحی شدهاند. این ابزارها میتوانند توسط نفوذگر برای دریافت برخی اطلاعات از شبکه سازمان قربانی استفاده شوند. معمولا از این ابزارها به منظور بازیابی اطلاعات اعتبارسنجی سرورهای حساس قربانی استفاده میشود. به عنوان مثال نفوذگر میتواند برای حدس زدن کلمات عبور از ابزارهای Hacktool مبتنی بر حملات Brute Force استفاده کند. در برخی موارد نیز برای بالا بردن سطح دسترسی و سوءاستفاده از آسیبپذیریهای موجود، از HackToolها استفاده میشود. به طور کلی ابزارهای هک برنامههایی هستند که میتوانند با شکستن سدهای امنیتی رایانه و شبکه، قابلیتهای مختلفی برای نفوذ به سیستمها مهیا کنند.
گروه هکری 8220 GANG
گروه هکری GANG 8220 که با نام «گروه استخراج 8220» نیز شناخته میشود و این نام برگرفته از استفاده آنها از پورت 8220 برای تبادل ارتباطات فرماندهی و کنترل یا C&C است، از سال 2017 فعال بوده و همچنان به اسکن برنامههای آسیبپذیر در محیطهای ابری و کانتینر ادامه میدهد. محققان، این گروه را با هدف قرار دادن آسیبپذیریهای Oracle WebLogic، Apache Log4j، Atlassian Confluence و پیکربندی نادرست کانتینرهای Docker برای استقرار ماینر رمز ارز در میزبانهای لینوکس و مایکروسافت ویندوز مستند کردهاند. بر اساس اسناد، این گروه از بدافزارهای Tsunami، XMRIG cryptominer، masscan و spirit و سایر ابزارها در کمپینهای خود استفاده کرده است.
در این گزارش به تحلیل اجمالی یک نمونه باتنت و ماینر این گروه هکری پرداخته شده است.
توضیحات فنی
علائم آلودگی
با توجه به دستورهای دریافتی از مهاجم، علائم آلودگی این بدافزار میتواند متغیر باشد اما با تکیه به یکی از رفتارهای شاخص این بدافزار که استخراج رمز ارز است میتوان به کندی سرورها و مشاهده ترافیک مشکوک بر روی شبکه سازمان اشاره کرد.
شرح عملکرد
🔴 باتنت Tsunami
این بدافزار یک بات مبتنی بر IRC (Internet Relay Chat) است که پس از اجرا به سرور مهاجم وصل میشود و منتظر دریافت دستورات او میماند. در نسخه مورد بررسی پردازه بدافزار یک سوکت TCP در بستر IPv4 ایجاد میکند و آن را در حالت non–blocking قرار میدهد. سپس به طور متوالی تلاش میکند به میزبان خود روی مجموعهای از پورتهای رایج متصل شود.
این تلاشها شامل پورتهای (80) خدمات وب HTTP، (443) خدمات وبامن HTTPS، (6667 و 6668) پورتهای معمول در سرویسهای IRC و شبکههای باتنت، (7000) پورت مرتبط با برخی پیادهسازیهای IRC و (8080) پورت وب/پروکسی است.
تصویر 1- ارتباط با سرور مهاجم
در ادامه پردازهی مورد نظر با ارسال دستورات NICK و USER تلاش میکند تا خود را بهعنوان یک کاربر معتبر در سرور IRC معرفی کند. سرور با پیام NOTICE AUTH پاسخ میدهد. این مرحله معمولاً به منزله آغاز فرآیند احراز هویت و خوشامدگویی است. در پروتکل IRC، سرور بهطور دورهای پیامهای PING ارسال میکند تا از فعال بودن کلاینت اطمینان یابد.
در پاسخ، کلاینت موظف است PONG بازگرداند. در غیر این صورت، اتصال قطع خواهد شد. مکانیزم تبادل پیامهای PING/PONG نشاندهندهی حفظ اتصال پایدار میان سیستم و سرور میباشد. این چرخه بهطور متناوب تکرار میشود تا ارتباط با سرور IRC پایدار باقی بماند.
recvfrom(4, “:pwn.irc 001 JSXVBS :Welcome to …”)
پیام با کد عددی 001 نشاندهنده موفقیت فرآیند ثبتنام و خوشامدگویی رسمی سرور به کلاینت است. در این نقطه، ارتباط بهطور کامل برقرار شده است و دستورات زیر بعد از ارتباط اجرا می شود.
تصویر 2- لیست دستورات اجرا شده در نمونه باتنت
- دستور MODE تغییر وضعیت کاربر را انجام میدهد.
- دستور JOIN نشان میدهد کلاینت وارد کانالی با نام #. :ssh شده است.
- دستور WHO برای دریافت اطلاعات مربوط به کاربران (در اینجا خود کلاینت) استفاده میشود.
🔴 بدافزار ماینر
مهاجم در نسخه مورد بررسی از یک نمونه سفارشیشده از XMRig استفاده میکند که آن را “PwnRig” نامیده است. PwnRig نسخهای توسعهیافته از XMRig است که قابلیتهای سفارشی جدیدی برای نحوه اجرای فایل اجرایی (binary) به آن افزوده شده است. این قابلیتها با استفاده از آرگومانهای خط فرمان موجود در آن قابل بهرهبرداری است.
این بدافزار تعدادی آرگومان خط فرمان دارد که در جدول زیر آمده است.
عملکرد |
آرگومان |
آدرس سرور استخراج | o, –url=URL- |
الگوریتم استخراج: https://xmrig.com/docs/algorithms | a, –algo=ALGO- |
مشخص کردن نوع coin به جای الگوریتم | coin=COIN– |
نام کاربری سرور استخراج | -u, –user=USERNAME |
رمز عبور سرور استخراج | -p, –pass=PASSWORD |
جفت نامکاربری: رمز عبور برای استخراج | O, –userpass=U:P- |
اتصال از طریق پراکسی SOCKS5 | -x, –proxy=HOST:PORT |
ارسال بسته نگهدارنده برای جلوگیری از قطع شدن (نیازمند پشتیبانی استخر) | k, –keepalive- |
فعالسازی پشتیبانی nicehash.com | nicehash– |
شناسه rig برای نمایش آمار سمت استخر (نیاز به پشتیبانی استخر دارد) | rig-id=ID– |
فعالسازی SSL/TLS (نیازمند پشتیبانی استخر) | tls– |
اثر انگشت گواهی TLS | tls-fingerprint=HEX– |
اولویت به IPv6 در DNS | dns-ipv6– |
مدت کش DNS داخلی (پیشفرض: ۳۰ ثانیه) | dns-ttl=N– |
استخراج انفرادی با استفاده از RPC Daemon | daemon– |
فاصله بین پرسوجو از Daemon (ms) | –daemon-poll-interval=N |
بارگیری الگوهای بلاک از URL مشخص | self-select=URL– |
ارسال نتایج به همان URL بلاک | submit-to-origin– |
تعداد تلاشها پیش از رفتن به سرور جایگزین | -r, –retries=N |
زمان توقف بین تلاشها (ثانیه) | -R, –retry-pause=N |
رشته کاربر سفارشی برای اتصال | –user-agent |
درصد کمک به توسعهدهنده (پیشفرض ۱٪) | –donate-level=N |
کنترل کمک از طریق پراکسی | –donate-over-proxy=N |
غیرفعالسازی استخراج با CPU | –no-cpu |
تعداد threadهای CPU | -t, –threads=N |
تعیین وابستگی پردازش به هستههای CPU | –cpu-affinity=N |
تنوع الگوریتم (۰ = خودکار) | -v, –av=N |
اولویت اجرای فرآیند (۰ تا ۵) | –cpu-priority=N |
تعیین حداکثر درصد استفاده از CPU | –cpu-max-threads-hint=N |
تخصیص حافظه برای استخراج MB2 | –cpu-memory-pool=N |
تمرکز روی توان هش بیشتر | –cpu-no-yield |
غیرفعالسازی پشتیبانی huge pages | –no-huge-pages |
تعیین اندازه huge pages حافظه | –hugepage-size=N |
نوع بهینهسازی ASM ،مقادیر احتمالی: auto, none, intel, ryzen, bulldozer |
–asm=ASM |
پیادهسازی argon2: x86_64 ،SSE2، SSSE3، XOP، AVX2، AVX-512F |
–argon2-impl=IMPL |
شمارش نخها برای مقداردهی اولیه دیتاست RandomX | –randomx-init=N |
غیرفعالسازی پشتیبانی NUMA برای RandomX | –randomx-no-numa |
مود RandomX: خودکار، سریع، سبک | –randomx-mode=MODE |
استفاده از صفحات بزرگ ۱ گیگابایتی برای مجموعه داده RandomX | –randomx-1gb-pages |
نوشتن مقادیر دلخواه در رجیسترهای MSR یا غیرفعال کردن حالت MSR (-1) | –randomx-wrmsr=N |
غیرفعالسازی بازگرداندن مقادیر اولیه MSR در هنگام خروج | –randomx-no-rdmsr |
فعالسازی QoS کش | –randomx-cache-qos |
از هشهای با اندازه بزرگ stage2 صرف نظر کنید، پیشفرض: ۵۵۰، حداقل: ۴۰۰، حداکثر: ۱۲۰۰ |
–astrobwt-max-size=N |
فعال کردن بهینهسازیهای AVX2 برای الگوریتم AstroBWT | –astrobwt-avx2 |
تعیین یک شناسه سفارشی برای worker در API | –api-worker-id=ID |
شناسه نمونه سفارشی برای API | –api-id=ID |
اتصال میزبان برای HTTP API (پیشفرض: ۱۲۷.۰.۰.۱) | –http-host=HOST |
پورت مشخصی را برای در دسترس قرار دادن API از طریق HTTP اختصاص بده | –http-port=N |
توکن دسترسی برای HTTP API | –http-access-token=T |
فعالسازی دسترسی کامل از راه دور به HTTP API (فقط در صورت تنظیم توکن دسترسی) | –http-no-restricted |
تولید گواهی TLS برای نام میزبان خاص | –tls-gen=HOSTNAME |
بارگذاری زنجیره گواهی TLS از یک فایل با فرمت PEM | –tls-cert=FILE |
بارگذاری کلید خصوصی گواهی TLS از یک فایل با فرمت PEM | –tls-cert-key=FILE |
بارگذاری پارامترهای DH برای رمزگذاری های DHE از یک فایل با فرمت PEM | –tls-dhparam=FILE |
فعالسازی پروتکلهای TLS مشخص شده به عنوان مثال: \”TLSv1 TLSv1.1 TLSv1.2 TLSv1.3\” | –tls-protocols=N |
تنظیم فهرست رمزگذاری موجود (TLSv1.2 و پایینتر) | –tls-ciphers=S |
تنظیم فهرست مجموعهرمزگذاریهای TLSv1.3 موجود | –tls-ciphersuites=S |
استفاده از گزارش سیستم برای پیامهای خروجی | -S, –syslog |
ثبت تمام خروجیها در یک فایل مشخص | -l, –log-file=FILE |
چاپ گزارش هشریت درهر N ثانیه | –print-time=N |
غیرفعالسازی خروجی رنگی | –no-color |
نمایش جزئیات بیشتر | –verbose |
بارگذاری یک فایل پیکربندی با فرمت JSON | -c, –config=FILE |
اجرای ماینر در پسزمینه | -B, –background |
نمایش نسخه و خروج | -V, –version |
نمایش راهنما و خروج | -h, –help |
آزمایش پیکربندی و خروج | –dry-run |
اکسپورت توپولوژی hwloc به یک فایل XML و خروج | –export-topology |
توقف استخراج هنگام استفاده از باتری | –pause-on-battery |
وقتی کاربر فعال است،توقف استخراج (بعد از N ثانیه از آخرین فعالیت، ادامه بده) | –pause-on-active=N |
اجرای تست استرس مداوم برای بررسی پایداری سیستم | –stress |
اجرای benchmark ، N میتواند بین ۱ تا ۱۰ میلیون باشد | –bench=N |
انجام یک benchmark آنلاین و ارسال نتیجه برای اشتراکگذاری | –submit |
تأیید نتیجه benchmark با ID | –verify=ID |
استفاده از seed دلخواه RandomX سفارشی برای benchmark | –seed=SEED |
مقایسه نتیجه benchmark با هش مشخص شده | –hash=HASH |
غیرفعالسازی خواندن DMI/SMBIOS | –no-dmi |
روش مقابله و پاکسازی سیستم
آنتیویروس پادویش این بدافزارها را شناسایی و از سیستم حذف میکند. جهت پیشگیری از ورود این نوع از بدافزارها به سیستم پیشنهاد میشود:
- آنتیویروس، سیستمعامل و سرویسدهندههای حیاتی خود را همواره به روز کنید.
- دسترسی به پورتهای مهم را محدود کنید.
- به صورت دورهای رمز عبور حسابهای کاربری مهم خود را تغییر دهید.