UTILIZE A PESQUISA!

Netcat



O Netcat é uma ferramenta usada para ler e escrever dados em conexões de rede usando o protocolo TCP/IP. Dada sua grande versatilidade, o Netcat é considerado pelos hackers o canivete suíço do TCP/IP, podendo ser usado para fazer desde portscans até brute force.

O nome netcat vem do comando "cat" do Linux. O cat concatena arquivos e envia para a saída padrão (stdout). O netcat faz praticamente o mesmo, porém ao invés de concatenar arquivos, o netcat concatena sockets TCP e UDP.

Como o Netcat funciona

A princípio o Netcat foi lançado para ser um telnet aprimorado. Até então a única utilidade que ele teria seria se conectar a um host.

Porém, como o netcat pega os dados da entrada padrão (stdin) e envia pra outra ponta da conexão, que as escreve na saída padrão (stdout), é possível utilizar ele em conjunto com o shell pra fazer inúmeras coisas.

Por exemplo: na imagem do início do post, o que está sendo feito é um "telnet reverso", no qual, na máquina onde os comandos serão executados, cria-se um servidor com nc ouvindo na porta 1234 e tudo o que chegar no netcat é enviado para o bash, que processa o que chegar e envia para outro servidor netcat ouvindo na porta 5678. Qual a utilidade disso? Aparentemente nenhuma, pois o telnet e o ssh cumprem muito melhor essa função.
Mas o Netcat tem suas utilidades sim, e alguma serão citadas abaixo:

Escaneando portas com o Netcat

Será feita uma tentativa de conexão à um IP ou host e será estipulada as portas da tentativa de conexão:

$ nc -vv localhost -z 1-3000

Aqui serão escaneadas desde a porta 1 até a 10000.

Bruteforce com Netcat

O brute-force é o método de tentativa de obtenção de senhas utilizado quando um cliente se conecta a um host e tenta se logar, utilizando uma sequência de senhas que estão em um arquivo. Ou seja, se eu pegar o Netcat eu posso me CONECTAR ao host e com uma linha de comando, posso completar o comando com a comparação para obtenção das senhas.

$ nc -vv 79 < ~/wordlist.txt > nc_log.log

Perceba, que conectaremos a porta do FINGER(79) e redirecionaremos o conteúdo do arquivo wordlists.txt para essa porta. Quando algum resultado for válido ele será salvo em nc_log.log para que você possa analizar posteriormente.

Sniffer com Netcat

O Netcat pode capturar todo o tráfego de uma rede.

Iremos nos conectar a uma porta e mandar o netcat "dar eco" nela, ou seja, exibir TUDO o que passa por ela. Após isso, é só redirecionar tudo o que o Netcat gravou para um arquivo. Veja a sintaxe, para melhor compreensão:

$ nc -vv localhost 80 > ~/sniffer.log

Transferência de arquivos com Netcat

A vantagem de transferir arquivos usando o Netcat em relação à outros métodos é a velocidade. No entanto, desde que você queira somente transferir um único arquivo, ou uns poucos, o Netcat pode ser uma excelente solução para isso:

Primeiro vamos montar nosso servidor, que ficará esperando uma conexão e direcionaremos sua saída para um arquivo, que chamaremos de arquivo.zip

nc -l 1234 > arquivo.zip

Em seguida, vamos abrir uma conexão com nosso servidor, e direcionaremos um arquivo, por exemplo original.zip, para a entrada padrão desse cliente, da seguinte forma:

nc localhost 1234 < original.zip

Chat simples usando o Netcat

Para isso crie um servidor do netcat e abra uma conexão cliente para essa porta. O que você digitar de um lado, aparecerá do outro.

nc -l 1234

nc localhost 1234

Fazendo Spoof em servidores HTTP

Você pode usar o Netcat para se conectar a um servidor web usando cabeçalhos totalmente personalizados. Você pode adicionar quaisquer USER-AGENT, referer, ou qualquer outra informação de cabeçalho HTTP.

$ nc google.com 80
GET / HTTP/1.1
Host: google.com
User-Agent: Vindex
Referrer: http://tocadoelfo.blogspot.com
Aqui o exemplo do cabeçalho (não em sua totalidade):
HTTP/1.0 200 OK
Content-Type: text/html; charset=UTF-8
Last-Modified: Fri, 02 Jul 2010 21:02:58 GMT
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Expires: Fri, 02 Jul 2010 22:07:19 GMT
Date: Fri, 02 Jul 2010 22:07:19 GMT
Cache-Control: public, max-age=0, proxy-revalidate, must-revalidate
ETag: "73202059-b4d7-4150-bdb0-e42c3bbe0c0b"
Server: GSE
X-Cache: HIT from gw.ifto.edu.br
Via: 1.0 gw.ifto.edu.br (squid/3.0.STABLE16)
Proxy-Connection: close

Clonar partições via rede com o Netcat

Somenta faça isso se realmente souber o que esta fazendo e o que isso significa.

Primeiro, crie um servidor com o Netcat e redirecione a saída dele para o comando dd:

$ nc -l 1234 | dd of=/dev/sda

Em seguida, rode o dd, que vai fazer uma varredura no disco e enviar tudo para a entrada padrão (stdin) do netcat, que se conectará ao servidor previamente configurado:

$ dd if=/dev/sdb | nc localhost 1234

É claro, você precisará estar com os discos desmontados para que o comando funcione. Ha sugestão é usar um LiveCD nas máquina. Nesse nosso caso foi conectado à mesma máquina, mas nada impede que essa conexão se dê via rede ou mesmo via internet.

Criando um servidor web simples com o netcat

Essa técnica é interessante e mostra um pouco mais da interação do shell com o netcat:

$ while true; do nc -l 80 -q 1 < pagina.html; done

Esse comando roda o netcat infinitamente e a cada vez que ele roda, o arquivo pagina.html é enviado para o cliente, no nosso caso o browser, que você pode acessar com o endereço http://localhost

Fonte: Viva o Linux

Como criar uma rede Ad Hoc no Ubuntu

Ja estudamos sobre rede AD Hoc e como criar e configurá-la no Window 7.
Agora veremos como criar no Ubuntu. Retirado e adaptado de http://smash-se.blogspot.com/2009/01/necessidade-faz-o-nerd.html, se alguém se sentir prejudicado por direitos autorais, favor entrar em contato.
Obrigado.
___________________________________________
1) No terminal do Ubuntu digite: sudo apt-get install dnsmasq
___________________________________________
2) Edite o arquivo com de configuração com: "pico /etc/dnsmasq.conf" para que fique como abaixo:

no-resolv
server=200.169.118.22
server=200.169.117.22
interface=wlan0
interface=lo
listen-address=192.168.254.1
listen-address=127.0.0.1
domain=example.com
dhcp-range=192.168.254.50,192.168.254.150,12h
log-queries
log-dhcp
___________________________________________
OBS: Execute "sudo invoke-rc.d dnsmasq restart" após a edição
___________________________________________
3) Crie um script para estabelecer uma rede como no exemplo abaixo:

sudo ifconfig wlan0 down
sudo iwconfig wlan0 mode ad-hoc
sudo iwconfig wlan0 channel 6
sudo iwconfig wlan0 essid "home"
sudo iwconfig wlan0 key 1234567890
sudo ifconfig wlan0 up
sudo ifconfig wlan0 up 192.168.254.1
___________________________________________
OBS: no meu caso (autor deste tutorial) o chamei de "ad-hoc.sh", dei um "chmod 777 ad-hoc.sh" e executei com "sh ad-hoc.sh", como só usarei ele quando precisar, não vou colocar nenhuma configuração para execução automatica ou no arquivo "/etc/network/interfaces"
___________________________________________
4) vamos habilitar o packet forwarding editando com "sudo nano /etc/sysctl.conf" para substituir o valor da linha "net.ipv4.ip_forward=0" para "net.ipv4.ip_forward=1"
___________________________________________
5) crie um script para execução das regras de firewall para o compartilhamento como abaixo:

echo "ativando modulos"
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_REJECT
/sbin/modprobe ipt_MASQUERADE
sleep 5
echo "ativacao dos modulos ok"
#
echo "limpando regras"
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -F -t mangle
/sbin/iptables -X -t mangle
sleep 5
echo "limpeza das regras ok"
#
echo "regra do dhcp"
/sbin/iptables -A INPUT -i wlan0 -p udp --sport 67:68 --dport 67:68 -j ACCEPT
sleep 5
echo "regra do dhcp ok"
#
echo "regra de mascara da rede"
/sbin/iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -j MASQUERADE
sleep 5
echo "regra de mascara da rede ok"
#
echo "salvando as regras"
/sbin/iptables-save > /etc/network/iptables.rules
sleep 5
echo "salvando as regras ok"
___________________________________________

Rede Ad Hoc

A rede ad hoc consiste em uma rede sem fio que não possuem um nó ou terminal especial, no qual um computador distribui a rede para os dispositivos a sua volta.
Ele usada para:
1)Criar uma pequena rede;
2)Compartilhar arquivos;
3)Compartilhar conexão com a internet;
4)Compartilhar impressoras.

Na rede ad hoc os dispositivos se comunicam diretamente entre si, é uma rede no qual dependendo do dispositivo que irá transmitir o sinal os dispositivos tem que estar a uma distância pequena entre si, pois por exemplo, utilizando meu notebook a distância de transmissão do sinal é de aproximadamente 10 a 15 metros, sendo com que existe muita interferência, pois o sinal é fraco. Mas como ja disse depende muito do dispositivo que esta transmitindo o sinal.

Os protocolos são divididos em dois tipos:
Table-driven (Pró-ativo):
Utilizam tabelas de roteamento para manter a consistência das informações de roteamento em todos os nós.
On-demand (Reativo):
Criam rotas somente quando desejado por um nó fonte.

Procurando no YouTube, encontrei um vídeo muito interessante que ensina como criar uma rede ad hoc no Windows 7:

Redes Peer-to-Peer

Peer-to-Peer (P2P) é a resposta estratégica para as seguintes perguntas: como fazer a conexão entre diversos dispositivos ligados a uma rede e como fazer com que compartilhem informações, recursos e serviços entre eles. Segundo Wilson¹, estas perguntas somente poderão ser respondidas com o conhecimento de outras questões pertinentes:
a) como reconhecer um outro dispositivo presente na rede;
b) como organizar os dados compartilhados;
c) como publicar suas informações para os demais dispositivos;
d) como identificar unicamente um dispositivo;
e) como compartilhar dados na rede P2P.
Todas redes P2P possuem no mínimo os elementos necessários fundamentais para responder todas as perguntas acima. Infelizmente a maioria destes elementos é de difícil implementação,
resultando em um código de programa inflexível.

Segundo Silva², a diferença fundamental entre arquiteturas P2P e cliente/servidor é o conceito de entidades, onde nessa última existe uma entidade que faz o papel de servidor e outras entidades que fazem o papel de clientes. Já na arquitetura P2P as entidades podem atuar ao mesmo tempo como servidores e como clientes.

Peer é um nodo na arquitetura P2P, é uma unidade fundamental de processamento de qualquer solução P2P. Pode ser um simples computador, um dispositivo móvel tal como um celular ou uma aplicação distribuída em vários computadores.
Segundo definição de Wilson¹, peer é qualquer entidade capaz de executar qualquer trabalho útil e comunicar os resultados desse trabalho para outras entidades da rede P2P, podendo ser direta ou indiretamente. A definição de trabalho útil depende do tipo do peer.

Existem três possibilidades de tipos de peer, sendo que cada uma tem responsabilidade específica. Os tipos são:
a) peer simples: designado unicamente para servir o usuário, permite prover e consumir serviços providos por outros usuários da rede;
b) peer de encontro: provê o encontro de peers de um determinado ponto de rede, encontra outros peers e seus respectivos serviços, resolve questões de descoberta de serviços e propaga mensagens entre peers da rede;
c) peer relay: possui mecanismo para comunicação com outros peers separados por firewalls de rede ou um equipamento NAT (tradução de endereço de rede).

¹WILSON, Brendon J. Project Jxta book. Vancouver, Canada, [2004]. Disponível em:
http://www.brendonwilson.com/projects/jxta/pdf/JXTA.pdf.

²SILVA, William Roger Salabert. Introdução às redes Peer-to-Peer(P2P). Rio de Janeiro,
[2003]. Disponível em: http://www.gta.ufrj.br/seminarios/semin2003_1/william/index.htm.


Fonte: http://www.inf.furb.br/seminco/2004/artigos/102-vf.pdf

Algoritmos de Criptografia para VPN

Nós aqui ja falamos sobre VPN, agora vamos aobordar alguns aspectos sobre os algoritmos de criptografia para VPN:

DES - Data Encryption Standard
É um padrão de criptografia simétrica, adotada pelo governo dos EUA em 1977.O DES utiliza chaves simétricas de 56 bits para encriptar blocos de 64 bits de dados.
Apesar de este método fornecer mais de 72.000 trilhões de possíveis combinações de chaves, que levariam pelo menos 10 anos para que um computador comum rodasse todas
estas combinações, utilizando-se um conjunto de máquinas podem quebrá-lo em menos de um minuto.

Triple -DES
O Triple-DES é uma variação do algoritmo DES, sendo que o processo tem três fases: A seqüência é criptografada, sendo em seguida decriptografada com uma chave errada, e novamente criptografada.

RSA - Rivest Shamir Adleman
É um padrão criado por Ron Rivest, Adi Shamir e Leonard Adleman em 1977 e utiliza chave pública de criptografia, tirando vantagem do fato de ser extremamente difícil fatorar o produto de números primos muito grandes.

Diffie-Hellman
Foi desenvolvido por Diffie e Hellman em 1976. Este algoritmo permite a troca de chaves secretas entre dois usuários. A chave utilizada é formada pelo processamento de duas outras chaves uma pública e outra secreta.

Fontes:
http://www.unifia.edu.br/participacao_do_aluno/trabalhos/VPN_Monografia.pdf, http://www.gpr.com.br/download/vpn.pdf

Esclarecimento

O Ponto de Redes esta em período de recesso pelo motivo de que estou em término do trabalho de conclusão de curso e não estou com tempo disponível para atualizar o PR.
Mas no máximo em julho o PR volta as atividades normalmente.
Muito Obrigado!