Академический Документы
Профессиональный Документы
Культура Документы
Julio, 2014
Julio, 2014
TRIBUNAL:
Presidente:
Vocal:
Secretario:
FECHA DE DEFENSA:
CALIFICACIN:
PRESIDENTE
Fdo.:
VOCAL
SECRETARIO
Fdo.:
Fdo.:
ii
Resumen
La seguridad informtica es todava un tema pendiente para muchas empresas en Espaa.
Muchas de ellas an no estudian cul es su estado, y ni mucho menos realizan comprobaciones de seguridad mediante auditoras. Este software est destinado para que las empresas
de auditora reflejen al cliente los problemas de seguridad que se encuentran en su sistema,
como paso previo a una auditora real, para que haga patente sus deficiencias ante la duda
del cliente de si es beneficioso este tipo de examen para su empresa que, mediante un entorno automatizado, quite la desconfianza (por desconocimiento) del cliente en auditoras de
seguridad.
La idea nace de la cuestin del desconocimiento y, desafortunadamente, la nica manera
de conocer esos problemas es realizando una auditora en si, por lo que nos encontramos
ante un crculo vicioso. Por lo tanto, la cuestin que quiere cubrir este trabajo fin de grado es
realizar el primer anlisis del sistema, siendo automtico, llamativo y que pueda realizar el
responsable de la empresa en cuestin, ya que su fin es puramente contractual con la empresa
de auditora, para que ste sirva de prueba de concepto.
Esta herramienta debe mostrar de la forma ms visual posible si existen algunos problemas frecuentes de seguridad, y para ello se usar internamente un abanico de herramientas
de auditora ya existente, con mtodos de ataque bien conocidos, teniendo como base las
aplicaciones disponibles en la distribucin Kali Linux, como por ejemplo Metasploit.
Para la gestin de la aplicacin se crear un servidor web, para facilitar la gestin desde
cualquier dispositivo y se realizar utilizando la pila javascript denominada MEAN formada
por MongoDB, Express, AngularJS y Node.JS. Como metodologa se ha utilizado Scrum,
una metodologa agile ya que creemos que se acopla perfectamente a la situacin de desarrollo: es un proyecto con requisitos de tiempo muy altos (muy limitados), el equipo de
desarrollo es muy pequeo, el desconocimiento en la tecnologa empleada y, especialmente,
la intencin de poner en el mercado la aplicacin en el menor tiempo posible.
III
Abstract
Computer security is still an unresolved issue for many companies in Spain. Many of
them are not studying what is the condition of this yet, of course this is far for making tests
of security by audits. The destination of this software is that the audit companies would be
able to show to the clients the security problems in their systems as a previous step to a real
audit, to make obvious their faults. In case of doubt of the client about the benefits of this
test for his company, in an automatic environment, the software will be able to remove the
client distrust usually generate by ignorance in security audits.
The idea comes, in effect, from the question of ignorance and, unfortunately , the only way
to know these problems is making an audit itself, so we are in a vicious circle. Therefore,
this final project wants to cover the question of making a first test of the system, being
automatic, appealing and can be maked by the person responsable of the company himself.
Its destination is purely contractual with the audit company in orfer to be a concept test. If
there are any frequent security problems this tool should be as visual as posible. For this it
is going to be used a range of existing audit tools , with well known attack methods, taking
as a starting point the avaliable applications in Kali Linux SO, for example Metasploit. A
web server will be created for the application management, to make easy the use from any
dispositive and it will be possible using the Javascript stack known as MEAN formed by
MongoDB, Express, AngularJS, and Node.JS. The method we use is Scrum, a agile method,
considering that we think this connects perfectly to the development situation: a small project
with really big time requirements very restricted, a really small development team, the
ignorance of the technology we are employing and, specially, the intention of commercialise
the application as soon as possible.
IV
Agradecimientos
No hubiera podido finalizar este TFG sin la influencia de un gran nmero de personas que,
directamente o indirectamente, han colaborado de forma tcnica o me han dado su apoyo
en su realizacin y es por ello por lo que les agradezco de todo corazn su inters en este
proyecto.
En primer lugar, querra agradecer este proyecto al profesor Francisco Moya, director del
TFG, por su inters, colaboracin y disponibilidad. Realmente, espero algn da volver a
trabajar con l, porque no hay nada ms estimulante que trabajar con alguien que disfruta
con su trabajo.
Me gustara mencionar tambin a mis compaeros Csar Aguirre y Fernando Martn, por
todos los momentos que hemos pasado juntos en clase. Espero que algn da coincidamos
de nuevo en un futuro.
Tambin querra agradecer a mi familia y seres queridos, en especial a mis padres, que han
hecho todo lo posible para que estudie en la universidad. Pero en especial a mis hermanos
(Vctor e Ismael) por ponerme como reto concentrarme en este proyecto.
Y tambin a Eva, ya que sin su ayuda no hubiera podido alcanzar ninguna meta.
Daniel
ndice general
Resumen
III
Abstract
IV
Agradecimientos
ndice general
VI
ndice de cuadros
IX
ndice de figuras
ndice de listados
XII
Listado de acrnimos
XIII
1. Introduccin
4
6
3. Antecedentes
10
14
16
17
17
VI
18
19
3.3.1. Metasploit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
22
3.3.3. Meterpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
23
4. Mtodo
29
30
4.1.1. El manifiesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.2. Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2.1. Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
4.2.2. Artefactos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
34
34
4.3.1. Entorno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
35
36
37
5. Resultados
39
39
39
5.1.2. Iteraciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
40
41
43
45
46
46
47
6. Conclusiones
54
54
55
vii
A. Iteraciones Scrum
58
A.1. Iteracin 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
A.2. Iteracin 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
A.3. Iteracin 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
A.4. Iteracin 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
A.5. Iteracin 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
66
68
75
75
2. VERBATIM COPYING . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
3. COPYING IN QUANTITY . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
4. MODIFICATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
5. COMBINING DOCUMENTS . . . . . . . . . . . . . . . . . . . . . . . . . .
80
6. COLLECTIONS OF DOCUMENTS . . . . . . . . . . . . . . . . . . . . . .
80
81
8. TRANSLATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
9. TERMINATION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
82
82
Referencias
84
viii
ndice de cuadros
25
26
27
27
28
32
IX
ndice de figuras
1.1. Motivos por los que las pymes no invierten en seguridad. Fuente: Panda Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Porcentaje de empresas que afirman que cuentan con personas dedicadas a
la seguridad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1. Fases para la realizacin de pruebas de penetracin. Fuente: del ingls: National Institute of Standards and Technology. Es el Instituto Nacional de Normas y Tecnologa de Estados Unidos (NIST) SP800-115. . . . . . . . . . .
18
19
21
23
24
4.1. Jeff Sutherland y Ken Schwaber en el evento Scrum, alrededor del 2009 . .
31
34
41
44
49
50
51
52
53
68
69
70
70
71
71
72
72
73
73
74
74
xi
ndice de listados
5.1. Ejemplo de servidor con Express. . . . . . . . . . . . . . . . . . . . . . .
42
5.2. Al llamar a la funcin Save, se ejecuta el cdigo listado, que evala la informacin antes de ser almacenada en la Base de datos (BD). . . . . . . . . . .
42
48
66
66
67
67
XII
Listado de acrnimos
API Application Programming Interface
ASLR Address Space Layout Randomization
ATA Serial Advanced Technology Attachment
BD Base de datos
CRUD Create, Read, Update y Delete
CSS Cascading Style Sheets
GNU GNU is Not Unix
IDS Sistemas de detenccin de Intrusin
DEP Sistemas de prevencin de ejecucin de datos
DNS Domain Name server
DSDM Dynamic Systems Development Method
GUI Graphical user interface
HTML HyperText Markup Language
HTTP Hypertext Transfer Protocol
IDE Integrated Development Environment
IP Internet Protocol
IPS Intrusion Prevention System
JSON JavaScript Object Notation
LAN Local Area Network
MVC Modelo Vista Controlador
NIST del ingls: National Institute of Standards and Technology. Es el Instituto Nacional de Normas
XIII
xiv
Captulo 1
Introduccin
la aparicin de Creeper, el primer virus para computadores que infect por primera vez un equipo informtico [CRE11], los programas maliciosos han ido aumentando de una manera increble, casi paralelamente junto al crecimiento de la potencia de
cmputo. Y es que la inofensividad del primer virus, que mostraba tan solo el mensaje Im
the creeper, catch me if you can! (en espaol: soy la Enredadera, cgeme si puedes) ha
quedado muy atrs. No obstante, los dispositivos informticos se han abierto paso en todos
los mbitos ya que si la tecnologa es beneficiosa para las personas de a pie, lo es an ms
para las empresas, que vuelcan su gestin o incluso directamente su funcionamiento en los
dispositivos informticos. Es tal la presencia de los computadores en las empresas que segn AETIC [VVA11] la utilizacin en Espaa alcanza el 96,2 % (en el ao 2011) con un
incremento de casi el 6 % respecto a los tres anteriores aos.
ESDE
Figura 1.1: Motivos por los que las pymes no invierten en seguridad. Fuente: Panda Security.
Figura 1.2: Porcentaje de empresas que afirman que cuentan con personas dedicadas a la
seguridad.
Personal de seguridad
Microempresa
Pequea empresa
Mediana empresa
3,9
5,5
12,4
15,9
34,9
44,8
0,5
32,7
44,3
15,8
1,7
50,4
29,4
7,2
0,5
Cuadro 1.1: Personal dedicado en pymes en la seguridad informtica en tantos por ciento
carencias hay en las pymes. Por un lado, existe una falsa sensacin de seguridad, ya que
se da la falsa creencia de que los ataques de seguridad tienen como objetivo las grandes
compaas o entidades y que un incidente grave es remoto y, por ese motivo, no necesitan
disponer de ningn procedimiento que permita recuperarse despus del ataque.
Tampoco existe un conocimiento o formacin suficiente en gestin de seguridad en ciertas
reas de la empresa, que se encuentra enfocado excesivamente en la dimensin tecnolgica.
Con ello, se refiere a que la preparacin nicamente se realiza desde el punto de vista del
componente tecnolgico, pero existe una carencia en buenas prcticas y estrategias en la
gestin de imprevistos. La ISO 270011 estudia esta visin global de los sistemas, donde
permite a las organizaciones proporcionar ciertas garantas sobre los servicios ofrecidos.
1
htm
Captulo 2
L desarrollo de esta aplicacin con xito requiere una especificacin de objetivos inicial
slido para formar una base firme de la que filtrar los requisitos de la aplicacin. Por lo
tanto, se ha distinguido entre un objetivo general y varios especficos que se debe cumplir.
Captulo 3
Antecedentes
pruebas de penetracin, del ingls Penetration Testing, pueden ser definidas como
un anlisis legal y autorizado que examina las vulnerabilidades, pero que tambin las
explota, proporcionando una prueba de concepto de un ataque real y as demostrar las posibilidades reales que podra tener una persona externa (o interna) con la intencin de comprometer el sistema. Este tipo de pruebas se han convertido en el ncleo principal del escenario
actual para abarcar los aspectos fundamentales de la seguridad, realizando un anlisis en una
situacin de la vida real [Sin12].
AS
as comparar el comportamiento real del esperado. Durante este paso se realiza el primer
avance en la evaluacin, ya que en las dos fases anteriores no se lleva a cabo una ejecucin
de pruebas, sino un anlisis del comportamiento del equipo y dispositivos de la empresa.
Por lo tanto, de las tres categoras mencionadas, nos centraremos en el proceso de testing,
ya que es aquel para el que el presente trabajo est centrado. Para llevar a cabo esta fase de
la evaluacin de la seguridad debe realizarse una serie de tcnicas de anlisis que facilitan el
xito de la evaluacin. Dichas tcnicas estn clasificadas dependiendo de su objetivo, como
veremos ms adelante basndonos en la publicacin SP800-115 [SSCO08].
3.1.1
Tcnicas de examen
3.1.2
Este tipo de tcnicas son tambin muy importantes a la hora de la evaluacin de seguridad
en una organizacin, ya que en esta fase se va a iniciar la etapa principal: la identificacin de
objetivos y las tcnicas para sus anlisis. Veremos qu dispositivos estn activos junto con
sus respectivos puertos y servicios que permiten, por ejemplo, crear mapas de la topologa
de red, configuracin de IDS o firewalls, etctera. Las tareas que se deben llevar a cabo en la
identificacin de objetivos son varias y es el evaluador el que debe elegir cul es la ms adecuada para ser sigiloso o para aumentar su porcentaje de xito en obtencin de informacin.
Como ejemplo, en el anlisis de la red tenemos a nuestra disposicin varias herramientas
que nos permiten analizar paquetes sospechosos (como SYN/FIN). Por otra parte, tambin
es aconsejable un escaneo de vulnerabilidades o escaneo de redes wireless. En el cuadro 3.3
vemos un resumen de las tcnicas a emplear y sus objetivos.
Por ltimo, en el cuadro 3.4 se resume qu conjunto de competencias debera adquirir cada
evaluador para conseguir llevar a cabo esta tarea.
3.1.3
11
aplicable. Por otro lado, la frecuencia de las evaluaciones tambin son parte de una
correcta organizacin de las evaluaciones ya que puede generar un decaimiento no llevarse a cabo de forma peridica si se produce una actualizacin o correccin antes de
la realizacin de la prueba.
3. Seleccionando y personalizando las tcnicas de examen: Existen muchos factores
que determinan qu tcnicas deberan ser usadas para una evaluacin en particular.
Dichos factores pueden ser directamente los objetivos, las clases de procedimiento de
los cuales se pueden obtener informacin en los que se apoyan otros procedimientos
y las tcnicas apropiadas dentro para cada clase de objetivo. Algunas tcnicas tambin requieren que la organizacin determine la opinin personal de los asesores (por
ejemplo, un anlisis interno versus externo).
4. Determinar la logstica de la evaluacin. Con ello nos referimos a identificar todos
los recursos, incluyendo al equipo de evaluacin y a escoger el entorno y localizaciones
donde se requiere realizar el anlisis.
5. Plan de desarrollo de la evaluacin Es necesario desarrollar una documentacin de
las actividades previstas a ejecutar en el anlisis y tambin de cualquier tipo de informacin relacionada, especificando qu reglas y lmites que los evaluadores deben
cumplir. El plan debe identificar los sistemas y redes a ser examinados, el tipo y el
nivel de las pruebas permitidas, los detalles logsticos de la evaluacin, requisitos de
manipulacin de datos y una orientacin para el manejo de incidentes.
6. Consideraciones legales. Antes de la ejecucin de anlisis, las organizaciones deben
examinar las consecuencias legales que se pudiera ocasionar, especialmente si existe
algn procedimiento que sea especialmente intrusivo (por ejemplo, en test de penetracin) o bien si la evaluacin es llevada a cabo por una entidad externa. El departamento
legal debera analizar el plan de anlisis, abarcando especialmente en lo que concierne
a la privacidad.
Ejecucin del anlisis
Al ejecutar una evaluacin de seguridad, algunas vulnerabilidades son identificadas por los
procedimientos elegidos en la fase de planificacin. Por lo tanto, durante el anlisis se debe
seguir una coordinacin, un plan de gestin de incidentes, a la vez de estudiar cmo gestionar
la recogida de datos, almacenamiento, transmisin y destruccin de ficheros relacionados con
la evaluacin.
1. Coordinacin. Como se ha mencionado anteriormente, es necesario una coordinacin
entre las entidades de la organizacin, que debe ser fijado en el ROE (plan de evaluacin). Un ejemplo de organizacin puede ser no realizar una evaluacin en el momento
que se realiza una actualizacin, ya sea de cambiar de Hardware o Software, puesto
que la evaluacin puede ser alterada.
12
2. Evaluacin. A la hora de realizar una evaluacin, nos podemos encontrar con varios
retos o incidentes que tenemos que hacer frente.
Uno de ellos es la resistencia por parte de los usuarios o administradores de redes o
sistemas ante la evaluacin, otra puede ser la falta de realismo ya que los usuarios o
administradores pueden haber modificado su sistema para ser resistente a las pruebas,
por lo que puede ser un motivo para realizar un anlisis sin aviso previo. Otra barrera
a la hora de realizar la evaluacin es el tiempo es que se ejecute bajo un plazo de
tiempo demasiado corto, algo a tener en cuenta ya que los evaluadores estn limitados
a marcos de tiempo muy pequeos, mientras los atacantes no tienen tales limitaciones.
3. Anlisis. Cuando nos referimos a anlisis, se quiere dar a entender al proceso que se
realiza de estudiar los resultados a lo largo de la ejecucin de las evaluaciones. Es por
ello por lo que los anlisis deben ser llevados a cabo durante la ejecucin, ya que se
debe descartar los falsos positivos e interpretar los resultados.
4. Manipulacin de datos.
El mtodo por el cual los datos de una organizacin se maneja durante toda la evaluacin es fundamental para garantizar la proteccin de la informacin confidencial,
incluida la arquitectura del sistema, configuraciones de seguridad y vulnerabilidades
del sistema. Las organizaciones deben garantizar la adecuada documentacin de los
requisitos para el manejo de datos en el plan de evaluacin o ROE, y se adhieren a
sus polticas de gobierno sobre el manejo de las vulnerabilidades del sistema. Se debe establecer mtodos para la recogida, almacenamiento y transmisin de datos de la
evaluacin durante un compromiso, as como para el almacenamiento y la destruccin
de los datos una vez que una evaluacin es completa.
5. Almacenamiento de datos. Debemos tener un especial trato con los datos que se van
recolectando segn avanza la evaluacin, incluyendo vulnerabilidades, resultados de
anlisis y recomendaciones de mitigacin. Una publicacin inapropiada de la informacin puede daar a la organizacin, por ejemplo en su reputacin, e incrementar la
posibilidad de explotacin externa.
6. Transmisin de datos y su destruccin. Podra ser necesario enviar datos de las evaluaciones a travs de la red interna o tambin externa. Asegurar la transmisin de
dichos datos debe estar garantizada mediante cifrado (Virtual Private Network (VPN)
o cualquier otro tipo de modo). Por otro lado, tambin se debe garantizar la destruccin de datos. Concretamente existe un SP, el 800-88, donde se aborda este tema. De
forma resumida, lo que intenta mostrar esta publicacin es que se debe tener precaucin con los los soportes fsicos y su reciclaje, pero tambin con los datos digitales,
los datos acumulados. Como ejemplo, menciona que para la eliminacin recomienda
la ejecucin de Secure Erase (para Serial Advanced Technology Attachment (ATA))
13
para un borrado completo que impida la recuperacin. Tambin puede realizarse una
destruccin de los datos mediante incineracin, pulverizacin, trituracin, etc.
Post-testing
Una vez realizada la fase de ejecucin, iniciamos la fase de post-testing. En este apartado
se mostrar una serie de acciones que, utilizando los datos obtenidos previamente, deberan
ser ejecutados para mejorar su seguridad. Entre ellos destacan la mitigacin, la realizacin
de un informe y soluciones.
1. Recomendaciones de mitigacin. Existen recomendaciones tcnicas y no tcnicas,
que se centran en cmo los procesos de la organizacin son gestionados. Por otro lado,
entre las recomendaciones tcnicas, podemos realizar por ejemplo la aplicacin de un
parche y entre las no tcnicas, el modo de gestin de dicho parche. En el SP 800-53,
encontramos una gran lista de recomendaciones de mitigacin como modificaciones
de procedimientos, cambios en la arquitectura de la seguridad, parches en el SO y
aplicaciones, etctera.
2. Informe. Una vez realizado el anlisis el informe debe identificar el estado de la red,
del sistema y de las vulnerabilidades de la organizacin, as como las acciones recomendadas para su mitigacin. Los informes pueden ser organizados dependiendo
del pblico al que se dirige, con ello se quiere decir que es recomendable un informe
diferente para ingenieros de seguridad, gestin de la configuracin o personal tcnico.
3. Soluciones. El primer paso para realizar la mitigacin es estudiar las recomendaciones
redactadas en el paso antes mencionado, pero se recomienda que se apliquen previamente en un entorno de prueba. En un segundo lugar, debe haber una coordinacin
entre las personas involucradas en los cambios pendientes para medir su impacto en
el entorno y las operaciones a realizar. En tercer lugar, una vez aplicados los cambios,
una auditora del sistema probando el sistema y sus componentes para as tener una
verificacin tcnica de los cambios realizados. Tambin es aconsejable volver a testar
el sistema para validar las acciones de mitigacin. Por ltimo, es importante actualizar
el POA&M para identificar las actividades que no se han cumplido, se han realizado
parcialmente o dependen de una tercera persona.
3.1.4
Las pruebas a ejecutar sobre un objetivo puede realizarse de varias formas. Depender tanto de la posicin del atacante como el conocimiento que tiene el evaluador sobre el objetivo
y el entorno que le rodea.
14
Externo e interno
Cuando hablamos de una posicin interna o un ataque externo, nos referimos a si nos
encontramos dentro del permetro de seguridad imaginario que rodea a la administracin y
asla de las amenazas del exterior. Normalmente, la parte externa suele ser Internet y la
parte interna de la organizacin intranet y como se puede deducir, los test de prueba estn
condicionados a esta situacin ya que normalmente la seguridad dentro de la organizacin
es ms dbil que en el lado exterior.
El testeo de la seguridad en el lado externo ofrece la capacidad de ver el comportamiento de la seguridad en el sistema como si fuera un atacante externo. Para la comprobacin
externa podemos utilizar tcnicas como buscar datos de registro pblico de un dominio, la
informacin DNS de un servidor, publicaciones en grupos de noticias, nombres del sistema, direcciones IP, etc. A continuacin podramos buscar servicios o puertos activos de un
posible firewall que crea el permetro, a la vez de ver qu informacin es filtrada, etc.
Para el lado interno los evaluadores se encuentran en una situacin similar a la que un
atacante haya burlado el permetro de defensa. Estos tipos de pruebas revelan vulnerabilidades que se podran aprovechar y demuestra el dao potencial que este tipo de atacante
podra realizar. Por otra parte, el nivel de acceso del asesor, que normalmente es el de un
usuario general, conlleva ejecutar las pruebas a su nivel pero, dependiendo de la naturaleza
del test, podra incrementar sus privilegios de acceso o conseguir el nivel de administrador
del sistema. Sin embargo, tambin es comn ejecutar las pruebas con diferentes niveles de
privilegios para as abarcar cualquier frente.
Encubierto o pblico: White hat y Black hat
A la hora de ejecutar una serie de pruebas, tambin se pueden realizar desde dos puntos de
vista que son vitales a la hora de su ejecucin, ya que no es lo mismo realizar comprobaciones
de seguridad si los empleados de una hipottica empresa son conocedores del mismo o si
no lo son. Cuando son conocedores de las pruebas que se estn realizando, se le dominan
pruebas White hat. El personal Tecnologas de la Informacin (TI) es plenamente consciente
de ello y de que ellos mismos estn formando parte de la prueba (de forma activa o pasiva).
Estas pruebas tambin pueden ayudar al personal indicando cmo llevar a cabo la misma
prueba o estudiando nuevas formas de evaluar sus propios sistemas que configuran.
Pero tambin existe otro tipo de pruebas, que son las pruebas encubiertas. Son aquellas
donde los empleados de la organizacin desconocen que se est sometiendo una prueba de
seguridad en el sistema. Tambin es llamado Black hat a este proceso y a menudo es
llevado a cabo por organizaciones que designan a un tercero para llevar a cabo esta tarea
con conocimiento y consentimiento de la direccin. En esta situacin esta tercera persona o
empresa, designa un agente para el equipo TI, direccin, etc. que media en las actividades y
15
facilita la comunicacin. Como se puede imaginar, este tipo de test es bastante beneficioso
para comprobar los controles tcnicos de seguridad, la respuesta del equipo a los incidentes
de seguridad y el conocimiento del equipo e implementacin de la poltica de seguridad de
la organizacin.
Con las pruebas Black hat, analizamos el dao que puede generar un atacante que busca
vulnerabilidades. Pero por otro lado, suele ser un proceso que suele llevar mucho tiempo
y suele ser costoso debido a los requisitos que conlleva el sigilo. Para llevar a cabo en un
entorno de cautela, el equipo de pruebas tendr que bajar su nivel de accin para evitar estar
bajo el radar del equipo de seguridad de la organizacin. Por contra, las pruebas White
hat son menos costosas y conllevan menos riesgos que las pruebas encubiertas pero, sin
embargo, las pruebas encubiertas demuestran una situacin ms real ya que los administradores no han aumentado su consciencia en la prueba y los resultados obtenidos son garanta
de haber ocurrido como un da cotidiano.
3.1.5
A la hora de realizar pruebas de seguridad en una organizacin, existen una serie de metodologas que dan capacidad de reutilizacin y documentacin a las pruebas, beneficioso
ya que permite proporcionar consistencia y estructura a los tests de seguridad (minimizando
los riesgos de la prueba), acelera un hipottico cambio del equipo de evaluacin y tambin aborda las limitaciones de recursos relacionados con las pruebas. Destacaremos dos de
ellas, la realizada por el NIST publicado en la SP 800-373 y otra realizada por la del ingls:
Open Source Security Testing Methodology Manual. En espaol: Manual de la Metodologa
Abierta de Testeo de Seguridad (OSSTMM)4
SP 800-37. La publicacin especial del NIST 800-37, es una gua para para aplicar la gestin de riesgos en sistemas de la informacin federales de Estados Unidos,
desarrollado por Joint Task Force Transformation Initiative Working Group, que intenta transformar la certificacin y acreditacin tradicional (C&A, Certification and
Accreditation en ingls) en un proceso de seis etapas para gestionar los riesgos denominado Risk Management Framework (RMF) [Div10]:
NIST
16
3.2.1
Test de penetracin
Los test de penetracin son pruebas de seguridad en las cuales los asesores atacan mediante
tcnicas utilizadas en el mundo real para identificar mtodos para eludir las medidas de
seguridad en una aplicacin, sistema o red [SSCO08]. Las pruebas de penetracin puedes
ser tiles para:
17
3.2.2
Figura 3.1: Fases para la realizacin de pruebas de penetracin. Fuente: NIST SP800-115.
Planificacin. No se realiza ninguna prueba durante esta fase, pero se identifican las
reglas y se fijan los objetivos de las pruebas.
Anlisis. En esta fase se incluyen dos partes. En la primera se llevan a cabo las pruebas
normales y se obtiene informacin y se escanea las redes. Para ms informacin sobre
las tcnicas de bsqueda de informacin, puedes encontrarla en el captulo 3.1.1.
Durante la segunda parte, arranca la etapa de anlisis e identificacin de objetivos(ver
el captulo 3.1.2).
Ataque. Es la fase principal de un test de penetracin ya que es el proceso en el cual
se ejecutan los exploits. Algunos de ellos permitirn escalar privilegios en el sistema
o red para obtener acceso a recursos adicionales. Si esto ocurre, se requieren anlisis
y pruebas adicionales para determinar el verdadero nivel de riesgo para la red, tales
como la identificacin de los tipos de informacin que se puede extraer, cambiar o
eliminar del sistema.
Informe. Esta fase se produce casi de forma simultnea con las otras dos fases, ya que
en la fase de planificacin se ha desarrollado el plan de evaluacin. En la fase de anlisis y ataque, los log escritos se mantienen e informes peridicos son realizados para
18
los administradores del sistema o gestores. Como conclusin del test, un informe es
desarrollado para describir e identificar vulnerabilidades, presentar un nivel de riesgo
y dar soluciones para disminuir las debilidades encontradas.
3.3.1
Metasploit
Metasploit es un framework Open Source de seguridad informtica desarrollado por Rapid7 destinado a localizar y explotar fallos de seguridad. Su objetivo es facilitar en gran
medida los penetration tests o test de penetracin. Estos test de penetracin involucran
un anlisis activo del sistema en todos los sentidos ya que envuelve no slo a los posibles
fallos de seguridad, sino tambin a los propios errores humanos generados por ingeniera
social [DK11].
Nace en 2003 de la mano de H. D. Moore y fue escrito en Perl, pero luego fue adquirido
por la empresa Rapid7 en 2007 y fue reescrito desde cero en Ruby. Desde entonces ha estado
disponible en dos versiones del software (generalizando), una de pago y otra gratuita, cuya
19
20
21
3.3.2
Metasploit API
Metasploit dispone de una Application Programming Interface (API) para los desarrolladores que se ejecuta en el puerto 3790 TCP, que es accedido mediante el protocolo Hypertext
Transfer Protocol (HTTP) sobre Secure Sockets Layer (SSL). El formato que utiliza es el de
Message-pack, un formato JavaScript Object Notation (JSON) de intercambio de informacin que representa la estructura de datos como arrays, intentando sus desarrolladores que
sea tan compacto como sea posible [Sin12].
Como cualquier peticin HTTP, recibe una serie de cdigos para informar del xito o
fracaso de la ejecucin. As pues los ms conocidos son 200, peticin ejecutada con xito o
500, la peticin ha devuelto un error.
Metasploit API da la oportunidad a los desarrolladores de ejecutar cualquier tipo de comando sobre Metasploit como si estuviramos trabajando con MSFConsole. Ya que permite
ejecutar comandos sobre sesiones, crear consolas, etctera [Rap13].
22
3.3.3
Meterpreter
Meterpreter es un intrprete de comandos para Metasploit pero que tambin acta como
Payload utilizando inyeccin de una DLL en memoria y un formato en arquitectura nativa de
un objeto compartido. Es una herramienta muy sigilosa y potente ya que, por ejemplo, funciona en el contexto del proceso vulnerable, por lo que no crea nuevos procesos [Sin12].
Como pasos para la ejecucin del intrprete de comandos, a continuacin se enumera el
proceso que Meterpreter realiza. Vemos en 3.4 un pequeo resumen.
Se distribuye en imgenes ISO y contiene una gran variedad de herramientas para el testeo
de seguridad, anlisis de redes, sniffing, cracking de contraseas, testeo de acceso remoto,
anlisis de Bluetooth, pruebas de penetracin, etc. En el cuadro 3.5 puede consultarse un resumen de las herramientas ms conocidas clasificadas para diferentes anlisis de BackTrack
5, muy similar a Kali Linux, como ejemplo de la variedad de herramientas que contiene.
24
Tcnica
Competencias
Examen de la documentacin
Analizar el log
25
Tcnica
Examen de la documentacin
Analizar el log
Anlisis de la configuracin
del sistema
Sniffing en la red
26
Tcnica
Competencias
Bsqueda de red
Anlisis de Wireless
Sniffing en la red
Tcnica
Bsqueda de red
Conocimiento de redes y de la pila TCP/IP. Habilidad para usar herramientas tanto pasivas como
activas de red.
Conocimiento de TCP/IP y conocimiento de redes.
Conocimiento de puertos para una gran variedad
de sistemas operativos. Habilidad en el uso de herramientas de escaneo de puertos. Habilidad para
interpretar los resultados.
Conocimiento de TCP/IP y conocimiento de redes.. Conocimiento de puertos, protocolos, servicios y vulnerabilidades para una gran variedad de
sistemas operativos. Habilidad para usar vulnerabilidades automatizadas e interpretar y analizar los
resultados.
Conocimiento general de transmisiones de radio y
computacin adems de conocimiento especfico
en protocolos wireless, servicios y arquitecturas.
Habilidad para usar escaneo de wireless automtico y herramientas de sniffing.
Escaneo de vulnerabilidades
Anlisis de Wireless
27
Network Sniffing
Review
Dsniff, Ettercap, Kismet, Mailsnarf, Msgsnarf,
Ntop, Phoss, SinFP, SMB Sniffer y Wireshark
Autopsy, Foremost, RootkitHunter y Sleuthkit.
Comprobacin de integridad
de archivos
Identificacin del objetivo y anlisis
Testeo de seguridad en aplica- CIRT Fuzzer, Fuzzer 1.2, NetSed, Paros Proxy y
ciones
Peach
Estudio de la red
Autonomous System Scanner, Ettercap, Firewalk,
Netdiscover, Netenum, Netmask, Nmap, P0f,
Tctrace y Umit
Identificacin de servicios y Amap, AutoScan, Netdiscover, Nmap, P0f, Umit,
puertos de la red
and UnicornScan
Escaneo de vulnerabilidades
Firewalk, GFI LANguard, Hydra, Metasploit,
Nmap, Paros Proxy, Snort y SuperScan
Wireless Scanning
Airsnarf, Airsnort, BdAddr, Bluesnarfer, Btscanner, FakeAP, GFI LANguard, Kismet y WifiTAP
Validacin de las vulnerabilidades del objetivo
Password Cracking
Hydra, John the Ripper, RainbowCrack, Rcrack,
SIPcrack, SIPdump, TFTP-Brute, THC PPTP, VNCrack y WebCrack
Testeo de acceso remoto
IKEProbe, IKE-Scan, PSK-Crack y VNC_bypauth
Test de penetracin
Driftnet, Dsniff, Ettercap, Kismet, Metasploit,
Nmap, Ntop, SinFP, SMB Sniffer y Wireshark
28
Captulo 4
Mtodo
El desarrollo agile surge en la dcada de los aos noventa debido a que, aunque las notaciones de modelado y las herramientas eran clave del xito para un proyecto de software,
an se requera una metodologa de software que indicase buenas directivas para llevarse a
cabo el proyecto. Hasta ese momento, las metodologas que se utilizaban tenan una rigurosa
definicin de roles, actividades y artefactos (incluyendo un modelado y una documentacin
muy detallados) que, no obstante, son necesarios hoy en da, ya que tenemos que hacer frente en muchas ocasiones a proyectos de gran envergadura que requieren gestionar al detalle
tiempo y recursos. Sin embargo, segn avanzaba la indispensabilidad del software, entraban
en el escenario nuevas situaciones en las cuales no encajaba totalmente las metodologas
tradicionales [Pal14].
Es aqu donde entra el desarrollo gil, ya que muchos de los proyectos actuales son muy
cambiantes y se exige reducir los tiempos de desarrollo, pero manteniendo una alta calidad.
El cliente parte de visin medianamente clara, pero debido a la velocidad en la que se mueve
su sector de negocio y tambin al nivel de innovacin que requiere, le es imposible predecir con detalle cmo ser el resultado final. Debido a esta situacin, muchos desarrolladores
prefieren prescindir de la elaborada documentacin de las metodologas antes mencionadas
(con los riesgos que conlleva), para as cumplir con el tiempo especificado para sus proyectos. Por lo tanto Agile nace para esta situacin, aportando una simplificacin, pero que no
renuncia a las prcticas principales para preservar la calidad del software. Por su contra, muchos equipos que utilizan hasta la fecha las metodologas tradicionales, argumentan que la
introduccin e inversin en formacin y herramientas es muy alta [PL06].
29
4.1.1
El manifiesto
Los integrantes de la reunin redactaron lo que para ellos eran las motivaciones de la
metodologa agile, aunque existan an en el ao 2005 cierta controversia sobre qu mtodo
era el ptimo. El manifiesto consta de cuatro valoraciones [PL06]:
1. Se valora ms a los individuos y a las interacciones del equipo del desarrollo que
a los procesos y a las herramientas. Se considera la sentencia ms importante de
todo el manifiesto, ya que el equipo quera mostrar que este era la columna vertebral de la metodologa. Por lo tanto, las personas son el factor principal de xito en
un proyecto de software ya que, aunque se siga un buen proceso de desarrollo, si el
equipo falla, el xito puede que no se consiga. Sin embargo, si las personas (el equipo) rinden correctamente, el objetivo final es ms que posible. No se valoran a los
grandes desarrolladores, sino aquellos que se adapten adecuadamente al equipo. No
obstante tambin se debe tener en cuenta que el exceso de herramientas puede afectar
negativamente ya que puede sobrecargar innecesariamente al equipo, por lo que puede
conllevar a un rendimiento ms bajo de lo esperado. Por este motivo, se prefiere una
eleccin correcta del equipo antes que enfocar todos los recursos en tener excelentes y
variadas herramientas.
2. Valorar el desarrollo de software que funciona antes de conseguir una documentacin excelente. Esta idea parte de que un software sin documentacin no va a ninguna parte, pero quiz la regla ms apropiada es no producir documentos a menos
que sean necesarios de forma inmediata para tomar un decisin importante. La documentacin debe estar centrada en el tema fundamental y ser muy corta, ya que la
documentacin excesiva no ofrece la riqueza de una comunicacin directa, porque si
una organizacin y varios equipos se comunican mediante documentos muy cargados,
se forma una barrera entre departamentos.
3. Valorar el contacto con el cliente antes de la negociacin contractual. Por las propias caractersticas de algunos proyectos de software, algunos han fracasado por estar
30
centrados en intentar cumplir los plazos y costes preestablecidos al inicio, fijados por
lo que el cliente solicitaba en ese momento. Es por este motivo por lo que la las prcticas giles estn indicadas para proyectos destinados a un escenario cambiante debido
al entorno del cliente. Es por ello por lo que el ambiente idneo de trabajo es aquel en
el que el cliente participe activamente, ms que tener una relacin limitada a establecer
unos lmites de contrato.
4. Valoracin al cambio que al seguimiento del plan. El fracaso o el xito de un proyecto puede estar determinado en cmo se responde a los cambios o imprevistos que
puedan surgir a lo largo del proyecto. Es por ello por lo que la flexibilidad, anticipacin
y la adaptacin deben estar presentes cuando se lleve a cabo la planificacin ya que
es mejor realizar planificaciones detalladas para unas pocas semanas y planificaciones
ms abiertas para los meses siguientes.
4.2 Scrum
Existen un gran abanico de metodologas gil para elegir por el desarrollador, entre las que
se puede destacar Crystal Methodologies, Adaptive Software Development, Dynamic
Systems Development Method o SCRUM. Nos centraremos en explicar SCRUM ya
que es la metodologa utilizada para el desarrollo del presente trabajo fin de grado.
Scrum es un mtodo de desarrollo identificado por Ikujiro Nonaka y Hirotaka Takeuchi a
principios de los aos 80 despus de analizar el modo de desarrollo de las principales empresas del momento tales como Epson, Brother, Canon, Honda, Nec, etc. El trmino deriva
de la posicin del jugador scrum del Rugby, siendo es el encargado de dirigir el juego de
la delantera, al igual que el apertura dirige el juego de la lnea, y dirigiendo entre ambos el
juego del equipo [Scr]. Se caracteriza principalmente por utilizar una estrategia incremental, mediante iteraciones (llamadas sprint con una duracin mayor a una semana pero no
superior a treinta das. Tambin se caracteriza por la implicacin del cliente (al que se muestra el producto al final de cada iteracin) y por el solapamiento de fases de desarrollo, en
contraposicin a las metodologas secuencial o cascada [Pal14].
Figura 4.1: Jeff Sutherland y Ken Schwaber en el evento Scrum, alrededor del 2009
31
Por otra parte, la palabra Scrum no comienza a aparecer en entornos de trabajo hasta los
aos 90, donde Ken Schwaber empez a utilizar Scrum en su compaa y, por otra parte, Jeff
Sutherland, con John Scumniotales y Jeff McKenna, desarrollaron una aproximacin similar
en la empresa Easel Corporation. Pero no fue hasta 1995 donde Sutherland y Schwaber presentaron conjuntamente un artculo describiendo la metodologa Scrum en el Business Object
Design and Implementation Workshop llevado a cabo en las conferencias Object-Oriented
Programming, Systems, Languages & Applications en la edicin de 1995 ( [Sch95]) en Austin (Tejas) siendo su primera presentacin. Sin embargo, ambos continuaron colaborando
durante los siguientes aos para unir sus trabajos anteriormente mencionados, sus experiencias y las mejores prcticas en lo que ahora es conocido como Scrum.
Metodologa gil
Metodologa tradicional
4.2.1
Roles
Se pueden destacar tres roles bien diferenciados en Scrum dentro del ScrumTeam: el
ScrumMaster, el cliente y el equipo [EW10].
ScrumMaster. Su papel es similar al tradicional manager project de las metodologas
tradicionales, pero no igual ya que es el responsable de que el ScrumTeam siga las
normas de Scrum, prcticas y valores. Su cometido es el xito del proyecto y l o
ella colabora aumentando la probabilidad de xito ayudado por el Product Owner que
selecciona lo ms destacado del Product Backlog y, mediante el Team, vuelve ese
backlog a la funcionalidad. Si el Scrum Team se enfrenta a un Blocker, un problema
32
4.2.2
Artefactos
Para que el ScrumTeam lleve a cabo con xito el desarrollo del proyecto, existe una serie
de prcticas para la organizacin del equipo [Mar12].
Product Backlog: O bien pila de producto. Son los requisitos (priorizados) desde los
cuales crece el producto e indica la importancia, tanto en esfuerzo como en valor, del
desarrollo. El resultado de esta etapa puede ser el resultado de un informe de requisitos, mediante una tormenta de ideas, etc. Por otra parte, tambin se determina qu
elementos son los ms prioritarios que confieren ms valor al producto.
Sprint Backlog. Es un documento que describe cmo el equipo implementar los
requisitos durante los sprint. Las tareas se dividen en horas y son seleccionadas por los
miembros del equipo, segn vean oportuno para el desarrollo del proyecto, teniendo
en cuenta el esfuerzo que prev que tendr la tarea.
Sprint. Es la iteracin en la que el equipo trabaja para completar una tarea siguiendo
un Sprint Backlog. Un sprint es una manera idnea para planificar el tiempo del
proyecto y canalizar los recursos para trabajar en las necesidades de mayor prioridad.
33
4.2.3
La razn principal por la que se ha decantado por esta metodologa son los requisitos de
tiempo (limitados), que el equipo de desarrollo est compuesto por una nica persona y,
especialmente, el desconocimiento de la tecnologa empleada para el desarrollo. Por ello,
creemos que es la metodologa que ms se adapta a la situacin con la que se inicia el
TFG.
Por otro lado, Scrum establece que la atencin recae sobre el software a desarrollar, especialmente en el equipo, quedando la documentacin en un segundo plano. Este es otro
motivo de peso para utilizar esta metodologa, especialmente porque la intencin del proyecto es tambin sacar al mercado el producto en el menor tiempo posible. La decisin de este
motivo no es otro que cubrir una necesidad actual y evitar retrasos indeseables.
Las iteraciones pueden consultarse en el Anexo A.
4.3.1
Entorno
Diferentes sistemas operativos. Para el desarrollo de las pruebas de ejecucin de los
exploits, se ha utilizado como sistema operativo aquel que es necesario para su ejecucin. Con ello nos referimos a que, en el caso de que el exploit sea de Windows XP,
por ejemplo ms08_067_netapi, obviamente es requerido un Windows XP corriendo
en la mquina virtual. Por otro lado, se ha utilizado el sistema operativo Linux Mint
para el desarrollo del trabajo. Linux Mint es un sistema operativo libre, con ncleo
Linux, que ofrece un entorno amigable para el desarrollo de aplicaciones, entre otras
funciones.
Mercurial. Se ha elegido un control de versiones, ya que es la forma ms fcil de
gestionar los cambios que se producen en el cdigo del programa, as como gestionar
los sprint del proyecto. En este caso, se ha decantado por Mercurial por las ventajas que
ofrece respecto a los clsicos sistemas de control de versiones centralizados [OS07].
Repositorio. El repositorio del proyecto se encuentra en http://bitbucket.org que se
gestionar mediante Mercurial, junto con TortoiseHG en Windows, una herramienta
visual de Mercurial que facilita enormemente la gestin del repositorio.
Sistemas de virtualizacin. Como se ha mencionado anteriormente, se requera la virtualizacin del Windows XP para la ejecucin de los exploits. Para ello, se ha utilizado
la versin 4.3.10 de Oracle VM VirtualBox Manager.
Kali Linux. Este sistema operativo se ha convertido en el punto de referencia en cuanto
a auditora se refiere. Contiene una gran variedad de software dedicado a la seguridad
en computadores (ver el captulo 3).
4.3.2
Desarrollo de software
A continuacin se mencionan algunas herramientas que se han utilizado para complementar el desarrollo del proyecto.
Gimp 1 . Cuyo nombre son las siglas de GNU Image Manipulation Program, es un
programa que ofrece un abanico de sorprendentes funcionalidades en la edicin de
imgenes, tanto dibujos como fotografas. Se ha utilizado Gimp para editar las fotografas del documento escrito del TFG as como en la edicin de prototipos del entorno
grfico de la aplicacin.
Eclipse + plugin de Node.js. Eclipse es un conocido programa compuesto por un
conjunto de programas de cdigo abierto (multiplataforma), utilizado para desarrollar entornos de desarrollo integrados (Integrated Development Environment (IDE)).
Contiene un Workspace y una gran cantidad de plug-in que permiten personalizarlo
y hacen posible que sea compatible con varios lenguajes de programacin como C,
1
35
C++, Fortran, Ruby, Perl, PHP o Python. Para el desarrollo del proyecto, en Node.js,
se ha utilizado el plug-in Nodeclipse que adapta el Workspace a las caractersticas de
Node.js.
NPM. Es un gestor de paquetes para NodeJS. Localiza conflictos de forma inteligente
de paquetes y los instala o bien en el directorio del proyecto o globalmente. Se ha
utilizado para satisfacer las dependencias con mdulos utilizados en Node.js. En su
pgina web oficial se pueden consultar todos los paquetes disponibles, alcanzando ya
80 246 2 .
Gedit. Es un editor de texto de Gnome, que no se excede en detalles para el desarrollo,
por lo que se utiliz para editar ficheros simples tales como package.json, o para la
edicin rpida de ficheros. Web del proyecto en https://wiki.gnome.org/Apps/Gedit.
Se encuentra disponible tambin para Windows y Mac OS X.
Chromium. Es un navegador web de cdigo abierto publicado por Google, que ya
ha alcanzado la versin 34.0. Se ha utilizado para visualizar el entorno grfico de la
aplicacin as como para depurar AngularJS.
Robomongo 3 . Es un entorno grfico para visualizacin y edicin de base de datos de
MongoDB. Se ha utilizado la versin 0.8.3 y ofrece un entorno amigable y sencillo de
utilizar y se ha utilizado para manipular las base de datos (test y de ejecucin normal)
de la aplicacin. Est disponible para Mac OS, Windows y sistemas GNU/Linux.
4.3.3
36
4.3.4
37
38
Captulo 5
Resultados
5.1.1
Primera reunin
Durante la primera reunin se fijan los objetivos mencionados y tambin las herramientas
disponibles para el equipo Scrum as como el lenguaje de programacin y entorno grfico a
utilizar. Respecto al lenguaje de programacin, se establece utilizar la pila Javascript denominada MEAN, formada por MongoDB, Express, AngularJS y Node.JS. Como se explic en
el captulo de mtodo (seccin 4.3), MongoDB es una base de datos NoSQL, Node.JS es un
entorno de programacin en Javascript para el lado del servidor, acompaado de la biblioteca
Express y AngularJS para el entorno grfico (basado en web) y apoyado con bootstrap. Para
ms informacin sobre estas herramientas, se puede leer en la seccin 4.3 dentro del captulo
de mtodo.
39
5.1.2
Iteraciones
En las iteraciones fijadas en la primera reunin con el Scrum Master, se decide que el
software constar de cinco iteraciones, de tres semanas de duracin cada una, donde se desarrollarn las funciones que se detallarn a continuacin, indicando cules son los requisitos
del software. No obstante, debido a que se considera que los detalles de cada iteracin (por
ejemplo, la prioridad, el equipo, etc.) es de carcter complementario, se encuentran en el
Anexo A de este documento.
Iteracin 1: Se fija como objetivo la realizacin de un anlisis de la red utilizando
NMAP. Se debe mostrar el resultado mediante la interfaz web y tambin habilitar un
formulario para poder escribirla. Se recuerda que debe crearse un servidor web para
que el cliente pueda conectarse y ejecutar el proceso mediante una interfaz clara y
limpia de sobrecarga, aqu es donde entra la utilizacin de express y su organizacin
de paquetes.
Iteracin 2: En esta iteracin se fija realizar la primera ejecucin de un exploit sobre
un objetivo seleccionado y muestra la informacin por la interfaz grfica. Se utiliza
Metasploit API para comunicarse con el framework.
Iteracin 3: Ejecucin de polticas sobre un objetivo seleccionado. Se habilitan los
anlisis y mostrar la informacin del proceso. De nuevo, al igual que la iteracin nmero uno, se debe crear en la interfaz las pertinentes secciones de una forma clara, tal
y como se fij en el Product Backlog.
Iteracin 4: En esta iteracin se desarrolla las opciones de agregar opciones explotacin. Una vez ejecutado un anlisis con efectividad, se deben realizar acciones sobre l.
En esta iteracin se debe aadir esas opciones y mostrar la informacin por la interfaz
grfica.
Iteracin 5: Por ltimo, se debe desarrollar un sistema para generar un informe sobre los test de penetracin realizados. Debe generarse en formato Portable Document
Format (PDF).
40
haber establecido una sesin con un objetivo, podr ejecutar el mdulo de post-explotacin
para realizar cualquier accin sobre el objetivo.
5.2.1
Dependencias en NodeJS
Para el desarrollo del programa se ha utilizado una serie de dependencias que han facilitado el avance del proyecto. A continuacin, se realiza una breve explicacin de la funcin
de cada biblioteca y por qu se ha elegido, dando especial mencin a express, socket.io,
mongoose y msfnode, ya que son los pilares de la aplicacin.
Express 1 . Es un potente framework para Node.js definido segn sus creadores como
un entorno de desarrollo de aplicaciones web minimalista y flexible. Est inspirado
en Sinatra (para el lenguaje de programacin Ruby) y es el software ms conocido en
la actualidad para Node.js 2 . Su intencin es proporcionar servidores HTTP de forma
robusta y sencilla, intentando ser la mejor solucin para aplicaciones basadas en web,
web sites o API pblicas. La versin utilizada es la 3.5.1 y debido (adems) a su organizacin, facilita la organizacin del desarrollo en multicapas [EXP14]. La sencillez
de express puede verse en el listado 5.1 donde con pocas lneas se ha creado un sencillo servidor web. Al visitar el puerto 3000 de la mquina donde se ejecuta, muestra el
tpico hello world.
libxmljs 3 . Es una biblioteca que sirve para gestionar ficheros eXtensible Markup Language (XML). Se utilizar para recoger la informacin aportada por NMAP.
1
41
var e x p r e s s = r e q u i r e ( e x p r e s s ) ;
var app = e x p r e s s ( ) ;
app . g e t ( / , f u n c t i o n ( req , r e s ) {
r e s . send ( h e l l o world ) ;
}) ;
app . l i s t e n ( 3 0 0 0 ) ;
jade. Es una biblioteca que ofrece al programador un sistema de plantillas para generar
los ficheros HyperText Markup Language (HTML) en el lado del servidor para ser
servidos al cliente [JAD14].
msfnode 4 . Biblioteca versin 0.5 que permite el envo de comandos a Metasploit
utilizando su API mediante paquetes Msgpack. Permite la creacin de consolas (con
comandos como msfconsole) y muchas funcionalidades ms que permite la API de
Metasploit.
mongoose 5 . Biblioteca que permite la interaccin entre el programa y la base de datos
de MongoDB. Proporciona una solucin basada en schema para modelar los datos
de la aplicacin e incluye conversin de tipos, validacin, construccin de querys,
etctera [MON14]. Mongoose es un middleware y es necesario destacar una de sus
caractersticas ya que permite definir funciones que son ejecutados antes o despus de
las operaciones save o remove (ver en el listado 5.2 un ejemplo de ejecucin de una
serie de comandos antes de guardar la instancia). Por defecto MongoDB no notifica
detalles si ocurre un error, sin embargo mongoose soluciona este error llamando a la
funcin db.getLastError y mostrndolo al desarrollador [Rau12].
MODEL. p r e ( s a v e , f u n c t i o n ( next ) {
if ( t h i s . isNew ) {
// doSomething
}else{
// doSomethingElse
}
}) ;
Listado 5.2: Al llamar a la funcin Save, se ejecuta el cdigo listado, que evala la
informacin antes de ser almacenada en la BD.
npmlog 6 . Biblioteca que gestiona el log de la herramienta.
async 7 . Es una biblioteca que facilita la ordenacin en la ejecucin de funciones en
4
42
NodeJS. Por cuestiones de seguridad, se requiere la versin 0.7, ya que permite encolar
las funciones, indispensable en el proyecto y disponible a partir de la mencionada
versin, ya que es a partir de la cero punto seis donde se facilita el control de ejecucin,
encolando iteraciones, e incluso permite pausar el proceso.
socket.io. Es una biblioteca que facilita la interaccin en tiempo real entre el cliente
y el servidor, por lo que se diferencia en dos tipos de bibliotecas, teniendo ambas un
comportamiento idntico en la API. Socket.io utiliza un protocolo de WebSocket y
proporciona una asociacin con cada cliente y entrada/salida asncrona [SOC14].
5.2.2
Para realizar ms sencillo el desarrollo de la aplicacin, se ha elegido el sistema de arquitectura por capas, un patrn que separa los datos y la lgica de una aplicacin de la interfaz.
Como principal ventaja, cabe destacar que el desarrollo se puede realizar independientemente de qu parte se ample, por lo que encaja perfectamente en el desarrollo que se ha
planificado. Tambin es ideal debido a la metodologa elegida, ya que es un desarrollo incremental. En el modelo multicapa, se suele encontrar tres niveles: presentacin, desarrollo (o
gestin) y datos (o entidades) [CAP14].
Presentacin: En la capa de presentacin es aquella donde se presenta el sistema al
usuario y donde se ejecutan las acciones y se visualiza la informacin desde el servidor,
como se puede ver en el diagrama de paquetes de la figura 5.2. Tambin suele ser
conocida como interfaz grfica y su caracterstica principal es la de ser amigable con
el usuario. En cuanto a la implementacin de esta capa, se ha llevado en dos partes: la
carpeta views y la carpeta public forman parte de ella. Debido al modelo escogido de
visualizar la informacin, era requisito mostrar al menos una pgina que cargase las
bibliotecas Javascript en el lado del cliente (AngularJS, socket.io y el resto de ficheros
del lado del cliente se explicar ms adelante). Por lo tanto, en views se encuentra
un fichero que utiliza la biblioteca Jade para mostrar la cabecera de la pgina en el
navegador, y en la carpeta public se encuentran los ficheros CSS, Javascript y HTML
que mostrarn la informacin. Ms adelante se detalla la organizacin de la carpeta
public.
Gestin o desarrollo. Es aquel cdigo que recibe las peticiones que solicita el cliente
y mediante el cual se envan las respuestas. Esta capa se comunica con la capa de
presentacin y es mediante esta comunicacin interna cmo se enva la informacin
al cliente. En nuestro software, son clases de gestin todas aquellas almacenadas en el
directorio routes (apoyadas por bibliotecas enlib) con funciones que son llamadas por
Express dependiendo de la informacin que quiera visualizar el cliente o acciones que
se ejecuten.
Datos. Es la capa por la cual se recuperan los datos desde la BD (en este caso Mon-
43
goDB). Cada clase est formada normalmente por los mtodos Create, Read, Update
y Delete (CRUD) para manipular los objetos con la BD: create (crear), read (leer), update (actualizar) y delete (borrar). En nuestro desarrollo, estas clases son denominadas
Models (gestionadas por la biblioteca Mongoose) que son construidas a partir de los
Schemes de la BD, gracias a estos models podemos manipular los datos de una manera
sencilla y almacenarlos en la base de datos.
Teniendo como referencia el diagrama de paquetes (ver figura 5.2), vemos que las clases se
encuentran agrupadas en seis paquetes, llevando a cabo cada uno una accin correspondiente
al sistema por capas, as pues en el TFG encontramos:
routes. Se corresponde con la capa de gestin o desarrollo y contiene las clases que
gestionan las peticiones de Express, correspondientes a las solicitudes que hace el
cliente. La organizacin de este paquete se ha llevado a cabo creando una clase para
cada tipo de peticin. As, las peticiones sobre anlisis las gestiona la clase Scan,
por ejemplo. Este paquete depende de models (la capa de datos) para crear nuevas
instancias de los datos o recuperarlos para manipularlos. Por otro lado, libs contiene
las bibliotecas que gestionan los datos. Adems, tiene relacin con views y public ya
que es la capa intermedia entre la capa de presentacin y datos, y en esos paquetes se
encuentran las diferentes clases del entorno grfico.
models. En este paquete se encuentran las clases correspondientes a la capa de datos.
Concretamente cada archivo es un model de uno o varios schemas que modelan los
datos de la aplicacin correspondiente a la collection (lo correspondiente a una tabla en
44
mongoDB) y adems de los mtodos CRUD, permite aadir funciones para ejecutarse
en la instancia. Ms adelante, se detalla cmo facilita mongoose un entorno claro y
sencillo con los modelos o models.
lib. Forman parte de la capa de desarrollo ya que son clases que son utilizadas para
aquellas del paquete routes, como se ha mencionado anteriormente.
public. Contiene los ficheros HTML, Javascript y dems que son servidos por el servidor web express y que ver el cliente. Obviamente, corresponde a la capa de presentacin.
5.2.3
Diseo de clases
clase que gestiona los mdulos de sesin y exploit utilizados para la ejecucin de comandos de post-explotacin, permitiendo su personalizacin mediante mdulos (que
se encuentran en el paquete modules).
Datos. Encontramos las clases ModuleMSF, Network, Policies y Scan. El primero
gestiona el schema correspondiente a los exploits, Network administra los schemas de
Net y Target, redes y objetivos respectivamente. Se ha decidido una relacin muchos
a muchos en este model para evitar duplicidades de objetivos (obviamente se entiende
que si un dispositivo tiene una IP siempre ser ese mismo dispositivo si se llama a esa
IP). Respecto a Policies y Scan, son models correspondientes con las polticas y los
anlisis, como su nombre indica, y todas ellas son llamadas por las clases de gestin
con el nombre homnimo, excepto Target que es utilizada en las clases de gestin
Policy y Scans.
Para la visualizacin en detalle del diseo de la base de datos, se ha creado otro diagrama de entidad-relacin que puede visualizarse en la seccin diseo de base de
datos, es por esa razn por la que tan solo aparecen los nombres de las clases correspondientes a este nivel del modelo de capas, ya que con MongoDB (como se ha
mencionado), son las mismas clases de datos las que son almacenadas en la base de
datos (ver seccin 5.2.1 para ms detalles).
5.2.4
Aunque MongoDB es clasificada como una base de datos orientada a documentos y utiliza schemas (esquemas) dinmicos, se ha realizado su diseo mediante el modelo entidadrelacin. Los modelos entidad-relacin se encuentran justificados para la presentacin de
cualquier tipo de datos y es un buen sistema para mostrar la estructura de un modelo, es por
ello por lo que se ha utilizado este procedimiento. Para llevar a cabo la posterior adaptacin
de los tipos de archivos a MongoDB, tan solo se han tenido que modificar varchar por el tipo
String, integer por Number y bit por Boolean. No obstante es ms compleja la adaptacin
de las relaciones entre las tablas mostradas en MongoDB, ya que se organiza de una manera
diferente. Sin embargo, el diagrama (ver figura 5.4) muestra de forma fiel y clara el diseo
final utilizado en el proyecto.
5.2.5
Ejecucin de un anlisis
El objetivo principal del proyecto es la ejecucin del proceso por parte de un responsable
de la empresa, es decir, de alguien que no tiene conocimientos relacionados con la seguridad
(o incluso un nivel bajo de conocimientos de informtica), es por ello por lo que existe un
nico actor que analiza las redes, seleccionando los objetivos y arrancando el anlisis. En la
figura 5.5 vemos el proceso detallado del proceso antes mencionado.
Como vemos, una vez que el programa est arrancado (ver Anexo B para ver cmo iniciar
46
el software), el actor solicita una bsqueda de red, que es gestionada mediante la biblioteca
express, llamado sta a una funcin de la clase NetRoute. sta a su vez, solicita a una biblioteca del paquete lib (NetScan), el anlisis de la red solicitada. Devuelve los datos mediante
un mensaje JSON con la red y sus IP a la funcin y sta crea un nuevo model con la red y los
objetivos, que son almacenados en la BD, una vez terminado express devuelve la informacin
al cliente.
Terminado este proceso, el usuario puede crear un anlisis (aunque ya debe de estar configurado) por lo que express llamar a la clase ScanRoute y ste consultar las polticas
aadidas en el sistema para que el usuario elija cules son las ms apropiadas para el anlisis. El usuario as selecciona los objetivos y las polticas y express se lo comunica a la clase
NetScan, quien crea una instancia del model ScanModel y ejecuta cada exploit incluido en
la poltica comunicndose con la clase ModulesLib quien ejecuta los comandos sobre MsfManager, encargada de enviar los mensajes a MsfNode, quien crea los mensajes en formato
Msgpack para comunicarse con Metasploit. Una vez finalizado, NetScan actualiza la instancia creada y enva la informacin aportada por la API de Metasploit al cliente. Despus
de este proceso, el cliente puede realizar acciones sobre las sesiones establecidas, como por
ejemplo, realizar una captura de pantalla.
5.2.6
Diseo de la interfaz
e x p o r t s . p o r t = p r o c e s s . env .PORT | | 3 0 0 0 ;
e x p o r t s . mongodb = {
u r i : p r o c e s s . env .MONGODB | | l o c a l h o s t / p e n t e s t i n g
};
e x p o r t s . companyName = t f g SA ;
e x p o r t s . projectName = TFG: Herramienta de p e n t e s t o r i e n t a d o y a u t o m a t i c o
;
e x p o r t s . systemEmail = D a n i e l . G a r c i a A r t a l e j o @ g m a i l . com ;
exports . MetasploitServer = {
IP : p r o c e s s . env . m e t a s p l o i t i p | | l o c a l h o s t ,
p o r t : p r o c e s s . env . m e t a s p l o i t p o r t | | 55553 ,
l o g i n : p r o c e s s . env . m e t a s p l o i t L o g i n | | myLogin ,
password : p r o c e s s . env . m e t a s p l o i t P a s s | | myPassword
};
e x p o r t s . db = {
normal : mongodb : / / l o c a l h o s t / p e n t e s t i n g ,
t e s t : mongodb : / / l o c a l h o s t / p e n t e s t i n g _ t e s t
};
Crditos a imgenes
Antes de finalizar esta seccin sobre el diseo de la interfaz, es necesario citar a tres
diseadores que gracias a su trabajo publicado mediante licencias Creative Commons 8 , se
ha podido dar vida con imgenes al TFG.
Imagen de la parte inferior izquierda azul: Realizado por Dev.Arka 9 Bajo licencia (CC
BY-ND 2.0).
Logotipo de empresa de pentesting. Realizado por Freepik 10 Con licencia CC BY 3.0.
Imgenes de la pgina inicial. Realizado por graphicloads
11
48
Figura 5.3: Diagrama de clases. NOTA: Para la visualizacin en detalle del diseo de la base
de datos, se ha creado otro diagrama de entidad-relacin.
49
50
51
52
53
Captulo 6
Conclusiones
lo largo de este captulo se har un breve resumen de aquellos conocimientos adquiridos durante la realizacin de este TFG as como de los aspectos en los que podra
aumentar su capacidad de cara al futuro.
54
configurar los exploits (su comportamiento, sus dependencias, etc.), actualmente se aade
una serie de exploit ya configurados para su ejecucin.
Cabe destacar que una de las principales metas que se han intentado conseguir a lo largo
de este trabajo fin de grado, sin tener en cuenta el entorno software para llevarlo a cabo, es
la de estudiar y conocer una de las ramas ms importantes de la informtica (la seguridad)
que segn he podido comprobar, en varios mbitos, no se encuentra an entre las opciones
importantes entre aquellas que las pymes dedican sus recursos. Al avanzar el proyecto e ir
encontrando informacin en publicaciones y leyendo artculos publicados, se va afianzando
la idea expuesta en la introduccin de este proyecto: la seguridad en informtica est muy
poco valorada y, especialmente, la aparicin de vulnerabilidades crticas en cualquier tipo de
aplicacin est a la orden del da. Por lo que, si la informtica es un campo muy dinmico,
la seguridad lo es an ms, lo que implica no solo una nica revisin de seguridad: esta
auditora debe ser adems peridica.
Para finalizar, espero que en algn momento este software sea adaptado para ser ejecutado en un entorno profesional y finalizar con ese crculo vicioso visto en el captulo 1 de
introduccin, para as ayudar a que las pymes estn ms protegidas ante ataques o amenazas.
Como experiencia personal, ha sido muy gratificante realizar este proyecto no solo por la
gran cantidad de conocimientos en el apartado de seguridad, que han complementado a todo
lo que he estudiado en el grado, sino tambin por ser un pequeo paso al futuro laboral, que
espero que est relacionado con este tema en particular, porque realmente es muy importante
y esencial en la sociedad de hoy en da.
56
ANEXOS
57
Anexo A
Iteraciones Scrum
En este Anexo se especificar el Product Backlog, los requisitos que deben cubrirse en
cada una de las cinco iteraciones planificadas. Para la lectura de las tablas, debe tenerse
encuentra que las filas con un color de fondo ms oscuro se corresponde a que esa tarea no
se ha finalizado al terminar la iteracin.
A.1 Iteracin 1
Objetivo principal: fijar como objetivo la realizacin de un anlisis de la red utilizando
NMAP. Se debe mostrar el resultado mediante la interfaz web y tambin habilitar un formulario para poder escribirla. Se recuerda que debe crearse un servidor web para que el cliente
pueda conectarse y ejecutar el proceso mediante una interfaz clara y limpia de sobrecarga,
aqu es donde entra la utilizacin de express y su organizacin de paquetes.
58
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-01-19
No finalizado
Alta
2014-01-19
No finalizado
Alta
2014-01-19
2014-01-23
Alta
2014-01-19
2014-01-21
Media
2014-01-19
2014-01-23
Media
2014-01-19
2014-01-21
Media
2014-01-19
2014-01-31
Media
2014-01-19
No terminado
Media
2014-01-29
2014-01-30
Baja
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-01-31
2014-02-05
Media
2014-01-28
No finalizado
Media
2014-02-03
2014-02-10
Media
2014-02-03
2014-02-17
Media
2014-01-23
2014-02-28
Media
2014-01-19
No terminado
Baja
2014-02-24
2014-02-27
Alta
2014-01-24
2014-03-02
Alta
59
A.2 Iteracin 2
Objetivo principal: En esta iteracin se fija realizar la primera ejecucin de un exploit
sobre un objetivo seleccionado y muestra la informacin por la interfaz grfica. Se utiliza
Metasploit API para comunicarse con el framework.
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-01-19
2014-03-01
Alta
2014-01-19
No finalizado
Alta
2014-03-01
2014-03-05
Media
2014-03-02
2014-03-08
baja
2014-03-01
2014-03-05
baja
2014-03-01
No finalizado
Alta
2014-03-01
2014-03-10
Baja
2014-03-15
2014-03-20
Alta
2014-03-16
2014-03-20
Baja
2014-03-16
2014-05-01
Media
2014-03-18
2014-03-20
Alta
2014-03-29
En progreso
Alta
2014-03-29
2014-04-15
Alta
2014-03-29
2014-04-05
Baja
2014-04-05
2014-04-09
Media
60
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-04-05
2014-04-09
Alta
2014-04-09
En progreso
Alta
2014-04-09
2014-04-13
Alta
2014-04-12
2014-04-20
Alta
2014-04-17
2014-04-23
Alta
2014-04-18
2014-04-25
Media
A.3 Iteracin 3
Objetivo principal: Ejecucin de polticas sobre un objetivo seleccionado. Se habilitan los
anlisis y mostrar la informacin del proceso. De nuevo, al igual que la iteracin nmero
uno, se debe crear en la interfaz las pertinentes secciones de una forma clara, tal y como se
fij en el Product Backlog.
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-01-19
No finalizado
Alta
2014-03-01
2014-04-30
Alta
2014-04-30
2014-05-10
Alta
61
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-05-02
2014-05-04
Alta
2014-05-02
2014-05-02
Alta
2014-05-02
2014-05-02
Alta
2014-05-02
2014-05-10
Alta
2014-05-02
2014-05-23
Medias
2014-05-02
2014-05-15
Media
2014-05-04
2014-05-17
Alta
2014-05-13
2014-05-30
Alta
2014-05-13
2014-05-13
Media
No iniciado
No iniciado
Alta
2014-05-20
2014-05-30
Media
2014-05-23
2014-05-23
Baja
62
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-05-23
2014-05-23
Baja
2014-05-23
2014-05-24
Media
2014-05-23
2014-05-28
Alta
2014-05-23
2014-05-26
Media
Personalizar (editando)
(nombre y descripcin)
polticas
2014-05-26
2014-05-26
Media
2014-05-26
2014-05-27
Alta
2014-05-26
2014-05-28
Media
63
A.4 Iteracin 4
Objetivo principal: En esta iteracin se desarrolla las opciones de agregar opciones explotacin. Una vez ejecutado un anlisis con efectividad, se deben realizar acciones sobre
l. En esta iteracin se debe aadir esas opciones y mostrar la informacin por la interfaz
grfica.
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-01-19
2014-06-01
Media
2014-06-01
2014-06-01
Media
2014-06-01
2014-06-05
Media
2014-06-05
2014-06-07
Media
2014-06-05
2014-06-05
Media
2014-06-05
2014-06-05
Media
2014-06-05
2014-06-07
Alta
2014-06-07
2014-06-07
Baja
2014-06-08
2014-06-08
Alta
64
A.5 Iteracin 5
Objetivo principal: Se debe desarrollar un sistema para generar un informe sobre los test
de penetracin realizados. Debe generarse en formato PDF.
Nombre de la tarea
Fecha de inicio
Fecha de finali-
Prioridad
zacin
2014-06-08
2014-06-08
Baja
2014-06-08
2014-06-08
Baja
2014-06-08
2014-06-10
Media
2014-06-08
2014-06-10
Media
2014-06-10
2014-06-10
Media
2014-06-10
2014-06-12
Alta
65
Anexo B
Como se ha mencionado previamente, se ha realizado el programa utilizando la pila Javascript. En el lado del servidor, corresponde tener instalado NodeJS y NPM como gestor de
paquetes para Node, para ello en Kali Linux (o cualquier distribucin basada en Debian), debe ejecutarse el siguiente comando como administrador para su instalacin (listado B.1).
Una vez instalado, debemos verificar si se encuentra instalado Metasploit y Nmap. Si no
es as, debe visitar la pgina web oficial de Metasploit y descargar la versin Community.
Una vez descargado, debe instalarlo como administrador (listado B.1). Si se ejecuta en Kali
Linux, no es necesario realizar ninguna accin de instalacin.
Se recuerda que se utiliza como base de datos MongoDB, por lo que debe estar instalado (listado B.1). Para el correcto funcionamiento del programa, se requiere una versin de
MongoDB mayor que la 2.5.
aptg e t i n s t a l l n o d e j s npm
aptg e t i n s t a l l nmap
aptg e t i n s t a l l mongodb
Una vez instalados los programas de los que depende el software, debe situarse en la carpeta del mismo y ejecutar el comando de la lista B.2, con el que se instalaran todas las dependencias del software dentro de NodeJS, que pueden visualizarse en la subseccin 5.2.1.
npm i n s t a l l
Terminada la instalacin, se debe configurar las variables de configuracin. Esto es, por
ejemplo, en qu IP se encuentra el servidor Metasploit (junto con el nombre y usuario), el
nombre de la organizacin, etc. El nombre fijado en el fichero de configuracin y su contrasea deben ser la misma que la configurada al arrancar el fichero en Metasploit. Aunque es
ajeno al proyecto, se indica a continuacin cmo ejecutar el servidor de Metasploit con una
66
contrasea y usuario genricas. Existe un fichero de ejemplo, config.sample.js, que puede ser
utilizado como plantilla. El fichero de configuracin debe tener como nombre config.js. Se
recuerda tambin que el servicio de Metasploit debe estar ejecutndose,a continuacin puede
consultar ambos comandos (listado B.3).
service metasploit start
msfrpcd U myLogin P myPassword f
Si se han realizado estos pasos, el software debera poder ejecutarse en todos los SO derivados de Debian, por lo que se puede iniciar el programa. Para ello, se puede utilizar o bien
npm o bien directamente mediante NodeJS (listado B.4).
npm s t a r t
n o d e j s app . j s
67
Anexo C
Para la ejecucin de la aplicacin, antes deben realizarse una serie de pasos por parte de la
empresa de auditora para que todas las dependencias de software sean satisfechas. Este paso
se puede consultar en el anexo B. As pues, una vez realizada esta etapa previa y ejecutndose
la aplicacin, debe visitar con su navegador preferido la direccin https://SERVIDOR:4000.
Se debe sustituir SERVIDOR por la direccin IP donde se ha iniciado el software. Por ejemplo, utilice https://localhost:4000 si se ejecuta desde localhost.
La primera pantalla (ver figura C.1) que se ver ser la que podemos ver, denominada
pgina de inicio o home en ingls. Vemos que en la parte superior se encuentra un men
por el que podemos navegar para visitar todas las secciones del programa, pero antes de
visitarlas se describir el contenido de la pgina de inicio.
Como vemos, en la parte superior se encuentra dos columnas con estadsticas de la aplicacin y ms abajo cuatro accesos directos: buscar objetivos, configurar polticas, ejecutar
68
Figura C.2: Listado de objetivos ya disponibles, ahora mismo ninguno (primer inicio).
2. Configuracin de polticas. Como paso previo a la configuracin de los anlisis, debemos agrupar en polticas los exploits disponibles en la base de datos que queramos
utilizar. Hacemos clic en polticas y nos aparecer la lista de las ya agregadas (ver
figura C.5). En este panel podremos realizar los siguientes pasos:
Agregar una nueva poltica. Para ello, hacemos clic en agregar poltica y veremos un formulario que debemos rellenar (nombre y descripcin). Posteriormente
podremos configurar los exploits.
Aadir/eliminar Exploits. Tan solo debemos hacer clic en la columna exploits
en el icono de configuracin. Se mostrar un dilogo (ver figura C.6) y podremos
seleccionar o eliminar los exploits de los que consta.
Manipular polticas. En la columna de acciones hay disponibles varias opciones
para modificar su funcionamiento: podemos eliminar o editar su informacin.
69
3. Configurar anlisis. Para ejecutar las polticas, debemos crear un nuevo anlisis. Slo
tenemos que hacer clic en anlisis y veremos los ya creados (ver figura C.7). En esta
pantalla podremos realizar las siguientes acciones:
Agregar un nuevo anlisis. Debemos hacer clic en agregar anlisis y veremos
un formulario que debemos. Posteriormente podremos configurar los exploits.
Aadir/eliminar polticas. Tan solo debemos hacer clic en el icono de configura-
70
iniciar un anlis, hacemos clic sobre el icono play y, si tiene xito, veremos
en la barra de progreso el color verde (ver figura C.10). En el caso de fracaso, el
color es rojo y, por ltimo, si es un exploit que requiere una accin por parte del
objetivo (como visitar una url), aparecer en naranja.
4. Sesiones activas. Una vez ejecutado el anlisis y si han tenido xito los exploits ejecutados, se debe haber creado una sesin donde podremos ejecutar los comandos pre-
72
73
74
Preamble
The purpose of this License is to make a manual, textbook, or other functional and useful
document free in the sense of freedom: to assure everyone the effective freedom to copy
and redistribute it, with or without modifying it, either commercially or noncommercially.
Secondarily, this License preserves for the author and publisher a way to get credit for their
work, while not being considered responsible for modifications made by others.
This License is a kind of copyleft, which means that derivative works of the document
must themselves be free in the same sense. It complements the GNU General Public License,
which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free
software needs free documentation: a free program should come with manuals providing the
same freedoms that the software does. But this License is not limited to software manuals; it
can be used for any textual work, regardless of subject matter or whether it is published as a
printed book. We recommend this License principally for works whose purpose is instruction
or reference.
Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that
work under the conditions stated herein. The Document, below, refers to any such manual
or work. Any member of the public is a licensee, and is addressed as you. You accept
the license if you copy, modify or distribute the work in a way requiring permission under
copyright law.
A Modified Version of the Document means any work containing the Document or
a portion of it, either copied verbatim, or with modifications and/or translated into another
language.
A Secondary Section is a named appendix or a front-matter section of the Document
that deals exclusively with the relationship of the publishers or authors of the Document to
the Documents overall subject (or to related matters) and contains nothing that could fall
directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a
matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The Invariant Sections are certain Secondary Sections whose titles are designated, as
being those of Invariant Sections, in the notice that says that the Document is released under
this License. If a section does not fit the above definition of Secondary then it is not allowed
to be designated as Invariant. The Document may contain zero Invariant Sections. If the
Document does not identify any Invariant Sections then there are none.
The Cover Texts are certain short passages of text that are listed, as Front-Cover Texts or
Back-Cover Texts, in the notice that says that the Document is released under this License.
A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25
words.
A Transparent copy of the Document means a machine-readable copy, represented in
a format whose specification is available to the general public, that is suitable for revising
the document straightforwardly with generic text editors or (for images composed of pixels)
generic paint programs or (for drawings) some widely available drawing editor, and that
is suitable for input to text formatters or for automatic translation to a variety of formats
suitable for input to text formatters. A copy made in an otherwise Transparent file format
whose markup, or absence of markup, has been arranged to thwart or discourage subsequent
modification by readers is not Transparent. An image format is not Transparent if used for
any substantial amount of text. A copy that is not Transparent is called Opaque.
Examples of suitable formats for Transparent copies include plain ASCII without markup,
Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD,
and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats
76
include proprietary formats that can be read and edited only by proprietary word processors,
SGML or XML for which the DTD and/or processing tools are not generally available, and
the machine-generated HTML, PostScript or PDF produced by some word processors for
output purposes only.
The Title Page means, for a printed book, the title page itself, plus such following pages
as are needed to hold, legibly, the material this License requires to appear in the title page.
For works in formats which do not have any title page as such, Title Page means the text
near the most prominent appearance of the works title, preceding the beginning of the body
of the text.
A section Entitled XYZ means a named subunit of the Document whose title either
is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in
another language. (Here XYZ stands for a specific section name mentioned below, such
as Acknowledgements, Dedications, Endorsements, or History.) To Preserve
the Title of such a section when you modify the Document means that it remains a section
Entitled XYZ according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this
License applies to the Document. These Warranty Disclaimers are considered to be included
by reference in this License, but only as regards disclaiming warranties: any other implication
that these Warranty Disclaimers may have is void and has no effect on the meaning of this
License.
2. VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying
this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to
obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough
number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly
display copies.
3. COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of
the Document, numbering more than 100, and the Documents license notice requires Cover
77
Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover
Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both
covers must also clearly and legibly identify you as the publisher of these copies. The front
cover must present the full title with all words of the title equally prominent and visible.
You may add other material on the covers in addition. Copying with changes limited to the
covers, as long as they preserve the title of the Document and satisfy these conditions, can
be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the
first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto
adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100,
you must either include a machine-readable Transparent copy along with each Opaque copy,
or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a
complete Transparent copy of the Document, free of added material. If you use the latter
option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated
location until at least one year after the last time you distribute an Opaque copy (directly or
through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before
redistributing any large number of copies, to give them a chance to provide you with an
updated version of the Document.
4. MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of
sections 2 and 3 above, provided that you release the Modified Version under precisely this
License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition,
you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in
the History section of the Document). You may use the same title as a previous version
if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the
principal authors of the Document (all of its principal authors, if it has fewer than five),
unless they release you from this requirement.
78
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public
permission to use the Modified Version under the terms of this License, in the form
shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover
Texts given in the Documents license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled History, Preserve its Title, and add to it an item stating
at least the title, year, new authors, and publisher of the Modified Version as given
on the Title Page. If there is no section Entitled History in the Document, create one
stating the title, year, authors, and publisher of the Document as given on its Title Page,
then add an item describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a
Transparent copy of the Document, and likewise the network locations given in the
Document for previous versions it was based on. These may be placed in the History
section. You may omit a network location for a work that was published at least four
years before the Document itself, or if the original publisher of the version it refers to
gives permission.
K. For any section Entitled Acknowledgements or Dedications, Preserve the Title
of the section, and preserve in the section all the substance and tone of each of the
contributor acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their
titles. Section numbers or the equivalent are not considered part of the section titles.
M. Delete any section Entitled Endorsements. Such a section may not be included in
the Modified Version.
N. Do not retitle any existing section to be Entitled Endorsements or to conflict in title
with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as
Secondary Sections and contain no material copied from the Document, you may at your
option designate some or all of these sections as invariant. To do this, add their titles to
79
the list of Invariant Sections in the Modified Versions license notice. These titles must be
distinct from any other section titles.
You may add a section Entitled Endorsements, provided it contains nothing but endorsements of your Modified Version by various partiesfor example, statements of peer review
or that the text has been approved by an organization as the authoritative definition of a
standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to
25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version.
Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or
through arrangements made by) any one entity. If the Document already includes a cover
text for the same cover, previously added by you or by arrangement made by the same entity
you are acting on behalf of, you may not add another; but you may replace the old one, on
explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission
to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under
the terms defined in section 4 above for modified versions, provided that you include in the
combination all of the Invariant Sections of all of the original documents, unmodified, and
list them all as Invariant Sections of your combined work in its license notice, and that you
preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical
Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections
with the same name but different contents, make the title of each such section unique by
adding at the end of it, in parentheses, the name of the original author or publisher of that
section if known, or else a unique number. Make the same adjustment to the section titles in
the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled History in the various original documents, forming one section Entitled History; likewise combine any sections
Entitled Acknowledgements, and any sections Entitled Dedications. You must delete all
sections Entitled Endorsements.
6. COLLECTIONS OF DOCUMENTS
80
You may make a collection consisting of the Document and other documents released
under this License, and replace the individual copies of this License in the various documents
with a single copy that is included in the collection, provided that you follow the rules of this
License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually
under this License, provided you insert a copy of this License into the extracted document,
and follow this License in all other respects regarding verbatim copying of that document.
8. TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the
Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some
or all Invariant Sections in addition to the original versions of these Invariant Sections. You
may include a translation of this License, and all the license notices in the Document, and
any Warranty Disclaimers, provided that you also include the original English version of this
License and the original versions of those notices and disclaimers. In case of a disagreement
between the translation and the original version of this License or a notice or disclaimer, the
original version will prevail.
If a section in the Document is Entitled Acknowledgements, Dedications, or History, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION
81
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the
Document is void, and will automatically terminate your rights under this License. However,
parties who have received copies, or rights, from you under this License will not have their
licenses terminated so long as such parties remain in full compliance.
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the with
. . . Texts. line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover
Texts being LIST, and with the Back-Cover Texts being LIST.
82
If you have Invariant Sections without Cover Texts, or some other combination of the
three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing
these examples in parallel under your choice of free software license, such as the GNU
General Public License, to permit their use in free software.
83
Referencias
[CAP14] Programacin por capas.
https://es.wikipedia.org/wiki/Programaci%C3%
B3n por capas consultado el 13 de junio de 2014, 2014.
[CRE11] The DNEWS editors. First Computer Virus, Creeper, Was No Bug. http://news.
discovery.com/tech/first-computer-virus-creeper-was-no-bug-110316.htm ltima comprobacin 17 de marzo de 2014., 2011.
[Div10] Computer Security Division. SP 800-37: Guide for Applying the Risk Management
Framework to Federal Information Systems. National Institute of Standards and
Technology, 2010.
[DK11] Devon Kearns y Mati Aharoni David Kennedy, Jim OGorman. Metasploit: The
Penetration Testers Guide. William Pollock, 2011.
[EW10] Matthew Ganis Elizabeth Woodward, Steffan Surdek. A Practical Guide to Distributed Scrum. IBM Press, Pearson plc, 2010.
[EXP14] API Reference of Jade. http://expressjs.com/3x/api.html consultado el 13 de
junio de 2014, 2014.
[JAD14] Language Reference of Jade. http://jade-lang.com/reference/ consultado el 13
de junio de 2014, 2014.
[kal]
[KS07] Carl Kessler y John Sweitzer. Outside-in Software Development: A Practical Approach to Building Successful Stake-holder-Based Products. IBM Press, 2007.
[L.10]
[Mar12] J. Martnez de Sousa. Succeding with Agile. Software development using Scrum.
Addison-Wesley, 2012.
[MON14] Mongoose: elegant MongoDB object modeling for Node.js. http://mongoosejs.
com/docs/guide.html consultado el 13 de junio de 2014, 2014.
84
[Pal14] Juan Palacio. Scrum Manager I: Las reglas de Scrum. Addison-Wesley, 2014.
[PGP]
[Seca]
[Secb]
Panda
Security.
Barmetro
Internacional
de
Seguridad
en
PYMEs.
http://www.pandasecurity.com/NR/
rdonlyres/9A6054F7-7C2F-4CFB-9A83-315BA2072B35/0/
85
ltima
comprobacin
[Sin12] Abhinav Singh. Metasploit Penetration Testing Cookbook. Packt Publishing, 2012.
[SOC14] Docs for Socket.io. http://socket.io/docs/ consultado el 13 de junio de 2014,
2014.
[SSCO08] K. Scarfone, M. Souppaya, A. Cody, y A. Orebaugh. SP 800-115:Technical Guide to Information Security Testing and Assessment. National Institute of Standards
and Technology, 2008.
[VVA11] VVAA.
Las TIC en las empresas espaolas.
DescargarDocumento.aspx?idd=4219 pg. 100, 2011.
86
www.ametic.es/
87