scieee Open visual document viewer

redBorder Malware EndPoint

Rodríguez García, Adrián

Abstract

Los cibercriminales son una de las principales amenazas a las que se enfrentan las empresas día tras día en el ciberespacio. Incluso compañías con directrices estrictas en materia de ciberseguridad pueden quedar expuestas. Por este motivo, es necesario implantar medidas de seguridad en todos los rincones de las empresas, incluido los equipos de trabajo, herramienta tan necesaria como vulnerable a ciberataques. De esta conclusión nace redBorder Malware EndPoint, incluido dentro del módulo de Malware del portfolio de productos de redBorder. redBorder Malware EndPoint es un sistema de ciberseguridad para equipos finales, con inteligencia artificial, que detecta y evita, en tiempo real, amenazas, malware y ataques dirigidos a empresas. Trabaja en cooperación con la aplicación de redBorder Malware para reportar y bloquear malware en base a un sistema de reputación.

Full text

- 1 - 1Equa ion Chap e 1 Sec ion 1 1 P oyec o Fin de G ado G ado en Ingenie ía de las Tecnologías de Telecomunicación edBo de Malwa e EndPoin Au o : Ad ián Rod íguez Ga cía Tu o : Pablo Neb e a He e a Dep. Telemá ica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2016 14 1 P oyec o Fin de G ado G ado en Ingenie ía de las Tecnologías de Telecomunicación edBo de Malwa e EndPoin Au o : Ad ián Rod íguez Ga cía Tu o : Pablo Neb e a He e a P o eso i ula Dep. Telemá ica Escuela Técnica Supe io de Ingenie ía Uni e sidad de Se illa Se illa, 2016 2 3 P oyec o Fin de G ado: edBo de Malwa e EndPoin Au o : Ad ián Rod íguez Ga cía Tu o : Pablo Neb e a He e a El ibunal nomb ado pa a juzga el P oyec o a iba indicado, compues o po los siguien es miemb os: P esiden e: Vocales: Sec e a io: Acue dan o o ga le la cali icación de: El Sec e a io del T ibunal Fecha: 4 5 Ag adecimien os RedBo de Malwa e EndPoin ha sido mi p ime con ac o con el mundo labo al. Es oy sa is echo con es a expe iencia, que me ha ayudado a ap ende y a supe a me día a día. En p ime luga , quisie a ag adece a mi pad e el sac i icio ealizado pa a pone a mi disposición odos los medios necesa ios pa a es udia , que me han pe mi ido llega has a aquí. Ag adece ambién a odo el equipo de edBo de . En especial a Ca los Jiménez, po el a o ecibido po su pa e, po su dedicación y po su es ue zo pa a que es e p oyec o sea a día de hoy una ealidad. A Ve ónica, po hace odo el ayec o uni e si a io conmigo y hace lo mucho más ácil y lle ade o, po habe es ado en los buenos y malos momen os y po ayuda me cada ez que lo he necesi ado. Po úl imo, quie o da las g acias a mis amigos, los que du an e oda es a e apa me han enido que sopo a an o den o como ue a de la uni e sidad. Po odos ellos, ¡¡Venga a us edes!! Ad ián Rod íguez Ga cía Se illa, 2016 6 7 Resumen Los cibe c iminales son una de las p incipales amenazas a las que se en en an las emp esas día as día en el cibe espacio. Incluso compañías con di ec ices es ic as en ma e ia de cibe segu idad pueden queda expues as. Po es e mo i o, es necesa io implan a medidas de segu idad en odos los incones de las emp esas, incluido los equipos de abajo, he amien a an necesa ia como ulne able a cibe a aques. De es a conclusión nace edBo de Malwa e EndPoin , incluido den o del módulo de Malwa e del po olio de p oduc os de edBo de . edBo de Malwa e EndPoin es un sis ema de cibe segu idad pa a equipos inales, con in eligencia a i icial, que de ec a y e i a, en iempo eal, amenazas, malwa e y a aques di igidos a emp esas. T abaja en coope ación con la aplicación de edBo de Malwa e pa a epo a y bloquea malwa e en base a un sis ema de epu ación. 14 Figu a 27 - Funcionamien o de los wo ke s ........................................................................................................... 45 Figu a 28 - Es ado de las a eas ............................................................................................................................... 46 Figu a 29 - Ta ea de moni o ización de pa iciones lógicas .................................................................................. 48 Figu a 30 – Ta ea de cap u a de iche os ................................................................................................................ 49 Figu a 31 - Ta ea de cap u a de p ocesos c eados ................................................................................................. 51 Figu a 32 - Ta ea de cap u a de conexiones de ed ................................................................................................ 53 Figu a 33 - Ta ea de en ío de e en os .................................................................................................................... 53 Figu a 34 - E en o de de ección de un iche o desconocido ................................................................................. 54 Figu a 35 - E en o de de ección de un iche o conocido ...................................................................................... 55 Figu a 36 – E en o de de ección de un iche o bo ado ........................................................................................ 55 Figu a 37 - E en o de de ección de un iche o enomb ado ................................................................................. 56 Figu a 38 - E en o de de ección de un p oceso c eado ......................................................................................... 56 Figu a 39 - E en o de de ección de un p oceso des uido ..................................................................................... 57 Figu a 40 - E en o de de ección de una conexión de ed ...................................................................................... 57 Figu a 41 - E en o de de ección de un iche o desconocido en b_endpoin ...................................................... 58 Figu a 42 – E en o de de ección de un iche o conocido en b_endpoin ........................................................... 59 Figu a 43 - A qui ec u a de in eg ación de edBo de Malwa e EndPoin .......................................................... 61 Figu a 44 - Desca ga de edBo de Malwa e EndPoin desde la web .................................................................. 62 Figu a 45 - Elección de la a qui ec u a de edBo de Malwa e EndPoin ........................................................... 62 Figu a 46 - Diag ama de ins alación ....................................................................................................................... 63 Figu a 47 - Lis a de EndPoin s egis ados ............................................................................................................. 63 Figu a 48 – Desca ga de edBo de Malwa e EndPoin ía web ......................................................................... 65 Figu a 49 - Ins alado ............................................................................................................................................... 66 Figu a 50 - Se icios ins alados .............................................................................................................................. 66 Figu a 51 - Regis o web de un EndPoin .............................................................................................................. 67 Figu a 52 - Pa áme o clien _id ............................................................................................................................... 67 Figu a 53 – C eación de un iche o ......................................................................................................................... 68 Figu a 54 - Fiche o nue o en b_endpoin ............................................................................................................. 69 Figu a 55 - Fiche o nue o en b_ioc ....................................................................................................................... 69 15 Figu a 56 - Fiche o nue o en Riak .......................................................................................................................... 69 Figu a 57 - Fiche o nue o en la web ....................................................................................................................... 70 Figu a 58 - C eación del p oceso no epad .............................................................................................................. 70 Figu a 59 – E en o de c eación del p oceso no epad en Ka ka ............................................................................ 71 Figu a 60 - C eación de una conexión web ............................................................................................................ 71 Figu a 61 - E en o de c eación del p oceso de conexión web .............................................................................. 72 Figu a 62 - C eación de una ale a de IOC ............................................................................................................. 72 Figu a 63 – Ale a de IOC ....................................................................................................................................... 73 Figu a 64 - Desca ga del his ó ico de e en os ........................................................................................................ 74 Figu a 65 - Con enido del his ó ico de e en os ...................................................................................................... 74 Figu a 66 - Ac i idad de un EndPoin du an e la ins alación del so wa e .......................................................... 75 Figu a 67 - Ac i idad de Disco de un EndPoin du an e la ins alación del so wa e ........................................... 76 Figu a 68 - Ac i idad de la memo ia RAM de un EndPoin du an e la ins alación del so wa e ....................... 76 Figu a 69 – Ac i idad del á ico de ed de un EndPoin du an e la ins alación del so wa e ............................ 77 Figu a 70 - Ac i idad del sis ema du an e la ins alación del so wa e .................................................................. 77 Figu a 71 - G á ica de p ocesado de lo es de iche os ........................................................................................... 79 Figu a 72 - G á ica de uso de CPU ......................................................................................................................... 80 Figu a 73 - G á ica de uso de memo ia RAM ........................................................................................................ 81 16 17 1 INTRODUCCIÓN. “En In e ne hay lobos y co de os. Si no e es lobo, e oca se co de o.” - Chema Alonso – 1.1 Mo i ación oy en día, la segu idad cibe né ica es una de las mayo es p eocupaciones en el sec o emp esa ial, debido a los con inuos a aques con a compañías y o ganizaciones pa a el p opósi o de ob ene in o mación. Es e ipo de si uaciones ocu en cada ez con mayo ecuencia e incluso exis en o ganizaciones de cibe c iminales que se bene ician de es as ac i idades. Po es e mo i o, es necesa io ene una he amien a an i-malwa e que además de inclui el análisis del á ico de ed (NAT) y he amien as de segu idad cibe né ica especí icos (IPS, IDS, Mail Ga eway, e c.), incluya p o ección pa a EndPoin s1. Los EndPoin s son pila es undamen ales en la de ección de amenazas a anzadas, malwa e o a aques di igidos y man ene , g acias a la in eligencia a i icial, oda la in aes uc u a de ed segu a. Es e p oyec o, cub i á la necesidad de p o ección pa a EndPoin s y se in eg a á den o de edBo de Malwa e, donde con i i á con los demás sis emas que es e albe ga. 1.2 Obje i o El p opósi o gene al de es e p oyec o es el desa ollo de un sis ema de cibe segu idad pa a equipos inales que de ec e en iempo eal amenazas a anzadas, malwa e, a aques di igidos, y que epo e dicha in o mación al sis ema cen al de edBo de Malwa e pa a p ac ica un análisis, y pe mi i de es e modo oma decisiones pa a esol e cualquie incidencia. Una ez ealizado el desa ollo y la in eg ación del p oyec o den o de la pla a o ma de edBo de Malwa e, se ealiza án p uebas de concep o y de endimien o pa a demos a el óp imo uncionamien o del mismo como he amien a an i-malwa e. 1.3 Me odología An es de la ealización del p oyec o se ealiza á una in oducción a edBo de Malwa e y odos los elemen os que in e ienen den o del sis ema. Adicionalmen e se habla á de Apache Ka ka, Riak KV y de Google Rapid Response. Todo ello es a ado en la sección 2. A con inuación, se in oduci á el sis ema en la sección 3 y se explica á la a qui ec u a del EndPoin y de odos los módulos que lo componen en la sección 4. Seguidamen e se comenza á con el diseño, implemen ación y desa ollo, en ando en de alle en cada uno de los módulos que componen el EndPoin y sus uncionalidades. Todo ello, explicado en la sección 4. Una ez desa ollado, en la sección 5, se in eg a á den o de la aplicación de malwa e de edBo de . Po úl imo, en la sección 6, se ealiza án di e en es p uebas de concep o, endimien o y iabilidad pa a demos a el óp imo uncionamien o del sis ema, inalizando con la sección 7 de p esupues o. 1 Equipos inales de una ed, haciendo e e encia a pues os de abajo en ámbi o emp esa ial. H 18 19 2 CONTEXTUALIZACIÓN. 2.1 In oducción a edBo de Malwa e edBo de es un sis ema de segu idad y moni o ización de edes en iempo eal y al amen e escalable que pe mi e dispone de una g an isibilidad de odo lo que ocu e en las edes moni o izadas, p ocu ando un g an con ol de la in aes uc u a y de los se icios o ecidos en és a. Es e sis ema o ece a ios módulos de se icios que pueden se con a ados po los clien es. En e ellos se encuen a edBo de Malwa e, que es un sis ema de cibe segu idad pa a de ec a malwa e y e i a la p opagación del mismo y cualquie daño que pueda causa en la ed. Figu a 1 A qui ec u a de edBo de Malwa e Tal y como se mues a en la an e io imagen, el escena io es á o mado po una ed conmu ada con 5 elemen os p incipales: 20  Manage (clús e ): elemen o cen al en el cual se ecibe, se a a y se isualiza oda la in o mación emi ida po los di e en es elemen os. En su in e io se incluye el se ido ICAP, que ecibe las consul as/pe iciones del p oxy web.  IPS: elemen o po el cual pasa el á ico de ed que se a a analiza y, que uncionando como un IDS/IPS, es capaz de de ec a pa ones de á ico co espondien es a posibles a aques y/o Malwa e. Una ez egis ado con un manage , le en ía los esul ados, así como los iche os de ec ados median e los p o ocolos HTTP, FTP, SMTP y SMB.  Mail Ga eway: elemen o po el cual pasa el á ico de co eo (SMTP). Funciona como un sencillo MTA2, ya que cada ez que ecibe un email lo een ía, po una pa e, al se ido de co eo co espondien e y, po la o a, una copia de los emails con adjun os al manage , jun o con da os adicionales del email (ej. Di ección emi en e/des ina a io...).  Mail Se e : se ido de co eo elec ónico u ilizado únicamen e pa a la ecepción del co eo in e cep ado po el Mail Ga eway y au o izado pa a su een ío.  EndPoin s: elemen os inales de la ed, donde se ins ala á es e p oyec o con el in de de ec a en iempo eal amenazas, malwa e y a aques a a és del análisis de in o mación del sis ema, epo ando la misma al manage . Cabe menciona que en uno de los puen es de ed se ha con igu ado un SPAN3 a ni el local pa a habili a la in e az de ed del puen e que lo une con el puen e más ex e no pa a copia odo el á ico hacia/desde In e ne en o a in e az. En esa in e az de des ino es donde se conec a la in e az del IDS/IPS. Des aca que edBo de implemen a más se icios de los mencionados aquí, pe o se ha op ado po in oduci sólo edBo de Malwa e pa a comp ende mejo el ecosis ema y uncionamien o de es e p oyec o. 2.2 Tecnologías u ilizadas 2.2.1 Apache Ka ka Se icio dis ibuido, pa icionado y con posibilidad de eplicación que o ece la uncionalidad de un sis ema de colas de mensajes con el pa adigma publicado /subsc i o . Los e en os gene ados po los dis in os elemen os de edBo de Malwa e pasan po es e se icio en el Manage , a in de desacopla la ob ención de da os de su p ocesamien o. El EndPoin usa Apache Ka ka pa a en ia in o mación ela i a a e en os del sis ema al Manage y así in o ma en iempo eal de lo sucedido en los equipos inales de la ed. 2.2.2 Google Rapid Response (GRR) GRR es un amewo k pa a da una espues a ápida emo a a inciden e o enses. La es uc u a es clien e/se ido , donde el se ido se encuen a en el Manage y el clien e en los EndPoin s. De es a o ma, den o de edBo de Malwa e se usa pa a pa a / einicia edBo de Malwa e EndPoin , bloquea los equipos en cuan o se de ec e algún ipo de iesgo pa a ed y ob ene in o mación de un sis ema inal pa a su análisis o ense. 2 Mail T ans e Agen (Agen e de T ans e encia de co eo) se enca ga de ecibi y een ia co eos. 3 Modo de con igu ación de una in e az de ed en un puen e de ed que pe mi e en ia copias de paque es a o a in e az de ed que es a siendo moni o izada. 21 2.2.3 Riak Se icio de almacenamien o de obje os iable y de al a disponibilidad. Es u ilizado sob e odo pa a el almacenamien o p o undo en D uid. Todos los iche os que se en ían desde los EndPoin s pa a se analizados en busca de malwa e, usan el se icio de Riak pa a almacena en D uid. 2.2.4 D uid Es un sis ema de almacenamien o y análisis de in o mación que pe mi e la consul a y explo ación de g andes can idades de da os en iempo eal. 2.2.5 Windows Manage Ins umen a ion (WMI) Windows Managemen Ins umen a ion (WMI) es la in aes uc u a de da os y ope aciones de ges ión en sis emas ope a i os basados en Windows. Pe mi e au oma iza a eas adminis a i as y suminis a da os de ges ión a o as pa es del sis ema ope a i o y p oduc os. En es e p oyec o se ha usado pa a ges iona en iempo eal los cambios p oducidos en el sis ema de iche o de Windows y pa a pode ges iona los cambios en los p ocesos. 2.2.6 Py hon Lenguaje de p og amación in e p e ado usado pa a la ealización de es e p oyec o. La elección de es e lenguaje es debido a la eno me po encia que con ienen sus lib e ías pa a el sis ema ope a i o Windows. 22 23 3 DESCRIPCIÓN DEL SISTEMA. 3.1 In oducción a edBo de Malwa e EndPoin . edBo de Malwa e EndPoin es un sis ema de cibe segu idad, pa a equipos inales de una ed, con in eligencia a i icial que de ec a en iempo eal amenazas, malwa e o a aques. Una ez de ec ada cualquie anomalía o amenaza se epo a a la unidad cen al de la pla a o ma edBo de Malwa e (manage ), con capacidad de análisis, pa a es udia y pos e io men e de e mina la acción a eje ce sob e un EndPoin . Figu a 2 De ección de anomalías Es e sis ema, consigue un al o ni el de segu idad en EndPoin s debido a que moni o iza de o ma cons an e los p ocesos que se c ean o des uyen, la ed y cualquie cambio en el sis ema de iche os. La in o mación ob enida se en ía al manage pa a un análisis median e IOC4 a la ez que se almacena de o ma local, c eando así un his ó ico de e en os pa a un posible análisis o ense. Adicionalmen e, cualquie cambio en el sis ema de iche os es de ec ado y el iche o implicado subido a Riak pa a analiza lo median e ca gado es5 en busca de 4 Indicado es de comp omisos (Indica o s O Comp omises) son un conjun o de eglas que pe mi en de ec a incidencias o anomalías. 5 Conjun o de mo o es de análisis malwa e que emi en una alo ación sob e una posible in ección malwa e en un iche o. 30 Como se puede obse a en la an e io imagen, exis en los logs de salida pa a el his ó ico de e en os (binnacle) y pa a los logs de aplicación (applica ion). Adicionalmen e, se obse a como cada logs lle a asignado su manejado (handle ), en los cuales se indica el ipo de logs (INFO, DEBUG o ERROR), el ipo de o ma o y la clase (class). Des aca , que la clase elegida ha sido la o a i a o cíclica, es deci , que comple ado cie o amaño de iche o de logs (50 Mb en es e caso), se c ee o o iche o de logs pa a con inua has a un máximo de iche os (5 en caso de los logs de aplicación y 10 en caso del his ó ico de e en os). Una ez comple ado el máximo de iche os pe mi idos, se empeza á a sob eesc ibi el p ime o. Figu a 11 Fiche os cíclicos o o a i os o Pa ame e s: Fiche o de con igu ación en o ma o YAML que con iene odos los pa áme os necesa ios pa a pode con igu a de o ma co ec a el agen e EndPoin y que de es a o ma pueda comunica se con el manage de edBo de Manage median e el sis ema de epu ación (sección 4.2.1), Riak o Apache Ka ka. Figu a 12 Fiche o pa ame e s  Ka ka_se e : Pa áme o que indica un alias del se ido donde en ia los e en os jun o al pue o des ino. En es e caso, la IP co espondien e al alias se encuen a en el iche o “hos s”, que co esponde con un balanceado que se enca ga de edi igi los e en os según unos c i e ios al manage adecuado den o del clús e .  S3_bucke : Indica el bucke , den o de Riak ins alado en el clús e de manage de edBo de Malwa e, donde se subi án los iche os.  S3_key: Pa áme o que indica la u a den o del bucke de Riak donde subi los iche os.  Access_key y sec e _key: En su conjun o, son dos pa áme os que o man el equi alen e a “usua io”, “con aseña” pa a pode accede a Riak. 31  Repu a ion_se e : Alias del se ido donde se encuen a el se icio de epu ación (sección 4.2.1) del cual se ealimen a la caché local. La IP que se co esponde a es e alias se encuen a en el iche o “hos s”, al igual que las IP de Ka ka o Riak.  File_size: Pa áme o que indica el amaño máximo en by es que un iche o puede ene pa a subi se a Riak. A pa i de ese alo (128 Mb) el iche o no se subi á a la pla a o ma de malwa e, debido a que Vi usTo al no analiza a chi os supe io es a ese amaño, po an o, no se analiza ían de o ma co ec a.  Ve sión_cache: Ve sión del sis ema de epu ación (sección 4.2.1), necesa io pa a cons ui la URL de pe ición.  Domain_id: Iden i icado de ipo numé ico, que iden i ica de o ma uní oca el dominio de ed en el cual es á un EndPoin .  Sco e: Pa áme o que indica una pun uación a pa i de la cual los iche os se án conside ados como malwa e (se explica más de alladamen e en la sección 4.2.1 den o del sis ema de epu ación).  Clien _id: Iden i icado úni oco de un EndPoin asignado median e GRR.  Logs: Di ec o io en el cual se almacenan los logs de aplicación del agen e EndPoin . Como se ha explicado an e io men e, se c ea án un máximo de iche os (cinco en es e caso) de un amaño de e minado (50Mb pa icula men e), a pa i de los cuales empeza á a sob eesc ibi se el p ime o. Un ejemplo de logs de aplicación es la siguien e imagen: Figu a 13 Ejemplo de logs de aplicación  E en s: Di ec o io que almacena el his ó ico de e en os que el agen e EndPoin p oduce a lo la go del iempo. Al igual que los logs de aplicación, es os iche os son cíclicos, c eándose un núme o de e minado de iche os (diez en es e caso) con un amaño de e minado (50Mb en pa icula ). En la sección 4.3 se de allan y explican odos los e en os p oducidos en el agen e EndPoin . 32  EndPoin _agen : Son un conjun o de di ec o ios que o man el agen e de ca ga y con ienen odo el código de la aplicación. Cabe des aca dos de los di ec o ios: o db: Di ec o io donde se almacena la caché local del agen e EndPoin . La caché local es una base de da os SQLi e con dos campos (hash y sco e) que se ealimen a con el sis ema de epu ación de edBo de Malwa e. Todos los iche os de ec ados y cap u ados po el agen e EndPoin son compa ados con a la caché pa a dilucida sin son conocidos o no y en caso de se conocidos si es malwa e o es á limpio. (La caché se á a ada más en p o undidad en la sección 4.2.1 de es e p oyec o). o Riak: Di ec o io donde se almacena una copia de odos los iche os que son subidos a Riak. Es os iche os son empo ales, de o ma que una ez subidos al manage , se des uyen. o Fil e : Di ec o io donde se almacenan dos iche os de con igu ación in e nos. Type ile, es un iche o que desc ibe las cadenas ca ac e ís icas de cie os ipos de iche os en una se ie de by es, pe mi iendo así conoce el ipo de un iche o. El o o, Type il e , es un iche o YAML que se con igu a en el manage y pe mi e elegi que ipos de iche os no se subi án a Riak pa a su análisis. Es o es debido po que quizás iche os de ipo MP3, ODT, DOCX, e c, no son de in e és pa a un de e minado clien e. 4.1.2 Se icio de epu ación de edBo de Malwa e El se icio de epu ación es el enca gado de p opo ciona una API REST pa a pode hace consul as de una URL, IP o hash y ob ene una pun uación y ambién pone a disposición lis as de epu ación pa a los elemen os de edBo de Malwa e que lo solici en. Es e se icio o ece dos uncionalidades:  Lis as: Pueden se de dos ipos, po un lado, exis e la o al, que o ece el con enido ín eg o de la caché emo a, y po o o, la inc emen al, que pe mi e ob ene los úl imos egis os añadidos a la dicha caché.  Consul a especí ica: Pe mi e ealiza una consul a po hash, URL o IP especí ica. Los ipos de consul as que se pueden ealiza se al se icio de epu ación son las siguien es: Me hod Pa h Func ion GET / epu a ion/ X/malwa e/ o al Pe mi e ob ene el con enido ín eg o de la caché emo a. GET / epu a ion/ X/malwa e/ o al/: il e Ob iene una lis a o al il ada po hash, IP o URL. GET / epu a ion/ X/malwa e/inc emen al De uel e el iden i icado de la úl ima lis a inc emen al libe ada. GET / epu a ion/ X/malwa e/inc emen al/:id Pe mi e ob ene la lis a inc emen al especi icada a a és del ID. GET / epu a ion/ X/malwa e/inc emen al/:id/: il e Pe mi e ob ene la lis a inc emen al especi icada a a és del ID il ada po hash, IP o URL. POST / epu a ion/ X/malwa e/que y Pe mi e ealiza una consul a de un hash, IP o URL conc e os. POST / epu a ion/ X/malwa e/s a us Pe mi e sabe en qué es ado se encuen a un hash. 33 Tabla 1 Consul as al se icio de epu ación Des aca que cuando se inicia una lis a inc emen al, és a comienza en la e isión 0.0 y cuando se libe a el p ime inc emen o pasa á a se la 1.0. Po an o, po cada inc emen o que exis a, aumen a á en una unidad de la e sión del sis ema de epu ación. Menciona que pa a usa de o ma co ec a el se icio de epu ación con lis as inc emen ales ha de hace se en dos pasos e lejados a con inuación:  Consul a la lis a o al, ob eniendo así odo el con enido de la caché emo a.  Consul a de o ma pe iódica el inc emen al, pa a pos e io men e ob ene el con enido del inc emen o. 4.2 A qui ec u a del agen e EndPoin El agen e EndPoin cons a de una es uc u a modula izada en es pa es que pe mi e cumpli las necesidades y uncionalidades pa a las cuales ha sido diseñado. Figu a 14 A qui ec u a del agen e EndPoin La a qui ec u a cons a de es módulos:  Módulo p incipal (EndPoin Agen ), que ha su ez cons a de un submódulo in e no pa a su con igu ación.  Módulo de ges o es (Manage s), que son un conjun o de submódulos independien es pa a maneja y u iliza los se icios del en o no de edBo de .  Módulo con olado (Moni o Con olle ), enca gado de maneja y ges iona los wo ke s y a eas del agen e EndPoin . 34 4.2.1 Módulo p incipal (EndPoin Agen ) Es e módulo es el núcleo del agen e EndPoin , debido a que se enca ga de desplega y comp oba el en o no median e el submódulo de con igu ación. De igual o ma, ca ga las lib e ías pa a su pos e io uso, inicia y con igu a el módulo ges o e inicia el módulo con olado jun o a las a eas, las cuales pos e io men e son delegadas a és e. La secuencia de a anque y con igu ación es la mos ada en la siguien e imagen: Figu a 15 Secuencia de inicio 4.2.1.1 Submódulo de con igu ación (con igu a ion) Es e submódulo del módulo p incipal se enca ga de seis a eas muy de inidas y dis inguidas pa a que el agen e EndPoin uncione de o ma co ec a:  Ca ga las lib e ías (explicadas en la sección 4.1.1) y las deja lis as pa a se u ilizadas.  Ca ga el a chi o de con igu ación de logs de aplicación e his ó ico de e en os (explicados en la sección 4.1.1).  Ca ga el iche o con los pa áme os necesa ios pa a hace uso de los se icios de epu ación, Ka ka y Riak.  Inicia los logs de aplicación con la con igu ación ob enida an e io men e.  Inicia el his ó ico de e en os de la misma o ma que los logs de aplicación.  Con igu a los submódulos de iak, ka ka, caché y il ado de pa áme os del módulo ges o . 35 Figu a 16 Ta eas del submódulo de con igu ación Es a son las seis acciones que ealiza el submódulo de con igu ación del módulo p incipal del agen e EndPoin . Una ez ealizadas, se inicia el módulo con olado , se inician las a eas y se asignan las a eas al con olado pa a que se enca gue de su ealización y ges ión. 4.2.2 Módulo de ges o es (Manage s) Es un módulo compues o po submódulos o almen e independien es en e ellos, que implemen an una pequeña lógica, las cuales pe mi en ob ene una se ie de uncionalidades a las di e en es a eas del agen e EndPoin de una o ma anspa en e. Los submódulos que componen es e módulo son los siguien es: Figu a 17 Ges o es 36 4.2.2.1 Ges o de la caché (Cache) El ges o de la caché se enca ga de odas las ges iones elacionadas con la caché local y con el se icio de epu ación, siendo el único elemen o del agen e EndPoin que en a en con ac o con dichos se icios. Es e ges o se puede subdi idi en dos bloques que o ecen di e en es uncionalidades:  Sis ema de epu ación: Uno de los bloques es el que ealiza las consul as a la caché emo a del sis ema de epu ación de edBo de Malwa e. Pa a ello, c ea un wo ke (sección 4.2.3.1) Dicho bloque dispone de una única uncionalidad, la cual se inicia desde el submódulo de con igu ación del agen e EndPoin y es a á ac i a has a que el edBo de Malwa e EndPoin se apague. Es a uncionalidad, ealiza las siguien es acciones: o Ca ga los pa áme os de con igu ación ( e sión de la caché emo a y el alias del sis ema de epu ación), cons uye la URL y en ía una pe ición pa a ob ene odo el con enido de la caché emo a (sección 4.1.2), gua dando dicho con enido en la caché local. o A con inuación, en a en bucle, y cada cie o pe iodo de iempo, lanza una pe ición pa a ob ene la inc emen al de la caché emo a y pos e io men e su con enido. Con dicho con enido ac ualiza la caché local. Figu a 18 Consul a caché emo a Todas las espues as de la caché emo a elacionadas con el con enido son de ipo JSON, de los cuales, el ges o selecciona el hash y su sco e y los gua da en la caché local.  Caché Local: El o o bloque del que se compone es e ges o , se enca ga de p opo ciona una se ie de uncionalidades al agen e EndPoin pa a que haga consul as a a és del ges o a la caché local cuando lo equie a. Esas uncionalidades se explican a con inuación: o Comp oba si un hash exis e en la caché local. o Ob ene el sco e de un hash dado y exis en e en la caché local. 37 4.2.2.2 Ges o de Ka ka (Ka ka) El ges o de Ka ka se enca ga de ges iona las conexiones y en ios de e en os hacia el manage de edBo de Malwa e, los cuales ienen un b oke 6. Pa a log a dicho in, c ea un p oduc o y pone a disposición del agen e EndPoin las uncionalidades de conexión y en ío de mensajes. Figu a 19 P oduc o y consumido de Ka ka Se obse a que un p oduc o , como es el caso que aquí se desc ibe, puede en ia e en os a dis in os opics7, en es e caso los opics son dos:  b_ioc  b_endpoin Adicionalmen e, cada opic es á compues o de di e en es pa iciones donde en ia es os e en os. En es e caso, la pa ición a la cual se en ían los e en os iene dada po el iden i icado uní oco dado a cada EndPoin po GRR. Con es a in o mación, el ges o pone a disposición del agen e EndPoin las uncionalidades de conexión y en ío de mensajes:  Conexión con el clús e de b oke : Cuando el submódulo de con igu ación inicia es e ges o , le pasa el alias de los b oke s a los cuales el clien e de Ka ka debe conec a se y se ealizan las siguien es acciones: o Se c ea un clien e y se conec a al clús e . o Se c ea un p oduc o y se deja p epa ado pa a su uso.  En ío de e en os a los b oke s: Funcionalidad que es á disponible pa a el agen e EndPoin cuando es e solici e su uso. Pa a ello, el agen e EndPoin decide el opic y e en o, y usa ges o pa a el en ío del mensaje al manage . De o ma adicional y anspa en e, es a uncionalidad cuen a con un sis ema de ges ión de e o es, de o ma que, si el e o no es g a e, ein en a en ía el mensaje una can idad de e minada de eces, en cambio, si el e o esul a se g a e, se einicia la conexión con el clús e de 6 P oceso que se enca ga de publica la in o mación ecibida de los p oduc o es y que es á di idida en opics. 7 Es uc u a de un conjun o de e minado de da os, cada opic end á unos da os y es uc u a dis in os. 38 b oke s. Figu a 20 Secuencia del uncionamien o del ges o de Ka ka En la imagen an e io se mues an las uncionalidades que el ges o de Ka ka o ece al agen e EndPoin y se de alla el caso en el cual se p oduce un e o g a e o de conexión al en ia un mensaje. 4.2.2.3 Ges o de Riak (Riak) El ges o de Riak se enca ga de p opo ciona al agen e EndPoin el mecanismo pa a en ia un iche o a Riak, den o del manage de edBo de Malwa e. Pa a p opo ciona es e mecanismo es necesa io con igu a el ges o . El submódulo de con igu ación se enca ga de inicia el ges o y con igu a lo en iándole los siguien es pa áme os:  Bucke 8al que subi las mues as.  Ru a den o del bucke donde subi los iche os.  Las cla es sec e as y de acceso con igu adas po el manage pa a Riak. Una ez con igu ado, el ges o se queda a la espe a de ecibi pe iciones pa a subi mues as. Una ez ecibida la pe ición po pa e del agen e EndPoin , el ges o ealiza las siguien es acciones pa a subi la mues a:  Hace una copia del iche o ecibido a la ca pe a empo al de iak. Es a acción se ealiza po que la subida del iche o puede a da unos segundos, po an o, el iche o es a á siendo usado po el p oceso de edBo de Malwa e EndPoin , dejándolo indisponible pa a o os p ocesos. De es a o ma, el iche o que se sube a Riak es una copia del o iginal, cuyo con enido, que es lo que ealmen e impo a, es in a iable epec o al o iginal.  Sube a Riak el iche o.  Bo a el iche o de la ca pe a empo al. 8 Sis ema de almacenamien o de obje os, del cual se pueden añadi o ex ae da os. 39 Una ez ealizadas las acciones an e io es, el iche o se encon a á en Riak den o del manage de edBo de Malwa e pa a se analizado en busca de malwa e. T as el análisis, se gene a á un sco e que, jun o al hash del iche o, se in oduci á median e una inc emen al en el sis ema de epu ación y que el ges o de la caché ob end á en la siguien e consul a a la caché emo a. Figu a 21 Funcionamien o del ges o de Riak 4.2.2.4 Ges o de il ado (Fil e ) El ges o de il ado se enca ga, median e una pequeña lógica, de p opo ciona uncionalidades al agen e EndPoin de il ado de iche os. Es deci , se enca ga de comp oba ca ac e ís icas de un iche o, de o ma que el agen e EndPoin decida si subi a Riak o no un iche o. Las uncionalidades de il ado p opo cionadas son las siguien es:  Fil ado po u a: P e iamen e a es e p oyec o, se ha hecho un es udio ace ca de los di e en es iche os de logs in e nos del sis ema ope a i o Windows. Debido a que los mencionados a chi os cambian de o ma cons an e, p o oca ían cons an es p ocesamien os innecesa ios que ocupa ían ecu sos en el p oceso del agen e EndPoin . Po es e mo i o, exis e es e il ado, pa a cuando se de ec en es os iche os, igno a los.  Fil ado po amaño: Tal como se explico en la sección 4.1.1, en el iche o “pa ame e s.yaml” exis e un pa áme o llamado “ ile_size”, que indica el amaño máximo que puede ene un a chi o pa a subi lo a Riak. Es e il ado se enca ga, dado un iche o, de ex ae su amaño y compa a lo con el máximo pa a indica si es mayo , meno o igual y que de es a o ma el agen e EndPoin lo suba o no a Riak.  Fil ado po ipo: Como se explico en la sección 4.1.1, den o del di ec o io “Fil e ” exis e un iche o llamado “Type il e ” que con iene una lis a de ipos de iche os que deben se igno ados, po an o, no deben subi se a Riak. Figu a 22 Fiche o ype il e 46 Figu a 27 Funcionamien o de los wo ke s Como se puede obse a en la imagen, el p oceso A ejecu a la acción 1, que a su ez lanza una se ie de wo ke s, los cuales no son mas que p ocesos hijos que p epa an y ejecu an a eas. Una ez c eados los wo ke s y asignadas las a eas, el p oceso A con inua con las acciones 2 y 3 mien as los p ocesos B, C y D es án ac i os. Una ez inalizados, los wo ke s lanzan un mé odo in e no call back pa a anuncia al p oceso pad e que han inalizado. Adicionalmen e, como se ha explicado an e io men e, las acilidades de ges ión de los wo ke s, los hacen ideales pa a ealiza cualquie ipo de a ea. 4.2.3.2 Ta eas (Tasks) Las a eas es án di ec amen e elacionadas con las p incipales uncionalidades que o ece es e p oyec o. Po an o, cada una de ellas equie e de una o a ias a eas pa a pode lle a se a cabo. En la siguien e abla se ap ecian las uncionalidades del p oyec o jun o a una elación con las a eas necesa ias asociadas. 47 Funcionalidades Wo ke s Ta eas elacionadas De ección en iempo eal de modi icaciones en el sis ema de iche os 4  Moni o ización de las pa iciones ísicas  Cap u a de iche os  Cap u a len a de iche os  Cap u a de iche os no exis en es Cap u a de p ocesos en iempo eal 2  Cap u a de p ocesos c eados  Cap u a de p ocesos des uidos De ección de las conexiones de ed en iempo eal 1  De ección de las conexiones de ed Gene ación de un his ó ico de e en os 0 Todas las an e io es a eas se enca gan, cada ez que gene an un e en o, de añadi lo al his ó ico de e en os Tabla 2 Relación Funcionalidades – Ta eas Como se obse a en la abla an e io , cada a ea es a ges ionada po un wo ke , el cual es á enca gado de p ep a a la, ejecu a la y, a a és de los es ados, ges iona la. Po an o, los es ados de las a eas son imp escindibles pa a la ges ión de las mismas, y son los siguien es: Figu a 28 Es ado de las a eas Se obse a, que cuando a un wo ke se le asigna una a ea, es á pa ada, y que es el wo ke el enca gado de p epa a la. Pa a ello, la inicia/con igu a y la deja lis a pa a su ejecución, no i icándole es e hecho al agen e EndPoin . Pos e io men e, se ejecu a, pudiendo ocu i que alle, o bien que la ejecución sea co ec a y inalice, o que mien as se ejecu a, el agen e EndPoin o dene al módulo con olado inaliza la a ea. En odos es os casos, la a ea se pa a y uel e al es ado inicial. Des aca que, en es e p oyec o, debido a su ca ác e y a las uncionalidades que cub e, las a eas no inalizan 48 has a que el agen e EndPoin se pa a, dando la o den de inalización de odas las a eas de o ma p e ia. 4.2.3.2.1 Ta ea de moni o ización de las pa iciones ísicas del disco del equipo Es a a ea se enca ga de de ec a los cambios en el sis ema de iche os, po an o, undamen al pa a la lucha con a el malwa e. Pa a ello, ealiza una se ie de acciones. En p ime luga , moni o iza odas las pa iciones lógicas y ísicas exis en es en el disco del equipo. En el caso de Windows, son “C: ”, “D: ”, “E: ”, e c. De es a o ma, moni o iza odo el sis ema de iche os y además odas las unidades de almacenamien o ex aíbles que se inse en en el equipo. La moni o ización inaliza á cuando la unidad desapa ezca, es deci , en caso de un USB, cuando sea ex aido del sis ema. Es a acción, es undamen al den o del p oyec o, ya que moni o iza uno de los pun os calien es de en ada de malwa e en un en o no emp esa ial. En segundo luga , po cada pa ición ísica de ec ada, se moni o iza, a a és de WMI, su sis ema de iche os has a que la pa ición desapa ezca del disco. La moni o ización implica que a pa i de ese ins an e se empiecen a de ec a y cap u a di e en es e en os en el sis ema de iche o. Los e en os son:  Fiche o c eado  Fiche o bo ado  Fiche o modi icado Des aca que pa a conside a que un iche o ha sido modi icado, debe cumpli se algunos de los siguien es equisi os:  Cambio en el con enido  Cambio de pe misos  Cambio del nomb e  Cambio en los me ada os  Cambio del amaño Es os equisi os no apa ecen e lejados cuando se cap u a un e en o a excepción del cambio de nomb e, po an o, sólo se sabe que el iche o ha sido modi icado o enomb ado. Es deci , se sabe que un iche o ha sido modi icado, pe o no se sabe si es po que han cambiado los pe misos, el con enido, los me ada os o el amaño. Po úl imo, una ez de ec ado y cap u ado un e en o, es a a ea ex aen los da os y se in oducen en la co espondien e cola. Los da os ex aidos son:  Ru a del iche o: u a comple a del iche o a ec ado.  Tipo de e en o: se e ie e a si el e en o es de un iche o c eado, bo ado o modi icado. En caso de se el e en o de ipo modi icado y el iche o es enomb ado, se pueden ex ae de o ma adicional el nomb e an e io y el ac ual. Al ene un nue o nomb e, el sis ema ambién gene a un e en o de ipo iche o c eado. En unción del ipo del e en o, se usa la una cola u o a. En caso de que un iche o sea de ipo c eado o modi icado, el e n o se añade a la cola “cola de iche os”, pe o en caso de se de ipo bo ado o enomb ado, el e en o se in oduce en la “cola de iche os inexis en es”. De es a o ma, las co espondien es a eas que leen de cada cola a an de una o ma dis in a cada e en o. Menciona , que la a ea, an es de encola el e en o, comp ueba a a és del ges o de il ado si la u a del iche o debe se igno ada o no. En caso que haya que il a , la mues a no se añade a ninguna cola, po an o, se igno a. 49 Figu a 29 Ta ea de moni o ización de pa iciones lógicas En la imagen se obse a, como de cada pa ición lógica, se moni o iza el sis ema de iche os, de ec ando así cada cambio p oducido en el mismo. Po cada cambio p oducido, la a ea ex ae los da os del e en o y en unción del ipo del e en o y de si de la u a es a il ada o no, a a és del ges o de cola, lo añade a una cola u o a. 4.2.3.2.2 Ta ea de cap u a de iche os Ta ea enca gada de lee de o ma con inua de la cola de iche os, comp oba si un iche o es á il ado po ipo o amaño, ex ae odos los da os necesa ios de un iche o, subi los a chi os no il ados a Riak a a és del ges o , en ia a Ka ka a a és del ges o el e en o, y añadi el e en o al his ó ico de e en os. Pa a empeza , la a ea ob iene de la cola de iche os un e en o, ex ae la u a y ipo del e en o y, a a és del ges o de pa áme os de iche os, ob iene el ipo del iche o y su amaño. A con inuación, comp ueba si es á il ado po ipo o po amaño usando el ges o de il ado. En caso de es a il ado el iche o, se uel e a in oduci el e en o ex aido de la cola de iche os en la cola len a de iche os, incluyendo el ipo del iche o. De es a o ma, se p io izan los iche os que deban a a se y subi se a Riak pa a que no su an e a do y se puedan analiza los an es posible. A con inuación, a los iche os no il ados se le ex aen, a a és del ges o de pa áme os de iche os, los siguien es pa áme os pa a cons ui un nue o e en o que en ia al manage a a és de Ka ka:  Hash SHA256  Hash MD5  Pe misos  Ex ensión  Nomb e A es os pa áme os, hay que añadi el amaño y ipo del iche o, que con an e io idad se ob u ie on. 50 Una ez se ienen los pa áme os, se comp ueba usando el ges o de la caché, si el hash SHA256 es conocido o desconocido en la caché local. En caso de se conocido, no hay que subi el iche o a Riak, po an o, se ob iene el sco e asociado al hash, y se añade al nue o e en o cons uido an e io men e. Si el iche o esul a se desconocido en la caché local, se añade una nue a en ada en la misma, in oduciendo el SHA256 co espondien e al iche o y el sco e a menos uno (-1) que indica desconocido. A con inuación, usando el ges o de Riak, se en ía al manage el iche o pa a su análisis, y se comple a el e en o cons uido con an e io idad con el sco e. Des aca que la nue a en ada añadida a la caché local, se ac ualiza á en el siguien e inc emen o que el ges o de la caché desca gue del sis ema de epu ación, debido a que el manage analiza á el iche o y le asigna á un sco e, ac ualizando así la caché emo a. Po úl imo, haciendo uso del ges o de pa áme os de Windows, se ob ienen los pa áme os, se comple a el e en o, y se encola pa a su en ío al manage median e Ka ka. Figu a 30 Ta ea de cap u a de iche os 51 4.2.3.2.3 Ta ea de cap u a len a de iche os Es a a ea se enca ga de lee de la cola len a de iche os los e en os pa a ex ae odos los pa áme os de los mismos, c ea un nue o e en o con dichos pa áme os e in oduci lo en la cola de Ka ka. De mane a adicional, añade al his ó ico de e en os una en ada pa a en iquece lo de ca a a un posible análisis o ense pos e io . Se a a de una a ea pa ecida a la an e io , pe o mucho más simple, ya que los e en os que ex e de la cola son de iche os il ados, que no deben subi se a Riak. El obje i o de es a a ea, a pa e de in o ma al manage y en iquece el his ó ico de e en os, es educi el consumo de ecu sos al máximo al ex ae los da os de es os iche os que han sido il ados, ya que los ecu sos deben des ina se a los iche os que deben se analizados. Des aca que los e en os que se ex aen de la cola, pueden e e i se a e en os elacionados con iche os de ipo ISO, AVI, MOV, e c. Po an o, iche os de un g an amaño, los cuales pueden hace que el ges o de pa áme os de iche os a de un iempo amplio en ob ene cie os pa áme os, como el SHA256 o MD5, ya que se debe ca ga an es odo el con enido del co espondien e iche o. Po es e mo i o, es a a ea no es p io i a ia, ni impo a el iempo que a de en ealiza se, lo único que impo a es que e mine, se in o me al manage del e en o sucedido, y como ya se ha explicado, que ocupe los mínimos ecu sos posibles. La a ea se enca ga de lee la cola len a de iche os has a que el agen e de EndPoin en ía la o den al wo ke que la con ola de inaliza la misma. De cada elemen o que se lee de la cola, se ex ae la u a del iche o, el ipo del e en o y el ipo del iche o. Una ez ob enidos, se ecu e al ges o de los pa áme os de iche os pa a ob ene los siguien es pa áme os:  Hash SHA256  Hash MD5  Pe misos  Tamaño Una ez ob enidos, se c ea un nue o e en o pa a en ia lo al manage usando Ka ka. Adicionalmen e, se añaden los siguien es pa áme os al e en o:  Ex ensión del iche o  Nomb e del iche o  Ru a del iche o  Tipo del e en o ex aido de la cola Po úl imo, se ecu e al ges o de los pa áme os de Windows pa a consegui los pa áme os e e en es al sis ema ope a i o y usua io que lo usa. T as el úl imo paso, se en ía al manage el e en o haciendo uso del ges o de Ka ka y se añade al his ó ico de e en os. 4.2.3.2.4 Ta ea de cap u a de iche os inexis en es Es a a ea se enca ga de lee de o ma con inua de la “cola de iche os inexis en es” y ex ae los elemen os pa a cons ui un nue o e en o que en ia al manage median e el uso del ges o de Ka ka. Se debe ene en cuen a, que en es a cola sólo se in oducen e en os elacionados con a chi os que ya no exis en en el sis ema de iche os, es deci , iche os bo ados o iche os enomb ados. Po an o, no se puede abaja con esos iche os, solo se puede anuncia lo ocu ido al manage y añadi lo al his ó ico de e en os. Se gene an dos ipos de e en os en unción del ipo de e en o ex aido de la cola:  Fiche os bo ados: Se gene a un nue o e en o en el que se in o ma que un iche o ha sido bo ado.  Fiche os enomb ados: Se c ea un nue o e en o in o mando que un iche o llamado de una o ma, ha pasado a llama se de o a. 52 4.2.3.2.5 Ta ea de cap u a de p ocesos c eados Ta ea c eada a pa i de la necesidad de de ec a en iempo eal la ejecución de un p og ama posiblemen e in ec ado con malwa e, y a a és del manage de edBo de Malwa e, ac ua en consecuencia. Pa a lle a a cabo es a necesidad, es a a ea moni o iza la c eación de p ocesos. Todo ello g acias a WMI, que pe mi e cap u a los p ocesos y ob ene una se ie de pa áme os de los mismos, imp escindibles pa a el pos e io análisis median e IOC. Po cada p oceso c eado y cap u ado, es a a ea, ex ae la siguien e in o mación con el in de cons ui un e en o que en ia al manage :  Nomb e: Nomb e del p oceso  PID: Iden i icado numé ico del p oceso que lo iden i ica de o ma uní oca.  El ejecu able: Fiche o que se ha ejecu ado p o ocando la c eación del p oceso.  La p io ida: P io idad numé ica (1-13) que un iene pa a ejecu a se den o del sis ema.  El iden i icado del pe il de usua io: Iden i icado numé ico del pe il de usua io que ha ejecu ado el p oceso.  El ejecu able pad e: Es e pa áme o hace e e encia al iche o que ha p o ocado el p oceso pad e del p oceso cap u ado, en caso de su exis encia. Una ez ob enidos odos los pa áme os, se cons uye un nue o e en o, se in oducen los pa áme os y, po un lado, se añade una nue a en ada en el his ó ico de e en os y, po o o, se encola el e en o pa a en ia se al manage . El manage de edBo de Malwa e, ecoge el e en o y lo ejecu a con a IOC pa a de ec a si el p oceso ejecu ado en aña algún pelig o pa a la segu idad del equipo y de la ed en la que se encuen a. En caso de encon a algún pelig o, median e GRR, ac úa de inmedia o y pa aliza la amenaza. Figu a 31 Ta ea de cap u a de p ocesos c eados 53 4.2.3.2.6 Ta ea de cap u a de p ocesos des uidos Al igual que la a ea de cap u a de p ocesos c eados, an necesa ia pa a de ec a en iempo eal posibles iche os in ec ados de malwa e, es necesa io ene una a ea que se enca gue de de ec a , en iempo eal, la des ucción de un p oceso. Es e necesa io con ol de los p ocesos iene dos mo i os p incipales:  El p ime mo i o, es que cuando en el manage se eciba la ale a y se compa e con a IOC, se debe ene un con ol en iempo eal, de la ejecución de un a chi o in ec ado y del equipo implicado pa a pode ac ua en consecuecia.  El segundo mo i o iene que e con el análisis o ense. Si se iene un exhaus i o con ol ace ca de la ejecución de un malwa e, se puede de e mina desde los iche os que ha podido ejecu a de o ma adicional ese a chi o, has a los daños causados en el pe iodo de iempo que ha es ado ac i o. Po es os mo i os, exis e es a a ea, que se enca ga de en ia al manage , a a és del ges o Ka ka, e en os elacionados con la des ucción de un p oceso, pa a que una ez compa ada con a IOC, ges ione las ale as de la o ma opo una, y pa a añadi una nue a en ada en el his ó ico de e en os. Pa a ello, se moni o iza en iempo eal la des ucción de p ocesos y se ob ienen da os ace ca del mismo, odo ello g acias a WMI. Los p ocesos que se des uyen gua dan sus da os en memo ia du an e un iempo de e minado an es de se eliminados po comple o. Es os da os, al no exis i el p oceso, son escasos y son los siguien es:  Nomb e  PID Con es os da os, se cons uye un nue o e en o, se in oducen en la cola de Ka ka pa a en ia lo al manage , y se añade una nue a en ada al his ó ico de e en os. Los da os ex aidos en es a a ea pueden pa ece escasos, pe o una ez llegado el e en o al manage , se co elacionan los da os con el del p oceso c eado y se ex aen los demás da os. 4.2.3.2.7 Ta ea de de ección de las conexiones de ed La de ección en iempo eal de conexiones de ed es de i al impo ancia en la lucha con a a aques o amenazas a anzadas, ya que un emp ano conocimien o de las conexiones, puede e i a un g an pe juicio an o en un equipo como en una ed. Hoy día, muchos EndPoin son omados de o ma emo a po bo ne s 10 que es ablecen el con ol a pa i de un iche o ins alado en el equipo, el cual due me has a que ecibe la o den de ac ua . También exis en o ganizaciones de cibe c iminales que se dedican a ex ae in o mación de emp esas median e a aques. Todo lo an e io , se puede e i a si se de ec an a iempo las conexiones, ya que pe mi e ac ua de o ma inmedia a y e i a cualquie daño que pueda llega a p oduci se. Po es e mo i o, el agen e EndPoin implemen a es a a ea, que moni o iza, a pa i de los p ocesos c eados (enca gados de gene a conexiones), las conexiones que se es ablecen en un EndPoin . Una ez ex aidas las conexiones, se es ablece la u a comple a de di ecciones IP y pue os has a el des ino, se c ea un nue o e en o, se encola pa a en ia se a Ka ka y se añade una nue a en ada al iche o de his ó ico de e en os. 10 Conjun o de se ido es (clús e ) que de o ma emo a con olan un equipo median e la ins alación en el mismo de un malwa e, con i iendo ese equipo en un zombie. 54 Figu a 32 Ta ea de cap u a de conexiones de ed Tal como se obse a en la imagen an e io , el manage , una ez ecibido el e en o y ejecu ado con a los IOC, si se de ec a una amenaza, ejecu a median e GRR la acción pe inen e pa a e i a cualquie daño o obo de in o mación que los EndPoin s puedan su i . 4.2.3.2.8 Ta ea de en ío de e en os En odas las a eas an e io es se necesi a en ia e en os al manage median e Ka ka. Pa a e i a en íos masi os de e en os simul aneos al manage y agiliza odo el p oceso de en ío, se ha c eado es a a ea. Es una a ea simple, ya que se enca ga de ex ae e en os, de o ma cons an e, de la cola de Ka ka median e el ges o de colas y median e el uso del ges o , en ia los al manage de edBo de Malwa e usando el opic y pa ición adecuada. Figu a 33 Ta ea de en ío de e en os 55 4.3 E en os En es e p oyec o, al como se ha mencionado en pun os an e io es, gene a de o ma con inua e en os con in o mación e e en e a la de ección de posibles iche os in ec ados, o bien, a p ocesos o conexiones de ed. Es os e en os, son siemp e en iados al manage de edBo de Malwa e a a és de Apache Ka ka haciendo uso de la a ea de en ío de e en os. Tal como se explico en la sección 4.2.2.2, Ka ka es á di idida en opics, que no son más que di e en es es uc u as de da os, en es e caso JSON. Además, ambién se explicó que en es e p oyec o se usan dos opics:  b_ioc  b_endpoin Po an o, se ienen dos es uc u as de da os dis in as, la p ime a, usada en odas las a eas, y la segunda usada sólo en las a eas elacionadas con la cap u a de iche os. 4.3.1 b_ioc Es e opics lo usa el agen e EndPoin en cualquie a ea, ya sean las de cap u a de iche os, de ección de p ocesos o de ección de conexiones web. En caso de se nue o el iche o el e en o es del siguien e ipo: Figu a 34 E en o de de ección de un iche o desconocido Se obse a como en el e en o se encuen an una se ie de pa áme os que se explican a con inuación:  cache_sco e: Sco e, que el hash SHA256 asociado al iche o, iene en la caché local.  ac ion: Tipo de e en o asociado al iche o de ec ado. En es e caso el iche o ha sido modi icado.  namespace_uuid: Iden i icado del EndPoin emiso del e en o. Es e pa áme o se usa pa a la pa e de Big Da a en el manage de edBo de Malwa e.  ilename: Nomb e del iche o cap u ado.  ype: Tipo del e en o. En es e caso, iche o cap u ado.  ile_ ype: Tipo del iche o.  acl: Pe misos del iche o en decimal.  imes amp: Ma ca de iempo del ins an e de de ección del iche o. 62 Una ez se iene el ins alado MSI, se in oduce en la web de edBo de Malwa e pa a pode se ins alado en di e en es EndPoin s. Figu a 44 Desca ga de edBo de Malwa e EndPoin desde la web Pa a desca ga lo, se hace desde la web, que una ez pulsado el bo ón mos ado en la imagen an e io , pide la a qui ec u a sob e la cual a a se ins alado. Figu a 45 Elección de la a qui ec u a de edBo de Malwa e EndPoin Una ez desca gado en un EndPoin , se ejecu a el ins alado , que ins ala á el clien e de GRR y edBo de Malwa e EndPoin . Una ez ins alado, el clien e GRR lanza un call back al se ido pa a deci le que ha sido ins alado, dando los da os del EndPoin . Esos da os, son cogidos po pa e del manage de edBo de pa a econoce como un elemen o más de la ed al EndPoin donde se ha ins alado. Una ez ealizado el paso an e io , el manage ex ae del se ido el iden i icado que el se ido GRR le ha dado al clien e y median e el p opio se ido , se le comunica a edBo de Malwa e EndPoin cual es su iden i icado , añadiéndolo al iche o “pa ame e s.yaml” que se explico en la sección 4.2. Pos e io men e, inicia el se icio “EndPoin se ice”, que es el se icio gene ado po es e p oyec o. 63 Figu a 46 Diag ama de ins alación Con el se icio a ancado, se iene el EndPoin egis ado en el manage y uncionando como se mues a en la siguien e imagen, po an o, la in eg ación con edBo de Malwa e se ha comple ado. Figu a 47 Lis a de EndPoin s egis ados 64 65 6 PRUEBAS DE CONCEPTO. 6.1 P uebas de concep o y uncionalidad En es e apa ado se an a ealiza di e en es p uebas con el in de demos a que el p oyec o unciona de o ma co ec a y cumple cada una de las uncionalidades pa a las cuales ha sido diseñado. 6.1.1 Ins alación y egis o La p ime a p ueba a a consis i en desca ga se ía web edBo de Malwa e EndPoin , ins ala lo en un EndPoin y e i ica que el egis o en la web de edBo de Malwa e se ha ealizado de o ma co ec a. De o ma adicional, se a a comp oba como los se icios, an o de GRR como del EndPoin , es án ac i os y como el so wa e se inicia de o ma co ec a. Pa a comenza la p ueba se ab e la web del manage de edBo de Malwa e, cuya di ección es h ps://<IP>/endpoin s y se desca ga el so wa e. Figu a 48 Desca ga de edBo de Malwa e EndPoin ía web Una ez desca gado, se ab e en el EndPoin el di ec o io, y se ejecu a el ins alado , que ins ala el clien e GRR y el so wa e, ambos como se icios de Windows. Una ez ins alado, el clien e de GRR lanza un callback al se ido pa a egis a se, a lo que es e úl imo esponde con un iden i icado . Los da os, an o los de egis o como los del iden i icado , son ex aidos po el manage pa a hace el egis o del EndPoin en la web y pa a que, ía GRR, se lance un low 11 al clien e pa a in oduci el iden i icado en el iche o del en o no de con igu ación e inicia el se icio EndPoin . En la siguien e imagen se ap ecia el ins alado que se debe ejecu a : 11 Flujo de comunicación se ido – clien e de GRR, po el cual el se ido hace una pe ición al clien e. 66 Figu a 49 Ins alado Una ez ins alado, se puede ap ecia como c ea an o el se icio de GRR (GRR Moni o ) como el se icio de EndPoin (EndPoin Se ice): Figu a 50 Se icios ins alados 67 El siguien e paso, como se explico con an e io idad, es demos a que el EndPoin se egis a de o ma co ec a en la web de edBo de Malwa e. Pa a ello, el se icio “GRR Moni o ” manda un callback al se ido pa a egis a se, asignándole es e un iden i icado . Tan o el callback como el iden i icado son ex aidos po pa e del manage pa a egis a lo en la web, momen o en el cual ya apa ece como un nue o EndPoin , como puede ap ecia se a con inuación: Figu a 51 Regis o web de un EndPoin Po úl imo, el manage usa la comunicación en e se ido -clien e de GRR pa a lanza un low a a és de es a ecnología pa a in oduci el iden i icado en el iche o “pa ame e s.yaml” , den o del di ec o io “con ig” del en o no de edBo de Malwa e EndPoin . A con inuación, se inicia el se icio “EndPoin se ice”. Figu a 52 Pa áme o clien _id Pa a comp oba el co ec o inicio del se icio, se pueden consul a los se icios y comp oba que es á en es ado “Iniciado”, como se demues a en la imagen mos ada an e io men e de los se icios. En caso de algún ipo de e o , el se icio es a ía pa ado. Realizadas las p uebas, se obse a que odo ha anscu ido de o ma co ec a, po an o, la ins alación y egis o de edBo de Malwa e EndPoin , ha sido un éxi o. 68 6.1.2 De ección y cap u a de iche os La ealización de es a p ueba, a a es a o ien ada a la demos ación de la de ección y cap u a de iche os, la subida de los mismos a Riak, el en ío del e en o median e Ka ka y su pos e io apa ición en la web de edBo de Malwa e. El p ime paso a da es c ea un iche o, al cual se da un nomb e cualquie , en es e caso, “FILE.exe”. Figu a 53 C eación de un iche o A con inuación, pa a comp oba si se ha de ec ado el iche o, se ab e desde el manage de edBo de Malwa e una consola y se inicia el consumido de Ka ka en el opic “ b_endpoin ”: Figu a 54 Fiche o nue o en b_endpoin 69 Se obse a que los e en os llegan de o ma co ec a, po an o, se comp ueba el opic “ b_ioc” pa a asegu a que llegan los e en os y que, en caso de amenazas, sean analizados po los IOC: Figu a 55 Fiche o nue o en b_ioc Al igual que an es, los e en os llegan sin p oblemas al manage , po an o, sólo quedan dos pasos pendien es. El p ime o de ellos es, a pa i del hash del iche o, ce cio a se que el iche o se encuen a en Riak. Po an o, desde la misma consola donde se han comp obado los e en os, se comp ueba si el iche o se encuen a en Riak, hecho que podemos obse a en la siguien e imagen: Figu a 56 Fiche o nue o en Riak El segundo paso es demos a ía web que los iche os es án siendo analizados. Pa a ello, es necesa io obse a si exis e algún iche o lanzado desde el equipo “ad ian-HP-No ebook. edbo de .lan” en la is a Top de Malwa e de la web. Figu a 57 Fiche o nue o en la web 70 El equipo an e io men e mencionado, ha lanzado a ias mues as, en e las que se encuen a el iche o FILE.exe, po an o, es a p ueba ha sido ealizada con éxi o. 6.1.3 De ección de p ocesos Es a p ueba es bas an e más sencilla que la an e io , ya que la comp obación ace ca de la de ección de un p oceso sólo se comp ueba a a és del consumido de Ka ka en el opic “ b_ioc”. Pa a ello, p ime o se ab e un p oceso cualquie a, como puede se “no epad”: Figu a 58 C eación del p oceso no epad Ac o seguido, se cie a el p oceso y se comp ueba, median e la consola del manage , si en el consumido exis en e en os de Ka ka elacionados con dicho p oceso. Pa a ello, se mi an los e en os llegados al opic “ b_ioc”. Como puede comp oba se a con inuación, la p ueba esul a sa is ac o ia: Figu a 59 E en o de c eación del p oceso no epad en Ka ka 6.1.4 De ección de conexiones web En es a p ueba se a a ealiza una conexión a una página web y se a a comp oba median e un consumido de Ka ka que el e en o llega al manage de o ma co ec a. Po an o, lo p ime o que se debe hace es ab i una conexión web, desde Google Ch ome, po ejemplo: 71 Figu a 60 C eación de una conexión web Pos e io men e, desde el consumido Ka ka del manage de edBo de Malwa e, se comp ueba el opic de “ b_ioc” pa a asegu a si ha llegado o no el e en o e e en e a la conexión an e io : Figu a 61 E en o de c eación del p oceso de conexión web Se puede obse a como la de ección y el en ío del e en o a Ka ka ha sido un éxi o, ya que se mues a que el p oceso es “ch ome.exe” y odos los sal os que ha dado has a llega al se ido web des ino. 6.1.5 De ección median e IOC de amenazas Pa a lle a a cabo es a p ueba, sólo es necesa io sabe que p oceso o iche o, puede ac i a una ale a po IOC. En es e caso, se ha diseñado una ale a, a modo de ejemplo, que sal a al de ec a la c eación de un iche o llamado “se e .exe” en un EndPoin . Po an o, el p ime paso es c ea un iche o con ese nomb e, como se hace a con inuación: 78 6.2.2 P ocesamien o de lo es de iche os La siguien e p ueba p e ende p oba la capacidad de p ocesa lo es de iche os en un EndPoin . Pa a ello se a a desca ga y descomp imi un conjun o de iche os que se án p ocesados po edBo de Malwa e EndPoin . Se desc iben a con inuación las ca ac e ís icas del EndPoin de p ueba:  Máquina i ual con Windows 7 de 64 bi s de a qui ec u a.  Gb de RAM.  CPU con 2 co es. El p ocedimien o a segui es el siguien e:  Se dispone de a ios iche os comp imidos con lo es de 5, 50, 100, 500 y 10000 a chi os de di e sos ipos y amaños.  El se icio de endPoin es a á apagado al inicio de cada p ueba pa a limpia la caché y las colas de p oceso, de esa o ma p io izamos los a chi os descomp imidos. En la siguien e abla, se da in o mación e e en e a los iche os, sus ipos y amaños. LOTE TAMAÑO TIPOS 5 992 KB JPEG, MP3, TXT, HTML 50 20,4 MB JPEG, MP3, TXT, HTML, AVI, DOCX 100 145 MB JPEG, MP3, TXT, HTML, AVI, DOCX, GIF 500 438 MB JPEG, MP3, TXT, HTML, AVI, DOCX, GIF, ZIP, XLS, BIN, PNG, MOV, MKV, PDF, PPT 1000 637 MB JPEG, MP3, TXT, HTML, AVI, DOCX, GIF, ZIP, XLS, BIN, PNG, MOV, MKV, PDF, PPT Tabla 3 In o mación de los iche os de p uebas Una ez se han p ocesado odos los lo es de iche os po pa e de edBo de Malwa e EndPoin , se ob ienen los siguien es esul ados: 79 LOTES 5 50 100 500 1000 UNIDADES CPU 8 7,67 7,6 23,6 6,342 % RAM 0,82 0,81 0,9 1,5 0,4 % HDD 0,5 2,14 2,33 55,36 2,240 % RED 8996,61 35766,5 15547,487 9789,543 15154,19 By es/seg TIEMPO 138 1086 2371 19010 35665 Seg Tabla 4 Resul ados del análisis de los lo es de iche os Figu a 71 G á ica de p ocesado de lo es de iche os La g á ica mues a el iempo eque ido pa a el p ocesado de cada uno de los lo es. Des aca cie a endencia lineal en el compo amien o del se icio de EndPoin . Obse ando los ecu sos u ilizados en los dis in os p ocesamien os de lo es, se puede comp oba que el consumo de RAM se man iene en unos alo es en o no al 0,5% del inc emen o sob e el u ilizado. 80 Des aca de o ma no able el lo e de 500 a chi os, donde se ap ecia un consumo de CPU y disco du o mayo es; es os alo es son penalizaciones debido a que el equipo es á i ualizado y compa e los ecu sos del an i ión con o as máquinas i uales. También puede impac a el uso de ed pa a los lo es más g andes, dado que su uso es meno que po ejemplo el lo e de 50 a chi os. Es os alo es más “ elajados” es án calculados como media en el espacio de iempo que du a el p ocesamien o de los lo es de a chi os. 6.2.3 Uso de un EndPoin Es a p ueba consis e en simula el uso po pa e de un usua io de un EndPoin . Pa a au oma iza el compo amien o se ha usado un bo , combinando acciones de edición y enomb ado de de iche os, desca ga de malwa e y acceso a enlaces mul imedia. El obje i o de la p ueba es ene el conocimien o necesa io ace ca del uso de CPU y memo ia RAM:  CPU: La ac i idad ha sido cons an e, como el pa ón de uncionamien o del bo du an e más de 12 ho as. Se ap ecian picos de p ocesamien o debido a la acumulación de p ocesos en los accesos a con enidos mul imedia. Du an e la p ueba, el p omedio de uso de CPU ha sido del 34,51%. Figu a 72 G á ica de uso de CPU  Memo ia RAM: La ac i idad du an e pe iodos de ac i idad in ensa ha sido del 48,8%, pe o una ez inalizada la ac i idad del bo , se obse a un descenso has a llega al p omedio del 30%. 81 Figu a 73 G á ica de uso de memo ia RAM 82 83 7 PRESUPUESTO. En es a sección es i amos el cos e del p oyec o, basándonos en las ho as dedicadas y el equipamen o necesa io pa a ins ala odo el sis ema: Pe iodo de T abajo Núme o de Ho as P ecio/Ho a To al Agos o 2015 – Mayo 2016 1035 30€/ho a 31.020€ Equipamien o Can idad P ecio/Ho a To al An i ión pa a VMwa e ESXi (En o no de i ualización de se ido es). 1 5.000€ 5.000€ Tabla 5 P esupues os En el an i ión se i ualizan se ido es que sopo an los dis in os se icios in oluc ados en el p oyec o, es os se ido es ienen las siguien es ca ac e ís icas:  Memo ia: 15 Gigas de RAM.  CPUs: modelo “In el(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz”.  Sis ema edBo de , basado en Cen Os. Pa a lle a acabo es e p oyec o se ha calculado un p esupues o o al de 36.020 €. 84 85 8 CONCLUSIONES. 8.1 Conclusiones La he amien a desa ollada en es e p oyec o, es es able, uncional y es á incluida en la aplicación de malwa e de edBo de den o del po olio de p oduc os. Es e p esen e documen o, ecoge el esul ado de un la go y complejo p oceso de in es igación, ap endizaje, supe ación pe sonal y p incipalmen e abajo. El abajado se ha desa ollado con ecnologías código abie o pa a el desa ollo de es e p oyec o como son Py hon o GRR. De o ma adicional, al habe abajo con el equipo de Eneo Tecnología SL, he adqui ido eno mes capacidades de abajo en equipo y de comunicación. Po úl imo, a endiendo al esul ado del p oyec o y de sus pe inen es p uebas, se han conseguido cub i odos los hi os p opues os. Se ha conseguido un sis ema de segu idad pa a EndPoin s que de ec e en iempo eal e en os del sis ema y los no i ique a la pla a o ma de análisis de edBo de Malwa e, de ec ando así a aques, malwa e o amenazas a anzadas. 8.2 Fu u as mejo as El siguien e paso de es e p oyec o a a á sob e la adición al agen e EndPoin un nue o módulo de IOC, de modo que, cualquie e en o del sis ema sea analizado en el p opio EndPoin pa a dilucida si exis e algún iesgo pa a el equipo. De es a mane a, el agen e EndPoin queda ía exen o de la necesidad de un análisis emo o con a IOC y además pod ía pasa a ac ua de mane a inmedia e an e cualquie iesgo sin necesidad de espe a la espues a del se ido GRR. 86 87 9 REFERENCIAS. [1] Mike Halsey, Mayo 2011. Windows 7 Powe Use Guide [En línea] [Documen o PDF] Disponible: h ps://blogs. echne .mic oso .com/uk echne /2011/05/10/download- he-windows-7-powe -use s- guide-ebook- ee/ [2] Py hon.o g. Documen ación [En línea] [Web] Disponible: h ps://docs.py hon.o g/3/ [3] Apache So wa e Founda ion – Apache Ka ka [En línea] [Web] Disponible: h p://ka ka.apache.o g [4] ENEO Tecnología – edBo de Malwa e [En línea] [Web] Disponible: h ps:// edbo de .com/ [5] Basho – Riak CS Documen a ion [En línea] [Web] Disponible: h p://docs.basho.com/ iakcs/la es / [6] Basho – Riak Documen a ion [En línea] [Web] Disponible: h p://docs.basho.com/ iak/la es / [7] Mic oso – WMI API Documen a ion [En línea] [Web] Disponible: h ps://msdn.mic oso .com/en-us/lib a y/windows/desk op/ 818516( = s.85).aspx [8] Malwa e Analys ’s Cookbook. Au o es: Michael Hale Ligh, S e en Adai , Blake Ha s ein and Ma hew Richa d [En línea] [Documen o PDF] Disponible: h ps://docs.google.com/ ile/d/0B7d_gqEI7i KTm44RC1Hczh3LUU/edi ?pli=1 [9] Gi hub – GRR Documen a ion [En línea] [Web] Disponible: h ps://gi hub.com/google/g -doc [10] Raul Gonzalez Duque, Oc ub e 2014. Py hon pa a odos [En línea] [Documen o PDF] Disponible: h ps://launchpadlib a ian.ne /18980633/Py hon%20pa a%20 odos.pd [11] Ma k Ked ich, Ma zo 2007. EndPoin Secu i y 94 51. # connec ion o sqli e 52. dbConnec ion = None 53. 54. # las es inc emen al lis que y 55. las _inc emen al_que y = ' .i' 56. 57. # ini local cache wi h con ig ile 58. @s a icme hod 59. de ini Cache(con ig): 60. i CacheManage .s a us is S a us.STOPPED: 61. 62. CacheManage .s a us = S a us.PREPARING 63. 64. logging.ge Logge ('applica ion').in o("Ini cache clien ") 65. # load con igu a ion 66. CacheManage .u l_se e = con ig[' epu a ion_se e '] 67. CacheManage . e sion = con ig[' e sion_cache'] 68. da abasePa h = os.pa h.join(con ig[' oo pa h'], 'endpoin _agen ', 'db', Cac heManage .DATABASE_NAME) 69. CacheManage .dbConnec ion = sqli e3.connec (da abasePa h, check_same_ h ead =False) 70. CacheManage .semapho e = h eading.Semapho e() 71. 72. # de ine able in BBDD 73. i CacheManage .dbConnec ion: 74. logging.ge Logge ('applica ion').debug("Connec ed o local cache da aba se: {0}". o ma (CacheManage .DATABASE_NAME)) 75. CacheManage .dbConnec ion.cu so ().execu e('CREATE TABLE IF NOT EXISTS cache (hash ex PRIMARY KEY, sco e in ege )') 76. CacheManage .dbConnec ion.commi () 77. 78. CacheManage .s a us = S a us.READY 79. 80. 81. @s a icme hod 82. de s a (): 83. 84. i CacheManage .s a us is S a us.READY: 85. 86. CacheManage .s a us = S a us.RUNNING 87. 88. # Ini cache ask 89. execu o = Th eadPoolExecu o (max_wo ke s=1) 90. execu o .submi (CacheManage .doPe i ions) 91. 92. logging.ge Logge ('applica ion').in o("S a ed cache clien !") 93. 94. 95. @s a icme hod 96. de doPe i ions(): 97. i (CacheManage .s a us is S a us.RUNNING): 98. 99. logging.ge Logge ('applica ion').debug("Doing o al pe i ion o emo e cach e") 100. # i s ime ge o al wi h il e hash 101. CacheManage .ge To al("hash") 102. 103. logging.ge Logge ('applica ion').debug("Doing inc emen al pe i ion o emo e cache") 104. # i s ime ge inc emen al 105. CacheManage .ge Inc emen al("hash") 106. 107. # e e y X seconds ge inc emen al wi h il e hash 108. while CacheManage .s a us is S a us.RUNNING and no ime.sleep(900): 109. CacheManage .ge Inc emen al("hash") 95 110. logging.ge Logge ('applica ion').debug("Do inc emen al pe i ion o emo e cache") 111. 112. 113. 114. @s a icme hod 115. de ge To al( il e ): 116. # build u l 117. u l = CacheManage .URL_REPUTATION_TOTAL. o ma (CacheManage .u l_se e , CacheManage . e sion, "/%s" % il e i il e else "") 118. 119. y: 120. 121. CacheManage .semapho e.acqui e() 122. 123. i (CacheManage .s a us is S a us.RUNNING): 124. 125. # ge emo e esponse 126. esponse = eques s.ge (u l, e i y=False) 127. 128. logging.ge Logge ('applica ion').debug("Response in o al pe i i on : {0}". o ma ( esponse.s a us_code)) 129. 130. i esponse.s a us_code is 200: 131. 132. # i s a us eponse is co ec pu in BBDD all da a 133. da a = esponse.json()['da a'] 134. 135. o en y in da a: 136. i 'hash' in en y and 'sco e' in en y: 137. hashValue = en y['hash'] 138. sco eValue = en y['sco e'] 139. CacheManage .dbConnec ion.cu so ().execu e('INSERT O R REPLACE INTO cache VALUES ( '{0} ',{1})'. o ma (hashValue, sco eValue)) 140. logging.ge Logge ('applica ion').debug("Upda ed da a base : hash {0} wi h sco e {1}.". o ma ( ep (hashValue), sco eValue)) 141. 142. CacheManage .dbConnec ion.commi () 143. logging.ge Logge ('applica ion').in o("Upda ed local cache d a abase wi h o al lis ") 144. else: 145. logging.ge Logge ('applica ion').wa ning("Unable o ge o a l lis om : {1}". o ma (CacheManage .u l_se e )) 146. 147. excep Excep ion as e: 148. logging.ge Logge ('applica ion').e o ('E o o ge o al lis om emo e cache') 149. logging.ge Logge ('applica ion').e o (e) 150. inally: 151. CacheManage .semapho e. elease() 152. 153. 154. 155. @s a icme hod 156. de ge Inc emen al( il e ): 157. 158. y: 159. CacheManage .semapho e.acqui e() 160. 161. i (CacheManage .s a us is S a us.RUNNING): 162. 163. # ge inc emen al cache 164. u l = CacheManage .URL_REPUTATION_INCREMENTAL. o ma (CacheManage .u l_se e , CacheManage . e sion) 165. 166. # ge emo e esponse 167. esponse = eques s.ge (u l, e i y=False) 96 168. 169. logging.ge Logge ('applica ion').debug("Response in las inc eme n al pe i ion : {0}". o ma ( esponse.s a us_code)) 170. 171. # i s a us eponse is co ec checked la es upda es 172. i esponse.s a us_code is 200: 173. 174. las Release = esponse.json()['las _ elease'] 175. 176. i no las Release == CacheManage .las _inc emen al_que y an d no CacheManage .las _inc emen al_que y == '0.0': 177. 178. CacheManage .las _inc emen al_que y = las Release 179. 180. u l = CacheManage .URL_REPUTATION_INCREMENTAL_LIST. o ma (CacheManage .u l_se e , CacheManage . e sion, las Release, "/%s" % il e i il e else "") 181. 182. esponse = eques s.ge (u l, e i y=False) 183. 184. logging.ge Logge ('applica ion').debug("Response in inc emen al lis pe i ion : {0}". o ma ( esponse.s a us_code)) 185. 186. i esponse.s a us_code is 200: 187. 188. #I emo e cache changed, upda ed endpoin local cac he 189. da a = esponse.json()['da a'] 190. 191. o en y in da a: 192. i 'hash' in en y and 'sco e' in en y: 193. hashValue = en y['hash'] 194. sco eValue = en y['sco e'] 195. 196. CacheManage .dbConnec ion.cu so ().execu e(' INSERT OR REPLACE INTO cache VALUES ( '{0} ',{1})'. o ma (hashValue, sco eValue)) 197. logging.ge Logge ('applica ion').debug("Upda ed da abase inc emen al lis {0} : hash {1} wi h sco e {2}". o ma ( ep (las Release), ep (hashValue), s (sco eValue))) 198. 199. CacheManage .dbConnec ion.commi () 200. 201. logging.ge Logge ('applica ion').in o("Upda ed local cache da abase wi h inc emen al lis : {0}". o ma ( ep (las Release))) 202. else: 203. logging.ge Logge ('applica ion').in o("No inc emen al l is a ailable!") 204. 205. excep Excep ion as e: 206. logging.ge Logge ('applica ion').e o ('E o o ge inc emen al lis om emo e cache') 207. logging.ge Logge ('applica ion').e o (e) 208. inally: 209. CacheManage .semapho e. elease() 210. 211. 212. @s a icme hod 213. de ge _sco e(hash alue): 214. 215. # ge sco e om hash alue 216. y: 217. CacheManage .semapho e.acqui e() 218. 219. i (CacheManage .s a us is S a us.RUNNING): 220. 221. cu so = CacheManage .dbConnec ion.cu so () 97 222. 223. cu so .execu e('SELECT sco e FROM cache WHERE hash=?', (hash alue,)) 224. 225. esul = cu so . e chone() 226. 227. i esul : 228. logging.ge Logge ('applica ion').debug("Resul o hash {0} : {1}". o ma (hash alue, esul [0])) 229. e u n esul [0] 230. else: 231. logging.ge Logge ('applica ion').debug("Resul s no oun d o hash %s" % hash alue) 232. else: 233. e u n 1000 234. 235. excep Excep ion as e: 236. logging.ge Logge ('applica ion').e o ("E o o que y hash {0}" . o ma (hash alue)) 237. logging.ge Logge ('applica ion').e o (e) 238. e u n 1000 239. inally: 240. CacheManage .semapho e. elease() 241. 242. 243. @s a icme hod 244. de checkI Exis s(hash alue): 245. 246. y: 247. CacheManage .semapho e.acqui e() 248. 249. i (CacheManage .s a us is S a us.RUNNING): 250. #checked i hash alue exis s in local cache 251. cu so = CacheManage .dbConnec ion.cu so () 252. 253. cu so .execu e("SELECT EXISTS(SELECT 1 FROM cache WHERE hash= '{ 0} ' LIMIT 1)". o ma (hash alue)) 254. 255. esul = cu so . e chone()[0] 256. 257. i bool( esul ): 258. logging.ge Logge ('applica ion').debug("Value {0} exis s in da abase". o ma (hash alue)) 259. else: 260. logging.ge Logge ('applica ion').debug("Value {0} doesn' ex is s in da abase". o ma (hash alue)) 261. CacheManage .dbConnec ion.cu so ().execu e('INSERT OR REPLAC E INTO cache VALUES ( '{0} ',{1})'. o ma (hash alue, -1)) 262. CacheManage .dbConnec ion.commi () 263. logging.ge Logge ('applica ion').in o("Added new en y {0} i n local cache". o ma (hash alue)) 264. 265. e u n bool( esul ) 266. 267. e u n None 268. 269. excep Excep ion as e: 270. logging.ge Logge ('applica ion').e o ("E o o add new en y o h ash {0}". o ma (hash alue)) 271. logging.ge Logge ('applica ion').e o (e) 272. inally: 273. CacheManage .semapho e. elease() 274. 275. 276. 277. @s a icme hod 278. de shu down(): 98 279. i CacheManage .s a us is S a us.RUNNING: 280. 281. CacheManage .s a us = S a us.STOPPING 282. 283. # Wai a minu e, i no close connec ion 284. y: 285. CacheManage .semapho e.acqui e() 286. CacheManage .dbConnec ion.close() 287. CacheManage .s a us = S a us.STOPPED 288. logging.ge Logge ('applica ion').in o('Local Cache Manage s opp ed') 289. excep Excep ion as e: 290. logging.ge Logge ('applica ion').e o ("E o o close da abase" ) 291. logging.ge Logge ('applica ion').e o (e) 292. inally: 293. CacheManage .semapho e. elease() 99 manage s/Ka kaManage .py 1. om ka ka impo Ka kaClien 2. om ka ka impo KeyedP oduce 3. om ka ka impo HashedPa i ione 4. om ka ka.common impo (Reques TimedOu E o , MessageSizeTooLa geE o ) 5. 6. impo ime 7. impo logging 8. 9. 10. class Ka kaManage (): 11. 12. 13. # cons uc o 14. de __ini __(sel , ka kaCon ig): 15. sel .ka kaCon ig = ka kaCon ig 16. sel .ini () 17. sel . unning = T ue 18. logging.ge Logge ('applica ion').in o("Ini new ka ka manage ") 19. 20. # ini ka ka p oduce 21. de ini (sel ): 22. unning = False 23. y: 24. sel .ka kaClien = Ka kaClien (sel .ka kaCon ig['ka ka_se e ']) 25. logging.ge Logge ('applica ion').in o("Connec wi h b oke : {0}". o ma (sel .ka kaCon ig['ka ka_se e '])) 26. 27. logging.ge Logge ('applica ion').in o("Ini new p oduce ") 28. sel .ka kaP oduce = KeyedP oduce (sel .ka kaClien , pa i ione =HashedPa i ione , async=False) 29. 30. unning = T ue 31. 32. excep Excep ion as e: 33. logging.ge Logge ('applica ion').e o ("Ka ka se e connec ailed.") 34. logging.ge Logge ('applica ion').e o (e) 35. 36. 37. de econnec (sel , opic, key, msg): 38. ying = 1 39. unning = False 40. while ying <= 5 and no unning: 41. y: 42. sel .ka kaClien = Ka kaClien (sel .ka kaCon ig['ka ka_se e ']) 43. logging.ge Logge ('applica ion').in o("Reconnec wi h b oke : {0}". o m a (sel .ka kaCon ig['ka ka_se e '])) 44. 45. logging.ge Logge ('applica ion').in o("Upda ed p oduce ") 46. sel .ka kaP oduce = KeyedP oduce (sel .ka kaClien , pa i ione =Hashed Pa i ione , async=False) 47. 48. sel .ka kaP oduce .send_messages( opic, by es(key, 'u - 8'), by es(msg, 'u -8')) 49. 50. unning = T ue 51. 52. excep Excep ion as e: 53. logging.ge Logge ('applica ion').e o ("Ka ka se e econnec ailed. {0} o 5 e ies". o ma ( ying)) 54. logging.ge Logge ('applica ion').e o (e) 55. ime.sleep(5) 56. ying += 1 57. con inue 58. 100 59. de ka kaReques TimedOu E o (sel , opic, key, msg): 60. ying = 1 61. unning = False 62. while ying <= 5 and no unning: 63. y: 64. sel .ka kaP oduce .send_messages( opic, by es(key, 'u - 8'), by es(msg, 'u -8')) 65. unning = T ue 66. excep Reques TimedOu E o : 67. logging.ge Logge ('applica ion').e o ("Ka ka eques ime ou e o . { 0} o 5 e ies". o ma ( ying)) 68. ime.sleep(5) 69. ying += 1 70. 71. # send message wi h o wi hou key o opic 72. de sendMessage(sel , msg, opic, key=None): 73. logging.ge Logge ('applica ion').debug("Sending message o opic: %s", ep ( op ic)) 74. y: 75. sel .ka kaP oduce .send_messages( opic, by es(key, 'u - 8'), by es(msg, 'u -8')) 76. excep Reques TimedOu E o : 77. sel .ka kaReques TimedOu E o ( opic, key, msg) 78. e u n 79. excep MessageSizeTooLa geE o : 80. logging.ge Logge ('applica ion').e o ("Message size is oo la ge o send k a ka se e {0}". o ma (msg)) 81. e u n 82. excep Excep ion as e: 83. logging.ge Logge ('applica ion').e o (e) 84. sel . econnec ( opic, key, msg) 101 manage s/RiakManage .py 1. impo ime 2. impo os 3. impo shu il 4. impo logging 5. impo bo o3 6. om bo oco e.u ils impo ix_s3_hos 7. 8. class S3Manage (): 9. 10. con igu a ion = None 11. pa h = None 12. 13. # Me hod o load con igu a ion o S3 14. @s a icme hod 15. de load_con ig(con ig, pa h): 16. S3Manage .con igu a ion = con ig.ge Con igP ope ies() 17. S3Manage .pa h = pa h 18. 19. 20. # Me hod o ge ile om S3 21. @s a icme hod 22. de ge _s3_ ile(sha256): 23. s3_pa h = os.pa h.join(S3Manage .pa h, 's3', sha256) 24. e u n s3_pa h 25. 26. 27. # Me hod o c ea e empo al ile. 28. @s a icme hod 29. de c ea e_ emp_ ile(old_ ile, new_ ile): 30. lag = False 31. coun = 0 32. while lag == False: 33. y: 34. i coun < 5: 35. shu il.copy ile(old_ ile, new_ ile) 36. lag = T ue 37. logging.ge Logge ('applica ion').in o('C ea ed empo al ile : {0}' . o ma (new_ ile)) 38. e u n "ok" 39. else: 40. lag = T ue 41. logging.ge Logge ('applica ion').e o ('E o o c ea e empo al i le : {0}'. o ma (new_ ile)) 42. e u n "e o " 43. excep : 44. ime.sleep(15) 45. coun += 1 46. 47. 48. # Me hod o upload iles o S3 49. @s a icme hod 50. de upload_s3( ilename, sha256): 51. s3_ ile_upload = S3Manage .ge _s3_ ile(sha256) 52. aws_access = S3Manage .con igu a ion['access_key'] 53. aws_sec e = S3Manage .con igu a ion['sec e _key'] 54. bucke _name = S3Manage .con igu a ion['s3_bucke '] 55. bucke _key = S3Manage .con igu a ion['s3_key'] 56. 57. copy_s a us = S3Manage .c ea e_ emp_ ile( ilename, s3_ ile_upload) 58. 59. i copy_s a us == "ok": 60. coun = 0 61. lag = T ue 62. while lag == T ue: 102 63. y: 64. # connec o hos s. 65. s3 esou ce = bo o3. esou ce(se ice_name="s3", 66. e i y=False, 67. endpoin _u l="h ps://s3. edbo de .clus e ", 68. aws_access_key_id=aws_access, 69. aws_sec e _access_key=aws_sec e ) 70. 71. # A oid edi ec 72. s3 esou ce.me a.clien .me a.e en s.un egis e ('be o e- sign.s3', ix_s3_hos ) 73. 74. # Ge bucke 75. bucke = s3 esou ce.Bucke (bucke _name) 76. da a = open(s3_ ile_upload, ' b') 77. 78. # upload ile o s3 79. bucke .pu _objec (Key=bucke _key + sha256, Body=da a) 80. # close ile 81. da a.close() 82. ime.sleep(1) 83. lag = False 84. i os.pa h.exis s(s3_ ile_upload): 85. os. emo e(s3_ ile_upload) 86. logging.ge Logge ('applica ion').in o('Uploaded ile {0}'. o ma ( e p ( ilename))) 87. e u n "upload" 88. excep Excep ion as e: 89. logging.ge Logge ('applica ion').e o ('Failed o upload ile {0} o S3'. o ma ( ep ( ilename))) 90. logging.ge Logge ('applica ion').e o (s (e)) 91. #Max in en s. 92. i coun < 2: 93. coun += 1 94. ime.sleep(2) 95. else: 96. e u n "e o _upload" 97. else: 98. e u n "e o _copy" 103 manage s/QueueManage .py 1. om queue impo Queue 2. om queue impo Full 3. 4. impo logging 5. 6. # S a ic class o queue managemen 7. class QueueManage (): 8. 9. # c ea ed queues 10. queues = dic () 11. 12. 13. # me hod o c ea e a new queue wi h key 14. @s a icme hod 15. de c ea eQueue(key): 16. i no key in QueueManage .queues: 17. QueueManage .queues[key] = Queue() 18. logging.ge Logge ('applica ion').in o("C ea ed new queue wi h key: '%s '", key) 19. 20. 21. # me hod o pu da a in queue wi h key 22. @s a icme hod 23. de pu OnQueue(key, da a): 24. i key in QueueManage .queues: 25. QueueManage .queues[key].pu (da a) 26. logging.ge Logge ('applica ion').debug("Added new da a o queue wi h key: '%s '", key) 27. logging.ge Logge ('applica ion').debug("Da a alue : %s", da a) 28. else: 29. logging.e o ("key '%s ' no ound!", key) 30. aise QueueManage Excep ion(key) 31. 32. 33. # me hod o know i a queue wi h key is emp y 34. @s a icme hod 35. de isEmp y(key): 36. i key in QueueManage .queues: 37. logging.ge Logge ('applica ion').debug("Checking size o queue wi h key: ' %s '", key) 38. e u n QueueManage .queues[key].emp y() 39. else: 40. logging.ge Logge ('applica ion').e o ("key '%s ' no ound!", key) 41. aise QueueManage Excep ion(key) 42. 43. 44. # me hod o ge da a om a queue wi h key 45. @s a icme hod 46. de ge I emF omQueue(key, imeou =None): 47. y: 48. i key in QueueManage .queues: 49. logging.ge Logge ('applica ion').debug("Ge i em om queue wi h key: '%s '", key) 50. e u n QueueManage .queues[key].ge ( imeou = imeou ) 51. else: 52. logging.ge Logge ('applica ion').e o ("key '%s ' no ound!", key) 53. aise QueueManage Excep ion(key) 54. excep Excep ion as e: 55. logging.ge Logge ('applica ion').debug('Queue imeou o key {0}'. o ma ( ep (key))) 56. 57. 58. # me hod o ge queue wi h key 59. @s a icme hod 110 65. sha_no mal = hashlib.sha256(con en ) 66. sha_256 = sha_no mal.hexdiges () 67. ile_open.close() 68. lag = False 69. excep : 70. i coun < 20: 71. ime.sleep( ime ) 72. coun += 1 73. else: 74. lag = False 75. e u n sha_256 76. 77. @s a icme hod 78. de ge _ ile_ ype( ilename): 79. # ge a ype om ile 80. y: 81. message = open( ilename, ' b'). ead() 82. di _ ile = os.pa h.join(FilePa ame e s.pa h,' il e s', 'sno _ ile. x ') 83. sno _ ile = open(di _ ile, ' '). eadlines() 84. am = 0 85. abla_uno = [] 86. # ead line by line a sno ile 87. while am < len(sno _ ile): 88. wo ds = sno _ ile[ am].spli () 89. # i las wo d is 1 meaning ha nex line mus be sa is y 90. i wo ds[-1] == "1": 91. while wo ds[-1] == "1": 92. # a iable inal is a las by e o check 93. inal = in (wo ds[1]) + in (wo ds[0]) 94. # he con en o a ile limi ed by an ini ial by e and o he en d is caugh in hexadecimal 95. con en = binascii.hexli y(message[in (wo ds[0]): inal]) 96. ma ch = s (con en .decode('ascii')).uppe () 97. #I he con en ma ches he ypical o a ile o ha ype com ing in ou sno pu 1 in he able ile. In o he case pu 0 98. i ma ch == wo ds[2]: 99. abla_uno.append(1) 100. else: 101. abla_uno.append(0) 102. am += 1 103. wo ds = sno _ ile[ am].spli () 104. wo ds = sno _ ile[ am].spli () 105. inal = in (wo ds[1]) + in (wo ds[0]) 106. con en = binascii.hexli y(message[in (wo ds[0]): inal]) 107. ma ch = s (con en .decode('ascii')).uppe () 108. i ma ch == wo ds[2]: 109. abla_uno.append(1) 110. else: 111. abla_uno.append(0) 112. lag = 1 113. o a ibu e in abla_uno: 114. i a ibu e == 0: 115. lag = 0 116. i lag == 1: 117. e u n wo ds[3] 118. abla_uno = [] 119. am += 1 120. else: 121. inal = in (wo ds[1]) + in (wo ds[0]) 122. con en = binascii.hexli y(message[in (wo ds[0]): inal]) 123. ma ch = s (con en .decode('ascii')).uppe () 124. i ma ch == wo ds[2]: 125. e u n wo ds[3] 126. am += 1 127. excep : 128. ype_ ile_none = 'None' 111 129. e u n ype_ ile_none 130. 131. @s a icme hod 132. de ge _acl( ilename): 133. y: 134. #Ge dacl(da a access con ol lis ) 135. secu i y_ ile = win32secu i y.Ge FileSecu i y( ilename, win32secu i y.DACL_SECURITY_INFORMATION) 136. #Ge DACL Desc ip o . 137. dacl = secu i y_ ile.Ge Secu i yDesc ip o Dacl() 138. i dacl != None and dacl != '': 139. s ing_dacl = s (dacl) 140. pa ame e _dacl = s ing_dacl.spli ()[-1] 141. # Take pe mi s and u n hem in o hexadecimal 142. pe mission = pa ame e _dacl[0:-1] 143. pe mission_decimal_ o ma = in (pe mission, 16) 144. e u n pe mission_decimal_ o ma 145. else: 146. e u n None 147. excep : 148. e u n None 149. pass 112 manage s/WindowsValueManage .py 1. impo socke 2. impo wmi 3. impo logging 4. 5. class WindowsValueManage (): 6. 7. #windows alues dic iona y 8. alues = dic () 9. 10. # Me hod o ge MAC, dns domain, IP, IP subne , p o ile and hos name in PC. 11. @s a icme hod 12. de se _ alues(): 13. y: 14. WindowsValueManage . alues['senso _name'] = socke .ge hos byname_ex (socke .ge hos name ())[0] 15. o pa ame e s_ne wo k in wmi.WMI ().Win32_Ne wo kAdap e Con igu a ion (): 16. i pa ame e s_ne wo k.MACAdd ess != None: 17. WindowsValueManage . alues['clien _mac'] = pa ame e s_ne wo k.MACAd d ess.lowe () 18. 19. i pa ame e s_ne wo k.DNSDomain != None: 20. WindowsValueManage . alues['domain_name'] = pa ame e s_ne wo k.DNSD omain 21. 22. i pa ame e s_ne wo k.IPAdd ess != None: 23. WindowsValueManage . alues['endpoin _agen '] = pa ame e s_ne wo k.I PAdd ess[0] 24. WindowsValueManage . alues['ds '] = pa ame e s_ne wo k.IPAdd ess[0] 25. WindowsValueManage . alues['senso _ip'] = pa ame e s_ne wo k.IPAdd ess[0] 26. 27. i pa ame e s_ne wo k.IPSubne != None: 28. WindowsValueManage . alues['s c_ne _name'] = pa ame e s_ne wo k.IPS ubne [0] 29. 30. o pa ame e s_p o ile in wmi.WMI ().Win32_Ne wo kLoginP o ile (): 31. i pa ame e s_p o ile.Name != None: 32. WindowsValueManage . alues['clien _id'] = pa ame e s_p o ile.Name 33. excep Excep ion as e: 34. logging.ge Logge ('applica ion').e o (e) 35. 36. 37. 38. @s a icme hod 39. de ge _ alues(): 40. e u n WindowsValueManage . alues 113 Anexo C: Código del módulo con olado Con olle s/Moni o Con olle .py 1. om concu en . u u es impo Th eadPoolExecu o 2. impo logging 3. 4. class Moni o Con olle (): 5. 6. # Cons uc o 7. de __ini __(sel ): 8. sel .execu o Se ice = Th eadPoolExecu o (max_wo ke s=100) 9. sel .wo ke Lis = lis () 10. sel . askLis = lis () 11. logging.ge Logge ('applica ion').in o("C ea ed new moni o con olle ") 12. 13. 14. # Reload moni o con olle 15. de eload(sel ): 16. pass 17. 18. 19. # Run single ask 20. de unTask(sel , ask, eplica ion=1): 21. # Deploy ask wi h eplica ion 22. 23. sel . askLis .append( ask) 24. 25. ask.p epa e() 26. 27. o eplica in ange( eplica ion): 28. sel .wo ke Lis .append(sel .execu o Se ice.submi ( ask.doTask)) 29. logging.ge Logge ('applica ion').in o("Wo ke o ask {0} c ea ed". o ma ( ep ( ask.ge TaskName()))) 30. 31. 32. # Ge esul om e e y wo ke and e u n a lis 33. de ge Wo ke sResul s(sel ): 34. esul s = lis () 35. o wo ke in sel .wo ke Lis : 36. esul s.append(wo ke . esul ()) 37. 38. e u n esul s 39. 40. 41. de s opWo ke s(sel ): 42. 43. logging.ge Logge ('applica ion').in o("S opping wo ke s") 44. 45. up_wo ke s = len(sel .wo ke Lis ) 46. down_wo ke s = 0 47. 48. o ask in sel . askLis : 49. ask.shu down() 50. 51. o wo ke in sel .wo ke Lis : 52. wo ke .cancel() 114 53. down_wo ke s += 1 54. 55. logging.ge Logge ('applica ion').in o("S opped %d o %d wo ke s", down_wo ke s, up_wo ke s) 56. 57. 58. de ge Wo ke sS a us(sel ): 59. pass 115 con olle s/ asks/Task.py 1. om enum impo Enum 2. impo logging 3. 4. class Task(): 5. 6. class S a us(Enum): 7. # ask is s a ing (con ig o example) 8. STARTING = 0 9. 10. # ask eady o begin 11. READY = 1 12. 13. # ask is unning 14. RUNNING = 2 15. 16. # ask is ying s op 17. STOPPING = 3 18. 19. # ask is s opped 20. STOPPED = 4 21. 22. # ask ail 23. FAILED = 5 24. 25. # ask cancelled 26. CANCELLED = 6 27. 28. # ask inished 29. FINISHED = 7 30. 31. # ask abo ed 32. ABORTED = 8 33. 34. clien _id = None 35. 36. de __ini __(sel , askName=None, con ig=None): 37. i askName: 38. sel . askName = askName 39. 40. sel .con igu a ion = con ig 41. 42. i con ig: 43. Task.clien _id = con ig['clien _id'] 44. 45. 46. i no sel .con igu a ion and sel . askName: 47. logging.ge Logge ('applica ion').wa ning('Con igu a ion is no se o ask {0}'. o ma ( ep (sel . askName))) 48. 49. sel .s a us = Task.S a us.STOPPED 50. 51. # Me hod o p epa e he ask 52. de p epa e(sel ): 53. # I ask is s opped pass o s a ing 54. i sel .s a us is Task.S a us.STOPPED: sel .s a us = Task.S a us.STARTING 55. 56. # Call o p epa e implemen a ion 57. sel .p epa eImpl() 58. 59. # I ask is s a ing pass o eady 60. i sel .s a us is Task.S a us.STARTING: sel .s a us = Task.S a us.READY 61. 62. i sel . askName: logging.ge Logge ('applica ion').in o("Task %s p epa ed" % e p (sel . askName)) 116 63. 64. # Me hod o un he ask 65. de doTask(sel ): 66. # I ask is eady hen pass o s a ing 67. i sel .s a us is Task.S a us.READY: sel .s a us = Task.S a us.RUNNING 68. # Call o do ask implemen a ion and ge he esul 69. 70. i sel . askName: logging.ge Logge ('applica ion').in o("Running ask %s" % ep (sel . askName)) 71. 72. las Resul = sel .doTaskImpl() 73. 74. i sel .s a us is Task.S a us.RUNNING: sel .s a us = Task.S a us.FINISHED 75. 76. i sel . askName: logging.ge Logge ('applica ion').in o("Task %s done" % ep (s el . askName)) 77. 78. e u n las Resul 79. 80. 81. # Me hod o shu down he ask 82. de shu down(sel ): 83. i sel .s a us is Task.S a us.RUNNING: sel .s a us = Task.S a us.STOPPING 84. 85. i sel . askName: logging.ge Logge ('applica ion').in o("S opping ask %s" % e p (sel . askName)) 86. 87. # Call o shu down implemen a ion 88. sel .shu downImpl() 89. 90. i sel .s a us is Task.S a us.STOPPED: sel .s a us = Task.S a us.ABORTED 91. 92. i sel .s a us is Task.S a us.STOPPING: sel .s a us = Task.S a us.STOPPED 93. 94. i sel . askName: logging.ge Logge ('applica ion').in o("Task %s s opped" % ep (sel . askName)) 95. 96. 97. # Ge ask name 98. de ge TaskName(sel ): 99. e u n sel . askName 100. 101. # Se ask name 102. de se TaskName(sel , askName): 103. sel . askName = askName 104. 105. # Ge ask s a us 106. de ge TaskS a us(sel ): 107. e u n sel .s a us 108. 109. # Ge las esul 110. de ge Las Resul (sel ): 111. e u n sel .las Resul 112. 113. # Shu down use implemen a ion 114. de shu downImpl(sel ): 115. pass 116. 117. # DoTask use implemen a ion 118. de doTaskImpl(sel ): 119. pass 120. 121. # P ep a e ask implemen a ion 122. de p epa eImpl(sel ): 123. pass 117 con olle s/ asks/windows/Moni o DiskPa i ion.py 1. impo os 2. impo h eading 3. impo ime 4. impo win32con 5. impo win32 ile 6. impo wmi 7. impo logging 8. impo py honcom 9. om con olle s. asks.Task impo Task 10. om manage s.Fil e Manage impo Fil e Manage 11. om manage s.WindowsValueManage impo WindowsValueManage 12. om manage s.QueueManage impo QueueManage 13. 14. 15. class Moni o DiskPa i ion(Task): 16. 17. de p epa eImpl(sel , con ig=None): 18. pass 19. 20. de doTaskImpl(sel ): 21. y: 22. py honcom.CoIni ialize() 23. connec ion = wmi.WMI() 24. # lis a que con ola que pa icion logica del disco exis e y es a ac i o en el sis ema y cual no 25. h eads_s a e = [] 26. # lis a de pa icion logica del disco. 27. h eads_lis = [] 28. # lis a con las posibles pa iciones logicas del discos del sis ema 29. pa i ions_logical_disk = [] 30. 31. while sel .s a us is Task.S a us.RUNNING: 32. y: 33. WindowsValueManage .se _ alues() 34. # si es una pa icion logica del disco isico se inclui a a la lis a pa a moni o iza lo y e i a asi los discos de ed 35. o physical_disk in connec ion.Win32_DiskD i e(): 36. o pa i ion in physical_disk.associa o s("Win32_DiskD i eToDi skPa i ion"): 37. o logical_disk in pa i ion.associa o s("Win32_LogicalDis kToPa i ion"): 38. i len(pa i ions_logical_disk) == 0: 39. # si la lis a de discos es a acia es po que acabam os de empeza 40. # se in oducen en la lis a el disco encon ado 41. disk_pa i ion = logical_disk.Cap ion + " " 42. pa i ions_logical_disk.append(disk_pa i ion) 43. h eads_s a e.append(0) 44. else: 45. # si exis e en la lis a algun disco se compa a 46. # si coincide no se in oduce en la lis a (ma ch = 1) 47. # si no exis e ningun disco en la lis a igual que e se, se in oduce y se me e en la lis a de es ados en su misma posicion un 0. 48. ma ch = 0 49. o elemen in pa i ions_logical_disk: 50. disk_pa i ion = logical_disk.Cap ion + " " 51. i elemen == disk_pa i ion: 52. ma ch = 1 53. 54. i ma ch == 0: 55. disk_pa i ion = logical_disk.Cap ion + " " 56. pa i ions_logical_disk.append(disk_pa i ion) 118 57. h eads_s a e.append(0) 58. h eads_posi ion = 0 59. # se eco e la lis a de discos y comp obamos que su u a exis e 60. o pa h_logical_disk in pa i ions_logical_disk: 61. i os.pa h.exis s(pa h_logical_disk): 62. # si exis e la u a y el disco es aba inac i o se c ea hilo 63. # como es aba inac i o ponemos un uno en e e encia a que a ho a si lo es a en su posicion co espondien e 64. i h eads_s a e[ h eads_posi ion] == 0: 65. h ead_moni o _disk = h eading.Th ead( a ge =sel .chan ges_ iles, a gs=(pa h_logical_disk,),name=pa h_logical_disk) 66. h eads_lis .append( h ead_moni o _disk) 67. h ead_moni o _disk.s a () 68. h eads_s a e[ h eads_posi ion] = 1 69. # Si no exis e la u a pe o el disco es aba ac i o en la ul ima comp obacion se pone como inac i o en su posicion co espondien e. 70. else: 71. i h eads_s a e[ h eads_posi ion] == 1: 72. h eads_s a e[ h eads_posi ion] = 0 73. h eads_posi ion = h eads_posi ion + 1 74. 75. ime.sleep(2) 76. excep : 77. con inue 78. excep Excep ion as e: 79. logging.ge Logge ('applica ion').e o (e) 80. inally: 81. py honcom.CoUnini ialize() 82. 83. de shu downImpl(sel ): 84. pass 85. 86. de changes_ iles(sel , logical_disk): 87. # Acciones que pueden ocu i pa a que sal e un e en o 88. ACTIONS = { 89. 1: "C ea ed", 90. 2: "Dele ed", 91. 3: "Upda ed", 92. 4: "Renamed om some hing", 93. 5: "Renamed o some hing" 94. } 95. 96. FILE_LIST_DIRECTORY = 0x0001 97. 98. # Ru a a moni o iza 99. pa h_ o_wa ch = logical_disk 100. # con igu acion de la moni o izacion 101. hDi = win32 ile.C ea eFile( 102. pa h_ o_wa ch, 103. FILE_LIST_DIRECTORY, 104. win32 ile.FILE_SHARE_READ | win32 ile.FILE_SHARE_WRITE | win32 ile.F ILE_SHARE_DELETE, 105. None, 106. win32 ile.OPEN_EXISTING, 107. win32con.FILE_FLAG_OVERLAPPED | win32con.FILE_FLAG_BACKUP_SEMANTICS, 108. None 109. ) 110. exi _ h ead = 1 111. while exi _ h ead == 1: 112. 113. y: 114. 115. # Moni o izacion ( u a, bu e , subca pe as a moni o iza (si o no), cambios con los que sal a el e en o) 119 116. esul s = win32 ile.ReadDi ec o yChangesW( 117. hDi , 118. 5012, 119. T ue, 120. win32con.FILE_NOTIFY_CHANGE_FILE_NAME | 121. win32con.FILE_NOTIFY_CHANGE_DIR_NAME | 122. win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES | 123. win32con.FILE_NOTIFY_CHANGE_SIZE | 124. win32con.FILE_NOTIFY_CHANGE_LAST_WRITE | 125. win32con.FILE_NOTIFY_CHANGE_SECURITY, 126. None, 127. None 128. ) 129. # mien as exis a esul ados asociados a un e en o 130. send_lis = [] 131. 132. # Del e en o cap u ado se coge la accion y el a chi o implicado en el e en o. 133. o ac ion, ile in esul s: 134. # comple amos el nomb e del iche o implicado en un e en o. 135. ull_ ilename = os.pa h.join(pa h_ o_wa ch, ile) 136. empo al_lis = [ac ion, ull_ ilename] 137. # in oducimos en la lis a de e en os la accion y el iche o implicado. 138. ma ch = Fil e Manage .ge _ il e _pa h( ull_ ilename) 139. send_lis .append( empo al_lis ) 140. # si la u a exis e y es un iche o. 141. i os.pa h.exis s( ull_ ilename) and os.pa h.is ile( ull_ il ename): 142. # si el iche o no es a il ado po u a y la accion no es bo a , es deci , el iche o exis e pa a abaja con el mismo. 143. i ma ch == False and ac ion != 2: 144. ile_ac ion = dic () 145. ile_ac ion[' ilename'] = ull_ ilename 146. # se asigna una accion dependiendo del nume o elaci onado a la accion 147. i ac ion == 1: 148. ile_ac ion['ac ion'] = 'c ea ed' 149. else: 150. ile_ac ion['ac ion'] = 'upda ed' 151. # se encola el e en o en la cola no mal 152. QueueManage .pu OnQueue(' ile_cap u e', ile_ac ion) 153. 154. # en caso de se un di ec o io solo se manda a el e en o si es nue o. 155. i os.pa h.isdi ( ull_ ilename) and ac ion == 1 and ma ch == False: 156. #si no es a il ado el di ec o io po u a se abaja a con el siemp e y cuando se haya c eado, ya que si es ac ualizado se a un iche o de de n o. 157. ile_ac ion = dic () 158. ile_ac ion[' ilename'] = ull_ ilename 159. ile_ac ion['ac ion'] = 'c ea ed' 160. QueueManage .pu OnQueue(' ile_cap u e', ile_ac ion) 161. # se me e oda la in o macion asociado a un e en o en la cola de in o macion 162. QueueManage .pu OnQueue(' ile_e en ',send_lis ) 163. # si la u a aiz (en es e caso la pa icion de windows, ya que puede se un usb y desapa ece ) deja de exis i se acaba el bucle. 164. i no os.pa h.exis s(pa h_ o_wa ch): 165. exi _ h ead = 0 166. 167. excep Excep ion: 168. con inue 126 con olle s/ asks/gene al/FileCap u eE en Task.py 1. impo logging 2. impo os 3. impo json 4. om con olle s. asks.Task impo Task 5. om manage s.Fil e Manage impo Fil e Manage 6. om manage s.QueueManage impo QueueManage 7. 8. 9. class FileCap u eE en Task(Task): 10. 11. de p epa eImpl(sel , con ig=None): 12. pass 13. 14. 15. de doTaskImpl(sel ): 16. 17. while sel .s a us is Task.S a us.RUNNING: 18. 19. y: 20. # Ge i em om ile_e en queue 21. e en = QueueManage .ge I emF omQueue(' ile_e en ', imeou =15) 22. 23. i e en : 24. logging.ge Logge ('applica ion').debug('Ge ed new ile {0}'. o ma (e en )) 25. 26. o elemen s in e en : 27. 28. # Is ile il e ed? 29. il e ed = Fil e Manage .ge _ il e _pa h(elemen s[1]) 30. 31. # C ea e new e en 32. e en = dic () 33. 34. # Clien id 35. e en ['namespace_uuid'] = Task.clien _id 36. e en ['endpoin _uuid'] = Task.clien _id 37. 38. # E en ype 39. e en [' ype'] = ' ile_in o ma ion' 40. 41. i elemen s[0] == 2: # File is dele ed 42. 43. i no il e ed: 44. 45. e en [' ilename'] = elemen s[1] 46. e en ['ac ion'] = 'dele ed' 47. 48. i elemen s[0] == 4: # File is enamed 49. 50. i no il e ed: 51. ac ion = ' ile ' + elemen s[1] +' enamed o ' 52. 53. i elemen s[0] == 5: 54. 55. i no il e ed and (os.pa h.is ile(elemen s[1]) o os.pa h .isdi (elemen s[1])): 56. 57. ac ion += elemen s[1] 58. 59. e en [' ilename'] = elemen s[1] 60. e en ['ac ion'] = ac ion 61. 62. i 'ac ion' in e en : 127 63. 64. # Dic o JSON 65. json_e en = json.dumps(e en ) 66. 67. # C ea e new ka ka message 68. ka ka_message = dic () 69. ka ka_message[' opic'] = ' b_ioc' 70. ka ka_message['con en '] = json_e en 71. 72. # Logging in binnacle 73. logging.ge Logge ('binnacle').in o(json_e en ) 74. 75. # And pu message in ka ka queue 76. QueueManage .pu OnQueue('ka ka', ka ka_message) 77. 78. excep Excep ion as e: 79. i sel .s a us is Task.S a us.RUNNING: 80. logging.ge Logge ('applica ion').e o (e) 81. 82. con inue 83. 84. de shu downImpl(sel ): 85. pass 128 con olle s/ asks/windows/C ea ionP ocessTask.py 1. impo json 2. impo logging 3. impo os 4. impo ime 5. impo psu il 6. impo wmi 7. impo py honcom 8. impo win32api 9. impo win32con 10. impo win32p ocess 11. om con olle s. asks.Task impo Task 12. om manage s.QueueManage impo QueueManage 13. 14. class C ea ionP ocessTask(Task): 15. 16. de p epa eImpl(sel , con ig=None): 17. pass 18. 19. 20. de doTaskImpl(sel ): 21. y: 22. 23. py honcom.CoIni ialize() 24. connec ion = wmi.WMI() 25. 26. wa che = connec ion.Win32_P ocess.wa ch_ o ("c ea ion") 27. while sel .s a us is Task.S a us.RUNNING: 28. y: 29. 30. new_p ocess = wa che () 31. e en = dic () 32. 33. # Ge execu able 34. execu able = sel .ge _execu able(new_p ocess, new_p ocess.P ocessID , new_p ocess.Cap ion, new_p ocess.CommandLine, new_p ocess.Desc ip ion) 35. 36. e en ['namespace_uuid'] = Task.clien _id 37. e en ['endpoin _uuid'] = Task.clien _id 38. e en [' ype'] = 'p ocess' 39. e en ['ac ion'] = 'c ea ion' 40. 41. # Ge PID i exis s 42. i new_p ocess.P ocessID is no None: 43. e en ['pid'] = new_p ocess.P ocessID 44. 45. # Ge cap ion i exis s 46. i new_p ocess.Cap ion is no None: 47. e en ['name'] = new_p ocess.Cap ion 48. 49. # Ge execu able i exis s 50. i execu able is no None: 51. e en ['applica ion'] = execu able 52. 53. sel .cha ac e is (new_p ocess, e en ) 54. 55. y: 56. 57. # Ge pa en p ocess 58. pa en _p ocess = psu il.P ocess(new_p ocess.Pa en P ocessId) 59. 60. i pa en _p ocess: 61. y: 62. # Ge execu able pa en 129 63. execu able_pa en = sel .ge _pa en _execu able(new_p oc ess.Pa en P ocessId, pa en _p ocess.name()) 64. e en ['pa en _applica ion'] = execu able_pa en 65. excep Excep ion as e: 66. logging.ge Logge ('applica ion').e o (e) 67. excep Excep ion as e: 68. logging.ge Logge ('applica ion').e o (e) 69. con inue 70. 71. e en [' imes amp'] = in ( ime. ime()) 72. 73. json_e en = json.dumps(e en ) 74. logging.ge Logge ('binnacle').in o(json_e en ) 75. 76. # C ea e new ka ka message 77. ka ka_message = dic () 78. ka ka_message[' opic'] = ' b_ioc' 79. ka ka_message['con en '] = json_e en 80. 81. # Pu message in ka ka queue 82. QueueManage .pu OnQueue('ka ka', ka ka_message) 83. 84. excep Excep ion as e: 85. logging.ge Logge ('applica ion').e o (e) 86. con inue 87. 88. excep Excep ion as e: 89. logging.ge Logge ('applica ion').e o (e) 90. inally: 91. py honcom.CoUnini ialize() 92. 93. 94. de shu downImpl(sel ): 95. pass 96. 97. de cha ac e is (sel , p ocess, bi aco a_s ing): 98. y: 99. 100. # Ge p io i y 101. i p ocess.P io i y: 102. bi aco a_s ing['p io i y'] = p ocess.P io i y 103. 104. #Ge session ID 105. i p ocess.SessionId: 106. bi aco a_s ing['sessionId'] = p ocess.SessionId 107. excep Excep ion as e: 108. logging.ge Logge ('applica ion').e o (e) 109. pass 110. 111. # Allow o ge pa en execu able 112. de ge _pa en _execu able(sel , pid, name): 113. 114. y: 115. # Ge p ocess by PID 116. execu able = sel .ge _p ocess_execu able(pid) 117. 118. # I no , ge execu able by name 119. i no execu able: 120. execu able = sel .ge _p ocess_execu able_by_name(name) 121. 122. i no execu able: 123. e u n None 124. 125. else: 126. e u n execu able 127. 128. excep Excep ion as e: 130 129. logging.ge Logge ('applica ion').e o (e) 130. e u n None 131. pass 132. 133. 134. # Allow o ge execu able by name 135. de ge _p ocess_execu able_by_name(sel , ilename, cmdline=None): 136. y: 137. 138. i no cmdline: 139. sys em_pa h = os.en i on['WINDIR'] + " Sys em32 " 140. ull_pa h = sys em_pa h + ilename 141. i os.pa h.exis s( ull_pa h): 142. execu able = ull_pa h 143. else: 144. execu able = None 145. 146. else: 147. i " Sys emRoo ".lowe () in cmdline.lowe (): 148. os_pa h = os.en i on['WINDIR'] 149. sys em_pa h = cmdline. eplace(" Sys emRoo ",os_pa h)[:cmdli ne. ind(" ")] 150. ull_pa h = sys em_pa h + ilename 151. i os.pa h.exis s( ull_pa h): 152. execu able = ull_pa h 153. else: 154. execu able = None 155. else: 156. execu able = None 157. excep Excep ion as e: 158. logging.ge Logge ('applica ion').e o (e) 159. execu able = None 160. e u n execu able 161. 162. 163. #Allow o ge p ocess by PID 164. de ge _p ocess_execu able(sel , pid): 165. 166. i no pid o pid == 4: 167. e u n None 168. 169. y: 170. handle = win32api.OpenP ocess(win32con.PROCESS_ALL_ACCESS, False, pi d) 171. execu able = win32p ocess.Ge ModuleFileNameEx(handle,0) 172. win32api.CloseHandle(handle) 173. i " Sys emRoo ".lowe () in execu able.lowe (): 174. execu able = None 175. i " ?? " in execu able: 176. execu able = execu able. eplace(" ?? ", "") 177. 178. excep Excep ion as e: 179. logging.ge Logge ('applica ion').e o (e) 180. execu able = None 181. e u n execu able 182. 183. 184. # Allow o ge execu able 185. de ge _execu able(sel , p ocess, pid, name, commandLine, desc ip ion): 186. 187. y: 188. 189. execu able = p ocess.Execu ablePa h 190. 191. i no execu able: 192. 131 193. # T y o ge execu able by PID 194. execu able = sel .ge _p ocess_execu able(pid) 195. 196. i no execu able: 197. execu able = p ocess.Execu ablePa h 198. 199. i no execu able: 200. # T y o ge execu able by name 201. execu able = sel .ge _p ocess_execu able_by_name(name) 202. 203. i no execu able: 204. 205. i commandLine: 206. # T y o ge execu able by name and CLI 207. execu able = sel .ge _p ocess_execu able_by_name(name, com mandLine) 208. 209. i no execu able: 210. 211. i commandLine: 212. # T y o ge execu able by desc ip ion and CLI 213. execu able = sel .ge _p ocess_execu able_by_name(desc ip i on, commandLine) 214. 215. i no execu able: 216. e u n None 217. else: 218. e u n execu able 219. excep : 220. pass 132 con olle s/ asks/windows/Dele ionP ocessTask.py 1. impo json 2. impo logging 3. impo ime 4. impo wmi 5. impo py honcom 6. om con olle s. asks.Task impo Task 7. om manage s.QueueManage impo QueueManage 8. 9. 10. class Dele ionP ocessTask(Task): 11. 12. de p epa eImpl(sel , con ig=None): 13. pass 14. 15. de doTaskImpl(sel ): 16. 17. y: 18. py honcom.CoIni ialize() 19. 20. connec ion = wmi.WMI() 21. 22. wa che = connec ion.Win32_P ocess.wa ch_ o ("dele ion") 23. 24. while sel .s a us is Task.S a us.RUNNING: 25. y: 26. dele edP ocess = wa che () 27. 28. e en = dic () 29. e en ['namespace_uuid'] = Task.clien _id 30. e en ['endpoin _uuid'] = Task.clien _id 31. e en [' ype'] = 'p ocess' 32. e en ['ac ion'] = 'dele ion' 33. e en ['name'] = dele edP ocess.Cap ion 34. e en ['pid'] = dele edP ocess.P ocessID 35. e en [' imes amp'] = in ( ime. ime()) 36. 37. json_e en = json.dumps(e en ) 38. 39. logging.ge Logge ('binnacle').in o(json_e en ) 40. 41. # C ea e new ka ka message 42. ka ka_message = dic () 43. ka ka_message[' opic'] = ' b_ioc' 44. ka ka_message['con en '] = json_e en 45. 46. # Pu message in ka ka queue 47. QueueManage .pu OnQueue('ka ka', ka ka_message) 48. 49. excep Excep ion as e: 50. logging.ge Logge ('applica ion').e o (e) 51. con inue 52. 53. excep Excep ion as e: 54. logging.ge Logge ('applica ion').e o (e) 55. 56. inally: 57. py honcom.CoUnini ialize() 58. 59. de shu downImpl(sel ): 60. pass con olle s/ asks/windows/WebP ocessTask.py 133 1. impo json 2. impo logging 3. impo ime 4. impo psu il 5. impo wmi 6. impo py honcom 7. om con olle s. asks.Task impo Task 8. om manage s.QueueManage impo QueueManage 9. 10. 11. class WebP ocessTask(Task): 12. 13. de p epa eImpl(sel , con ig=None): 14. pass 15. 16. de doTaskImpl(sel ): 17. 18. y: 19. py honcom.CoIni ialize() 20. connec ion = wmi.WMI() 21. #Se inicia la moni o icion de p ocesos en iempo eal, en es e caso se moni o iza an los p ocesos que se c ean. 22. wa che = connec ion.Win32_P ocess.wa ch_ o ("c ea ion") 23. 24. while sel .s a us is Task.S a us.RUNNING: 25. y: 26. #Cuando un nue o p oceso se c ee en el sis ema en a en el y an e io y cap u amos el p oceso c eado. 27. new_p ocess = wa che () 28. 29. y: 30. pa en _p ocess = psu il.P ocess(new_p ocess.Pa en P ocessId) 31. soon_p ocess = psu il.P ocess(new_p ocess.P ocessID) 32. connec ions_opened = '' 33. y: 34. i pa en _p ocess: 35. #si el p oceso pad e exis e, cap u amos sus conexiones d e ed. 36. #Si el p oceso es de ed end a conexiones, sino da a un e o y se igno a a el p oceso. 37. connec ions_opened = pa en _p ocess.connec ions(kind="al l") 38. else: 39. i soon_p ocess: 40. connec ions_opened = soon_p ocess.connec ions(kind=" all") 41. 42. ip_lis = [] 43. ip_non_ epea _lis = [] 44. 45. o upla in connec ions_opened: 46. # eco emos conexion a conexion, se coge la IP y pue o y se me e en la lis a de IP. 47. y: 48. conexion = upla[4] 49. ip = conexion[0] 50. pue o = conexion[1] 51. i ip != None and ip !='' and pue o != None and pue o !='': 52. ip_s ing = s (ip) + ":" + s (pue o) 53. ip_lis .append(ip_s ing) 54. excep : 55. con inue 56. #Reco emos la lis a de conexiones pa a coge las no epe id as, ya que hay algunas edundan es. 57. #Pa a sabe si es a epe ida usa emos una bande a a 0 o 1. 58. o elemen in ip_lis : 134 59. lag = 0 60. o elemen _ip in ip_non_ epea _lis : 61. i elemen == elemen _ip: 62. lag = 1 63. #Si la conexion no se epi e se gua da en la lis a de la s no epe idas. 64. i lag == 0: 65. ip_non_ epea _lis .append(elemen ) 66. new_s ing = '' 67. #Como cada p oceso puede ene a ias conexiones pues en iam os a la bi aco a odas. 68. o ip_connec ion in ip_non_ epea _lis : 69. new_s ing += s (ip_connec ion) + '; ' 70. 71. i len(ip_non_ epea _lis ) > 0: 72. 73. e en = dic () 74. e en ['namespace_uuid'] = s (Task.clien _id) 75. e en ['endpoin _uuid'] = s (Task.clien _id) 76. e en [' ype'] = 'connec ion' 77. e en ['applica ion'] = s (new_p ocess.Cap ion) 78. e en ['pid'] = new_p ocess.P ocessID 79. e en ['connec ions'] = new_s ing 80. e en [' imes amp'] = in ( ime. ime()) 81. 82. json_e en = json.dumps(e en ) 83. 84. logging.ge Logge ('binnacle').in o(json_e en ) 85. logging.ge Logge ('applica ion').debug('da a o ka ka : {0}'. o ma (json_e en )) 86. 87. # C ea e new ka ka message 88. ka ka_message = dic () 89. ka ka_message[' opic'] = ' b_ioc' 90. ka ka_message['con en '] = json_e en 91. 92. # Pu message in ka ka queue 93. QueueManage .pu OnQueue('ka ka', ka ka_message) 94. 95. excep Excep ion as e: 96. logging.ge Logge ('applica ion').e o (e) 97. con inue 98. 99. excep Excep ion as e: 100. logging.ge Logge ('applica ion').e o (e) 101. con inue 102. 103. excep Excep ion as e: 104. logging.ge Logge ('applica ion').e o (e) 105. con inue 106. 107. excep Excep ion as e: 108. logging.ge Logge ('applica ion').e o (e) 109. 110. inally: 111. py honcom.CoUnini ialize() 112. 113. 114. de shu downImpl(sel ): 115. pass con olle s/ asks/gene al/Ka kaSende Task.py 1. impo logging 135 2. impo sys 3. 4. om con olle s. asks.Task impo Task 5. om manage s.Ka kaManage impo Ka kaManage 6. 7. om manage s.QueueManage impo QueueManage 8. 9. class Ka kaSende Task(Task): 10. 11. 12. de p epa eImpl(sel ): 13. 14. # c ea e new ka ka manage 15. y: 16. sel .ka kaManage = Ka kaManage (sel .con igu a ion) 17. excep Excep ion as e: 18. logging.ge Logge ('applica ion').e o (e) 19. 20. de doTaskImpl(sel ): 21. y: 22. while sel .s a us is Task.S a us.RUNNING: 23. message = QueueManage .ge I emF omQueue('ka ka') 24. logging.ge Logge ('applica ion').debug('Recei ed message : {0}'. o ma ( message)) 25. sel .ka kaManage .sendMessage(key=Task.clien _id, msg=message['con en ' ], opic=message[' opic']) 26. excep Excep ion as e: 27. logging.ge Logge ('applica ion').e o (e) 28. 29. 30. de shu downImpl(sel ): 31. pass