Utilização
Verificando o Hardware
Comando para ver configuração de hardware no Linux:
Distribuição, Versão e Arquitetura
Módulos do Kernel
Verificando módulos do kernel
Selecione um módulo no resultado do comando acima e execute o comando abaixo para ver mais detalhes
Manuais de Ferramentas
A maioria das ferramentas disponíveis do Linux, possui um manual (man pages), que podem ser acessados pelo comando:
As páginas do manual são referenciadas por meio de seções enumeradas, por exemplo, ping(8)
significa que determinada informação do comando ping
, está na seção 8. Então para acessarmos, vamos utilizar o comando:
Caso não especifique a seção do manual, o comando man
irá exibir o primeiro que achar. Segue abaixo uma lista com o significado das seções:
SEÇÃO
DESCRIÇÃO
1
Comando de Usuário
2
Chamadas de Sistema
3
Documentação geral da biblioteca de programação Unix
4
Interface de dispositivos e informações sobre drivers
5
Descrições de arquivo (arquivos de configuração de sistema)
6
Jogos
7
Formatos de arquivo, convenções e codificações (ASCII, sufixos e assim por diante)
8
Comandos de sistema e servidores
Verificando Espaço em Disco
Verificando Memória
Monitorando Processos
Arquivos de Processos
Em /proc/self/fd/<id>
, podemos ver o descritor de arquivos de todos os processos. Útil para procurarmos por informações úteis e/ou flags escondidas
Variáveis de Ambientes
Variáveis de Ambiente vs Variáveis de Shell
Antes de mais nada, vamos diferenciar asVariável de Ambiente
com asVariável de Shell.
A primeira não é específica do shell e todos os processos de sistemas UNIX podem armazenam e utilizar. Já a segunda é uma variável temporária para o shell (esta não aparece na saída do comando env
).
Visualizando
Abaixo os comandos para visualizar as Variáveis de Ambiente já definidas
Logar com Root
Para ficar logado como root, digite um dos seguintes comando:
Gerenciando Usuários
Alterando Senha
APT
Chaves do APT
Ao receber erro de chave no apt install
, como NO_PUBKEY 07DC563D1F41B907
, basta pegar os últimos 8 caracteres, nesse caso 1F41B907
, e digitar os seguintes comandos:
OBS.: Caso o primeiro comando acima dê erro, utilize um dos comandos abaixo:
Se o erro ainda persistir, altere a URL pgpkeys.mit.edu
por pool.sks-keyservers.net
.
Instalações Essenciais
DPKG
OBS.: Depois de utilizar o comando dpkg -i
(instalação), execute sudo apt install -f
, para que o apt
possa verificar o que foi feito e corrigir qualquer problema que tenha aparecido durante a instalação
Desabilitando IPv6 (Debian)
Arquivos passwd e shadow
passwd
O arquivo /etc/passwd
(utilize o comando vipw
para editá-lo) armazena informações da conta do usuário separadas por :
. No exemplo abaixo temos a seguinte linha
BLOCO
DESCRIÇÃO
teste
Usuário
x
Senha criptograda que fica /etc/shadow
. Se o usuário não tiver uma senha, o campo da senha terá um * (asterisco)
1001
Todo usuário deve receber um ID (UID). O UID 0 (zero) é mantido para o usuário root, os UID's de 1 a 99 são mantidos para contas pré-definidas adicionais, os UID's de 100 a 999 é mantido pelo sistema para fins administrativos e o UID 1000 é quase sempre o primeiro usuário que não é do sistema, geralmente um administrador. Se criarmos um novo usuário em nosso sistema, ele receberá o UID 1001
1001
Indica o grupo de cada usuário. Assim como os UID's, os 100 primeiros GIDs geralmente são mantidos para uso do sistema, o GID de 0 refere-se ao grupo raiz e o GID de 1000 geralmente significa os usuários. Geralmente, novos grupos recebem GID's iniciados a partir de 1000
,,,
Este é o Gecos Field. Geralmente, esse é um conjunto de valores separados por vírgula que informa mais detalhes relacionados aos usuários. O formato para o campo GECOS indica as seguintes informações: Nome completo do usuário, número do edifício e da sala ou pessoa de contato, número de telefone do escritório, número de telefone residencial, qualquer outra informação de contato
/home/teste
Indica o caminho do diretório inicial do usuário, onde todos os seus arquivos e programas são armazenados. Se não houver um diretório especificado, então /
se tornará o diretório do usuário
/bin/bash
Denota o caminho completo do shell padrão que executa o comando (pelo usuário). Caso queira mudar de shell padrão, utilize o comando chsh
shadow
As senhas do Linux (na maioria das distribuições), podem ser encontrada em /etc/shadow
e seguem o seguinte padrão:
São dividas em 3 partes, utilizando um cifrão ($) como delimitador
A primeira parte (contendo apenas 1 dígito) informa o tipo de criptografia (1 = MD5 | 2 ou 2a = Blowfish | 5 = SHA-256 | 6 = SHA-512)
A segunda parte indica o salt, para garantir que senhas iguais tenham hashes diferentes
A terceira parte é o hash da senha
Linux utiliza MCF (Modular Crypt Format)
, um dos formatos mais utilizados em sistemas UNIX. Sistemas como Iphone não usa MCF, o que facilita quebrar a senha
Log de Logins
Mostra os últimos logins
Mostra os últimos logins para cada usuário do sistema
Rwho
Para enumerar usuários conectados a um host remoto e que esteja executando o daemon rwho (rwhod), digite:
Procurando Ferramentas no Próprio SO
GRUB
As vezes podemos nos deperar na situação onde, o GRUD está instalado, porém não reconhece o Windows. Para corrigir isso, primeiro vamos veriricar se o Windows está disponível
Caso seja positivo, edite o arquivo /etc/default/grub
e junto com as linhas onde não estão comentadas, adicione o conteúdo abaixo:
Agora basta atualizar o grub com o comando abaixo e depois reiniciar o computador.
Services
service
systemctl
Ao utilizar o enable
, pode-se utilizar o caminho completo do file.service
, caso não esteja no diretório padrão.
update-rc.d
Cronjob
OBS.: Para gerenciarmos de forma que podemos escolher o usuário que irá executar o script, basta editar o arquivo /etc/crontab
.
No arquivo /etc/crontab
também é possível esconder a execução de um script é uma linha que está comentada (inicia com um #
), como no exemplo abaixo, onde o script após o \r
será executado normalmente.
Acessando Windows via RDP
rdesktop
freeRDP
Listando Portas e Seus Serviços
Para ver uma lista completa de portas e serviços que podem rodar em um Linux, digite no terminal:
Executando Comandos sem Deixar no Histórico
Coloque um espaço antes dos comandos
Link Simbólico
O mesmo que atalhos no Windows
Subcomandos
Deixando Comandos Universal
A vantagem disso, é que é possível chamar determinado arquivo de qualquer lugar do SO (no terminal)
lsof
Expect
Automatizando a conexão com FTP. Crie um arquivo chamado ftp.sh com o seguinte conteúdo.
Criando e Montando um Diretório Próprio
Unidade de Discos Disponíveis
Deixando o Pendrive Bootavel
OBS.: Utilize dmesg
ou lsblk
para descobrir a partição do USB
Montando e Desmontando Unidades (HD/USB)
Saber montar e desmontar um diretório pode ser muito útil, como por exemplo, caso queira ter acesso a um Diretório NFS remoto
OBS.: Caso o disco não esteja em /dev/usb
, execute sudo fdisk -l
e veja se consegue encontrá-lo e então executar o comando acima para montar.
Montando Unidade de Disco de Outro Host
Para isso é preciso que outra máquina esteja compatilhando um ou mais diretórios.
Lendo Arquivos Deletados do Pen Drive
Para ler conteúdo de arquivos deletados em um USB, primeiro é preciso ver a sua partição:
Você então deverá ter uma saída como:
Após isso, execute o comando abaixo para ler conteúdos de arquivos:
noexec
Execute o comando mount
e verifique sa há particões com a flag noexec
ativa. Se tiver, significa que nessa montagem (diretório) não pode ser executado nenhum arquivo
Output em Colunas
Dividindo a saída em colunas
Acessando Site via Terminal
curl
Netcat
Ao digitar os comandos no Netcat, atente-se que o backspace e setas não funcionam. Outro ponto importante é, sempre que for utilizar a versão 1.1 do HTTP, passe a flag host
no cabeçalho, caso contrário, provavelmente sua requisição será negada. Como um bom pentester, é sempre bom também utilizar a versão 1.0 (este não precisa informar o host
) para verificar se é possível encontrar informações sensíveis no cabeçalho de retorno.
openssl
Acessa de forma semelhante ao Netcat, sendo preciso digitar os detalhes da requisição manualmente, porém com a diferença que este tem suporte a criptografia.
Wget
Explicação
PARÂMETRO
DESCRIÇÃO
m (Mirror)
Habilita os opções adequadas ao espelhamento do site
p (Page)
Garante que os arquivos necessários sejam baixados, incluindo imagens e arquivos CSS
E (Ajust Extension)
Todas as páginas são salvas como HTML
k (Convert Links)
Fará todas as páginas serem convertidas para visualização local
K (Keep Backup Converted)
Faz backup do arquivo original, com o sufixo, com o sufixo .orig
DICA: As vezes é preciso ignorar o robots.txt para que o wget consiga trabalhar normalmente, então nesse caso é preciso adicionar um -e robots=off
no comando.
Chaves SSH
Existem algumas formas de trabalhar com chaves SSH e veremos aqui alguns desses métodos. Para todos os métodos, vamos utilizar o seguinte cenário:
Host 1
= Host que irá acessar via SSH
Host 2
= Host SSH que será acessado
Método 1
O intuito deste cenário, serve para acessar determinado alvo via SSH sem precisar de senha.
Irá ser criado dois arquivos: ~/.ssh/id_rsa
e ~/.ssh/id_rsa.pub
. Utilize o parâmetro -f name
caso queira definir um nome manualmente.
Agora acesse o Host 2
(da forma que preferir) e adicione o conteúdo de id_rsa.pub
(Host 1
) em ~/.ssh/authorized_keys
. Feito isso, o Host 1
já consegue acessar o Host 2
sem precisar de senha através do comando.
Caso tenha utilizado alguma senha ao usar o comando ssh-keygen
, utilize o comando ssh-add id_rsa
para validar o acesso pela primeira vez.
Método 2
No Host 2
digite o comando ssh-keygen -t rsa
e escolha o lugar onde irá guardar as chaves (por padrão será ~/.ssh/id_rsa
), altere-o caso seja de sua preferência. Supondo que tenha deixado os valores padrões, serão criados dois arquivos, sendo eles ~/.ssh/id_rsa
e ~/.ssh/id_rsa.pub
. Agora transfira o arquivo ~/.ssh/id_rsa.pub
do Host 2
para o Host 1
(no mesmo diretório).
Agora acesse o Host 1
e digite o comando ssh-copy-id <user-host2>@<ip-host2>
e digite a senha de acesso SSH. Feito isso basta acessar o Host 2
via SSH com o comando ssh <user-host2>@<ip-host2>
, que irá conectar sem pedir senha.
Para verificar se a chave gerada está correta, utilize o comando ssh-keygen -y -e -f </home/user/.ssh/id_rsa>
, lembrando que a chave deve ter permissão 600
para funcionar corretamente.
As vezes é preciso indicar o caminho da chave privada ao acessar via SSH, exemplo ssh -i </home/user/.ssh/id_rsa> <user>@<ip>
.
Em alguns casos, podemos nos deparar com chaves que contém criptografia, que é indicada no início do arquivo, parecido como no exemplo abaixo:
DICA: Caso não saiba a senha, utilize a seção de Brute Force Offline para verificar como quebrar senha de RSA.
Podemos reverter essa chave inserindo sua senha, utilizando o comando:
Também podemos gerar chaves públicas a partir da chave primária
Método 3
Gere as chaves no host 2
e o arquivo authorized_keys
com os seguintes comandos:
Agora envie o arquivo id_rsa
(chave privada) para o Host 1
, e então ainda no Host 1
, execute o seguintes comandos para realizar o acesso.
Em alguns casos, temos acesso a um usuário mo qual já possui os arquivo id_rsa
e id_rsa.pub
. Nesse cenário basta apenas copiar o arquivo id_rsa.pub
para authorized_keys
.
Erro ao acessar via SSH
É comum as vezes recebermos o erro Unable to negotiate with <ip> port 22: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
, então precisamos modificar um pouco a nosso comando para realizar a conexão, ficando assim:
Tipo de Autenticação SSH
É sempre importanta validarmos o tipo de autenticação que pode ser realizado para conectarmos em um servidor SSH. Por exemplo, caso o server só aceite requisições utilizando chave pública, não adianta fazermos um brute force com usuário e senha procurando por credenciais válidas, porque isso não vai ser possível.
Para verificar as possibilidades de acesso, execute o comando abaixo, procure pela linha Authentications that can continue
e verifique os seus valores.
VALOR
DESCRIÇÃO
publickey
Autenticação com arquivo de chave pública
password
Autenticação com usuário e senha. Caso não tenha essa opção disponível, ataques de Brute Force não funcionam
keyboard-interactive
Autenticação utilizando MFA
SSH Não-Interativo
Executando comando via SSH sem deixar o terminal no modo interativo
SSH Renderizando GUI na Máquina Client
SSH Server
Vá em /etc/ssh/sshd_config
e descomente as seguintes linhas
Reinicie o serviço de SSH
SSH Client
Habilite o Forward
Acesse via SSH. O encaminhamento de X11 com -Y
(opção de confiança) pode resolver alguns problemas que -X
(opção segura) não consegue, porém ambos podem ser eficaz:
Agora abra serviço que tenha GUI, por exemplo:
Screen
A screen joga um processo para segundo plano e pode ser acessada futuramente. O ponto forte é que mesmo se a conexão cair (caso esteja conectado via SSH por exemplo), o processo continua rodando em background.
Uma outra maneira de colocar o processo em segundo plano (para não deixar o terminal preso), coloque um &
no final do comando.
OBS.: Para sair de uma screen sem perder a sessão, aperte CTRL
+ A
+ D
tmux
Esse é um concorrente do screen
mostrado acima, pois desempenha as mesmas funcionalidades básicas.
No TMUX, uma sessão pode possuir diversas janelas (canto inferior do terminal), e cada janela possuir diversos painéis (semelhante ao Terminator).
Arquivo de Configuração
Utilize (crie caso não tenha) o arquivo ~/.tmux.conf
para configurar o tmux do usuário atual. Exemplo de configuração.
Caso queira configurar para todo o sistema, utilize o arquivo /etc/tmux.conf
.
Comandos Básicos
IMPORTANTE: Antes de executar os comandos, certifique-se de presionar CTRL
+ B
e depois de soltar as duas teclas, pressionar próxima tecla ou digitar algum comando seguido de :
(dois pontos).
Habilitando o scroll do mouse
Verificando sessões ativas
Acessando uma sessão já ativa
Iniciando uma sessão com nome personalizado
Detached na sessão
Criando nova janela
Renomeando uma janela
Alterando para a próxima sessão
Alterando para a sessão anterior
Alterando para uma sessão através do seu número
Dividindo a painel horizontalmente
Dividindo a painel verticalmente
Invertendo posições dos painéis
Alterando de painel
Exibindo o número dos painéis
Deixa o painel atual em tela cheia. Execute o comando novamente para voltar ao normal
Finalizando um painel
Finalizando uma sessão
Scroll no navegador como se fosse um editor de texto (caractere por caractere). Pressione q
para sair
Ainda nesse modo, é possível realizar buscas em strings no buffer do terminal, pressionando CTRL
+ S
. Após fazer isso, pressione N
para avançar ou Shift
+ N
para voltar, semelhante ao VI
.
Telnet
Geralmente acessamos o telnet através do comando telnet <ip>
, porém nem sempre o telnet está disponível. Nesse caso, podemos utilizar o netcat
para realizar o acesso.
Acessando Windows via Remote Desktop
É possível acessar um Windows pelo RDP na porta 3389, a partir de um Linux
Criando Functions
Criar funcition pode ser útil para startar sistemas em background, conexões SSH, criar alias, etc. No exemplo abaixo, vamos inicializar uma tool e deixar o terminal livre para a utilização.
Abra o arquivo com o comando nano ~/.bashrc
e depois insira as seguintes linhas no final
Para não precisar reiniciar o SO, utilize o comando source ~/.bashrc
(disponível somente nesse mesmo terminal).
Agora só digitar no terminal: <name_metodo>
(sem os parênteses)
Configurando Teclado
Ou se preferir, pode editar manualmente o arquivo /etc/default/keyboard
OBS.: Utilize o arquivo /usr/share/doc/keyboard-configuration/xorg.lst
para mais detalhes
Criando Diretórios com Vários Subdiretórios
Útil quando iremos criar um diretório e vários subdiretórios dentro desse diretório. Podemos fazer isso com um só comando ao invés de utilizar vários comandos.
Diretórios com Nomes Camuflados
No Linux é possível criar pastas chamadas ..
ou .
(atenção ao espaço no final). Isso é muito utilizado por hackers pra enganar os administradores de rede
Executando Comando por Arquivo
Verificando Tempo de Execução
Útil para saber quanto tempo determinado comando gasta para executar
Timestamp / Data
Configurando Data/Hora manualmente
Para voltar com o horário normal de forma automática (através do NTP), execute:
Sincronizando com um server NTP
Convertendo valores
Instalando Flash Player
Execute o comando abaixo e depois reinicie o nvegador
Xterm
Quando receber erro no terminal Error opening terminal: xterm-256color
, execute o comando abaixo:
Esse erro ocorre porque o terminal precisa trabalhar com mais cores, por exemplo o ht editor
, onde o terminal fica azul. Fora isso, você poderá ter recursos como o comando clear
, caso esteja em uma shell reversa.
Montando Unidade de Disco com VMDK
Montando arquivos VMDK (HD de VM) como Unidade de Disco:
Navegando em Páginas Web via Terminal
lynx
browsh
netcat
Weechat
Este é um bate papo via terminal
Lendo LOG's
Quando for abrir um arquivo de log como /var/log/wtmp
, utilize o comando who
ao invés de cat
, pois esse arquivo está em binário.
Transformando a VPS em Proxy
Antes de realizar esse procedimento, tome cuidado, pois não está configurado para pedir senha na utilização do proxy
Placa de Vídeo NVidia (Ubuntu)
Exibindo as placas de vídeos no host
Instalando drivers
Visualizando informações da placa de vídeo (versão da placa, cuda, etc) e processos que estão utilizando
Vendo tudo o que está executando na placa de vídeo onboarding
Vendo a Previsão do Tempo
No final da url, coloque a sua cidade, por exemplo: Sao_Paulo
Sites
Last updated