🧑‍💻DevDays
10 subscribers
4 photos
29 links
Практичні нотатки про кібербезпеку, мережі, self-hosting, проксі та AI-інфраструктуру українською. Реальні кейси, код і розбори.
Download Telegram
Channel created
Channel photo updated
Маю цікаву ідею сервісу для проксірування трафіку 🚀💻. Детально розпишу у статті або статтях 📝, інформації для вивчення там немало, а тут опишу суть.

А суть в тому, що помітив, що іноді DNS-трафік летить напряму до резолвера, незважаючи на те, що я намагаюся використовувати проксі 🌐. Ця ситуація повторюється і якщо використовувати проксі напряму через CLI-інструменти, і навіть якщо використовувати через proxychains чи проксі-брокери. Погуглив і зрозумів, що проблема відома і є декілька варіантів її вирішити 🔍.

Варіанти є, а готового безкоштовного рішення нема. Непорядок 😤. Буду виправляти!
Підніму шлюз з кастомною логікою проксіювання запитів. 🖥

Також прийшла в голову ідея автоматично збирати проксі, перевіряти і ранжувати їх під капотом, не перекладаючи цей процес на плечі користувача.

Логіка зрозуміла. Детальніше буде у статті 📄 і в наступних постах.
🤯1🤝1
Please open Telegram to view this post
VIEW IN TELEGRAM
Зібрав ноду для роботи з локальними нейронками 🤖💻.
Покищо оновлюю і налаштовую 🔧.
Але ідеї вже крутяться)) 💡🚀
Сьогодні в планах оновити гіпервізор і подружити ноди 🔄🤝.
Як я зрозумів, що проблема є? 🤔

Розкажу, що саме сталось 📝.

Запустив whatweb із заданим параметром проксі і одразу отримав відмову 🛑. Спершу не зрозумів, у чому справа — просто щось не спрацювало. Почав розбиратись і зрозумів: тула в обхід налаштувань проксі сама йшла до DNS напряму — минаючи проксі повністю. Але я для того проксі й накинув, щоб звертатись не напряму 🔄. А без проксі цей запит просто не відпрацював. Так стало зрозуміло, що маю справу з витоком 🫣.

Обійти це я спробував через proxychains, але й тут виникла проблемка, whatweb всеодно слав запити напряму, ігноруючи мої налаштування ❌.

Я зрозумів, що так може зробити не тільки whatweb, а будьяка інша тула і спробуй вгадай яка і в який момент вирішить мене спалить 💔.

А отже, якщо є проблема, то потрібно знайти для неї вирішення, щоб зберегти баланс у всесвіті ⚖️.

Я вирішив, якщо в системі мої налаштування проксі може обійти будь-яка тулза, то я буду ловити їх запити поза системою і акуратно загортати у проксікі, так як мені потрібно 🛡.

Отака ідея 💡.

Далі я пішов шукати готові рішення 🔍.
Про те, що я знайшов, буду писати далі ✍️.
Please open Telegram to view this post
VIEW IN TELEGRAM
Останній тиждень просто скажений 😵‍💫.
Розгортаю нову ноду для прикольних нових проектів 🚀.

Збираю онлайн платформу для того, щоб збирати свої думки в одному місці 🧠.

І реалізую новий проект прозорого проксі 🔍. Перші версії вже викладені на github 💻.

Перша частина статті, де я розповім детальніше про проблему і підхід до її вирішення вже на підході ✍️.

💪
Please open Telegram to view this post
VIEW IN TELEGRAM
DNS leak за кілька хвилин 🕵️

Проксі налаштували, а DNS точно йде через нього? 🤔

Я для себе перевіряю це просто через tcpdump 🔍.

На машині, де крутиться тула, запускаю:

tcpdump -ni any port 53

Потім у другому вікні роблю звичайний запит через інструмент, який нібито працює через проксі 🌐.

Якщо в tcpdump видно пакети до 8.8.8.8:53, 1.1.1.1:53 або системного resolver — DNS іде напряму 🫣

Тобто HTTP-запит може піти через проксі, а домен, до якого ви звертаєтесь, уже засвітився назовні ⚠️.

Саме так я й знайшов проблему з WhatWeb.

У наступному пості покажу, чому proxychains не завжди рятує від цього 😬 ✍️
Чому Proxychains не гарантує проксіювання DNS 🔄

Після того як WhatWeb почав ходити до DNS напряму, я подумав: ну ок, є ж proxychains 🤷‍♂️

Але в моєму випадку картина не змінилась ❌.

proxychains добре працює там, де може перехопити мережевий виклик самої програми. Але DNS може оброблятись окремо: через системний resolver, бібліотеку, кеш або інший механізм, який не потрапляє під його контроль 🔍.

Тобто логіка «обгорнув тулу в proxychains — значить усе анонімно» небезпечна ⚠️

Будь-яка програма може:

• зарезолвити домен напряму;
• використати нестандартний механізм DNS;
• просто помилитися в реалізації;
• або в якийсь момент обійти ваші налаштування.

Тому я вирішив контролювати DNS не всередині конкретної тули, а на рівні gateway 🛡 🌐

Далі покажу схему, до якої в підсумку прийшов.
Схема Transparent Gateway 🗺

Поступово в голові склалась така конструкція 🧠.

Є робоча VM. Їй не потрібно знати, як саме працює проксіювання, які проксі зараз живі та через який resolver відправляти DNS.

Вона просто працює 🌐

А gateway уже ловить і маршрутизує трафік ⚙️:

Робоча VM → gateway

TCP → redsocks → HAProxy → upstream → Internet

DNS →
стандартний запит → DoH → resolver
запит до конкретного resolver → UDP-to-TCP → resolver


Головна думка: не довіряти кожній окремій тулі 🔍.

Якщо програма може відправити DNS не туди, куди потрібно, gateway має це побачити й перехопити. Інакше достатньо одного невдалого запиту, щоб засвітити реальний маршрут 😶‍🌫️

Наступний крок — розділити звичайні DNS-запити й запити до конкретних resolver 🚀.
DoH, UDP-to-TCP і два маршрути для DNS 🔀

Не весь DNS однаковий 🤔.

У більшості випадків мені неважливо, який саме resolver поверне IP-адресу. Такі запити можна завернути в DoH: вони шифруються та виходять із gateway контрольованим шляхом 🔒

Але іноді треба звернутись до конкретного resolver, наприклад до 8.8.8.8 🌐.

Тут DoH не завжди підходить: конкретний DNS-сервер може не підтримувати його або потрібна саме його відповідь.

Тому в gateway є дві гілки 🔀:

• DNS на стандартні адреси → локальний DoH relay;
• DNS на конкретну адресу → перехоплення через TPROXY → UDP-to-TCP relay → потрібний resolver.

Так запит від програми виглядає для неї звичайним UDP DNS, але gateway сам вирішує, як доставити його далі 🛡 ⚙️ 🚀

Далі — трохи магії iptables і TPROXY.