Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Desafio Hacker Linux, Manuais, Projetos, Pesquisas de Competências em Linux

capítulo, vou abordar o que é necessário saber sobre o Linux para realizar o desafio. Basicamente, veremos comandos do modo texto (shell) que serão utilizados, além de algumas noções básicas de estruturação do sistema e uso. Ao longo dos desafios demonstrados, explicarei cada comando que será utili- zado com detalhes e screenshots. Por enquanto, é só para os iniciantes do Linux terem uma noção.

Tipologia: Manuais, Projetos, Pesquisas

2020

Compartilhado em 27/09/2023

matheus-loubach
matheus-loubach 🇧🇷

1 documento

1 / 148

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
IntroduçãoIntrodução
IntroduçãoIntrodução
Introdução
Breve História do Linux
Era uma vez um sistema chamado Unix. Foi criado por Ken Thompson, Dennis
Ritchie e equipe. Eles queriam um sistema superior ao Multics, muito utilizado
na época. Desenvolveram uma linguagem muito poderosa para ser utilizada
nesse sistema: a linguagem C.
Muitas variantes do Unix surgiram: Digital Unix, AIX, HPUX e até versões
para computadores pessoais, como Xenix e Minix.
É justamente no Minix que nossa história se inicia. Um estudante, deno-
minado Linus Torvalds, utilizava este sistema, mas pensava que poderia ser
melhorado. Foi então que, em meados dos anos 90, Linus desenvolveu um
kernel (coração de um sistema) de um sistema novo, baseado no Minix e no
Unix, denominado Linux (de Linus). A partir daí, a popularidade do sistema só
vem crescendo e já existem até versões diferentes de Linux (interessante frisar
que existem mais versões de Linux que do próprio Unix hoje): Red Hat, Mandrake,
SuSe, Slackware, Debian e até a brasileira Conectiva disputam espaço em mi-
lhares de servidores e computadores pessoais.
Tux, o pinguim-símbolo do sistema Linux.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe Desafio Hacker Linux e outras Manuais, Projetos, Pesquisas em PDF para Competências em Linux, somente na Docsity!

IntroduçãoIntroduçãoIntroduçãoIntroduçãoIntrodução

Breve História do Linux

Era uma vez um sistema chamado Unix. Foi criado por Ken Thompson, Dennis

Ritchie e equipe. Eles queriam um sistema superior ao Multics, muito utilizado

na época. Desenvolveram uma linguagem muito poderosa para ser utilizada

nesse sistema: a linguagem C.

Muitas variantes do Unix surgiram: Digital Unix, AIX, HPUX e até versões

para computadores pessoais, como Xenix e Minix.

É justamente no Minix que nossa história se inicia. Um estudante, deno-

minado Linus Torvalds , utilizava este sistema, mas pensava que poderia ser

melhorado. Foi então que, em meados dos anos 90, Linus desenvolveu um

kernel (coração de um sistema) de um sistema novo, baseado no Minix e no

Unix, denominado Linux (de Linus). A partir daí, a popularidade do sistema só

vem crescendo e já existem até versões diferentes de Linux (interessante frisar

que existem mais versões de Linux que do próprio Unix hoje): Red Hat, Mandrake,

SuSe, Slackware, Debian e até a brasileira Conectiva disputam espaço em mi-

lhares de servidores e computadores pessoais.

Tux, o pinguim-símbolo do sistema Linux.

Desafio Hacker Linux

Versão de Linux a ser Utilizada junto ao Livro

Você pode estar se perguntando: Qual versão eu devo usar para seguir o livro?

Ou: Eu tenho afinidade com esta ou aquela versão de Linux, faz alguma dife-

rença? Não, de modo algum. Nós somente utilizaremos comandos em modo

shell (texto). Tudo que é feito no shell aqui poderá ser feito na interface gráfica.

E os comandos praticamente não mudam em versões diferentes do sistema.

Não se preocupe se você não conhecer os comandos: no próximo capí-

tulo, darei uma breve explicação sobre os comandos mais importantes que

você utilizará.

Mesmo que você só possua Windows, poderá aproveitar bem o conteú-

do já que é somente se conectar aoHackersLab via telnet que você estará no

Linux. Isso será mostrado passo a passo no nível 1.

Desafio HackersLab

Falamos tanto sobre esse tal deHackersLab... O que exatamente é isso? O

Desafio HackersLab é uma espécie de “jogo” muito conhecido na comunida-

de de segurança e pelos hackers em geral. É tão conhecido que já existe até

uma versão brasileira dele feito pela UFRJ (Universidade Federal do Rio de Janei-

ro) que foi batizada de LockABit (www.lockabit.com).

O desafio é simples (bom, em termos). Você começa no nível 0. Atual-

mente, existem 18 níveis (contando com o zero) para serem quebrados. Toda

vez que você vence um desafio, consegue a senha para o nível superior. E por

aí vai.

Se, por acaso, o desafio acabar algum dia, o livro perderá sua utilidade?

Claro que não. Como disse, já existem outros desafios baseados noHackersLab,

e mesmo que não existissem, as ilustrações e screenshots do livro lhe mostram

o suficiente para você testar até no seu próprio sistema Linux.

E se eu não conseguir entender os níveis superiores? Não importa...

O livro servirá de consulta sempre para você.

Está em um nível que precisa de programação em C e você não con-

segue entender? Aprenda C. O objetivo do desafio é que você chegue ao

nível 17 praticamente como um mestre. Posso lhe mostrar o caminho, mas

você tem que percorrê-lo sozinho.

Se você é novato no mundo da segurança, sugiro que leia primeiro o

Guia do Hacker Brasileiro , assim terá uma base melhor para absorver o

que será ensinado aqui.

Desafio Hacker Linux

Linux Básico e EssencialLinux Básico e EssencialLinux Básico e EssencialLinux Básico e EssencialLinux Básico e Essencial

O Básico do Necessário

Neste capítulo, vou abordar o que é necessário saber sobre o Linux para realizar

o desafio. Basicamente, veremos comandos do modo texto ( shell ) que serão

utilizados, além de algumas noções básicas de estruturação do sistema e uso.

Ao longo dos desafios demonstrados, explicarei cada comando que será utili-

zado com detalhes e screenshots. Por enquanto, é só para os iniciantes do

Linux terem uma noção.

Usuários e Grupos

No Linux, assim como em outros sistemas Unix e o Windows NT, 2000 e XP,

temos nossa estrutura de utilização dividida em usuários e grupos. Isso é feito

para que o administrador do sistema possa ter um controle maior sobre quem

irá acessá-lo. Existe também o “superusuário”, denominado root que, indepen-

dente de permissões (as quais veremos a seguir), consegue realizar qualquer

coisa no sistema. Um exemplo prático:

Minha conta de usuário no sistema X se chama marcos. É criado um

espaço na pasta /home/marcos para que eu possa armazenar meus arquivos.

Meu grupo dentro desse sistema se chama leitura. É um nome nada original

dado pelo root para designar que todas as pessoas no meu grupo tenham

permissão apenas para ler arquivos, mais nada.

Mas, por que os grupos? O administrador (root) não poderia definir isso

direto nas contas? Poderia... mas e se um sistema tiver mil contas? Não é mais

fácil separar em grupos e realizar as permissões de forma coletiva do que indivi-

dualmente?

Linux Básico e Essencial

Principais Comandos do Linux

A tabela a seguir mostra os principais comandos do sistema que você precisará

saber para se dar bem no desafio. Muitos deles serão utilizados nos níveis,

então serão explicados melhor ao longo do livro. Mas já dá para você ir fuçando

no Linux com o que vai aprender agora. Observe os comandos:

Comando Descrição Exemplo Explicação date

Mostra a data e a hora na tela.

date Sun Wed 15 15:38:

who^ Mostra quem está logado no sistema.

who Nenhuma.

whoami

Mostra suas informações de usuário.

whoami Nenhuma.

clear^ Limpa a tela e osbuffers de linha. clear Nenhuma. echo qualquer coisa

Mostra o que eu vou escrever na tela.

echo Teste! Escreve Teste! na tela.

banner qualquer coisa

Mostra o que eu vou escrever na tela em letras grandes.

banner Ei!!^ Escreve^ Ei!!^ Em letras grandes na tela.

cat arq1 arq arq

Mostra os três arquivos em ordem consecutiva como se fossem um só. Pode ser usado para combinar arquivos.

cat dados nomes

Mostra o arquivo dados na tela e imediatamente mostra o arquivo nomes.

df sistema

Reporta a quantidade de blocos livres no disco.

df ~ df $HOME

Ambos os comandos irão mostrar o total de Kb livres, Kb usados e % utilizada.

head arquivo

Mostra as primeiras dez linhas de um arquivo na tela.

head enderecos head – enderecos

Mostra as primeiras dez linhas na tela. Modificação. Mostra as primeiras 25 linhas na tela.

tail arquivo

Mostra as últimas dez linhas de um arquivo na tela.

tail teste.txt

Mostra as últimas dez linhas de teste.txt na tela. O número de linhas também pode ser modificado como no head.

Desafio Hacker Linux

Comando Descrição Exemplo Explicação

more entrada

Mostra na tela qualquer entrada de dados – útil, pois mostra tela a tela.

more (^) teste.txt

Mostra teste.txt com pausa. Comandos internos: barra – Próxima tela; enter – Linha a linha; Q – Sai; G – Vai para o fim; 1G – Vai para o início; ! comando – Executa comando de shell.

ls

Lista todos os arquivos não-ocultos e diretórios.

ls

Lista todos os arquivos não- ocultos e diretórios no diretório atual.

ls bin

Lista todos os arquivos não- ocultos e diretórios dentro do diretório bin.

ls -l jogos

Lista todos os arquivos não- ocultos e diretórios no formato longo que estão no diretório jogos.

ls -^ a

Lista todos os arquivos e diretórios, incluindo os ocultos.

ls -a teste

Lista todos os arquivos e diretórios no diretório teste.

ls^ -r

Lista todos os arquivos não-ocultos e diretórios em ordem alfabética reversa.

ls -r

Lista todos os arquivos não- ocultos e diretórios que estão no diretório atual em ordem alfabética reversa.

ls^ -p

Lista somente diretórios.

ls -p^ Lista todos os subdiretórios dentro do diretório atual.

ls -t

Lista todos os arquivos não-ocultos na ordem que eles foram modificados por último.

ls -t docs

Lista os arquivos não- ocultos e diretórios de docs na ordem que eles foram modificados por último, do mais recente ao último.

ls -la

Lista todos os arquivos inclusive ocultos (-a) em formato longo (-l).

pipe redireciona a saída de um comando para a entrada de outro.

ls –l | more^ Lista arquivos em formato longo uma tela por vez.

Nota: Opções podem ser combinadas usando ls

ls -l

Lista todos os arquivos não-ocultos e diretórios no formato longo.

Desafio Hacker Linux

Comando Descrição Exemplo Explicação

rm -f arq1 arq

Força o arquivo a ser apagado independente de permissões.

rm –f programa

Remove o arquivo programa independente de confirmação e de permissões. rm –r arq arq

rm –r bin

rm –R arq arq

rm –R (^) bin

rmdir diretório

Remove um diretório como rm –r , mas o diretório deve estar vazio.

rmdir bin^ Remove o diretório^ bin^ se estiver vazio.

rm -Rf

Perigoso. Essa combinação apagará qualquer arquivo ou diretório e todo o seu conteúdo.

rm -Rf (^) lixo

Força a remoção sem avisos do diretório lixo e de todo o seu conteúdo.

cp arq novonome

Copia um arquivo ( arq1 ) e nomeia a cópia com um novo nome ( novonome ).

cp velho novo

Faz uma cópia do arquivo chamado (^) velho em seu diretório atual e nomeia a cópia como novo. Obs: Se o arquivo novo já existir, será substituído.

cp -p nome alvo

Preserva todas as permissões originais para o alvo.

cp –p prog prog

Copia o executável prog e nomeia a cópia prog que manterá a permissão de executar (e as outras).

cp –R diretório alvo

Copia um diretório e nomeia a cópia ( alvo ).

cp –R velho/ lixo/

Faz uma cópia do diretório chamado velho e nomeia essa cópia como lixo.

mv (^) temp script^ Renomeia o arquivo^ temp para script.

mv (^) script ~/bin

Move o arquivo script para o diretório bin que está dentro do seu diretório (^) home (~) e mantém seu nome inicial. Mostra algo como “/home/marcos”.

Qualquer um desses irá remover o diretório bin e o que houver dentro dele.

mv inicial final

Renomeia ou move (sem copiar) arquivos e diretórios.

pwd^ Mostra o diretório atual na tela.

pwd

Remove um diretório com todos os arquivos e subdiretórios.

Linux Básico e Essencial

Comando Descrição Exemplo Explicação

pr arquivo

Envia um arquivo para ser impresso.

pr listausuarios

Imprime o conteúdo de listausuarios na impressora padrão.

ps

Mostra alguma informação sobre processos associados com o terminal atual.

ps

Mostra uma lista de IDs de processo, identificadores de terminais, tempo acumulativo de execução e nome do comando.

ps -e

Mostra informação sobre todos os processos.

ps -e

Mostra uma lista de IDs de processo, identificadores de terminais, tempo acumulativo de execução e nome do comando.

ps -f

Mostra uma listagem completa de informações sobre os processos listados.

ps -f

Mostra UID (usuário ou dono do processo), PID (ID do processo – use esse número para matá-lo), PPID (ID originário do processo), STIME (tempo de início do processo), TTY (terminal controlando o processo), TIME (tempo acumulativo do processo) e COMMAND (o comando que iniciou o processo).

ps -u usuário

Mostra todos os processos relacionados a um usuário.

ps –u marcos

Mostra todos os processos que pertencem ao usuário marcos.

ps -ef

Mostra todos os processos em listagem completa.

ps -ef^ Mostra todos os processos em listagem completa. kill id_processo

Pára o processo com o ID fornecido.

kill 6969^ Mata o processo com PID

kill – id_processo

Destrói o processo com o ID fornecido.

kill –9 6969

PID # 6969 não tem chance aqui. Será completamente destruído.

grep palavra arquivo

Procura em arquivos ou dados de entrada por palavras e mostra as linhas encontradas.

grep marcos usuarios

Procura pela palavra (^) marcos dentro do arquivo chamado usuarios e mostra todas as linhas com marcos na tela.

Linux Básico e Essencial

Comando Descrição Exemplo Explicação

find^ -name

Especifica o que procurar.

find / - name trojan?

Encontrar desde a raiz (/) qualquer arquivo que tenha o nome trojan e qualquer outro caractere ( (^)? ) como trojan1 , trojan2 , trojana , trojans , etc. Checará o arquivo teste.txt dentro do diretório root e informará algo como:

“ASCII TEXT FILE”.

strings arquivo

Procura arquivos binários (não só executáveis) por strings (texto).

strings /root/progr amacomsenha .exe

Mostrará todos os textos dentro do arquivo executável programacomsenha.exe. Os textos vão desde funções ( (^) SetAlgumaCoisa ) até a própria senha armazenada dentro do programa.

ln^ arquivo^ link

Cria um link para um arquivo já existente.

ln /bin/pass /root/senha

Criará um link chamado senha dentro do diretório (^) root que indica para o arquivo /bin/pass. gcc entrada gcc^ teste.c

cc entrada cc^ teste.c

gcc entrada –o saida

Compila e deixa você especificar o nome do executável criado.

gcc teste.c –o teste.exe

Compila teste.c e cria o executável com o nome teste.exe.

strace executável

Rastreia um arquivo executável e lhe mostra tudo que ele faz no sistema.

strace programa

Entrega-me que funções importantes o programa está utilizando, arquivos temporários que ele cria e outras informações.

chmod permissão arquivo

Muda as permissões destinadas a um arquivo.

chmod 777 / home/texto .txt

Coloca permissões totais (777), ou seja, tanto o criador, as pessoas do seu grupo e todos os outros podem ler, gravar e executar o arquivo.

chown usuario arquivo

Muda o usuário ao qual um arquivo pertence.

chown root /home/texto .txt

O arquivo (^) texto.txt que está dentro do diretório home terá permissão vinculada ao usuário root.

Ambos compilarão o arquivo fonte teste.c e criarão um executável.

file arquivo

Informa qual o tipo de arquivo (se é uma foto, um texto, um executável...).

file /root/texto .txt

Compiladores C/C++.

Desafio Hacker Linux

Desafio Hacker Linux

8 Passo 3 : Obrigatoriamente, você deve preencher os cam-

pos com o *, os demais ficam a seu critério.

8 Passo 4: Seu registro será um sucesso se vir essa tela. Clique

emView Problems.

Iniciando o Desafio

8 Passo 5: Coloque o ID e a senha que você registrou.

8 Passo 6: Você está vendo o problema para o level0. Em

todo nível, há uma explicação e uma dica.

Acessando o Servidor

Agora é hora de acessar o servidorHackersLab via telnet. Conecte-se digitando

telnet drill.hackerslab.org. Um exemplo de como fazê-lo do Windows:

Vá emIniciar/Executar e digite:

Uma tela aparecerá pedindo login e senha.

O login élevel0 e a senha éguest.

Iniciando o Desafio

Digite a senha para o próximo level (no caso, olevel1) e clique em

GoGoGo.

Se a senha estiver correta, uma mensagem dizendo Congratulations

levelup! (Parabéns por passar de nível!) aparecerá na tela.

É só clicar emback para ver a informação e a dica para o próximo nível.

Após ler, conecte-se novamente via telnet emdrill.hackerslab.org, coloque como

loginlevel1 e a nova senha.

Estrutura de Ensino

Todos os níveis serão apresentados no livro divididos da seguinte maneira:

8 Problema: Texto original do problema e sua tradução.

8 Estudo: Um estudo sobre quais tipos de conhecimento você

terá que ter para avançar nesse level. Nos níveis que tratam

debuffers overflow erace conditions, por exemplo, tere-

mos todo um estudo de como esses problemas ocorrem.

8 Passo-a-passo: O próprio nome diz. É a resolução do pro-

blema passo a passo, com telas ilustrativas. Após ler o estu-

do, ficará fácil para você entender o que será feito nessa

seção.

Desafio Hacker Linux