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()
Comments
There are currently no comments
New Comment