La proliferación de dispositivos USB maliciosos, para hacerse con el control de nuestra máquina están a la orden del día.

Los hay muy variados y de diferente funcionalidad, y permiten un amplio rango de posibilidades a la hora de hackear nuestra máquina.

Contra esto, hay varias soluciones, como USBGuard, que no funciona bien en distros estables por problema de dependencias.

También hay otras soluciones como USB Canary que permite twittear y enviar sms con Twilio para avisarnos de dichos ataques.

No obstante, me he permitido el lujo de crear un snippet algo más abierto y sencillo para que modifiqueis a vuestro antojo y en base a vuestras necesidades.

Se me ocurre integrarlo con OSSEC, por ejemplo, con una regla e incorporarlo vuestro sistema de alertas..

El código en Python ...

 

#!/usr/bin/python

from pyudev import Context, Monitor, MonitorObserver
import os, sys, syslog
from datetime import datetime
import daemon
import time
from pygame import mixer

FILENAME = "/var/log/usbs.log"
SNDFILE = "/usr/share/sounds/purple/alert.wav"


def deviceEvent(device):
    # uncomment next statement to watch variables

    """for key, value in device.items():
        print "%s %s" % (key, value)"""

    # log event
    did = "%s:%s" % (device.get("ID_VENDOR_ID"), device.get("ID_MODEL_ID"))
    sid = "%s %s %s" % (did, device.get("ID_MODEL_FROM_DATABASE"), device.get("ID_VENDOR"))
    sdate = datetime.now().isoformat()
    if device.action == "add":
        msg = "[%s] usb connected %s" % (sdate, sid)
    elif device.action == "remove" or device.action == "offline":
        msg = "[%s] usb disconnected %s" % (sdate, sid)
else:
return
 # on file open(FILENAME, "a").write(msg + "\n") syslog.syslog(msg) print msg # play sound mixer.init() mixer.music.load(SNDFILE) mixer.music.play() def protect(): context = Context() monitor = Monitor.from_netlink(context) monitor.filter_by(subsystem='usb', device_type='usb_device') while True: device = None while device is None: device = monitor.poll(timeout=3) deviceEvent(device) if __name__ == "__main__": with daemon.DaemonContext(): protect()
A la hora de echarlo a andar, tendremos que ejecutar las siguientes instrucciones o instalar las siguientes librerías Python. 
 
pip install pygame 
pip install pyudev
pip install syslog
pip install daemon
 
Todo esto como root. Si no tenemos instalado pip, lo tendremos que instalar. En Debian, el paquete se llama python-pip.
Sois libres de jugar con el código, ya que es muy sencillo, mejorarlo o ampliarlo con las funcionalidades que gusteis.
El archivo python está disponible aquí.
Espero que os sea útil y os ayude a, como poco, tener el control de quien os hackea o no, y como, cuando se trata de acceso físico.
Saludos desde Madrid.
 
Currently unrated
  • Share

Comments

There are currently no comments

New Comment

* Please fill all required form field, thanks!