Capítulo 5 Conclusão e Trabalho Futuro
5.1 Conclusão
Neste trabalho propusemos constituir uma framework para suportar uma ideia, na qual reconhecemos bastante valor, face à realidade que o mercado nos apresenta. De facto uma ferramenta capaz de facilitar a tarefa de um analista de segurança apresenta muito potencial, já que reduz a carga que é colocada sobre o analista, libertando-o para que possa desempenhar outras tarefas de criticidade elevada.
O sistema que desenvolvemos tira partido das redes sociais para extrair informação que pode, eventualmente, levar um analista a detectar ameaças e a prevenir e mitigar as capacidades das mesmas. Para esse efeito criámos uma ferramenta que extrai dados do Twitter, refina-os com base numa técnica de aprendizagem de máquinas supervisionada (a abordagem da nossa prova de conceito é bastante simplista), em que o mecanismo de
feedback provém de informação fornecida pelo utilizador e envia-os para o SIEM
ArcSight, para que possam ser analisados.
Face ao objectivo inicial, não só constituímos uma prova de conceito que demonstra a aplicabilidade da solução proposta e desenvolvida, como criámos um trabalho que consideramos percursor e passível de melhoria no futuro, estabelecendo uma base daquilo que vai sendo cada vez mais fundamental na área da analítica de segurança. Apesar de simplistas, as nossas técnicas representam um acréscimo de valor às actividades que a ferramenta poderá suportar, e são simbólicas do potencial que pode ter um trabalho subsequente com foco na parte da nossa ferramenta associada a reduzir e refinar os conjuntos de dados em análise.
Para além do esforço de investigação que nos levou até este ponto (e a reconhecer uma forma de colmatar a necessidade identificada), desenvolvemos e testámos, com resultados positivos, um protótipo com uma utilização que pode ter grande utilidade para os clientes da própria empresa em que o estágio se insere.
5.2 Discussão
Tendo todo o trabalho de revisão do comportamento da ferramenta sido manual, pudemos observar alguns aspectos específicos da análise que não transparecem através
52
da estatística. Um desses factos prende-se com mais de 70% dos resultados úteis presentes no conjunto pós-refinamento estarem contidos nos cerca de 50% de resultados com maior pontuação do conjunto (ou seja, são os primeiros “da lista”).
Não desconsideramos a relevância que poderá ter a informação que é perdida pela ferramenta após a actividade de refinamento. Em centenas de tweets podem estar as evidências mais claras de ameaças a uma organização, no entanto, trata-se de um compromisso que deve ser entendido como um risco e cabe a cada um adequá-lo ao seu nível de confiança. Note-se que o valor de 5% de informação extraída dos conjuntos não- refinados foi definido com base em observação empírica de que nesse subconjunto estaria a maior parte da informação útil.
O mecanismo de pontuação baseado em feedback do utilizador (analista, neste caso) apresenta um resultado positivo. No entanto, podemos especular sobre uma utilização a longo prazo em que o conteúdo da lista da votação (lista de palavras-chave que vão ganhando relevância consoante a votação do utilizador) vai crescendo e sendo aprumado. Aqui podem surgir vários cenários díspares: não só esta lista pode crescer exponencialmente e a carga de processamento ser tão elevada que a ferramenta acaba por ser impossibilitada de produzir resultados em tempo útil; mas também, na ausência de um mecanismo de purga de informação irrelevante, o conteúdo da mesma poderá tornar-se repetitivo ou comportar elementos que não acrescentam valor, ou até, deterioram a capacidade analítica da ferramenta (suponha-se o caso de ganharem relevância excessiva palavras que, por serem comuns na própria língua, aparecem muitas vezes em publicações de utilizadores). Neste aspecto, apontamos o mecanismo de refinamento como merecedor de especial atenção, quer através da adição de um mecanismo de purga, ou que retire valor/pontuação/importância a palavras-chave irrelevantes no âmbito em caso, ou da introdução de métodos mais complexos de refinamento de texto “útil”.
Ainda quanto ao volume de dados produzido devemos salientar que, apesar da significativa redução do conjunto de informação que a ferramenta foi capaz de realizar, não podemos descartar o facto de vários milhares de frases/parágrafos serem de difícil análise, mesmo para um analista experiente. Aqui achamos ser essencial, ainda no âmbito da plataforma, a utilização de técnicas de visualização que sejam capazes de apresentar dados textuais (associados a comunicação de pessoas) de forma útil e comfortável para um analista, algo não suportado pelas plataformas SIEM actualmente em uso.
5.3 Experiência
O trabalho que aqui se apresenta foi desenvolvido em simultâneo com outras actividades levadas a cabo pelo aluno na Unisys, de manutenção e implementação da
53
plataforma ArcSight, desenvolvimento de conteúdos para a mesma e realização de auditorias de segurança. Especificamente ao desenvolvimento do trabalho foi alocado cerca de 40% do tempo do aluno na empresa.
O processo de estágio curricular apresentou uma série de benefícios para o trabalho aqui apresentado, tendo-se, graças a ele, e à colaboração da Unisys, ganho uma melhor compreensão do estado-de-coisas na área do SIEM e da segurança informática em geral.
A participação activa dos restantes colegas da empresa, a convivência com os clientes e o acesso a equipamento actual para condução da avaliação da ferramenta facilitaram bastante o trabalho. Para além do trabalho desenvolvido, as actividades desempenhadas pelo aluno passaram, essencialmente, pela implementação, gestão e manutenção da plataforma ArcSight em 3 clientes de diferentes sectores (projectos que foram construídos de raiz e que contemplaram vários esforços de integração). Adicionalmente o aluno esteve envolvido num projecto internacional com uma grande empresa do sector dos serviços financeiros, desenvolvendo conteúdo para utilização por parte de um SOC.
5.4 Trabalho Futuro
Acreditamos existirem 4 oportunidades de melhoria do trabalho aqui apresentado.
Em primeiro lugar, e sendo um dos pontos onde poderá existir grande margem de melhoria, colocamos a extracção de dados de mais fontes. Na prova de conceito apresentada, optámos por nos focar, essencialmente por limitações temporais e pela diversidade de componentes que a solução exigiu, na recolha de informação da rede social Twitter. No entanto, a recolha pode (e acreditamos que deve) ser alargada a qualquer canal de informação OSINT que possa ser transformado em fluxos de informação textual, quer se trate de fóruns, abertos ou “fechados” (muitos fóruns exigem registo de conta para visualização de conteúdo), outras redes sociais e até meios mais esotéricos (do ponto de vista do processamento de informação textual) como chamadas telefónicas (por exemplo, dentro do perímetro da organização, para detectar fugas de informação) ou SMSs. Esta adição de fontes vai não só substanciar os conjuntos de informação disponível para análise, dando maior visibilidade sobre o cômputo geral da informação em circulação, como também possibilitar o cruzamento da informação disponível de fontes distintas e enriquecer a análise da(s) ameaça(s) em causa.
Em segundo lugar, e ocupando uma posição central na nossa framework, passível de significativa melhoria, observamos o nosso instrumento de refinamento de dados. Aqui parece-nos evidente que existe margem para que o mecanismo de votação seja refinado
54
de forma a colmatar os problemas revelados na conclusão do trabalho. O objectivo principal deste componente era o de criar algo que fosse capaz de, seguindo orientações de um analista de segurança de um SOC, pré-calcular a informação que este poderá entender como sendo relevante e descartar o restante conteúdo. Problemas como a degradação do desempenho da análise com o aumento da intervenção do analista e a possibilidade de se danificar a análise devido ao método simplista utilizado (no caso de não existirem medidas de prevenção desse facto) levam-nos a considerar outros processos de refinamento de conjuntos de dados.
Sobre esse mesmo tema surgem abordagens muito interessantes e, neste momento, estamos a considerar um complemento ao método da solução, recorrendo a mecanismos de análise de agrupamentos [59]. O uso desses mecanismos pode facilitar ao utilizador a detecção de situações anómalas ou inesperadas, através do agrupamento, por exemplo, de publicações com algum indicador de relevância (que representem risco potencial de ameaça), em conjuntos similares. Isto é algo que pode ser muito interessante na detecção e resposta a ameaças de hacktivismo que tentem dispersar informação e reunir apoiantes através das redes sociais, ou mesmo na prevenção de dispersões de malware (através de alertas propagados/publicados nas redes sociais e que se tornam quase “virais”, como foi o caso do Rombertik [61], aquando da avaliação da ferramenta).
Ainda quanto a abordagens de aprendizagem automática, estamos a planear uma segunda rota de melhoria da solução, contemplando uma tentativa de association analysis (análise de associações), mais concretamente, association rule mining [60] (extracção de regras de associação), para possibilitar a descoberta de padrões de correlação entre os dados analisados que possam ser indicativos de actividade maliciosa.
Um ponto também muito relevante é o da visualização da informação textual recolhida. Métodos eficazes de transmitir conhecimento ao analista, através de técnicas de visualização de dados, especificamente textuais e de comunicação interpessoal, são escassos no âmbito das plataformas SIEM, por isso acreditamos estar aqui um ponto merecedor de atenção num trabalho futuro.
Finalmente o terceiro principal ponto de melhoria da nossa solução prende-se com a integração da solução com plataformas SIEM, ou o tradutor (wrapper), como denominado na definição da arquitectura. Aqui as melhorias são de menor complexidade e bastante mais orientadas a possibilitar o funcionamento com outro tipo de SIEMs. Reconhecemos a importância, ainda que não ao nível da dos restantes pontos, de tornar esta ferramenta o mais aberta e multiplataforma possível, para facilitar a sua utilização em ambientes reais, diversos.
55
Glossário
API
Application Programming Interface – conjunto de ferramentas para auxiliar os
desenvolvedores de software na criação de aplicações
arcOSI
Software open-source para extracção de dados de fontes abertas e transporte para o
ArcSight
ArcSight
Solução de SIEM empresarial, desenvolvida e mantida pela empresa Hewllet-Packard
Big Data
Termo que representa recolha de dados (e possivelmente análise e extracção de informação) de grandes conjuntos, tão volumosos, que geralmente requerem técnicas especializadas para serem manuseados
Business Intelligence
Conjunto de técnicas para transformar dados do negócio em informação (e conhecimento) relevante à actividade de uma organização, potenciando a tomada de decisões informada e omnisciente (em aspectos do negócio)
CEF
Common Event Format – o formato através do qual o ArcSight processa os eventos/dados dentro do sistema
Commercial Intelligence
Informação de fontes abertas e/ou obtida através de meios legítimos e que pode revelar dados comerciais de grande relevância que contribuam positivamente para auxiliar uma
56
organização a atingir os seus objectivos. Pode ser dividida em Business Intelligence, e Competitor/Competitive Intelligence
Competitor/Competitive Intelligence
Conjunto de actividades associadas à recolha e utilização de informação em produtos, clientes ou competidores
CRM
Customer Relationship Management – sistema (ou conjunto de sistemas) para gestão das interacções de uma organização com os seus clientes
Extracção de Informação
Processo de descoberta de padrões, detecção de informação estratégica e derivação de conhecimento a partir de dados contidos em conjuntos muito grandes
Firewall
Dispositivo para mediar e controlar o acesso a recursos de informação, interpondo-se entre a máquina/dispositivo que pretende obter acesso a um determinado recurso e o próprio recurso
Hacktivist
Um utilizador mal-intencionado que procura corromper, comprometer, atacar ou destruir activos de informação, pertencentes a uma empresa ou organização, motivado por crenças ou razões políticas
IAM
Identitity and Access Management – paradigma e conjunto de ferramentas/produtos para a gestão de identidades de conjuntos de utilizadores de sistemas, e que pode controlar/mediar processos de autenticação e autorização em sistemas ou aplicações
57
IDS
Intrusion Detection System – dispositivo que monitoriza redes e/ou sistemas, em busca de evidências de comprometimento ou actividade maliciosa, e que pode ter capacidades de despoletar alertas ou acções correctivas
Aprendizagem de máquinas
Área da inteligência artificial que estuda técnicas que permitam aos computadores desenvolver capacidades de aprendizagem e dedução de informação
Processamento de Linguagem Natural
O estudo e técnicas associadas à compreensão da linguagem humana, com capacidades para inferência/dedução de significado ou intenção (entre outras)
Open-Source
Condição daquilo que é aberto, gratuito e de livre uso por qualquer individuo, em qualquer altura
OSCINT
O mesmo que OSINT
OSINT
Open-Source Intelligence – Informação aberta e livremente disponível, que flui em canais de livre acesso por parte de qualquer individuo
Script-Kiddy
Um individuo pouco instruído e pouco dotado que se serve de scripts ou programas desenvolvidos por terceiros para tentar atacar sistemas ou infra-estruturas
58
SEM
Security Event Management – conceito e conjunto de ferramentas que definem actividades associadas à recolha e armazenamento de informação de segurança, focado no armazenamento a longo prazo, para efeitos de facilitar a análise histórica
SIEM
Security Information and Event Management – conceito e conjunto de ferramentas que combinam as capacidades dos sistemas SIM e SEM
SIM
Security Information Management – conceito e conjunto de ferramentas que definem as actividades relacionadas com a recolha e processamento de informação de segurança, focado na disponibilização de dados em tempo-real
SOC
Security Operations Centre – centro para protecção, monitorização e controlo de activos de informação
Redes Sociais
Plataformas online para facilitar a comunicação entre indivíduos ou os seus “pseudónimos” virtuais. O termo é considerado no contexto da Internet
59
Bibliografia
[1] D. R. Miller, S. Harris, A. Harper, S. VanDyke e C. Blask, “Security Information and Event Management (SIEM) implementation,” D. R. Miller, Ed., McGraw-Hill, 2011, pp. XXV-XXXIV.
[2] L. Hewlett-Packard Development Company, “Life Cycle of an Event Through ESM,” em ESM 101, Concepts for ArcSight ESM 6.5c SP1, Hewlett-Packard Development Company, L.P., 2014, p. 27.
[3] E. J. Appel, Cybervetting: Internet Searches for Vetting, Investigations, and Open-Source Intelligence, Crc Press, 2014.
[4] S. L. Technology, SAIL LABS Technology :: ROSIDS.
[5] A. Williams, “The Future of SIEM--The market will begin to diverge,”
Retrieved, vol. 12, nº 1, p. 2011, 2007.
[6] M. Nicolett e K. M. Kavanagh, “Magic quadrant for security information and event management,” Gartner RAS Core Reasearch Note (May 2009), 2014. [7] X. Mertens, “SIEM-architecture,” 2007. [Online]. Available:
http://blog.rootshell.be/2007/06/22/you-said-siem/siem-architecture/.
[8] A. Miller, “ArcSight Architecture,” 2013. [Online]. Available: http://www.allymiller.info/blog/risk/2013/08/376/.
[9] L. Hewlett-Packard Development Company, “ESM Anatomy,” em ESM 101,
Concepts for ESM 6.0c with CORR-Engine, Hewlett-Packard Development
Company, L.P., 2014, pp. 19-30.
[10] L. Hewlett-Packard Development Company, “User's Guide. ArcSight Console,” Hewlett-Packard Development Company, L.P., 2014.
[11] R. D. Steele, The new craft of intelligence, OSS International Press, 2002.
[12] R. D. Steele, “The importance of open source intelligence to the military,”
International Journal of Intelligence and Counter Intelligence, vol. 8, nº 4, pp.
60
[13] R. D. Steele, “Open source intelligence: What is it? why is it important to the military,” American Intelligence Journal, vol. 17, nº 1, pp. 35-41, 1996.
[14] H. Bean, No More Secrets: Open Source Information and the Reshaping of US Intelligence: Open Source Information and the Reshaping of US Intelligence, ABC-CLIO, 2011.
[15] A. Olcott, Open source intelligence in a networked world, vol. 7, A&C Black, 2012.
[16] C. Fleisher, “OSINT: Its Implications for Business/Competitive Intelligence Analysis and Analysts,” Inteligencia y Seguridad, vol. 2008, nº 4, pp. 115-141, 2008.
[17] R. Gupta e H. Brooks, Using Social Media for Global Security, John Wiley & Sons, 2013.
[18] A. Al Hasib, “Threats of online social networks,” IJCSNS International
Journal of Computer Science and Network Security, vol. 9, nº 11, pp. 288-93, 2009.
[19] Michael, Some Open Source Intelligence Basics, 2012.
[20] J. M. Kleinberg, “Challenges in mining social network data: processes, privacy, and paradoxes,” em Proceedings of the 13th ACM SIGKDD international
conference on Knowledge discovery and data mining, 2007.
[21] M. Zuber, “A Survey of Data Mining Techniques for Social Network Analysis,” International Journal of Research in Computer Engineering \&
Electronics, vol. 3, nº 6, 2014.
[22] M. Atzmueller, “Data mining on social interaction networks,” arXiv preprint
arXiv:1312.6675, 2013.
[23] M. M. Rahman, “Mining Social Data to Extract Intellectual Knowledge,”
arXiv preprint arXiv:1209.5345, 2012.
[24] A. Amine, R. M. Hamou e M. Simonet, “Detecting Opinions in Tweets,”
International Journal of Data Mining and Emerging Technologies, vol. 3, nº 1, pp.
23-32, 2013.
[25] T. Wang e H. Zhu, “Voting for Deceptive Opinion Spam Detection,” arXiv
61
[26] S. Kampakis e A. Adamides, “Using Twitter to predict football outcomes,”
arXiv preprint arXiv:1411.1243, 2014.
[27] P. Domingos, “Mining social networks for viral marketing,” IEEE Intelligent
Systems, vol. 20, nº 1, pp. 80-82, 2005.
[28] L. Tabourier, A.-S. Libert e R. Lambiotte, “RankMerging: Learning-to-rank in large-scale social networks (extended),” CoRR, vol. abs/1407.2515, 2014.
[29] W. Magdy, H. Sajjad, T. El-Ganainy e F. Sebastiani, “Bridging Social Media via Distant Supervision,” CoRR, vol. abs/1503.04424, 2015.
[30] C. Fang, H. Jin, J. Yang e Z. L. Lin, “Collaborative Feature Learning from Social Media,” CoRR, vol. abs/1502.01423, 2015.
[31] Nimble, “CRM,” Nimble, Inc, 2015. [Online]. Available: http://www.nimble.com/.
[32] Salesforce, “CRM,” Salesforce.com, 2015. [Online]. Available: http://www.salesforce.com.
[33] Zoho, “CRM,” Zoho, Inc, 2015. [Online]. Available: https://www.zoho.com/. [34] I. Salesforce.com, “Getting Started with Social Customer Service,” 2015.
[Online]. Available:
https://help.salesforce.com/help/pdfs/en/social_customer_service_impl_guide.pdf .
[35] R. Jurdak, A. Elfes, B. Kusy, A. Tews, W. Hu, E. Hernández, N. Kottege e P. Sikka, “Autonomous surveillance for biosecurity,” CoRR, vol. abs/1503.01173, 2015.
[36] J. N. Matias, A. Johnson, W. E. Boesel, B. Keegan, J. Friedman e C. DeTar, “Reporting, Reviewing, and Responding to Harassment on Twitter,” CoRR, vol. abs/1505.03359, 2015.
[37] W. Gharibi e M. Shaabi, “Cyber threats in social networking websites,”
CoRR, vol. abs/1202.2420, 2012.
[38] A. Guille e C. Favre, “Event detection, tracking, and visualization in Twitter: a mention-anomaly-based,” Social Netw. Analys. Mining, vol. 5, nº 1, pp. 18:1-- 18:18, 2015.
62
[39] B. A. Miller, M. S. Beard e N. T. Bliss, “Eigenspace analysis for threat detection in social networks,” em Proceedings of the 14th International
Conference on Information Fusion,, 2011.
[40] S. Dilek, H. Çakir e M. Aydin, “Applications of Artificial Intelligence Techniques to Combating Cyber,” CoRR, vol. abs/1502.03552, 2015.
[41] A. R. Zope, A. Vidhate e N. Harale, “Data minding approach in security information and event management,” J. Future Comput. Commun, 2013.
[42] P. a. D. G. Maciolek, “{CLUO:} Web-Scale Text Mining System for Open Source Intelligence Purposes,” Computer Science {(AGH)}, vol. 14, nº 1, pp. 45- 62, 2013.
[43] I. M. De Santos e A. M. Vega, “Las fuentes abiertas de información. Un sistema de competencia perfecta,” Inteligencia y seguridad: Revista de an{\'a}lisis
y prospectiva, nº 8, pp. 91-112, 2010.
[44] M. Karaman e H. Çatalkaya, “Institutional Cybersecurity: A Case Study of Open Source Intelligence and Social Networks”.
[45] D. Gritzalis, “Open-Source Intelligence produced from Social Media: A proactive cyber defense tool,” 2014.
[46] I. McAfee, “McAfee ZeroFOX Solution Brief,” 2015. [Online]. Available: https://www.zerofox.com/wp-content/uploads/z/McAfeeZF-Integrations-
Brief.pdf.
[47] I. ThreatConnect, “ThreatConnect,” 2015. [Online]. Available: http://www.threatconnect.com/news/hiding-in-the-clouds/.
[48] I. Cyveillance, “Cyveillance,” [Online]. Available: https://www.cyveillance.com/.
[49] I. Soteria, “Soteria,” 2015. [Online]. Available: http://www.soteriaintelligence.com/social-media-threats/.
[50] G. Martin, “ArcOSI,” 2011. [Online]. Available: https://code.google.com/p/arcosi/.
[51] Unknown, “Collective Intelligence Framework,” 2014. [Online]. Available: https://code.google.com/p/arcosi/.
63
[52] A. M. Swanda, “ArcReactor,” [Online]. Available: http://deadbits.org/projects/arcreactor/.
[53] I. ThreatStream, “ThreatStream OPTIC,” 2015. [Online]. Available: https://www.threatstream.com/platform/threatstream-integrator.
[54] Elastic, “ElasticSearch Docs,” 2015. [Online]. Available: https://www.elastic.co/guide/index.html.
[55] X. Mertens, “tweetsniff,” GitHub, 2015. [Online]. Available: https://github.com/xme/tweetsniff.
[56] HumanGeo, “rawes - Low level elasticsearch driver for Python,” [Online]. Available: https://github.com/humangeo/rawes.
[57] PyInstaller, “PyInstaller - PyInstaller official GIT repository,” [Online]. Available: https://github.com/pyinstaller/pyinstaller.
[58] M. Mohri, A. Rostamizadeh e A. Talwalkar, Foundations of machine learning, T. Dietterich, Ed., The MIT Press, 2012.
[59] H. Debar, M. Dacier e A. Wespi, “Towards a taxonomy of intrusion-detection systems,” Computer Networks, vol. 31, nº 8, pp. 805-822, 1999.
[60] H. Jiawei e M. Kamber, “Data mining: concepts and techniques,” San
Francisco, CA, itd: Morgan Kaufmann, vol. 5, 2001.
[61] J. Kirk, “This terrifying malware destroys your PC if detected,” 5 5 2015. [Online]. Available: http://www.pcworld.com/article/2918632/rombertik- malware-destroys-computers-if-detected.html.
[62] T. Pang-Ning, M. Steinbach, V. Kumar e others, “Introduction to data mining,” em Library of Congress, 2006.
65
Anexos
Anexo A – tweetsniff.py
import argparse import errno import ConfigParser import json import logging import logging.handlers import os import re import signal import sys import time try: import twitter except:print "[ERROR]: python-twitter is required. See https://github.com/bear/python-twitter"
try:
import syslog except:
print "[INFO]: No Syslog support, logging to console" from datetime import datetime
from dateutil import parser from dateutil import tz
from elasticsearch import Elasticsearch from termcolor import colored
api = None logger = None # Default configuration config = { 'statusFile': '/var/run/tweetsniff.status', 'esServer': '', 'keywords': '', 'regex': '', 'highlightColor': 'red', 'keywordColor': 'blue', 'cefServer': '', 'cefPort': '' } def sigHandler(s, f):
"""Cleanup once CTRL-C is received"""
print "Killed." sys.exit(0)
66
"""Output a message to the console/Syslog depending on the host"""
if os.name == "posix": syslog.openlog(logoption=syslog.LOG_PID,facility=syslog.LOG_MAIL) syslog.syslog(msg) else: print msg return def writeCEFEvent(tweet):
"""Send a CEF event to a Syslog destination"""
# print "[Debug]: Writing CEF: %s" % tweet
cefmsg = ' CEF:0|blog.rootshell.be|tweetsniff|1.0|TwitterMsg|Received Twitter Message|0|cs1Label=TweetHandle cs1=%s cs2Label=TweetTime cs2=%s msg=%s' % (tweet.user.screen_name, tweet.created_at, tweet.text)
logger.info(cefmsg) return
def time2Local(s):
"""Convert a 'created_at' date (UTC) to local time"""
if not s:
utc = datetime.utcnow() else:
utc = datetime.strptime(parser.parse(s).strftime('%Y-%m-%d %H:%M:%S'), '%Y- %m-%d %H:%M:%S') from_zone = tz.tzutc() to_zone = tz.tzlocal() utc = utc.replace(tzinfo=from_zone) return(utc.astimezone(to_zone)) def indexEs(tweet):
"""Index a new Tweet in Elasticsearch"""
doc = tweet.AsDict()
# Delete 'retweeted_status' - to be fixed later if 'retweeted_status' in doc:
del doc['retweeted_status'] # Delete 'urls' - to be fixed later? if 'urls' in doc:
del doc['urls']
# To fix: support different timezones? (+00:00 try:
doc['@timestamp'] = parser.parse(doc['created_at']).strftime("%Y-%m-