Browse By

TuxResponse – Resposta a incidentes no Linux

TuxResponse é um script de resposta a incidentes para sistemas Linux escritos em bash. Ele pode automatizar atividades de resposta a incidentes em sistemas Linux e permitir a triagem de sistemas rapidamente, sem comprometer os resultados. Normalmente, os sistemas corporativos teriam algum tipo de monitoramento e controle, mas há exceções devido à sombra da TI e às imagens não padronizadas implantadas no corpo. O que equivale a digitar 10 comandos com o teste final de teste pode ser feito com o pressionar de um botão.

Testado em:

  • Ubuntu 14+
  • CentOS 7+

Objetivo principal:

  • Tire proveito das ferramentas e funcionalidades incorporadas no Linux (ferramentas como dd, awk, grep, cat, netstat, etc.)
  • Reduza a quantidade de comandos que o respondente de incidente precisa lembrar / usar no cenário de resposta.
  • Automação

Ferramentas externas no pacote:

  • Lima
  • Exif
  • Chckrootkit
  • Regras de varredura Yara + Linux (precisa de rede para buscar o repositório)

Exemplo de automação:

INSTALL LiME
function init_lime(){

  if [ -f /usr/bin/yum ]; then
    yum -y install make kernel-headers kernel-devel gcc
  elif [ -f /usr/bin/apt-get ]; then
    apt-add-repository universe
    apt-get -y install make linux-headers-$(uname -r) gcc
  fi

  rm -f /tmp/v1.8.1.zip
  wget -P/tmp https://github.com/504ensicsLabs/LiME/archive/v1.8.1.zip
  unzip /tmp/v1.8.1.zip
  rm -f /tmp/v1.8.1.zip

  pushd LiME-1.8.1/src
    make
    mv lime-*.ko /tmp/lime.ko
  popd
  rm -rf LiME-1.8.1
}

Ao responder a incidentes, se você precisar instalar o LiME digitando manualmente todos os comandos, isso diminuirá sua velocidade significativamente.

Funcionalidade

1) Resposta ao vivo

1) Sistema de pegada

   1)System info, IP, Date, Time, local TZ, last boot - 'hostnamectl; who -b; uname -a; uptime; ifconfig; date; last reboot'

2) Ferramentas do sistema de arquivos

    1)Check mounted filesystems -'df -h'
    2)Hash executables (MD5) - 'find /usr/bin -type f -exec file "{}" \; | grep -i "elf" | cut -f1 -d: | xargs -I "{}" -n 1 md5sum {}'
    3)Modified files - 'modified_files_period_select' (calling a function in tuxresponse.sh)
    4)List all hidden directories - 'find / -type d -name "\.*"'
    5)Files/dirs with no user/group name - 'find / \( -nouser -o -nogroup \) -exec ls -l {} \; 2>/dev/null'
    6)Changed files from packages -'packaged_files_changed' (calling a function in tuxresponse.sh)

3) YARA, CHKROOTKIT, EXIFTool

      1) Check for rootkits - runs 'chkrootkit'
      2) Yara scan - calling a function tuxresponse.sh 'yara_select' (scans system with all YARA linux rules available in master repo)
      3) EXIFTool - calling a function tuxresponse.sh 'exiftool_select' (installs EXIFTool)

4) Ferramentas de Análise de Processo

      1) List running processes - 'ps -axu'
      2) Deleted binaries still running - 'ls -alR /proc/*/exe 2> /dev/null | grep deleted'
      3) Active Network Connections (TCP, UDP) - 'ss -tunap | sed "s/[ \t]\+/|/g"'
      4) Dump process based on PID - 'dump_process_select' (calling a function in tuxresponse.sh)
          1) Enter PID to dump: **(this is the command executed - gcore -a -o "${DUMP_FILE}" ${DUMP_PID} )**
      5) Process running from /tmp, /dev - 'ls -alR /proc/*/cwd 2> /dev/null | grep -E "tmp|dev"'

5) Análise de conexões de rede

      1) List all active network connections/raw sockets - 'netstat -nalp; netstat -plant'

6) Usuários

      1) List all users connected to the system - 'w' 
      2) Get users with passwords - 'getent passwd'

7) Bash

      1) Check bash history file - 'cat ~/.bash_history | nl'

8) Evidência de persistência

      1) List All Cron Jobs - 'list_all_crontab' (calling a function in tuxresponse.sh)
      2) List All on-startup/boot programs - 'list_all_onstartup' (calling a function in tuxresponse.sh)

9) Despejar todos os logs (/ var / log)

      1) Dump Users .bash_history - 'cat_all_bash_history' (calling a function in tuxresponse.sh)
      2) Find logs with binary inside -  'grep [[:cntrl:]] /var/log/*.log'

2) Conectar ao destino – use o SSH para transferir scripts e analisar o sistema remoto.

      That option enables you to connect to a remote system, copy over all scripts and tools and analyze the system.

3) Aceitar despejo de memória (LKM LiME)

      That option enables you to compile LiME from source and dump the RAM memory off the system. This is the easiest way to do it as the other way around would be to compile from source for all major kernel versions and insert the LKM.

4) Obter imagem de disco (DD)

That option enables you to do a full disk image of the target system using well-known tool - dd. The function is taking source and destination as parameters and inserts them in the following command 'dd if=${IMAGE_IN} | pv | dd of='${IMAGE_OUT}' bs=4K conv=noerror,sync'. If you're investigating remote system, the script is going to copy itself there. Then if the parameter ${TARGET_HOST} is set, then the script is going to download the image to analyst system using this command >> "ssh -p${TARGET_PORT} ${TARGET_USER}@${TARGET_HOST} 'dd if=${IMAGE_IN} bs=4K conv=noerror,sync' | pv | dd of='${IMAGE_OUT}'" (im heavily using pv to make sure progress is tracked)

5) Gere relatório HTML
Tudo o que você faz é gravado em arquivos de texto, facilitando assim o retorno e a visualização da saída. A vantagem disso é que você pode carregá-lo em suas ferramentas de análise de log favoritas e compreendê-lo posteriormente. Além disso, você pode usar essa função para gerar um relatório HTML e observar a saída gerada por comando em uma forma legível por humanos.

6) Instale o software

      Install binaries that are required by the script to function correctly.
      1) Dependancies
      2) Yara and rules
      3) ExifTool
      4) Init check
      5) chckrootkit
      6) LiME

Baixar TuxResponse

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.