Como configurar o apache para se comportar como um navegador remoto?

2

Para o meu projeto de verão de classe de segurança de TI, temos que trabalhar em maneiras diferentes de contornar a configuração de medidas de segurança em uma rede de empresa / escola e explicar como esses hacks podem ser detectados e evitados.

Um dos tópicos é (por favor, desculpe minha pobre tradução):

Albert is connected with his laptop to the school network. He only has access to the world wide web through the school filtering proxy. This proxy is configured to only allow HTTP (TCP 80) and HTTPS (443) requests and some websites (say www.forbidden-forum.com) are filtered out. ICMP echo request/replies are allowed.

What tricks could Albert use to access www.forbidden-forum.com from the school network ? How as a network & system administrator would you detect/prevent those tricks ?

Agora, eu não peço respostas para esse exercício aqui (isso iria derrotar todo o meu ponto de entrar neste curso e não me ensinaria nada).

Até agora, pensei nos seguintes truques:

  • Usando um túnel ICMP. Pode ser detectado facilmente monitorando uma quantidade anormalmente alta de quadros ICMP.
  • Compartilhe a conexão com a internet de um celular. Difícil de detectar, especialmente se o administrador não tiver direitos administrativos sobre os computadores dos alunos.
  • Usando uma VPN pela porta TCP 443. Pode ser detectado pelo monitoramento de uma quantidade anormalmente alta de tráfego para um determinado host (o servidor VPN), mas é difícil porque pode ser um tráfego legítimo. O administrador pode tentar se conectar ao mesmo host usando um navegador da Web e, no entanto, pode detectar que ele não é um servidor da Web adequado.
  • Tenha um servidor da web externo que atue como navegador remoto que redirecione tudo para o www.forbidden-forum.com.

A minha pergunta é, na verdade, sobre este último ponto. Eu acho que é possível ter um software que faz isso, mas teria que:

  • conecte-se a www.forbidden-forum.com sob demanda
  • substitua todos os URLs no documento de resposta / código de javascript para remapear para si mesmo, de modo que o computador de Albert nunca tente acessar diretamente o site www.forbidden-forum.com.
  • seja capaz de traduzir os URLs substituídos para suas contrapartes originais.

Eu realmente adoraria poder demonstrar este PoC durante a apresentação do projeto na rede de convidados da escola (que tem restrições semelhantes), mas eu realmente gostaria de evitar ter que "desenvolver" algo por conta própria.

Minhas habilidades de desenvolvedor não são tão boas assim e eu me pergunto: existe um software que faz algo assim? Talvez um módulo ou configuração do apache?

    
por ereOn 02.07.2013 / 09:58

2 respostas

1

É chamado de proxy reverso e requer mod_proxy carregado.

As diretivas de configuração são:

ProxyPass /localpath http://remote-site.example.com:8080/remotepath
ProxyPassReverse /localpath http://remotesite.example.com:8080/remotepath
ProxyPassReverseCookieDomain remote-site.example.com proxy.fully.qualified.domain.com
ProxyPassReverseCookiePath /remotepath /localpath

Então, para o seu exemplo (mais um pouco extra):

ProxyPass /ff http://www.forbidden-forum.com/
ProxyPassReverse /ff http://www.forbidden-forum.com/
ProxyPassReverseCookieDomain www.forbidden-forum.com benign.proxy.com
ProxyPassReverseCookiePath / /ff
ProxyPass /wl http://wikileaks.org/
ProxyPassReverse /wl http://wikileaks.org/
ProxyPassReverseCookieDomain wikileaks.org benign.proxy.com
ProxyPassReverseCookiePath / /wl

Abrir http://benign.proxy.com/ff mostrará o conteúdo de http://www.forbidden-forum.com/ e http://benign.proxy.com/wl abrirá http://wikileaks.org/ .

Sirva algo completamente inócuo (e acreditável) em http://benign.proxy.com/ . Se alguém tentar "verificar a validade", verá uma página confiável.

E, melhor ainda, atenda o proxy por HTTPS para ocultar os URLs encaminhados (que deixarei como um exercício para você).

Esse método pode ser contornado pelo chamado "bump in the wire" - um proxy transparente man-in-the-middle totalmente confiável.

Se o usuário não tiver controle total sobre o host do cliente, ele ficará vulnerável a uma colisão, mas poderá verificar manualmente as impressões digitais para garantir a privacidade e evitar estabelecer uma conexão se a chave não verificar.

O usuário também precisará prestar atenção a outros problemas de SSL (por exemplo, certificados inválidos, sslstrip etc.).

    
por 02.07.2013 / 11:01
0

O que você está descrevendo é basicamente um proxy em si; um software que recebe solicitações da web de um navegador, as satisfaz e passa os dados recebidos de volta para o navegador. Todo o problema com a reescrita da URL é evitado com o navegador pré-ciente de que está se conectando à web por meio de um proxy. A questão então simplifica para "como eu acesso a um proxy, dado o acesso de rede que eu tenho, de tal forma que não seja fácil detectá-lo".

O Apache tem esse módulo, e as pessoas perguntaram sobre isso antes; veja, por exemplo, Como usar o Apache como proxy para o navegador? mais detalhes.

    
por 02.07.2013 / 10:54