Секи мысль, дружище: нет в нашем деле ничего более насущного, чем собственная анонимность и безопасность! Анонимностью, даже в угоду потрясающего и долгожданного результата, не стоит пренебрегать никогда.

Существует огромное число способов обеспечения анонимности сетевых соединений. Но в числе самых лучших и удобных я выделяю использование каскада удалённых SOCKSv5-серверов, поддерживающих соединения без авторизации. Протокол SOCKSv5 предоставляет очень простой, но, в то же время, мощный и гибкий интерфейс, который может удовлетворить даже самые изощрённые потребности в анонимности. Такие серверы форвардят абсолютно любой TCP- и UDP-траффик и легко выстраиваются в цепочки теоретически неограниченной длины 🙂 Иными словами, SOCKSv5
- это real zlo! 🙂

Терминология

Под анонимным и открытым SOCKSv5-сервером я понимаю некий удалённый хост, принимающий от меня запросы на соединение по порту 1080 методом NO AUTHENTICATION REQUIRED (см.
rfc1928) и корректно выполняющий каскадирование (методами TCP CONNECT, TCP BIND или UDP ASSOCIATE) к другому интересующему меня SOCKSv5-серверу
или к конечной цели.

Распространённость

Я бы хотел опровергнуть весьма популярное мнение о том, что "SOCKSv5-сервисов, да ещё и анонимных, да ещё и открытых, очень мало". Это, мягко говоря, не так. По независимым оценкам компетентных в этих делах товарищей, количество таких соксов во всём мире колеблется от 20 до 100 тысяч. Хватит на всех 🙂 Я сам содержу и периодически обновляю список анонимных SOCKSv5-адресов, который можно найти на моём сайте.

Подавляющее большинство соксов, о которых идёт речь, это дефолтно или криво настроенные программки вроде WinGate или WinProxy, тупо воткнутые в Windows-боксы. Хозяева этих серваков либо не подозревают об огромных дырах, которые они поддерживают, либо наплевательски относятся к своему хозяйству. Стало быть, именно такие машины нас с тобой и интересуют! 🙂

Целенаправленно открытые анонимные соксы встречаются гораздо реже и их следует стараться избегать: вероятность того, что такая машина может заниматься отслеживанием хакеров (чаще -- порноспаммеров, заметающих таким образом свои следы :)) в Сети отлична от нуля... Единственный, на мой взгляд, разумный критерий отличия кривого вингейта от злобной ловушки заключается в ОС интересующего нас сокса. Вряд ли кто-нибудь станет расставлять ловушки на виндах. Отсюда вывод: мы выбираем Windows!

SOCKSv5: ищем

Уверен, ты уже достаточно взрослый, чтобы знать как находить инфу в Инете :)) Но я не думаю, что сёрфинг по сайтам, публикующим списки анонимных проксей
- это самая лучшая идея. Если ты не ленив и хочешь обогатиться собственным (читай, уникальным!) списком соксов, то тебе придётся прибегнуть к сканированию.

В принципе, можно обойтись любым мало-мальски работоспособным TCP-портсканнером и тестировщиком проксей, умеющим в нужной тебе степени глубоко обращаться с протоколом SOCKSv5. Технология сбора и дистилляции соксов примерно такова:

1. Сканируем интересующий нас диапазон на предмет открытости и доступности TCP-порта 1080. Это значит, что баннеры собирать не надо, т.к. SOCKSv5, прежде чем что-либо ответить, сначала ожидает от клиента запрос на метод авторизации. Складываем результат в лог №1.

2. Тестируем содержимое лога №1 на валидность операционной системы. Не забудь, нам с тобой нужен только Windows! Образуем лог №2.

3. Скармливаем лог №2 тестировщику проксей, проверяя доступность интересующих нас фич (доступность анонимного соединения, т.е. метода NO AUTHENTICATION REQUIRED, положительные ответы на команды TCP CONNECT, TCP BIND и, если нужно, UDP ASSOCIATE). На выходе получаем лог №3, содержащий столь нужный нам первач 🙂

Задача №2: nmap/руки

Овец от волков, то есть Windows от UNIX тебе поможет отделить программа nmap. nmap
- самое мощное из широкодоступных средств распознавания операционных систем удалённых хостов. Юниксовую версию программы и документацию к ней можно взять непосредственно у
автора, а там же должны быть ссылки на порты этой проги под Windows. Обрати внимание, дружище: виндовый порт nmap'а работает с сетью через интерфейс libnetNT. Это значит, что диалапщики будут испытывать трудности в её юзании в некоторых версиях Windows.

Если ты не доверяешь результату работы nmap'а, ты можешь проделать следующий трюк: соединившись с удалённым соксом, "попроси" его сделать коннект к тебе и рассмотри входящий TCP SYN-запрос:

0000: 00 F0 4C 39 03 AD 00 50 22 86 1E 5D 08 00 45 00 ..L9...P"..]..E.
0010: 00 3C ED 32 40 00 3F 06 7A AF C0 A8 01 01 0A 2C .<.2@.?.z......,
0020: 08 05 04 08 C3 50 3A D1 24 C6 00 00 00 00 A0 02 .....P:.$.......
0030: 16 D0 6C 78 00 00 02 04 05 B4 04 02 08 0A 00 00 ..lx............
0040: C9 F4 00 00 00 00 01 03 03 00 ..........

Нас интересует наличие поля опций в TCP-заголовке входящего пакета. Здесь приведён пример кадра EtherNet (я использую сниффер SpyNet), и заголовок TCP (более подробно см.
rfc793) начинается с байта 22h. Стало быть, четыре старших бита в смещении 2Eh принадлежат полю TCP Header Length. При отсутствии поля опций TCP, это поле должно содержать значение 5, что соответствует двадцати байтам длины заголовка TCP. В Windows это значение обычно равно семи, что соответствует двадцати восьми байтам. Здесь же мы имеем значение A, следовательно, сорок байт TCP-заголовка. Делаем вывод: это не Windows. Винда отправила бы запрос примерно такого вида:

16:18:19.887017 10.44.8.5.3978 > 10.44.8.109.1111: S 3703659020:3703659020(0) win 16384 <mss 1460,nop,nop,sackOK> (DF)

4500 0030 2d30 4000 8006 a8ce 0a2c 0805
0a2c 086d 0f8a 0457 dcc1 5a0c 0000 0000
7002 4000 d3a6 0000 0204 05b4 0101 0402

Этот дамп снят tcpdump-ом на Linux'е, и в нём TCP-заголовок начинается со смещения 14h. Значение четырёх старших бит байта 20h равно семи.

В принципе, nmap'ом можно пользоваться как широкодиапазонным портсканнером, но я бы не советовал тебе этого делать. Для решения задач №1 и №3 существуют специальные утилитки, построенные на основе сокетного движка, о которых я расскажу далее.

SocksScan - это компактная утилитка, предназначенная для поиска соксов пятой версии на больших сетевых диапазонах (реально, например, опросить сеть класса A за пару суток с диалапа). Логика у программы проста: компактный (и, стало быть, относительно быстрый) сокетный движок, ищущий открытые порты 1080 + механизм идентификации найденных портов 1080 (отправляем дейтаграмму '05 00' и ожидаем ответ '05 01 00').

Программка демонстрационная и, мягко скажем, далека от совершенства 🙂 Но в ней реализовано всё необходимое для тонкой настройки сокетного движка и проведения аккуратного сканирования (см. скриншот):

Интерфейс SocksTest'а во многом схож с SocksScan'овским. Дело в том, что SocksTest получилась методом небольшого переколбаса SocksScan'а 🙂

И SocksTest, и SocksScan -- 100% мультиплатформенные программы (мне не известно случаев их неработоспособности на какой-либо из систем). Предкомпиленные бинарники под cygwin, UNIX и Windows с исходниками и документацией можно найти на моём сайте.

SOCKSv5: юзаем

Итак, дружище, я снабдил тебя всем необходимым софтом для поиска и фильтрации соксов. Настало время научиться юзать SOCKSv5 во всю мощь этого протокола 🙂 Даже если ты не программист и не хакер, ты всё равно в обломе не останешься, так как есть программы, вполне мило и полнофункционально юзающие SOCKSv5.

Для начала, настоятельно рекомендую тебе
скачать две программы, которые тебе насущно
необходимы. Это SocksChain v3.0 и
SocksCap v2.2.

SocksChain v3.0

Единственная известная мне прога под Windows, позволяющая каскадировать соксы. SocksChain v3.0 обладает весьма небедным интерфейсом:

и может функционировать как локальный сокс-сервер. Программа принимает запросы на соединение от клиентского софта, поддерживающего SOCKSv5 и далее направляет их в построенный тобой каскад из удалённых SOCKSv5-серверов.

SocksCap v2.2

Уникальная программа. Может перехватывать соединения клиентских программ (не поддерживающих соединения через SOCKSv5) и перенаправлять их на указанный тобой сокс-сервер.

Как ты уже, наверное, догадался, тандем SocksCap + SocksChain даст тебе необходимый уровень анонимности!

PS: программистам и хакерам

Очевидно, тебе (да и многим) пригодилась бы библиотека и набор многоплатформенных утилит, построенных с её помощью, в которых были бы сконцентрированы все необходимые функции работы с соксами, начиная со сканирования, заканчивая каскадированием и прокладыванием пайпов между распределёнными программами. В настоящий момент, я занимаюсь разработкой такой библиотеки, но до публичного релиза в одиночку я, видимо, никогда не
дойду 🙂

С благодарностью приму пожелания и рекомендации. Буду особенно счастлив предложениям об участии в создании такой библиотеки вместе со мной (или вместо меня :)))

С уважением, [Privacy]

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии