scieee Science in your language
[es] (orig)

redBorder Malware EndPoint

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.

Read accessible full text

redBorder Malware EndPoint

Author: Rodríguez García, Adrián
Year: 2016
Source: https://idus.us.es/bitstreams/3e075ab8-12cc-40e3-bb39-84a575e20d7a/download
- 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