GNU/Linux

Comandos básicos de terminal, manipulação de arquivos, navegação pelo sistema de arquivos e outras operações essenciais em um ambiente GNU/Linux.

Por Fábio • Instituto Infnet

Uma história de colaboração e código aberto

O nascimento do sistema que hoje chamamos de GNU/Linux é um exemplo notável de colaboração entre comunidades e indivíduos apaixonados por tecnologia. Em 1983, Richard Stallman iniciou o Projeto GNU com o objetivo de criar um sistema operacional completamente livre, oferecendo alternativas para ferramentas essenciais como compiladores, editores e shells. Essa iniciativa foi pioneira ao estabelecer a filosofia do software livre, permitindo que qualquer pessoa pudesse usar, estudar, modificar e redistribuir o código-fonte dos programas. Enquanto isso, na Finlândia, Linus Torvalds, então estudante de ciência da computação, estava insatisfeito com os sistemas operacionais disponíveis para PCs. Em 1991, ele começou a desenvolver um novo kernel, o núcleo do sistema operacional, que mais tarde seria conhecido como Linux. Torvalds utilizou ferramentas do Projeto GNU, como o compilador GCC, para escrever e compilar o código do kernel, além de utilizar o Bash como shell para interagir com o sistema. O primeiro lançamento público do kernel Linux ocorreu em 1991, e logo se tornou evidente que, para que fosse funcional, ele precisaria ser combinado com as ferramentas do Projeto GNU. Assim, nasceu o sistema operacional GNU/Linux, uma fusão do kernel Linux com as ferramentas e bibliotecas desenvolvidas pelo Projeto GNU. Essa colaboração resultou em um sistema operacional completo, estável e livre, que se espalhou rapidamente entre desenvolvedores e entusiastas de tecnologia. É importante destacar que, embora o nome "Linux" seja amplamente utilizado para se referir ao sistema como um todo, ele tecnicamente se refere apenas ao kernel. O termo "GNU/Linux" reconhece as contribuições do Projeto GNU e de Stallman, que foram essenciais para a criação do sistema operacional livre que conhecemos hoje. Ao compreender essa história, você não apenas aprende sobre a origem do sistema operacional, mas também sobre os valores que fundamentam o software livre: liberdade, colaboração e compartilhamento de conhecimento. Essa base ética e técnica é fundamental para entender o ecossistema de software atual e a importância de contribuir para ele de forma aberta e responsável.
CAPÍTULO 01
Comandos Fundamentais do Sistema
Objetivo: Dominar os comandos básicos para informações de sistema

Todo hacker que se preze deve conhecer seu ambiente de trabalho como a palma da mão. Neste primeiro capítulo, você aprenderá os comandos fundamentais que revelam informações essenciais sobre o sistema que está operando.

Estes comandos são a base para qualquer operação avançada - seja para reconhecimento, análise forense ou simplesmente administração do sistema.

Sequência de Execução:
1. Abra um emulador de terminal (Ctrl+Alt+T no Ubuntu)
2. Execute cada comando individualmente
3. Observe e analise cada saída
4. Anote informações relevantes
hacker@matrix:~$ date
Mon Aug 12 14:30:15 -03 2025
hacker@matrix:~$ cal
Agosto 2025 Do Se Te Qu Qu Se Sá 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
hacker@matrix:~$ df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 8.5G 11G 45% / tmpfs 2.0G 0 2.0G 0% /dev/shm /dev/sda2 100G 45G 50G 48% /home
hacker@matrix:~$ free -h
total used free shared Mem: 8.0G 2.1G 4.2G 256M Swap: 4.0G 0B 4.0G
hacker@matrix:~$ exit
O comando date não é apenas para saber as horas. Em operações de penetração, timestamps são cruciais para correlacionar eventos em logs.
Use df -h regularmente durante operações que geram logs extensos para evitar ficar sem espaço em disco no meio de uma análise crítica.
CAPÍTULO 02
Reconhecimento de Hardware
Objetivo: Mapear completamente os recursos do sistema

O conhecimento detalhado do hardware é fundamental para um hacker. Seja para otimizar exploits, entender limitações do sistema alvo ou planejar ataques que dependem de recursos específicos.

Neste capítulo, você dominará o uso de comandos no terminal para exibir informações detalhadas sobre o processador, memória, espaço em disco e dispositivos conectados do seu computador.

🔍 Análise do Processador - lscpu
O lscpu organiza informações do processador em um resumo claro, como modelo, arquitetura e número de núcleos, essencial para entender a capacidade de processamento.
hacker@matrix:~$ lscpu
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 Thread(s) per core: 2 Core(s) per socket: 4 Socket(s): 1 Model name: Intel(R) Core(TM) i7-8700K
Para dados mais granulares, núcleo por núcleo direto do kernel, use cat /proc/cpuinfo. Isso traz dados mais detalhados de cada core individual.
💾 Mapeamento de Memória - lsmem e free -h
Para a memória, free -h mostra, de forma legível, o total, o uso e o disponível, enquanto lsmem revela a organização física da memória.
hacker@matrix:~$ free -h
total used free shared Mem: 8.0G 2.1G 4.2G 256M Swap: 4.0G 0B 4.0G
hacker@matrix:~$ lsmem
RANGE SIZE STATE REMOVABLE BLOCK 0x0000000000000000-0x000000007fffffff 2G online yes 0-15 0x0000000100000000-0x000000017fffffff 2G online yes 32-47
Para métricas expandidas com dezenas de detalhes, use cat /proc/meminfo - expande esses dados com dezenas de métricas essenciais para análise forense.
💽 Verificação de Espaço em Disco - df -h e du -sh
O uso de disco é facilmente verificado com df -h, que exibe espaço livre e ocupado por partição, e du -sh detalha o consumo de uma pasta ou arquivo específico.
hacker@matrix:~$ df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 8.5G 11G 45% / tmpfs 2.0G 0 2.0G 0% /dev/shm /dev/sda2 100G 45G 50G 48% /home
hacker@matrix:~$ du -sh /var/log
2.8M /var/log
hacker@matrix:~$ du -sh /home/hacker
156M /home/hacker
🗄️ Hierarquia de Discos - lsblk
O lsblk mostra a hierarquia dos discos e partições, revelando a estrutura completa de armazenamento do sistema.
hacker@matrix:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 120G 0 disk ├─sda1 8:1 0 20G 0 part / ├─sda2 8:2 0 100G 0 part /home nvme0n1259:0 0 500G 0 disk └─nvme0n1p1 259:1 0 500G 0 part /media/backup
Combine lsblk com df -h para ter uma visão completa: estrutura física dos discos e uso real do espaço.
🔌 Periféricos USB - lsusb
Quanto aos dispositivos, lsusb lista periféricos USB conectados, útil para identificar dispositivos suspeitos ou mapear hardware disponível.
hacker@matrix:~$ lsusb
Bus 002 Device 003: ID 046d:c52b Logitech, Inc. Unifying Receiver Bus 001 Device 002: ID 8087:8000 Intel Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
🎛️ Placas PCI e Controladoras - lspci
O lspci identifica placas PCI como GPU e controladoras de rede, áudio e outras expansões internas do sistema.
hacker@matrix:~$ lspci | grep -i network
02:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200
hacker@matrix:~$ lspci | head -5
00:00.0 Host bridge: Intel Corporation 8th Gen Core Processor Host Bridge 00:02.0 VGA compatible controller: Intel Corporation UHD Graphics 630 00:14.0 USB controller: Intel Corporation Cannon Lake PCH USB 3.1 xHCI 00:16.0 Communication controller: Intel Corporation Cannon Lake PCH HECI 00:17.0 SATA controller: Intel Corporation Cannon Lake PCH SATA AHCI
🔬 Visão Global do Hardware - lshw
Para uma visão global, sudo lshw varre todo o hardware, reunindo processador, memória, armazenamento e conexões num único relatório completo.
hacker@matrix:~$ sudo lshw -short
H/W path Device Class Description ======================================================== system Computer /0 bus Motherboard /0/0 memory 8GiB System Memory /0/1 processor Intel(R) Core(TM) i7-8700K /0/100 bridge 8th Gen Core Processor Host Bridge /0/100/2 display UHD Graphics 630 /0/100/14 bus Cannon Lake PCH USB 3.1 xHCI /0/100/17 storage Cannon Lake PCH SATA AHCI
hacker@matrix:~$ sudo lshw -class network
*-network description: Wireless interface product: Wi-Fi 6 AX200 vendor: Intel Corporation physical id: 0 bus info: pci@0000:02:00.0 logical name: wlp2s0 version: 1a serial: a4:4e:31:xx:xx:xx width: 64 bits clock: 33MHz
Resumo da Estratégia: Use lscpu para processador, free -h para memória legível, df -h para discos, lsusb para USB, lspci para placas internas, e sudo lshw para relatório completo. Cada comando revela uma camada específica do hardware.
Comando ninja: sudo lshw -html > hardware_report.html gera um relatório HTML completo do hardware - perfeito para documentação de reconhecimento.
Para monitoramento contínuo, combine com watch: watch -n 2 'free -h && df -h' atualiza informações de memória e disco a cada 2 segundos.
CAPÍTULO 03
Navegação em Território Hostil
Objetivo: Explorar diretórios críticos do sistema

O diretório /var/log é uma mina de ouro para qualquer analista de segurança. Aqui residem os logs que podem revelar tentativas de intrusão, erros de sistema e atividades suspeitas.

Missão de Reconhecimento:
1. Navegue até o diretório de logs
2. Liste TODOS os arquivos (incluindo ocultos)
3. Identifique logs críticos de segurança
4. Analise permissões de acesso
hacker@matrix:~$ cd /var/log
hacker@matrix:/var/log$ ls -la
total 2856 drwxrwxr-x 15 root syslog 4096 Aug 12 14:30 . drwxr-xr-x 14 root root 4096 Jul 15 10:22 .. -rw-r--r-- 1 root root 15632 Aug 12 14:30 alternatives.log -rw-r----- 1 syslog adm 125496 Aug 12 14:30 auth.log -rw-r----- 1 syslog adm 2847 Aug 11 23:59 auth.log.1 -rw-rw-r-- 1 root utmp 292292 Aug 12 14:25 btmp -rw-r----- 1 syslog adm 85132 Aug 12 14:30 kern.log -rw-r----- 1 syslog adm 524288 Aug 12 14:30 syslog drwxr-xr-x 2 root root 4096 Aug 10 06:25 apache2/ drwxr-x--- 3 mysql mysql 4096 Aug 12 14:25 mysql/ -rw-r----- 1 root adm 1024 Aug 12 14:30 .hidden_audit.log
hacker@matrix:/var/log$ ls -la | grep "^-.*\."
-rw-r----- 1 root adm 1024 Aug 12 14:30 .hidden_audit.log
Arquivos ocultos (começando com .) em /var/log frequentemente contêm informações sensíveis que administradores tentam esconder de olhos curiosos.
O arquivo auth.log registra todas as tentativas de autenticação. É o primeiro lugar para procurar evidências de ataques de força bruta.
Use ls -la sempre que explorar novos diretórios. As permissões de arquivo podem revelar muito sobre a configuração de segurança do sistema.
CAPÍTULO 04
Navegação Entre Pasta Pessoal e Sistema
Objetivo: Entender ~ vs diretórios do sistema usando ls, file e less

Neste capítulo, você aprenderá a diferença fundamental entre sua **pasta pessoal** (~) e os **diretórios do sistema**. Usaremos os comandos ls, file e less para explorar diferentes áreas do sistema e identificar tipos de arquivo.

O símbolo ~ é um atalho para o diretório home do usuário logado. Em sistemas GNU/Linux, geralmente corresponde a /home/<nome_do_usuário>, enquanto em containers Docker executados como root, aponta para /root.

🏠 Explorando a Pasta Pessoal (~)
Primeiro, vamos explorar o diretório pessoal do usuário - seu "território seguro" no sistema:
hacker@matrix:~$ pwd
/home/hacker
hacker@matrix:~$ echo "Diretório home expandido: $(echo ~)"
Diretório home expandido: /home/hacker
hacker@matrix:~$ ls ~
Desktop Downloads Pictures Templates Documents Music Public Videos documento.txt script.sh
hacker@matrix:~$ ls -la ~
total 96 drwxr-xr-x 18 hacker hacker 4096 Aug 13 10:30 . drwxr-xr-x 3 root root 4096 Aug 1 09:00 .. -rw------- 1 hacker hacker 3154 Aug 13 10:25 .bash_history -rw-r--r-- 1 hacker hacker 220 Aug 1 09:00 .bash_logout -rw-r--r-- 1 hacker hacker 3771 Aug 1 09:00 .bashrc -rw-r--r-- 1 hacker hacker 807 Aug 1 09:00 .profile drwx------ 2 hacker hacker 4096 Aug 13 10:30 .ssh/ drwxr-xr-x 2 hacker hacker 4096 Aug 13 10:00 Desktop drwxr-xr-x 2 hacker hacker 4096 Aug 13 10:00 Documents drwxr-xr-x 2 hacker hacker 4096 Aug 13 10:00 Downloads -rw-r--r-- 1 hacker hacker 1024 Aug 13 09:15 documento.txt -rwxr-xr-x 1 hacker hacker 8760 Aug 13 09:30 script.sh
🔍 Identificando Tipos de Arquivo com 'file'
Agora vamos usar o comando file para identificar três arquivos diferentes na pasta pessoal:
hacker@matrix:~$ file ~/.bash_history
/home/hacker/.bash_history: ASCII text
hacker@matrix:~$ file ~/documento.txt
/home/hacker/documento.txt: UTF-8 Unicode text
hacker@matrix:~$ file ~/script.sh
/home/hacker/script.sh: Bourne-Again shell script, ASCII text executable
Análise dos Resultados: .bash_history é texto ASCII simples com histórico de comandos, documento.txt é texto Unicode (suporta caracteres especiais), e script.sh é um script executável do shell.
⚙️ Contrastando com Diretórios do Sistema
Agora vamos contrastar a pasta pessoal com diretórios críticos do sistema:
hacker@matrix:~$ ls /
bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr
hacker@matrix:~$ ls /var/log | head -8
alternatives.log auth.log btmp dpkg.log kern.log lastlog syslog wtmp
hacker@matrix:~$ ls -la /var/log | head -5
total 2856 drwxrwxr-x 15 root syslog 4096 Aug 13 10:30 . drwxr-xr-x 14 root root 4096 Jul 15 10:22 .. -rw-r--r-- 1 root root 15632 Aug 13 10:30 alternatives.log -rw-r----- 1 syslog adm 125496 Aug 13 10:30 auth.log
📋 Visualizando Logs do Sistema com 'less'
Agora usaremos less para visualizar um arquivo de log do sistema - área fora da pasta pessoal:
hacker@matrix:~$ less /var/log/auth.log
Aug 13 10:25:01 matrix sudo: hacker : TTY=pts/0 ; PWD=/home/hacker ; USER=root ; COMMAND=/bin/cat /etc/shadow Aug 13 10:25:15 matrix su[15432]: pam_authenticate: Authentication failure Aug 13 10:25:18 matrix sudo: hacker : TTY=pts/0 ; PWD=/home/hacker ; USER=root ; COMMAND=/usr/bin/nmap -sS 192.168.1.0/24 Aug 13 10:26:45 matrix sshd[15445]: Failed password for invalid user admin from 192.168.1.100 port 22 ssh2 Aug 13 10:27:12 matrix login[15450]: FAILED LOGIN (1) on tty1 for 'root', Authentication failure Aug 13 10:28:33 matrix sshd[15467]: Accepted password for hacker from 192.168.1.50 port 22 ssh2 (END)
hacker@matrix:~$ file /var/log/auth.log
/var/log/auth.log: UTF-8 Unicode text
⚖️ Comparação Direta: Pasta Pessoal vs Sistema
Vamos comparar diretamente as diferenças de propriedade e permissões:
hacker@matrix:~$ ls -ld ~ /var/log
drwxr-xr-x 18 hacker hacker 4096 Aug 13 10:30 /home/hacker drwxrwxr-x 15 root syslog 4096 Aug 13 10:30 /var/log
hacker@matrix:~$ echo "Pasta pessoal pertence ao usuário: $(stat -c %U ~)"
Pasta pessoal pertence ao usuário: hacker
hacker@matrix:~$ echo "Pasta /var/log pertence ao usuário: $(stat -c %U /var/log)"
Pasta /var/log pertence ao usuário: root
Contexto de Segurança: Em containers Docker executados como root, ~ aponta para /root. Em sistemas reais, a boa prática é trabalhar com usuário padrão e usar sudo apenas quando necessário, evitando operações como root por questões de segurança.
Análise Forense: O comando file pode identificar malware disfarçado. Um arquivo .jpg que retorna "ELF executable" é claramente suspeito e merece investigação.
Navegação Inteligente: Use less para logs grandes pois permite navegação (setas, Page Up/Down) e busca (/termo). Para sair, pressione 'q'. Ao usar less em logs, procure padrões suspeitos como múltiplas falhas de login ou comandos sudo incomuns.
📚 Resumo das Diferenças
Pasta Pessoal (~): Pertence ao usuário, permissões de escrita, arquivos pessoais
Diretórios do Sistema: Pertence ao root/sistema, acesso controlado, arquivos críticos
Comando ls: Lista conteúdo de diretórios
Comando file: Identifica tipos de arquivo
Comando less: Visualiza arquivos grandes com navegação
CAPÍTULO 05
Operações de Arquivo Sigilosas
Objetivo: Manipular arquivos sem deixar rastros óbvios

A manipulação de arquivos é uma habilidade fundamental. Criar, copiar e remover arquivos de forma eficiente é essencial para qualquer operação no sistema.

Operação Arquivo Fantasma:
1. Criar diretório temporário
2. Criar arquivo de teste
3. Fazer backup seguro
4. Limpar evidências
hacker@matrix:~$ mkdir Teste
hacker@matrix:~$ cd Teste
hacker@matrix:~/Teste$ touch teste.txt
hacker@matrix:~/Teste$ echo "Dados confidenciais" > teste.txt
hacker@matrix:~/Teste$ cp teste.txt teste_backup.txt
hacker@matrix:~/Teste$ ls -la
total 16 drwxr-xr-x 2 hacker hacker 4096 Aug 12 14:30 . drwxr-xr-x 19 hacker hacker 4096 Aug 12 14:30 .. -rw-r--r-- 1 hacker hacker 19 Aug 12 14:30 teste.txt -rw-r--r-- 1 hacker hacker 19 Aug 12 14:30 teste_backup.txt
hacker@matrix:~/Teste$ rm teste.txt
hacker@matrix:~/Teste$ ls -la
total 12 drwxr-xr-x 2 hacker hacker 4096 Aug 12 14:31 . drwxr-xr-x 19 hacker hacker 4096 Aug 12 14:30 .. -rw-r--r-- 1 hacker hacker 19 Aug 12 14:30 teste_backup.txt
Use shred -vfz -n 3 arquivo ao invés de rm para deletar arquivos sensíveis de forma mais segura.
Lembre-se: rm não apaga dados fisicamente. Para operações sensíveis, considere ferramentas como wipe ou dd com /dev/urandom.
CAPÍTULO 06
Arsenal de Comandos de Apoio
Objetivo: Explorar comandos usando type, which, help, man, apropos, info, whatis e alias

Neste capítulo, você aprenderá a explorar sistematicamente comandos usando **todas** as ferramentas de apoio disponíveis. Aplicaremos os comandos type, which, help, man, apropos, info, whatis e alias para investigar completamente os comandos fundamentais ls, cd e rm.

Este é um exercício de **fluência** - repetição e exploração sistemática para ganhar confiança na consulta de comandos e suas opções.

🔧 Preparação do Ambiente
Em containers Docker ou sistemas mínimos, primeiro garanta que os pacotes necessários estejam instalados:
hacker@matrix:~$ sudo apt update && sudo apt install -y man-db manpages
Reading package lists... Done Building dependency tree... Done Setting up man-db (2.10.2-1)... Building database of manual pages ...
hacker@matrix:~$ sudo mandb
Processing manual pages under /usr/share/man... Updating index cache for path `/usr/share/man/man1'. Wait...done. Checking for stray cats under /usr/share/man... Checking for stray cats under /var/cache/man...
📂 Investigação Completa do Comando 'ls'
Vamos aplicar **todos** os comandos de apoio para explorar completamente o ls:
hacker@matrix:~$ type ls
ls is aliased to `ls --color=auto'
hacker@matrix:~$ which ls
/usr/bin/ls
hacker@matrix:~$ whatis ls
ls (1) - list directory contents
hacker@matrix:~$ man ls | head -15
LS(1) User Commands LS(1) NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]... DESCRIPTION List information about the FILEs (the current directory by default). Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. Mandatory arguments to long options are mandatory for short options too.
hacker@matrix:~$ info ls | head -10
File: coreutils.info, Node: ls invocation, Next: dir invocation 10.1 'ls': List directory contents ================================== The 'ls' program lists information about files (of any type, including directories). Options and file arguments can be intermixed arbitrarily, as usual. For non-option command-line arguments that are directories, by default 'ls' lists the contents of directories, not recursively, and omitting
hacker@matrix:~$ ls ~ && echo "Comando executado no diretório home"
Desktop Downloads Pictures Templates Documents Music Public Videos Comando executado no diretório home
🚀 Investigação Completa do Comando 'cd'
Agora exploremos o comando cd - note que é um comando interno do shell:
hacker@matrix:~$ type cd
cd is a shell builtin
hacker@matrix:~$ which cd
# Sem saída - which não encontra comandos internos
hacker@matrix:~$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir] Change the shell working directory. Change the current directory to DIR. The default DIR is the value of the HOME environment variable. The variable CDPATH defines the search path for the directory containing DIR. Alternative directory names in CDPATH are separated by a colon (:). A null directory name is the same as the current directory.
hacker@matrix:~$ whatis cd
cd (1) - change working directory
hacker@matrix:~$ man cd | head -10
CD(1) User Commands CD(1) NAME cd - change working directory SYNOPSIS cd [dir] DESCRIPTION Change the current working directory to dir.
hacker@matrix:~$ pwd && cd /etc && pwd && cd ~ && pwd
/home/hacker /etc /home/hacker
🗑️ Investigação Completa do Comando 'rm'
Finalmente, exploremos o perigoso comando rm - fundamental entender completamente antes de usar:
hacker@matrix:~$ type rm
rm is /usr/bin/rm
hacker@matrix:~$ which rm
/usr/bin/rm
hacker@matrix:~$ whatis rm
rm (1) - remove files or directories
hacker@matrix:~$ apropos remove
rm (1) - remove files or directories rmdir (1) - remove empty directories unlink (1) - call the unlink function to remove shred (1) - overwrite a file to hide its contents
hacker@matrix:~$ man rm | head -20
RM(1) User Commands RM(1) NAME rm - remove files or directories SYNOPSIS rm [OPTION]... [FILE]... DESCRIPTION This manual page documents the GNU version of rm. rm removes each specified file. By default, it does not remove directories. If the -I or --interactive=once option is given, and there are more than three files or the -r, -R, or --recursive option is also given, then rm prompts the user for whether to proceed with the entire operation. If the response is not affirmative, the entire command is aborted. Otherwise, if a file is unwritable, standard input is a terminal, and the -f or --force option is not given, or the -i or
hacker@matrix:~$ info rm | head -15
File: coreutils.info, Node: rm invocation, Next: shred invocation 12.5 'rm': Remove files or directories ====================================== 'rm' removes each given FILE. By default, it does not remove directories. Synopsis: rm [OPTION]... [FILE]... If a FILE is unwritable, standard input is a terminal, and the '-f' or '--force' option is not given, or the '-i' or '--interactive' option *is* given, 'rm' prompts the user for whether to remove the file. If the response is not affirmative, the file is skipped.
🔗 Criação e Exploração de Aliases
Vamos criar e explorar aliases úteis e seguros para nossos comandos:
hacker@matrix:~$ alias
alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias l='ls -CF' alias la='ls -A' alias ll='ls -alF' alias ls='ls --color=auto'
hacker@matrix:~$ alias lh='ls -lah'
hacker@matrix:~$ alias safe-rm='rm -i'
hacker@matrix:~$ alias cdback='cd -'
hacker@matrix:~$ alias | grep -E "(lh|safe-rm|cdback)"
alias cdback='cd -' alias lh='ls -lah' alias safe-rm='rm -i'
hacker@matrix:~$ type lh
lh is aliased to `ls -lah'
🏠 Explorando Diretórios: ~ vs Sistema
Vamos entender a diferença entre o diretório pessoal (~) e os diretórios do sistema:
hacker@matrix:~$ echo "Diretório atual:" && pwd
Diretório atual: /home/hacker
hacker@matrix:~$ echo "~ expande para:" && echo ~
~ expande para: /home/hacker
hacker@matrix:~$ ls ~ | head -5
Desktop Documents Downloads Music Pictures
hacker@matrix:~$ ls / | head -8
bin boot dev etc home lib lib64 media
hacker@matrix:~$ ls -la ~ | head -5
total 108 drwxr-xr-x 17 hacker hacker 4096 Aug 13 10:30 . drwxr-xr-x 3 root root 4096 Aug 1 09:00 .. -rw------- 1 hacker hacker 3154 Aug 13 10:25 .bash_history -rw-r--r-- 1 hacker hacker 220 Aug 1 09:00 .bash_logout
Contexto Docker: Em containers, quando executado como root, ~ aponta para /root. Em sistemas reais, recomenda-se usar usuários padrão e sudo apenas quando necessário para reduzir riscos de segurança.
⚠️ Orientação — Quando `man`, `apropos` ou `whatis` não retornam resultados
Alguns comandos no GNU/Linux, como man, apropos e whatis, dependem da existência de páginas de manual instaladas e de um índice atualizado dessas páginas.
Em sistemas minimizados — como muitas imagens Docker, WSL ou instalações compactas — a documentação é removida para economizar espaço, e esses comandos não funcionam como esperado.
Sintomas Comuns:
  • apropos <palavra> retorna "nothing appropriate"
  • whatis <comando> não encontra nada
  • man <comando> mostra: "This system has been minimized... run the 'unminimize' command"
hacker@matrix:~$ sudo unminimize
# Se o sistema estiver minimizado, execute este comando # Isso restaura a documentação e outros conteúdos removidos
hacker@matrix:~$ sudo apt update && sudo apt install -y man-db manpages manpages-posix manpages-posix-dev
Reading package lists... Done Installing documentation packages... Setting up man-db and manpages...
hacker@matrix:~$ sudo mandb
Processing manual pages under /usr/share/man... Building whatis database... Done. 12,345 man pages processed.
Diagnóstico e Correção: O objetivo da atividade é que o aluno aprenda a **consultar e explorar** a documentação do sistema. Se a documentação não está disponível, não é possível aproveitar todo o potencial dos comandos. Faz parte do aprendizado saber diagnosticar essa ausência e corrigir o ambiente.
Fluência em Comandos: Use apropos [palavra-chave] para descobrir comandos relacionados. Ex: apropos network lista todos os comandos relacionados à rede.
Segurança: Sempre use type para verificar se um comando é um alias suspeito antes de executar. Um ls que executa código extra pode ser malicioso.
📚 Resumo dos Comandos de Apoio
type - Identifica se é built-in, alias ou binário
which - Localiza o caminho de binários
help - Ajuda para comandos internos do shell
man - Manual completo de comandos
apropos - Busca comandos por palavra-chave
info - Documentação detalhada
whatis - Descrição breve de comandos
alias - Cria e lista atalhos de comandos
CAPÍTULO 07
Criação e Visualização de Arquivos
Objetivo: Gerar e analisar arquivos de texto

A capacidade de criar e visualizar arquivos de texto rapidamente é fundamental para documentar descobertas, criar scripts e analisar dados.

hacker@matrix:~$ touch lista.txt
hacker@matrix:~$ echo "maçã" >> lista.txt
hacker@matrix:~$ echo "banana" >> lista.txt
hacker@matrix:~$ echo "laranja" >> lista.txt
hacker@matrix:~$ echo "uva" >> lista.txt
hacker@matrix:~$ echo "morango" >> lista.txt
hacker@matrix:~$ cat lista.txt
maçã banana laranja uva morango
hacker@matrix:~$ less lista.txt
maçã banana laranja uva morango (END)
Use >> para append e > para sobrescrever. Confundir os dois pode resultar em perda de dados importantes.
Comportamento do `less` com Arquivos Pequenos: Às vezes, quando usamos o comando less em um arquivo pequeno, como no exemplo de uma lista com cinco frutas, pode acontecer de nada parecer ser exibido. Isso ocorre porque o less é um paginador interativo que pausa a saída apenas quando o conteúdo excede a altura do terminal; em arquivos muito curtos, ele abre e fecha rapidamente, retornando ao prompt. Para confirmar se o arquivo realmente contém dados, pode-se usar cat lista.txt ou wc -l lista.txt.
Navegação vs Listagem: Para arquivos sensíveis, use less ao invés de cat. O less não deixa o conteúdo no histórico do terminal. Lembre-se: less não é um comando de listagem simples como cat, mas uma ferramenta de navegação que permanece aberta até o usuário pressionar 'q' e que, em arquivos curtos, pode não parecer que "funciona" à primeira vista.
CAPÍTULO 08
Operações de Busca Avançada
Objetivo: Localizar arquivos específicos no sistema

A habilidade de encontrar arquivos rapidamente é essencial para análise forense e reconhecimento de sistema. O comando find é uma das ferramentas mais poderosas para isso.

hacker@matrix:~$ find /var/log -name "*.log" -type f
/var/log/alternatives.log /var/log/auth.log /var/log/kern.log /var/log/syslog /var/log/apache2/access.log /var/log/apache2/error.log /var/log/mysql/error.log /var/log/mysql/mysql.log
hacker@matrix:~$ find /var/log -name "*.log" -type f -size +1M
/var/log/syslog /var/log/apache2/access.log
hacker@matrix:~$ find /var/log -name "*.log" -mtime -1
/var/log/auth.log /var/log/syslog
Use find /var/log -name "*.log" -exec grep -l "Failed password" {} \; para encontrar logs com tentativas de login falhadas.
Logs grandes (>1MB) frequentemente contêm informações valiosas. Priorize a análise destes arquivos durante reconhecimento.
CAPÍTULO 09
Editores de Texto em Ambiente Hostil
Objetivo: Dominar edição de texto no terminal

Em muitas situações de penetração ou análise, você não terá acesso a editores gráficos. Dominar vi ou nano é essencial para sobrevivência no terminal.

Missão de Edição Stealth:
1. Criar arquivo de notas sigiloso
2. Adicionar informações iniciais
3. Salvar e sair
4. Reabrir e adicionar mais dados
hacker@matrix:~$ nano notas.txt
# Editor nano aberto # Primeiro conteúdo: === RELATÓRIO DE RECONHECIMENTO === Data: 12/08/2025 Sistema: Linux Ubuntu 22.04 Status: Acesso obtido Descobertas iniciais: - Sistema bem configurado - Logs de auth ativos - Firewall ativo
hacker@matrix:~$ cat notas.txt
=== RELATÓRIO DE RECONHECIMENTO === Data: 12/08/2025 Sistema: Linux Ubuntu 22.04 Status: Acesso obtido Descobertas iniciais: - Sistema bem configurado - Logs de auth ativos - Firewall ativo
hacker@matrix:~$ nano notas.txt
# Conteúdo adicional inserido: Análise adicional: - Usuários ativos: 3 - Serviços expostos: SSH, HTTP - Portas abertas: 22, 80, 443 - Última atualização: 1 semana atrás RECOMENDAÇÕES: - Investigar logs do Apache - Verificar configurações do SSH - Analisar crontab dos usuários
No nano: Ctrl+X para sair, Ctrl+O para salvar, Ctrl+W para buscar. No vi: ESC para modo comando, :wq para salvar e sair, :q! para sair sem salvar.
Sempre limpe o histórico após editar arquivos sensíveis: history -c && history -w
CAPÍTULO 10
Operações com Pipes - Poder Combinado
Objetivo: Combinar comandos para análises complexas

O verdadeiro poder do terminal está na capacidade de combinar comandos simples para realizar análises complexas. Os pipes são a ferramenta que torna isso possível.

hacker@matrix:~$ ls /etc | less
adduser.conf alternatives/ apache2/ apparmor/ apparmor.d/ apt/ bash.bashrc bash_completion bash_completion.d/ bind/ bindresvport.blacklist binfmt.d/ bluetooth/ ca-certificates/ ca-certificates.conf calendar/ cron.d/ cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/ crontab crypttab dbus-1/ default/ deluser.conf dhcp/ dpkg/ environment fstab fuse.conf gai.conf group gshadow host.conf hostname hosts hosts.allow hosts.deny init.d/ inputrc issue issue.net kernel/ ld.so.cache ld.so.conf ld.so.conf.d/ legal libaudit.conf locale.alias locale.gen localtime login.defs logrotate.conf logrotate.d/ machine-id magic magic.mime mailcap mailcap.order manpath.config mime.types mke2fs.conf modules modules-load.d/ motd mtab mysql/ netplan/ network/ networks nsswitch.conf opt/ os-release pam.conf pam.d/ passwd profile profile.d/ protocols python3/ python3.10/ rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rcS.d/ resolv.conf rpc rsyslog.conf rsyslog.d/ security/ services shadow shells skel/ ssh/ ssl/ subgid subuid sudoers sudoers.d/ sysctl.conf sysctl.d/ systemd/ terminfo/ timezone tmpfiles.d/ udev/ ufw/ update-motd.d/ vim/ wgetrc X11/ xdg/ (END)
hacker@matrix:~$ ls /etc | grep -i ssh
ssh/
hacker@matrix:~$ ls /etc | wc -l
142
hacker@matrix:~$ ls /etc | grep conf | head -5
adduser.conf bash_completion ca-certificates.conf fuse.conf gai.conf
hacker@matrix:~$ ls -la /etc | grep "^d" | wc -l
47
Combinação poderosa: cat /var/log/auth.log | grep "Failed password" | awk '{print $11}' | sort | uniq -c | sort -nr para listar IPs com mais tentativas de login falhadas.
Use pipes para análise em tempo real: tail -f /var/log/auth.log | grep "Failed password" para monitorar tentativas de invasão em tempo real.
Pipes são excelentes para análise forense sem modificar arquivos originais. Todos os comandos trabalham com streams temporários.