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

Нужна помощь с кодом и службами Tor

misterX

Grey Team
01.06.2022
278
11
BIT
321
Всем привет товарищи)
В общем у меня сложилась такая вот проблема выход из которой я ищу уже пару дней - надеюсь что кто нибудь поможет. В общем рассказываю:
1. Есть вот такой код на Python при помощи которого я хочу отправить файл по SSH с Windows на сервер с Ubuntu через Tor Hidden Service - на сервере настроен этот сервис и мне был выдан .onion адрес. Его я проверял и подключался к серверу с Kali и так же отправлял файлы через SSH - всё прекрасно работает. Вот сам код
Python:
import paramiko
import socks
import socket

def set_tor_proxy():
    socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050)
    socket.socket = socks.socksocket

def send_file_over_ssh(file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path):
    # Инициализация SSH клиента
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        # Установка прокси для Tor
        set_tor_proxy()

        # Подключение к SSH серверу
        ssh_client.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)

        # Отправка файла по SSH
        with open(file_path, 'rb') as local_file:
            ssh_client.open_sftp().putfo(local_file, remote_path)

    finally:
        # Закрытие соединения
        ssh_client.close()

def main():
    # Указать путь к файлу, который нужно отправить
    local_file_path = "путь на моей машине к файлу-tor-test.txt"
    
    # Указать параметры SSH соединения
    ssh_host = "мой-адрес.onion"
    ssh_port = 22
    ssh_username = "логин"
    ssh_password = "пароль"
    
    # Указать путь на удаленном сервере, куда отправить файл
    remote_path = "/root/tor-test.txt"

    try:
        send_file_over_ssh(local_file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path)
        print(f"File {local_file_path} has been successfully sent to {ssh_host}")
    except Exception as e:
        print(f"An error occurred while sending the file: {e}")

if __name__ == "__main__":
    main()
Но только мне стоит поменять в коде .onion адрес на простой ip сервера - файл тут же отправляется без проблем. На машине Tor запускаю таким образом - был скачал Tor Bundle и в него был помещён obfs4proxy.exe из самого Tor браузера для запуска и работы через мосты( спасибо нашему РКН). Далее в каталоге был создал конфигурационный файл torrc с вот такими настройками:
Код:
ClientTransportPlugin obfs2,obfs3,obfs4 exec C:\Users\Public\Downloads\Tor\Tor-master\data\obfs4proxy.exe
Bridge obfs4 78.46.199.144:60850 E25A56004937F2AA6A7D29BE75D40ED3795F6608 cert=6Uv8tv7TKtatlCXHecScap9Vpsvi/ZVKDTLSlMXZjHs+sDMsdY6XnmBlRlptDINg/4HKDA iat-mode=0
Bridge obfs4 51.83.249.209:28568 0C42A745DD01FE523B15B319033EE167C2209486 cert=FzpSLDhMLpzQYtDI/Rq16xPaQH3WwHVtKy+w2AjqAqNdih/eFgZR6rSmMw76genRf2FkOw iat-mode=0
UseBridges 1
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
SocksPort 9050
DNSPort 53
После всего этого создаю ярлык на сам исполняемый файл tor.exe и указываю в свойствах - объект строку для запуска самого исполняемого файла с файлом конфигурации:
C:\Users\Public\Downloads\Tor\Tor-master\tor\tor.exe -f C:\Users\Public\Downloads\Tor\Tor-master\data\torrc
Сам Tor запускается - в консоли видно что всё в порядке и прогружается до 100% , проверяю в cmd командой netstat -ano | findstr "9050" - ивидно что порт слушает .
Помогите найти и решить в чём может быть проблема! Заранее примного благодарен.
 

misterX

Grey Team
01.06.2022
278
11
BIT
321
Неужели на таком большом и мощном форуме никто не может мне помочь с моим вопросом? Надеюсь всё таки найдутся неравнодушные специалисты :)
 

UserName011

Green Team
01.09.2020
129
2
BIT
542
Предлагаю попробовать вариант . Не видно связи между ssh_client.connect() и socket, где должен быть резолв. Можно так попробовать:

Python:
import paramiko
import socks

def send_file_over_ssh(file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path):
    # Настройка прокси
    sock=socks.socksocket()
    sock.set_proxy(
        proxy_type=socks.SOCKS5,
        addr="127.0.0.1",
        port=9050
    )
    sock.connect((ssh_host, 22))

    # Инициализация SSH клиента
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        # Подключение к SSH серверу
        ssh_client.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password, sock=sock)

        # Отправка файла по SSH
        with open(file_path, 'rb') as local_file:
            ssh_client.open_sftp().putfo(local_file, remote_path)

    finally:
        # Закрытие соединения
        ssh_client.close()

def main():
    # Указать путь к файлу, который нужно отправить
    local_file_path = "путь на моей машине к файлу-tor-test.txt"
  
    # Указать параметры SSH соединения
    ssh_host = "мой-адрес.onion"
    ssh_port = 22
    ssh_username = "логин"
    ssh_password = "пароль"
  
    # Указать путь на удаленном сервере, куда отправить файл
    remote_path = "/root/tor-test.txt"

    try:
        send_file_over_ssh(local_file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path)
        print(f"File {local_file_path} has been successfully sent to {ssh_host}")
    except Exception as e:
        print(f"An error occurred while sending the file: {e}")

if __name__ == "__main__":
    main()
 
Последнее редактирование:

TR1X

Green Team
04.04.2020
214
154
BIT
134
Всем привет товарищи)
В общем у меня сложилась такая вот проблема выход из которой я ищу уже пару дней - надеюсь что кто нибудь поможет. В общем рассказываю:
1. Есть вот такой код на Python при помощи которого я хочу отправить файл по SSH с Windows на сервер с Ubuntu через Tor Hidden Service - на сервере настроен этот сервис и мне был выдан .onion адрес. Его я проверял и подключался к серверу с Kali и так же отправлял файлы через SSH - всё прекрасно работает. Вот сам код
Python:
import paramiko
import socks
import socket

def set_tor_proxy():
    socks.set_default_proxy(socks.SOCKS5, "127.0.0.1", 9050)
    socket.socket = socks.socksocket

def send_file_over_ssh(file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path):
    # Инициализация SSH клиента
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        # Установка прокси для Tor
        set_tor_proxy()

        # Подключение к SSH серверу
        ssh_client.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password)

        # Отправка файла по SSH
        with open(file_path, 'rb') as local_file:
            ssh_client.open_sftp().putfo(local_file, remote_path)

    finally:
        # Закрытие соединения
        ssh_client.close()

def main():
    # Указать путь к файлу, который нужно отправить
    local_file_path = "путь на моей машине к файлу-tor-test.txt"
   
    # Указать параметры SSH соединения
    ssh_host = "мой-адрес.onion"
    ssh_port = 22
    ssh_username = "логин"
    ssh_password = "пароль"
   
    # Указать путь на удаленном сервере, куда отправить файл
    remote_path = "/root/tor-test.txt"

    try:
        send_file_over_ssh(local_file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path)
        print(f"File {local_file_path} has been successfully sent to {ssh_host}")
    except Exception as e:
        print(f"An error occurred while sending the file: {e}")

if __name__ == "__main__":
    main()
Но только мне стоит поменять в коде .onion адрес на простой ip сервера - файл тут же отправляется без проблем. На машине Tor запускаю таким образом - был скачал Tor Bundle и в него был помещён obfs4proxy.exe из самого Tor браузера для запуска и работы через мосты( спасибо нашему РКН). Далее в каталоге был создал конфигурационный файл torrc с вот такими настройками:
Код:
ClientTransportPlugin obfs2,obfs3,obfs4 exec C:\Users\Public\Downloads\Tor\Tor-master\data\obfs4proxy.exe
Bridge obfs4 78.46.199.144:60850 E25A56004937F2AA6A7D29BE75D40ED3795F6608 cert=6Uv8tv7TKtatlCXHecScap9Vpsvi/ZVKDTLSlMXZjHs+sDMsdY6XnmBlRlptDINg/4HKDA iat-mode=0
Bridge obfs4 51.83.249.209:28568 0C42A745DD01FE523B15B319033EE167C2209486 cert=FzpSLDhMLpzQYtDI/Rq16xPaQH3WwHVtKy+w2AjqAqNdih/eFgZR6rSmMw76genRf2FkOw iat-mode=0
UseBridges 1
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
SocksPort 9050
DNSPort 53
После всего этого создаю ярлык на сам исполняемый файл tor.exe и указываю в свойствах - объект строку для запуска самого исполняемого файла с файлом конфигурации:
C:\Users\Public\Downloads\Tor\Tor-master\tor\tor.exe -f C:\Users\Public\Downloads\Tor\Tor-master\data\torrc
Сам Tor запускается - в консоли видно что всё в порядке и прогружается до 100% , проверяю в cmd командой netstat -ano | findstr "9050" - ивидно что порт слушает .
Помогите найти и решить в чём может быть проблема! Заранее примного благодарен.
Это же ssh коннект, разве есть сокет mysite.onion:22 ? Там айпишник и должен стоять
 

misterX

Grey Team
01.06.2022
278
11
BIT
321
Предлагаю попробовать вариант . Не видно связи между ssh_client.connect() и socket, где должен быть резолв. Можно так попробовать:

Python:
import paramiko
import socks

def send_file_over_ssh(file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path):
    # Настройка прокси
    sock=socks.socksocket()
    sock.set_proxy(
        proxy_type=socks.SOCKS5,
        addr="127.0.0.1",
        port=9050
    )
    sock.connect((ssh_host, 22))

    # Инициализация SSH клиента
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        # Подключение к SSH серверу
        ssh_client.connect(ssh_host, port=ssh_port, username=ssh_username, password=ssh_password, sock=sock)

        # Отправка файла по SSH
        with open(file_path, 'rb') as local_file:
            ssh_client.open_sftp().putfo(local_file, remote_path)

    finally:
        # Закрытие соединения
        ssh_client.close()

def main():
    # Указать путь к файлу, который нужно отправить
    local_file_path = "путь на моей машине к файлу-tor-test.txt"
 
    # Указать параметры SSH соединения
    ssh_host = "мой-адрес.onion"
    ssh_port = 22
    ssh_username = "логин"
    ssh_password = "пароль"
 
    # Указать путь на удаленном сервере, куда отправить файл
    remote_path = "/root/tor-test.txt"

    try:
        send_file_over_ssh(local_file_path, ssh_host, ssh_port, ssh_username, ssh_password, remote_path)
        print(f"File {local_file_path} has been successfully sent to {ssh_host}")
    except Exception as e:
        print(f"An error occurred while sending the file: {e}")

if __name__ == "__main__":
    main()
Спасибо, сегодня попробую - только время появилось до тачки добраться)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!