RDot

RDot (https://rdot.org/forum/index.php)
-   Релизы/Releases (https://rdot.org/forum/forumdisplay.php?f=11)
-   -   tcp(port&seq) backdoor (https://rdot.org/forum/showthread.php?t=2858)

slashd 20.09.2013 02:00

tcp(port&seq) backdoor
 
Вложений: 1
Автор: slashd

Что это?
Реализации скрытого канала передачи данных на сервер с помощью стандартных
полей(в нашем случае поля SEQ и Source Port) TCP-заголовка.

Теоритическая часть.

Реализовать скрытую передачу данных с помощью TCP-заголовка можно несколькими
способами. Клиент(хакер) иницирующий соединение с сервером(жертва) может
управлять некоторыми полями TCP-заголовка:
1. Параметры TCP-заголовка.
2. Sequence number TCP-заголовка.
3. Source port.

Размер поля параметров TCP-заголовка может доходить до 65 кбайт, для
обхода фрагментации пакета - приблизительно 1500 байт. Но в
привычном соединение это поле редко используется, что может вызвать подозрение
при анализе трафика администратором сети. Более незаметный способ это
комбинировать использование полей: порт источника(2 байта) и номера
последовательности(4 байта). Пакеты несущие данные являются только те, что
приходят с установленным флагом SYN, ни какие-либо другие пакеты
восприниматься не должны.
Протокол реализованный в данном конкретном коде страдает огрмным
количством минусов при всего-лишь одном плюсе - простая реализация. Минусы:
- Не учитывается потери в канале.
- Не восстанвливается последовательность пришедших пакетов.
- Медленная работа.


Как это всё работает в предоставленных исходниках.

Номер последовательности - несет часть информации(chunk). Номер порта будет
указывать номер chunk'a. На выбор читателя остается принятие решение
использовать как есть или переписать на свое усмотрение, в том числе и
протокол :)
Как отправляется сообщение на сервер(обозначим порт источника - sport, и номер
последовательности - seq):
1. Клиент отправляет начальное сообщение серверу
sport - 49999, seq - 123456789
2. Сервер принимает данное сообщение и активизирует режим сохранение
сообщений.
2. Клиент разбивает исходное сообщение на части по 4 байти.
3. Генерирует количество портов раное количеству chunk'ов. Сортирует по возрастанию.
4. Создает пакет с установленным sport и seq.
5. Засылает на сервер.
6. Если chunk не последний, то гоу-ту 4.
7. Последний пакет с sport - 65001 и seq - 987654321.

Как принимается сообщение:
1. Сервер ловит начальный пакет.
2. Активизирует режим сохранения пакетов.
3. Ловит chunk'и и сохраняет в глобальную переменную.
4. гоу-ту 3 пока не поймает последний пакет.

Внутри клиента и сервера взаимодействие отправляющей и принимающей "функций"
реализованно с помощью потоков(pthread) и FIFO-очередей.

Конфигурируются сервер и клиент на этапе компиляции с помощью редактирования
файла config.h, описание внутри.

Ну и конечно для интересующихся вопросами логирования - в /var/log/message
сообщения НЕ пишутся, т.к. адаптер не переводится в режим "promiscuous mode".


компиляция:
Код:

gcc server.c -o srv -lpcap -lnet -lpthread -static
gcc client.c -o cnt -lpcap -lnet -lpthread -static


Neomor 20.09.2013 09:18

Код:

$ gcc server.c -o srv -lpcap -lnet -lpthread -static
server.c:6:20: fatal error: libnet.h: No such file or directory
compilation terminated

$ gcc client.c -o cnt -lpcap -lnet -lpthread -static
client.c:6:20: fatal error: libnet.h: No such file or directory
compilation terminated


slashd 20.09.2013 13:59

Цитата:

Сообщение от Neomor (Сообщение 32938)
Код:

$ gcc server.c -o srv -lpcap -lnet -lpthread -static
server.c:6:20: fatal error: libnet.h: No such file or directory
compilation terminated

$ gcc client.c -o cnt -lpcap -lnet -lpthread -static
client.c:6:20: fatal error: libnet.h: No such file or directory
compilation terminated


Заголовочного файла нету.
Код:

apt-get install libnet1-dev
yum install libnet-devel



Часовой пояс GMT +3, время: 02:13.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot