Resolviendo nombres con Tor
El protocolo DNS tiene su tiempo, los RFC que lo definen, 1034 (conceptos e instalaciones) y 1035 (implementación y especificación) datan del 1987 y como en todos los protocolos de la época la seguridad brilla por su ausencia, cualquiera que sniffe la red puede ver que dominios visita alguien, ya no digamos quien provea el servidor DNS, pero poca solución tiene a corto plazo, Internet depende de este sistema de nombres y no hay otro sistema mejor que disponga de la infraestructura necesaria, no?
Resulta que la interfaz SOCKS de los proxy Tor ofrece
una opción no estándar (punto 2)
que permite usar esta red para resolver nombres, se puede acceder a esta
funcionalidad a través de la línea de comandos con tor-resolve
,
esta capacidad de la red se puede explotar para montar un servidor DNS privado
que no filtre que dominios se buscan (eso sí, necesitará un punto de acceso
a la red Tor, claro).
Utilizando Twisted es sencillo montar este servidor
DNS que utilice Tor como backend para realizar las búsquedas (aunque estas
estarán limitadas a los campos A y AAAA),
esto es lo que implementa Onion-dir
(En Gitorious | En Github).
Esto se puede usar añadiendo DNSPort 53
al archivo /etc/tor/torrc
,
por último decir que el rendimiento es bastante mejor que el esperado, un
bind9
en local tarda ~52s en resolver las IP de las "100 webs más populares"
mientras que Tor lo hace en ~58s (ambos casos con la caché vacía), con la
caché llena los tiempos para ambos casos son de ~2.8s, pero aún da problemas
resolviendo dominios como _xmppconnect.gmail.com, el servidor XMPP
de Google, dominio que por otro lado realmente no existe.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Y ese parece el único problema grave que queda...
Tema cobalt para emacs
Basado en el de GtkSourceView, solo hay que añadirlo a la configuración y llamar a (cobalt-theme).
Código:
nikto visto desde el servidor
Os habéis preguntado como se vé un escaneo de vulnerabilidades desde el servidor? Pues no es muy silencioso precisamente :P
En tiempo real, si cada pelota representa una petición, las que rebotan son las que son atendidas satisfactoriamente y las que no... pues no:
Visualizado con logstalgia
CM sin agentes de servidor? Prueba ansible
Hace unas semanas había hechado un vistazo a algunas herramientas de gestión de la onfiguración como chef, puppet y salt, pero lo dejé cuando vi que requerían un servicio en el servidor donde se instalaran.
Pues bien, resulta que este sábado, en el hackmeeting se habló de ansible, una herramienta para este propósito escrita en python. Me perdí la charla pero hoy le heché un vistazo a la página web
Ansible is a radically simple IT orchestration engine that makes your applications and systems easier to deploy. Avoid writing scripts or custom code to deploy and update your applications— automate in a language that approaches plain English, using SSH, with no agents to install on remote systems.
Eso suena muy, muy bien, ando probándolo y por ahora anda genial, quizá es lo que estabas buscando :P.
Script para limpiar zombies
Toma como parámetro el id del proceso que generó los zombies y usa GDB para hacer waitpid, lo más seguro es que haga falta root :/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Una interfaz de línea de comandos para el API de Dropbox
Llevo un rato largo usando la librería de perl WebService::Dropbox para manejar(por necesidades externas) este servicio sin recurrir a software privativo a través de un script, supongo que puede que a alguien le resulte de utilidad, así que aquí queda:
Estamos de vuelta!
Detectando el lenguaje de un texto
A veces puede resultar útil detectar el lenguaje de un texto, en los sistemas NIX es habitual tener un directorio con listas de palabras habituales de varios idiomas, simplemente comparando la proporción de palabras de un texto que cae en esa lista a través de los distintos lenguajes da un número que parece* bastante significativo acerca de que idioma se trata.
Por ejemplo, probando esta aproximación sobre el texto traducido (en Markdown, sin convertir a HTML) de la entrevista de Snowden para Der Spiegel muestra los siguientes resultados:
1 2 3 4 5 6 7 |
|
Hacerlo sobre el texto de la GPLv3 (en inglés) resulta en:
1 2 3 4 5 6 7 |
|
Si bien la aproximación es muy basta, parece que el resultado es aceptable.
El script usado para las pruebas fué este, está pensado para usar los diccionarios de "american-english", "british-english", "galician" y "spanish" pero se podría usar cualquiera, claro:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
|
Just for fun
Últimamente encuentro bastantes sítios de humor por aquí dejo los que he encontrado (dádle al título del post para ver las imágenes):
- Infosec Reactions “Sólo lo toque y la aplicación se cayó sola”
- Devops Reactions “Desarrollando sin especificaciones”
- the_coding_love(); “Cuando llega un informe de error el viernes a las 4”
- The Joys of Code... aunque este tiene alguno que puede sentar mal
“Cuando los compañeros intentan explicar por que deberíamos programar en Java”
1 |
|
Esquivando nuestro antidebuggers simple a golpe de LD_PRELOAD
Hace un tiempo vimos como escribir un sencillo antidebugger y como esquivarlo, en ese momento lo evitamos eliminando la llamada a ptrace directamente del binario, ahora veremos como "cazar" la llamada y reemplazarla por la nuestra propia sin tener que tocar el archivo.
Priemero crearemos un archivo con la función que lo reemplazará [faketrace.c]: