Vista previa parcial del texto
¡Descarga Python y más Apuntes en PDF de Ingeniería Marina solo en Docsity!
e | Python para Pentesters Daniel Echeverri Montoya Más de 1000 ejemplares vendidos Do cn - OVaRa 3 P Python para Pentesters 2.1.8 Window Scan .. 2.2 Utilizando NMAP desde > Py OT acccanenrnnsrniane An o 2.2.1 Seript Engine... 2.2.2 Idle Scanning... 2.2.3 Timing Scanning ....... 2.2.4 Evasión de IDS/IPS... 2.2.5 Uso de la libreria python-nmap. 2.3 Banner Grabbing para detección servicios vulnerables .snecacrnsncrsnananencaneanes ess 67 .68 2.4 Integración de Nessus y Pyth0M aaccacocnonennenenanana ser rncnranerronso 2.4.1 PyNessus-rest para consultar la API REST de Nessus 2.5 Integración de Metasploit Framework y Python .....cocconoamanmnaos cer .12 2.5.1 Uso de python-msfrpe y el plugin MSGRPC de Metasploit E 'ramework .. 2.6 Integración de NeXpose y Python 2.6.1 Pynexpose para utilizar NeXpose desde Python 2.7 Integración de Latch y PythoN cocenencnenoas» A $1 2.8 Conceptos básicos sobre el protocolo SNMP A 2.8.1. Atacando servicios SNMP con PySNMP oocconcornorornoonoos 2.9. Conceptos básicos sobre el protocolo SMB ... 2.9.1. Aprovechando Sesiones S5MB Nulas.... 2.9.2. Atacando servicios SMB con PySMB.. 2.10 Identificación de vulnerabilidades en aplicaciones web .. 2.10.1 Uso de librerias en Python para entornos Web ....ccocinianos 2,10,2 OWASPTOP lO... ccccinianinanracincronccania conca emo ronca 2.10.3 W3AF para identificar vulnerabilidades en aplicaciones web.. 2.11 Vulnerabilidades en servidores HTTP........ 2.11.1 Ataques comunes contra arquitecturas web .... paa 2.11.2 Nikto para auditorias de servidores Web... cocciacionononnnnnenennnnais 2.12 Identificación y Ataque de versiones vulnerables de OpenSSL aocccnnno 2.12.1 5SLv2 Malformed Client Key Remote Buffer Overflow Vulnerability 2.12.2 Predictable PRNG (Pseudo Random Number Generator) s.rrorccoccaciononoss 2.12.3 TLS Heartbeat Extension - Memory Disclosure (HeartBleed Vulnerability). 2.13 Conceptos básicos sobre el protocolo FTP.. 2.13.1 Implementaciones vulnerables de FTP ........... 2.13.2 Encontrando servidores FTP mal configurados .... 2.14 Conceptos básicos sobre el protocolo SSHmnmnciconononnnenmsnearerrmenes 2.14.1. Atacando servicios 5SH con Paramiko 2.142. Creación de una Botnet 55H utilizando Fabri Índice 2.15. Conceptos básicos sobre el protocolo SMTP anscccncnssrnsrso 2.15.1 Enumerando usuarios en servidores SMTP mal configurados... Capítulo NI Elevación de privilegios y Garantizando el acCeSO.....ommcomomosrecaceos» 169 170 .. 197 ....224 .224 e] 3.1 Enumeración y recolección de información ..comncnsmmne. 3.1.1 Enumeración en sistemas Windows. 3.1.2 Enumeración en sistemas Linux 3.2 Control Remoto y puertas traseras 3.2.1 Implementación de consolas bind e inversas 3.2.2 Implementación de una consola inversa utilizando un tunel SSH cifrado 3.2.3 Seripts en Metasploit Framework para crear puertas traseras Capítulo IV Ataques en el segmento de red local .accccnncnasmsnrcrsrrsrrserr 293 4.1 Python y Scapy para creación de paquetes y análisis de la red ..... sessconn 293 4.1.1 Fingerprint pasivo con pOÍ y Scapy conccccnnnnnnsnsnncnnnns seca conamanen arneses .239 4.1.2 Uso práctico de Scapy para ejecutar y detectar ataques en redes de datos locales........ 243 4.2 Expandir el ataque en la red local de la víctiMA coo coaconocnesneonannensrrnriarencaseraocaanss ZÁS 4.2.1 Identificando el segmento de red y las máquinas accesibles 246 4.2.2 Redirección de Puertos y Forwarding de conexiones con S5H.... a. 247 4.3 Usando Twisted en el segmento de red local...cucomonorncrenonnrnsenenananesiorara 249 4,4 Ataques de Hombre en medio (MITM) con Scapy y Python ... A 4.5 Ataques de DNS Spoofing con Scapy y Python ... e A 4.6 Conceptos básicos y ataques en redes de datos IPv6 A 4.6.1 Enumeración de redes IPv6 .266 4.6.2 Ataque Neighbor Spoofing y MITM sobre IPv6.. ñ 4.6.3 Router Falso sobre IPv6.. A pares 269 4.6.4 Problemas de redirección... 4.7 Conceptos básicos y ataques en redes inalámbricas ........ 4.7.1 Sniffing en redes inalámbricas .cccccccananeneernsncrn concerns 4.7.2 Estructura de los paquetes en un entorno de red inalámbrica .. 4.7.3 Autenticación y asociación entre un cliente y un punto de acceso . 4.7.4 Ataques en redes inalámbricas Índice alfabéticO mocmcccnanono» Índice de imágenes .ocmcononmsnesnnesecieciecmaecerirsrsmsnrorensenmesrensessan 317 Otros libros Publicados ...omomcocnnonconrarinnncrananincicnanancocson en rrasarcsncracarac crear 1D naa pazo” Python para Pentesters - PyDBG. - Cuckoo Sandbox. - Volarility Framework. - W3AF - Paramiko. - Mechanize. - Beamtifil Soup. - Python-nmap. - Sem - Twisted. - Pamei. - Veil Framework. - SET (Social Engineering Toolkit). En el listado anterior, solamente se incluyen algunas de las librerías y herramientas más conocidas en lenguaje Pyihon, sin embargo existen muchas más que no se han listado y que han tenido un impacto muy positivo en la forma en la que se crean y auditan algunas de las aplicaciones y protocolos de uso común. La potencia y simplicidad de Python, le convierte en un lenguaje de programación ideal para crear pruebas de concepto rápidas que permitan estructurar una idea y posteriormente demostrarla, Además, ha sido un lenguaje del que se ha hablado muchísimo y que han recomendado hackers y personas con mucho renombre en el campo de la seguridad informática desde hace varios años, un ejemplo claro se encuentra en el documento de Eric $. Raymond titulado “How io become e Hacker” (Como convertirse en un Hacker) en el que habla sobre la filosofia, la cultura y los principios psicológicos más destacados en los Hackers, En uno de los apartados de dicho documento, habla sobre las habilidades que desarrolla un hacker en su proceso de aprendizaje continuo y menciona lenguajes como Pyehon y C para crear programas con fines centrados en la seguridad informática y el Hacking. Dicho documento, se encuentra disponible en la siguiente ruta: hup:¿m.catb.org/esrifaqsthacker-howto.Iriml y se recomienda su lectura. Aunque muchas de las herramientas y librerias desarrolladas en Python enfocadas a la seguridad informática, tienen como objetivo apoyar los procesos de pentesting para encontrar y corregir vulnerabilidades. evidentemente, también han sido utilizadas por atacantes para detectarlas y explotarlas, por este motivo es importante contar con los conocimientos necesarios para anticiparse alas acciones potencialmente peligrosas de los atacantes en frrerner, Un buen pentester y en general, cualquier persona que se dedique profesionalmente a la informática, preferiblemente deberia saber programar para crear sus propias utilidades o ayudar a corregir fallos en herramientas existentes. Por otro lado, es importante resaltar que la intención de este libro es ayudar al lector « afinar sus habilidades en programación con Python y proveer los conocimientos necesarios para entender Introducción 13 las principales técnicas utilizadas por delincuentes en /nternet. No se trata de un manual para cometer delitos informáticos, sino todo lo contrario, para intentar prevenirlos y alertar sobre sus consecuencias. La mejor forma de aprender a proteger cualquier recurso informático, consiste precisamente en aprender a pensar como lo hace un atacante para conseguir anticiparse. Tal como decia Sun Tzu en “El arte de la guerra”: “Si conoces a tu enemigo y te conoces a ti mismo, ni en cien batallas correrás peligro; si no conoces a tu enemigo, pero te conoces a ti mismo, perderás una batalla y ganarás otra; si no conoces a tu enemigo ni te conoces a ti mismo, correrás peligro en cada batalla”. Tienes en tus manos un documento que ha sido el resultado de varias horas de esfuerzo y dedicación, el cual espero que utilices de forma responsable en un entorno controlado y con la autorización correspondiente según sea el caso, No es mi intención proporcionar una guía para delincuentes, sino un documento para profesionales y entusiastas de la seguridad informática que les guste programar y afinar sus conocimientos, una guía para personas que les gusta saber cómo funcionan las cosas y que se encuentran en un proceso continuo de aprendizaje. Es un libro que espero que sea de tu agrado, que te aporte conocimientos y te ayude a desarrollar herramientas que luego puedas compartir con toda la comunidad hacker. Saludos y Happy Hack! Adastra. (G0jdaanial) de Python para Pentesters de información que le permita entender las actividades del objetivo. Por ejemplo. en el caso de que sea una organización, es vital recopilar información relacionada con sus empleados, ubicación de oficinas, las actividades a las que se dedica, organigramas, clientes, etcétera. Todos estos detalles son muy importantes para un atacante a la hora de planificar sus actividades y dada la naturaleza pública de dicha información, puede ser utilizada por cualquiera. Ahora bien, desde el punto de vista de un pentester profesional que ha sido contratado para auditar las medidas de seguridad de una organización, es muy importante delimitar adecuadamente el alcance de sus actividades y obtener por escrito, una autorización firmada indicando concretamente las actividades que se pueden llevar a cabo. Ese tipo de documentos son muy importantes ya que le permiten a un pertester realizar ataques controlados en un contexto legal y legitimo. 1.3 Recolección de Información con Python Automatizar el proceso de recolección de información puede conseguirse utilizando las librerías incluidas directamente en el lenguaje, asícomo algunas de las disponibles porterceros. A continuación se detalla el uso de algunas de las más útiles para cumplir con este objetivo. 1.3.1 Extraerinformación en servidores DNS utilizando DNSPython Con esta librería es posible realizar consultas a servidores 05 del mismo modo que es posible hacerlo con herramientas como dig, fierce o nslookup, con la ventaja de que el resultado de las consultas se puede controlar desde Python y posteriormente dicha información puede ser utilizada para distintos fines directamente desde un seripr. El sitio web oficial de esta libreria es el siguiente: hupolwmwdaspython.org?. Para instalarla, solamente es necesario ejecutar el soript setup.py con el argumento ¿nstell. E Python setup.py install Ahora, se pueden realizar diferentes tipos de consultas que permitirán obtener información sobre un dominio concreto. +pyrhon Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) [6cc 4.4.5] on linux2 Type “help”, “copyri P>9e import dns >> import dns. resolver >>>ansA, ansMX, ansNS, ansAAAA= (dns. resolver.query ("google.com',"A"), dns. resolver. query (*google.com”,* MX"), ,dns.resolver.query ('google.com”, "NS'), dns.resclver. query i'gosgle.com”, *AAAA')) >>> print ansá. response.to_ text () id 53947 opcode QUERY , “eredits” or “license” for more information. Capitulo 1. Recolección de Información y Escaneo | 17 | rcode NOERROR flags OR RD RA ¿QUESTION google.com. IN A ANSWER 63 IN A 173.194.34.200 63 IN A 173.194.34.201 63 IN A 173.194.34.198 63 IN A 173.194.34.196 1 63 IN A 173.194.34.194 google.com. 63 IN A 173.194.34.192 google.com. 63 IN A 173.194.34.197 google.com. 63 IN A 173.194.34.193 google.com. 63 IN A 173.194.34.195 . 63 IN A 173.194.34.199 . 63 IN A 173.194.34.206 HORITY ¿ADDITIONAL a E isponse.to_textd) id 46859 epcode QUERY rcode NOERROR Eags QA ED RÁ QUESTI google.com. IN MX ¡ANSHER secosle.com. 99 IN MX 10 aspmx.l.google.com. google.com. 99 IN MX 20 altl.aspmx.1.google.com. google.com. 99 IN MX 50 alt4.aspmx.l.google.com. google.com. 9% IN MX 40 alt3.aspmx.1.google.com. google.com. 9% IN MX 30 alt2.aspmx.1.google.com. AUTHORITY ADDITIONAL altl.aspmx.i.google.com. 50 IN A 173.194.70.26 altl.aspmx.1.google.com. 47 IN AAAA 2400:1450:4001:c02::1b alt4.aspmx.1.gocgle.com. 105 IN A 74.125.25.26 alt3.aspomx.l google.com. 102 IN A 74.125.143.26 alt2.aspmx.l.google.com. 180 IN A 173.194.69.26 alt2.aspmx.l. google.com. 259 IN ARAA 2a00:1450:4008:c01::1b id $360 aspox.l.google.com. qES Za A 7 epcode QUERY code NOERROR lags QR RD RA ¿QUESTION google.com. IN NS ANSHER google.com. 194408 IN NS ns2.google.com. google.com. 194408 IN NS ns3.google.com. google.com. 194408 IN NS nsá.google.com. soogle.com. 194408 IN NS nsl.google.com. AUTHORITY Capítulo [. Recolección de Información y Escaneo 19 el gobierno de los Estados Unidos de América con la JANA (Internet Assigned Numbers Authority) en la actualidad dichas actividades son ahora supervisadas y coordinadas por la [CANN, De hecho, JANA es ahora un departamento complementario de la /CANN. Aunque los servidores centrales de la /CANN realizan actividades de gestión sobre dominios, direcciones JP, servidores, entre otras cosas, la información necesaria para resolver direcciones y dominios se encuentra diseminada por fnterner en múltiples servidores WHAOJS. WHOIS es un protocolo que permite realizar consultas con el fin de obtener información detallada sobre el propietario de un dominio, fechas de creación y caducidad, teléfonos de contacto e incluso direcciones y códigos postales. Desde luego es una muy buena fuente de información para un atacante y un punto de inicio adecuado para perfilar un objetivo. Realizar consultas w/oís es un procedimiento bastante trivial en sistemas basados en Unix ejecutando utilidades por la linea de comandos, sin embargo existen una gran variedad de servicios en Internet que permiten consultar los registros wheís para un dominio determinado, por ejemplo: http: //whois.net/. No obstante, para un atacante es conveniente tener toda esta información en estructuras de datos que puedan ser utilizadas posteriormente desde un seripr. Es aqui donde es posible utilizar la librería pythomwvhois que permite realizar consultas whois contra un dominio concreto y posteriormente almacenar los resultados en una estructura de datos consistente y fácil de utilizar. Esta librería puede ser descargada desde el packer index de Python en la siguiente dirección: hrips:/pypi.pvthon.org/ pypipythomwhois. El procedimiento de instalación de esta librería, como muchas otras disponibles en Python, consiste simplemente en ejecutar el seripr setup, py con el argumento install. Mi Pyuhon setup .py install Una vez instalada la libreria, es posible importar el módulo principal que permite emplear las clases y utilidades necesarias para realizar consultas. 6 (1266:84292, Dec 26 2010, 22:31:48) e "copy *eredits” or "license" for more information. mport pythonwhois Ahora, se puede utilizar la 4P/ de pyrhomwhois para extraer información desde cualquier seripr en Python. >>> pyt *“whois. >>> Whois >>> whois.keys () [*'status”, 'updated_ date”, '*contacts”, tion_date”", 'raw, hois_server”, “regis >>> whois.values () [[*clientUpdatePror ted”, *eli nsferr d'], [datetime.datetime(2013, . 6, 8, 17, tain View", *fax”": *+1.6506188571", *name?: *DNS root_server (*google.com") «get_whois (*google.com") ntDeletePr “city”: , *'etate': "CA", 20 Python para Pentestes +1.6506234000", '*'street': *1600 Amphitheatre Parkway!, *country': code": *'94043', '*organizati *“Google Inc.*, *email*: *dns-a Mech": [(*city!: 'Mountain View", '*fax": '*+1.6506181499*, 'name” Con la función pythomwhois.net.get_root_server() es posible recuperar el servidor raíz parz dominio determinado y con pyrhonwhois.ger_whois() un diccionario con toda la información E el dominio. El el caso de que sea necesario obtener la respuesta cruda, es posible ejecutar la función pvrhonw ger_whois_raw() la cual retorna toda la información sobre un dominio especifico en una lista respuestas, donde cada elemento de la lista, corresponde a cada uno de los servidores Y, consultados. «gez_whois_raw("google.com”) 1 Registry Domain 1 2 http: : AnRegistrar WHOIS Server: whois. arkmonitor.cominUpdated Date: 2013-15 1 : 2002-10-02700:00:00-07001mRegistrar Registratios al 09-13T21:00:00-07001nRegistrar: MarkMonitor, Inc.inRegi ar sn La información que se puede recolectar de los servidores WHOIS es muy variada y en todos casos, sumamente informativa para un atacante. 1.3.3 GeoLocalizacion del objetivo con PyGeoIP Los SIG (Sistema de Información Geográfico) han sido utilizados desde hace algunos años localizar un punto determinado en un espacio geográfico. Esta tecnología también ha permi relacionar direcciones /P públicas con redes de datos y localizaciones concretas en todo el mu En la actualidad existen bases de datos disponibles de forma pública, que asocian millones direcciones /P de servidores en Interner con el país y la ciudad donde se encuentran. Para un at el uso de dichas bases de datos supone una forma de validar la información que ha podido reco! con las consultas WHO/S realizadas previamente o de complementar el conocimiento ya dis sobre el objetivo. La librería PvGeofP es en realidad un envoltorio de la librería geo-ip-c que permite enc información geográfica a partir de una dirección /P determinada. Dicha librería depende directa de las bases de datos GeoLíre las cuales son actualizadas frecuentemente y pueden ser desca: libremente desde su sitio web oficial Ap: /devmaxmind.com/geoip/legacyigeolite/. PyGeolp se puede descargar desde su repositorio G/Ten https: /Veithub.com/appliedsec/pygeoip. Python para Pentesters En dichos servicios es posible obtener información bastante fiable sobre la localización geográfica de un servidor en función a su dirección /P, no obstante, dicha información se enseña directamente en el navegador y para un atacante puede resultar interesante obtener dicha información directamente en sus scripts en Python. Para ello, puede utilizar algunas de las librerías disponibles para extraer información desde páginas web tales como Mechanize y BeautifulSoup. 1.4 Utilizar motores de búsqueda para recolectar información sobre un objetivo Los motores de búsqueda como Google, Yahoo! o Bing, suelen indexar muchisima información sobre organizaciones y dominios. Dicha información en muchos casos no debería ser expuesta de forma pública y tales fugas pueden beneficiar enormemente a un atacante a la hora de perfilar víctimas potenciales. 1.4.1 Google Hacking Además de ser uno de los motores de búsqueda más utilizado en todo el mundo, es también una herramienta muy útil para encontrar información concreta sobre sitios web en Internet, Una de las sus principales caracteristicas, es que cuenta con una serie de operadores que permiten hacer búsquedas muy específicas. Lo que hoy en día se conoce como Google Hacking fue inicialmente introducido por Johnny Long, quien ha sido uno de los principales investigadores en el campo de recolección de información utilizando Google. Sin embargo. su evolución ha sido bastante interesante, hasta el punto que el proceso de búsqueda y recolección se encuentra ahora automatizado por herramientas y bases de datos con cadenas de búsqueda que permiten localizar objetivos vulnerables rápidamente. Es posible que en un sitio web determinado existan fugas de información sensible y esa información puede ser capturada y almacenada por Google, algo que hoy en día es bastante conocido y aprovechado por usuarios maliciosos en Interne?. Para controlar los resultados que pueden arrojar las búsquedas de Google, es necesario conocer el funcionamiento de algunos de los filtros disponibles a la hora de realizar consultas. A continuación se listan algunas de las palabras reservadas que permiten establecer dichos filtros. Operadores en Google. Operador Descripción Uso Resultado Permite indicar el sitio. | .. j Busqueda de la:cadena Se Mabsóbre el cual ss site:securiufocus. com exploit XP SP2" en el h , exploit XP SP2 sitio realizará la búsqueda. “securitufocus.com” Capítulo E. Recolección de Información y Escaneo Operador Descripción Uso Resultado Bosa toto o intítle determinado en el título | intitle:FreePBX 2.100 ol E de la página título el texto i “FreePBX 2.10.07 Con este operador se pueden filtrar los Búsqueda de páginas resultados de una web que contengan búsqueda, enseñando , . en su URL el texto a sitezsecuriiyfocas, Com ERES ¿mur solamente aquellas a 3 bid” filtrando por las pa p inuri:bid kernel 2.6 á e coincidencias que palabras “kernel 2.6" y contengan en la URL para el sitio web el texto indicado en el securimjocis. com operador. . Búsqueda de cualqui Permite buscar R a sb real Sie tar gehen documento PDF en el ext documentos con una extipaf dominio extensión determinada. eS WWWEPBEÍ.COm Estos son solo algunos de los operadores disponibles para hacer búsquedas en Google, sin embargo, como se ha comentado en líneas anteriores, actualmente existe una base de datos bastante completa de Google Dorks llamada Google Hacking Database. GHDB es un repositorio bastante completo de google dorks y puede encontrarse en el siguiente enlace: hrip://mwwexploitdb.comizoogle-dorksí/. Una de las ventajas de esta base de datos, es que todos los dorks se encuentran ordenados por categorías, lo que permite filtrar fácilmente aquellos que puedan resultar interesantes para un objetivo determinado. Las categorias que comprende la base de datos son: - Footholds. - Ficheros con nombres de usuarios. - Directorios sens Detección de Servidor web. OS. ia! - — Ficheros vulnerables. - Servidores vulnerables. - Mensajes de error. - - — Información sensitiva sobre sitios de compra online. Ficheros con información interesante. - Ficheros con passwords, - Páginas de legín a portales. - Información de dispositivos de red. Como se puede apreciar, existe una gran cantidad de filtros en esta base de datos de dorks, pero ==0 no es todo, también existe una herramienta para la generación de dorks contra un objetivo deserminado y de esta forma se pueden ejecutar ataques dirigidos contra un objetivo concreto, Sha herramienta es googlelMB-too! y se encuentra disponible en la siguiente dirección: /fip:? ssousecpoint.comifreetools/. La última versión a la fecha de escribir este documento es la 1.5 y Capitulo [. Recolección de Información y Escaneo Shoden se encarga de indexar en su base de datos interna, las cabeceras y banners correspondientes a servidores que se encuentran en ejecución en Inrernet y que han sido indexados en la base de datos de Shodar. Del mismo modo que navegadores como Google, Shodan cuenta con una serie de filtros que permiten restringir los resultados de las consultas y algunos de los más populares, se listan en la siguiente tabla. Filtros en Shodan Filtro Descripción cio En los resultados de la búsqueda, solamente aparecerán aquellos que corresponden con d la ciudad indicada. di En los resultados de la búsqueda, solamente aparecerán aquellos que corresponden con Mi a ¿ z cod el país indicado. eE Permite encontrar los dispositivos que se encuentran en el radio definido por la latitud y g longitud especificada, En los resultados de la búsqueda, solamente aparecerán aquellos que corresponden con hostrane : PAEZ el nombre de dominio indicado. ner Permite realizar búsquedas dirigidas a segmentos de red concretos. _— mi Permite filtrar los resultados con un sistema operativo determinado, port Permite filtrar los resultados con un puerto determinado. Se trata de una lista no exhaustiva y en la medida de que Shodan va creciendo, el número de filtros puede ser mayor, con lo cual, se anima al lector a leer la documentación oficial donde se incluyen los filtros soportados a la fecha www.Shodanhg.comMhelpífilters. Por otro lado, una característica que convierte a Shodan en una herramienta imprescindible para un atacante o un pentester, es que cuenta con una 4P/ que permite que desarrolladores en lenguajes de programación como Ruby, Perl w Python, puedan utilizar Shodan de forma programática, algo que desde luego resulta sumamente sti. Para utilizar la API, es necesario tener una cuenta de usuario valida y de esta forma obtener una Developer Kev. El uso de las caracteristicas básicas de Shoder no supone ningún coste para un ¿sarrollador, sin embargo existen add-ons que incluyen caracteristicas muy interesantes, como sor ejemplo la capacidad de realizar búsquedas especificas para servicios como 7elner o HTTPS. sezeso a todos los filtros disponibles desde la API y acceso sin restricciones a los resultados de las ssesultas. Se trata de caracteristicas que no son nada despreciables y que pueden ser adquiridas por sm costo muy bajo. Descargar e inslalar la librería de Shodan para Python sigue el mismo patrón que muchas de las Seres disponibles para este lenguaje, Es posible hacerlo utilizando easy_imstall o directamente secando el script setup.py con el argumento install. Instrucciones más detalladas sobre el proceso 2 sstalación se pueden encontrar en la documentación oficial: hrps:VShodan.readthedocs.orglen? e Estorial himbrinstallation. E Python para Pentesters El uso más básico de la AP] de Shodan para Python consiste en crear una instancia de la clase Shodan.Shodan especificando como único argumento una Developer Key válida que se encuentra asociada a una cuenta de usuario. Script: ShodanSimpleS earch.py Hl/usc/binfenrv python try: ShodanKeyString = "“API_KEY” ShodanApi += Shodan.Shodan(ShodanKeyString) results = ShodanAp areh(“apache”) for result resul matches" ]: print "IP; %s* % result[*ip_str”] print resultí'data”] print ** except Shodan.APTError, el print *Ecror: da" ke if _ name == "main _*”: ShodanTest [)' Con el script anterior, se utiliza la API de Shodan para buscar por la palabra clave “apache” y posteriormente se pintan todos los resultados por pantalla. En este caso, se utiliza la función search que permite realizar cualquier tipo de búsqueda, incluso empleando los filtros disponibles en Shodan. Por otro lado, tal como se mencionaba anteriormente, la AP/ permite realizar varios tipos de búsquedas, pero existen algunas limitaciones que restringen el número total de resultados retornados y el uso de protocolos como HTTPS y Telnet. Para saber las limitaciones que tiene una cuenta concreta a la hora de utilizar la API y los add-ons que tiene habilitados, se utiliza la función info Script: ShodanDeveloperKeyInfo.py $! fusrfbin/fenv python import Shedan def ShodanTest try ShodankeyString = *API_KEY” ShodanApi = Shodan. Shodan(ShodankeyString) info = Sho i.info() for inf á E print *%ks except Shodan.API %(inf, infolin£]) En este caso, se pintan por pantalla los detalles de configuración relacionados con la cuenta de usuario que ha creado la instancia de la clase Shodan.Shodan. En el caso de que la cuenta de usuario tenga los add-ons de HTTPS y Telnet habilitados, aparecerá lo siguiente: