Proyecto Data Driven Security
Proyecto Data Driven Security
- 1 Tratamiento de datos a partir de un scan realizado con Qualys
- 1.1 Carga del archivo con la fuente de datos
- 1.2 Seleccionamos los datos relevantes
- 1.3 Clasificación en función del tipo de vulnerabilidad y severidad
- 1.4 Visualización gráfica de la clasificación por tipo de vulnerabilidad
- 1.5 Visualización gráfica de la clasificación por tipo de vulnerabilidad, severidad y total de casuísticas identificadas.
- 2 Relación de los datos obtenidos en el scan con la Knowledge Base de Qualys
1 Tratamiento de datos a partir de un scan realizado con Qualys
1.1 Carga del archivo con la fuente de datos
Primero de todo, cargamos el archivo que contiene las vulnerabilidades encontradas tras realizar un scan con Qualys
El archivo ha sido descargado como en formato csv desde la web de Qualys
1.2 Seleccionamos los datos relevantes
Una vez tenemos nuestro dataframe, procedemos a filtrar para quedarnos únicamente con aquellos datos que serán relevantes para nuestro caso de estudio.
Nos hemos quedado con los siguientes campos:
## [1] "IP" "QID" "Type" "Severity" "CVE ID"
Podemos observar un ejemplo de estos datos:
| IP | QID | Type | Severity | CVE ID |
|---|---|---|---|---|
| 64.41.200.250 | 13038 | Vuln | 5 | CVE-2014-6271 |
| 64.41.200.250 | 42007 | Vuln | 5 | CVE-2008-0166 |
| 64.41.200.250 | 38626 | Vuln | 4 | CVE-2016-2107 |
| 64.41.200.250 | 42430 | Vuln | 4 | CVE-2014-0160 |
| 64.41.200.250 | 38626 | Vuln | 4 | CVE-2016-2107 |
1.3 Clasificación en función del tipo de vulnerabilidad y severidad
Clasificamos en una tabla los tipos de vulnerabilidad y severidad, mostrando un contador que indica cuantos casos se han identificado
Veamos la tabla que obtenemos, para poder entender la relación con la gráfica que vendrá a continuación:
| Type | Severity | Count |
|---|---|---|
| Ig | 1 | 169 |
| Practice | 1 | 0 |
| Vuln | 1 | 8 |
| Ig | 2 | 26 |
| Practice | 2 | 7 |
| Vuln | 2 | 40 |
| Ig | 3 | 14 |
| Practice | 3 | 52 |
| Vuln | 3 | 32 |
| Ig | 4 | 0 |
| Practice | 4 | 12 |
| Vuln | 4 | 4 |
| Ig | 5 | 0 |
| Practice | 5 | 0 |
| Vuln | 5 | 7 |
1.4 Visualización gráfica de la clasificación por tipo de vulnerabilidad
Mostramos un gráfico que representa los valores de la tabla
1.5 Visualización gráfica de la clasificación por tipo de vulnerabilidad, severidad y total de casuísticas identificadas.
Mostramos un gráfico que representa el total de vulns encontradas en función de su tipo y severidad
2 Relación de los datos obtenidos en el scan con la Knowledge Base de Qualys
Cargamos ahora el fichero que contiene la información de la Knowledge Base de Qualys en un dataframe
El archivo ha sido descargado como en formato csv desde la web de Qualys
2.1 Filtrado del dataframe
Una vez tenemos nuestro dataframe, procedemos a filtrar para quedarnos únicamente con aquellos datos que serán relevantes las relaciones que nos interesan realizar.
Nos quedamos con los siguientes campos:
## [1] "QID" "Category" "Modified" "Published" "CVSS Base" "CVE ID"
Dado que nos interesará mostrar una relación entre lo que se ha detectado en el scan e información disponible en la KnowledgeBase, en este caso queremos obtener una relación para conocer en base a un QID que CVSS le corresponde, eliminamos todos aquellas entradas que no tengan valor CVSS en la KnowledgeBase.
2.2 Juntamos ambos input (El scan de Qualys y la Knowlegdge Base) en un mismo dataframe
Los relacionamos por la columna QID que es común en ambos datos y nos permitirá obtener una correcta correlación entre ellos.
Filtramos de nuevo para tener unos datos que se adapten más a nuestras necesidades, dado que existíann algunas columnas como CVE ID que están duplicadas (ambos dataframes la contenian por igual)
Nos quedan finalmente los siguientes campos:
## [1] "QID" "IP" "Type" "Severity" "CVSS Base" "CVE ID"
2.3 Clasifica por tipo, CVSS y un contador
Clasificamos las vulnerabilidades encontradas por tipo, su valor CVSS y un contador para cada casuística.
Podemos observar la clasificación en la tabla a continuación:
| Type | CVSS Base | Count |
|---|---|---|
| Ig | 0 | 61 |
| Practice | 0 | 0 |
| Vuln | 0 | 9 |
| Ig | 1.2 | 0 |
| Practice | 1.2 | 1 |
| Vuln | 1.2 | 0 |
| Ig | 10 | 0 |
| Practice | 10 | 0 |
| Vuln | 10 | 3 |
| Ig | 2.6 | 0 |
| Practice | 2.6 | 3 |
| Vuln | 2.6 | 11 |
| Ig | 3.5 | 0 |
| Practice | 3.5 | 6 |
| Vuln | 3.5 | 0 |
| Ig | 4.3 | 0 |
| Practice | 4.3 | 6 |
| Vuln | 4.3 | 19 |
| Ig | 4.7 | 0 |
| Practice | 4.7 | 0 |
| Vuln | 4.7 | 1 |
| Ig | 5 | 0 |
| Practice | 5 | 19 |
| Vuln | 5 | 23 |
| Ig | 5.1 | 0 |
| Practice | 5.1 | 3 |
| Vuln | 5.1 | 0 |
| Ig | 5.4 | 0 |
| Practice | 5.4 | 0 |
| Vuln | 5.4 | 2 |
| Ig | 5.5 | 0 |
| Practice | 5.5 | 1 |
| Vuln | 5.5 | 0 |
| Ig | 5.8 | 0 |
| Practice | 5.8 | 4 |
| Vuln | 5.8 | 6 |
| Ig | 6.4 | 0 |
| Practice | 6.4 | 4 |
| Vuln | 6.4 | 10 |
| Ig | 6.5 | 0 |
| Practice | 6.5 | 2 |
| Vuln | 6.5 | 0 |
| Ig | 6.8 | 0 |
| Practice | 6.8 | 7 |
| Vuln | 6.8 | 0 |
| Ig | 6.9 | 0 |
| Practice | 6.9 | 2 |
| Vuln | 6.9 | 0 |
| Ig | 7.3 | 0 |
| Practice | 7.3 | 1 |
| Vuln | 7.3 | 0 |
| Ig | 7.5 | 0 |
| Practice | 7.5 | 10 |
| Vuln | 7.5 | 0 |
| Ig | 7.8 | 0 |
| Practice | 7.8 | 0 |
| Vuln | 7.8 | 3 |
| Ig | 8.5 | 0 |
| Practice | 8.5 | 1 |
| Vuln | 8.5 | 0 |
| Ig | 9.3 | 0 |
| Practice | 9.3 | 1 |
| Vuln | 9.3 | 4 |
2.4 Visualización gráfica de la clasificación por tipo de vulnerabilidad, CVSS y total de casuísticas identificadas.
Mostramos un gráfico que representa el número de vulnerabilidades encontradas en el scan y su CVSS según la Knowledge Base de Qualys