quarta-feira, 19 de fevereiro de 2014



Neste tópico vamos ver como partes fundamentais de analise forense em browsers Mozilla Firefox, vulgarmente conhecidos por Firefox.

Breve história do Firefox:

Mozilla Firefox é um browser livre e multiplataforma desenvolvido pela Mozilla Foundation que conta com a ajuda de centenas de colaboradores.

A intenção da fundação é desenvolver um browser leve, seguro, intuitivo e altamente extensível.
Com mais de 25 milhões de downloads nos primeiros 99 dias após o lançamento, o Firefox tornou-se uma das aplicações em código-livre mais usadas por utilizadores domésticos.

Atingiu marca de 50 milhões de downloads em 29 de abril de 2005, aproximadamente 6 meses após o lançamento da versão 1.0.
A 26 de julho de 2005, o Firefox alcançou os 75 milhões de downloads, e a 19 de outubro de 2005 alcançou os 100 milhões de downloads, antes de completar o primeiro ano da versão 1.0 .
Em 26 de julho de 2012 estariam disponíveis cerca de 17.000 add-ons e já contavam com 3 bilhões de downloads.
O Firefox destaca-se como alternativa ao Microsoft Internet Explorer e reativou a chamada Guerra dos browsers.
Segundo a StatCounter, atualmente cerca de 20,01% de todos os utilizadores da Internet de todo o mundo utilizam o Firefox, sendo o terceiro browser mais usado.

O browser tem tido sucesso particular na Indonésia, Alemanha e Polónia, onde ele é o browser mais popular com 58%, 45% e 44% do mercado de participação.

Análise:

Como dito em cima o Firefox é um browser open-source multiplataforma, existem versões em Windows, Linux e Mac OSX.

Diretórios de interesse do Firefox:

Windows XP e versões anteriores:
C:\Documents and Settings\%username\Local Settings\Application Data\Mozilla\Firefox\Profiles

Windows Vista e 7:
C:\Users\%username%\%appdata%\Mozilla\Firefox\Profiles

Windows 8:
C:\Users\%username%\AppData\Roaming\Mozilla\Firefox\Profiles

Linux:       
/home/$username/.mozilla/firefox/Profiles

Mac OS X:       
/Users/$username/Library/Application Support/Firefox/Profiles/

Profiles.ini:

Neste diretório encontra-se um ficheiro de nome 'profiles.ini', este ficheiro contém informação e server para gerir perfis do Firefox. O ficheiro está em texto simples, e pode ser facilmente aberto, visualizado e editado utilizando um editor de texto tipo Notepad.

O exemplo que se segue mostra o conteúdo do profiles.ini para um único perfil:

Caminho Linux: /home/$username/.mozilla/firefox/profiles.ini

[General]
StartWithLastProfile=1

[Profile0]
Name=default
IsRelative=1
Path=ozxfg1g3.default

Quando o Firefox começa este ficheiro ajuda a determinar que diretório de utilizador carregar. Como é possível verificar a variável path aponta para o diretório que contem os dados do perfil.

Em ambientes com contas múltiplas, a variável StartWithLastProfile=1 faz com que o Firefox salte a pergunta que perfil quer utilizar e usa o ultimo perfil usado por defeito. Com ambientes múltiplos existem perfis adicionais e o ultimo a ser usado está indicado pela variável Default=1, como é possível verificar no exempla abaixo:

[General]
StartWithLastProfile=1
[Profile0]
Name=default
IsRelative=1
Path= profiles/ozxfg1g3.default
[Profile1]
Name=alicew
IsRelative=0
Path=Profiles/1w0ed5ct.emanuel
Default=1
[Profile2]
Name=sheldon
IsRelative=0
Path=Dfgh5ty.dadinho

De acordo com o exemplo anterior a variável IsRelative=1 refere que ozxfg1g3.default é o diretório por defeito do Firefox.
IsRelative=0 refere a outros perfis personalizados.
StartWithLastProfile=1 valida a opção "Não voltar a perguntar no arranque - Don't ask at start up". Neste exemplo o último perfil usado foi o 1w0ed5ct.emanuel porque a variável Default=1 .
Basicamente isto é tudo o que há a saber sobre gestão de perfis no Firefox.

Dentro de um diretório de perfil especifico pode-se encontrar ficheiros e subdiretórios. O Firefox guarda dados em ficheiros base de dados SQLite. Estes ficheiros são aqueles que têm o grosso das provas numa pesquisa forense.

Formhistory.sqlite - Contém dados sobre o histórico de usernames, inputs submetidos e inputs em caixas de pesquisa, etc...
Places.sqlite - Contém todo o histórico de páginas visitadas.
Download.sqlite - Contém informação sobre os ficheiros descarregados.
Cookies.sqlite - Contém informação sobres os cookies dos sites visitados.
Signons.sqlite - Contém as passwords salvas no Firefox.

Formhistory.sqlite:

Este ficheiro de base de dados do tipo SQLite contém nomes, usernames, emails, e todos os tipos de inputs introduzidos pelo utilizador. Para podermos abrir este tipo de ficheiro necessitamos de uma ferramenta que abra e interprete SQLite, o sqlite3 faz esse trabalho.

A base de dados Formhistory.sqlite contém as colunas:
id; fieldname; value; timesUsed; firstUsed; lastUsed;

Fazemos uma query simples:
select * from moz_formhistory;

Que nos devolve o seguinte resultado:
1|searchbar-history|chrome download|1|1360055150428512|1360055150428512
2|searchbar-history|skype|1|1360055164035421|1360055164035421
3|username|Un0wn_X|1|1360208052290891|1360208052290891

É possível ter o output em .csv, usando os seguintes passos:
.headers on
.mode csv
.output file.csv
select * from moz_formhistory;



Histórico Web (Place.sqlite):

Todo o histórico de navegação na internet via Firefox fica guardado na base de dados places.sqlite, ficheiro que contém múltiplos esquemas (schemas).

As tabelas que fazem parte do places.sqlite são:

moz_anno_attributes;
moz_favicons;
moz_keywords;
moz_annos;
moz_historyvisits;
moz_places;
moz_bookmarks;
moz_inputhistory;
moz_bookmarks_roots;
moz_items_anos;

Para encontrar as URLs visitadas e a data de visita temos que de fazer uma query à tabela moz_places e utilizando a coluna visit_date da tabela moz_historyvisits.
A coluna id na tabela moz_places corresponde à coluna place_id na tabela moz_historyvisits. A coluna visited_date está convertida em PRTime (um integer 64-bits de contagem em microssegundos).

A query seguinte devolve o resulta de uma forma fácil de ler:

SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url FROM moz_places,moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id ;

Resultado:

2013-02-06 14:58:20;http://allblogsl.blogspot.com/
2013-02-06 14:57:13;http://allblogsl.blogspot.com/2013/02/rooting-kioptrix-4.html
2013-02-06 14:52:59;http://forum.intern0t.org/
2013-02-06 14:55:23;http://forum.intern0t.org/
2013-02-06 14:55:21;http://gmail.com/
2013-02-06 14:56:31;http://facebook.com/
2013-02-06 14:56:44;http://google.com/ncr
2013-02-06 14:55:38;http://www.youtube.com/music
2013-02-06 14:55:41;http://www.unownsec.blogspot.com
2013-02-06 14:56:10;http://www.exploit-db.com/ghdb/3807
2013-02-06 14:56:40;http://www.exploit-db.com/ghdb/3808
2013-02-06 14:56:36;http://www.facebook.com/
2013-02-06 15:01:04;http://www.zub-moon.com/
2013-02-06 14:53:16;https://encrypted.google.com/
2013-02-06 14:55:31;https://encrypted.google.com/
2013-02-06 14:53:40;https://encrypted.google.com/search?q=sadsad&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
2013-02-06 14:53:02;https://forum.intern0t.org/forum.php
2013-02-06 14:55:28;https://forum.intern0t.org/forum.php

Marcadores/Bookmarks (Place.sqlite):

Marcadores também são guardados na base de dados places.sqlite. Para obtermos os marcadores temos de nos focar nas tabelas moz_bookmarks, moz_places e moz_items_anons.
Utilizando a query seguinte conseguimos extrair os marcadores guardados no Firefox:

 SELECT moz_bookmarks.type, moz_bookmarks.title, moz_bookmarks.dateAdded, moz_bookmarks.lastModified, moz_places.url, moz_places.title, moz_places.rev_host, moz_places.visit_count FROM moz_places, moz_bookmarks WHERE moz_bookmarks.fk = moz_places.id AND moz_bookmarks.type <> 3;

Resultado:

type;title;dateAdded;lastModified;url;title;rev_host;visit_count

1;Getting Started;1356598969855000;1356598969856000;http://www.mozilla.com/en-US/firefox/central/;;moc.allizom.www.;0
1;Help and Tutorials;1356598969859000;1356598969861000;http://www.mozilla.com/en-US/firefox/help/;;moc.allizom.www.;0
1;Customize Firefox;1356598969862000;1356598969865000;http://www.mozilla.com/en-US/firefox/customize/;;moc.allizom.www.;0
1;Get Involved;1356598969866000;1356598969867000;http://www.mozilla.com/en-US/firefox/community/;;moc.allizom.www.;0
1;About Us;1356598969868000;1356598969869000;http://www.mozilla.com/en-US/about/;;moc.allizom.www.;0
1;Most Visited;1356598970368000;1356598970372000;place:redirectsMode=2&sort=8&maxResults=10;;;0


Utilizaremos a mesma query mas desta vez com as datas legíveis:

SELECT moz_bookmarks.type, moz_bookmarks.title, datetime(moz_bookmarks.dateAdded/1000000,'unixepoch'), datetime(moz_bookmarks.lastModified/1000000,'unixepoch'), moz_places.url, moz_places.title, moz_places.rev_host, moz_places.visit_count FROM moz_places, moz_bookmarks WHERE moz_bookmarks.fk = moz_places.id AND moz_bookmarks.type <> 3;

Resultado:

1;Getting Started;2012-12-27 09:02:49;2012-12-27 09:02:49;http://www.mozilla.com/en-US/firefox/central/;;moc.allizom.www.;0
1;Help and Tutorials;2012-12-27 09:02:49;2012-12-27 09:02:49;http://www.mozilla.com/en-US/firefox/help/;;moc.allizom.www.;0
1;Customize Firefox;2012-12-27 09:02:49;2012-12-27 09:02:49;http://www.mozilla.com/en-US/firefox/customize/;;moc.allizom.www.;0
1;Get Involved;2012-12-27 09:02:49;2012-12-27 09:02:49;http://www.mozilla.com/en-US/firefox/community/;;moc.allizom.www.;0
1;About Us;2012-12-27 09:02:49;2012-12-27 09:02:49;http://www.mozilla.com/en-US/about/;;moc.allizom.www.;0
1;Most Visited;2012-12-27 09:02:50;2012-12-27 09:02:50;place:redirectsMode=2&sort=8&maxResults=10;;;0
1;Recently Bookmarked;2012-12-27 09:02:50;2012-12-27 09:02:50;place:folder=BOOKMARKS_MENU&folder=UNFILED_BOOKMARKS&folder=TOOLBAR&queryType=1&sort=12&excludeItemIfParentHasAnnotation=livemark%2FfeedURI&maxResults=10&excludeQueries=1;;;0
1;Recent Tags;2012-12-27 09:02:50;2012-12-27 09:02:50;place:type=6&sort=14&maxResults=10;;;0

Dados de sessões salvas (Saved Sessions Data):

Quando o Firefox "crasha" ou quando não é terminado corretamente um ficheiro de nome sessiondata.js é criado e guardado, este ficheiro ajuda o Firefox a restaurar a sessão que não terminou de maneira correta.

O Firefox guarda este ficheiro em formato JSON (Javascript Object Notation Format), que pode ser visualizado com qualquer editor de texto tipo Notepad, mas os dados estarão desorganizados e será de difícil leitura. Para vermos o ficheiro estruturado e organizado utilizaremos um o JSON Viewer, um visualizador de ficheiros JSON.


Utilizando o JSON Viewer conseguimos pesquisar mais facilmente tabelas, janelas, inputs e cookies temporários da ultima sessão que foi interrompida.

Passwords (Signons.sqlite):

O Firefox guarda as passwords salvas na base de dados signons.sqlite, juntamente com o ficheiro encriptado key3.db . Existem vários softwares que ajudam a recuperação das passwords, tais como Firepassword Viewer, FirePass, FireMaster LinuxFirePassword.

Utilizando a query seguinte conseguimos extrair alguns dados interessantes dos utilizadores e passwords guardadas no Firefox:

SELECT id, hostname, httpRealm, formSubmitURL, usernameField, passwordField, encryptedUsername, encryptedPassword, guid, encType, datetime(timeCreated/1000000,'unixepoch'), datetime(timeLastUsed/1000000,'unixepoch'),datetime(timePasswordChanged/1000000,'unixepoch'), timesUsed FROM moz_logins

Resultado:

1;http://sup3rscorner.net;;http://sup3rscorner.net;login;password;MDIEEPgAABBBBAAACC CCCEwFAYIKoZIhvcWEQFnKrGFEqqqweRQTS3dEzNNCg==;MFoE EPgAAAAAAAWWWWWWAAEwFAYIKosklasvcNAwcECF2QDIfJd2/YBDAtTffkYu31kBzq0LXr7WmnYxCmoDvtGBh5O1bhOpnKLOpoW 2HYjOWl8HYldG2Vd/A=;{fcbb7594-2fd5-43ce-aa5f-f80304e6c468};1;2012-12-27 09:02:49;2012-12-27 09:02:49;2012-12-27 09:02:49;1


Cache:

Visualizar a cache também é muito importante. A cache tal como no Internet Explorer está dividida por vários ficheiros e vários diretórios. Vamos utilizar a ferramenta Mozillacacheview, outra ferramenta da distribuidora Nirsoft, sem esta ajuda preciosa não conseguiríamos obter o conteúdo do que está em cache.



Para fazer um dump da informação da cache para um ficheiro texto, temos que executar o mozillacacheview via linha de comandos, utilizando o seguinte comando:

MozillaCacheView.exe /stext cache.txt

Obtemos o seguinte resultado:

==================================================
Filename : 1.xml
Content Type : text/xml; charset=utf-8
URL : https://addons.mozilla.org/blocklist/3/%7Bec8030f7-c20a-464f-9b0e-13a3a9e97384%7D/11.0/Firefox/20120228210006/WINNT_x86-msvc/en-US/beta/Windows_NT%206.1/default/default/8/23/1
File Size : 48,359
Fetch Count : 1
Last Modified : 2/7/2013 10:53:57 PM
Last Fetched : 2/7/2013 10:53:53 PM
Expiration Time : 2/7/2013 10:57:17 PM
Server Name : web2.addons.phx1.mozilla.com
Server Response : HTTP/1.1 200 OK
Server Time : 2/7/2013 9:57:21 PM
Server Last Modified: N/A
Content Encoding :
Cache Name : 71FB9d01
Missing File : No
Cache Control : max-age=3600
ETag :
==================================================
Filename : 1359225691.css
Content Type : text/css
URL : https://forum.intern0t.org/clientscript/vbulletin_css/style00009l/additional.css?d=1359225691
File Size : 8,021
Fetch Count : 4
Last Modified : 2/7/2013 10:49:20 PM
Last Fetched : 2/7/2013 10:49:19 PM
Expiration Time : 2/7/2013 10:49:20 PM
Server Name : Apache
Server Response : HTTP/1.1 200 OK
Server Time : 1/30/2013 6:24:30 PM
Server Last Modified: 1/26/2013 10:41:32 AM
Content Encoding : gzip
Cache Name :
Missing File : No
Cache Control :
ETag : "42620c-bcef-4d435648a8f00"
==================================================

Extensões (Extension.sqlite):

Extensões são guardadas na base de dados extension.sqlite. É constituída por uma tabela simples com as seguintes colunas:
internal_id; id; syncGUID; location; versiontype; internalName; updateURL; updateKey; optionsURL; optionsType; aboutURL; iconURL; icon64URL; defaultLocale; visible; active; userDisabled; appDisabled; pendingUninstall; descriptor; installDate; updateDate; applyB
ackgroundUpdates; bootstrap; skinnable; size; sourceURI; releaseNotesURI; softDisabled; isForeignInstall; hasBinaryComponents; strictCompatibility;

Conseguimos obter a listagem de extensões utilizando a query:

select * from addon

Resultado:

1; testpilot@labs.mozilla.com; DhuDl_DAAg6C; app-profile; 1.2.2; extension;;;;;;; chrome://testpilot/skin/testpilot_32x32.png;; 1; 1; 1; 0; 0; 0; C:\Users\Un0wn_X\AppData\Roaming\Mozilla\Firefox\Profiles\1w0ed5ct.default\extensions\testpilot@labs.mozilla.com.xpi; 1356598961406; 1357045887854; 1; 0; 0; 1261351; https://addons.cdn.mozilla.net/storage/public-staging/13661/test_pilot-1.2.2-fx.xpi; https://addons.mozilla.org/versions/updateInfo/1375230/en-US/; 0; 0; 0; 0
2; {35379F86-8CCB-4724-AE33-4278DE266C70}; OR7Ax6piYzy2; app-profile; 1.0.8; extension;;;; chrome://grabpro/content/config.xul;; chrome://grabpro/content/about.xul; chrome://grabpro/skin/OneClickLogo.png;; 2; 1; 1; 0; 0; 0; C:\Program Files (x86)\Orbitdownloader\addons\OneClickYouTubeDownloader; 1356489886290; 1356489886290; 1; 0; 0; 541701;;; 0; 0; 1; 0

Cookies (Cookies.sqlite):

Os cookies ao contrário do Internet Explorer que são guardados em ficheiros independentes, no Firefox são guardados numa base de dados, cookies.sqlite.

Conseguimos obter a informação disponível sobre os cookies utilizando a query:

select name,value,host,path,expiry,datetime(lastAccessed/1000000,'unixepoch') from moz_cookies;

Resultado:

PREF; ID=cc5b4db31e95c539:U=51ac107344a2847c:FF=0:TM=1360055094:LM=1360055164:S=wrOb53NnmEx0x77M; .google.com; /; 1423127164; 2013-02-07 13:30:14
NID; 67=bye1hEM5ZQr2DRDANLajYiwJ0Hn39Ag4p0tVWmvgA5nbiAWvNc9hkXAOjPFFym7mF_HFT3Qd6tDtEJL-uRDfyT9HnFGimTQnO1BZS2EsB3RKTVEh19GXZ53UYMlLv-TK; .google.com; /; 1376019397; 2013-02-07 13:30:14

Downloads (Downloads.sqlite):

O histórico de downloads está disponível na base de dados downloads.sqlite.

Conseguimos obter que downloads foram efetuados utilizando a query:

select id,name,source,target,tempPath,datetime(startTime/1000000,'unixepoch'),datetime(endTime/1000000,'unixepoch') from moz_downloads;

Resultado:

1; mspass.zip; http://www.nirsoft.net/utils/mspass.zip; file:///C:/Users/Un0wn_X/Downloads/mspass.zip;; 2013-02-08 08:34:48; 2013-02-08 08:34:55

Leave a Reply

Subscribe to Posts | Subscribe to Comments

Labels

Question Dump A30-327 ACE AccessData AccessData ACE AccessData Certified Examiner AccessData FTK FTK Segurança da Informação Software (ISC)² CISSP Certified Information System Security Professional Preparação para Certificação Browsers Ferramentas Windows Análise Forense Microsoft OSINT Ouya Redes Android Malware Open Source Open Source Intelligence Sysinternals Sysinternals Live Sysinternals tools Cache Cookies Fingerprint Games Internet Explorer Mozilla Firefox Notícia Pentesting Python Script Skype Vulnerabilidades .dd .net 3.5 1Z0-144 ARPwner AccessChk v5.11 AccessEnum v1.32 Auburn Base de Dados Bypass C# CERT CISP CMS CSIP Canonical Centro de Cibersegurança China China Software and Integrated Chip Promotions Ciência Forense Computacional Cloud Creepy Cyber Security Information Sharing Partnership Código Dev Developer Disassembler Exploits FOCA Favorites Fingerprinting Organizations with Collected Archives Firefox Foundstone FoxOne Scanner Futuremark GCHQ Galleta GameInformer Gamepop Gaming Geolocalization Github Gmail Google Chrome Hardware Hash Hotmail IDS IP IPS JSON Javascript Object Notation Format Kaspersky Lab Kon-boot Live View MAC OSX MAC OSX Bypass MI5 Malware Bancário McAfee labs Microsoft Office Mozilla Foundation Msiecfexport Netflix Nirsoft Nmap Notepad++ ODA Online DisAssembler Oracle Oracle 11G Oryon C Oryon C Portable Outlook Ouya Specs PL/SQL Pasco Passwords Phishing Poisoning Programar Programação RAW RPC Republica Popular da China SQL SQLite Sandbox Sandboxie Scan Security Meeting ShadowSEC Skype Log Viewer Smartphones SmoothSec Startup Terdot The Verge Timestamp Trojan UK Ubuntu UbuntuKylin OS Userrole Virtualização WIFI WebApp Webmails Windows Bypass Windows Registry Write Blocker XML Yahoo Zeus hash-identifier iFixIt index.dat profiles.ini sqlite3 th3j35t3r wig

Posts + Vistos

Com tecnologia do Blogger.