Пассивный фингерпринтинг для выявления синтетического трафика
Я достаточно долгое время вынашивал идею рассмотреть клиентов публичного web-сервиса, браузер которых посылает заголовок User-Agent как у браузера в Windows, и которые при этом имеют все признаки сетевого стэка *nix-систем. Предположительно, в этой группе должна быть большая концентрация ботов, запущенных на недорогих хостингах для накрутки трафика или сканирования сайта.
Коротко о предмете
Различные реализации стэка TCP/IP в операционных системах имеют отличающиеся значения параметров по умолчанию. Это позволяет с неплохой степенью достоверности делать вывод о том, какая операционная система сформировала пакет.
В этом контексте набор характерных для операционной системы параметров пакета называют OS fingerprint. Поскольку этот метод предполагает только наблюдение проходящего трафика без отправки каких-либо запросов, метод называют passive OS fingerprinting.
Я использую nginx в качестве фронт-сервера, и для него нет mod_p0f как для apache, поэтому маркировать запросы по признаку фингерпринта в нём — задача непростая, но решаемая. Ниже я предлагаю к рассмотрению решение, которым я достиг результата.
Решение
Как упоминалось выше, интересная для меня группа — никсовые машины, которые выдают себя за виндовые. Нужно иметь внутри nginx понимание, от какой ОС соединение. Я решил маркировать искомые соединения, направив их на отдельный порт порт nginx по критерию TTL.
iptables -A PREROUTING -t nat -p tcp -m tcp --dport 80 -m ttl --ttl-lt 64 -j REDIRECT --to-ports 8123
В nginx тогда всё становится достаточно просто.
Добавим дополнительный порт:
listen 80; listen 8123;
Отметим переменной запросы, пришедшие на этот выделенный порт.
map $server_port $is_specialport
Пометим прокси-серверы. Таких запросов много из-за Opera Turbo и им подобных.
map $http_x_forwarded_for $is_proxy
Признак виндового юзер-агента.
map $http_user_agent $is_windows
И, наконец, определим переменную-флаг для случаев, когда запрос имеет виндовый юзер-агент, не проксирован, имеет низкий TTL:
map $is_windows$is_specialport$is_proxy $is_suspected
Залогируем значение флага для всех запросов:
log_format custom '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$upstream_addr" ' '"$gzip_ratio" "[$upstream_response_time]" "$upstream_cache_status" "$request_time" "$is_suspected"'; access_log /var/log/nginx/nginx.access.log custom buffer=128k;
Выводы
- клиентов, от которых исходили запросы исключительно к счётчикам статистики
- ботов, которые были нацелены на парсинг ВКонтакта, но забрели на сайт по ссылке из соцсетей
- нечисть особого рода, которая тоже не является живым пользователем
P.S.
Разумеется, я знаю, что умолчания легко изменить и, конечно же, TTL — не единственный критерий, который мог бы работать в этом механизме.
UPDATE:
По предложению в комментариях, в теле статьи был установлен счётчик. По его данным:
Сохранение реферера в рассматриваемой группе
Всего | Нет реферера (% от всех) | Подозрительных (% от всех) | Подозрительных без реферера (% от всех) | Подозрительных без реферера (% от запросов без реферера) |
---|---|---|---|---|
144623 | 2.12968% | 6.70156% | 0.407957% | 19.1558% |
Доля запросов с известных анонимных прокси, приходящаяся на рассматриваемую группу
По данным MaxMind GeoIP2 от 21.10.2014
Всего | Запросов из АП | Подозрительные запросы с АП | Доля группы среди запросов с АП |
---|---|---|---|
144623 | 160 | 124 | 77.5% |
Сырые данные: gist.github.com/Snawoot/d1f6ce46099555c668ca
Критерий довольно хорошо выявляет нездоровый трафик, и если его появилось много из одного источника покупки трафика — есть над чем подумать.
- Системное администрирование
- *nix
OS Fingerprint как метод получения информации об ОС
Fingerprint OS — это метод получения информации об операционной системе. Fingerprint OS актуальна на начальном этапе атаки на хост. Так как злоумышленник может использовать информацию о типе операционной системы, чтобы спланировать, на какие известные уязвимости он будет воздействовать. Чем точнее злоумышленник определяет тип и версию операционной системы удаленного хоста, тем эффективнее его «взламывают». Администраторы используют всевозможные уловки, чтобы исключить точное определение своей операционной системы. Чтобы точно определить операционную систему, вам необходимо использовать комплексный подход, описанный в этом документе. Процесс определения самой операционной системы невозможно представить без описания методов сканирования. После применения создается отпечаток системы, и выбирается оответствие из базы данных ранее известных отпечатков. Существует два типа OS fingerprinting: активные и пассивные. Active Fingerprint OS — это определение типа операционной системы путем отправки пакетов на исследуемый хост.
Содержание скрыть
Пассивный OSF — это определение типа операционной системы путем анализа пакетов, исходящих от хоста. Недостатком активного является то, что злоумышленник может быть легко замечен системой IDS, а преимущество состоит в том, что нет необходимости ждать, пока рассматриваемая система отправит пакет злоумышленнику, и злоумышленник сам отправит пакет в рассматриваемую систему в в любое удобное время. Недостатком пассивного обнаружения ОС является то, что предварительным условием для атаки является то, что хост злоумышленника находится на пути целевой системы или что целевая система обращается к хосту злоумышленника, и преимущество состоит в том, что такую атаку очень сложно заметить.
Как же применить метод OS Fingerprint для снятия отпечатка ОС?
Удаленное снятие отпечатков — это процесс идентификации операционной системы хоста и сетевых служб, которые прослушивают определенные сетевые порты. Обычно это делается различными способами: активным и пассивным сканированием, отправкой нескольких пакетов и анализом ответов. В целом, утилиты, включая nmap, хорошо сканируют и определяют версию удаленной операционной системы.Но в тех случаях, когда хост находится за межсетевым экраном, эти утилиты мало чем могут помочь, либо выдают неоднозначные или неверные результаты.
Это особенно верно для машин, трафик которых сильно фильтруется МСЭ и может отправлять и получать очень мало типов пакетов. В этих случаях необходимо использовать другие методы для правильного определения состояния удаленного компьютера. Мы рассмотрим некоторые из них, включая сканирование RING и сканирование ICMP. В первом разделе обсуждаются различные методы сканирования портов, а во второй части делается попытка пролить свет на снятие отпечатков ОС.
Классические методы OSF
Под классическими методами понимается сбор так называемых . Банером называется стандартное приглашение сервиса например: FTPd, HTTPd, SMTPd, telnetd, identd. И соответственно по ним определяется тип ОС. Рассмотрим более подробно.
Снятие отпечатка ОС
Снятия отпечатков систем за МСЭ усложняются тем фактом, что межсетевой экран может изменять пакеты TCP / IP, вводя в заблуждение исследователя системы. Методы снятия отпечатков операционной системы подразделяются на пассивные и активные.
Пассивное снятие отпечатка ОС
При пассивном сканировании OS Fingerprint как правило не применяется.Вместо этого используется промежуточный хост (компьютер-зомби) и пытается определить операционную систему целевого хоста, вычисляя разницу между значениями IPID. Этот метод известен как сканирование в режиме ожидания. Вы также можете попытаться определить целевую операционную систему, по-другому обращаясь к входящему и исходящему трафику целевого хоста. Не рассматривая эти методы, перейдем сразу к активному снятию отпечатка удаленной системы.
Активное снятие отпечатка ОС
При активном применении OS Fingerprint производится отправка произвольных пакетов на целевой хост и делается попытка определения ОС на основании таких значений полей заголовка ответных TCP/IP пакетов, как временные характеристики или IPID, TOS, TCP ISN, флаг фрагментации и т.д.
Еще один старый метод обнаружения удаленной ОС — анализ значения TTL эхо-пакета ICMP. Это простой метод, однако он не может определить различия между различными вариантами одной и той же ОС, такими как win98, XP и win2k. Обычно каждая ОС имеет фиксированное предопределенное значение TTL. В операционных системах Microsoft значение по умолчанию — 128, а в Linux — 256.
Ниже приведен пример определения удаленной ОС по значению TTL пакета эхо-ответа ICMP. Я просто пингую целевую машину и проверяю значение TTL пакета ответа. В данном случае это 113, что говорит о том, что удаленная ОС принадлежит к семейству Windows, поскольку начальный TTL этих систем равен 128, а маршрут от моей машины до пункта назначения составляет примерно 15 промежуточных хостов (113 + 15 = 128). , что можно проверить с помощью traceroute.
Нужно учитывать, что это не самый надежный метод. Если целевой хост является маршрутизатором или находится за NAT (Network Address Translation), описанный способ потерпит неудачу. Не вдаваясь в подробности известных методик снятия отпечатка удаленной ОС, используемых в утилитах типа nmap, я опишу способ, сложный в реализации, но дающий хорошие результаты по опознаванию удаленной ОС.
Этот метод известен как RING-сканирование и имеет программную реализацию. Суть методики заключается в отправке произвольных пакетов SYN на открытый порт и ожидании пакетов SYN ACK. После получения пакета SYN ACK он автоматически блокируется, что заставляет удаленный хост повторно отправить его по истечении тайм-аута. При вычислении задержки между этими пакетами SYN ACK для разных хостов вы можете собирать статистику задержки для разных операционных систем.
Эти данные можно эффективно использовать для опознавания ОС, имеющих сходный тип TCP стека и находящихся за МСЭ, например FreeBSD и Windows 2000, в которых используется одинаковый тип TCP стека. Я привожу пример, в котором nmap не смог верно определить ОС на двух хостах, ошибочно приняв обе за FreeBSD по той причине, что один из хостов находился за межсетевым экраном.
Исследование telnetd
Этот метод требует, чтобы на удаленном хосте был запущен демон telnetd и у нас была возможность установить с ним соединение (во многих случаях сейчас это проблема потому как все переходят на SSH, но на ОС wiondows тем не менее он только начал активно использоваться). Раньше системы сами сообщали о себе (это считалось хорошим тоном) например:
Но сейчас разработчики поняли свою ошибку и убрали эту фичу. Но остается селедующий метод — после установления соединения, мы выполняем функцию sysread() и собираем информацию о сессии telnet.
Пример такой информации:
Чтобы правильным образом интерпретировать полученную информацию от демона telnetd, нам необходимо порядок следования опций TELOPT (Telnet Option), которые определены в telnet.h. В каждой ОС,за некоторым исключением, определен свой собственный порядок следования этих опций. После того как мы получили «отпечаток» в ascii, мы должны сначала конвертировать эти данные в их числовые значения (1-255) и далее отдельно сравнить по порядку каждое значение с соответствующей опцией TELOPT.
«яэ#яэ'» Числовое значение: 255 253 24 255 253 32 255 253 35 255 253 39 Опц
telnet : IAC DO TELOPT_TTYPE IAC DO TELOPT_LINEMODE IAC DO TELOPT_XDISPLOC
\ IAC DO TELOPT_NEW_ENVIRON
Эти значения TELOPT можно посмотреть в /usr/include/arpa/telnet.h.
Исследование HTTPd
Date: Sat, 20 Jul 2002 20:38:04 GMT
Server: Apache/1.3.22 (Win32)
Отсюда видно, что удаленная система Windows потому как в поле Server — Web сервис возвращает не только тип и версию самого Web сервера, но и тип ОС.
В случае если удаленный отвечает, что тип Web сервера Microsoft-IIS то вероятнее всего, что там стоит ОС Windows NT/2000.
# echo ‘GET / HTTP/1.0\n’ | nc victim.com 80 | egrep ‘^Server:’
Исследование FTPd
Приглашение FTP сервиса Обычно имеет значение именно само приглашение или же если открыт анонимный доступ то информация выдаваемая по
215 UNIX Type: L8 Version: BSD-199506
Remote system type is UNIX.
Using binary mode to transfer files.
Получив такой ответ можно предположить, что это FreeBSD. А если зайдя на FTP вы получите сообщение:
220 target FTP server (Version wu-1.2(1) Mon Feb 30 18:04:42 EST 1995) ready.
То вероятнее всего это Linux потому как в большинстве Linux систем wu-ftpd входит в стандартную поставку. Иногда система сама о себе сообщает в заголовке:
220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.
Даже если всетаки администратор не забывает изменить заголовок то информацию по прежнему можно получить по команде SYST:
215 UNIX Type: L8 Version SUNOS
Идентификация по identd
Для этого требуется чтобы был открыт 113 порт и установления соединения с демоном identd. Форма ответа определена в RFC 1413:
Пример ответа:
>> XXX.XXX.XXX.XXX responded with pidentd 3.0.12 for Linux 2.2.12 (Dec 22 2000 17:00:25)
Отсюда сразу видно, что удаленная система Linux (в данном случае это Debian 2.2) с ядром версии 2.2.12. Бывает так, что это не указывается в явном виде — например:
2.8.5 (Compiled: 11:18:59 Oct 23 2015)
OSF в таких случаях осуществляется по времени компиляции — для этого предварительно составляется база с OSF. Соответственно в данном случае это FreeBSD 4.2-STABLE.
Методы реализованные в сканере Nmap
Nmap реализует метод получения информации об операционной системе удаленного хоста путем поиска в стеке TCP / IP удаленного хоста. Nmap — отличный пример активного OSF.
Метод опроса стека TCP / IP удаленного хоста. Как правило, ответ сервера на любое удаленное действие (входящий пакет данных, запрос) — это пакет данных, отправленный источнику этого действия (здесь и далее термин «сервер» означает атакованный хост, а термин «хост» — хост злоумышленника) .
Как показывает практика, разные операционные системы по-разному реагируют на один и тот же запрос при работе в сети. Изучив характеристики реакций на запрос ОС, версии которых известны заранее, можно собрать определенную статистику, сравнив реакции на запрос с типом ОС.
Статистическая информация становится более подробной при использовании комбинированного влияния.
Более того, изучая реакцию сервера на неизвестную операционную систему, используя собранную статистику, можно определить не только тип, но и версию операционной системы, установленной на сервере. Например, можно точно отличить Solaris 2.4 от Solaris 2.50 или ядро Linux версии 2.0.30 (для всех Linux версия ядра указана ниже) от Linux 2.0.35. Рассмотрим более подробно основные методы изучения серверной операционной системы.
P0f — passive OS fingerprinting tool
Утилита для определения типа операционной системы, путем пассивного прослушивания трафика (например, сниффинг web-запроса);
Hping
Hping описывается как утилита, которую можно эффективно использовать для сканирования, снятия отпечатков и тестирования межсетевых экранов. Среди наиболее полезных функций утилиты — возможность отправлять произвольные пакеты из различных протоколов и выполнять удаленное сканирование. Это очень полезно при изучении ответов хоста на различные произвольные пакеты.
Маскировка отпечатка Passive OS (TCP/IP Fingerprint)
Проанализировав сетевой трафик устройства, можно определить его операционную систему. Разница в реализации стека TCP/IP в ОС позволяет определить тип системы, которая сгенерировала пакет. Специфичный для ОС набор параметров пакета и является отпечатком ОС. Этот метод называют Passive OS Fingerprinting, поскольку он предполагает наблюдение за проходящим трафиком без отправки запросов.
Вы можете проверить этот параметр на browserleaks.com/ip в разделе «TCP/IP Fingerprint». В Multilogin возможны следующие значения:
- Если вы используете прокси, этот тест может показать ОС, отличную от вашей реальной (например, Linux), поскольку прокси-сервер перехватывает ваши сетевые пакеты и перепаковывает их.
- Если вы используете Multilogin на виртуальной машине, приведенный выше тест может показать вашу реальную ОС независимо от той, что выбрана в настройках профиля (например, если у вас macOS, то TCP/IP Fingerprint может показывать macOS даже на виртуальной машине Windows в профиле Windows).
Отпечаток TCP/IP — это отпечаток соединения, и Multilogin никак не может на него повлиять. Веб-сайты по большей части игнорируют этот параметр, поскольку несоответствие между отпечатком TCP/IP и фактической ОС широко распространено в обычном трафике. Они вызваны определёнными сетевыми устройствами и конфигурациями.
Тем не менее этот отпечаток можно замаскировать на уровне прокси, используя специальные сервисы — например, iproxy.online.
Passive OS Fingerprinting: Detecting Compromised Traffic
В современном цифровом мире безопасность является одним из главных приоритетов. Скомпрометированный трафик – это одна из угроз, с которыми сталкиваются многие организации и частные пользователи. Для обнаружения такого трафика специалисты по безопасности прибегают к различным методам, включая passive OS fingerprint (пассивное отпечаток операционной системы). В этой статье мы рассмотрим, что такое passive OS fingerprint и как он может быть использован для выявления скомпрометированного трафика.
Определение пассивного отпечатка операционной системы
Passive OS fingerprinting – это процесс идентификации операционной системы, используя только пассивное наблюдение сетевого трафика, без необходимости активного взаимодействия с узлом. Этот метод основан на уникальных характеристиках, отличающих операционные системы друг от друга, таких как пакеты TCP/IP, настройки и порты сетевых соединений и другие параметры.
Принцип работы passive OS fingerprint
Определение пассивного отпечатка операционной системы осуществляется за счет сбора информации о сетевых пакетах, проходящих через сеть. Эти пакеты содержат заголовки, в которых присутствуют различные значения и флаги, характерные для определенной операционной системы. Анализируя эту информацию, алгоритмы passive OS fingerprint способны выявить используемую операционную систему с высокой точностью.
Как passive OS fingerprint помогает выявлять скомпрометированный трафик
Когда злоумышленник захватывает контроль над узлом в сети, он часто обращается к различным методам маскировки и обмана, чтобы скрыть свою активность. Однако, даже если злоумышленник перехватит трафик и сможет дешифровать его содержимое, операционная система, с которой он работает, оставляет свой отпечаток на передаваемых пакетах. Passive OS fingerprinting, обнаруживая и анализируя этот отпечаток, может определить, является ли трафик скомпрометированным или нет.
Преимущества и ограничения passive OS fingerprint
Основным преимуществом passive OS fingerprint является его способность обнаруживать скрытый и маскированный трафик, который может быть невидимым для других методов обнаружения. Более того, этот метод не требует активного взаимодействия с узлом и не вызывает подозрений у злоумышленников.
Однако, стоит отметить, что passive OS fingerprinting может быть неполным или неправильным, если злоумышленник использует специальные инструменты для изменения или скрытия отпечатка операционной системы. Также, этот метод не идеален для обнаружения новых и неизвестных типов злоумышленного трафика.
Заключение
Passive OS fingerprinting – это эффективный метод обнаружения скомпрометированного трафика. Его преимущества включают способность обнаружения маскированного трафика и отсутствие необходимости в активном взаимодействии с узлом. Однако, этот метод также имеет свои ограничения, поэтому рекомендуется использовать его вместе с другими методами обнаружения угроз безопасности для достижения наибольшей эффективности и точности
Помимо использования passive OS fingerprinting для выявления скомпрометированного трафика, существуют также специализированные сервисы, такие как proxyzzz.com , которые предлагают гибкое управление параметрами этого метода.
Proxyzzz.com – это один из ведущих провайдеров прокси -сервисов, предоставляющий возможность гибкой настройки Passive OS Fingerprinting в рамках тестирования систем безопасности и отладки защиты от злоумышленников. С помощью proxyzzz.com вы можете изменять и контролировать различные параметры отпечатка операционной системы, которые передаются в сетевых пакетах.
Этот сервис позволяет выполнять тестирование систем безопасности, проверяя их реакцию на изменение параметров отпечатка операционной системы. Такой подход позволяет оценить эффективность защиты и обнаружить потенциальные слабые места в системе, которые могут быть использованы злоумышленниками.
Преимущества использования proxyzzz.com включают возможность точной настройки параметров Passive OS Fingerprinting, а также обширный выбор географического расположения прокси -серверов, что позволяет создавать разнообразные сценарии тестирования. Кроме того, сервис предоставляет полное логирование активности и детализацию результатов тестирования, что помогает в проведении анализа и отладке системы безопасности.
Однако, важно отметить, что использование таких сервисов должно осуществляться с согласия владельца системы и в соответствии с законодательством. Перед тестированием системы безопасности с помощью proxyzzz.com , рекомендуется убедиться, что у вас есть соответствующие разрешения и организована согласованная команда отвечающая за контроль и безопасность системы.
В заключение, proxyzzz.com является примером сервиса, предоставляющего возможность гибкого управления параметрами Passive OS Fingerprinting для тестирования систем безопасности и отладки защиты от злоумышленников. Такие сервисы позволяют повысить эффективность проверки и обнаружения потенциальных уязвимостей, а также повысить уровень безопасности системы