Bloqueando ransomware con samba y fail2ban

Imagen de vfmBOFH

El método utilizado es simple, pero efectivo: Auditamos las acciones de los usuarios y las guardamos en log. Fail2ban se encarga de revisar el log, y si algún usuario ha escrito ficheros con el nombre/extensiones de la lista, lo bloquea. No es un método "instantáneo", ni tampoco protege para los ransom que usan extensiones aleatorias (o no usan extensiones), pero algo es algo. Empecemos por montar la auditoría:

En el smb.conf, para cada unidad que queramos auditar, aplicamos la siguiente configuración:

# Recurso de acceso R/W  publico
[publico]
        comment = Directorio compartido
        path = /ruta/al/share/publico
        vfs objects = full_audit
        full_audit: failure = none
        full_audit: success = pwrite write rename
        full_audit: prefix = IP = %I | USER = %u  | MACHINE = %m | VOLUME = %S
        full_audit: facility = local7
        full_audit: priority = NOTICE
        valid users = @winusers
        read only = No
        create mask = 0664
        directory mask = 0775
        force group = winusers
        force directory mode = 0775
        wide links = Yes

En concreto y por orden, qué operaciones se van a registrar en caso de que fallen (failure), las que se registrarán en caso de realizarse correctamente (success, pwrite -subida-, write -escritura-, rename -renombrado-), La cadena que se escribirá en el log (prefix: detallamos la ip, el usuario, la máquina y el volumen), el “facility” (local7, /var/log/syslog) y su prioridad. El resto del snip, vemos que son configuraciones bastante normales de un share samba.

Bien. Con estas directivas de auditoría, y una vez reiniciado samba, cada vez que un usuario que tenga mapeada la unidad de red \\servidor\publico escriba, suba ficheros o renombre los mismos, dejará una traza en el log similar a ésta:

Apr 21 21:02:50 srv1 smbd[31353]: IP = 192.168.1.35 | USER = fulano | MACHINE = pote | VOLUME = publico|pwrite|ok|ruta/al/archivo/archivo.extension

Y ya tenemos la traza de log que fail2ban examinará.

Para ello, una vez instalado creamos un fichero de filtro en /etc/fail2ban/filter.d/. Llamémosle samba.conf:

[Definition]
failregex = smbd.*\:\ IP\ =\ \ \|.*\.0x0$
            smbd.*\:\ IP\ =\ \ \|.*\.1999$
            smbd.*\:\ IP\ =\ \ \|.*\.*obleep$
            smbd.*\:\ IP\ =\ \ \|.*\.LOL!$
            smbd.*\:\ IP\ =\ \ \|.*\.aaa$
            smbd.*\:\ IP\ =\ \ \|.*\.abc$
            smbd.*\:\ IP\ =\ \ \|.*\.bleep$
            smbd.*\:\ IP\ =\ \ \|.*\.ccc$
[...]
ignoreregex =

Esto es un fragmento recortado, pero se deja entender bastante. Básicamente es una compilación de extensiones conocidas de archivos cifrados por los ransom más populares.

Bueno, hora de añadir nuestro filter al final de /etc/fail2ban/jail.conf:

[samba]
filter = samba
enabled = true
action = iptables-multiport[name=samba, port="135,139,445,137,138", protocol=tcp]
         mail[name=samba, dest=vfmbofh@mi.correo.no.te.dire]
logpath = /var/log/syslog
maxretry = 1
findtime = 600
bantime = 86400

Baneamos 24 horas al primer intento, y enviamos un correo avisando del tema (que no hará falta, porque el infeliz que esté infectado vendrá a darte la brasa porque no puede escribir en el share). El findtime, lo dejamos cuadrado con el que haya por default en la instalación.

Bueno. Hasta aquí la fusilada de mi blog.

Como puede verse, no es muy complicado de implementar, pero es un maldito peñazo mantener actualizada la lista de extensiones a vigilar. Así que husmeando por ahí, me he encontrado con esta web, que mantiene una base de datos de extensiones / nombres de archivo descargable libremente.

El tema es que la base de datos ésta, se baja en formato json, hay que parsearla y tal (yo uso jq, sed y tal).

Pero si tienes una base de datos consultable vía web puedes automatizar todo el mondongo.

Yo he montado un scriptillo bastante guarro que hace el trabajo. Lo pones en un cron para ejecutarse una vez al día y tira millas:

#!/bin/bash
#Licencia HLQTSDLH
#Definiciones estáticas. Cambiar en función de la anotación que hace samba en el log.
REGLAFICHERO='smbd.*\:\ IP\ =<HOST>\ \|'
REGLAEXTENSION='smbd.*\:\ IP\ =<HOST>\ \|.'
ULTIMALINEA="ignoreregex ="
############################################
ACTUAL=`date +"%Y%m%d"`
FICHERO=`curl --silent https://fsrm.experiant.ca/api/v1/combined |jq '.lastUpdated | {date}'|grep date |cut -d ' ' -f 4|sed 's/"//g'|sed 's/-//g'`
if [ $ACTUAL -gt $FICHERO ]
then
        logger "Comprobación de fichero de reglas samba f2ban ok."
        exit 0
else
        #al lío
        #recuperamos archivo de extensiones
        curl --silent https://fsrm.experiant.ca/api/v1/combined |jq '.filters'|sed 's/"//g'|sed 's/ //g'|sed 's/,//g'|sed 's/]//g'|sed "s/\[//g"|sed '/^\s*$/d' > /tmp/filters.tmp
        #generamos fichero de archivos
        cat /tmp/filters.tmp |grep -v ^* > /tmp/archivos.filter
        #generamos fichero de extensiones
        cat /tmp/filters.tmp |grep ^* > /tmp/extensiones.filter
        ####Reglas
#Hack primera línea del archivo
PRIMERALINEA=`head -n 1 /tmp/extensiones.filter|sed 's/\./\\\\./g'|sed 's/\\$/\\\\$/g'`
cat > /tmp/reglas.regla  <<EOF
[Definition]
failregex = $REGLAEXTENSION$PRIMERALINEA$
EOF
#Fin hack
        #extensiones
        sed 1d /tmp/extensiones.filter | while read LINEA #primera línea fuera, ya la hemos montado
        do
                PARSELINEA=`echo $LINEA|sed 's/\./\\\\./g'|sed 's/\\$/\\\\$/g'`
                echo -e "$REGLAEXTENSION$PARSELINEA\$" >> /tmp/reglas.regla
        done
        #archivos
        while read LINEA
        do
                PARSELINEA=`echo $LINEA|sed 's/\./\\\\./g'|sed 's/\\$/\\\\$/g'`
                echo -e "$REGLAEXTENSION$REGLA$PARSELINEA\$" >> /tmp/reglas.regla
        done < /tmp/archivos.filter
        #fin de archivo
        echo $ULTIMALINEA >> /tmp/reglas.regla
fi
mv /tmp/reglas.regla /etc/fail2ban/filter.d/samba.conf
/etc/init.d/fail2ban restart >/dev/null 2>&1
logger "Fichero de reglas samba f2ban actualizado"

Como es habitual en mí, falta control de errores y mil puñetas más. Pero hace el trabajo.

:wq!

1 comentario

2
Ago

kate spade purses
birkenstock shoes
nike flyknit
adidas outlet store
adidas yeezy boost
yeezy shoes
mlb jerseys
coach outlet online
swarovski crystals
coach outlet online
true religion
longchamp outlet store
mlb jerseys whgolesale
curry shoes
coach canada
coach outlet online
christian louboutin pas cher
nike air max
mulberry
adidas trainers
coach outlet online
coach outlet store
coach outlet online
adidas nmd runner
dansko shoes
cheap jordan shoes
christian louboutin
polo ralph lauren outlet online
ralph lauren
nike free 4.0 flyknit
michael kors
adidas yeezy boost
pandora bijoux
mbt
adidas nmd r1
true religion jeans outlet
vans store
ray ban sunglasses outlet
yeezy boost 350
birkin handbags
michael kors outlet canada
michael kors outlet store
louboutin outlet
cheap jordan shoes
louis vuitton factory outlet
coach factory outlet online
adidas
coach outlet online
coach factory outlet store
ralph lauren outlet online
coach outlet store online
rolex replica watches for sale
adidas running shoes
birkenstock outlet
celine outlet online
michael kors
coach outlet store online
air max 90
clarks shoes outlet
polo ralph lauren
nike outlet store
tods shoes
yeezy boost
ralph lauren
adidas sneakers
nike uk
true religion outlet online
valentino
pandora charms sale clearance
oakley sunglasses outlet
air max shoes
longchamp bags
pandora soldes
cheap jerseys
nike roshe one
cheap nike shoes
fred perry polo shirts
fake rolex watches
coach factory outlet
dansko sale
pandora charms outlet
ralph lauren sale clearance uk
coach factory outlet
ray bans
cheap nfl jerseys wholesale
michael kors outlet store
nike air max 95
toms
sac longchamp
polo ralph lauren outlet online
pandora jewelry store
yeezy boost 350 v2
giuseppe shoes
fitflops sale clearance
fitflops sale
mont blanc pen
coach handbags outlet
michael kors outlet
uggs outlet
coach outlet online
birkenstock outlet
christian louboutin shoes
michael kors outlet online
michael kors uk
ralph lauren sale
ugg outlet online
adidas superstar trainers
salomon boots 
pandora charms
adidas outlet online
michael kors outlet online
warriors jerseys
michael kors bags
ray ban sunglasses cheap
coach factory outlet
coach outlet store online
michael kors outlet store
adidas outlet store
oakley sunglasses outlet
discount oakley sunglasses
christian louboutin sale
michael kors outlet
nfl jerseys
michael kors outlet online
christian louboutin sale
ray ban sunglasses discount
michael kors bags
coach outlet online
red bottom
discount oakley sunglasses
yeezy boost
michael kors
polo ralph lauren pas cher
longchamp handbags
michael kors
michael kors outlet online
columbia outlet
mont blanc pens
true religion jeans
adidas sneakers
yeezy boost 350
fitflops clearance
air max pas cher
nike store
adidas trainers
hollister kids
burberry outlet online
birkenstock shoes
under armour outlet
jordans
coach outlet online
michael kors outlet store
kate spade outlet online
nike roshe shoes
michael kors handbags outlet
tods outlet
air max
pandora outlet
polo ralph lauren outlet
moncler jackets
discount oakley sunglasses
longchamp handbags
ray bans
ralph lauren sale
michael kors bags
michael kors handbags
hollister clothing
uggs outlet
coach factory outlet online
coach outlet online
mlb jerseys
pandora charms sale clearance
coach outlet store
toms outlet
vans outlet
giuseppe zanotti sale
cheap jordans for sale
christian louboutin shoes
pandora charms outlet
coach outlet online
pandora charms outlet
chaussures louboutin
clarks shoes outlet
coach factory outlet online
michael kors outlet canada
fred perry polo shirts
louis vuitton purses
pandora charms sale clearance
coach factory outlet online
toms outlet
nfl jerseys wholesale
ed hardy outlet
birkenstock uk
longchamp bags
cheap oakley sunglasses
louboutin outlet
coach outlet online
rolex watches
montblanc
pandora charms sale clearance
birkenstocks
nike air max 95
adidas nmd r1
adidas yeezy boost 350
fitflop
celine handbags
pandora charms
coach factory outlet online
coach outlet store online clearance
coach outlet store online
ray ban glasses
adidas superstar shoes
coach outlet store
cheap ray ban sunglasses
yeezy 350 boost
jordan uk
coach factory outlet
pandora charms sale clearance
salomon outlet
ugg boots
adidas yeezy boost
hermes outlet online
nike outlet
pandora uk
adidas sneakers
longchamps
kate spade outlet
adidas store
air max
adidas nmd r1
coach outlet online
longchamp soldes
oakley sunglasses outlet
marc jacobs
versace
jordan shoes
birkenstock outlet
nmd adidas
retro 11
nfl jerseys
michael kors outlet online
ralph lauren outlet online
ralph lauren uk
nfl jerseys cheap
coach factory outlet online
nike free run
moncler outlet online
hermes bags
nike free run flyknit
longchamp sale
adidas superstars
kd 8 shoes
birkenstock
nike sneakers
tory burch shoes
michael kors outlet online
michael kors outlet clearance
coach factory outlet online
cheap nike sneakers
swarovski sale
cavaliers jerseys
mlb jerseys
coach outlet online
louis vuitton outlet online
air max
louboutin shoes
michael kors
coach outlet canada
michael kors
air max 90
coach outlet store online
pandora charms
coach factory outlet
hermes outlet
cheap air jordans
air jordan retro
nike sneakers
pandora uk
coach factory outlet online
adidas yeezy boost
sac longchamp
polo ralph lauren
adidas nmd runner
red bottom shoes for women
ralph lauren sale
fitflop shoes
mulberry uk
michael kors outlet clearance
toms
burberry outlet
gucci borse
valentino outlet
pandora jewelry
fitflops sale clearance
louboutin outlet
polo ralph lauren outlet
mbt
ralph lauren sale clearance uk
air jordan shoes
birkenstock
nike outlet store
michael kors outlet clearance
michael kors outlet store
ralph lauren uk
air max 90
oakley sunglasses wholesale
moncler uk
christian louboutin outlet
coach factory outlet online
yeezy boost
ralph lauren outlet
jerseys cheap
nike store
cat boots
polo ralph lauren outlet
parker pen
coach factory outlet
christian louboutin outlet
coach outlet online
kate spade handbags
yeezy shoes
marc jacobs outlet
michael kors outlet clearance
ray ban glasses
red bottom heels
ugg
cheap jordan shoes
salomon outlet
michael kors outlet online
uggs outlet
jordan retro
ed hardy store
red bottom
coach factory outlet online
adidas nmd runner
swarovski uk
mulberry outlet uk
coach outlet online
harden shoes
coach factory outlet online
mbt
ralph lauren outlet
ysl bags
louboutin shoes
coach factory outlet online
valentino outlet
pandora charms sale clearance
discount nike shoes
gucci
tory burch outlet online
louis vuitton factory outlet
air max
moncler pas cher
birkenstock outlet store
kd shoes
yeezy boost 350
dansko
heat jerseys
adidas outlet
pandora jewelry outlet
cheap ray ban sunglasses
cowboys jerseys
adidas uk
coach factory outlet
mulberry handbags
cheap air max
adidas ultra boost
fitflops
adidas nmd r1
coach outlet
pandora jewelry
columbia outlet store
pandora
fitflops sale clearance
yeezy boost
longchamp bags
kate spade outlet online
tory burch outlet online
levis outlet
pandora charms outlet
gucci outlet online
coach outlet store
coach factory outlet online
cheap oakley sunglasses
coach outlet online
true religion jeans outlet
birkenstocks
true religion jeans outlet
ralph lauren outlet
eahawks jerseys
longchamp pliage
adidas superstars
ralph lauren
coach outlet online
kate spade uk
polo ralph lauren
michael kors outlet store
air max outlet
hermes bags
kate spade bags
louis vuitton bags
polo ralph lauren outlet online
clarks
cheap jordan shoes
pandora charms sale
dolce and gabbana outlet online
fendi bags
longchamp handbags
jordan shoes
nike outlet online
jimmy choo shoes
michael kors
adidas nmd runner
nike outlet
fitflop sandals
chi flat iron
moncler uk
polo ralph lauren outlet online
adidas
hermes bag
christian louboutin shoes
cheap nfl jerseys
toms
christian louboutin
rolex replica watches
fitflops sandals
nike outlet store online
parada bags
moncler coats
michael kors outlet store
ecco outlet
pandora charms sale
clarks shoes for women
broncos jerseys
dansko outlet
rolex replica watches for sale
yeezy boost 350
fitflops sale
true religion jeans outlet
coach purses
prada outlet online
adidas superstar
ralph lauren outlet online
louis vuitton outlet store
air jordans
longchamp
kate spade outlet store
coach outlet canada
yeezy shoes
nike outlet store
adidas outlet online
patriots jerseys
ralph lauren outlet
pandora jewelry outlet
supra for sale
texans jerseys
timberland boots outle
fred perry shirts
coach outlet store
kate spade bags
kate spade outlet online
coach outlet online
louboutin outlet
longchamp bag
coach outlet online
coach factory outlet online
uggs outlet
2017.8.2yangping