------------------------------------------------------------------------------------------------------------
Introducción:
Resumiendo un poco, Los testing de performance permiten conocer el mal desempeño de alguna aplicación.
JMeter
es uno de los programas más usados a la hora de hacer un testing de
performance ya que es muy fácil de manejar. Carece de un buen reporte de
resultados, pero aun así muestra todos los resultados necesarios para
este tipo de testing.
JMeter se puede usar para aplicaciones que manejen estos protocolos:
Web – HTTP, HTTPS
SOAP
Database via JDBC
LDAP (Lightweight Directory Access Protocol)
JMS (Java Message Service)
Mail – POP3
Cabe aclarar que JMeter funciona con todos los navegadores.
Sin más nada que decir, empezaremos a usarlo.
Primeros pasos con JMeter
Empezaremos descargando JMeter de su página oficial: http://jmeter.apache.org/download_jmeter.cgi
Es una herramienta Open source y se darán cuenta cuando la descarguen.
Una
vez descargada, la descomprimimos y vamos al directorio bin y
ejecutamos el archivo llamado jmeter.bat y veremos una pantalla similar a
la siguiente imagen:
Para comenzar, añadiremos un grupo de hilos, que es el que contendrá todos los pasos a testear.
Para ello vamos:
Plan de Pruebas >> Añadir >> Hilos (Usuarios) >> Grupo de Hilos
Colocamos un nombre para identificarlo:
Como se puede ver, se puede aumentar el número de hilos, cada cuantos segundos queremos que se corran las iteraciones, etc.
Ahora crearemos un banco de trabajo. Para ello clickeamos sobre Banco de trabajo con el click derecho del mouse
Y nos dirigimos a:
Añadir >> Elementos NoDePrueba >> Servidor Proxy HTTP
Ahora
configuraremos la conexión entre el programa y el navegador para que
JMeter pueda recibir todo lo que se escucha por un puerto específico
Como se puede ver, el primer recuadro rojo es para el puerto, este mismo puerto es el que debemos colocar en nuestro navegador.
El segundo cuadro es para el Controlador Objetivo, en el cual pondremos el hilo que hemos creado en el plan de pruebas.
Como
se pueden crear muchos hilos, debemos seleccionar cual es el que
deseamos grabar en ese momento. Entonces todo lo que naveguemos quedara
guardado en ese controlador de objetivo que seleccionemos.
Finalmente se puede excluir algunas extensiones. Yo en mi caso saque las imágenes, Pero eso ya es opcional.
Una vez que tengamos hecho eso, configuraremos el navegador. Yo usare Firefox.
Nos vamos a:
Herramientas >> Opciones
En las opciones avanzadas, vamos a la pestaña Red y entramos a las configuraciones de la conexión:
Seleccionamos la configuración manual del proxy, y en Proxy HTTP, colocamos localhost y en puerto, debemos poner el mismo que habíamos puesto en JMeter. Que en mi caso es el 8080.
Una vez que tenemos esto, damos aceptar.
Volvemos al JMeter y ahora presionamos en Arrancar para empezar a grabar los pasos.
Grabando los pasos
Ahora si podemos comenzar a navegar para guardar los pasos.
Una vez que finalizamos de hacer el recorrido de navegación, o los pasos a testear, frenamos el JMeter para dejar de grabar
Bueno, con esto ya hemos grabado todos los pasos. Ahora vamos a ver un poco los resultados
Si miramos en la izquierda, aparece el icono del hilo y con una chincheta que se puede abrir
Haciendo click en ella, podremos ver todos los pasos y todo lo que paso por entre medio al navegar.
Obteniendo resultados
Ahora solo nos queda ver en que tiempo responde la navegación y demás. Para ello, añadimos un reporte de resumen
Con el click derecho del mouse en Plan de Pruebas
Añadir >> Receptor >> Reporte Resumen
Y como podemos ver, se añade debajo del hilo
Ahora solo nos queda correr el hilo y ver los resultados.
Damos click en Arrancar, que es el botón verde con el Play y esperamos los resultados
En el reporte podemos ver los valores de respuesta de cada elemento de la página, si hay porcentaje de error y demás.
Así
como añadimos en este caso reporte de resumen, JMeter permite hacer
graficas y otros reportes bastantes útiles que se añaden de la misma
forma que el que acabamos de ver.
A
demás como dije antes, se pueden añadir iteraciones para simular el
ingreso de más de un usuario a la aplicación y ver como responde esta.
Espero que les haya gustado este paper y que les sea útil!
ANTRAX
Tazas NMAP [Parametros]
Les traigo esta imagen que hice para que puedan printarla en una taza:
La imagen trae todos los parametros del NMAP y ya tiene las dimensiones para printarla.
Aca les dejo algunas fotos de mi taza
La imagen trae todos los parametros del NMAP y ya tiene las dimensiones para printarla.
Aca les dejo algunas fotos de mi taza
Mapeo de redes con Nmap
Introducción:
Antes
de comenzar, quiero resaltar que Zenmap es casi lo mismo que Nmap, la
única diferencia es que Nmap es por consola y Zenmap tiene entorno
grafico
NMAP
Zenmap
NMAP
(Network Mapper o Mapeador de Redes) es una herramienta para scannear
puertos abiertos. Se diseño para explorar grandes redes, aunque funciona
a perfecto también para hacer mapeos a equipos individuales. A demás de
puertos, también dice que servicio lo utiliza y sus versiones. Otra de
las cosas que suele mostrar es que filtros o cortafuegos tiene, y a
veces hasta el sistema operativo que tiene el equipo entre otras docenas
de cosas.
Nmap es
una herramienta que se usa mucho en auditorias de seguridad y a demás
muchos la usan con fines delictivos. Lo primordial es su tabla de
puertos con sus estados que son los siguientes:
Closed: Cerrado
Open: Abierto
Filtred: Filtrado
Unfiltred: No Filtrado
Abierto
significa que la aplicación en la máquina destino se encuentra esperando
conexiones o paquetes en ese puerto. Filtrado indica que un cortafuego,
filtro, u otro obstáculo en la red está bloqueando el acceso a ese
puerto, por lo que Nmap no puede saber si se encuentra abierto o
cerrado. Los puertos cerrados no tienen ninguna aplicación escuchando en los mismos, aunque podrían abrirse en cualquier momento. Los clasificados como no filtrados son aquellos que responden a los sondeos de Nmap, pero para los que que Nmap no puede determinar si se encuentran abiertos o cerrados.
A
lo largo de este tutorial se encontraran con parámetros en mayúsculas y
minúsculas, es muy importante que los respeten ya que varia su función.
Primeros pasos con Nmap
Haremos un simple mapeo a una red e ip cualquiera, para saber que puertos tiene abiertos
La sintaxis del comando seria así:
NMAP [Parametro] [Host]En este caso no tenemos parámetros ya que es solo un simple mapeo a la IP para observer los puertos abiertos.
Tambien
podemos scannear puertos que nosotros queramos, para ello con el
parámetro –p colocamos los puertos separándolos por coma
Sintaxis del comando:
Nmap –p [Puertos] [Host]
Ejemplo:
Ahora bien, si queremos ver el sistema operativo que tiene el equipo seria así:
Como se puede ver en el scanneo dice que resulta poco fiable la
obtención del sistema operativo por qué no se encontró al menos un
puerto abierto o cerrado del sistema operativo. Pero que según el
Scanneo puede ser alguno de estos:
Running: Microsoft Windows 2000|XP|2003
Ahora
les voy a mostrar algo que suele ocurrir no muy frecuente, pero que si
es probable que les pase. Al tirar un mapeo a una pc a la cual no logre
identificar su sistema operativo.
Pero que es esa cadena de texto dentro de TCP/IP Fingerprint…?
TCP/IP fingerprint: OS:SCAN(V=5.59BETA1%D=12/30%OT=21%CT=1%CU=30523%PV=Y%DS=1%DC=D%G=Y%M=0015F2 OS:%TM=4EFDC93D%P=i686-pc-linux-gnu)SEQ(SP=103%GCD=1%ISR=109%TI=Z%CI=Z%II=I OS:%TS=8)OPS(O1=M5B4ST11NW6%O2=M5B4ST11NW6%O3=M5B4NNT11NW6%O4=M5B4ST11NW6%O OS:5=M5B4ST11NW6%O6=M5B4ST11)WIN(W1=3890%W2=3890%W3=3890%W4=3890%W5=3890%W6 OS:=3890)ECN(R=Y%DF=Y%T=40%W=3908%O=M5B4NNSNW6%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O OS:%A=S+%F=AS%RD=0%Q=)T2(R=N)T3(R=Y%DF=Y%T=40%W=3890%S=O%A=S+%F=AS%O=M5B4ST OS:11NW6%RD=0%Q=)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T= OS:40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0 OS:%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=1 OS:64%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)
Esa cadena es a lo que se
llama Huella TCP/IP. NMAP reconoce a un sistema operativo porque cada
uno responde de una forma diferente.
En este caso nos muestra esa cadena de texto por qué no logro identificarlo con exactitud.
Ahora veremos hosts activos en una red. Para ello debemos saber la puerta de enlace. En mi caso es 192.168.1.1. Como sabemos, una red puede alojar máximo 255 hosts. Lo que haremos será un ping scan para saber cuántos hosts hay en mi red. Asi que el comando sería el siguiente:
Nmap –sP 192.168.1.1-255Veremos un listado como el de la imagen, el cual nos mostrara IPs, MAC, etc…
Puertos y Servicios.
Ahora scannearemos un host, veremos sus puertos, servicios y la versión de sus servicios para saber si se pueden o no explotar.
Tipeamos lo siguiente:
nmap –sV [HOST]Como se puede ver en la imagen, hay servicios activos en sus respectivos puertos, y en caso de existir un Exploit para explotar dicho servicio, se podría vulnerar y entrar a la pc.
Los comandos se pueden combinar como en el siguiente ejemplo:
Nmap –sV –O [HOST] (Para sacar Servicios, versiones y sistema operativo)También podemos encontrarnos con Firewalls. Y nmap cuenta con comandos para evadirlos. Uno de ellos es –f
La línea de comando nos quedaría asi:
Nmap –sV –O –f [HOST](Para scannear puertos, servicios, versiones y sistema operativo de forma invisible)
Y el resultado sería igual a la imagen anterior.
Como venimos viendo no existe un parámetro mejor o peor que otro, ya que cada uno de ellos realiza tareas distintas.
Yo
les acabo de mostrar los más usuales y ahora veremos que a demás de
colocar la ip, también podemos colocar un dominio. por ejemplo:
nmap antrax-labs.org
Evasion de Firewalls [Stealth Scans]
Nmap cuenta con comandos para evadir Firewalls que no estén bien configurados.
Los parámetros para esto son:
-sX (Stealth Xmas Tree Scan, este tipo de scan envía paquetes con los flag FIN, URG, y PUSH activados)
-sN (Stealth, Null Scan, este tipo de scan pone en off todos los flags)
-sF (Stealth FIN Scan, este tipo de scan usa paquetes con el flag FIN activado para las pruebas)
El resultado sera el mismo al scanneo de peurtos normal.
El resultado sera el mismo al scanneo de peurtos normal.
Realiza el scanneo evadiendo el Firewall y muestra los servicios activos y en que puertos están funcionando.
Otro
parámetro útil es el -P0, lo que hace este parámetro no enviar ping al
objetivo antes del scanneo. De esta manera, el Firewall no bloquea el
scanneo.
Exportar Resultados de Scanneos
Nmap permite exportar scanneos en formato *.TXT o *.XML
Los parámetros para ello son: -oN (txt) –oX (xml)
La sintaxis seria:
nmap –sV 192.168.1.1 –oN Desktop/test.txt
# Nmap 5.59BETA1 scan initiated Thu Jan 5 20:14:06 2012 as: nmap -sV -oN Desktop/test.txt 192.168.1.1 Nmap scan report for 192.168.1.1 Host is up (0.083s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 80/tcp open http TP-LINK WR740N WAP http config 1900/tcp open upnp TP-LINK TL-WR740N WAP UPnP 1.0 (ipos 7.0; UPnP 1.0) 49152/tcp open unknown 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi : SF-Port49152-TCP:V=5.59BETA1%I=7%D=1/5%Time=4F062EC6%P=x86_64-unknown-linu SF:x-gnu%r(FourOhFourRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConne SF:ction:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GM SF:T\r\n\r\n")%r(GetRequest,52,"HTTP/1\.1\x20404\x20Not\x20Found\r\nConnec SF:tion:\x20close\r\nDate:\x20Fri,\x2006\x20Jan\x202012\x2007:14:10\x20GMT SF:\r\n\r\n")%r(SIPOptions,44,"HTTP/1\.1\x20501\x20Unimplimented\r\nConnec SF:tion:\x20close\r\nContent-Length:\x200\r\n\r\n"); MAC Address: D8:5D:4C:C7:DC:EE (Tp-link Technologies Co.) Service Info: Device: WAP Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . # Nmap done at Thu Jan 5 20:15:46 2012 -- 1 IP address (1 host up) scanned in 100.25 seconds
Despistando al Host con un señuelo (Decoy Scan)
Esto sirve de alguna forma para anonimizar el scanneo. Hace creer al host que lo scannean otros hosts que no es el nuestro.
Sintaxis de parámetros:
nmap –sV –D [host1],[host2] [host]
Ejemplo:
nmap –sV –D 192.168.1.77,192.168.1.211 192.168.1.1
Y en ese caso, pensara que el que scannea es el host 192.168.1.77 y el 192.168.1.211
El resultado del scanneo sera el mismo al de Puertos y Servicios por el parametro -sV
El resultado del scanneo sera el mismo al de Puertos y Servicios por el parametro -sV
Puertos TCP y UDP
Nmap permite filtrar puertos TCP y UDP. Los parámetros para ellos son:
TCP: -sT
UDP: -sU
Existen
otros parámetros, que en este paper no explique, pero si les dejo junto
a este paper una imagen que contiene todos los parámetros con una breve
descripción de cada uno.
Greets to: Sergio Alonso - Pablo Quesada
Automatizacion Selenium IDE + Python
Selenium IDE es un complemento de Firefox utilizado para automatizar y hacer pruebas sobre aplicaciones web.
Para
ello, realiza una grabación de determinadas acciones que luego las
convierte en un script editable. Lo más cómodo, es que luego este script
se puede ejecutar tantas veces como se quiera.
La
función principal de este plugin es poder hacer testing funcional de
las aplicaciones. Permite rellenar formularios, navegar por webs, etc.
Esta
herramienta permite ahorrar mucho tiempo y esfuerzo. Para ello permite
automatizar pruebas que puede ser una prueba en particular o conjunto de
pruebas.
Instalación
Nos aparecerá el cartel para instalar el complemento y solo damos en permitir
Y comenzara a descargarlo…
Una vez descargado, lo instalamos
Una vez instalado, nos pedirá que reiniciemos el browser
Y con esto ya quedara instalado. Podremos encontrar Selenium en el menú de Herramientas del navegador
A demás de esto, necesitaremos instalar python y la librería de selenium para python (en mi caso)
Python: http://python.org/download
Librería de Selenium: http://pypi.python.org/pypi/selenium
Una vez instalado python, copiamos las librerías de Selenium dentro de la carpeta de las librerías (C:\Python27\Lib).
Primeros pasos con Selenium
Abrimos el navegador, yo usare firefox. Iniciamos Selenium IDE
Apenas lo abrimos, comenzamos a navegar normalmente y Selenium grabara todos los pasos que hagamos.
Mis pasos son los siguientes:
[+] Google
[+] ANTRAX-LABS
[+] Boton Buscar
[+] Click en el link de mi blog
Como se puede ver, Ya estoy en mi blog y Selenium grabo todos mis pasos
Ahora
lo que hare, sera comprobar un enlace de mi blog, para ello, con el
botón secundario del mouse, dare click en un enlace de mi blog y
seleccionare “verifyElementPresent…”
Como se puede ver en la imagen, han quedado grabados todos los pasos que hice.
Ahora
se puede exportar el script de automatización a cualquiera de los
lenguajes que se ven en la imagen. Yo trabajare con Python.
Guardamos el script con su extensión correspondiente
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException import unittest, time, re class TestAntraxLabs(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.google.com.ar/" self.verificationErrors = [] def test_antrax_labs(self): driver = self.driver driver.get("/") driver.find_element_by_id("lst-ib").click() driver.find_element_by_id("lst-ib").clear() driver.find_element_by_id("lst-ib").send_keys("antrax-labs") driver.find_element_by_name("btnG").click() driver.find_element_by_link_text("[A]NTRAX [L]ABS").click() try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless")) except AssertionError as e: self.verificationErrors.append(str(e)) def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException, e: return False return True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
Y como resultado tendremos el script, que puede ser editable para añadir o modificar funciones
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exceptions import NoSuchElementException import unittest, time, re class TestAntraxLabs(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "http://www.google.com.ar/" self.verificationErrors = [] def test_antrax_labs(self): driver = self.driver driver.get(self.base_url) driver.find_element_by_id("lst-ib").click() driver.find_element_by_id("lst-ib").clear() driver.find_element_by_id("lst-ib").send_keys("antrax-labs") driver.find_element_by_name("btnG").click() driver.find_element_by_link_text("[A]NTRAX [L]ABS").click() try: self.assertTrue(self.is_element_present(By.LINK_TEXT, "Seguridad Wireless")) except AssertionError as e: self.verificationErrors.append(str(e)) def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException, e: return False return True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
Lo que hice acá, fue un ligero cambio. Reemplace la barra por la variable que contiene la url inicial, en mi caso la de google.
Si corremos el Script, se nos abrirá el navegador y automáticamente
comenzara a navegar y a seguir los pasos que dejamos grabados.
Al finalizar, lanza un mensaje diciendo si paso o no la prueba. En mi
caso busco y abrió mi blog correctamente y pudo verificar el enlace, en
por eso que me dio el OK.
En caso de no pasar, tirara un mensaje de error.
Lo bueno de Selenium es que se puede trabajar en varios lenguajes y que sus scripts exportados son editables.
Fuente:
http://www.antrax-labs.org/search/label/Testing