jueves, 30 de enero de 2014

GOOGLE: DOMAINS, DORKS & DATERANGE

DOMAINS & DORKS


Google tiene varios dominios a su disposición, se puede ver una amplia lista de ellos en wikipedia (o en Google... solo que menos detallado.).El uso de estos dominios genera, dependiendo la consulta, diferente cantidad de resultados. Tomemos como ejemplo el siguiente dork: inurl:robots.txt ext:txt (sql & admin). A modo de ejemplo puedo obtener tres distintas cantidades del mismo dependiendo de qué dominio de Google use:





Y algunas veces... hasta un doodle gratis...



Para esta consulta obtuve variantes no muy significativas, con un máximo de 80  resultados más de diferencia. Pero, dependiendo la consulta, Hong Kong nos puede dar sorpresas agradables:



Probablemente 4,027,000 de resultados adicionales no le estorben a nadie... bueno... depende de la calidad. Aquí lo curioso es la notable diferencia en la cantidad de resultados. ¿Suerte?. Probemos con alguna otra consulta. Al momento de escribir este articulo me encontraba depurando la lista de suscripciones que tengo en una de mis cuentas de correo antigua. Di clic en en el enlace para cancelar la suscripción y me boto la siguiente pantalla:




Me dio por curiosear un poco para ver si podía rastrear otras cuentas que tambien hubieran cancelado la suscripción.... sin ningún fin en particular de momento... últimamente me a dado por encontrar formas de rastrear cuentas de correo  masivamente para una idea que después comentare en algún otro post. Resulto que, efectivamente si se podía rastrear cuentas que en algún punto cancelaron la suscripción. Inicialmente el resultado fue algo decepcionante:



Pero, recurriendo al buen dominio de Hong Kong -u otros-, el resultado es mas productivo (al menos "aparentemente"... en un momento veremos por que lo de "aparentemente"...):





En algún punto y variando solo con un par de dorks distintos probando varios dominios - practicante todos- observe que se obtienen generalmente variantes de unas decenas a cuando mucho un par de centenas con casi todos y regularmente entre 3 a 4 resultados distintos repartidos entre todos los dominios... quizá termine haciendo pruebas mas concluyentes y precisas en un post posterior. De momento me basta señalar ese detalle para quien pueda sacarle provecho. Con ningún dominio vi resultados tan drásticos como con Hong Kong. No siempre ni para todas las consultas tiene este comportamiento pero es el dominio que muestra diferencias mas abismales. ¿Por que sucede esto?... de momento es un misterio. 

Ahora, suponiendo que tengamos la intencion de revisar cada uno de esos 2,120 - o, en un caso mas descabellado, pero no menos interesante... 4,440,000- resultados nos vamos a topar con un ligero inconveniente. Invariablemente de la cantidad de resultados que Google presuma obtener, este numero no siempre resulta real.  En algunos casos, por ejemplo en este ultimo, esos 2,120 en realidad resultan ser los mismos 27 resultados.  No es gracioso, y Google no te lo dice hasta que avanzas en las paginas. Y por otro, por mencionar algún otro ejemplo, el resultado del siguiente dork: ext:txt (login|username|usuario|user|userid|id)&(password|pass|clave|passcode)&(account|email|url)  arrojo 416,000 al momento de escribir este articulo. No sabemos si son todos, pero, moviéndonos al limite manipulando la URL de Google, cambiando el valor de &=start para movernos rápidamente entre paginas:

https://www.google.com.mx/?q=ext:txt+(login%7Cusername%7Cusuario%7Cuser%7Cuserid%7Cid)+%26+(password%7Cpass%7Cclave%7Cpasscode)+%26+(account%7Cemail%7Curl)#q=ext:txt+(login%7Cusername%7Cusuario%7Cuser%7Cuserid%7Cid)+%26+(password%7Cpass%7Cclave%7Cpasscode)+%26+(account%7Cemail%7Curl)&start=991

 Nos damos cuenta de la otra desagradable ilusión de Google:




Google no siempre nos dice la verdad respecto a sus resultados totales, y cuando quizá lo hace, se niega a darnos acceso a todos ellos. Si realmente quisieramos analizar cada uno de esos resultados, ¿Que podríamos hacer?.

DATERANGE


Es aquí donde entra en juego daterange. Un operador con potencial interesante que curiosamente no he visto que se aplique mucho al momento de usar y abusar del Google Hacking. Este operador puede ser usado para buscar paginas indexadas en un intervalo de fechas.  Su sintaxis es:

<palabra, frase u otro operador avanzado> daterange <fecha inicio>-<fecha final>


La fecha debe ser ingresada en formato juliano, que a forma de resumen es el número de días y fracción transcurridos desde el mediodía del 1ro de enero del año 4713 a. C. a la fecha que se requiera. En caso de que no se quieran complicar pueden usar la pagina  de GMacker para generar las fechas en este formato. Este operador debe ser usado siempre en combinación con otros términos de búsqueda u operadores avanzados. Por si solo no retorna ningún resultado. En caso de requerir retornar resultados indexados de un solo día en particular, la fecha de inicio y fecha final debe ser la misma, a modo de ejemplo, para buscar todos los archivos de Excel indexados el día 27 de enero del año en curso tendría que ser con al siguiente consulta:

ext:xls daterange:2456684-2456684

Con esto en mente, podríamos tomar el dork de los 416,000 resultados y dividirlo en fechas para obtener secciones de mil en mil o cifras cercanas a ellas de forma que nos permita consumir muchísimos mas resultados que el limite de los 1000:


29/01/2014:1,130 resultados.


28/01/2014:1,090 resultados.


27/01/2014:943 resultados.

De esta forma no solo obtenemos distintos resultados en secciones para la misma consulta si no que podemos tener alcance a mas de los 1000 que Google establece como limite en una consulta "común".

RESUMEN

-Los distintos dominios de Google pueden ser usados para obtener distintas cantidades de resultados para la misma consulta.

-Podemos aprovecharnos del operador daterange para analizar mas resultados de los que Google normalmente nos ofrecería partiendo la consulta por fechas o rangos de fechas para obtener distintas secciones de resultados de una misma consulta.

-Podemos combinar el uso de los dominios y el operador daterange para conseguir resultados mas "peculiares".

-El dominio de Google Hong Kong es particularmente extraño en algunas ocasiones...

REFERENCIAS.
-http://gmacker.com/web/content/gDateRange/gdr.htm


martes, 14 de enero de 2014

CHROME: AÑADIENDO BUSCADORES Y OTRAS HERRAMIENTAS

ADMINISTRADOR DE MOTORES DE BÚSQUEDA.


Chrome, como todos los navegadores tiene la posibilidad de ir anexando motores de búsqueda adicionales en caso de que Google no sea nuestro favorito o, que simplemente nos guste la idea de tener una o varias alternativas. Lo interesante o lo practico aquí es que se puede cambiar o sugerir la búsqueda con una simple palabra clave (o letras... me resulta poco practico poner una palabra clave muy larga) para especificar que motor vamos a usar para la búsqueda y, tambien con un par de mañanas podemos agregar algunas funcionalidades que no son precisamente motores de búsqueda -al menos no los mas tradicionales- y que nos pueden ahorrar un par de clics. Vamos a ver como funciona esto. Como aficionado al google hacking me gusta experimentar con todas las opciones que Google me ofrece. Una de ellas es la posibilidad de usar otros dominios de Google para obtener distinta cantidad de resultados o en algunos casos la misma, solo que en con distinto orden, algo que parece irrelevante, pero a veces útil. En Chrome podemos usar estos dominios para anexarlos como opciones alternativas al ejecutar google dorks. Esto lo podemos hacer de la siguiente manera:



1.-Dar clic en el recuadro señalado en el punto 1 de la imagen superior.
2.-Seleccionar "configuración" (2). También podemos simplemente ingresar "chrome://settings" (2a)+Enter en la barra de navegación.



3.-Dar clic en la sección de "Administrar motores de búsqueda" (3). Se pudo haber resumido esto como ingresar "chrome://settings/searchEngines"+Enter (3a), pero a algunas personas les resulta mas familiar navegar el trayecto por los menús del navegador. A continuación se nos mostrara una ventana como la siguiente:




En el recuadro 4 nos pide los siguientes datos:

Añadir motor de búsqueda: Es irrelevante lo que se ingrese aquí, es meramente descriptivo y no parece tener ningún impacto.
Palabra clave: Aquí vamos a ingresar la palabra o -en mi caso- letra(s) clave con la que asociaremos el motor de búsqueda anexado. La usaremos para mandar llamar el motor asociado de forma directa desde la barra de navegación.
URL: Ingresaremos la URL asociada al motor de búsqueda.


AÑADIENDO BUSCADORES Y ALGO MÁS...


La sintaxis base para el campo URL en este apartado mientras sea de un dominio de Google es la siguiente:

<Dominio>+search?q=%s&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:bookmarkBarPinned}{google:searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}


El modo de anexar por así decirlo, el dominio de Google Hong Kong seria por ejemplo:

Añadir motor de búsqueda: Google Hong Kong
Palabra clave: ghk
URL: https://www.google.com.hk/search?q=%s&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:bookmarkBarPinned}{google:searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}


Asumiendo que tengamos por defecto algún otro dominio de Google, si quisiéramos hacer una búsqueda rápida sin tener que ingresar a la configuración y cambiar a predeterminado lo haríamos por ejemplo solo ingresando en este caso "ghk" y automáticamente aparecería algo como lo siguiente:



Al dar espacio o tab:




Y solo bastaría ingresar los términos a buscar para efectuar la búsqueda desde el dominio de Google Hong Kong. Esto claro solo aplica para los dominios de Google. De igual forma al ejecutar búsquedas desde Bing, Yahoo y algunos otros, Google se toma la molestia de anexarlo por nosotros:





Aunque esto no es valido para todos los casos... y la palabra clave es usualmente la URL completa... no tiene mucha gracia realmente, aunque podemos ingresar a la configuración y cambiar la palabra clave sin problema. A modo de ejemplo si realizamos una búsqueda en Robtex o Nerdy Data Chrome no nos genera ninguna cadena ni entrada valida para el Administrador de motores de búsqueda a diferencia de lo generado si efectuamos una busqueda por Yahoo como se muestra en la imagen anterior. El truco para anexarlo esta simplemente en conseguir la URL de búsqueda que genera la pagina que queramos ingresar. Por ejemplo, retomando el caso de Neardy Data, si ingresamos "Technicolor Gataway - Login" - por las razones que sea- la URL generada seria la siguiente:

https://search.nerdydata.com/search/#!/searchTerm=Technicolor Gateway - Login/searchPage=1/sort=pop

Aquí lo único que hay que hacer es sustituir el termino de búsqueda por "%s" quedandonos la siguiente URL:

https://search.nerdydata.com/search/#!/searchTerm=%s/searchPage=1/sort=pop


Y con esto ya es valida para estar en el Administrador de motores de busqueda de Chrome y lo podemos usar tal como se vio en el ejemplo arriba con el dominio de Googoe Hong Koong. Es decir, bajo el supuesto de que la palabra clave fuera "nd", si de repente se nos ocurriera buscar algo con Nerdy Data podríamos ingresar rápidamente: 

"nd"+Espacio o Tab+<cadena a buscar>+Enter 


Y listo. Se pueden ademas anexar otros "buscadores" de forma que se tenga una acceso rápido con las palabras claves. Por ejemplo podríamos anexar a Robtex como buscador ingresando la siguiente cadena en el administrador:

https://www.robtex.com/q/y?q=%s


O retornar directamente la información extraída de  la pestaña de whois de Robtex agregando la siguiente:

https://www.robtex.com/dns/%s.html#whois


Fácilmente podría intercambiarse "#whois" por "#graph", "#summary" o cualquier otra pestaña de Robtex que nos resulte de uso recurrente. O bien anexar cada una de las anteriores por separado si nos resulta mas practico. La siguiente se puede anexar para tener un retorno rapido de un hash MD5 de alguna cadena:

http://md5.gromweb.com/?string=%s


Se puede cambiar "string" por "md5" para anexar una búsqueda inversa (ingresar un md5 y consultar si tenemos su valor de retorno). Convirtiendo la barra de navegación de Chrome en una pequeña caja de herramientas online llamadas en forma de parámetros establecida por las palabras clave que se nos ocurra asignarle. Ademas de las anteriores e probado con las siguientes URL:

Google Projects - https://code.google.com/hosting/search?q=%s&{google:RLZ}{google:originalQueryForSuggestion}{google:assistedQueryStats}{google:searchFieldtrialParameter}{google:bookmarkBarPinned}{google:searchClient}{google:sourceId}{google:instantExtendedEnabledParameter}{google:omniboxStartMarginParameter}ie={inputEncoding}

Google Translatehttp://translate.google.com/?source=osdd#auto|auto|%s

Email Sherlock http://www.emailsherlock.com/emailsearch/=%s

Exploit DB -http://www.exploit-db.com/google-dorks/?action=search&ghdb_search_cat_id=0&ghdb_search_text=%s


Si bien es probable que ya exista algún o algunos complementos que ya realicen todo esto la posibilidad de hacerlo de esta manera me resulta curiosa... por no decir entretenida... se me ocurre que podría jugarse con algún script elaborado en python, bash o batch - O el lenguaje que mas se les acomode- aprovechando las cadenas de búsqueda para crear alguna herramienta enfocada a OSINT. Eventualmente iré anexando mas conforme vaya encontrando sitios curiosos que puedan servirme como herramienta. Entre tanto, espero el tip les resulte util.

Referencias: 

-http://en.wikipedia.org/wiki/List_of_Google_domains
-https://www.robtex.com/
-http://www.bing.com/
-http://es.yahoo.com/
-http://www.shodanhq.com/
-http://nerdydata.com/
-http://www.emailsherlock.com/
-http://md5.gromweb.com/
-http://resources.infosecinstitute.com/osint-open-source-intelligence/
-http://en.wikipedia.org/wiki/Open-source_intelligence

viernes, 3 de enero de 2014

SQL SERVER: CAJA DE HERRAMIENTAS...

ORGANIZANDO NUESTRAS HERRAMIENTAS.

Para empezar el año me gustaría compartirles mi SP de uso regular para entornos SQL Server. Tenia algunas cosas desparramadas y puestas en varios querys o notas. Pero, no me resulto muy cómodo trabajar así y desde hace un tiempo me decidí a crear un SP que juntara las consultas que me resultaran mas útiles. Algunas funciones son ridículamente sencillas, como la idea de encerrar la simple ejecución de sp_heltext. Pero, me gusta tener todas mis herramientas en un solo lugar. Al final le he anexado los dos últimos queyrs que he estado usando (generación de inserts condicionados y el buscador de cadenas de texto en tablas). El query para la creación del SP se encuentra en GitHubY tengo la intención de mejorando paulatinamente - como en realidad ha ido sucediendo. De momento el SP abarca las siguientes opciones:


-Mostrar texto de procedimientos almacenados, trigers y funciones. 
-Buscar referencias de un texto en procedimientos almacenados, trigers y funciones. 
-Buscar tablas que contengan un campo con el texto proporcionado. 
-Muestra el esquema de la tabla (campos, tipo de datos, longitud). 
-Generar inserts condicionados. 
-Muestra plan de ejecución, toma como valor el campo <plan_handle>.
-Buscar Registros duplicados. 
-Regresar valores de consulta con formato XML. 
-Muestra el TOP @N de las tablas a las que se les ejecuto UPDATE. 
-Registros, numero de columnas, fecha de creación y fecha de ultima modificación de las primeras @N tablas ordenadas descendentemente por numero máximo de registros.
-Lista de los últimos objetos modificados en los últimos "X" (@N) días.
-Busca un texto dentro de todas las tablas de la base de datos. 
-Muestra un reporte orientado a encontrar procesos que son candidatos a optimizar segun se requiera, ordenado por:


  • Uso promedio de CPU (Average CPU Usage). 
  • Uso total de CPU (Total CPU usage).
  • Tiempo promedio transcurrido (Average Elapsed Time).
  • Tiempo total transcurrido(Total Elapsed Time).
  • Numero de ejecuciones (Execution Count).
  • IO promedio(Average IOs).  
  • IO Total (Total IOs). 
  • Lecturas logicas promedio (Average Logical Reads).
  • Lecturas logicas totales (Total Logical Reads).              
  • Escrituras promedio totales (Average Logical Writes).
  • Total de escrituras logicas (Total Logical Writes).
  • Promedio de lectura fisicas (Average Physical Reads).
  • Total de lecturas físicas (Total Physical Read).

La sintaxis general del SP y los detalles específicos para cada opción se encuentra creo, suficientemente bien documentados en el mismo query como para evitar confusiones. Espero como herramienta les resulte tan practica y útil como me ha resultado a mi. 

Saludos.

REFERENCIAS:

http://blog.sqlauthority.com/2007/09/13/sql-server-difference-between-exec-and-execute-vs-exec-use-execexecute-for-sp-always/
http://www.sqlservercentral.com/scripts/tables/97194/
http://www.sqlservercentral.com/scripts/Administration/98329/
http://sqlservercodebook.blogspot.mx/2008/03/check-if-temporary-table-exists.html
http://emmersonmiranda-net.blogspot.mx/2008/08/generando-mltiples-filas-de-un-string.html
http://www.databasejournal.com/features/mssql/article.php/3802936/Finding-the-Worst-Performing-T-SQL-Statements-on-an-Instance.htm
http://technet.microsoft.com/es-es/library/ms191475(v=sql.105).aspx