Os sistemas operacionais Linux são usados há anos por profissionais de cibersegurança, pois oferecem facilidades aos usuários avançados ou porque são gratuitos, entre outros fatores. E independentemente do uso de distribuições populares como Ubuntu ou Fedora, outras especializadas em cibersegurança como Kali ou Parrot, ou complexas como Arch ou OpenSUSE, sabemos que o terminal de comando é um dos principais protagonistas do sistema. Especialmente para realizar atividades relacionadas ao mundo da cibersergurança.
Neste artigo, compartilhamos uma lista de 11 comandos Linux que podem ser importantes e úteis para realizar diferentes atividades relacionadas com a segurança da informação. Vale destacar que esta lista não está completa, pois existem centenas de comandos nativos e não nativos que são usados diariamente neste contexto.
touch/cat/grep
Estes são três comandos para a criação ou manipulação do conteúdo de arquivos.
No caso do touch, o comando permite a criação de um ou vários arquivos, enquanto o cat permite tanto a criação, modificação e impressão na tela do conteúdo. Ambos são particularmente úteis para criar ou modificar arquivos de configuração, ou visualizar e modificar arquivos como scripts de uma forma mais ágil. Eles também são úteis para combinar com o comando grep, que permite a busca de expressões regulares em um texto, que pode tomar como entrada a que é exibida pelo cat.
Para estas combinações, quaisquer que sejam os comandos, é necessário usar operadores. A seguir, ainda neste artigo, destacaremos os mais usados, > e | .
Por exemplo, vamos supor que em um arquivo chamado "strings.txt" conseguimos extrair as strings relevantes de uma ameaça maliciosa e, entre elas, algumas das bibliotecas usadas. O comando a seguir permite filtrar aquelas strings terminadas no ".dll", ou os nomes das bibliotecas usadas pela ameaça que pertençam ao Windows.
cat strings.txt | grep “*.dll”
E obteremos uma saída como esta:
fdisk
Este comando permite criar, apagar ou modificar as partições do disco rígido. É particularmente útil quando há várias partições com diferentes sistemas operacionais, tais como Kali ou Parrot, e quiser administrá-las, aumentar seu tamanho, apagá-las ou repará-las. Por exemplo, o seguinte comando permite listar a tabela de partições do disco.
fdisk -l
E teremos uma saída semelhante à seguinte:
cmp
O comando cmp permite saber se dois arquivos são diferentes entre si e, no caso de arquivos de texto, produzirá as diferenças que encontrar.
No mundo da cibersegurança, isto tem infinitas utilidades, mas principalmente duas. Em primeiro lugar, poder observar o código fonte de qualquer aplicativo que tenha recebido alterações recentes que resultem em um comportamento malicioso, como foi o caso de duas extensões de navegador que foram removidas das lojas oficiais para receber atualizações que levaram ao roubo de cookies de sessões em redes sociais.
Este comando também é usado em casos de ameaças que se fazem passar por instaladores ou executáveis conhecidos, tais como aplicativos de automação de escritório ou videogames, pois nos permite verificar se existem diferenças nos arquivos sem ter que executá-los. Além da verificação em si, que pode ser arriscada se soubermos que é uma ameaça baixada em nosso computador, é uma ferramenta para documentar visualmente em relatórios que se trata de arquivos diferentes.
Em ambos os casos, o comando cmp inclui o número da linha e o byte onde se encontra a primeira diferença entre os dois arquivos e, se forem iguais, não apresentará um valor.
Por exemplo, se tivermos dois arquivos chamados exec_1.o e exec_2.o, podemos executar o seguinte comando para encontrar diferenças entre eles:
cmp exec_1.o exec_2.o
E se os arquivos forem diferentes, obteremos uma saída semelhante a:
exec_1.o exec_2.o differ: char 6, line 3
dmesg
O comando dmesg (de diagnostic message) permite a obtenção de mensagens e alertas do kernel. Embora este recurso não seja exclusivo para profissionais de cibersegurança, é comum configurar um ambiente ou ferramenta que depois cause conflitos com o sistema operacional, principalmente por causa dos recursos exigidos por estas utilidades.
O uso mais comum do comando é o seguinte:
dmesg -H
Nota: a flag -H modifica a saída para torná-la mais legível para o olho humano.
Em resposta, obteremos uma saída semelhante à seguinte:
man
O comando man é provavelmente o mais importante no universo Linux. Ele vem como um manual e permite acessar informações condensadas sobre cada um dos comandos que podemos usar no console: nome do comando, breve descrição, sintaxe das flags e longa descrição.
O comando man é usado juntamente com o comando sobre o qual queremos saber mais, por exemplo:
man sudo
E obteremos uma saída como esta:
Embora as informações sejam exibidas em inglês por padrão, o seguinte comando permite baixar o adicional que permite exibir as informações do man em português, baixando o pacote correspondente e configurando-o:
apt-get install manpages-es manpages-es-extra && dpkg-reconfigure locales
Top/htop
Tanto o top como o htop fornecem uma lista em tempo real dos processos atuais em execução no sistema. Esta tabela inclui o número do processo atribuído pelo sistema operacional (PID), o usuário que o executa (incluindo o root), a prioridade de execução, o tempo de execução, a utilização da CPU e da memória em porcentagens, e o comando que ela representa. Além disso, o htop adiciona informações do sistema, como o uso atual da memória, e as torna mais legíveis ao olho humano.
Estes comandos são úteis ao realizar uma análise dinâmica de uma ameaça silenciosa, a fim de monitorar sua atividade no sistema e observar as mudanças que ela esteja realizando. Então, com outros comandos e funcionalidades (como ptrace), podemos explorar cada processo específico com seu PID.
Um exemplo de saída do comando htop é o seguinte:
É possível executar os comandos com certos filtros e opções que facilitarão as atividades de automação, se esse for o objetivo. Para fazer isto, sugerimos consultar a documentação do top, com o comando man top.
> / |
Embora ambos não sejam comandos em si, mas operadores, eles são ideais para a administração do console Linux. Estes comandos permitem criar uma linha de trabalho mais automatizada, fazendo com que seja possível condensar diversos comandos em um só.
O operador > é responsável por redirecionar a saída do primeiro comando para que ela possa ser salva em um arquivo. Pode ser útil na hora de salvar logs, ou saídas de comando que podem ser muito importantes posteriormente.
Por exemplo, se quiséssemos salvar um instantâneo dos processos que atualmente estão em execução no sistema, poderíamos fazer isso com o top através do seguinte comando:
top -b -n 1 > top.txt
Isto guardará em um formato adequado (parâmetro -b) o status exato dos processos no momento da execução (parâmetros -n 1), dentro do arquivo top.txt.
No entanto, o que acontece se antes de salvar a saída do top quisermos fazer uma busca ou aplicar um filtro? Devemos pegar a saída do top e usá-la como entrada para outro, e depois salvá-lo. É aqui que o | operador, ou pipe, pode ser útil. Isto também é um redirecionamento, mas em vez de enviar a saída de um comando para um arquivo, ele o envia como entrada para outro comando. Como o operador >, o pipe segue uma ordem de interpretação da esquerda para a direita, e este último não tem um limite para o número de comandos que podemos relacionar.
Suponha que queremos encontrar as informações de algum processo específico na saída do top. Para isso, usaremos o comando find, um mecanismo de busca de texto. Obteremos uma saída semelhante à seguinte:
Esta foi a lista de comandos e operadores que selecionamos por sua utilidade para aqueles que trabalham com cibersegurança. Como destacamos anteriormente, a lista é muito mais extensa e esta é apenas uma seleção das que consideramos mais interessantes.
Deixe nos comentários deste artigo outros comandos Linux que podem ser úteis na hora de trabalhar com cibersegurança.