# Paquetes necesarios
#pkg <- c("dplyr","ggplot2", "scales", "maptools", "sp", "maps", "grid", #"Group4","mapproj","leaflet","rworldmap","choroplethr")
pkg <- c("dplyr","ggplot2", "scales", "maptools", "sp", "maps", "grid", "Group4","mapproj","leaflet","rworldmap")

# Instalar paquetes que no esten instalados
new.pkg <- pkg[!(pkg %in% installed.packages())]
if (length(new.pkg))
{
     install.packages(new.pkg)  
}

require(ggplot2)
require(scales)
require(maptools)
require(sp)
require(maps)
require(grid)
require(Group4)
require(mapproj)
require(dplyr)
require(leaflet)
#require(choroplethr)
knitr::opts_chunk$set(echo = TRUE)

Feodo

En este Markdown se intenta representar el número de botnets activas. El dataset utilizado se actualiza cada 5 minutos.

La fuente de los datos utilizados es accesible desde el siguiente enlace https://feodotracker.abuse.ch/.

Including Map

# Cargamos el dataset con las coordenadas de Lat/Long
df.feo<-maxmindg4.df()
str(df.feo)

Mapa con la ubicación de las botnets.

world <- map_data("world")
# Quitamos el continete Antarctico ya que no aporta informaci?n
# No es nada personal con los pinguinos...
world <- subset(world, world$region!="Antarctica")

gg <- ggplot(data=world, aes(x=long, y=lat))
gg <- gg + geom_path(aes(group=group), colour="gray70")
# La definici?n de la proyeccion representa la "curvatura" del mapa
gg <- gg + coord_map("mercator", xlim=c(-200, 200))
# A?adimos una capa al mapa con la informaci?n de Zero Access
gg <- gg + geom_point(data=df.feo, aes(longitude, latitude),
                      colour="red", alpha=1/40, size=5)
# Eliminamos texto y le damos un poco de color
gg <- gg + theme(text=element_blank(),
                 axis.ticks=element_blank(),
                 panel.grid=element_blank(),
                 panel.background=element_rect(color="gray50",
                                               fill="white"))
print(gg)
library(maps)
library(dplyr)
library(leaflet)
library(Group4)
library(ggplot2)
library(RcmdrMisc)
if(!file.exists("df.feo")) df.feo<-maxmindg4.df()
#Mapa basico
worldleafmap<-map("world",fill=TRUE,plot=FALSE,wrap=c(-180,180,NA))
worldmap<-leaflet(worldleafmap) %>% addTiles() %>%
  addPolygons(fillColor = topo.colors(10,alpha=NULL),stroke=FALSE)
worldmap %>% addCircles(lng=df.feo$longitude,lat=df.feo$latitude,radius = 50, color = '#ff0000')
#Distribución por tipo de Botnet
barplot(height = table(df.feo$Malware),col = "red",main = "Botnet type distribution")
#Grafico de la última fecha en la que se detecto y estuvo activo
#hist(x = df.feo$DetectedDate, breaks = 10, col = "green",main = "detected date distribution")
qplot(x = df.feo$DetectedDate,geom = "density",colour = I("green"))
#hist(x = df.feo$LastOnlineDate, breaks = 10, col = "blue",main = "Last online by date")
qplot(x = df.feo$LastOnlineDate,geom = "density",colour = I("blue"))
#Dias de la semana en la que se detectaron los ataques
barplot(height = table(factor(df.feo$DetectedWeekday,levels=c("lunes", "martes", "miércoles", "jueves", "viernes", "sábado", "domingo"))),col = "orange",main = "Botnet type distribution")
#Dia de la semana y continente
g <- ggplot(df.feo, aes(factor(df.feo$DetectedWeekday,levels=c("lunes", "martes", "miércoles", "jueves", "viernes", "sábado", "domingo")), df.feo$continent_name, color = df.feo$Malware))
g + geom_count() + labs(title="complete continent & weekday data") + xlab("weekday") +
ylab("Continent Name")


#attempting a K-means trying to find clusters showing relations of factors
#only numeric/factor fields
df.feo3<-df.feo[,c("DstIP","latitude","longitude")]
df.feo3<-RcmdrMisc::KMeans(df.feo3,centers=4,iter.max = 40,num.seeds = 5)
df.feo2<-cbind(df.feo,df.feo3$cluster)
df.feocluster1<-df.feo[df.feo2$cluster==1,]
df.feocluster2<-df.feo[df.feo2$cluster==2,]
df.feocluster3<-df.feo[df.feo2$cluster==3,]
df.feocluster4<-df.feo[df.feo2$cluster==4,]
#Results yet to be analyzed


DDS-MCSM/spring19-group-assignment-foreverdraft documentation built on June 4, 2019, 11:39 p.m.