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.
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.
blog comments powered by