############################################################################################# ###################################### FRONT THE SCENE ###################################### ################################### Clube dos Mercenarios ################################### ############################################################################################# Desenvolvido: Ygor da Rocha Parreira. Nickname: dmr e-mail: dmr@frontthescene.com.br Data: 26/05/2003 Este e outros tutoriais podem ser obtidos em: http://www.frontthescene.com.br/ http://cdm.frontthescene.com.br/ http://br.groups.yahoo.com/group/clube_dos_mercenarios/ (historico) http://br.groups.yahoo.com/group/frontthescene/ (historico) - Todas as informacoes e exemplos contidos nesse tutorial possuem somente propositos educacionais.Nao nos responsabilizamos pelo mau uso do mesmo. - Ps.: Script kiddies(defacers), Crackers e Analistas de Seguranca sem escrupulos, KEEP OUT!! ;) ********************************************* * Criando um tunel dentro de trafego HTTP * ********************************************* ------------------------------------------INDICE--------------------------------------------- 1 - INTRODUCAO. 2 - MODELO OSI x TCP/IP. 2.1 - Transporte em Camadas. 2.2 - Encapsulamento de Dados. 3 - HTTP TUNNEL. 3.1 - Entendendo o que esta acontecendo. 4 - AGRADECIMENTOS. ---------------------------------------------------------------------------------------------- ---------------- 1 - INTRODUCAO. | ---------------- Em muitos lugares onde temos acesso a internet este acesso é limitado à apenas paginas de Internet (porta 443[https] e porta 80 [http]). Com isto ficamos impedidos de usar outros servicos que precisamos e que a internet nos disponibiliza como e-mails (porta 25 [SMTP] e 110 [POP3]), Acesso remoto (porta 22 [SSH] e 23[Telnet]), trasferencia de arquivos (porta 21 e 20 [FTP]) dentre outros servicos. Esta limitacao geralmente é feita por algum firewall ou proxi/NAT (dNAT e sNAT). Felizmente a forma como as informacoes trafegam numa rede TCP/IP nos permite encapsular os dados dentro de outros protocolos, com isto, nos possibilitando burlar a protecao feita por estes firewalls/proxis. Antes de ir-mos para a parte pratica iremos entender um pouco mais de como funciona a troca de dados entre equipamentos numa rede "conversando" TCP/IP. _________________________ 2 - MODELO OSI x TCP/IP. | ------------------------- O Modelo criado pela ISO, modelo de referência OSI é bem parecido de como funciona o modelo TCP/IP, criado pelo Departamento de Defesa dos Estados Unidos (DoD), iremos ver logo abaixo uma comparacao entre os 2 modelos. Modelo de Referencia OSI Modelo de Referencia TCP/IP +-----------------+ +------------------+ | Aplicacao(7) | | | +-----------------+ | | | Apresentacao(6) | | Aplicacao | +-----------------+ | | | Sessao(5) | | | +-----------------+ +------------------+ | Transporte(4) | | Transporte | +-----------------+ +------------------+ | Rede(3) | | Rede | +-----------------+ +------------------+ | Enlace(2) | | Host | +-----------------+ | a | | Fisica(1) | | Rede | +-----------------+ +------------------+ Comparando estes modelos vemos algumas diferencas, dentre elas temos. - O TCP/IP combina os aspectos das camadas de apresentação e de sessão dentro da sua camada de aplicação. - O TCP/IP combina as camadas física e de enlace do OSI em uma camada. - Os protocolos do TCP/IP são os padrões em torno dos quais a Internet se desenvolveu, portanto o modelo TCP/IP ganha credibilidade apenas por causa dos seus protocolos. Em contraste, nenhuma rede foi criada em torno de protocolos específicos relacionados ao OSI, embora todos usem o modelo OSI para guiar seu raciocínio. _____________________________ 2.1 - Transporte em Camadas. | ----------------------------- A medida em que os dados descem as camadas eles sao emcapsulados em protocolos, sao acrescidos de um cabecalho e recebem um nome especifico (Segmento/Datagrama, Pacote, Quadro, Bits). Podemos ver abaixo o tratamento dos dados entre as camadas na comunicacao entre hosts. Comunicacao Ponto a Ponto Host A Host B +---------------+ +---------------+ | Aplicacao | <===============================> | Aplicacao | +---------------+ +---------------+ | Apresentacao | <===============================> | Apresentacao | +---------------+ +---------------+ | Sessao | <===============================> | Sessao | +---------------+ +---------------+ | Transporte | <========== Datagrama ==========> | Transporte | +---------------+ +---------------+ | Rede | <=========== Pacote ============> | Rede | +---------------+ +---------------+ | Enlace | <=========== Quadro ============> | Enlace | +---------------+ +---------------+ | Fisica | <============ Bits =============> | Fisica | +---------------+ +---------------+ Os dados sao tratados pelas camadas equivalentes entre os hosts, os datagramas formados no host A (layer 4) sao tratados pela camada de transporte no host B. _______________________________ 2.2 - Encapsulamento de Dados. | ------------------------------- Veremos agora como é feito o encapsulamento dos dados na comunicacao entre 2 hosts. Origem Destino +--------------+ +-----+ +--------------+ | Aplicacao | |Dados| | Aplicacao | +--------------+ +-----+ +--------------+ | Apresentacao | | | | Apresentacao | +--------------+ | | +--------------+ | Sessao | | | | Sessao | +--------------+ | | +--------------+ | Transporte | | | | Transporte | +--------------+ ++-----+--------------+ +--------------+ | Rede | ||Dados|Cabecalho Rede| | Rede | +--------------+ +---++-----+--------------+----------------+ +--------------+ | Enlace | |CRC||Dados|Cabecalho Rede|Cabecalho Quadro| | Enlace | +--------------+ +---++-----+--------------+----------------+ +--------------+ | Fisica | |010101101001010110010110010101010101010101| | Fisica | +--------------+ +------------------------------------------+ +--------------+ || || || || =======>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==>==> Podemos notar que em cada camada em que os dados passao, eles sao encapsulados em protocolos e os dados da camada de cima (Inclusive o cabecalho da camada de cima) é inserido no campo de DATA da camada de baixo. A ideia do tunnelamento dentro do HTTP é transportar os dados de outra aplicacao (inclusive o protocolo usado, nao importando se ele esta na camada de Aplicacao tambem) encapsulados dentro do HTTP, com isso conseguindo usar outros servicos. Agora iremos mostrar como criar uma conexao virtual de dados bidirecional tunnelada dentro de requisicoes HTTP, podendo assim burlar a fraca seguranca de firewalls/proxis que apenas liberao acesso a paginas web... :) _________________ 3 - HTTP TUNNEL. | ----------------- Bom pessoal, para se criar um HTTP Tunneling primeiramente voce precisara de uma shell permanente na internet que tenha acesso full a internet. Colocarei abaixo as maquinas e sua estrutura de acesso baixo para um melhor entendimento. Host A +-------------+ | | |free.leeto.br| | | +-----++------+ || || || +--------++--------+ | | | Nuvem da | | Internet | | | +--------++--------+ || || || +------++------+ | | | F1.proxi.br | | | +------++------+ || || || +------++------+ | | |block.proxi.br| | | +--------------+ Bom pessoal, nós estamos em block.proxi.br e o unico acesso a internet que temos é atravez do proxi F1.proxi.br o qual so libera acesso HTTP na porta 3128 (confira em /etc/services de algum linux). Agora precisamos de um software mantido por Lars Brinkhoff o qual nos possibilitara criar o HTTP Tunneling. Va até http://www.nocrew.org/software/httptunnel.html e pegue o httptunnel para que possamos prosseguir. É um software licenciado pela GNU e tem versoes (incluindo os fontes) para varios OSs como Linux, Win32 e WinNT...:) Apos cata-los no site compile e instale-os (pra linux use os velhos conhecidos ./configure; make; make install), se for pra NT/Win32 so descompacteo num diretorio qualquer, a sintaxe é a mesma tanto pra NT/Win32 quanto pra Linux. Faca isso tanto na maquina local (block.proxi.br) quanto na remota com acesso full (free.leeto.br). O nosso objetivo é acessar o servico SSH na maquina remota (port 22, veja /etc/services). Bom, na maquina free.leeto.br faca.: hts -F localhost:22 8000 E na maquina block.proxi.br faca.: htc -F 2222 -P F1.proxi.br:3128 free.leeto.br:8000 Para se acessar o servico faca.: ssh -p 2222 block.proxi.br _________________________________________ 3.1 - Entendendo o que esta acontecendo. | ----------------------------------------- Vamos comecar a analizar o pacote na origem (block.proxi.br). O pacote de inicio de conexao SSH (tcp/22, pacote Syn) desce a pilha de protocolos e sobe novamente enderecado localmente para a port 2222 da maquina local. Quando esse pacote chega na camada de aplicacao da maquina local o htc pega esse pacote e manda pra free.leeto.br na porta 8000 atravez de F1.proxi.br Quando o pacote chega em free.leeto.br ele é redirecionado localmente para a porta tcp/22 (SSH) o qual ja deve estar com o servico previamente configurado. Assim é aberta a conexao SSH com free.leeto.br, e os outros pacotes de conecao (SYN/ACK, ACK, FIN, etc) trafegam bidirecionalmente num tunnel encapsulado dentro de HTTP... :) Veremos abaixo o esquema dos pacotes durante o trafego entre as maquinas. +-------+ -tcp/2222(Syn)-DAInterna-> +-------+ <-tcp/22(Syn)-DAExterna-+-------+ | | <-tcp/2222(Syn)-DAInterna- | | -tcp/22(Syn)-DAExterna->| | |Interna| ==>==>==>==>==>==>==>==>==>==>==>==>==>==>| Proxi |==>==>==>==>==>==>==>==>==>|Externa| | | -tcp/8000(Syn)-DAExterna-HopEmPoxi:3128-> | | -tcp/8000(Syn)-DAExterna->| | +-------+ +-------+ +-------+ Podemos notar que mesmo o pacote saindo com o DA (Destination Address) da maquina local o pacote precisa descer as camadas do modelo de referencia TCP/IP para que ele seja tratado pela camada de aplicacao (Que no caso esta sendo tratado pelo htc e pelo hts) como um pacote qualquer... :) Esses pacotes trafegao bidirecionalmente e o controle de socks é feita pelo hts e htc. Voce poderia tambem redirecionar o trafego em free.leeto.br na porta 110 para o seu servidor POP3 e assim acessar seus e-mails usando o protocolo POP3 encapsulado, o mesmo pode ser feito para varios outros protocolos, podemos acessar IRC e muitas outras coisas...:) ____________________ 4 - AGRADECIMENTOS. | -------------------- Pirmeiramente gostaria de agradecer a Deus e a meus amigos (que sao minha familia), valeu pela forca pessoal, por varias vezes que pensei em desistir voces estavam la pra me ajudarem. E gostaria de agradecer a todo movimento do software livre que lutam por um mundo melhor. Hacking Etico Sempre :)