Статья опубликована в рамках: CXXXIII Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 20 января 2022 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
ИЗУЧЕНИЕ РЕШЕНИЙ ДЛЯ ОРГАНИЗАЦИИ ICMP ТУННЕЛЯ
EXPLORING SOLUTIONS FOR ICMP TUNNEL ORGANIZATION
Michael Magero
student, Department of Computer Science, Computer Engineering and Applied Mathematics, Transbaikal State University,
Russia, Chita
АННОТАЦИЯ
В данной работе изучаются решения для организации скрытого канала передачи данных по протоколу ICMP посредством эксперимента.
ABSTRACT
In this paper, we study solutions for organizing a hidden data transmission channel over the ICMP protocol using an experiment.
Ключевые слова: ICMP; протокол; скрытый канал; Python; трафик.
Keywords: ICMP; protocol; hidden channel; Python; traffic.
ICMP Reverse Shell (icmpdoor). Обратная оболочка – это удаленная интерактивная оболочка для выполнения команд, инициированных злоумышленником для получения контроля над скомпрометированной системой. Обратная оболочка также может быть использована инсайдерской угрозой для извлечения данных по этому скрытому каналу. Корпоративные пограничные и основные брандмауэры обычно настраиваются для фильтрации, запрета, блокирования портов TCP и UDP или для каждого конкретного приложения (брандмауэр уровня 7). На рисунке 1 показано, как правильно настроенный брандмауэр должен блокировать традиционную обратную оболочку TCP или UDP.
Рисунок 1. Правильно настроенный брандмауэр
ICMP расшифровывается как протокол сообщений управления Интернетом. Этот протокол часто упускается из виду или недооценивается при планировании стратегии брандмауэра. Фильтрация брандмауэра ICMP настраивается редко, что позволяет злоумышленникам обходить брандмауэры. Злоупотребление ICMP в качестве бэкдора было сделано по крайней мере одной группой APT (Advanced Persistent Threat) в прошлом. Полная блокировка протокола ICMP также будет означать, что хосты больше не смогут пинговать друг друга.
Необязательное поле данных ICMP обычно используется для обмена сообщениями об ошибках. Однако вместо сообщения об ошибке будет использоваться это поле данных для нашей полезной нагрузки обратной оболочки (Raw), размер которой может составлять не более 576 байт. Программное обеспечение будет фрагментировать полезную нагрузку, если общий её размер превысит этот максимум в 576 байт [1].
Мы также изменяем и злоупотребляем полем идентификатора ICMP до статического значения 13170, чтобы отфильтровывать легальные пакеты ICMP и соответствовать нашей обратной оболочке ICMP. В общей сложности мы фильтруем, либо обрабатываем, следующие поля заголовка [3]:
- pkt[IP].src (IP адрес машины A или B)
- ip[ttl] (Time To Live == 64)
- pkt[ICMP].type (Echo Request [8] или Echo Reply [0])
- pkt[ICMP].id (Статический идентификатор (ID) со значением 13170 == 0x3372 в шестнадцатеричном формате)
- pkt[Raw].load (Полезная нагрузка ≠ пусто)
На рисунке 2 показаны все урони инкапсуляции пакетов и их значения, когда мы отправляем идентификатор команды Linux с ответом uid=0(root), gid=0(root), groups=0(root). Icmpdoor инкапсулируется в следующих сетевых пакетах MAC[IP[ICMP(payload)]]].
Рисунок 2. Уровни инкапсуляции
Модуль языка программирования Python 3 Scapy помогает управлять сетевыми полями. На рисунке 3 показан процесс подключения, выполняемый при настройке Command & Control.
Рисунок 3. Процесс подключения
Для организации ICMP туннеля необходимо, чтобы на машине A был запущен icmp-cnc.exe (icmp-cnc.py) и на машине B был запущен icmpdoor.exe (icmpdoor.py), далее следует:
- Злоумышленник отправляет команду на хост в качестве полезной нагрузки по эхо-запросу ICMP (код 8) с идентификатором ICMP 13170;
- Жертва выполняет команду и отправляет обратно на машину злоумышленника через ICMP эхо-ответ (код 0) с тем же идентификатором ICMP 13170 [2].
Пример работы данного программного обеспечения представлен на рисунках 4 и 5.
Рисунок 4. Запуск icmp-cnc.exe
Рисунок 5. Запуск icmpdoor.exe и выполнение команды calc
- использует тот же принцип, что и icmpdoor. Однако для установки соединения между двумя узлами есть некоторые отличительные требования:
- Операционная система злоумышленника должна поддерживать стандарт POSIX. Одна из таковых систем – Kali Linux. Соответственно, необходимо иметь root-права в системе для успешной реализации задачи построения ICMP туннеля.
- Операционная система жертвы должна быть только системой семейства Windows (по утверждению разработчика, всё работает начиная с ОС Windows 2000). Однако, в отличии от ОС злоумышленника, необходимости иметь жертве root-права нет, что является хорошим преимуществом, в отличии от программного обеспечения icmpdoor.
Для корректного использования данного программного обеспечения необходимо, чтобы у злоумышленника было установлено:
- Операционная система Kali Linux с root-правами;
- Python 2;
- Дополнительная библиотека Python 2 Impacket;
Также обязательно включить возможность игнорирования (пропуска) всего ICMP трафика. В случае, если пропустить этот этап, машина злоумышленника не сможет получать эхо-ответы от машины жертвы.
Пример рассмотрения пакета по скрытому каналу передачи данных приведён на рисунке 6.
Рисунок 6. Пример рассмотрения пакета
На рисунке 7 показан результат выполнения команды для организации скрытого подключения и доступа к командной строке машины жертвы.
Рисунок 7. Результат выполнения команды
Для успешной реализации скрытого канала на машине жертвы необходимо также запустить сервис, как показано на рисунке 8.
Рисунок 8. Запуск сервиса прослушивания ICMP трафика
Далее, когда уже имеется скрытое подключение, можно выполнять команды на машине жертвы. Однако, командная строка, которая открыта таким способом у злоумышленника, не имеет прав администратора и «убить» систему не представляется возможным, но можно выполнять различные команды, в которых нет необходимости иметь права администратора, например, как показано на рисунке 9, можно запустить калькулятор, выполнив команду calc.
Рисунок 9. Пример выполнения команды
В конечном итоге можно отметить, что программное обеспечение для организации скрытого канала передачи данных не может быть использовано в масштабах атаки на какое-либо предприятие. Причина тому следует, что оба узла, между которыми устанавливается скрытая связь, должны иметь права администратора для запуска вышеуказанных программ, что само по себе невозможно на предприятии в доменной сети. Дополнительно хочется отметить, что на предприятии однозначно имеется антивирус с актуальной и действующей лицензией, который, в свою очередь, может анализировать и блокировать подозрительный ICMP трафик.
Список литературы:
- ICMP Tunneling: Defense Against the Vulnerability [Электронный ресурс]. – Режим доступа: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.61.5798&rep=rep1&type=pdf
- Icmpdoor – ICMP reverse shell in Python 3 [Электронный ресурс]. – Режим доступа: https://cryptsus.com/blog/icmp-reverse-shell.html
- An ICMP Reference [Электронный ресурс]. – Режим доступа: https://danielmiessler.com/study/icmp/
дипломов
Оставить комментарий