teste de invasão adisson
DESCRIPTION
Teste de invasão completoTRANSCRIPT
Aula 5 (mod1) - Teste de invasão (TDI, PenTest, Penetration
Test) Conhecer ao inimigo e a si mesmo!
Objetivo: OBTER ACESSO (explorar e-mails, sistemas,..., o que for necessário para
obter acesso, ou seja, independe do método adotado ou falha encontrada).
É diferente de avaliação de segurança ou análise de vulnerabilidade!
Tipos de Pentest (existem aí subtipos):
1. BlackBox: É um teste cego. O pentester não possui muitas informações do alvo
(no caso de um teste externo, talvez ele saiba apenas o domínio a ser avaliado ou
IP do alvo; quando for um teste interno, talvez tenha apenas acesso a um ponto
de rede).
2. GrayBox: Verifica a existência de inconsistências nas informações de acesso de
usuários (por exemplo, descobrir o que um usuário ou funcionário consegue
acessar/fazer dentro de uma empresa com o acesso que tem). Também serve
para web (por exemplo se tem como alterar o preço de um produto no momento
da compra, etc.).
3. WhiteBox: Teste em que o pentester tem todas as informações sobre o objetivo
e portanto é um teste mais abrangente e detalhado. Pode ser usado para code
review (revisão de códigos) em códigos web.
Fases de um ataque (na ordem):
1. Levantamento de informações: coleta de nome de funcionários, emails,
telefones, redes sociais, site, empresa, sites, etc.
2. Varredura: Busca mais detalhes do alvo, como qual o sistema operacional, quais
serviços estão sendo executados e quais disponíveis, qual versão de cada
serviço, tem DS, OS, honeypot, firewall, existe alguma rede interna/externa, etc.
3. Ganho de acesso: Explorar os vetores encontrados na varredura para ganhar
acesso (o objetivo). Pode ser feito através de ataque de força bruta, ataque de
força bruta remoto, captura de tráfego, ataque de engenharia social, ataque de
exploração web, exploração do sistema operacional, etc.
4. Manter o acesso: Buscar manter o acesso já obtido. Pode ser feito através de
uma backdoor.
5. Apagar rastros: auto-explicativo!
Categoria de Ataques:
1. Server side attack: Este tipo é uma tentativa de explorar serviços em execução
em um determinado dispositivo. Não precisa que um usuário esteja interagindo.
2. Client side attack: Este ataque tenta explorar aplicações que estão sendo
executadas. Precisa da interação do usuário, ou seja, que ele excute uma
aplicação ou faça um dowload, etc.
Aula 6 (mod1) - No tech hacking: invasões sem tecnologia
Algumas técnicas:
1. Dumpter Diving: procurar informações no lixo para acesso a informações
2. Acesso indevido: conversas; senhas de wifi livres; documentos privados
expostos. Podem levar a informações.
3. Shoulder surfing: espiar por trás do ombro
4. Lock picking: abertura de cadeados para acesso a informações
5. Engenharia social: pode ser não tecnológica (baseada em pessoas) e
tecnológicas (baseada em computadores).
Dicas de segurança:
1. Não falar coisas privadas em local público;
2. Descartar apropriadamente o lixo (queimar, picotar...); usar fechaduras decentes;
manter bolsas, coisas pessoais por perto sempre; perceber se alguém está
espionando atrás; bloquear acesso indevido a pessoas indevidas em locais onde
se trocam informações sigilosas.
Atividade: tirar fotos e comentar possíveis fontes de tech hacking que eu encontre por
aí.
Aula 7 (mod1) - War Games (jogos de gerra)
Nesta categoria temos 2 opções: war games online e war games de desktop.
1 - War games online: Nestes jogamos online. Para vencer um desafio (quebrar
uma senha):
procuro no código fonte informações explícitas sobre usuário e senha ou
coisas suspeitas no código (um desvio para uma outra página, um script, algo
com uma extensão diferente, tipo .psd, etc. – isso caso não esteja explícito no
código a autenticação quando entrar com usuário e senha definidos).
Quando nada no código fonte indique pistas, posso logar com qualquer coisa e
ver se acabo em uma outra página indicando erro. Nesta outra página, tento de
novo ver o código fonte. As extensões suspeitas podem ser de softwares que
não possuo instalados. Neste caso posso usar um leitor online. Várias opções
em: http://www.clicandofacil.com.br/ . Para ler de uma url, coloco o endereço
todo dela, com o nome do arquivo com a extensão no final.
Quando aparecer um código criptografado, existem vários sites para
decriptogravar:
Além disso, pode aparecer um pedido de autenticação em flash/java. Neste
caso existem alguns sites aos quais podemos recorrer: www.showmycode.com
e...
Outra possibilidade é explorar a imagem mostrada no site (esteganografia).
Para isso abro a url da imagem (ou salvo a imagem) e jogo em um site
específico para isto para ver o código da imagem em texto: futureboy.us/stegano
e...
Outra possibilidade é aparecer um conjunto de números (código em ASCII), em
que cada número corresponde a uma letra. Daí tenho que decifrar isso. Às vezes
no próprio fonte da página tem alguma dica para isso, um dicionário para se
entender o código. Alguns programadores a colocam no final da página do
código fonte. Um exemplo de site para ver o que é cada # é:
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes .
Mas para não ficar traduzindo número por número, existem conversores de ascii
na internet. Com a busca “ascii conversion applet” é possível achar algumas
opções como: http://www.asciitohex.com/ ou www.base64decode.org ou
http://www.cs.carleton.edu/faculty/adalal/teaching/f05/107/applets/ascii.html
Às vezes o site pode pedir para você verificar um arquivo, daí você faz isso
num terminal Linux. Às vezes precisamos instalar algum comando que não é
natural do Linux, como o sl: apt-get install sl
Outra possibilidade é haver um QR-Code para decifrar. Neste caso não se trata
de estenografia. O código está na imagem, então eu salvo a imagem e uso um
site para decodificar a mesma: www.onlinebarcodereader.com
Também podemos recorrer ao SQL Inject, utilizando os códigos em usuário e
senha. Alguns exemplos:
Exemplos de jogos online:
100security.com.br/wargame (o exemplo do nosso curso usa este)
www.hackertest.net
www.mod-x.co.uk
www.try2hack.nl
www.hackthissite.org
bigchalenge.free.fr
Desafios de empresas também aparecem:
Todas as informações desta aula estão disponíveis no Google:
filetype:php site: www.100security.com.br/wargame (esse commando também pode ser
usado no google para achar informação sobre algum site).
2 - War games de desktop: São softwares que instalados no computador que nos
permitem ultrapassar desafios dentro de um contexto proposto (que contém um alvo,
talvez acesso a um arquivo, etc.). São bons para treinamento.
Exemplos de jogos de desktop:
www.uplink.co.uk
www.exosyphen.com
www.streethackercom
www.owasp.org
www.dvwa.co.uk
hackingdojo.com/dojo-media
Aula 1 (mod2) - Entender e Escolher uma Distribuição Linux
Será usado o kali-linux (sub-ramo do Debian) por ter ferramentas de invasão já
prontas. Usamos o VirtualBox (download da versão VirtualBox 5.0 for Windows hosts
x86/amd64 em: https://www.virtualbox.org/wiki/Downloads). Instalamos o VB. Depois
virtualizamos um OS kali-linux no virtualbox, dentro do Windows (no meu caso).
Baixamos o kali 32 bits em https://www.kali.org/downloads/ e para instalar o ISSO,
usamos o VB:
1. New. Enter.
2. Name: Kali Linux; Type: Linux; Version: Debian (32 bit). Enter.
3. Memory Size: 512Mb no mínimo. Enter.
4. Hard Drive: já vai estar a opção “Create a virtual hard drive now”. Enter.
5. Hard drive file type: já vai estar a opção “VDI (VirtualBox Disk Image). Enter.
6. Storage on physical hard drive: já estárá “Dynamically allocated”. Enter.
7. File location and size: 8 Gb no mínimo. Enter. (tá criada a máquina virtual-mv)
Com a vm selecionada, vou no menu do VB:
1. Settings (configurações): System – Prossessor - Extended Features: Enable
PAE/NX.
2. Network: Attached to: Bridged Adapter. Name: en0: (vai aparecer sua opção
de Wifi, algo como Wi-Fi (airport)). Adapter Type: (vai aparecer algo do
tipo Intel PRO/1000 MT Desktop (82540EM)). Advanced: Allow All. Ok.
3. Start (pra instalar a vm). Selecionar o ISO do kali que foi baixado. Start.
4. Escolher Graphical Install. Enter.
5. Escolher idioma, enter; local, enter; e tipo de teclado, enter. (ele vai
configurar coisas e retorna para novas opções:
6. Configure the network: “Please enter the hostname for this system”: kali.
Continue. Domain name: (não põe nada ou cria um nome). Continue.
7. Set up users and passwords: Root Password: (criar uma senha e confirmar).
Continue.
8. Configure the clock: seleciona a timezone. Continue.
9. Partition disks: Guided – use entire disk. Continue. Select disk partition
(deixa o que está). Continue. Selected for partitioning: All files in one
partition (recommended for new users). Continue. Já vai estar selecionado
“Finish partitioning and write changes to disk”. Continue. Write the changes
to disk?: Yes. Continue. (agora ele começa a instalar).
10. Configure the package manager: Yes (se eu quero dar um update nos
pacotes). Continue. HTTP proxy information (blank for none): (não põe
nada aqui). Continue.
11. Install the GRUB boot loader on a hard disk: Yes. Continue.
12. Finish the installation: Continue.
13. Vai dar reboot na vm; aguarda um pouco.
14. Ele inicia com uma janela com o nome da máquina. Kali: Other... Enter.
15. Username: root. Log In.
16. Password: (põe a senha). Log In. Pronto!
OBS. Um possível problema neste ponto é você não conseguir acessar a internet quando
inicia o VB, e neste caso você não consegue prosseguir com a instalação do kali. Não
sei como resolver isso ainda. Outro problema é que você não consiga acessar a internet
a partir do seu Kali (após a instalação). Neste caso feche o linux (sua vm) e vá para o
passo 2 (acima). Tente mudar em “Network:” (ou Rede, se estiver em Português) do
modo brigde para o modo NAT. Daí é só iniciar sua vm (no caso o kali Linux) de novo
e é para funcionar.
Links indicados:
GNU/Linux A Origem: https://youtu.be/o0dJwmiwS4g
Offensive Security: https://www.offensive-security.com/ (tem certificações
interessantes)
VirtualBox: https://www.virtualbox.org/wiki/Downloads
Kali Linux: https://www.kali.org/downloads/
Comandos Linux: Comando Função
<comando> --help ajuda rápida sore o comando
adduser adiciona usuário
apropos <palavra chave que procuro> mostra tudo que tem sobre a palavra chave
cat - t <arquivo> mostra onde aparece tab no arquivo
cat <1o arq> <2o arq.> > <nome final arq. que quero> concatena nome dos 2 arquivos em 1
cat <arquivo ou diretório existente> mostra o que tem dentro
cat > <nome arq. quero criar>escreve tudo escrito na sequencia no arq. criado
(p/ sair, ctrl+d)
cat -e <arquivo> mostra onde termina uma linha no arquivo
cat -n <aquivo> numera as linhas do conteúdo do arq.
cd vai para a home (pasta de usuário)
cd .. vai para o diretorio logo abaixo
cd <diretório> muda de diretório
cd/ vai para o diretório raiz
clear (ctrl+l) limpa tela
cores: azul=diret; verm=arq compact; cor standard=texto, arq. desconhecido
cp <arquivo> /<diretório> copia o arquivo p/ o dir indicado
echo <o que quero escrever> escreve na tela o indicado
echo <o que quero escrever> > <arquivo>escreve no arq indicado que quero
(usando 2x seguidas no mesmo arquivo, sobrescreve)
echo <o que quero escrever> >> <mesmo arquivo> escreve dentro do mesmo arq, mas na linha de baixo
file <arquivo> mostra o tipo de arquivo
head <arquivo existente> mostra as 1as 10 linhas do arq.
head -n5 <arquivo existente> mostra as 1as 5 linhas do arq.
history dá o histórico
history -c limpa o histórico
ls lista o que tem no diretório
ls -l idem ls mas c/ informações
ls -lh idem ls com tamanho em bytes
ls -R lista o diretório com seus subdiretórios
man <comando> mostra tudo sobre o comando (p/ fechar, tecla q)
man 7 undocumented mostra como ajudar na tradução
man -l pt_BR ls puxa o pacote em Português?
mkdir <diretório> cria diretório (e pasta na parte gráfica)
mkdir -p <diretorio>/<subdiret>/<sub-subdiretório> cria diretório com subdiretórios
mv <arquivo> /<diretório>/ move o arq de onde está p/ o dir indicado
mv <arquivo> <novo nome do arquivo> renomeia o arquivo
ping <executável/url> para ver se está executando/funcionando
reboot reinicia o linux
rm -rf <diretório ou arquivo> deleta diretório não vazio e arquivos
rmdir <diretório vazio> deleta diretório vazio
su pra trocar de usuário
tail <arquivo existente> mostra as últimas 10 linhas do arq.
tail -f <arquivo quero monitorar em tempo real> monitora em tempo real as últimas 10 linhas
tail -n3 <arquivo existente> mostra as últimas 3 linhas do arq.
touch <arquivo> cria arquivo
whereis <comando>mostra onde está o executável/manual/arq.
configuração do comando
which <comando> mostra onde está o executável do comando
whoami diz quem é o usuário
Alguns editores de texto do Linux:
VI
Para abrir o vi:
vi <nome do arquivo que quero criar>
Para inserir coisas no arquivo criado:
aperto a tecla I (modo insert), e escrevo o que quero.
Para salvar, aperto esc (para retornar ao modo visual), e escrevo :w
Para salvar e sair do vi, escrevo :q
Para sair sem salvar, escrevo :q!
Atalhos usando o modo visual:
Para inserir 1 linha abaixo de outra, vou em cima da linha abaixo da qual
quero inserir e aperto a letra O. Dou esc e volto para o visual.
Para ir para o final de uma linha, aperto A, depois dou esc se quiser voltar
para o modo visual.
Para deletar um caractere, vou com o cursor em cima dele e aperto a letra x.
Para deletar a linha em que o cursor estiver, escrevo dd.
Para copiar uma linha inteira, uso nela yy.
Para colar em outro lugar a linha copiada, escrevo p.
Para procurar uma palavra, escrevo /<palavra que procuro>.
NANO
Para criar e abrir um arquivo no nano:
nano <nome arquivo quero criar> (já abre o arquivo no editor)
Daí é só escrever normal no editor.
Para procurar uma palavra: crtl+o
Para salvar: crtl+w
Para sair: ctrl+x (se eu sair sem salvar, ele pergunta o nome do arquivo e salva antes de
sair).
OUTROS EDITORES: leafpad, lyx (amo!!!), etc.
Aula1 (mod3) –
Aula2 (mod3) – Google Hacking
Aula4 (mod3) –