Агентство національної безпеки та Федеральне бюро розслідувань США
Керуючий центр «Дроворуба» аргументом командного рядка отримує шлях до файлу конфігурації у форматі JSON:
{
"db_host" : " »,
"db_port" : " »,
"db_db" : " »,
"db_user" : " »,
"db_password" : " »,
"lport" : " »,
"lhost" : " »,
"ping_sec" : " »,
«priv_key_file» : « »,
"phrase" : " »
}
Як бекенд використовується СУБД MySQL. Для підключення клієнтів використовується протокол WebSocket.
Клієнт має вбудовану конфігурацію, у тому числі URL-сервера, його публічний ключ RSA, ім'я користувача та пароль. Після встановлення руткіта конфігурація зберігається у вигляді текстового файлу у форматі JSON, який ховається від системи модулем ядра «Дроворуба»:
{
«id» : «cbcf6abc-466b-11e9-853b-000c29cb9f6f»,
"key": "Y2xpZW50a2V5"
}
Тут "id" - унікальний ідентифікатор, виданий сервером, в якому останні 48 біт відповідають MAC-адресу мережного інтерфейсу сервера. Параметр "key" за замовчуванням - закодований у форматі base64 рядок "clientkey", який використовується сервером при первинному рукостисканні. Крім цього, конфігураційний файл може містити інформацію про приховані файли, модулі та мережні порти:
{
«id» : «6fa41616-aff1-11ea-acd5-000c29283bbc»,
"key": "Y2xpZW50a2V5",
"monitor" : {
"file" : [
{
"active" : "true",
«id» : «d9dc492b-5a32-8e5f-0724-845aa13fff98»,
"mask" : "testfile1"
}
],
"module" : [
{
"active" : "true",
«id» : «48a5e9d0-74c7-cc17-2966-0ea17a1d997a»,
"mask" : "testmodule1"
}
],
"net" : [
{
"active" : "true",
«id» : «4f355d5d-9753-76c7-161e-7ef051654a2b»,
port : 12345,
"protocol" : "tcp"
}
] }
}
Ще один компонент "Дроворуба" - агент, його конфігураційний файл містить інформацію для підключення до сервера:
{
"client_login" : "user123",
"client_pass" : "pass4567",
"clientid" : "e391847c-bae7-11ea-b4bc-000c29130b71",
«clientkey_base64» : «Y2xpZW50a2V5»,
"pub_key_file" :"public_key",
"server_host" : "192.168.57.100",
"server_port" :"45122",
"server_uri" :"/ws"
}
Поля "clientid" та "clientkey_base64" спочатку відсутні, вони додаються після первинної реєстрації на сервері.
Після встановлення виконуються такі операції:
- завантажується модуль ядра, що реєструє хуки для системних викликів;
- клієнт виконує реєстрацію у модулі ядра;
- модуль ядра приховує працюючий процес клієнта та його файл на диску.
Для взаємодії клієнта з модулем ядра використовується псевдобудівництво, наприклад, /dev/zero. Модуль ядра виконує розбір всіх даних, що записуються в пристрій, а для передачі у зворотному напрямку посилає клієнту сигнал SIGUSR1, після чого той зчитує дані з цього ж пристрою.
Для виявлення «Дроворуба» можна використовувати аналіз мережного трафіку засобами NIDS (шкідливу мережну активність у самій зараженій системі виявити не вдається, оскільки модуль ядра приховує мережні сокети, що використовуються, правила netfilter і пакети, які могли б перехопитися raw-сокетами). У системі, де встановлений «Дроворуб», можна виявити модуль ядра, відправивши йому команду приховування файлу:
touch testfile
echo “ASDFZXCV:hf:testfile” > /dev/zero
ls
Створений файл "testfile" стає невидимим.
Інші методи виявлення включають аналіз пам'яті та вмісту диска. Для запобігання зараженню рекомендується використовувати обов'язкову перевірку підпису ядра та модулів, доступну починаючи з версії ядра linux 3.7.
Звіт містить правила Snort для виявлення мережевої активності «Дроворуба» і правила Yara для детектування його компонентів.
Нагадаємо, що 85 ГЦСС ГРУ (в/ч 26165) асоціюється з групою
Джерело: opennet.ru