
Se um malware não-root estiver tentando quebrar a senha dos usuários, quais arquivos de senha ou mesmo parte da memória ele terá que acessar? Como posso monitorar e saber se os arquivos de senha foram acessados pelo malware?
Responder1
A maioria das distros armazena senhas de login de usuários em /etc/shadow
, este arquivo é de propriedade root
e tem 0600
permissões definidas, ou seja, só root
pode ler ou gravar neste arquivo.
Dito isto, algumas distros fornecem 'chaveiros' para usuários/programas usarem. Os chaveiros são essencialmente um banco de dados ou arquivo de armazenamento secreto, por exemplo, o KDE fornece o KWallet, e programas como o Chromium usam o KWallet para armazenar senhas, etc.
Esses chaveiros geralmente são gerenciados por usuário e também armazenados com permissões 0600, portanto, apenas o usuário que possui o chaveiro pode realmente lê-lo. Portanto, se você está preocupado com malware não-root, desde que ele não esteja sendo executado como seu usuário, você está bastante seguro nesse aspecto.
Infelizmente, não posso fornecer uma lista completa de quais arquivos monitorar, porque cada distro usa sua própria solução de gerenciamento secreto (como o GNOME3 usando Seahorse em vez do KWallet). Mas eu geralmente monitoraria mudanças em:
~/.ssh/authorized keys # List of keys accepted during SSH logins
~/.profile # File sourced by your login shell
~/.bash_profile # File sourced by your login shell
~/.bashrc # File sourced by your login shell
Sobre o monitoramento, talvez a maneira mais fácil de configurá-lo seja usando a estrutura de auditoria por meio do auditctl
.
Por exemplo, isso irá monitorar todo o acesso ao arquivo de banco de dados KWallet de Bob: (regra temporária, limpa na reinicialização, a menos que seja adicionada a /etc/audit/audit.rules
)
sudo auditctl -w /home/bob/.local/share/kwalletd/kdewallet.kwl -p rwxa
E para revisar o acesso:
sudo less /var/log/audit/audit.log
Aquihá alguma documentação que pode ajudá-lo a criar suas próprias regras
Responder2
Se um software não-root estiver tentando alterar os usuários, você pode inspecionar isso com o lastb
comando:
$ sudo lastb -a | more
user pts/2 Mon Aug 10 08:17 - 08:17 (00:00)
root ssh:notty Mon Aug 10 08:17 - 08:17 (00:00) 46.148.201.206
root ssh:notty Mon Aug 10 08:17 - 08:17 (00:00) 161.35.32.43
root ssh:notty Mon Aug 10 08:16 - 08:16 (00:00) 13.68.137.194
root ssh:notty Mon Aug 10 08:16 - 08:16 (00:00) 115.196.179.138
Nesse caso, fiz login user
com uma senha com falha usando su
. Você pode ver isso no log. Você também pode ver que IPs aleatórios estão constantemente tentando adivinhar minha senha root via ssh.
Se você deseja configurar um caminho inotify ou systemd para monitorar o acesso ao arquivo, o arquivo a ser monitorado é /var/log/btmp
. lastb
usa este arquivo.
Se você quiser verificar logins bem-sucedidos, use last
. Isso monitora /var/log/wtmp
:
$ last -a
usera pts/5 Fri Jul 31 03:00 - 03:17 (00:16) 54.36.10.77
usera pts/5 Thu Jul 30 21:36 - 21:37 (00:01) 54.36.10.77
usera pts/5 Wed Jul 29 08:54 - 08:54 (00:00) 127.0.0.1
userb tty7 Tue Jul 21 11:29 still logged in :0
userb tty7 Tue Jul 21 10:59 - 11:29 (00:30) :0
userb tty7 Tue Jul 21 07:27 - 10:58 (03:31) :0
reboot system boot Tue Jul 21 09:27 still running 5.7.0-1-amd64
...
Responder3
No Linux você pode usar a estrutura inotify e ferramentas de linha de comando associadas para observar alguns acessos a arquivos feitos por outro processo.
Aqui estão as páginas de manual para referência
Se você quiser um comportamento mais elaborado, há vinculações para este framework para a maior parte da linguagem de script (python, lua, etc...)