Донецкий техникум промышленной автоматики

Обхід обмеження на запуск будь-яких програм від root в Kali Linux

  1. Чому небезпечно запускати з root правами VLC, Tor Browser, Google Chrome, Chromium і т.д.?
  2. Наскільки небезпечно працювати в облікового запису користувача root?
  3. 1. Створення і робота під звичайним користувачем в Kali Linux
  4. 2. Обхід обмеження запуску для будь-яких програм в облікового запису root, запускаючи їх від звичайного...
  5. Додавання ярликів на робочий стіл GNOME 3 в Kali Linux
  6. 3. Способи видалення перевірки запуску програми від root'а
  7. висновок

Для виконання деяких програм потрібні підвищені привілеї - повноваження супер, права root. А деякі програми навпаки - не хочуть запускатися з підвищеними привілеями. Серед останніх на вскидку я можу назвати VLC, Tor Browser , Google Chrome, Chromium.

Чому небезпечно запускати з root правами VLC, Tor Browser, Google Chrome, Chromium і т.д.?

Головне пояснення - заходи безпеки. Наприклад, в теорії можна так сформувати медіа потік для VLC media player, що він буде якимось чином загрожувати вашій системі - наприклад, дозволить віддалено виконати команду.

Аналогічно з веб-браузерами - в них регулярно знаходять різні уразливості, одна з цих вразливостей може дозволити виконувати команди або робити зміни на файлову систему, що, при наявності достатніх прав у веб-браузера, може привести до компрометації (злому) системи користувача, у якого він запущений.

Безумовно, це правильні міркування, але наскільки підвищитися рівень загрози при запуску пари додаткових програм з правами суперкористувача в системі, де все інше (тобто взагалі все, в тому числі інший браузер і інший медіа програвач), працюють з правами root? На мій погляд, це більше риторичне, а не практичне питання.

Наскільки небезпечно працювати в облікового запису користувача root?

У багатьох шанованих джерелах (веб-ресурсах, книгах) можна зустріти думку, що робота під root - це так погано, що вже майже ппц. Це не просто погано - це вже як в Windows. Також є поширена думка, що Linux - це якась невразливим система і вам нічого не загрожує, якщо ви працює під звичайним користувачем (по крайней мере, там точно не потрібен антивірус).

Обидві ці позиції дивні. Для виконання команди, що робить файл виконуваним будь-яким користувачем, не потрібні права рута:

chmod + x / home / user / шлях / до / файлу

Для встановлення автозапуску через crontab -e від імені звичайного користувача не потрібні права root'а. Тому приблизно такий запис cron може додати файл в автозавантаження з правами поточного користувача:

@reboot / home / user / шлях / до / файлу

Примітка: @reboot в cron працює не завжди (враховуйте, якщо робите свої тести), але це не є проблемою. Також файл повинен бути виконуваним і якщо це скрипт, то в ньому повинен бути шебанк (наприклад, #! / bin / bash).

Також не потрібні права рута для запису в файл ~ / .bashrc (це є зразковим аналогом автозапуску, але спрацьовує тільки при відкритті консолі).

Одного перерахованого досить, щоб встановити на систему бекдор, який прийматиме команди від віддаленого атакуючого і мати доступ до всіх файлів користувача, під яким зроблений вхід, а також доступ на читання до деяких файлів загальносистемних налаштувань.

Само-собою зрозуміло, маючи права суперкористувача можна скомпрометувати систему не тільки для поточного, але і для всіх користувачів, збільшити скритність (наприклад, використовуючи низькорівневі методи підключення і тунелювання, методи руткітів для приховування і т.д.). Але якщо вже в веб-браузері є дірка, що дозволяє виконувати команди з правами звичайного користувача або мати доступ до файлової системи з правами звичайного користувача, то можлива компрометація цього звичайного (НЕ root) користувача. Навіть якщо у нього немає прав на виконання sudo.

Другою причиною, по якій рекомендують використовувати звичайну обліковий запис - неможливість нашкодити системі. Це дійсно так. Але це супердостоінство, на жаль, майже повністю нівелюється, якщо у користувача все-таки є право використовувати sudo. Можу показати на своєму власному прикладі, одного разу я переплутав команду

rm -rf ~ / bin /

з командою:

rm -rf / bin /

Оскільки я був звичайним користувачем, то система не дала мені виконати другу команду. Але в піддиректорії bin, яка розміщується в домашній папці, я запускав програми від суперкористувача. Я подумав, що якась із цих програм створила файл, на видалення якого у мене не вистачає прав. І перезапустив rm -rf / bin / додавши до неї sudo. Зрозуміло, що така неуважність коштувала мені витраченого на переустановку системи часу.

Проте, якщо ви вважаєте, що в Kali Linux робота під root'ом в додатках небезпечна, то варто задуматися про зміну учеткі root на звичайного користувача. Це автоматично вирішить проблему з запуском VLC, Tor Browser, Chromium і т.п. під обліковим записом root.

1. Створення і робота під звичайним користувачем в Kali Linux

Недолік цього методу: перед багатьма командами, які ви звикли запускати без sudo, потрібно буде додавати це саме sudo.

Створення нового користувача в Kali Linux:

useradd -m -G sudo -s / bin / bash new_user

Замініть new_user на бажане ім'я.

Встановіть для нього пароль:

passwd new_user

Також замініть new_user на вбрання раніше ім'я користувача.

Перезавантажитеся і зайдіть під тільки-що створеним користувачем.

Перевагою методу є раз і назавжди рішення проблеми з програмами, які не хочуть запускатися під рутом, а також можливість повноцінного використання Cinnamon.

2. Обхід обмеження запуску для будь-яких програм в облікового запису root, запускаючи їх від звичайного користувача

Linux дозволяє вам запускати програми від імені інших користувачів. Тобто ви як і раніше можете використовувати обліковий запис root, але робити запуск проблемних програм від імені звичайного користувача. Для цього створимо його:

useradd -m -G sudo -s / bin / bash new_user

Замініть new_user на бажане ім'я.

Далі дії дуже схожі - установка програми, пошук шляху до виконуваного файлу, створення ярлика. Зрозумівши принцип, ви зможете застосовувати цей метод для будь-якої програми, яка не працює під рутом.

Ми будемо використовувати команду:

xhost + && su -c / шлях / до / файла / запуску new_user && xhost -

У ній / шлях / до / файла / запуску міняйте на файл, який будете шукати за допомогою команди which, new_user на ім'я користувача, якого ви створили.

Як запустити Chromium в Kali Linux

Встановіть пакет:

apt-get install chromium

Знайдіть шлях файлу запуску:

which chromium / usr / bin / chromium

Сформуйте команду:

xhost + && su -c / usr / bin / chromium new_user && xhost -

Зробіть перевірку:

Створіть ярлик:

gedit Робочий \ стіл / Chromium.desktop

У відкрився текстовий файл скопіюйте-вставте наступне:

[Desktop Entry] Name = Chromium Encoding = UTF-8 Exec = sh -c "xhost + && su -c / usr / bin / chromium new_user && xhost -" Icon = / usr / share / icons / hicolor / 256x256 / apps / chromium.png StartupNotify = false Terminal = false Type = Application

Як запустити VLC в Kali Linux

Встановіть пакет:

apt-get install vlc

Знайдіть шлях файлу запуску:

which vlc / usr / bin / vlc

Сформуйте команду і зробіть перевірку:

xhost + && su -c / usr / bin / vlc new_user && xhost -

Створіть ярлик:

gedit Робочий \ стіл / VLC.desktop

У відкрився текстовий файл скопіюйте-вставте наступне:

[Desktop Entry] Name = VLC Encoding = UTF-8 Exec = sh -c "xhost + && su -c / usr / bin / vlc new_user && xhost -" Icon = / usr / share / icons / hicolor / 256x256 / apps / vlc.png StartupNotify = false Terminal = false Type = Application

Як запустити Google Chrome в Kali Linux

Викачуємо Google Chrome з офіційного сайту: https://www.google.ru/intl/ru/chrome/browser/desktop/index.html

Для 64-бітної калі завантажуєте файл «64 bit .deb (для Debian / Ubuntu)».

Перейдіть в папку зі скачаними файлом:

cd Завантаження /

Встановіть скачав файл:

dpkg -i google-chrome-stable * .deb apt-get install -f

Знайдіть шлях файлу запуску:

which google-chrome / usr / bin / google-chrome

Сформуйте команду і зробіть перевірку:

xhost + && su -c / usr / bin / google-chrome new_user && xhost -

Створіть ярлик:

gedit Робочий \ стіл / Google_Chrome.desktop

У відкрився текстовий файл скопіюйте-вставте наступне:

[Desktop Entry] Name = Google Chrome Encoding = UTF-8 Exec = sh -c "xhost + && su -c / usr / bin / google-chrome new_user && xhost -" Icon = / usr / share / icons / hicolor / 256x256 /apps/google-chrome.png StartupNotify = false Terminal = false Type = Application

Додавання ярликів на робочий стіл GNOME 3 в Kali Linux

Додавання ярликів на робочий стіл GNOME 3 в Kali Linux

За замовчуванням в Kali Linux немає інструментів для зручного створення ярликів на робочому столі. Для створення ярлика на робочому столі в GNOME 3 можна скористатися звичайним текстовим редактором. Створіть текстовий файл на робочому столі з розширенням .desktop. У цей файл скопіюйте наступний шаблон:

Name = Ім'я програми Encoding = UTF-8 Exec = sh -c "Команда запуску" Icon = Пут до файлу із зображенням StartupNotify = false Terminal = false Type = Application

У ньому потрібно замінити:

  • Ім'я програми - на ім'я, яке ви хочете, щоб відображалося для ярлика
  • Команда запуску - шлях до виконуваного файлу, можна використовувати поєднання команд для запуску (як в наших прикладах)
  • Пут до файлу із зображенням - графічний файл, який буде іконкою для ярлика.

Я шукав ці файли прямо в системі, використовуючи програму locate (За посиланням приклади використання цієї програми). Після установки нового пакета, поновіть базу даних:

updatedb

Щоб знайти потрібні зображення, я використовував такі команди як:

locate -b -r 'chromium. * png' locate -b -r 'vlc. * png' locate -b -r 'chrome. * png'

При першому запуску ярлика з'явиться таке попередження:

Натисніть «Вважати перевіреним».

3. Способи видалення перевірки запуску програми від root'а

Крім універсального способу - запуск програми від звичайного користувача, або перехід на використання облікового запису звичайного користувача, у кожної програми є свої варіанти обходу. Наприклад, загрузчиком Tor Browser є скрипт (звичайний текстовий файл), в якому проводиться перевірка, чи запущена програма з правами рута. Тому досить в цьому файлі (/ opt / Browser / start-tor-browser) рядок «id -u» замінити, наприклад, на «echo 1» і Tor Browser буде запускатися від рута.

Для Chromium і Google Chrome є ключ --no-sandbox, який дозволяє відкривати ці програми в Kali Linux без додаткових маніпуляцій:

chromium --no-sandbox google-chrome --no-sandbox

Запуск програми VLC здійснюється бінарним файлом, який можна пропатчити наступною командою:

sed -i 's / geteuid / getppid /' / usr / bin / vlc

Також VLC можна скомпілювати самому з прапором --enable-run-as-root.

висновок

Отже, в цій статті:

  • ми спробували оцінити додаткові ризики небезпеки, що виникають при запуску програм з правами суперкористувача;
  • навчилися створити звичайних користувачів в Linux;
  • дізналися, як можна запустити VLC, Google Chrome, Chromium і будь-які інші програми в Kali Linux будучи root'ом (про те, як запустити Tor Browser в Kali Linux дивіться тут );
  • (Бонус) навчилися створювати призначені для користувача ярлики на робочому столі Kali Linux.

Якщо у вас труднощі з якоюсь іншою програмою, яка не хоче запускатися в Kali Linux під рутом, то пишіть її назву тут в коментарях - буде додана інструкція для вирішення цієї проблеми.

Пов'язані статті:

Наскільки небезпечно працювати в облікового запису користувача root?
Наскільки небезпечно працювати в облікового запису користувача root?