LinuxCheck
Ferramenta de resposta a emergências/coleta de informações/detecção de vulnerabilidades para Linux, suporta 13 categorias com mais de 70 itens de verificação, incluindo configuração básica/tráfego de rede/tarefas agendadas/variáveis de ambiente/informações do usuário/Services/bash/arquivos maliciosos/Rootkit do kernel/SSH/Webshell/arquivos de mineração/processos de mineração/cadeia de suprimentos/riscos do servidor, etc.
Atualizações
Registro de alterações: 20 de abril de 2024
- Ajustado saída para relatório Markdown
- Abandonado ag, usado o comando grep nativo do Linux para evitar instalação adicional
- Otimizado formato do código, não mais necessário tee -a em cada linha
- Atualizada lógica de detecção de Webshell
- Atualizada lógica de detecção de authorized_keys
- Adicionada verificação de risco do servidor para JDWP e Python HTTP Server
- Adicionada detecção de contêiner Docker
- Adicionada detecção de backdoor PAM
- Adicionada capacidade de upload de relatório local para lidar com emergências em lote de máquinas.
Registro de alterações: 05 de agosto de 2022
- Corrigido problema de excesso de logs na verificação de módulos do kernel
Registro de alterações: 07 de março de 2022
- Adicionada detecção de backdoor de link simbólico SSH
Registro de alterações: 17 de outubro de 2021
- Adicionada detecção de malware de mineração Ntpclient/WorkMiner/TeamTNT
- Adicionada lógica de detecção de módulo Rootkit
- Adicionada detecção de envenenamento do pip Python
- Adicionada visualização de $HOME/.profile
- Adicionada verificação de risco do servidor (Redis)
Funções
- Verificação de configuração básica
- Verificação de alterações na configuração do sistema
- Informações do sistema (endereço IP/usuário/tempo de atividade/versão do sistema/Hostname/SN do servidor)
- Uso da CPU
- Informações de usuários logados
- CPU TOP 15
- Memória TOP 15
- Verificação de espaço restante em disco
- Montagem de disco
- Verificação de software comum
- /etc/hots
- Verificação de rede/tráfego
- ifconfig
- Tráfego de rede
- Portas em escuta
- Portas abertas ao exterior
- Conexões de rede
- Estado das conexões TCP
- Tabela de roteamento
- Encaminhamento de rota
- Servidor DNS
- ARP
- Verificação de modo promíscuo da placa de rede
- Firewall iptables
- Verificação de tarefas agendadas
- Tarefas agendadas do usuário atual
- /etc/ (tarefas agendadas do sistema)
- Hora de criação dos arquivos de tarefas agendadas
- Verificação de backdoor no crontab
- Verificação de variáveis de ambiente
- env
- path
- LD_PRELOAD
- LD_ELF_PRELOAD
- LD_AOUT_PRELOAD
- PROMPT_COMMAND
- LD_LIBRARY_PATH
- ld.so.preload
- Verificação de informações do usuário
- Usuários que podem fazer login
- Data de modificação do arquivo passwd
- sudoers
- Informações de login (w/last/lastlog)
- IPs de login históricos
- Verificação de Services
- Serviços em execução do SystemD
- Hora de criação dos serviços SystemD
- Verificação de bash
- History
- Auditoria de comandos do History
- /etc/profile
- $HOME/.profile
- /etc/rc.local
- ~/.bash_profile
- ~/.bashrc
- Reverse shell do bash
- Verificação de arquivos
- ...Arquivos ocultos
- Detecção de alteração de tempo em arquivos do sistema
- Verificação de arquivos temporários (/tmp /var/tmp /dev/shm)
- alias
- Verificação de permissões especiais suid
- Processos com arquivos não encontrados
- Alterações de arquivos nos últimos 7 dias (mtime)
- Alterações de arquivos nos últimos 7 dias (ctime)
- Arquivos grandes >200MB
- Auditoria de arquivos sensíveis (nmap/sqlmap/ew/frp/nps, etc., ferramentas comuns de hackers)
- Arquivos suspeitos de hackers (programas como wget/curl carregados por hackers, ou programas maliciosos renomeados para software legítimo, como arquivo nps renomeado para mysql)
- Verificação de Rootkit do kernel
- Módulos suspeitos do lsmod
- Verificação da tabela de símbolos do kernel
- Verificação rootkit hunter
- Verificação de módulos .ko de rootkit
- Verificação SSH
- Ataque de força bruta SSH
- Detecção SSHD
- Configuração de backdoor SSH
- Verificação de backdoor SSH inetd
- SSH key
- Verificação de Webshell
- Verificação de webshell PHP
- Verificação de webshell JSP
- Verificação de arquivos/processos de mineração
- Verificação de arquivos de mineração
- Verificação de processos de mineração
- Detecção de WorkMiner
- Detecção de Ntpclient
- Verificação de envenenamento na cadeia de suprimentos
- Verificação de envenenamento do Python PIP
- Verificação de risco do servidor
- Detecção de senha fraca do Redis
- Detecção de serviço JDWP
- Detecção de Python http.server
- Verificação de permissões Docker
Uso
Primeira forma: instalação via git clone
git clone https://github.com/al0ne/LinuxCheck.git
chmod u+x LinuxCheck.sh
./LinuxCheck.sh
Segunda forma: chamada online diretamente [chamada online não permite usar a capacidade de upload de relatório]
bash -c "$(curl -sSL https://raw.githubusercontent.com/al0ne/LinuxCheck/master/LinuxCheck.sh)"
O arquivo será salvo no formato ipaddr_hostname_username_timestamp.log
Upload automático de relatório
Se for implantação em lote, após a execução do script, ele será enviado automaticamente para uma URL. Altere o webhook_url no script para seu próprio endereço.
# Endereço de upload do relatório
webhook_url='http://localhost:5000/upload'
upload_report() {
# Faz upload para a interface especificada
if [[ -n $webhook_url ]]; then
curl -X POST -F "file=@$filename" "$webhook_url"
fi
}
Em seu servidor, execute um serviço Flask para receber os relatórios Markdown enviados pelos servidores.
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_file():
if 'file' not in request.files:
return "No file part", 400
file = request.files['file']
if file.filename == '':
return "No selected file", 400
if file:
filename = file.filename
file.save(filename)
return "File successfully uploaded", 200
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=9999)
Referências
A criação desta ferramenta foi baseada principalmente nas seguintes ferramentas/artigos, combinada com experiência pessoal
Linenum
https://github.com/lis912/Evaluation_tools
https://ixyzero.com/blog/archives/4.html
https://github.com/T0xst/linux
https://github.com/grayddq/GScan