Configurando serviço SSH oculto

Dando continuidade ao tema hidden services, Configurando serviço de http oculto para Tor usando Apache Web Server, daremos prosseguimento com o processo de ocultação de serviço, mas a bola da vez será o SSHD. SSHD ou OpenSSH Daemon, é o daemon para o programa ssh. Entretanto, outros programas como rlogin e rsh substituem o programa cliente e fornecem uma comunicação segura entre dois hosts confiáveis sobre uma rede insegura.

Primeiro iremos editar o arquivo torrc e adicionar a configuração necessária para o daemon sshd. Importante a leitura do primeiro artigo para o endentimentos dos parametros HiddenServiceDir e HiddenServicePort. Em seguida, precisaremos reiniciar/inicar o serviço Tor e obtermos o nosso hostname.

Nota mental: Como o nome é gerado a partir do par de chaves disponibilizado para o serviço oculto, é claro que cada HiddenService terá sua URL particular.

HiddenServiceDir ./tmp/ssh

HiddenServicePort 22 127.0.0.1:22

Qual o hostname ?

ncaio@notebook:~/tor-browser$ cat tmp/ssh/hostname
26qfpx2ahq7trree.onion

Assim o nosso sshd pode ser executado sem alterações extras no arquivo /etc/ssh/sshd.conf. Tome as precauções necessárias para ter um nível aceitável de segurança no sshd, mude a porta se achar prudente e deixe o serviço ouvindo apenas em localhost. Apenas lembre de replicar as mudanças de portas no torrc.

A configuração do lado servidor é tranquila. Já a do lado cliente, se faz necessário o uso de um middleware. Um programa escrito na linguagem de programação C por Shun-ichi GOTO, em junho de 2000, é o responsável no lado cliente de estabelecer conexões usando SOCKS 4/5 e HTTP como túnel. Isso é tudo que precisamos para conectarmos de forma anônima e resolver o endereço .onion via rede Tor.

–> Connect.c <–

Compilando e dando permissão de execução:

$ gcc connect.c -o connect

# chmod +x connect

Testando o connect:

Conectados na rede Tor iremos fazer um teste simples, utilizar o connect para de forma anônima criar uma conexão com um destino qualquer na porta 80, protocolo TCP.

bash-4.2# ./connect -S localhost:49864 http://www.google.com 80

Onde:

-S <– Conexão do tipo SOCKS – Por padrão a versão 5 é utilizada.

localhost:49864 <– Endereço do cliente Tor e sua porta SOCKS – Vide a imagem 1.

http://www.google.com <– Endereço destino.

80 <– Porta destino.

Você deverá ter um resposta do tipo:

bash-4.2# ./connect -S localhost:49864 http://www.google.com 80

GET / HTTP/1.1 <– você precisa digitar

HTTP/1.1 302 FoundLocation: http://www.google.ru/Cache-Control: privateContent-Type: text/html; charset=UTF-8

picture28

Imagem 1 – Uma forma de pegar as configurações Tor é consultando as propriedades do seu navegador seguro.

Configurando o cliente ssh:

No nosso caso, usaremos o usuário ncaio como exemplo. Perceba que teremos que fazer o seguinte dentro do home do usuário, editar ou criar o arquivo config (~/.ssh/config) e adicionando 2 parâmetros:

HOST      26qfpx2ahq7trree.onion

ProxyCommand  /tmp/connect -S localhost:49864 %h %p

Onde HOST é o endereço destino na rede Tor e ProxyCommand passamos o programa connect e suas opções de uso.

Testando o cliente SSH:

ncaio@notebook:~$ ssh 26qfpx2ahq7trree.onion

Se tudo ocorrer bem, você receberá a mensagem de fingerprint.

Assim como no post anterior, segue o material complementar em vídeo.

Advertisements

Configurando serviço de http oculto para Tor usando Apache Web Server

INTRODUÇÃO

The onion router permite que clientes e repetidores ofereçam serviços ocultos. O anonimato do endereçamento IP é o objetivo principal, já que o mesmo não pode ser revelado a origem. Este fato agrega valores de segurança da informação, tal como ao desenvolver um ataque de negação de serviço, a rede invasora não terá um destino estático, além de desconhecê-lo. Podemos também citar como exemplo uma empresa que pretende esconder segredos comerciais e precisa de um canal seguro de comunicação entre seus fornecedores, cliente e investidores. Mas se não revelo meu endereço IP, como o serviço oculto é acessado? Simples. Os serviços ocultos são acessados através do pseudo domínio: .onion TLD. O .onion é um hash de 16 caracteres (alpha-semi-numeric) que é gerado automaticamente baseado em uma chave pública quando um novo serviço oculto é configurado.  Esta técnica é também conhecida como Tor rendezvous points.

Podemos fazer uma pequena observação: é claro que os serviços ocultos manterão as suas falhas “naturais”. A versão do Word Press 3.4 tem uma falha de segurança que permite ataques XSS e o fato da aplicação rodar de forma oculta, não deixará imune a falha.

Iremos simular neste documento a ocultação do serviço http provido pelo Apache Web Server. Não iremos tratar da instalação do Tor e nem outro serviço, tal como o próprio Apache Web server. Todos os exemplos foram realizados em um notebook com a distribuição Gnu Linux Slackware 13.37- x86_64. Mas acredito que este documento seja facilmente adaptado para outras distribuições. E recomendo a leitura da introdução a invisible web.

Configurando o Tor

Existem 2 formas de configuração, gráfica via Vidalia e edição direta do arquivo de configuração torrc. Vamos adotar neste procedimento o segundo formato. Primeiro localize o seu arquivo torrc, geralmente encontrado no /etc/tor ou /path/tor-browser_xx-xx. O comando find e o locate são de grande ajuda neste momento.

Para o nosso caso teremos 2 parâmetros, uma linha HiddenServiceDir e uma ou mais linhas HiddenServicePort.

HiddenServiceDir: É o diretório onde o Tor irá armazenar informações sobre o serviço oculto. Um arquivo de nome hostname, contendo a URL .onion e um conjunto de chaves pública e privada para seu serviço oculto. O arquivo é o private_key. Claro, não compartilhe este arquivo com ninguém, caso queira manter seu serviço oculto.

HiddenServicePort: Determina uma porta virtual seguido de endereço IP e porta onde as conexões serão direcionadas quando o destino for a porta virtual.

Então adicionaremos as seguintes linhas ao arquivo:

HiddenServiceDir ./tmp/www
HiddenServicePort 80 127.0.0.1:80

Caminho de armazenamento e configuração das portas. Neste momento se faz necessário o reinicio do Tor, se tudo ocorrer bem, você terá o diretório www criado no caminho informado no HiddenServiceDir. Nele você encontrará os arquivos hostname e private_key, assim como ilustra imagem 1. Com isto já temos em mãos o endereço .onion do nosso serviço oculto, essencial para o nosso próximo passo.

$ cat hostname
m5lizi7a7nm3kjqf.onion

picture26

Imagem 1 – Arquivos criados após a configuração e reinicio do Tor.

Configurando o Apache Web Server

Aqui basicamente iremos criar um virtual host para o nosso endereço oculto. Segue o exemplo da configuração do ServerName m5lizi7a7nm3kjqf.onion. Onde o DocumentRoot é onde se encontra o meu blog ou o site da minha empresa.

<VirtualHost 127.0.0.1:80>
ServerName  m5lizi7a7nm3kjqf.onion
DocumentRoot /tmp/Tor/
<Directory />
AllowOverride none
Require all granted
</Directory>
</VirtualHost>

Com o virtual host configurado, é preciso iniciar ou reiniciar o servidor web. Para testar se o serviço está oculto iremos passar a URL encontrada no arquivo hostname para um navegador que esteja utilizando a rede Tor. O resultado deverá ser o conteúdo do DocumentRoot informado, assim como na imagem 2.

picture27

Imagem 2 – http://m5lizi7a7nm3kjqf.onion/

Para concluir, segue um vídeo exemplo dos procedimentos aqui mencionados.