Лайфхаки

Маленькие, полезные хитрости

Прокси-крутильщик: как человек посередине помогает крутить прокси для

11.09.2024 в 14:03

Прокси-крутильщик: как человек посередине помогает крутить прокси для

Прокси-методы для обёртки исходящих вызовов методов работающих с базой данных

Допустим, что все наши методы обращения к БД имеют два параметра

    Connection - содержащий jdbc-соединение с нужной базой данных

    TablePojo - некий POJO (Plain Old Java Object) объект содержащий в себе необходимые данные для выполнения в базе полезной работы

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

/**Прокси для запросов в БД использующих два параметра * @param function - ссылка на метод имеющий два параметра * @param connection - подключение к БД * @param tablePojo - объект содержащий необходимые данные для выполнения методом полезной работы * @param - тип выходного параметра * @param logMessage - текстовое сообщение для записи в лог * */ public O proxyDbRequest(String logMessage, Connection connection, TablePojo tablePojo, BiFunction function){ log.info("start: "+logMessage); long begin=System.currentTimeMillis(); try{ O output = function.apply(connection, tablePojo); log.info("end successful: "+logMessage+". Spent="+(System.currentTimeMillis()-begin)); return output; }catch(Exception e){ log.log(Level.WARNING, "end error: "+logMessage+". Spent="+(System.currentTimeMillis()-begin), e); throw new RuntimeException(e); } }

Вызвать метод через данный прокси можно как

this.proxy.proxyDbRequest("create table " + table.getName() + " if not exists", conTest, table, this::createTableifNotExist)

Где проксируемый метод имеет следующее описание

private Boolean createTableifNotExist(Connection connection, TablePojo table)

Как можно заметить, использование данного прокси-метода жёстко ограничивает нас в количестве и типе используемых параметров так как мы задействовали стандартный интерфейс BiFunction.
А что если нам необходимо использовать три параметра, а не два?

Связанные вопросы и ответы:

Вопрос 1: Что такое прокси

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

Вопрос 2: Как человек посередине может помочь крутить прокси

Человек посередине может использовать специальное программное обеспечение для автоматического перенаправления трафика через различные прокси-серверы. Это позволяет избежать блокировки и ограничений, которые могут быть наложены на определенные прокси-серверы.

Вопрос 3: Какие преимущества имеет использование прокси

Использование прокси-серверов имеет несколько преимуществ, таких как анонимность, защита конфиденциальности и безопасность, обход блокировок и фильтров, а также ускорение работы сети.

Вопрос 4: Как выбрать подходящий прокси-сервер

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

Вопрос 5: Какие типы прокси-серверов существуют

Существует несколько типов прокси-серверов, таких как HTTP-прокси, SOCKS-прокси, VPN-прокси, а также прокси с анонимностью высокого уровня, такие как прокси-серверы с анонимностью высокого уровня.

Вопрос 6: Как обезопасить себя при использовании прокси-серверов

Чтобы обезопасить себя при использовании прокси-серверов, необходимо выбирать надёжные и надежные прокси-серверы, использовать защищённые протоколы, такие как HTTPS, а также регулярно менять прокси-серверы, чтобы избежать блокировок и ограничений.

Что такое прокси-крутильщик

Процедура выравнивания PROXI
Используется для добавления/удаления блоков управления и функциональных блоков из автомобиля.
Попросту говоря, передача измененной конфигурации на все модули управления автомобиля.

Для этих целей необходимы:
— Телефон на Android, адаптер Elm327 с Bluetooth, синий переходник (или адаптер Elm327 со встроенной кнопкой переключателя) и AlfaOBD для Android;
ЛИБО
— Ноутбук на Windows, адаптер Elm327 с Wi-Fi (или Elm327 на USB), синий переходник (учтите момент, что есть Elm327 USB версии, где не нужны переходники) и AlfaOBD для Windows.

Порядок действий для процедуры PROXI на телефоне:
1) Перевести машину в режим Run (без заведения двигателя), подключить ELM (без синего переходника);
3) Открыть программу AlfaOBD, убедиться что подключен ELM. Если нет, то выбрать в самой программе AlfaOBD пиктограмму 'Bluetooth' и указать устройство ELM;
4) Затем в AlfaOBD — 'Chrysler 200 (UF)' — 'Body Computer' — 'Delphi/Marelli' — 'Соединить';
5) Вкладка (внизу справа) 'Активная Диагностика' — 'Выберите процедуру для выполнения' — 'Прокси инструменты' — ниже пункт 'Выберите опцию' — 'Резервная копия конфигурации прокси' — 'Старт';
6) Вкладка та же 'Активная Диагностика' — 'Выберите процедуру для выполнения' — 'Процедура настройки PROXI' — 'Старт'.
В процессе выполнения попросит подключить синий переходник и нажать 'OK';
7) Дождаться завершения процедуры. Перевести машину с Run в OFF (не заводить), открыть и закрыть дверь, дать "уснуть" машине на 10-15 минут;
8) Спустя время завести машину, пробег на приборной панели не должен мигать и не должны быть ошибки Check Engine и т.п. (если их конечно же не было раньше). В случае, если есть ошибки или процедура не прошла успешно, то необходимо повторить выполнение процедуры, но прежде выполнить очистку ошибок по блокам (двигатель, коробка, ABS и т.д.).
Важно! Для того, что бы удостовериться, что процедура прошла успешно по всем блокам — рекомендуется включить

Если после изменения конфигурации автомобиля, после неоднократных попыток не удается выполнить PROXI, то воспользуйтесь восстановлением PROXI с Backup (резервную копию делали в п.5). Для этого нужно:
Вкладка 'Активная Диагностика' — 'Выберите процедуру для выполнения' — 'Прокси инструменты' — ниже 'Выберите опцию' — 'Восстановить прокси из резервной копии' — указать файл backup — 'Старт'.
Это связано с тем, что при внесений изменений в конфигурацию были заданы те параметры, которые машина попросту не поддерживает, соответственно не может активировать на блоках, по этому с резервной копии необходимо вернуть первоначальные параметры конфигурации.

Данная статья оформлена в ознакомительных целях и всё вышеуказанное вы делаете на свой страх и риск!

Какова роль человека посередине в кручении прокси

Этот пункт вытекает из предыдущего. 

Нередки истории, когда начинающий разработчик сидит с какой-нибудь задачей месяц, а то и 2, а потом к нему приходит разгневанный продакт или тимлид узнать, а чем он, собственно, занимается. 

Часто оказывается, что человек просто не может с чем-то разобраться, а просить о помощи старших коллег стесняется. Совет простой: на время отодвинь ногой собственное эго, а вместе с ним рефлексию «а что обо мне подумают» .  

Даже если и подумают что-то не то, это будет максимум минутное раздражение, которое не сопоставимо с зафакапленными сроками, часами стресса и мучений. Но, скорее всего, не подумают: все опытные разработчики тоже когда-то начинали, они помнят свой период джуновства.

Ещё момент: если тебе не помогли, есть вероятность, что это не потому что не хотели, а потому что сами не знали ответа. 

Как было у меня

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

Я могла часами, а то и днями биться с проектом, который никак не собирался, гуглить дурацкий мелкий баг, который нашли на тесте! А когда я понимала, что тянуть дальше некуда, мне нужно было полчаса, чтобы набраться мужества и всё-таки написать наставнику. И ещё полчаса, чтобы сформулировать, а потом переформулировать свой вопрос, чтобы он не выглядел совсем уж глупо. А к тому, чтобы задать свой вопрос в чате IOS-комьюнити Точки, я пришла только через год!

Когда страх наконец попустил, я начала развиваться динамичнее. 

Вообще развитие — это просто скорость освоения информации и приобретения навыков. Если ты тратишь 15 минут, а не 15 дней на то, чтобы что-то узнать, то естественно растёшь быстрее. Поэтому не бойтесь спрашивать.

Как человек посередине помогает крутить прокси для


Большинство атак «человек посередине», независимо от используемых методов, имеет простую последовательность действий. Рассмотрим ее на примере трех действующих лиц: Алисы, Боба и Чака (злоумышленника).
  1. Чак тайно подслушивает канал, на котором общаются Алиса и Боб
  2. Алиса отправляет сообщение Бобу
  3. Чак перехватывает и читает сообщение Алисы без ведома Алисы или Боба
  4. Чак изменяет сообщения между Алисой и Бобом, создавая нежелательные или опасные ответы
Методы атаки «человек посередине» обычно используются на ранних этапах— во время разведки, вторжения и заражения. Злоумышленники часто используют атаки «человек посередине» для сбора учетных данных и информации о своих целях. Многофакторная аутентификация может быть эффективной защитой от кражи учетных данных. Даже если злоумышленник узнает ваше имя пользователя и пароль, ему понадобится ваш второй фактор аутентификации, чтобы их использовать. К сожалению, в некоторых случаях многофакторную защиту можно обойти .Вот практический пример реальной атаки «человек посередине» на Microsoft Office 365, когда злоумышленник обошел многофакторную аутентификацию:
  1. Пользователь нажимает на фишинговую ссылку, которая переводит его на поддельную страницу входа в Microsoft, где он вводит свои имя пользователя и пароль.
  2. Поддельная веб-страница перенаправляет имя пользователя и пароль на сервер злоумышленника.
  3. Злоумышленник пересылает запрос на вход в Microsoft, так что эти действия не вызывают подозрений.
  4. Microsoft отправляет пользователю код двухфакторной аутентификации в текстовом сообщении на телефон.
  5. Пользователь вводит код на поддельной веб-странице.
  6. Поддельная веб-страница перенаправляет имя пользователя и пароль на сервер злоумышленника.
  7. Злоумышленник использует Evilginx для кражи cookie-файла сеанса.
  8. Злоумышленник пересылает полученный от пользователя код двухфакторной аутентификации в Microsoft, и теперь с помощью cookie-файла сеанса может войти в Office 365 от имени этого пользователя. Таким образом хакер получает доступ к конфиденциальным данным предприятия.
Вы можете посмотреть демонстрацию этой атаки в реальной среде во время наших еженедельных.

Какие способы использует человек посередине для кручения прокси

Первым делом клиент отправляет запрос. Далее запрос проходит аутентификацию. Если что-то пошло не так, то клиент получит ошибку 407. Если всё ок, то происходит проверка наличия разрешения отправки запросов через наш прокси-сервер к серверу, который указал клиент. Если разрешения в списке нет, то клиент получает ошибку 423. Если все проверки завершились успешно, то запрос переходит к проксированию.

Случайно выбирается внешний прокси, который не имеет ограничений для целевого сервера, и запрос отправляется через него. Если пришёл код, не входящий в список ошибочных, например 200, то клиент получает ответ с этим кодом. Если приходит ошибка, то используемый внешний прокси получает тайм-аут для проксирования этого целевого сервера, а на его место выбирается новый и процесс повторяется. Цикл будет повторяться N раз, пока либо не получит валидный ответ, либо не исчерпает количество попыток — в этом случае клиент получит ошибку 566.Клиент может влиять на работу прокси-сервера, изменяя некоторые параметры, которые может передавать через заголовки запроса. Заголовок должен быть с именем в формате proxyserver. и соответствующим требующимся значением. После прочтения заголовков-параметров, они удаляются из запроса, чтобы не влиять на результат запроса.

Параметры:

    proxy_mode: Режим работы proxyserver

      random: Упрощённый. Проверяется только аутентификация и разрешение на отправку запроса. Проксирование осуществляется внутренним механизмом mitmproxy, плюс к каждому запросу применяется случайный прокси сервер без учёта тайм-аутов. Это позволяет существенно ускорить работу прокси-сервера. Запросы логируются. Такой режим подходит для парсинга, когда не принципиально, чтобы запросы всегда завершались успешно, или если на целевом сайте не слишком активная защита и просто хочется скрыть источник запроса.

      rotate: Основной (по-умолчанию). Запрос и код ответа логируются в БД, плюс по факту запросов и ответов отправляются метрики. Проксирование осуществляется следующим алгоритмом: выбирается случайный доступный для целевого хоста прокси-сервер. Запрос повторяется request_attempts раз, пока не будет получен ответ, код которого не входит в список error_statuses .

      Если получен валидный ответ, то он возвращается клиенту.

      Если ответ невалидный, то цикл повторяется, а текущему используемому прокси серверу выставляется тайм-аут длиной proxy_timeout секунд, в течение которого он не может быть выбран для проксирования запрашиваемого хоста. Если количество попыток request_attempts исчерпано и валидный ответ не получен, то клиенту вернётся ответ с кодом 566 — Proxying failed.

    proxy_n: Порядковый номер прокси (по умолчанию не задан). Параметр используется в случае, когда необходимо распределить запросы по конкретным прокси-серверам (некоторое подобие sticky proxy, но очень упрощённое). При выборе прокси-сервера для запроса, будет выбран сервер с порядковым номером, равным значению данного параметра. Если передано значение, превышающее размер пула прокси-серверов, то порядковый номер будет запущен по новому кругу. То есть, если в пуле 10 серверов, и передано значение 13, то будет выбран 3 сервер.

    error_statuses : Список HTTP-кодов ответов, которые считаются ошибочными. Передаются в формате строки, разделённые ";". По умолчанию: 401, 403, 429.

    proxy_timeout: Тайм-аут (в секундах), накладываемый на прокси-сервер после получения ошибочного ответа от хоста. По умолчанию: 60.

    request_attempts: Количество попыток отправки запроса. По умолчанию: 3.

Как человек посередине может повлиять на скорость и качество кручения прокси

Человек посередине (Man in the Middle, MITM, атака посредника) — вид атаки, при совершении которой преступник выступает в роли «посредника» при передаче информации между пользователями, получает контроль над трафиком, отслеживает запросы, посылаемые в обе стороны, и/или изменяет связь между ними. Атака является одной из многочисленных методик дискредитации канала связи, при которой злоумышленник внедряется в канал, вмешивается в протокол передачи, удаляет и/или искажает информацию, которой обмениваются пользователи.

Жертва атаки убеждена, что обменивается данными непосредственно, например, с банком, но фактически трафик при этом проходит через вычислительные мощности преступника, которому удается получить конфиденциальные банковские сведения.

Осуществляя атаку MITM, злоумышленники преследуют следующие цели:

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

Сценарии атак «человек посередине»:

  • Использование маршрутизатора Wi-Fi как средства перехвата запросов пользователя.
  • Поиск уязвимостей в настройках или шифровании легальной сети, их последующее использование для получения данных жертв и слежения за ними.
  • Осуществление атаки «человек в браузере» путем внедрения вредоносного кода, который работает внутри браузера жертвы и производит запись всех данных, передаваемых пользователем на различные сайты, а затем отправляет эти данные злоумышленнику.
  • Принуждение пользователя к применению менее надежных протоколов и функций, которые до сих пор поддерживаются устройством по принципу совместимости (Downgrade Attack).

Обнаружение атаки:

  • Чтобы выявить потенциальную атаку, взаимодействующие пользователи могут проверить несовпадения во времени ответа. Увеличенное время ответа одного из пользователей может указывать на то, что в коммуникацию вмешался посторонний.
  • Также полезен мониторинг сетевого трафика, при этом нужно обратить особое внимание на DNS-сервер, X.509-сертификат сервера и его IP-адрес.

Защита от атаки:

  • Не использовать общественные сети Wi-Fi, поскольку они не защищены и не ограничены в доступе. В них не контролируется трафик, а следовательно, с ним можно делать все что угодно, пока он не достигнет маршрутизатора.
  • Использовать статические ARP-таблицы для защиты сети от посторонних пользователей и злоумышленников.
  • Обратить внимание на MAC-адрес. У каждого устройства в сети он индивидуален. Знание MAC-адреса собственного маршрутизатора позволяет сравнить его с МАС-адресом шлюза по умолчанию, чтобы определить, принадлежит ли маршрутизатор злоумышленнику.

Какие преимущества имеет использование человека посередине для кручения прокси

Атаки типа "человек посередине" являются одним из распространенных видов киберугроз, которые могут иметь серьезные последствия как для частных лиц, так и для организаций. Эти атаки происходят, когда злоумышленник вставляет себя в канал связи между двумя сторонами, что позволяет ему подслушивать и изменять передаваемые данные. Неведомые участники полагают, что общаются напрямую друг с другом, не подозревая, что посредник перехватывает их сообщения.

Определение атак типа "человек посередине"

Атаки типа "человек посередине" подразумевают перехват и изменение коммуникации между двумя сторонами, о чем ни одна из них не знает. Злоумышленник занимает позицию между отправителем и получателем, что позволяет ему получить несанкционированный доступ к конфиденциальной информации . Этот несанкционированный доступ может привести к ряду злонамеренных действий, включая кражу личных данных, финансовое мошенничество и шпионаж.

Как работают атаки типа "человек посередине"

Типичная атака MitM включает три ключевых этапа: перехват, дешифрование и повторное шифрование. Во-первых, злоумышленник подслушивает канал связи, перехватывая передаваемые данные. Затем он дешифрует перехваченные данные, чтобы извлечь ценную информацию, такую как данные кредитных карт или учетные данные для входа. Наконец, чтобы оставаться незамеченным, злоумышленник повторно шифрует данные и доставляет их предполагаемому получателю, обеспечивая видимость подлинного обмена. Важно, чтобы частные лица и организации были бдительны к таким атакам, внедряя надежные меры безопасности, такие как шифрование, цифровые подписи и защищенные протоколы связи.

Какие ограничения могут быть связаны с использованием человека посередине для кручения прокси

Как и во втором посте, мы сейчас рассмотрим задачу, поставленную системе машинного обучения. Конкретно, мы разберём, как задача влияет на склонность системы создавать псевдо-согласованные меса-оптимизаторы.

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