Objetivo del package

El objetivo de esta práctica es realizar una consulta a Shodan sobre equipos que utilicen Apache como publicador web o de aplicaciones. Una vez obtenido este dato, se cruza la información con Nist, para obtener las potenciales vulnerabilidades que tendrían las plataformas consultadas a través del buscador.

Funciones usadas en el package

DescargarFicheros()

La función DescargarFicheros verifica que exista la ruta donde vamos a guardar el fichero con los datos y posteriormente realiza la descarga y descompresión del mismo.
Ejemplo de uso:

DescargarFicheros()

ConsultarShodan()

La función ConsultarShodan realiza una consulta a Shodan mediante el uso de API. La consulta llevada a cabo en esta práctica es apache. Tratamos de buscar los servidores apacha publicados a en internet y que no ocultan el Header Server.
Ejemplo de uso:

ConsultarShodan(query)

ParserShodan()

La función ParserShodan realiza un parseo de los datos descargados de la consulta a Shodan. Se crea un data frame y luego se eliminan los duplicados devueltos por la consulta.
Ejemplo de uso:

ParserShodan()

ParserNVD()

La función ParserNVD realiza un parseo del documento del NIST. Mediante consultas XPATH obtenemos los valores necesarios (CVE-CPE) para conseguir el data frame.
Ejemplo de uso:

ParserNVD()

UnirDatos(df1, df2)

La función UnirDatos une los datos de los data frames creados por ParserShodan y ParserNVD. La relación entre uno y otro es CPE.product. Como resultado obtenemos un tercer data frame con los datos listos para explotar.
Ejemplo de uso:

UnirDatos(df1, df2)

ContarTotalCVE_CPE(df)

La función ContarTotalCVE_CPE realiza un conteo del data frame resultante de la función UnirDatos. El conteo se lleva a cabo mediente el campo CPE.product.
Ejemplo de uso:

ContarTotalCVE_CPE(df)

ContarTotalCVEs(df)

La función ContarTotalCVEs realiza un conteo del data frame resultante de la función UnirDatos. El conteo se lleva a cabo mediente el campo CPE.product.
Ejemplo de uso:

ContarTotalCVEs(df)
library("RShodan")
suppressWarnings(library(dplyr, warn.conflicts = FALSE))
#DescargarFicheros()
cveDF <- ParserNVD()
shodanDF <- ParserShodan()
joinedDF <- UnirDatos(shodanDF, cveDF)

Gráficas obtenidas mediante el estudio

Agrupación de CPE's por CVSS (Score) de CVE

GraficarTotalCPEShodanByCVEScore(joinedDF)

Total de CPEs por CVSS (Score)

GraficarTotalCPEByCVEScore(cveDF)

Las siguientes gráficas nos muestran el total de CVEs por CVSS y el total de CVEs por año

GraficarTotalCVEScore(cveDF)

GraficaTotalCVEsAno(cveDF)

Mediante las IP's y la base de datos se puede geolocalizar las IP y dibujar en plano

PintarMapa(joinedDF)


jlmallo/RShodan documentation built on May 19, 2019, 12:47 p.m.