Як виявити криптодобування?

Я б хотів зробити плагін Nagios, який може виявляти крипто шахтарів.

Проблема полягає в тому, що шахтар є єдиною потоковою і працює на багатоядерному хості, то завантаження avg буде нижче 1, що не є проблемою.

Також я хотів би, щоб плагін працював з хостами з різними номерами або процесорами.

Питання

Якщо хост працює з шахтарем (одинарний або багатопотоковий), я завжди виявляю його, якщо скажу: crypto miner виявив, що 3 завантаження avg від uptime майже однакові?

Таким чином, мені не доведеться турбуватися про кількість чи процесорі. Правильно?

1
Середнє навантаження навряд чи коли-небудь піде нижче нуля. Я б очікував, що будь-яке програмне забезпечення для видобутку максимально вийде з процесора. Я б просто спостерігав за незвичним навантаженням - встановив поріг на 20% вище, ніж "нормальне" використання і налаштував з часом.
додано Автор Nick T, джерело
З цією фіксованою, я б зрозумів, що ваш 95-й процентиль для ЦП, і встановити будильник, якщо це перевищено послідовно, скажімо, на годину, або 24 години, або щось в цьому напрямку. Знову ж таки, я сумніваюся, що є багато однопоточних шахтарів, які не максимум з кожного процесора, вони можуть отримати свої руки ...
додано Автор Nick T, джерело
@ceejayoz Ups. Це повинно було бути "нижче 1". Тепер виправлено. Дякую.
додано Автор Incidently, джерело
Для того, щоб реально використовувати шахтар на своєму хості, зловмисник повинен виконати будь-які успішні хеші. Заблокуйте брандмауери за допомогою iptables або nftables , і ви повинні бути добре.
додано Автор Registered User, джерело
В основному, замість того, щоб зосередитися на ловінні програми перевіркою хешей (які ви будете боротися робити точно і є способи, як і раніше запускати крипто шахтаря непоміченим, якщо все, що ви перевіряєте, є навантаженням ... яке ви вже повинні мати перевірку nagios для завантаження все одно).
додано Автор Registered User, джерело
"Шахтарі" - це просто клієнти, які підключаються до крипто-мереж ... Чому б вам не вимкнути ці мережі?
додано Автор Registered User, джерело
можливо, вам потрібно перевірити, чи були ваші сервери зламані.
додано Автор c4f4t0r, джерело

5 Відповіді

Якщо ваш cryptominer може бути виявлений з 100% використання на одному ядрі ви можете використовувати

mpstat -P ALL

І перевірте, чи на стовпці% user

mpstat -P ALL | awk ' { print $3 " " $4 } ' | grep -E "^[0-9]"

існує єдине ядро, яке знаходиться на 100% постійно, я думаю, що це можна зробити за допомогою однієї лінії awk

1
додано
Правильно. Але обмеження процесора закінчується низькою прибутковістю шкідливих програм.
додано Автор WilliamKF, джерело
Так, я перевіряю першу цифру - номер основного процесора. Ви можете витягти найбільш зайнятий процесор за допомогою mpstat -P ALL | awk '/^.{11} + [0-9] +/{print $ 4}' | sort -nr | голова -n1
додано Автор WilliamKF, джерело
Ви перевіряєте першу цифру, щоб побачити, чи знаходиться вона між 0 і 9?
додано Автор Cristian Matthias Ambæk, джерело
Багатопоточний шахтар, який використовує всі доступні ядра процесора, скажемо, що той 12, але я встановив їх як хороші 10, і cpulimit в 0-5% не буде виявлений такими засобами.
додано Автор Cristian Matthias Ambæk, джерело
Ви можете поєднати 100.000 машин із шкідливими програмами, щоб вирішити той самий блок X, або ви можете поєднати ваші 100,000 машин зі шкідливими програмами разом і поєднати їх у крипто-групу і разом вирішити X, ніж розділити X між членами групи Ви вже "володієте" 100.000 машинами.
додано Автор Cristian Matthias Ambæk, джерело

I have just created "Nagios Crypto Miner Detector" which is such a Nagios plugin. Have a look at https://github.com/d2xdt2/ncmd

Вона працює шляхом порівняння 3 середніх навантажень, і коли знайдено постійне навантаження, він попереджає. Неважливо, чи є крипто шахтаря єдиним або багатопоточним.

Адміністратор має лише вказати толерантність, коли три середні величини навантаження достатньо близькі, щоб вважатися однаковими. 10% швів добре для хостів, які більшість часу не працюють.

1
додано
Це не є прекрасним способом перевірити крипто шахтарів ... Ви обов'язково отримаєте багато помилкових сповіщень і, можливо, навіть помилкових негативів, якщо вони є nice d або якщо програма виконує інші дії, щоб уникнути середні великі навантаження. Загальні перевірки навантаження - це нормально, але вони є перевірками навантаження ... не перевірками криптодобувного видобутку.
додано Автор Registered User, джерело

Це зводиться до усвідомлення вашої інфраструктури, чого 95% всіх компаній не мають.

Перше, що я встановлюю систему моніторингу, яка буде контролювати використання процесора і підрахунок процесів, створити базову лінію для того, що є нормальним, що таке щорічні піки і так далі.

Моніторинг активних процесів. Разом з документацією та базовою лінією я вирішу, що є нормальним, а що ні. Наприклад, якщо сервер є сервером Tomcat, я б очікував побачити процеси, які обробляють сам сервіс Tomcat, Java, HTTP-запити, резервне копіювання тощо. Але якщо раптовий процес несподівано з'явився і раніше або активний процес раптово переходить на 16, 32 або щось в цьому відношенні, поза піком і залишається їх, я можу визначити, що це не нормальний процес або процеси робота сервера і я можу дослідити.

Наявність системи виявлення вторгнень на місці також є критичною, для того щоб процес був ініційований, він повинен запитувати процесорний час так чи інакше. Система IDS може відстежувати це, реєструвати її і знову, якщо я бачу щось поза нормою, я можу дослідити.

Виходячи з крипто-сервісу, він може не піднімати процесор дуже високо на сервері, тому що ви можете відкидати процеси або поширювати його на 32 ядрах або на що здатний ваш сервер. Так що я б стежив за кількома речами і від цього визначив, що відбувається.

У зв'язку з цим я б сказав, що це не є прямим способом визначити це, якщо тільки ви не орієнтуєтеся на конкретного крипто шахтаря.

1
додано
Боже, що читаєш, як я вбиваю тебе: Я ні. Я лише пропоную, щоб тут була відповідь на більш вузьку відповідь.
додано Автор dsegleau, джерело
Ймовірно, тому, що ви робите твердження, що в контексті цього питання є менш корисними. Операційна система запитала, як визначити криптодобування, і ви перейшли до: "Ви повинні поглянути на всю вашу інфраструктуру за рік". OP хоче знати, які критерії можуть бути використані для виявлення цього, але ви даєте загальні поради про те, як слідкувати за інфраструктурою. Це не в тому, що ви даєте погану або технічно неправильну пораду, але ОП вже використовує Nagios, тому вони, ймовірно, вже роблять принаймні більшу частину цього, тоді як відповідь на це питання в основному не відповідає.
додано Автор dsegleau, джерело
Якщо ви голосуєте, ніж маєте сміливість сказати чому.
додано Автор Cristian Matthias Ambæk, джерело
@Spooler ви не можете виявити криптодобування просто "добре, я бачу свій процесор на 100%", якщо він не був написаний любителем. Чому б ви щось створювали, переживали неприємності знайти незахищені сервери, щоб тільки вони були виявлені протягом 5 хвилин. Їх немає прямої відповіді на таке питання.
додано Автор Cristian Matthias Ambæk, джерело

Тут є кілька хороших відповідей, які можуть працювати в деяких випадках, але всі вони припускають те ж саме: що ви хотіли б виявити присутність шахтаря після його запуску.

Як правило, це найкраще виконується за допомогою евристичного сканера та бібліотеки хешей для виявлення вже відомих додатків. Я не знаю про існування такого проекту, але він може бути інтегрованою функцією в будь-якому сканері безпеки/шкідливих програм. Однак, якщо будь-яка зловмисна програма вже запущена, то ви дуже запізнюєтеся в гру.

Все це в стороні, більш розумний (і простіший) підхід тут полягає в тому, щоб утримувати шахтаря від попадання на вашу машину взагалі. Залежно від того, який шлях ви очікуєте від цих шахтарів, і які саме ці системи роблять, слід заблокувати доступ до своїх систем, щоб запобігти цьому. Взагалі не повинно бути дозволено будь-яким чином, щоб користувач міг встановлювати та згодом виконувати функціональну програму будь-якого виду, якщо це не те, що вони повинні робити з даним ресурсом.

Хоча вище описана методологія, вона не описує, як саме пом'якшити подібні речі. Є відповіді на це, але вони будуть повністю залежати від вашої реалізації поза межами найбільш загальних рекомендацій.

Наприклад, демон audit або rkhunter може бути хорошим способом визначити, чи працює що-небудь "чуже", і хто/що його помістив. selinux - це надійний спосіб збереження несанкціонованих файлів у контексті, який вони не повинні виконувати. Хороша система відображення/розгортання може допомогти дозволити витонченому "відбиванню з орбіти" і встановити гарантії для послідовно "чистої" системи. Хороші практики безпеки та розгорнуті моделі розгортання роблять більшість побоювань щодо виявлення загроз нерелевантними.

0
додано

Більшість атак шахтарів, які я бачив, використовують вразливість веб-додатків, наприклад Drupal у вразливості Drupalgeddon, а потім додають запис до crontab для завантаження шахтаря з певними інтервалами.

Тому дивно, що хорошим варіантом може бути моніторинг вашого файлу crontab. Це надає додаткову користь також виявленню інших подібних атак.

Можна використовувати плагін моніторингу файлів https://www.nagios.com/solutions/file- наприклад, для контролю розміру файлу /etc/crontab або будь-якого файлу crontab, до якого має доступ ваш веб-користувач (тобто Drupal або www-data).

Sidenote:

Крім того, ви можете встановити додаток nagiosgraph

0
додано