изменение отпечатка пальца пассивной ОС на MacOS - PullRequest
0 голосов
/ 16 октября 2018

Сервер Ubuntu 16.04, на сервере поднят прокси (3proxy).При подключении через прокси к MacBook ОС Fingerprint определяется как Linux 3.11 и никогда не [нечетко] (http://witch.valdikss.org.ru/)). На данный момент, используя несложные манипуляции с настройками ядра /etc/sysctl.conf, получаетсяперейти на Android (Linux 2.2.x-3.x [generic] [fuzzy]) и Windows NT.

Необходимо изменить отпечаток ОС, чтобы http://witch.valdikss.org.ru/ определял соединение как MacOS X [универсальный] [нечеткий]

1 Ответ

0 голосов
/ 17 октября 2018

Согласно p0f README «одним из наиболее ценных сигналов дактилоскопии TCP» является макет параметров TCP.Применительно к записям MacOS и Linux это означает, что мы должны изменить макет с:

mss,sok,ts,nop,ws

на

mss,nop,ws,nop,nop,ts,sok,eol+1

Это не может быть сделано sysctl, поскольку ядро ​​Linux жестко закодировало этот порядок в tcp_connectsyscall: https://github.com/torvalds/linux/blob/bab5c80b211035739997ebd361a679fa85b39465/net/ipv4/tcp_output.c#L458

Таким образом, вы должны написать модуль ядра netfilter для изменения параметров TCP позже, как это делает модуль TCPMSS: https://github.com/torvalds/linux/blob/master/net/netfilter/xt_TCPMSS.c.

Либо исправление tcp_connect, либо запись пользовательского модуля netfilter требует сильного ядранавыки программирования.

Другой вариант - каким-то образом перехватить пакеты TCP SYN/SYN+ACK программой пользовательского пространства (может помочь nfqueue или tproxy с необработанными сокетами), исказить их и записать обратно в ядро.Это может значительно снизить производительность, но проще в реализации.

UPD: я нашел несколько рабочих и грязных примеров этой техники, основанной на nfqueue / python: https://forums.hak5.org/topic/33532-p0f-mangler/

...