Close

Аудит Linux-сервера очима хакера

Коли я вперше заходжу на невідомий мені сервер, то першим чином проводжу експрес-аудит, який включає базовий збір технічних, апаратних, файлових та інших характеристик. Сюди входять: перевірка логів, накопичувачів, енумерація користувачів, аналіз програмного і апаратного забезпечення, мережевих служб та інтерфейсів. Я підібрав список консольних команд, якими часто послуговуються хакери на етапі дослідження та підготовки до експлуатації Linux. Також ці команди допоможуть при адмініструванні і обслуговуванні систем.

Зміст статті

Аналіз операційної системи

uname -a —  комплексна інформація про операційну систему.
uname -r — виводить лише версію ядра.
uname -s — виводить назву операційної системи.
uname -v — виводить версію операційної системи.
uname -o — виводить ідентифікатор операційної системи.
cat /etc/os-release —  найповніша і найточніше інформація про операційну систему.
cat /etc/*release* —  інформація про збірку ОС.

Аналіз технічних і апаратних характеристик

hostnamectl— повна інформація про сервер (комп’ютер): ім’я хосту, тип сервера, віртуалізація, операційна система, версія ядра, архітектура.
uptime— час безперервної роботи сервера.
free — статистика використання оперативної пам’яті.
vmstat— статистика продуктивності сервера.
cat /proc/cpu info | grep processor – вивід кількості ядер процесора.
cat /proc/cpuinfo— детальна інформація по процесору (CPU).
cat /proc/meminfo — детальна інформація по оперативній пам’яті.
cat /proc/loadavg— статистика середнього навантаження на систему у вигляді 5-ти значень (load average).
cat /proc/cmdline — інформація по інсталяційному пакету Linux (образу).
cat /proc/version — версія ядра ОС.
cat /proc/<PID>/maps – відображає області пам’яті для конкретного PID-процесу та їхні права доступу.
cat /proc/<PID>/smaps – показує споживання пам’яті для кожного процесу.
cat /proc/<PID>/smaps_rollup – модифікована версія smaps.
cat /proc/<PID>/stack–  трасування викликів функцій у стеку ядра вказаного процесу.
cat /proc/<PID>/stat – інформація про стан процесу.
cat /proc/<PID>/statm – інформація про використання пам’яті.
cat /proc/<PID>/status – інформація зібрана з двох попередніх команд, але у більш структурованому вигляді.
cat /proc/<PID>/syscall– інформація по системному виклику для заданого процесу.
cat /proc/<PID>/task – це каталог, який містить один підкаталог для кожного потоку в процесі.
cat /proc/<PID>/timers– список таймерів POSIX для конкретного процесу.
cat /proc/<PID>/timerslack_ns– показує «поточне» значення таймера процесу, виражене в наносекундах.
cat /proc/<PID>/schedstat – відображає 3 значення в наносекундах: час, витрачений на ЦП; Час, витрачений на очікування в черзі виконання; timeslices.
cat /proc/<PID>/wchan– cимволічне ім’я, що відповідає положенню в ядрі, де процес перебуває в режимі сну.
cat /proc/<PID>/sessionid – ідентифікатор сеансу.
cat /proc/<PID>/setgroups – показує дозвіл на системний виклик (allow або deny).
cat /proc/<PID>/net/tcp/ – аналіз TCP-з’єднання по сокету TCPv4 за конкретним процесом.
cat /proc/<PID>/net/tcp6/ – те саме, тільки по сокету TCPv6.
dmidecode— інформація про BIOS і залізо (по DMI коду).
dmidecode -s system-manufacturer — назва виробника пристрою.
dmidecode -s system-product-name— назва продукту системи.
lscpu
 — технічна інформація по процесору (виробник, тип, розрядність, архітектура та ін.).
lshw— дуже детальна інформація про залізо.
sudo lshw -c video – інформація про технічні характеристики відеоплат.
lspci | grep -E "VGA|3D" – інформація про відеокарту.
lspci -k | grep -EA3 'VGA|3D|Display' – деталізована інформація про відеокарту.
hwinfo --gfxcard – перегляд розширених характеристик по графічним картам з допомогою утиліти hwinfo.
clinfo – інформація по пристроям з використанням бібліотеки OpenCL.
clinfo | grep -i "icd loader" – вивід версії OpenCL.
nvidia-detect – перевірка графічної карти Nvidia.
lspci -s 01:00.0 -v – технічна деталізація по графічній карті, замість 01:00.0 підставити значення отримане в nvidia-detect.
nvidia-smi – перевірка роботи відеокарти Nvidia.
sysctl -a — вивід списку параметрів ядра.
cat /etc/services — перелік сервісних служб системи.
ls -ls /etc/ | grep .conf — пошук файлів конфігурації у папці etc.

Аналіз системних процесів

top— показ запущених в системі процесів в реальному часі.
ps— швидкий показ статистики по процесах в системі.
ps -ef— показ запущених в системі процесів з детальною характеристикою.
ps -auxf— показ запущених в системі процесів з детальною характеристикою (2).
jobs— вивід запущених процесів.
crontab -l — переглянути список задач серверного планувальника завдань для активного користувача.
ls -al /etc/cron* — пошук усіх файлів планувальника завдань.
ps aux | grep root — пошук процесів, закріплених за користувачем root.
ps -eaf — перевірка запущених процесів.
ps H -eo pid,pcpu | sort -nk2 | tail —  отримання pid-процесів, які найбільше споживають ресурси процесора CPU.
ps -p 1234 -o comm= —  отримання назви процесу за вказаним pid.
ps aux | fgrep 30914 —  детальна інформація за вказаним pid.

Аналіз облікових записів (користувачів)

who— назва активного користувача і мінімальна статистика по ньому (останній вхід, IP адреса).
w — статистика навантаження на систему по користувачам.
id — інформація по правам користувача.
last — інформація про останні входи в систему.
lastlog — інформація про активність усіх облікових записів в системі.
cat /etc/group— перелік груп користувачі.
cat /etc/passwd— список користувачів системи з вказаними хешами, правами та приналежністю до груп.
cat /etc/shadow— список облікових записів системи з їх паролями.
tail /var/log/secure— вся інформація про авторизації користувачів системи.
cat /etc/sudoers — вивід списку користувачів з правами sudo для виконання команд від імені адміністратора.
find / -not -type l -perm -o+w — пошук файлів з правами запису для всіх користувачів.
sudo -l — аналіз параметрів sudo для активного користувача.

Аналіз системних журналів (логів) і подій

history— історія виконаних в системі команд.
journalctl — цікавий журнал з точки зори безпеки, який проливає світло на все, що відбувається в бекенді системи, зокрема спроби авторизації, час, IP-адреси, помилки.
dmesg —  вивід повідомлень ядра операційної системи.
dmesg | tail  —  вивід останніх 10-ти повідомлень ядра операційної системи.
cat /var/log/dmesg  —  цей файл журналу містить повідомлення кільцевого буфера ядра. Тут зберігається інформація про апаратні пристрої та їх драйвери. Коли ядро виявляє фізичні апаратні пристрої, пов’язані з сервером під час процесу завантаження, воно фіксує стан пристрою, апаратні помилки та інші загальні повідомлення. Якщо певне обладнання функціонує неналежним чином або не виявляється, ви можете покластися на цей файл журналу для вирішення проблеми.
tail /var/log/messages — вивід подій системного журналу, який містить інформаційні і некритичні повідомлення. Тут ви можете відстежувати помилки завантаження, не пов’язані з ядром, помилки служби, пов’язані з програмою, і повідомлення, які реєструються під час запуску системи.
tail /var/auth/log — вивід всіх подій, пов’язаних з автентифікацією. Якщо ви шукаєте щось, що стосується механізму авторизації користувача, ви можете знайти це в цьому файлі журналу. Розслідуйте невдалі спроби входу. Досліджуйте атаки грубої сили та інші вразливості, пов’язані з механізмом авторизації користувачів.
tail /var/log/cron— вивід виконаних подій в службі планувальника crond.
cat /var/log/boot.log — вивід повідомлень, які реєструються під час процесу запуску системи. Вам слід проаналізувати цей файл журналу, щоб дослідити проблеми, пов’язані з неправильним завершенням роботи, незапланованими перезавантаженнями або помилками завантаження.
cat /var/log/kern.log — це дуже важливий файл журналу, оскільки він містить інформацію, зареєстровану ядром. Журнали ядра можуть бути корисними для усунення несправностей спеціально створеного ядра. Також може стати в нагоді при налагодженні апаратного забезпечення та проблем з підключенням.
cat /var/log/faillog — цей файл містить інформацію про невдалі спроби входу.
cat /var/log/cron — цей файл журналу записує інформацію про завдання системного планувальника завдань cron.
cat /var/log/mail.log — тут зберігаються всі журнали, пов’язані з поштовим сервером.
cat /var/log/httpd — цей каталог містить журнали, записані сервером Apache.
nano /var/log/apache2/access.log— логи доступа до сайту, оброблених веб-сервером Apache.
nano /var/log/apache2/error.log— логи помилок, оброблених веб-сервером Apache.
find / -type f -name "*.log" | wc -l — пошук усіх log-файлів в системі.
cat /var/log/mysql.log — цей файл містить усі повідомлення про налагодження, помилки та успіхи, пов’язані з MySQL.
ls -alh /var/log— вивід вмісту директорії.

Аналіз файлової системи і накопичувачів (жорстких дисків)

df -T— статистика використання дискового простору (disk free)
df -h— статистика по дискових накопичувачах і їх наповненню
du -sh dir – статистика використання дискового простору за конкретною директорією
du --max-depth=1— інформація про використання дискового простору директоріями за вказаною глибиною вкладення (disk usage)
cat /etc/fstab — показ розмонтованих дискових накопичувачів
ncdu — утиліта з псевдографічним інтерфейсом для швидкого перегляду використання дискового простору у вигляді файлового навігатора.

Аналіз мережевих портів, інтерфейсів, пристроїв, обладнання

ifconfig— вивід інформації по мережевих пристроях.
netstat— вивід TCP/IP підключень.
netstat -tunap— ще один тип виводу TCP/IP підключень.
ss— вивід мережевої статистики.
iptables -L -n -v— вивід даних фаєрвола IPtables.
arp— вивід таблиць ARP.
route— вивід IP маршрутизації.
ip -s link— вивід мережевої статистики (інформація про передані пакети, помилки).
ethtool eth0— детальна інформація по заданому мережевому пристрої.
ip addr show — перелік IP-адрес мережевих інтерфейсів.
ip ro show — вивести інформацію по роутингу мережевих інтерфейсів.
cat /etc/resolv.conf — вивести вміст файлу конфігурації налаштування IP/DNS.
cat /etc/networks — вивід мережевих інтерфейсів.
grep 80 /etc/services — вивід сервісів, які працюють на портах, де зустрічається цифри 80.
cat /etc/hosts — вивід прив’язаних до сервера хостів.
ip a s —  список активних мережевих інтерфейсів.
netstat -lap | fgrep 22022 —  список активних процесів на вказаному порту.

Аналіз програмних засобів, системних служб, репозиторіїв

rpm -qa
dpkg --list
dpkg --list | wc --lines
apt list
apt list --installed | grep -v "^Listing" | wc -l
yum list installed
yum repolist
yum repoinfo
snap list
ls -l /etc/yum.repos.d/
lsmod
ls -alh /usr/bin/
ls -alh /sbin/
systemctl

Додаткові ресурси і посилання

  1. GTFObins  — список команд, які можна використати для обходу обмежень безпеки на серверах під управлінням Unix-подібних систем.
  2. CheatSheet для ескалації привілеїв
  3. LinPEAS — Linux Privilege Escalation Awesome Script
  4. LimEnum — утиліта для енумерації компонентів Linux
  5. LES: Linux privilege escalation auditing tool
  6. linux-smart-enumeration
  7. Linux Privilege Escalation Check Script
  8. Linux Kernel CVEs

Читайте також: 

ПОДІЛИТИСЬ У СОЦМЕРЕЖАХ:

0 0 голосів
Рейтинг статті
Підписатися
Сповістити про
guest
0 Коментарі
Старіші
Новіші Найпопулярніші
Вбудовані Відгуки
Переглянути всі коментарі
0
Поставте запитання й отримайте відповідь!x
Отримати комерційну пропозицію
Оформити заявку
Замовити консультацію
Замовити дзвінок

Вкажіть, будь ласка, контактний номер телефону. Наш менеджер миттєво зв’яжеться з Вами!