Python Forensics no Linux
A principal preocupação das investigações digitais é proteger evidências ou dados importantes com criptografia ou qualquer outro formato. O exemplo básico é armazenar as senhas. Portanto, é necessário entender o uso do sistema operacional Linux para implementação forense digital para proteger esses dados valiosos.
As informações de todos os usuários locais são principalmente armazenadas nos dois arquivos a seguir -
- /etc/passwd
- etc/shadow
O primeiro é obrigatório, que armazena todas as senhas. O segundo arquivo é opcional e armazena informações sobre os usuários locais, incluindo as senhas com hash.
Surgem questões relacionadas à segurança de armazenar as informações de senha em um arquivo, que pode ser lido por todos os usuários. Portanto, as senhas com hash são armazenadas em/etc/passwd, onde o conteúdo é substituído por um valor especial "x"
Os hashes correspondentes devem ser pesquisados em /etc/shadow. As configurações em/etc/passwd pode substituir os detalhes em /etc/shadow.
Ambos os arquivos de texto no Linux incluem uma entrada por linha e a entrada consiste em vários campos, separados por dois pontos.
O formato de /etc/passwd é o seguinte -
Sr. Não. | Nome e descrição do campo |
---|---|
1 | Username Este campo consiste em atributos de formato legível por humanos |
2 | Password hash Consiste na senha em uma forma codificada de acordo com a função Posix crypt |
Se a senha hash for salva como empty, o usuário correspondente não exigirá nenhuma senha para fazer login no sistema. Se este campo contiver um valor que não pode ser gerado pelo algoritmo de hash, como um ponto de exclamação, o usuário não poderá fazer logon usando uma senha.
Um usuário com uma senha bloqueada ainda pode fazer logon usando outros mecanismos de autenticação, por exemplo, chaves SSH. Conforme mencionado anteriormente, o valor especial "x"significa que o hash da senha deve ser encontrado no arquivo shadow.
o password hash inclui o seguinte -
Encrypted salt - o encrypted salt ajuda a manter os bloqueios de tela, pinos e senhas.
Numerical user ID- Este campo denota o ID do usuário. O kernel do Linux atribui esse ID do usuário ao sistema.
Numerical group ID - Este campo se refere ao grupo principal do usuário.
Home directory - Os novos processos são iniciados com uma referência a este diretório.
Command shell - Este campo opcional indica o shell padrão que deve ser iniciado após um login bem-sucedido no sistema.
A perícia digital inclui a coleta de informações que são relevantes para rastrear uma evidência. Conseqüentemente, os IDs de usuário são úteis para manter os registros.
Usando Python, todas essas informações podem ser analisadas automaticamente para os Indicadores de Análise, reconstruindo a atividade recente do sistema. O rastreamento é simples e fácil com a implementação do Linux Shell.
Programação Python com Linux
Exemplo
import sys
import hashlib
import getpass
def main(argv):
print '\nUser & Password Storage Program in Linux for forensic detection v.01\n'
if raw_input('The file ' + sys.argv[1] + ' will be erased or overwrite if
it exists .\nDo you wish to continue (Y/n): ') not in ('Y','y') :
sys.exit('\nChanges were not recorded\n')
user_name = raw_input('Please Enter a User Name: ')
password = hashlib.sha224(getpass.getpass('Please Enter a Password:')).hexdigest()
# Passwords which are hashed
try:
file_conn = open(sys.argv[1],'w')
file_conn.write(user_name + '\n')
file_conn.write(password + '\n')
file_conn.close()
except:
sys.exit('There was a problem writing the passwords to file!')
if __name__ == "__main__":
main(sys.argv[1:])
Resultado
A senha é armazenada em formato hexadecimal em pass_db.txtcomo mostrado na imagem a seguir. Os arquivos de texto são salvos para uso posterior em perícia computacional.