Introdução
Ferramentas de segurança podem produzir saídas longas contendo anotações, observações repetidas e diagnósticos. Um resultado útil é um pequeno conjunto de descobertas relevantes cuja origem você entende.
Neste laboratório, você praticará com um arquivo de texto fornecido antes de executar qualquer ferramenta de varredura. Lerá seu conteúdo, filtrará e eliminará duplicatas dos registros de serviços abertos, fará a contagem deles e manterá os erros separados da saída útil.
Leia um arquivo de saída preparado
Nesta etapa, você inspecionará um arquivo de texto preparado de várias maneiras antes de extrair descobertas. São dados de exemplo, não a saída de uma varredura que você precise executar.
Abra o shell Kali preparado:
kali
Use um caminho absoluto para escolher o diretório de trabalho compartilhado:
cd /home/labex/project
O arquivo observations.txt contém linhas curtas que começam com NOTE, OPEN ou CLOSED. Aqui, OPEN significa que a observação de exemplo lista um serviço como aberto; isso não prova uma vulnerabilidade. Exiba o pequeno arquivo completo:
cat observations.txt
Você verá linhas repetidas de serviços abertos, além de anotações e linhas de serviços fechados. Ler a fonte primeiro ajuda a escolher um filtro que preserve as informações pretendidas.
Para um arquivo longo, less exibe uma página por vez sem alterar o arquivo:
less observations.txt
Use as teclas de seta para navegar, se necessário, e pressione q para sair e retornar ao shell. O exemplo é pequeno o bastante para caber em uma tela; o mesmo paginador funciona para saídas maiores de ferramentas.
head lê o início de um arquivo; tail lê o final. A opção -n define quantas linhas exibir. Inspecione as três primeiras linhas:
head -n 3 observations.txt
Saída esperada:
NOTE supplied training observations
OPEN training-web:8080 http
CLOSED training-db:5432 postgresql
Agora inspecione as duas últimas linhas:
tail -n 2 observations.txt
A última linha é NOTE end of sample. Salve a prévia de três linhas usando o operador > apresentado no primeiro laboratório:
head -n 3 observations.txt > preview.txt
cat preview.txt
A prévia deve conter as mesmas três linhas mostradas acima. Você manteve a fonte intacta e salvou uma visualização útil dela.
Filtre, ordene e remova descobertas repetidas
Nesta etapa, você criará um pipeline que mantém os registros de serviços abertos e remove duplicatas.
Permaneça no Kali e retorne ao espaço de trabalho compartilhado:
cd /home/labex/project
grep exibe as linhas correspondentes. O padrão abaixo está entre aspas simples para que o shell o passe literalmente. A âncora ^ significa o início de uma linha, e o espaço depois de OPEN separa o tipo do registro de seus dados:
grep '^OPEN ' observations.txt
A saída inclui todas as observações de serviços abertos, incluindo linhas repetidas. As anotações e linhas CLOSED estão ausentes.
O símbolo de pipe | conecta a saída padrão de um comando à entrada padrão do próximo. sort ordena as linhas para que as idênticas fiquem adjacentes:
grep '^OPEN ' observations.txt | sort
As linhas repetidas agora estão agrupadas. uniq remove linhas idênticas adjacentes, portanto deve vir depois da ordenação quando as duplicatas podem estar separadas:
grep '^OPEN ' observations.txt | sort | uniq
Saída esperada:
OPEN training-dns:5353 dns
OPEN training-ssh:2222 ssh
OPEN training-web:8080 http
Cada comando tem uma função: selecionar registros, ordená-los e então eliminar repetições. Salve o fluxo resultante em um arquivo de saída separado:
grep '^OPEN ' observations.txt | sort | uniq > open-services.txt
cat open-services.txt
Você deve ver os mesmos três registros únicos. O redirecionamento se aplica à saída final do pipeline; as observações originais não são editadas.
Conte os resultados e separe a saída de erro
Nesta etapa, você contará as descobertas selecionadas e distinguirá a saída normal de uma mensagem de erro.
Comece no espaço de trabalho compartilhado:
cd /home/labex/project
wc conta texto. A opção -l conta linhas terminadas por uma quebra de linha. Como o arquivo salvo tem uma descoberta por linha, a contagem é o número de registros distintos de serviços abertos:
wc -l open-services.txt
A saída informa 3 e o nome do arquivo; o espaçamento pode variar. Um pipeline fornece texto sem um argumento de nome de arquivo, tornando conveniente salvar somente a contagem:
cat open-services.txt | wc -l > finding-count.txt
cat finding-count.txt
O valor é 3, possivelmente com espaços iniciais.
Os programas normalmente enviam dados úteis para a saída padrão e diagnósticos para a saída de erro padrão. O > do shell redireciona a saída padrão; 2> redireciona a saída de erro padrão. Para observar a distinção, tente ler um arquivo deliberadamente ausente e salve seu diagnóstico. Espera-se que o próximo comando falhe porque missing-observations.txt não existe; esta é uma demonstração intencional, portanto continue depois:
cat missing-observations.txt 2> read-error.txt
Nada deve aparecer na tela porque a mensagem de erro foi para read-error.txt. Inspecione esse diagnóstico separado:
cat read-error.txt
A mensagem cita missing-observations.txt e diz que ele não pode ser lido porque não existe. Suas descobertas reais continuam separadas:
cat open-services.txt
Os três registros válidos permanecem inalterados. Manter diagnósticos separados evita que uma mensagem de erro seja confundida com uma descoberta da ferramenta.
Resumo
Você leu texto com cat, less, head e tail; selecionou linhas com grep; compôs um pipeline com sort e uniq; contou registros com wc; e usou redirecionamento de saída e de erros. Essas habilidades ajudam a transformar saídas extensas de ferramentas em resultados pequenos que podem ser inspecionados.



