1 / 89

Tony’s Top 10 Application Artifacts A Computer Forensics Approach to OWASP Top 10

OWASP AppSec Brazil 2010, Campinas, SP. Tony’s Top 10 Application Artifacts A Computer Forensics Approach to OWASP Top 10. Tony Rodrigues, CISSP, CFCP Provider IT Business Solution inv.forense arroba gmail ponto com. Quem sou ?. Tony Rodrigues, CISSP, CFCP, Security +

sook
Download Presentation

Tony’s Top 10 Application Artifacts A Computer Forensics Approach to OWASP Top 10

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OWASP AppSec Brazil 2010, Campinas, SP Tony’s Top 10 Application Artifacts A Computer Forensics Approach to OWASP Top 10 • Tony Rodrigues, CISSP, CFCP • Provider IT Business Solution • inv.forense arroba gmail ponto com

  2. Quem sou ? • Tony Rodrigues, CISSP, CFCP, Security+ • Gestor/TI e Consultor em Segurança de Informações • Perito/Investigador em Computação Forense • Blog: http://forcomp.blogspot.com

  3. Agenda • Introdução • CF de aplicações • Top 10 – Vestígios • Web Server Log • Banco de Dados • Timelines • Logs do SO • Logs da Aplicação • Monitoramento de Rede • Registry • Sistema de Arquivos • Memória • Documentação • Conclusão

  4. Computação Forense de Aplicações • Incidente já ocorreu ! • Busca descobrir • Quem ? • Quando ? • Como ? • Alcance (DoP) • Analisa os vestígios deixados • Nas aplicações • No seu ambiente

  5. Computação Forense de Aplicações (II) • Destaca-se: • Necessidade de respostas rápidas • Requerem entendimento específico da aplicação • Forte dependência de outras disciplinas forenses • Disco, Memória • Correlação nos resultados • Requisitada em diversas normas • PCI (DSS), SUSEP (285)

  6. Computação Forense de Aplicações (III) • Desafios: • Volume de informações • Ausência de monitoramentos e logs • Pouca disponibilidade do ambiente • Ausência de padrão nos logs dificulta correlação

  7. OWASP Top 10 • Os dez riscos mais críticos para aplicações Web • Top 10 anual • Conceitos • Como verificar as vulnerabilidades • Como evitá-las • Exemplos de vulnerabilidades

  8. Tony’s Top 10 ??? • Relação dos vestígios mais comuns em Forense de Aplicações • Correlacionam-se com os OWASP Top 10 • Ferramentas e técnicas aplicáveis

  9. #1 – Log do WebServer • Registra cada requisição ao Web Server • Formato de texto • Geralmente podem ser configurados quanto às informações a logar • É a porta de entrada dos sistemas Web

  10. #1 – Log do WebServer (IIS) • Formato W3C Extended • Em geral, ficam em LogFiles\W3SVCx • Por default, logam: • Data/Hora, Client IP, Server Info, HTTP Method, URL e Parâmetros, Http Status Code e User Agent • Pode ser habilitado: • Bytes transferidos, Host Header, Cookies, Referrer • Dados do POST nunca são logados

  11. #1 – Log do WebServer (IIS) #Software: Microsoft Internet Information Services 5.0 #Version: 1.0 #Date: 2008-06-20 01:03:15 #Fields:time c-ip cs-method cs-uri-stem cs-uri-query Status version 1:03:15 172.16.22.33 POST /execute.asp sessionid=90198e1525e4b03797f833ff4320af39 200 HTTP/1.0

  12. #1 – Log do WebServer (IIS) #Software: Microsoft Internet Information Services 5.0 #Version: 1.0 #Date: 2005-05-13 07:40:49 #Fields: date time c-ipcs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs(User-Agent) cs(Cookie) cs(Referer) 2005-05-13 07:40:49 203.164.88.39 - W3SVC235 W2KWEB5B 207.172.13.44 80 GET /rcn.htm - 200 0 1982 381 594 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.0;+.NET+CLR+1.1.4322) - -

  13. #1 – Log do WebServer (Apache) • Formato e localização bastante customizáveis • Configuração fica em httpd.conf • Access.log armazena todas as requisições • LogFormat "%h %l %u %t \"%r\" %>s %b“ • Host remoto, logname remoto, usuário remoto, hora, linha do request, status e bytes enviados • Mod_log_config e Mod_logio ampliam informações logadas • Dados do POST nunca são logados

  14. #1 – Log do WebServer (Apache) Usando: LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio Gera: 192.168.200.105 - - [24/Nov/2006:11:23:30 -0500] "GET / HTTP/1.1" 200 8054 "http://wooga.drbacchus.com/index.php?" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0" 935 8522

  15. #1 – Log do WebServer - Ferramenta • Microsoft LogParser • Ferramenta free para manipular logs • Suporta vários formatos de log • Usa sintaxe SQL para manipular dados • C:\WINNT\System32\LogFiles\W3SVC1>logparser "SELECT DISTINCT TO_LOWERCASE(cs-uri-stem) AS URL, Count(*) AS Hits FROM ex*.log WHERE sc-status=200 GROUP BY URL ORDER BY URL" -rtp:-1

  16. #1 – Log do WebServer – Visual LogParser

  17. #1 – Log do WebServer – Principais campos

  18. #1 – Log do WebServer - Investigando SQL Injection: logparser "SELECT date, time,s-ip,c-ip,cs-uri-stem AS query INTO C:\Log_op\sql1.txt FROM C:\W3SVC1\ex*.log WHERE (sc-status>=200 AND sc-status<400) AND (cs-uri-stem LIKE '%--%' OR cs-uri-stem LIKE '%;%' OR cs-uri-stem LIKE'%\'%' OR cs-uri-stem LIKE '%#%') AND (cs-uri-stem LIKE '%|%' OR cs-uri-stem LIKE '%+%' OR cs-uri-stem LIKE '%OR%‘ OR cs-uri-stem LIKE '%AND%' OR cs-uri-stem LIKE '%SELECT%' OR cs-uri-stem LIKE '%UPDATE%‘ OR cs-uri-stem LIKE '%INSERT%' OR … outras keywords de SQL) ORDER BY date, time"

  19. #1 – Log do WebServer - Investigando XSS: logparser "SELECT date, time, s-ip, c-ip, cs-uri-stem AS query INTO C:\Log_op\xss.txt FROM C:\W3SVC1\ex*.log WHERE cs-uri-stem LIKE '%<%' OR cs-uri-stem LIKE '%>%' OR cs-uri-stem LIKE '%\'%' OR cs-uri-stem LIKE '%:%' OR cs-uri-stem LIKE '%\"%' OR cs-uri-stem LIKE '%\--%‘ OR … outras keywords html (script, iframe, por exemplo) ORDER BY date, time"

  20. #1 – Log do WebServer - Investigando Session Mgt: logparser "SELECT date, cs-uri-query, c-ip, count(cs-uri-query) as Ocorrencias INTO C:\Log_op\session.txt FROM C:\W3SVC1\ex*.log WHERE cs-uri-query LIKE '%sessionID%‘ GROUP BY date, cs-uri-query, c-ip “ Suspeite de mesmo sessionID na mesma data e com IPs diferentes

  21. #1 – Log do WebServer - Investigando Envio de informações: logparser "SELECT date, c-ip, max(sc-bytes) as MaiorEnvio INTO C:\Log_op\envio.txt FROM C:\W3SVC1\ex*.log GROUP BY date, c-ip “ Valor de MaiorEnvio destoando dos outros deve ser averiguado. Faça devidos filtros por data

  22. #1 – Log do WebServer - Investigando Redirection/CSRF: logparser "SELECT cs-uri-stem, cs-referer, count() as Ocorrencias INTO C:\Log_op\referer.txt FROM C:\W3SVC1\ex*.log GROUP BY cs-uri-stem, cs-referer HAVING cs-uri-stem <> ‘/paginainicial’“ Em geral, páginas tem um pequeno conjunto específico de referers

  23. #1 – Log do WebServer - Investigando Subqueries: logparser "SELECT c-ip, cs-uri-stem, Count(*) as Hits FROM ex*.log WHERE TO_LOWERCASE(cs-uri-stem) NOT LIKE '%.gif' AND TO_LOWERCASE(cs-uri-stem) NOT LIKE '%.jpg%' AND c-ip IN (SELECT c-ip FROM c:\Log_op\arquivo.txt WHERE sc-status=404) AND sc-status=200 GROUP BY c-ip, cs-uri-stem" -rtp:-1“ Resultados podem ser aninhados

  24. Caso – Ações em Alta • Vários clientes da corretora alegaram que operações foram feitas em suas contas sem sua autorização. Ações de uma empresa desconhecida foram compradas a partir de suas contas • Informações iniciais: • Data/Hora das transações • Log do WebServer (IIS) • O que foi localizado no log: • SessionID passado pela URL (GET) • Vários IPs em datas diferentes com o mesmo SessionID

  25. Caso – Ações em Alta • O que foi localizado na máquina da vítima: • Nenhum trojan ou keylogger • Um email (phishing) explorando sessionfixation • Conclusão • As pessoas lesadas tinham clicado em um email fraudulento que explorava a falha da aplicação. • Vestígios localizados no log do webserver e no computador de uma das vítimas apoiaram a conclusão.

  26. #2 – Banco de Dados • Fundamental nas aplicações Web • Vestígios importantes mesmo sem auditorias ligadas • Alvo comum em ataques • Vestígios em DML e DDL

  27. #2 – Banco de Dados – Ordem de Coleta • Dados voláteis do SGBD • Sessões e Conexões • Requests ativos • Usuários ativos • Memória • Transaction Logs • Arquivos de Base de Dados • Error Logs do SGBD • Logs de eventos do sistema • Arquivos de Trace

  28. #2 – Banco de Dados – Coletando dados voláteis • Ferramenta: sqlcmd • Command line para SQL Server • Permite executar queries no banco de dados e logar os resultados • Outros bancos possuem conceitos similares • Coletando o transaction log ativo: • sp_helpdb

  29. #2 – Banco de Dados – Coletando dados voláteis • Sessões abertas no banco: • select * fromsys.dm_exec_sessions

  30. #2 – Banco de Dados – Coletando dados voláteis • Conexões ativas no banco: • selectc.session_id, c.connect_time, • c.net_transport, c.last_read, • c.last_write, c.client_net_address, • c.local_tcp_port,s.text • from sys.dm_exec_connections c • cross apply sys.dm_exec_sql_text • (c.most_recent_sql_handle) s

  31. #2 – Banco de Dados – Coletando dados voláteis • Contas do banco: • selectname, type_desc, create_date, • modify_date • from sys.sql_logins • order by • create_date, modify_date

  32. #2 – Banco de Dados – Coletando dados voláteis • Informações sobre execuções: • select * fromsys.dm_exec_requests 1.SELECT[text]FROMsys.dm_exec_sql_text Results: 1.Text 2.SELECTAccountDescriptionFROMDimAccountWHEREAccountKey=2

  33. #2 – Banco de Dados – Selects • Informações sobre queries recentemente executadas: QueryPlansCache • Exemplo:

  34. #2 – Banco de Dados – Selects – Plan Cache • Armazenam quantidade considerável de informações • Em um server com 28Gb, pode chegar a 16Gb de cache em um SQL Server 2005 • Podem ficar dias na memória • Dependências: • Demanda de memória do servidor • Mudança em objetos associados • Limpeza manual do cache • Restart do serviço do SQL Server

  35. #2 – Banco de Dados – Selects – Plan Cache • Capturando informações do QueryPlanCache: • Select * • fromsys.dm_exec_cached_plans • crossapplysys.dm_exec_sql_text(plan_handle) • Outras informações no Cache: • Select * fromsys.dm_exec_query_stats • Select * • fromsys.dm_exec_cached_plans • crossapplysys.dm_exec_plan_attributes(plan_handle)

  36. #2 – Banco de Dados – Selects – Plan Cache • Analise queries que apresentem anomalias em relação ao padrão de queries da aplicação

  37. #2 – Banco de Dados – Transaction Log • Transaction Log • Não pode ser desligado como um item de auditoria • Registra DDLs e DMLs aplicadas ao banco • Permite recuperar conteúdos apagados • Permite detectar valores antes e após modificações

  38. #2 – Banco de Dados – Transaction Log • Coletando • - Select * from ::fn_dblog(NULL,NULL) • - Dbcc log (<nome do banco>,3)

  39. #2 – Banco de Dados – Transaction Log • Campos mais importantes:

  40. #2 – Banco de Dados – Transaction Log • RowContents – Estrutura:

  41. #2 – Banco de Dados – Ferramenta: SQLJuicer • Lista transações marcadas no transaction log • Reconstrói da transação mais recente à mais antiga após o último checkpoint • Informa data/hora, operação, campos afetados e valores antes/depois da transação • Dependente do SQL Server e do SQLCmd • Escrita em PERL • HELP ! • Ainda não lista DDLs • Algumas operações ainda não foram mapeadas • Avançado: Independência do SQL Server e dos checkpoints

  42. #2 – Banco de Dados – Outros vestígios • Arquivos de trace default: • Diretório MSSQL\LOG\LOG_#.TRC • Logs de erro do SQL Server • Diretório MSSQL\LOG\ERRORLOG

  43. Caso – Super Promoção de Eletros • Uma operadora de cartões de crédito alertou a uma companhia de vendas de departamento que opera pela Web que estava recebendo de lá repetidas transações fora do perfil • Informações iniciais: • Data/Hora das transações • Log do WebServer (IIS) • Banco de Dados SQL Server • O que foi localizado: • No transaction log havia vários updates, colocando preços ínfimos para os produtos anunciados no site • No query plan cache havia selects na tabela de compras, recuperando números de cartão de crédito • Esses números de cartão foram usados nas compras • Havia várias tentativas seguidas de login do usuário SA assinaladas no SQL Server Error Log • As queries dos updates foram realizadas pelo SA

  44. Caso – Super Promoção de Eletros • Conclusão • A senha do SA foi quebrada e o atacante se logou no banco. Ele veio a partir de uma máquina interna • Ele buscou números de CC para usar e realizou compras pela aplicação, depois de trocar os preços de vários produtos • Depois foi apurado que alguém resgatou os produtos no endereço de entrega usando Engenharia Social

  45. #3 – Timelines • Análise temporal dos eventos • Permitem filtrar por datas próximas ao evento • Envolvem: • Sistema de Arquivos • Eventos do SO • Logs diversos • System Restore Points • Sensível ao sincronismo de relógio !

  46. #3 – Timelines • Ferramentas: • FLS (The SleuthKit) • Log2Timeline • Ex-Tip

  47. #3 – Timelines – Log2timeline

  48. #4 – Logs do SO • Registram eventos específicos do SO • Podem ser usados em timelines • Envolvem: • Logs de eventos do Windows • Logs de Atividades Agendadas • SetupApi • Arquivos Prefetch • System Restore Points • Shadow Copy

  49. #4 – Logs do SO • Podem indicar: • Erros de execução em exploits • Execução de programas estranhos ao ambiente • Uso de mídia removível no servidor • Mudança de versão de arquivo

  50. #4 – Logs do SO • Ferramentas: • Evtxdump • Evtxparser • LogParser • Prefetch_info • WFA • SAEX (SetupApi Extractor) • ShadowExplorer • Restore Point Analyser

More Related