D E S I G N A Ç Ã O D O M E S T R A D O
A U T O R
O R I E N T A D O R ( E S )
A N O
w w w .
e s t g f
. i p p . p t
Recolha de informação de estado para análise forense
digital
Mestrado em Engenharia Informática
Fábio André Soares de Freitas
Prof. Doutor António Alberto dos Santos Pinto
No contexto de uma an´
alise forense a um computador, ´
e usual que o t´
ecnico
queira obter o m´
aximo de informa¸
c˜
ao poss´ıvel. Em particular, sempre que
um t´
ecnico se depara com um computador ligado, este dever´
a tentar recolher
o m´
aximo de informa¸
c˜
ao de estado poss´ıvel. Dispositivos USB
apresentam-se como ve´ıculos interessantes para construir mecanismos automatizados
para esta recolha de informa¸
c˜
ao, pois permitem armazenar as aplica¸
c˜
oes
ne-cess´
arias para a recolha da informa¸
c˜
ao, o resultado da recolha da informa¸
c˜
ao
e facilitar a recolha de forma autom´
atica ap´
os a sua inser¸c˜
ao no PC. Este
trabalho tece uma proposta de solu¸
c˜
ao USB para facilitar a recolha de
in-forma¸c˜
ao de estado com garantia de integridade e multi-plataforma.
Palavras Chave: Resposta a incidentes inform´
aticos, Recolha informa¸
c˜
ao,
Multi-plataforma, USB, Informa¸c˜
ao homog´
enea, Integridade.
In the context of a digital forensic analysis, the technician usually wants to
get as much information as possible. In particular, whenever a technician
encounters a computer that is turned on, it should try to collect as much
status information as possible. USB devices present themselves as
interes-ting vehicles for the automated collection of such information, as it can store
the applications required for the collection of the information, can store the
results of the information collection and can also facilitate the information
collection by enabling its automatic operation, where available. This paper
proposes a USB solution to facilitate the collection of state information with
integrity guarantees and multi-platform operation.
Key Words: Computer incident response, Information collection,
Multi-platform, USB, Homogeneous information, Integrity.
1
Introdu¸
c˜
ao
1
1.1
Objetivos do trabalho . . . .
2
1.2
Resultados relevantes . . . .
3
1.3
Estrutura do relat´
orio . . . .
3
2
Criptografia
5
2.1
Fun¸
c˜
oes Criptogr´
aficas de Resumo . . . .
6
2.1.1
MD5 . . . .
7
2.1.2
SHA-1 . . . .
7
2.1.3
SHA-2 . . . .
8
2.2
Conclus˜
ao . . . .
9
3
Trabalho Relacionado
11
3.1
ir-triage-toolkit . . . .
11
3.2
IRKIT . . . .
14
3.3
Tr3Secure . . . .
16
3.4
Tr3Secure Master . . . .
19
3.5
Live Response BriMor . . . .
22
3.6
Live Response Nekyia . . . .
25
3.7
Triage-Responder . . . .
27
3.8
Compara¸
c˜
ao . . . .
28
3.9
Conclus˜
ao . . . .
29
4
DFIRU
31
4.1
Requisitos . . . .
31
4.2
Arquitetura da solu¸
c˜
ao . . . .
32
4.3
Conclus˜
ao . . . .
40
5
Avalia¸
c˜
ao do trabalho
41
5.1
Script de instala¸
c˜
ao
. . . .
41
5.2
Testes ao prot´
otipo . . . .
44
5.3
Conclus˜
ao . . . .
50
vii
6
Conclus˜
oes
51
6.1
Resultados relevantes . . . .
52
6.2
Trabalho Futuro
. . . .
52
A Scripts Desenvolvidos
59
A.1 Scripts de Instala¸
c˜
ao . . . .
59
A.2 Scripts Inicial . . . .
65
A.3 Scritps de Rede . . . .
67
A.4 Scripts de Estado . . . .
74
A.5 Scripts de Sistema . . . .
81
A.6 Scripts de Utilizador . . . .
90
A.7 Scripts de Dispositivos . . . .
96
A.8 Scripts de Logs . . . 100
2.1
Exemplo de SHA-256 [1] . . . .
6
4.1
Arquitetura da aplica¸
c˜
ao DFIRU . . . .
32
4.2
Janela Principal da aplica¸
c˜
ao DFIRU . . . .
37
4.3
Janela para marcar password do administrador . . . .
39
4.4
Janela de execu¸
c˜
ao . . . .
39
5.1
Teste formata¸
c˜
ao em Linux . . . .
44
5.2
Teste de auto-execu¸
c˜
ao em Linux . . . .
45
5.3
Informa¸c˜
ao recolhida pela aplica¸
c˜
ao em Linux . . . .
45
5.4
Teste para verificar integridade no Linux . . . .
46
5.5
Teste de execu¸
c˜
ao no Windows . . . .
46
5.6
Teste da listagem de todos os ficheiros do disco . . . .
49
5.7
Teste da mem´
oria Random Access Memory (RAM) . . . .
50
3.1
Taxa de recolha de informa¸
c˜
ao (em %) . . . .
28
4.1
Rela¸
c˜
ao informa¸
c˜
ao/comando - Windows[2] . . . .
33
4.2
Rela¸
c˜
ao informa¸
c˜
ao/comando - Linux[3] . . . .
34
4.3
Rela¸
c˜
ao informa¸
c˜
ao/comando - macOS[4]
. . . .
35
3.1
Criar kit de aplica¸
c˜
oes no ir-triage-toolkit (Linux)
. . . .
11
3.2
Executar ir-triage-toolkit no Linux . . . .
12
3.3
Script run.sh do ir-triage-toolkit no Linux . . . .
12
3.4
Exemplo de um output do ir-triage-toolkit no Linux . . . . .
13
3.5
Executar IRKIT no Windows . . . .
14
3.6
Script IRKIT para Windows . . . .
14
3.7
Exemplo de um output do IRKIT no Windows . . . .
15
3.8
Executar Tr3Secure no Windows . . . .
16
3.9
Script Tr3Secure para Windows . . . .
17
3.10 Exemplo de output do Tr3Secure no Windows . . . .
18
3.11 Executar Tr3Secure Master no Windows . . . .
20
3.12 Script Tr3Secure Master para Windows
. . . .
20
3.13 Exemplo de um output do Tr3Secure Master no Windows . .
21
3.14 Executar Live Response BriMor no Linux . . . .
22
3.15 Script Live Response BriMor no Linux . . . .
23
3.16 Exemplo de um output do Live Response BriMor no Linux
.
24
3.17 Executar Live Response Nekyia no Linux
. . . .
25
3.18 Script Live Response Nekyia para Linux . . . .
25
3.19 Exemplo de um output do Live Response Nekyia no Linux . .
26
4.1
Script para recolha de informa¸
c˜
ao de rede - Linux . . . .
36
4.2
Ficheiro de configura¸c˜
ao DFIRU
. . . .
38
4.3
Extrato de um output do DFIRU no Linux . . . .
40
5.1
Exemplo do script instala¸
c˜
ao Windows . . . .
41
5.2
Script de contabiliza¸
c˜
ao de tempos para c´
alculo de hashes . .
47
5.3
Execu¸c˜
ao do script de contabiliza¸
c˜
ao de tempo gasto em c´
alculo
de resumos
. . . .
48
A.1 Script de instala¸c˜
ao Linux . . . .
59
A.2 Script de instala¸c˜
ao Windows . . . .
63
A.3 Script Inicial Linux . . . .
65
A.4 Script Inicial macOS . . . .
66
A.5 Script Inicial Windows . . . .
66
A.6 Script de Rede Linux . . . .
67
A.7 Script de Rede Admin Linux . . . .
68
A.8 Script de Rede macOS . . . .
69
xiii
A.9 Script de Rede Admin macOS . . . .
70
A.10 Script de Rede Windows . . . .
72
A.11 Script de Rede Admin Windows
. . . .
73
A.12 Script de Estado Linux
. . . .
74
A.13 Script de Estado Admin Linux . . . .
75
A.14 Script de Estado macOS . . . .
76
A.15 Script de Estado Admin macOS
. . . .
77
A.16 Script de Estado Windows . . . .
78
A.17 Script de Estado Admin Windows . . . .
79
A.18 Script de Sistema Linux . . . .
81
A.19 Script de Sistema Admin Linux . . . .
82
A.20 Script de Sistema macOS . . . .
84
A.21 Script de Sistema Admin macOS . . . .
85
A.22 Script de Sistema Windows . . . .
87
A.23 Script de sistema Admin Windows . . . .
88
A.24 Script de Utilizador Linux . . . .
90
A.25 Script de Utilizador Admin Linux
. . . .
91
A.26 Script de Utilizador macOS . . . .
92
A.27 Script de Utilizador Admin macOS . . . .
93
A.28 Script de Utilizador Windows . . . .
94
A.29 Script de Utilizador Admin Windows . . . .
95
A.30 Script de Dispositivos Linux . . . .
96
A.31 Script de Dispositivos Admin Linux
. . . .
97
A.32 Script de Dispositivos macOS . . . .
97
A.33 Script de Dispositivos Admin macOS . . . .
98
A.34 Script de Dispositivos Windows . . . .
98
A.35 Script de Dispositivos Admin Windows
. . . .
99
A.36 Script de Logs Linux . . . 100
A.37 Script de Logs Admin Linux . . . 101
A.38 Script de Logs macOS . . . 101
A.39 Script de Logs Admin macOS . . . 102
A.40 Script de Logs Windows . . . 102
A.41 Script de Logs Admin Windows . . . 103
A.42 Script de Integridade Linux . . . 103
A.43 Script de Integridade Admin Linux . . . 104
A.44 Script de Integridade Dump Linux . . . 105
A.45 Script de Integridade Dump Admin Linux . . . 106
A.46 Script de Integridade Hashes Linux . . . 107
A.47 Script de Integridade Hashes Admin Linux
. . . 108
A.48 Script de Integridade Comandos Linux . . . 109
A.49 Script de Integridade Comandos Admin Linux
. . . 114
A.50 Script de Integridade macOS . . . 120
A.51 Script de Integridade Admin macOS . . . 121
A.53 Script de Integridade Dump Admin macOS . . . 122
A.54 Script de Integridade Hashes macOS . . . 123
A.55 Script de Integridade Hashes Admin macOS . . . 123
A.56 Script de Integridade Comandos macOS . . . 124
A.57 Script de Integridade Comandos Admin macOS . . . 128
A.58 Script de Integridade Windows . . . 132
A.59 Script de Integridade Admin Windows . . . 133
A.60 Script de Integridade Dump Windows . . . 134
A.61 Script de Integridade Dump Admin Windows . . . 135
A.62 Script de Integridade Hashes Windows . . . 136
A.63 Script de Integridade Hashes Admin Windows
. . . 137
A.64 Script de Integridade Comandos Windows . . . 138
AES: Advanced Encryption Standard
APOP: Authenticated Post Office Protocol
ARP: Address Resolution Protocol
CD-ROM: Compact Disc Read-Only Memory
DNS: Domain Name System
exFAT: Extended File Allocation Table
FIPS: Federal Information Processing Standard
GCC: GNU Compiler Collection
GHz: Gigahertz
HMAC: Hash-based Message Authentication Code
ID: Identifier
IP: Internet Protocol
IR: Incident Response
LiME: Linux Memory Extractor
MAC: Medium Access Control
MD5: Message-Digest algorithm 5
NIST: National Institute of Standards and Technology
NTFS: New Technology File System
PID: Process Identifier
RAM: Random Access Memory
RFC: Request for Comments
RPM: Red Hat Package Manager
SHA-1: Secure Hash Algorithm 1
SHA-2: Secure Hash Algorithm 2
USB: Universal Serial Bus
Introdu¸
c˜
ao
Em situa¸
c˜
oes de resposta a incidentes de seguran¸
ca inform´
atica, ou
Inci-dent Response (IR), em inglˆ
es [5], o analista forense tenta recolher toda
a informa¸
c˜
ao poss´ıvel. Situa¸
c˜
oes de IR podem incluir atividades que
pas-sam por: confirmar a real existˆ
encia de um incidente; providenciar uma
r´
apida dete¸c˜
ao e conten¸c˜
ao; identificar factos e informa¸
c˜
oes reais; minimizar
interrup¸c˜
oes comerciais e de opera¸
c˜
ao da rede; minimizar danos para a
or-ganiza¸c˜
ao; recuperar e gerir a perce¸
c˜
ao p´
ublica do incidente; recolher provas
que possibilitem a¸
c˜
oes legais ou civis contra os autores do crime; informar
a gest˜
ao de topo; e, por fim, melhorar a postura da organiza¸
c˜
ao perante
futuros incidentes de seguran¸
ca [6].
A an´
alise de informa¸
c˜
ao de estado surge como um aspeto importante da
an´
alise forense digital, especialmente quando se tratam de situa¸c˜
oes de IR
que envolvam v´
arios equipamentos ligados em rede. Este tipo de
procedi-mento de an´
alise forense digital ´
e usualmente designado de live forensics. O
objetivo deste tipo de an´
alise forense ´
e o de recolher dados vol´
ateis antes
de se desligar o sistema a ser analisado, recolhendo informa¸c˜
oes como, por
exemplo, uma c´
opia da mem´
oria RAM ou a lista de processos em execu¸
c˜
ao.
Esta informa¸
c˜
ao de estado ´
e considerada como vol´
atil, pois ser´
a perdida com
o desligar do equipamento.
A informa¸c˜
ao de estado armazenada na mem´
oria RAM pode conter
evidˆ
encias de interesse para o analista, tais como [7]: a lista de
proces-sos em execu¸
c˜
ao; o hist´
orico de comandos executados na consola; palavras
passe utilizadas recentemente (algumas em texto leg´ıvel); mensagens
ins-tantˆ
aneas; endere¸
cos IP; quem tem sess˜
ao iniciada no sistema; que portas
de rede e aplica¸
c˜
oes est˜
ao `
a escuta de liga¸
c˜
oes IP; informa¸
c˜
ao do sistema;
lista e hist´
orico de dispositivos ligados, entre outras.
A informa¸
c˜
ao recolhida numa an´
alise forense digital live n˜
ao deve ser
vista como um substituto daquela que ´
e obtida por uma an´
alise forense
tradicional. Deve ser vista como complementar que permitir´
a recolher
in-forma¸
c˜
ao n˜
ao dispon´ıvel de outra forma. A an´
alise forense tradicional, que
envolve a c´
opia bit a bit dos suportes de armazenamento de dados e a sua
an´
alise posterior, ´
e normalmente dirigida a um conjunto reduzido de
equipa-mentos j´
a que ´
e um processo moroso. Por outro lado, a recolha de informa¸c˜
ao
de estado, podendo ser automatizada, torna-se numa fonte de informa¸
c˜
ao
complementar que pode ser muito ´
util. Permite, por exemplo, perceber que
liga¸
c˜
oes est˜
ao estabelecidas entre os v´
arios equipamentos e da´ı verificar a
existˆ
encia de v´ırus, spyware, malware ou outro tipo de programas
malicio-sos que fa¸
cam uso da rede para comunicar com um servidor de controlo, por
exemplo.
A recolha de dados vol´
ateis n˜
ao est´
a isenta de risco. Por um lado, numa
recolha de informa¸
c˜
ao de estado ´
e necess´
ario utilizar-se o sistema em an´
alise
que poder´
a estar comprometido e, eventualmente, comprometendo tamb´
em
a informa¸
c˜
ao recolhida. Por outro, a recolha de informa¸
c˜
ao de estado ´
e um
processo intrusivo, no sentido em que a recolha de informa¸
c˜
ao de estado
altera o estado do sistema em an´
alise. Altera¸
c˜
ao esta que ´
e imperioso evitar
numa an´
alise forense digital tradicional.
Uma abordagem poder´
a ser a de se usar um processo automatizado,
previamente conhecido, que permitir´
a prever o seu impacto na informa¸
c˜
ao
de estado. De outra forma, poder-se-´
a causar altera¸c˜
oes excessivas,
des-necess´
arias e n˜
ao previs´ıveis para o sistema em an´
alise.
Possivelmente,
interrompendo processos de neg´
ocio, destruindo provas, ou alertando um
atacante da sua presen¸
ca. Em alguns casos, realizar uma recolha de dados
vol´
ateis pode causar a falha do sistema. O investigador dever´
a estar bem
preparado e ser diligente na recolha de dados vol´
ateis.
Dispositivos de armazenamento Universal Serial Bus (USB)
apresentam-se como ve´ıculos interessantes para construir mecanismos automatizados
para esta recolha de informa¸
c˜
ao, pois permitem armazenar tanto as aplica¸
c˜
oes
necess´
arias para a recolha da informa¸
c˜
ao como o resultado da recolha, s˜
ao
fa-cilmente transport´
aveis, podem ter grandes capacidades de armazenamento
e facilitam a recolha de forma autom´
atica ap´
os a sua inser¸
c˜
ao no PC.
Atualmente, n˜
ao est˜
ao dispon´ıveis solu¸c˜
oes que permitam efectuar a
re-colha de informa¸
c˜
ao de estado num contexto de an´
alises forense que,
simul-taneamente, seja multi-plataforma, exaustivo na sua recolha de informa¸
c˜
ao
de estado, homog´
eneo quanto `
a qualidade e quantidade de informa¸
c˜
ao
reco-lhida, independentemente do sistema operativo em an´
alise, capaz de garantir
a integridade de comandos e da informa¸
c˜
ao recolhida e port´
avel.
1.1
Objetivos do trabalho
O objetivo deste trabalho consiste na elabora¸
c˜
ao de uma proposta de solu¸c˜
ao
que facilite a recolha de informa¸
c˜
ao de estado de forma simples,
automati-zada, port´
avel e que seja capaz de ser utilizada em contextos de investiga¸
c˜
ao
forense digital, de que s˜
ao exemplo as investiga¸
c˜
oes em situa¸
c˜
oes de IR.
1.2
Resultados relevantes
A solu¸
c˜
ao proposta dever´
a, em particular, ser:
1. Multi-plataforma: Recolher informa¸
c˜
ao de estado
independente-mente do sistema operativo em uso.
2. Port´
avel: Dever´
a ser transportada num suporte de armazenamento
USB.
3. Auto-execut´
avel: Dever´
a ser executado, sempre que poss´ıvel, de
forma autom´
atica.
4. Exaustiva: Dever´
a recolher o m´
aximo de informa¸
c˜
ao poss´ıvel de cada
sistema `
a qual for ligado.
5. Integra: Dever´
a registar o resultado de fun¸
c˜
oes criptogr´
aficas de
re-sumo (ex: SHA512) sobre toda a informa¸
c˜
ao recolhida e sobre os
co-mandos utilizados.
6. Documentada: Dever´
a guardar um registo da toda a sua atividade
para ficheiro de registo.
7. Homog´
enea: Dever´
a recolher o mesmo tipo de informa¸c˜
ao para os
v´
arios sistemas operativos suportados (Windows, Linux e macOS).
1.3
Estrutura do relat´
orio
O relat´
orio est´
a organizada em cap´ıtulos.
O Cap´ıtulo 2 apresenta uma
descri¸c˜
ao do que ´
e a criptografia, descreve tamb´
em o funcionamento das
fun¸
c˜
oes criptogr´
aficas de resumo bem como alguns exemplos de fun¸c˜
oes
crip-togr´
aficas. O Cap´ıtulo 3 identifica as solu¸
c˜
oes existentes que possibilitam
a recolha de informa¸
c˜
ao de estado em situa¸
c˜
oes de IR. O funcionamento
de cada uma destas solu¸c˜
oes ´
e descrito de forma geral e ´
e identificada a
lista de artefactos que estas recolhem. Terminando o cap´ıtulo, ´
e efetuada
uma an´
alise comparativa das v´
arias solu¸
c˜
oes. O Cap´ıtulo 4 apresenta
re-sultado do levantamento de requisitos para a solu¸
c˜
ao proposta, que inclui
as caracter´ısticas necess´
arias para o suporte de armazenamento USB, bem
como descreve a proposta de solu¸
c˜
ao encontrada e apresenta um prot´
otipo
da aplica¸
c˜
ao. O Cap´ıtulo 5 descreve a metodologia de trabalho desenvolvida,
os testes que foram realizados, bem como apresenta e analisa os resultados
obtidos. O Cap´ıtulo 6 conclui o trabalho realizado.
Criptografia
A criptografia possibilita que se escrevam mensagens ocultando o seu conte´
udo.
A criptografia tem como objetivo possibilitar que um grupo restrito de
enti-dades, normalmente duas, consigam trocar informa¸
c˜
ao de forma a que esta
apare¸ca como incompreens´ıvel a terceiros [8].
A utiliza¸
c˜
ao da criptografia revela a informa¸
c˜
ao, isto ´
e, um texto que
esteja criptografado ´
e obviamente incompreens´ıvel para quem n˜
ao conhece
m´
etodos para o decifrar. Este modo de opera¸
c˜
ao pode proporcionar a troca
de informa¸c˜
ao sens´ıvel que foi escondida por ser ilegal, levando a que surjam
leis ou regulamentos que impedem a cria¸
c˜
ao ad hoc de conte´
udos
criptogra-fados. A introdu¸
c˜
ao de legisla¸c˜
ao limitadora do uso de criptografia,
tipi-camente nos EUA, levou ao aparecimento de uma outra t´
ecnica conhecida
como esteganografia.
A finalidade da esteganografia ´
e possibilitar que um conte´
udo sens´ıvel
seja escondido no interior de outro conte´
udo de teor aparentemente
ino-cente. Um exemplo muito conhecido ´
e o de escrever com tinta invis´ıvel.
Como exemplo mais atual temos a capacidade para se esconder conte´
udos
dentro de imagens, utilizando os bits com menos significado de cada pixel
para transportar a informa¸c˜
ao escondida. Em ambos os casos, o conte´
udo
escondido ´
e invis´ıvel ao olho humano, mas quem conhecer como a informa¸
c˜
ao
foi escondida conseguir´
a descobri-la e poder´
a obtˆ
e-la com muita facilidade.
A criptan´
alise possibilita a descoberta da informa¸
c˜
ao que est´
a
criptogra-fada. Uma motiva¸
c˜
ao para o desenvolvimento de t´
ecnicas criptogr´
aficas ´
e a
cria¸c˜
ao de m´
etodos de criptan´
alise para impedir as inten¸c˜
oes das primeiras.
Estes m´
etodos tem como objetivo encontrar, por meio de processos
varia-dos, os elementos que foram escondidos atrav´
es da criptografia ou t´
ecnicas
ou aspetos particulares utilizados para a produzir (algoritmos, chaves, etc.).
Por fim, denomina-se por criptologia a ´
area do conhecimento que se
prop˜
oe estudar a criptografia e a criptan´
alise. Um cript´
ologo ´
e uma pessoa
que se prop˜
oe estudar os problemas que surgem tanto na criptografia como
na criptan´
alise. Em casos pr´
aticos esse estudo ´
e insepar´
avel, visto que a
cria¸c˜
ao ou a utiliza¸
c˜
ao das t´
ecnicas criptogr´
aficas corretamente pressup˜
oe-se
que exista algum conhecimento dos riscos de criptan´
alise das mesmas.
2.1
Fun¸
c˜
oes Criptogr´
aficas de Resumo
Fun¸
c˜
oes criptogr´
aficas de resumo, ou fun¸
c˜
ao de hash, convertem uma sequˆ
encia
de bits de qualquer tamanho (como ficheiros e mensagens) numa pequena
sequˆ
encia de tamanho fixo, a que se chama resumo. N˜
ao se pode
garan-tir que nunca v˜
ao existir dois ficheiros (ou mensagens) que gerem o mesmo
resumo como resultado (colis˜
ao), devido ao facto de o n´
umero de bits
utiliza-dos no resumo ser menor que o n´
umero de bits utilizados como mensagens.
No entanto, as fun¸
c˜
oes criptogr´
aficas de resumo s˜
ao preparadas para que
as colis˜
oes n˜
ao aconte¸
cam [9]. Por exemplo, na F´
ormula 2.1 temos uma
representa¸
c˜
ao do funcionamento de uma fun¸
c˜
ao criptogr´
afica de resumo. A
fun¸c˜
ao H, da f´
ormula 2.1, devolve um hash de valor h, para uma determinada
mensagem [10]:
h = H(M )
(2.1)
M ´
e uma mensagem de tamanho aleat´
orio. Como h ´
e igual a H(M), h
´
e um valor de tamanho fixo. O valor do hash (h) quando acrescentado `
a
mensagem original, permite validar se a mensagem est´
a correta, isto ´
e, igual
ao original. Para validar se a mensagem est´
a correta, o recetor calcula o
valor do hash e compara o resultado obtido com o valor recebido [10, 11].
mensagem secreta
↓
SHA-256
↓
1cc576be2ea83df4fbd9d33ca816ac7ee39da6cc0c8ddd22666dd4e80326a94a
Figura 2.1: Exemplo de SHA-256 [1]
Na Figura 2.1 observa-se um exemplo da utiliza¸
c˜
ao da fun¸c˜
ao SHA-256
[1].
O tamanho do output da fun¸
c˜
ao n˜
ao vai depender do tamanho da
mensagem de entrada, visto que o tamanho do hash resultante ser´
a sempre
o mesmo (256 bits). Com a altera¸
c˜
ao da mensagem de entrada, mesmo que
ligeira, o hash resultante dever´
a ser completamente diferente. As fun¸c˜
oes de
hash tem de ser obrigatoriamente dif´ıceis de inverter em tempo ´
util. Fun¸
c˜
oes
de hash s˜
ao ´
uteis em situa¸
c˜
oes onde se tenta manter a integridade de dados,
ou como elementos de novas ferramentas criptogr´
aficas [9].
As fun¸
c˜
oes criptogr´
aficas de resumo podem tamb´
em ser utilizadas em
mecanismos de autentica¸
c˜
ao. Um exemplo comum s˜
ao os mecanismos
Hash-based Message Authentication Code (HMAC) [12], que s˜
ao mecanismos de
autentica¸c˜
ao de mensagens que recorrem a fun¸
c˜
oes criptogr´
aficas de resumo.
A for¸ca criptogr´
afica do HMAC depende das propriedades da fun¸
c˜
ao hash
subjacente. HMAC-MD5 [13] define casos de teste para HMAC-MD5.
2.1.1
MD5
Message-Digest algorithm 5 (MD5) [14] ´
e uma fun¸
c˜
ao criptogr´
afica de
re-sumo que gera um resultado de 128 bits de comprimento, para qualquer
mensagem de entrada. ´
E uma fun¸
c˜
ao de resumo muito utilizada mas que,
atualmente, j´
a n˜
ao o deveria ser. Os ataques publicados contra MD5
mos-tram que n˜
ao ´
e prudente utilizar MD5 pois j´
a n˜
ao tem a resistˆ
encia necess´
aria
contra colis˜
oes [15].
O MD5 foi publicado em 1992 como um Request for Comments (RFC)
informativo. Desde essa altura que tem sido estudado, surgindo novos
ata-ques. Tal levou tamb´
em a que surgissem recomenda¸
c˜
oes adicionais para o
seu uso [16, 17]. Alternativas para o HMAC-MD5 incluem HMAC-SHA256
[18] e AES-CMAC [19] quando o Advanced Encryption Standard (AES) est´
a
dispon´ıvel por hardware.
Pseudo-colis˜
oes foram descritas pela primeira vez para o MD5 em 1993
[20]. Em 1996 demonstrou-se uma colis˜
ao para a fun¸
c˜
ao de MD5 com recurso
a um valor inicial conhecido[21]. O primeiro trabalho que demonstrou duas
colis˜
oes com MD5 foi publicado em 2004 [22]. As t´
ecnicas de ataque ao
MD5 conhecidas na altura foram publicadas na EUROCRYPT 2005 [23].
Desde ent˜
ao, m´
ultiplos trabalhos de investiga¸
c˜
ao, onde se detalham outros
ataques de colis˜
ao ao MD5, foram publicados. O trabalho apresentado em
[24] pode encontrar colis˜
oes MD5 em cerca de um minuto num PC padr˜
ao
(Intel Pentium, 1,6 Gigahertz (GHz)). Em [25] afirma-se que se consegue
encontrar colis˜
oes MD5 em 10 segundos, ou menos, com um Pentium 4 de 2,6
GHz. Adicionalmente, foram descobertos e aplicados com sucesso, ataques
a certificados X.509 [26] que usem o algoritmo MD5 [25, 27, 28, 29].
2.1.2
SHA-1
Secure Hash Algorithm 1 (SHA-1) [30] ´
e uma fun¸
c˜
ao criptogr´
afica de resumo
que gera um resultado de 160 bits de comprimento, para qualquer mensagem
de entrada. A fun¸c˜
ao SHA-1 foi emitida pelo National Institute of Standards
and Technology (NIST) em 1995 como uma Federal Information Processing
Standard (FIPS). Desde sua publica¸
c˜
ao, o SHA-1 tem sido adotado por
muitas normas do governo e na ind´
ustria, em normas espec´ıficas sobre
assi-naturas digitais para as quais ´
e necess´
aria uma fun¸
c˜
ao de resumo resistente
a colis˜
oes. Al´
em de seu uso em assinaturas digitais, o SHA-1 tamb´
em foi
im-plantado como um componente importante em v´
arios esquemas e protocolos
de criptografia, como autentica¸
c˜
ao do utilizador, acordo de chave, e gera¸
c˜
ao
de n´
umeros pseudo-aleat´
orios. O SHA-1 tem sido amplamente adotado em
muitos sistemas e produtos de seguran¸
ca [31].
Ao longo do tempo, e tal como surgiu com o MD5, a comunidade
ci-ent´ıfica debru¸cou-se tamb´
em sobre a an´
alise de falhas e problemas do SHA-1
[32]. Um componente que surge em alguns ataques ´
e o de colis˜
ao local,
in-troduzido por Chabaud e Joux em 1998 em ataques anteriores[33]. A ideia
subjacente a uma colis˜
ao local ´
e o de primeiro introduzir uma diferen¸
ca
numa das palavras do estado intermedi´
ario da fun¸
c˜
ao. Para um estado
in-terno feito de j palavras (j = 5 no caso de SHA-1), o atacante usa ent˜
ao
diferen¸
cas subsequentes em apenas algumas das palavras da mensagem, a
fim de cancelar qualquer contribui¸
c˜
ao da diferen¸
ca no c´
alculo de um novo
estado interno.
O obst´
aculo principal quando se usam as colis˜
oes locais ´
e que o atacante
n˜
ao controla todas as palavras da mensagem, j´
a que algumas s˜
ao geradas
pela fun¸
c˜
ao interna de extens˜
ao de mensagem. Uma importante observa¸
c˜
ao
de Chabaud e Joux foi mostrar como encadear m´
ultiplas colis˜
oes locais ao
longo do disturbance vector
1, criando um caminho semelhante em que o
estado final de uma fun¸
c˜
ao n˜
ao contem diferen¸cas e que o padr˜
ao das colis˜
oes
locais ´
e compat´ıvel com a extens˜
ao da mensagem.
Uma melhoria importante para um ataque original, inteiramente
base-ado em colis˜
oes locais, foi introduzida por Wang, Yin e Yu em 2005, num
primeiro ataque te´
orico completo ao SHA-1 [31]. Este ataque baseava-se
na constru¸
c˜
ao de caminhos diferentes n˜
ao lineares. Constru¸
c˜
ao esta foi
ini-cialmente feita `
a m˜
ao por Wang, Yin e Yu. A elabora¸
c˜
ao de algoritmos
eficientes para gerar tais caminhos diferentes surge mais tarde com a
contri-bui¸c˜
ao de De Canni`
ere e Rechberger em 2006, que propˆ
os uma abordagem
guess-and-determine [34]. Uma abordagem diferente, baseada num m´
etodo
meet-in-the-middle, foi proposta por Stevens et al. [35, 36].
2.1.3
SHA-2
Desde 2005, tˆ
em surgido ataques de colis˜
ao para fun¸
c˜
oes de resumo em uso.
Em particular, as falhas detetadas ao MD5 e ao SHA-1, convenceram muitos
cript´
ografos de que estas fun¸
c˜
oes n˜
ao podem mais ser consideradas seguras.
Como consequˆ
encia, o NIST propˆ
os a transi¸c˜
ao de SHA-1 para a fam´ılia
Secure Hash Algorithm 2 (SHA-2). Muitas empresas e organiza¸
c˜
oes
segui-ram este conselho e j´
a migraram para SHA-2. Atualmente j´
a se trabalha na
pr´
oxima vers˜
ao, o Keccak [37] que ainda n˜
ao foi padronizado como SHA-3
porque que o SHA-2 ´
e mais r´
apido em v´
arias plataformas. Em particular, o
SHA-512 ´
e muito mais r´
apido do que ambos SHA-256 e Keccak na maioria
das plataformas 64 bits [38]. Tal levou a que aparece-se a sugest˜
ao de
uti-liza¸c˜
ao de uma vers˜
ao truncada de SHA-512, mesmo para valores de hash
1
A pr´opria mensagem, numa das itera¸c˜ao de extens˜ao com a fun¸c˜ao interna de extens˜ao de mensagem
de 256 bits [39]. O pr´
oprio NIST tamb´
em define esta variante, denominada
SHA-512/256, no FIPS 180-4 [40, 41].
Poucos trabalhos cient´ıficos sobre ataques ao SHA-512 tˆ
em sido
publica-dos nos ´
ultimos anos. A seguran¸
ca de SHA-512 contra ataques preimage foi
estudado pela primeira vez por Aoki et al. em [42]. Estes apresentaram um
ataque preimage em 46 das 80 etapas do SHA-2. Sendo mais tarde
esten-dido para 50 etapas por Khovratovich et al. em [43]. Recentemente, Li et
al. mostraram que determinados ataques preimage tamb´
em podem ser
uti-lizados para construir para um ataque de colis˜
ao free-collision at´
e 57 etapas
do SHA-512 em [44]. No entanto, todos os ataques s˜
ao apenas ligeiramente
mais r´
apido do que as respetivas complexidades dos ataque gen´
ericos [41].
2.2
Conclus˜
ao
A criptografia e, em particular, as fun¸
c˜
oes criptogr´
aficas de resumo s˜
ao uma
componente essencial nas ferramentas automatizadas de investiga¸c˜
ao
digi-tal. Resultados de fun¸c˜
oes criptogr´
aficas de resumo sobre ficheiros podem
servir para identificar conte´
udos (inofensivo, ilegais, v´ırus, . . . ), para
auten-ticar utilizadores ou como garantia de integridade de dados. Existem v´
arias
fun¸
c˜
oes criptogr´
aficas de resumo, como por exemplo: MD5, SHA-1, SHA-2.
Algumas com problemas j´
a bem identificados que levam `
a recomenda¸
c˜
ao da
sua n˜
ao utiliza¸
c˜
ao.
Trabalho Relacionado
Est˜
ao dispon´ıveis online v´
arias aplica¸
c˜
oes que visam a recolha de artefactos,
num contexto de uma investiga¸
c˜
ao forense digital de resposta a um incidente
de seguran¸
ca, e que podem ser obtidas livremente. Este cap´ıtulo enumera
e descreve tais aplica¸
c˜
oes, indicando como funcionam e identificando a lista
de artefactos recolhidos por cada uma. As aplica¸
c˜
oes a testar ser˜
ao um
misto de aplica¸c˜
oes open source, gratuitas e pagas. Concluindo o cap´ıtulo,
´
e apresentada uma compara¸c˜
ao entre as v´
arias aplica¸
c˜
oes.
3.1
ir-triage-toolkit
A aplica¸
c˜
ao ir-triage-toolkit consiste num conjunto de pequenas aplica¸
c˜
oes e
scripts. O autor, por incluir aplica¸
c˜
oes de outras entidades na sua aplica¸
c˜
ao,
afirma que n˜
ao s˜
ao quebrados quaisquer contratos de licen¸
ca ou restri¸
c˜
oes de
direitos de autor. Estes scripts visam automatizar a recolha de artefactos
para facilitar a sua posterior an´
alise, bem como a triagem de eventos em
cen´
arios de respostas a incidentes. Pode ser utilizada em sistemas operativos
Windows e Linux. Possibilita ainda a obten¸
c˜
ao de c´
opias da mem´
oria RAM
e inclui scripts para criar kits de ferramentas para Linux e Windows [45].
A necessidade de criar tais scripts surge porque algumas das aplica¸
c˜
oes que
comp˜
oem esta aplica¸
c˜
ao n˜
ao permitem a sua distribui¸
c˜
ao, embora estejam
livremente dispon´ıveis online.
Para se utilizar esta aplica¸c˜
ao, deve-se primeiro fazer o seu download e
depois extra´ı-lo para o suporte de armazenamento USB onde ser´
a utilizado.
Ap´
os isto, abre-se um terminal e muda-se para o diret´
orio para onde este
foi extra´ıdo. No diret´
orio utiliza-se o comando constante da Listagem 3.1,
passando-lhe o caminho para o direct´
orio de instala¸
c˜
ao como argumento. O
procedimento para Windows ´
e executado de forma an´
aloga.
Listagem 3.1: Criar kit de aplica¸
c˜
oes no ir-triage-toolkit (Linux)
1 . / c r e a t e −t o o l k i t / s t o r e / i t / h e r e
Este passo inicial deve ser executado, de preferˆ
encia, antes que uma
situa¸c˜
ao IR surja. O kit de aplica¸
c˜
oes resultante deve ser armazenado num
suporte de armazenamento USB, ou similar, para que possa ser utilizado
em situa¸
c˜
oes de IR. Ap´
os a cria¸
c˜
ao do kit, este poder´
a ser executado, num
terminal, como demonstrado na Listagem 3.2.
Listagem 3.2: Executar ir-triage-toolkit no Linux
1 . / run
O comando apresentado na Listagem 3.2 deve ser executado com
pri-vil´
egios de administra¸
c˜
ao. O argumento utilizado ´
e o nome da pasta onde
ser´
a guardada toda a informa¸
c˜
ao recolhida. Na ausˆ
encia do argumento, o
script solicita-o ao utilizador.
O scritp inicia a recolha da informa¸
c˜
ao, executando tarefas como: obter
uma c´
opia da mem´
oria RAM; recolha de informa¸
c˜
ao de rede; recolha de
informa¸
c˜
ao sobre ficheiros abertos e processos em execu¸
c˜
ao; recolha de
in-forma¸
c˜
ao do utilizador/sistema e recolha de informa¸
c˜
ao de dispositivos.
Du-rante o processo de recolha, s˜
ao criados registos detalhados, como o tempo
demorado pelos comandos executados, e s˜
ao calculadas fun¸c˜
oes de resumo
(SHA256) sobre os ficheiros guardados no diret´
orio de sa´ıda [45].
Listagem 3.3: Script run.sh do ir-triage-toolkit no Linux
1 l o g ( ) { 2 e c h o ” $ ( d a t e +”%b %d %H:%M:%S ” ) $ ( hostname ) i r s c r i p t : $1 ” | t e e −a ” $ l o g f i l e ” 3 } 4 5 # S t a r t t h e l o g . 6 e c h o −n > ” $ l o g f i l e ” 7 l o g ”# I n c i d e n t r e s p o n s e v o l a t i l e d a t a c o l l e c t i o n s c r i p t . ” 8 l o g ”# S t a r t i n g d a t a c o l l e c t i o n . . . ” 9 10 # 1 . A c q u i r e a f u l l memory dump .
11 l o g ”# S t a r t i n g LiME t o dump s y s t e m memory . . . ”
12 m e m f i l e=” $ s a v e t o /memdump−$ ( hostname )−l i n u x −$ ( uname −m) . l i m e ” 13 l o g ” insmod $ b i n / l i m e . ko \” path =’ $ m e m f i l e ’ f o r m a t=l i m e \”” 14 insmod ” $ b i n / l i m e . ko ” ” path=\” $ m e m f i l e \” f o r m a t=l i m e ” 15 l o g ”rmmod l i m e ” 16 rmmod l i m e 17 l o g ”# LiME f i n i s h e d . ” 18 19 # 2 . C o l l e c t network i n f o r m a t i o n . 20 l o g ”# C o l l e c t i n g network i n f o r m a t i o n . . . ” 21 l o g ” n e t s t a t −ap > $ s a v e t o / network . t x t 2>&1” 22 n e t s t a t −ap > ” $ s a v e t o / network . t x t ” 2>&1 23
24 # 3 . C o l l e c t i n f o r m a t i o n about opened f i l e s and r u n n i n g p r o c e s s e s .
25 l o g ”# C o l l e c t i n g i n f o r m a t i o n about opened f i l e s and r u n n i n g p r o c e s s e s . ”
26 l o g ” l s o f > $ s a v e t o / o p e n e d f i l e s . t x t 2>&1” 27 l s o f > ” $ s a v e t o / o p e n e d f i l e s . t x t ” 2>&1
A Listagem 3.3 apresenta um excerto do script run.sh usado pelo
ir-triage-toolkit para recolher informa¸
c˜
ao num sistema Linux. A fun¸
c˜
ao log()
(linhas 1-3) ´
e a fun¸
c˜
ao que ´
e utilizada para guardar, num ficheiro log.txt,
todas as mensagens que v˜
ao sendo mostradas ao utilizador no decorrer da
aplica¸
c˜
ao. Este ficheiro ´
e limpo a cada execu¸
c˜
ao (linha 6). A c´
opia da
mem´
oria RAM ´
e conseguida recorrendo `
a instala¸
c˜
ao do m´
odulo Linux
Me-mory Extractor (LiME), como se pode verificar na linha 12. Para recolher
informa¸
c˜
ao de rede usa o comando netstat, usa o comando lsof para recolher
informa¸
c˜
ao sobre os ficheiros abertos.
Listagem 3.4: Exemplo de um output do ir-triage-toolkit no Linux
1 3 e f f 6 6 9 c 3 5 9 c 9 a 9 1 8 2 8 a d d d 7 7 8 0 9 0 b a c f 7 c 3 0 c c 9 8 0 8 0 e d c 5 5 b e 0 5 e 8 b 3 b 1 b 6 d f 4 t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / m o u n t e d d e v i c e s . t x t
2 9114 32 f d 3 d 8 c 9 3 5 0 6 3 d 8 1 7 0 b 5 c 2 3 0 1 9 2 7 b 7 a c 5 b 6 e 1 2 b 8 5 8 9 f 2 3 a 5 8 9 5 c 6 c 6 b 5 8 d t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / network . t x t
3 d 3 4 6 e 0 e d 5 7 2 b 8 8 2 8 0 a d 3 b f e 9 6 2 1 f b 8 3 f b 8 9 a 1 a 4 4 9 a 0 5 d f f e 6 b a 2 1 5 e a 8 4 c c 3 e d 2 t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / o p e n e d f i l e s . t x t 4 b 3 6 9 d 4 9 9 9 e 0 f 6 2 0 c 8 6 5 0 3 6 9 c c 9 1 0 9 5 9 d 7 e 5 a a a 9 f d 6 4 7 3 8 7 3 a f 7 d f 7 c c 3 1 c 0 a e a 1
t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / s y s t e m d m e s g . t x t 5 5 a 1 d 5 2 b c 8 b 4 8 5 7 8 7 6 0 9 5 5 a 8 7 0 8 f 0 7 9 3 1 a b 8 5 1 8 3 6 1 a 2 5 2 0 7 4 8 6 0 f f f 1 4 6 8 f 2 a 9 7 a
t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / system uname . t x t 6 94881 f 7 a 7 e d e 7 8 5 4 c 7 2 a f 8 c 5 e 2 4 a d 2 b 8 3 d 4 f a 4 c e e 0 5 4 8 d 7 3 0 c b 1 3 f b a c 5 c 6 9 a 0 4 t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / u s e r s i d . t x t 7 5298 26 f c 9 9 8 6 0 0 7 6 e a 6 0 3 4 6 b a e 7 1 9 b 1 e 0 1 4 d 2 4 d 5 4 c c c 5 a 3 2 2 0 6 f 0 0 e 6 2 5 f d 8 5 9 e t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / u s e r s w h o . t x t 8 a 7 9 1 e a f 7 6 9 1 9 5 f a 2 c c 1 d 6 7 c f a 9 8 a a 0 6 3 0 b 3 d 8 3 e 2 9 1 9 2 e 4 5 3 4 d 7 d 6 1 e b a b f f a a 5 a t e s t e / Fabio−PC . Linux − 2 0 1 5 . 1 0 . 2 7 − 1 6 . 1 1 . 1 9 / u s e r s w . t x t
Na Listagem 3.4 ´
e apresentado um resumo do output do ir-triage-toolkit
no Linux. Em particular, ´
e poss´ıvel ver os resumos SHA256 de alguns dos
ficheiros criados pela aplica¸
c˜
ao. O prop´
osito desta informa¸c˜
ao ´
e poder saber
se os ficheiros criados pela aplica¸c˜
ao s˜
ao alterados posteriormente caso seja
alterado e gerado um novo hash. Pelo nome do ficheiro ´
e percet´ıvel que tipo
de informa¸c˜
ao foi guardada nesse ficheiro.
A aplica¸c˜
ao foi testada tamb´
em num sistema Windows e concluiu-se, em
fun¸
c˜
ao da informa¸c˜
ao recolhida, que h´
a falta de homogeneidade quanto aos
dados recolhidos pela mesma aplica¸
c˜
ao em ambos os sistemas. ´
E recolhida
mais informa¸c˜
ao nos sistemas Windows sobre a rede e sobre dispositivos
ligados, nomeadamente dispositivos USB. J´
a relativamente `
a informa¸
c˜
ao
sobre o sistema em si e sobre os seus utilizadores, ´
e recolhida mais informa¸
c˜
ao
em sistemas Linux.
3.2
IRKIT
A aplica¸
c˜
ao IRKIT foi criada por Bill Dean para uso pr´
oprio. Juntou um
conjunto de aplica¸
c˜
oes livres para a recolha de dados vol´
ateis num script.
To-das as aplica¸
c˜
oes devem caber num suporte de armazenamento USB pronto
para ser utilizada em situa¸
c˜
oes de IR. Pode ser utilizada apenas em sistemas
operativos Windows [46].
Esta aplica¸
c˜
ao ´
e constitu´ıda por um script e por uma pasta com
peque-nas aplica¸
c˜
oes que ajudam a recolher informa¸
c˜
ao. S´
o s˜
ao inclu´ıdas aplica¸
c˜
oes
que podem ser distribu´ıdas livremente, as restantes s˜
ao identificadas e
descri-tas no ficheiro !!MUST READ ME!!.txt. ´
E importante que esta ferramenta
seja configurada num sistema onde n˜
ao tenha ocorrido um IR. Uma vez
configurada, poder´
a ser utilizada abrindo um terminal no diret´
orio onde a
aplica¸
c˜
ao est´
a armazenada. Uma vez dentro do diret´
orio utiliza-se o
co-mando demonstrado na Listagem 3.5.
Listagem 3.5: Executar IRKIT no Windows
1 I n c i d e n t R e s p o n s e A u t o . cmd
Como se pode observar na listagem 3.5, para executar a aplica¸
c˜
ao basta
usar-se o nome do script sem parˆ
ametros. Este inicia a execu¸
c˜
ao de
imedi-ato e vai mostrando o que est´
a a acontecer no momento da recolha. Esta
aplica¸c˜
ao pode demorar algum tempo na recolha de toda a informa¸c˜
ao j´
a
que faz a c´
opia integral da mem´
oria RAM. Quando esta aplica¸
c˜
ao
termi-nar vai comprimir toda a informa¸
c˜
ao, criando assim 3 ficheiros distintos: 1)
ficheiro de registo de erros; 2) a c´
opia da mem´
oria RAM; e 3) listagem de
toda a informa¸
c˜
ao recolhida pelo script. Caso se analise este ´
ultimo ficheiro,
pode-se observar que cada comando executado pelo script gera um ficheiro
de registo pr´
oprio, como se pode verificar na Listagem 3.6.
Listagem 3.6: Script IRKIT para Windows
1 : B E G I N i p c o n f i g a l l 2 SET / a CURR CMD NUM+=1 3 REM Grab network i n f o r m a t i o n
4 TITLE [%CURR CMD NUM%/%TOTAL NUM CMDS%]%mode% Mode : NETWORK −− i p c o n f i g a l l
5 ECHO [%CURR CMD NUM%/%TOTAL NUM CMDS%] %mode% Mode : NETWORK −− i p c o n f i g a l l
6 i p c o n f i g . e x e / a l l > %c m d r e s u l t s d i r %\ i p c o n f i g a l l r e s u l t s . t x t 2> %e r r o r d i r %\ i p c o n f i g a l l e r r o r s . t x t
7 ECHO %d a t e% %t i m e% INFO : NETWORK −− i p c o n f i g a l l >> %r e s u l t s d i r %\ i n c i d e n t r e s p o n s e a u t o . l o g
8 : E N D i p c o n f i g a l l 9
10 : B E G I N n e t s t a t a
11 SET / a CURR CMD NUM+=1
13 TITLE [%CURR CMD NUM%/%TOTAL NUM CMDS%]%mode% Mode : NETWORK −− n e t s t a t −a
14 ECHO [%CURR CMD NUM%/%TOTAL NUM CMDS%] %mode% Mode : NETWORK −− n e t s t a t −a
15 n e t s t a t . e x e −a > %c m d r e s u l t s d i r %\ n e t s t a t a r e s u l t s . t x t 2> % e r r o r d i r %\ n e t s t a t a e r r o r s . t x t
16 ECHO %d a t e% %t i m e% INFO : NETWORK −− n e t s t a t −a >> %r e s u l t s d i r %\ i n c i d e n t r e s p o n s e a u t o . l o g
17 : E N D n e t s t a t a 18
19 : BEGIN netstat abvon 20 SET / a CURR CMD NUM+=1
21 REM Grab network c o n n e c t i o n and r o u t i n g i n f o r m a t i o n ( e x t e n d e d ) 22 TITLE [%CURR CMD NUM%/%TOTAL NUM CMDS%]%mode% Mode : NETWORK −−
n e t s t a t −abvon − T h i s may t a k e a w h i l e . . .
23 ECHO [%CURR CMD NUM%/%TOTAL NUM CMDS%] %mode% Mode : NETWORK −− n e t s t a t −abvon − T h i s may t a k e a w h i l e . . .
24 n e t s t a t . e x e −abvon > %c m d r e s u l t s d i r %\ n e t s t a t a b v o n r e s u l t s . t x t 2> %e r r o r d i r %\ n e t s t a t a b v o n e r r o r s . t x t
25 ECHO %d a t e% %t i m e% INFO : NETWORK −− n e t s t a t −abvon >> % r e s u l t s d i r %\ i n c i d e n t r e s p o n s e a u t o . l o g
26 : E N D n e t s t a t a b v o n
Na listagem 3.6 temos um extrato do script IncidentResponseAuto.cmd
usado para recolher informa¸
c˜
ao em sistemas Windows. Na linha 2 existe uma
vari´
avel que ´
e incrementada h´
a medida que vai terminando os comandos que
o comp˜
oe. Esta vari´
avel e utilizada para mostrar quanto falta para terminar
o script. A linha 4 altera o t´ıtulo da consola em uso (comando TITLE ).
A linha 5 mostra na consola o n´
umero atual de comandos j´
a executados
(%CURR CMD NUM% ), o n´
umero total de comandos (%TOTAL NUM
-CMDS% ), e tamb´
em mostra qual ´
e o tipo de informa¸
c˜
ao que est´
a a ser
recolhida (Mode: NETWORK ) e o comando em uso no momento (ipconfig
all ). A linha 6 do script executa o comando. A linha 7 ´
e utilizada para
datar a execu¸c˜
ao (%date%, %time% ). A informa¸
c˜
ao ´
e ainda guardada num
ficheiro de logs ( %resultsdir%\incidentresponseauto.log ).
Listagem 3.7: Exemplo de um output do IRKIT no Windows
1 D r i v e Type F i l e System Path F r e e Space 2 −−−−− −−−−− −−−−−−−−−−− −−−−− −−−−−−−−−− 3 C: \ F i x e d NTFS 7 9 . 0 4 GB 4 D: \ CD−ROM 0 . 0 0 5 E : \ Network VBoxSharedFolderFS \\ v b o x s r v \ P a s t a P a r t i l h a d a w i n d o w s 1 0 7 . 5 1 GB 6 F : \ CD−ROM 0 . 0 0
Na listagem 3.7 pode ver-se um exemplo de um output do IRKIT no
Win-dows. O output apresentado ´
e o do comando di.exe que mostra informa¸
c˜
ao
sobre as unidade de dados (drives) dispon´ıveis no sistema. Observa-se que
existe uma unidade que ´
e o disco duro onde est´
a instalado o sistema
opera-tivo (linha 3), com o tipo de ficheiros New Technology File System (NTFS).
Tamb´
em temos 2 unidades que permitem a leitura de Compact Disc
Read-Only Memory (CD-ROM) (linhas 4 e 6). E por fim temos mais uma unidade
do tipo Network que permite trocar ficheiros entre o sistemas operativos
(li-nha 5). A unidade E:\ aparece neste output porque a aplica¸
c˜
ao foi testada
numa m´
aquina virtual (VirtualBox) e serve para que a m´
aquina virtual
te-nha acesso a essa pasta do sistema operativo real, permitindo a troca de
ficheiros ente a m´
aquina virtual e o sistema operativo real.
A aplica¸
c˜
ao n˜
ao recolhe informa¸
c˜
ao noutros sistemas operativos que n˜
ao
Windows.
3.3
Tr3Secure
O Tr3Secure’s Data Collection ´
e outro script para recolha de evidˆ
encias
forenses digitais em sistemas ligados.
E desenvolvida por Corey Harrell,
´
disponibilizada no seu blogue Journey Into Incident Response. Harrell
ne-cessitava de um conjunto de aplica¸
c˜
oes para responder a sistemas durante as
simula¸c˜
oes de ataque e uma das aplica¸
c˜
oes tinha que recolher rapidamente
dados vol´
ateis num sistema. Os comandos necess´
arios para o bom
funciona-mento do Tr3Secure n˜
ao s˜
ao disponibilizados diretamente pelo mesmo por
salvaguarda de direitos de autor. Este script foi desenvolvido para
aten-der `
as necessidades da comunidade DFIR e pode ser utilizado em sistemas
operativos Windows[47].
Esta aplica¸
c˜
ao ´
e constitu´ıda por 2 scripts e uma pasta com pequenas
aplica¸
c˜
oes para ajudar na recolha de informa¸
c˜
ao. Um dos scripts ´
e utilizado
para recolher todo o tipo de informa¸
c˜
ao, j´
a o outro ´
e utilizado para recolher
informa¸c˜
ao de um determinado utilizador do sistema. Foi analisado o script
que recolhe toda a informa¸
c˜
ao do sistema por ser mais pr´
oximo das restantes
aplica¸
c˜
oes em an´
alise. Para se utilizar esta aplica¸
c˜
ao deve-se fazer download
desta e extrai-la para o suporte de armazenamento USB. O passo seguinte
passa por fazer o download das dependˆ
encias (descritas no ficheiro read
-me.txt ).
Ap´
os isto, ter´
a de se abrir um terminal como administrador e
mudar para a pasta para onde foi extra´ıdo. Nesse diret´
orio, executa-se o
comando demonstrado na Listagem 3.8.
Listagem 3.8: Executar Tr3Secure no Windows
1 t r 3 − c o l l e c t . b a t [ c a s e number ] [ d r i v e l e t t e r f o r s t o r i n g c o l l e c t e d d a t a ] [ menu s e l e c t i o n #]
O parˆ
ametro [case number] permite indicar um identificador ´
unico para
a recolha que ser´
a feita, esse identificador ser´
a concatenado com Data- para
formar o nome da pasta onde ser´
a guardada a informa¸c˜
ao recolhida. O
segundo parˆ
ametro ´
e a letra da unidade de armazenaemnto onde a recolha
de informa¸
c˜
ao ser´
a guardada.
O terceiro parˆ
ametro, opcional, pode ser
usado para escolher que tipo de informa¸
c˜
ao deve ser recolhida. As op¸
c˜
oes
dispon´ıveis para o terceiro parˆ
ametro s˜
ao: 1 - recolhe uma c´
opia da mem´
oria
RAM; 2 - recolhe dados vol´
ateis; 3 - recolhe dados n˜
ao vol´
ateis; 4 - recolhe
dados vol´
ateis e n˜
ao vol´
ateis; 5 - recolhe s´
o artefactos NTFS; 6 - recolhe
uma c´
opia da mem´
oria RAM, dados vol´
ateis e n˜
ao vol´
ateis. Caso n˜
ao se
passe este parˆ
ametro, o seu valor por omiss˜
ao ´
e 4.
Tal como a aplica¸
c˜
ao IRKIT, esta tamb´
em s´
o foi desenvolvida para
Win-dows, assim, todos os exemplos mostrados para esta aplica¸
c˜
ao s˜
ao em
Win-dows.
Listagem 3.9: Script Tr3Secure para Windows
1 : : C r e a t i n g Log 2 : : −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 3 : : T h i s s e c t i o n s e t s up t h e l o g g i n g f u n c t i o n o f t h e s c r i p t 4 : : 5 : c r e a t e l o g 6 c l s 7 : : C r e a t e s t h e d i r e c t o r y on t h e c o l l e c t i o n d r i v e t o s t o r e d a t a i f i t i s n ’ t a l r e a d y p r e s e n t 8 i f n o t e x i s t %c d r i v e %:\ Data−%c a s e% (
9 e c h o %DATE% %TIME% − Running t o o l s \ mkdir . e x e on %COMPUTERNAME % t o c r e a t e t h e c a s e o u t p u t f o l d e r Data−%c a s e% 10 e c h o : 11 t o o l s \ mkdir . e x e %c d r i v e %:\ Data−%c a s e% 12 ) 13 : : W i l l c r e a t e t h e l o g f i l e i f i t ’ s n o t p r e s e n t and s t a r t l o g g i n g 14 i f n o t e x i s t %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g ( 15 e c h o ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ > %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
16 e c h o C o l l e c t i o n Log f o r Case %c a s e% >> %c d r i v e %:\ Data−%c a s e %\ C o l l e c t i o n . l o g
17 e c h o ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
18 e c h o Log C r e a t e d a t %DATE% %TIME% >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g 19 e c h o : >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g 20 e c h o : >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g 21 ) 22 e c h o −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
23 e c h o %DATE% %TIME% − L o g g i n g i n i t i a t e d f o r %COMPUTERNAME% >> % c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
24 e c h o %DATE% %TIME% − L o g g i n g i n i t i a t e d f o r %COMPUTERNAME% 25 e c h o %DATE% %TIME% − L o g g i n g s t a r t e d on %COMPUTERNAME% by u s e r
a c c o u n t %USERDOMAIN%\%USERNAME% >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
26 e c h o %DATE% %TIME% − The d r i v e l e t t e r f o r t h e volume s t o r i n g t h e c o l l e c t i o n d a t a i s %c d r i v e %: >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
27 e c h o : 28 c l s
30 i f %s e l e c t i o n% == 1 e c h o %DATE% %TIME% − S e l e c t i o n was made t o a c q u i r e memory f o r e n s i c image f o r %COMPUTERNAME% >> % c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
31 i f %s e l e c t i o n% == 2 e c h o %DATE% %TIME% − S e l e c t i o n was made t o a c q u i r e v o l a t i l e d a t a f o r %COMPUTERNAME% >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
32 i f %s e l e c t i o n% == 3 e c h o %DATE% %TIME% − S e l e c t i o n was made t o a c q u i r e non− v o l a t i l e d a t a f o r %COMPUTERNAME% >> % c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
33 i f %s e l e c t i o n% == 4 e c h o %DATE% %TIME% − S e l e c t i o n was made t o a c q u i r e v o l a t i l e and non− v o l a t i l e d a t a f o r %
COMPUTERNAME% >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g 34 i f %s e l e c t i o n% == 5 e c h o %DATE% %TIME% − S e l e c t i o n was made
t o a c q u i r e NTFS a r t i f a c t s f o r %COMPUTERNAME% >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
35 i f %s e l e c t i o n% == 6 e c h o %DATE% %TIME% − S e l e c t i o n was made t o a c q u i r e memory f o r e n s i c image , v o l a t i l e , and non− v o l a t i l e d a t a %COMPUTERNAME% >> %c d r i v e %:\ Data−%c a s e%\ C o l l e c t i o n . l o g
36 g o t o : main
A Listagem 3.9 mostra um excerto do script tr3-collect.bat. O comando
cls (linha 5) limpa o terminal. Entre as linhas 8 e 12 , verifica-se se a pasta,
onde ser´
a guardada toda a informa¸
c˜
ao a recolher, j´
a existe e, se n˜
ao existir,
´
e criada. Tamb´
em ser´
a verificado se o ficheiro de logs da aplica¸
c˜
ao existe, se
n˜
ao existir, este ´
e criado e ´
e lhe adicionado um cabe¸calho (linhas 14 a 21).
Ap´
os isto, verifica qual foi a op¸
c˜
ao de recolha de informa¸
c˜
ao pedida pelo
utilizador e d´
a inicio a respetiva recolha (linhas 30-36).
Listagem 3.10: Exemplo de output do Tr3Secure no Windows
1 Command Executed : t a s k l i s t . e x e 2
3 Image Name PID S e s s i o n Name S e s s i o n# Mem Usage 4 ================== ==== ============ ======== ========= 5 System I d l e P r o c e s s 0 S e r v i c e s 0 24 K 6 System 4 S e r v i c e s 0 7 . 8 9 2 K 7 smss . e x e 364 S e r v i c e s 0 808 K 8 c s r s s . e x e 440 S e r v i c e s 0 3 . 6 4 4 K 9 c s r s s . e x e 488 C o n s o l e 1 6 . 4 6 4 K 10 w i n i n i t . e x e 496 S e r v i c e s 0 3 . 3 0 4 K 11 w i n l o g o n . e x e 536 C o n s o l e 1 4 . 7 8 4 K 12 s e r v i c e s . e x e 584 S e r v i c e s 0 7 . 0 7 6 K 13 l s a s s . e x e 592 S e r v i c e s 0 1 0 . 1 2 0 K 14 lsm . e x e 600 S e r v i c e s 0 3 . 0 1 2 K 15 s v c h o s t . e x e 696 S e r v i c e s 0 7 . 2 1 6 K 16 VBoxService . e x e 760 S e r v i c e s 0 4 . 7 6 4 K 17 s v c h o s t . e x e 824 S e r v i c e s 0 6 . 3 4 4 K 18 MsMpEng . e x e 912 S e r v i c e s 0 1 2 7 . 3 8 8 K 19 s v c h o s t . e x e 980 S e r v i c e s 0 1 6 . 2 1 6 K 20 s v c h o s t . e x e 1012 S e r v i c e s 0 1 1 . 9 2 8 K 21 s v c h o s t . e x e 1036 S e r v i c e s 0 3 2 . 6 4 8 K 22 s v c h o s t . e x e 1172 S e r v i c e s 0 1 2 . 0 1 6 K
23 s v c h o s t . e x e 1252 S e r v i c e s 0 1 8 . 0 1 6 K 24 s p o o l s v . e x e 1400 S e r v i c e s 0 9 . 0 0 0 K 25 s v c h o s t . e x e 1476 S e r v i c e s 0 1 2 . 7 8 4 K 26 s v c h o s t . e x e 1592 S e r v i c e s 0 7 . 2 6 4 K 27 s v c h o s t . e x e 1624 S e r v i c e s 0 1 3 . 0 7 2 K 28 FCUpdateService . e x e 1648 S e r v i c e s 0 4 . 0 6 4 K 29 s v c h o s t . e x e 1776 S e r v i c e s 0 8 . 0 5 2 K 30 t a s k h o s t . e x e 2024 C o n s o l e 1 7 . 0 3 2 K 31 dwm. e x e 2168 C o n s o l e 1 4 . 6 4 0 K 32 e x p l o r e r . e x e 2220 C o n s o l e 1 8 7 . 3 6 0 K 33 N i s S r v . e x e 2264 S e r v i c e s 0 1 . 7 1 6 K 34 VBoxTray . e x e 2756 C o n s o l e 1 5 . 7 5 2 K 35 m s s e c e s . e x e 2772 C o n s o l e 1 1 1 . 0 8 0 K 36 PWRISOVM.EXE 3000 C o n s o l e 1 3 . 9 6 4 K 37 t a s k e n g . e x e 3072 C o n s o l e 1 4 . 2 7 6 K 38 CCleaner . e x e 3104 C o n s o l e 1 2 . 1 6 4 K 39 S e a r c h I n d e x e r . e x e 3128 S e r v i c e s 0 4 6 . 0 6 4 K 40 wmpnetwk . e x e 3248 S e r v i c e s 0 7 . 5 0 0 K 41 s v c h o s t . e x e 3472 S e r v i c e s 0 1 1 . 7 2 4 K 42 a u d i o d g . e x e 3924 S e r v i c e s 0 1 4 . 1 6 8 K 43 s v c h o s t . e x e 3684 S e r v i c e s 0 5 . 4 0 4 K 44 cmd . e x e 1612 C o n s o l e 1 2 . 9 6 8 K 45 c o n h o s t . e x e 1940 C o n s o l e 1 4 . 7 5 2 K 46 t a s k l i s t . e x e 3088 C o n s o l e 1 4 . 2 6 4 K 47 WmiPrvSE . e x e 2908 S e r v i c e s 0 4 . 8 3 2 K