---------------, TCP-IP Parte 1 | ---------------' 0. Pre-introducao Este manual foi baseado no numero 33 da phrack, originalmente em ingles, entao nao repare se muita coisa tiver sido traduzida. Muitas coisas traduzi, e tambem acrescentei, retirei e tentei explicar algumas coisas com minhas proprias palavras, jah que nenhuma traducao pode ser feita ao pe da letra. Com o tempo irei enchendo este tutorial com informacoes uteis para voce, newbie, assim como eu que tambem sou newbie (alias, nunca deixarei de ser newbie pq eh muito bom vc ficar sempre atras de aprender algo novo). Prometo tambem uma parte 2, referente ao numero 34 da phrack, com mais informacoes valiosas! Por enquanto vao ter q se contentar com este tutorial, que creio, serah de valiosa importancia aqueles que levam o hacking a serio, e acima de tudo, querem aprender mais e mais. 1. Introducao Neste tutorial nos focalizamos os pontos mais salientes do TCP/IP. Omitimos informacoes sobre a origem, sua historia, e diversas informacoes tecnicas. O que sobra eh um minimo de informacao necessaria para um profissional trabalhando com o mundo TCP/IP. Isso inclui o administrador de sistemas, o programador de sistemas e o administrador de redes. Os exemplos usados aqui sao voltados para o ambiente UNIX. Se voce precisa de informacoes maiores sobre um protocolo especifico, pesquise nos RFC's da vida, voce ira encontrar em http://www.protocols.com. 2. Visao geral O termo TCP/IP genericamente se refere tudo que se relaciona aos protocolos TCP e IP. Isso inclui aplicativos, outros protocolos, etc. Exemplos de protocolos: UDP, ARP, ICMP. Exemplos de aplicativos: TELNET, FTP, e rcp. 2.1 Estrutura basica ---------------------------- | aplicativos de rede | | | |... \ | / .. \ | / ...| | ----- ----- | | |TCP| |UDP| | | ----- ----- | | \ / | | -------- | | | IP | | | ----- -*------ | | |ARP| | | | ----- | | | \ | | | ------ | | |ENET| | | ---@-- | ----------|----------------- | ----------------------o--------- Cabo Ethernet Figura 1. Basico No de rede TCP/IP Esta eh uma estrutura logica de camadas de protocolos dentro de um computador da internet. Cada computador que pode se conectar a internet tem uma estrutura semelhante a esta. O cabo horizontal eh um cabo ethernet, mas pode ser uma linha telefonica, fibra optica ou outra tecnologia disponivel. O "o" eh o transceiver, o @ eh o endereco ethernet, e o * eh o endereco IP. O entendimento desta estrutura eh essencial! 2.2 Terminologia O nome do dado que viaja pela internet depende muito do protocolo em que eh implementado. Se eh uma rede Ethernet, eh um frame Ethernet. Se estah entre um driver Ethernet e um modulo IP, eh um pacote IP. Se estah entre um modulo IP e um modulo UDP, eh chamado de datagrama UDP. Se estah entre um modulo IP e um modulo TCP, eh chamado de segmento TCP. Estas definicoes sao imperfeitas, Verifique o RFC 1122, secao 1.3.3. Um driver eh um software que se comunica diretamente com a interface do hardware de rede. Um modulo eh um software que se comunica com um driver, com aplicativos de rede e com outro modulo. 2.3 Fluxo de dados Vamos seguir os dados a medida que eles vao descendo pela figura 1. Para um aplicativo que usa TCP (Transmission Control Protocol), os dados passam entre o aplicativo de rede e o modulo TCP. Para um aplico que usa UDP (Use Datagram Protocol), os dados passam enter o aplicativo e o modulo UDP. FTP (File Transfer Protocol) eh um tipico exemplo de aplicativo que usa TCP. Os protocolos usados sao FTP/TCP/IP/ENET. SNMP (Simple Network Management Protocol) eh um aplicativo que usa UDP. Os protocolos usados sao SNMP/UDP/IP/ENET. Os modulo TCP, UDP e os drivers Ethernet sao multiplexadores n para 1. Como multiplexadores, eles ordenam muitas entradas para uma saida. Eles tambem sao desmultiplexadores 1 para n, ordenando as saidas dependendo do tipo que sao. 1 2 3 ... n 1 2 3 ... n \ | / | \ | | / ^ \ | | / | \ | | / | ------------- fluxo ---------------- fluxo |multiplexador| de |desmultiplexador| de ------------- dados ---------------- dados | | | | | v | | 1 1 Figura 2. multiplexador n-para-1 e desmultiplexador 1-para-n. Quando um frame Ethernet passa pelo driver Ethernet, ele pode seguir adiante para o modulo ARP ou o modulo IP. Se um pacote IP passa pelo modulo IP, ele deve seguir entao para o modulo TCP ou UDP, conforme for o valor do campo protocolo dentro do cabecalho IP. Depois disso, se eh UDP ou TCP, ele ira para o aplicativo que estiver ouvindo a porta especificada pelo campo porta dentro do cabecalho UDP ou TCP, conforme for. A multiplexacao inversa eh o processo inverso, nao ha misterio. Cada modulo de protocolo acrescenta ao pacote seu cabecalho de forma que possa ser desmultiplexado no destino. Os dados que saem dos aplicativos e que atravessam o TCP ou o UDP con vergem todos no modulo IP e eh enviado adiante por uma camada de rede mais inferior. Usamos como camada fisica um frame Ethernet porque eh o mais popular para se trabalhar com o IP. Um endereco Ethernet de 6 bytes eh unica para cada interface numa rede Ethernet. Um computador tambem tem um endereco IP de 4 bytes. Este endereco eh unico para uma Internet, e obviamente, qualquer computador sabe seu endereco IP e Ethernet. 2.4 Duas interfaces de rede Se um computador estah conectado a 2 Ethernet's separadas, como na figura abaixo.. ---------------------------- | aplicativos de rede | | | |... \ | / .. \ | / ...| | ----- ----- | | |TCP| |UDP| | | ----- ----- | | \ / | | -------- | | | IP | | | ----- -*----*- ----- | | |ARP| | | |ARP| | | ----- | | ----- | | \ | | / | | ------ ------ | | |ENET| |ENET| | | ---@-- ---@-- | ----------|-------|--------- | | | ---o--------------------------- | Cabo Ethernet 2 ---------------o---------- Cabo Ethernet 1 Figura 3. Noh de rede TCP/IP com 2 Ethernet's Na figura acima voce pode observar que este computador tem 2 enderecos Ethernet's e 2 enderecos IP. Quando um computador se interliga em duas redes totalmente distintas, o chamamos de No de rede, como se estivessemos dando um no em duas cordas diferentes. Vimos que para computadores com uma interface fisica de rede, o modulo IP eh simultaneamente um multiplexador n para m e um demulti- plexador m para n. 1 2 3 ... n 1 2 3 ... n \ | | / | \ | | / ^ \ | | / | \ | | / | ------------- fluxo ---------------- fluxo |multiplexador| de |de-multiplexador| de ------------- dados ---------------- dados / | | \ | / | | \ | / | | \ v / | | \ | 1 2 3 ... m 1 2 3 ... m Figura 4. multiplexador n para m e demultiplexador m p/ n Ele realiza esta multiplexacao em qualquer direcao para permitir dados indo e voltando. Um modulo IP com mais de uma interface de rede eh mais complexo que nosso exemplo anterior no qual ele pode passar os dados para a rede seguinte. Dados podem chegar de qualquer interface de rede e ser retransmitidos para qualquer outra. TCP UDP \ / \ / -------------- | IP | | | | --- | | / \ | | / v | -------------- / \ / \ dados dados chegam saem aqui aqui Figura 5. Exemplo de Retransmissao IP de Pacotes IP (IP Forwarding) O processo de enviar um pacote IP para outra rede eh chamado de "IP forwarding" ou redirecionamento de pacotes IP. Um computador que eh dedicado a esta tarefa de redirecionar pacotes IP eh chamado de IP-router, ou roteador. Como voce pode ver desta figura, o pacote IP retransmitido toca os modulos TCP e UDP no roteador. Algumas implementacoes de roteadores nao tem um modulo TCP ou UDP. Neste caso, os equipamentos desempenham a tarefa mais rapido. 2.5 IP cria uma rede logica simples. O modulo IP eh o centro de todo o sucesso da tecnologia da internet. Cada modulo ou driver adiciona seu cabecalho na mensagem a medida que ela desce de nivel de protocolos. Cada modulo ou driver retira o cabecalho correspondente da mensagem a medida que ela sobe o o nivel de protocolos em rumo ao aplicativo. O cabecalho IP contem o endereco IP, que constroi uma simples rede logica apartir de multiplas redes fisicas. A intercomunicacao das redes fisicas eh a origem do nome: internet. Um conjunto de redes interconectadas fisicamente que simula uma apenas eh o que chamamos de internet. 2.6 Independencia da rede fisica O IP esconde o hardware da rede dos aplicativos de rede. Se voce inventar um novo tipo de rede fisica, voce pode coloca-la em funcionamento implementando um novo driver que conecta sua rede a internet utilizando o IP. Assim, aplicativos de rede ficam intactos e nao sao vuneraveis a mudancas na tecnologia do hardware. 2.7 Interoperabilidade (Compatibilidade) Se dois computadores na internet podem se comunicar, entao diz-se que eles sao interoperados. Se uma implementacao da tecnologia da internet eh boa, ela eh dita ter interoperabilidade. Usuarios de computadores pessoais se beneficiam da instalacao de uma internet devido a interoperabilidade com os computadores do mercado. (Bah) Bem, por enquanto eh o que posso disponibilizar o mais rapido possivel, mas em breve estarei divulgando a parte 2 e a parte 3 e mais textos. Agradeco a todos do Unsekurity Team e aqueles que sejam beneficiados pelo conhecimento que vemos transmitindo. Phrack Volume Three, Issue Thirty-Three, File 8 of 13 3. Ethernet Um frame Ethernet contem o endereco de destino, o endereco de origem, o tipo de dado e o dado propriamente dito. Os enderecos Ethernet tem 6 bytes, e cada ponto Ethernet tem seu proprio endereco Ethernet que le frames Ethernet cujo destino tem seu endereco. Alem de ler frames Ethernet cujo destino eh si mesmo, todos os pontos Ethernet leem tambem quaisquer pacotes cujo endereco destino eh FF-FF-FF-FF-FF-FF, tambem conhecido como broadcast address (eh como se fosse um endereco que atingisse a todos os pontos ethernet). A tecnologia Ethernet usa CSMA/CD (Carrier Sense and Multiple Access with Collision Detection). CSMA/CD significa que todos os pontos ethernet comunicam-se num unico meio, que pode transmitir um por vez, e que todos eles podem receber simultaneamente. Se dois pontos tentam transmitir ao mesmo instante, uma colisao de transmissao eh detectada, e ambos os pontos esperam um periodo de tempo aleatorio (porem curto) antes de tentar transmitir novamente. 4. ARP Quando enviamos um pacote IP, como saber qual o destino Ethernet ? ARP significa Address Resolution Protocol, ou Protocolo de Resolucao de Enderecos, que eh usado para traduzir o endereco IP para endereco Ethernet. 4.1 Tabela ARP para Traducao de Enderecos. A traducao eh realizada com uma simples olhada numa tabela. Esta tabela, chamada tabela ARP, eh armazenada na memoria e contem uma linha para cada computador. Existe uma coluna para o endereco IP e uma coluna para o endereco Ethernet. Quando a traducao eh feita, a tabela eh buscada por um determinado endereco IP. Temos aqui uma tabela ARP simplificada: ------------------------------------ |IP address Ethernet address | ------------------------------------ |223.1.2.1 08-00-39-00-2F-C3| |223.1.2.3 08-00-5A-21-A7-22| |223.1.2.4 08-00-10-99-AC-54| ------------------------------------ TABELA 1. Tabela ARP exemplificada. A convencao de um endereco Ethernet sao seis numeros em hexadecimal separados por um hifen, ao contrario do endereco IP, que sao 4 numeros decimais separados por um ponto. Uma tabela ARP eh necessaria pois os enderecos IP e Ethernet sao escolhidos independentemente. Assim nao ha nenhum algoritmo para realizar a traducao. O endereco IP eh selecionado pelo administrador de redes, baseando-se na localizacao do computador na internet. Assim, quando o computador muda-se para uma parte diferente da internet, o endereco deve ser mudado. O endereco Ethernet eh selecionado pelo fabricante baseado no espaco dos enderecos Ethernet reservados para si. Quando a parte fisica muda, o endereco Ethernet muda. 4.2 Traducao de Enderecos Em operacao normal, um aplicativo de rede, como Telnet, envia uma mensagem para o TCP, e entao o TCP manda a mensagem TCP correspondente para o modulo IP. O endereco IP do destino eh conhecido pelo aplicativo, o modulo TCP e o modulo IP. Neste ponto, o pacote IP jah foi construido e jah estah pronto para ser entregue ao driver Ethernet, mas antes o endereco Ethernet de destino tem que ser determinado. A tabela ARP eh usada para verificar qual o endereco Ethernet de destino. (Look-up). 4.3 O par Pedido/Resposta ARP Mas como a tabela ARP fica preenchida no primeiro lugar? A resposta eh que ela eh preenchida automaticamente pelo ARP utilizando o conceito 'as-needed' ou como necessario for. Duas coisas acontecem quando a tabela ARP nao pode ser usada para traduzir um endereco: 1. Um pacote ARP de pedido com um endereco Ethernet broadcast eh enviado para a rede para todos os computadores. 2. O pacote IP eh colocado na lista de espera. Todo computador com interface Ethernet recebe o broadcast do frame Ethernet. Cada driver Ethernet examina o tipo de pacote no frame Ethernet e passa o pacote ARP para o modulo ARP. O pacote ARP de pedido diz "Se seu endereco IP combina com o endereco IP de destino deste pacote, entao por favor, diga-me seu endereco Ethernet". O pacote ARP de pedido parece-se com algo assim: --------------------------------------- |Sender IP Address 223.1.2.1 | |Sender Enet Address 08-00-39-00-2F-C3| --------------------------------------- |Target IP Address 223.1.2.2 | |Target Enet Address | --------------------------------------- TABELA 2. Pedido ARP Cada modulo ARP examina o endereco IP e se o Target IP address (Endereco IP alvo) combina com seu proprio endereco IP, ele envia uma resposta diretamente para o endereco Ethernet de origem. O pacote ARP de resposta diz "Sim, este endereco IP alvo eh meu, deixe-me enviar meu endereco Ethernet". Um pacote ARP de resposta tem o campo de remetente/destinatario e parece com algo como: --------------------------------------- |Sender IP Address 223.1.2.2 | |Sender Enet Address 08-00-28-00-38-A9| --------------------------------------- |Target IP Address 223.1.2.1 | |Target Enet Address 08-00-39-00-2F-C3| --------------------------------------- TABELA 3. Resposta ARP A nova tabela, jah renovada, agora parece como esta: ---------------------------------- |IP address Ethernet address | ---------------------------------- |223.1.2.1 08-00-39-00-2F-C3| |223.1.2.2 08-00-28-00-38-A9| |223.1.2.3 08-00-5A-21-A7-22| |223.1.2.4 08-00-10-99-AC-54| ---------------------------------- TABELA 4. Tabela ARP depois da resposta. 4.4 Continuando A nova traducao foi automaticamente instalada na tabela, apenas milisegundos apos ter sido necessaria. Como voce pode lembrar do passo 2 acima, o pacote IP que deveria ser enviado foi mantido na espera. Agora, a traducao do endereco IP para o endereco Ethernet eh realizada por uma 'olhada' (look-up) na tabela ARP e entao o frame Ethernet eh transmitido na Ethernet. Assim, com novos passos 3, 4 e 5, a situacao do computador que estah enviando eh a seguinte: 1. Um pacote ARP de pedido com um endereco Ethernet broadcast eh enviado para a rede para todos os computadores. 2. O pacote IP eh colocado na lista de espera. 3. A resposta do ARP chega com a traducao dos enderecos IP para Ethernet para a tabela ARP. 4. O pacote IP posto em espera tem seu endereco IP traduzido para o endereco Ethernet pela tabela ARP. 5. O frame Ethernet eh transmitido na Ethernet. Resumindo: quando a traducao falta na tabela ARP, o pacote IP eh colocado em espera. Os dados para a traducao eh rapidamente obtido via pacotes ARP de pedido/resposta e o pacote IP anteriormente colocado em espera eh transmitido. Cada computador tem uma tabela ARP separada para cada uma de suas interfaces Ethernet. Se o computador alvo nao existe, nao haverah nenhuma resposta ARP e nenhuma entrada na tabela ARP. O protocolo IP ira descartar os pacotes IP enviados para tal endereco. Os procolos da camada superior nao podem dizer a diferenca entre uma Ethernet quebrada e a ausencia de um computador com o endereco IP alvo. Algumas implementacoes do IP e ARP nao colocam o pacote IP em espera enquanto esperam pela resposta ARP. Em vez, o pacote IP eh descartado e a recuperacao pela perda do pacote eh deixada para o modulo TCP ou o aplicativo de rede que utiliza UDP. Esta recuperacao eh garantida atraves de um time-out e pela retransmissao. A mensagem retransmitida eh enviada com sucesso pela rede pois a primeira copia da mensagem provocou a renovacao da tabela ARP previamente. 6. Fim Bem, este eh o fim.. As informacoes mais importantes, creio, foram a tabela ARP e a nocao de No de Rede.. Mantenham bem isso em mente, e tambem sobre o IP header e que cada protocolo coloca infos nos pacotes.. Quando voce for programar em raw sockets, poderah fazer coisas bastante interessantes. Tambem nao eh necessario falar 'protocolo ip' pq IP jah significa Internet Protocol e IP soh pode ser o protocolo. Igualmente para TCP! E FTP! e etc.. Quando falei em programa FTP, quis dar entender programas que se utilizam do FTP. Bibliografia Phrack Volume Three, Issue Thirty-Three, File 8 of 13 ---------------, Dimitri Vashnov| ---------------'-------, palwaaktaar@bol.com.br | -----------------------'