Monitor de acesso a arquivos

Monitor de acesso a arquivos

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 roote tem 0600permissões definidas, ou seja, só rootpode 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 lastbcomando:

$ 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 usercom 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. lastbusa 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...)

informação relacionada