sábado, 17 de octubre de 2015

revisando un banco seguro

Luego de un café empezamos a dialogar y a pensar en la forma de seguridad implementada en los países mas avanzados en los sistemas más sofisticados osea bancarios. nuestra comunidad se distingue siempre porque tenemos esas ganas de desvelarnos, leyendo, informándonos, programando y analizando maneras de ataque.
Entonces unas noches después entre tantas busquedas accedimos al sitio web del Banco de Danske entre los sitios de bancos buscados, navegando a través del sitio y sus botones subdominios, paginas de error inducidas, y era curioso ver como el código de HTML trabajaba (la traduccion html), abrió el código de la pantalla de conexión de cliente del entorno bancario. Yo scrolleaba a través del código para conseguir una vista aproximada de la tecnología usada. Entonces mis ojos se detuvieron en los comentarios de JavaScript que parecieron contener la información del servidor interno. No solamente unas variables, bastantes datos confidenciales en realidad (!). Estaba en un URL el formato codificado, entonces lo descifré enseguida. Preguntándome sobre los secretos que contuvieron.

Cuando lo descifré, quedé impresionado. Esto está pasando en realidad? en menos de un minuto estaba sobre su sitio web como usuario que accede con su cuenta. Con solo buscar dentro del código de HTML de la pantalla de conexión, una de las páginas más visitadas del sitio web del Banco Danske. Nunca me enteré de este banco, pero mis nuevos amigos me dijeron esto era el banco más grande en Dinamarca.

El filtrado de informacion técnicael código de HTML de la pantalla de conexión que consiguió mi atención era lo siguiente:



Al media vista, encima del código de la función parece comentario normal y simple, pero yo inmediatamente vi palabras como HTTP_CONNECTION y HTTP_ACCEPT. Esto es extraño. Normalmente estas palabras clave sólo son usadas sobre el servidor mismo, y nunca debió haber sido enviado a visitantes.

¿Notaste la barra de desplazamiento horizontal en el cuadro? Mucho código está disponible si usted corre a la derecha. En el código vemos muchos carácteres de porcentaje (el %) son visibles y esto quiere decir que el código es URL codificado. Cuando usted descifra aquellos códigos y estructura los datos, entonces la tabla siguiente puede ser construida:
ASP.NET_SessionId=kbthxf55aiit4yn0zgx1ks55
APPL_MD_PATH=/LM/W5SVC/1255924431/ROOT
APPL_PHYSICAL_PATH=d:\data\iis\www.danskebank.dk\wwwroot\
AUTH_TYPE=
AUTH_USER=
AUTH_PASSWORD=
LOGON_USER=
REMOTE_USER=
CERT_COOKIE=
CERT_FLAGS=
CERT_ISSUER=
CERT_KEYSIZE=
CERT_SECRETKEYSIZE=
CERT_SERIALNUMBER=
CERT_SERVER_ISSUER=
CERT_SERVER_SUBJECT=
CERT_SUBJECT=
CONTENT_LENGTH=0
CONTENT_TYPE=
GATEWAY_INTERFACE=CGI/1.1
HTTPS=off
HTTPS_KEYSIZE=
HTTPS_SECRETKEYSIZE=
HTTPS_SERVER_ISSUER=
HTTPS_SERVER_SUBJECT=
INSTANCE_ID=1255724431
INSTANCE_META_PATH=/LM/W3SVC/1175724431
LOCAL_ADDR=10.197.22.250
PATH_INFO=/da-dk/Privat/Selvbetjening/raadgivning/Teknisk-support/Pages/Teknisk-support.aspx
PATH_TRANSLATED=d:\dat\iis\www.danskebank.dk\wwwroot\da-dk\Privat\Selvbetjening\raadgivning\Teknisk-support\Pages\Teknisk-support.aspx
QUERY_STRING=secsystem=JI
REMOTE_ADDR=10.197.22.123
REMOTE_HOST=10.197.22.123
REMOTE_PORT=63276
REQUEST_METHOD=GET
SCRIPT_NAME=/da-dk/Privat/Selvbetjening/raadgivning/Teknisk-support/Pages/Teknisk-support.aspx
SERVER_NAME=www.danskebank.dk
SERVER_PORT=80
SERVER_PORT_SECURE=0
SERVER_PROTOCOL=HTTP/1.1
SERVER_SOFTWARE=Microsoft-IIS/7.5
URL=/da-dk/Privat/Selvbetjening/raadgivning/Teknisk-support/Pages/Teknisk-support.aspx
HTTP_CONNECTION=Keep-Alive
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_ACCEPT_LANGUAGE=da,en-US;q=0.7,en;q=0.3
HTTP_COOKIE=cookiesOn=yes; s_vi=[CS]v1|2ADB987F85111696-6000013120021EC1[CE]; mbox=session#1440619645928-786416#1440611516; s_cc=true; s_sq=%5B%5BB%5D%5D; s_sv_sid=695191168575; QSI_HistorySession=http%3A%2F%2Fwww.danskebank.dk%2Fda-dk%2FPrivat%2FPages%2FPrivat.aspx~1440619560049
HTTP_HOST=www.danskebank.dk
HTTP_REFERER=http://www.danskebank.dk/da-dk/Privat/Pages/Privat.aspx
HTTP_USER_AGENT=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
HTTP_REVERSE_VIA=W93917
HTTP_CLIENTPROTOCOL=https
HTTP_CLIENTIP=80.166.145.257
HTTP_CLIENTPORT=45483
HTTP_SOPSECRETURNCODE=000
HTTP_SOPGSAFTLNR=C002334
HTTP_SOPGSSESSION=jYcemDSCIjJk
HTTP_SOPLSID=WYU2PQGXGYYSWU5344YMAFJZ
HTTP_SOPGLOBALUSERID=C002334
HTTP_SOPSESMTTS=2015-08-26-20.03.26.132946
HTTP_SOPCENTER=1
HTTP_SOPMVS=M2SR
HTTP_SOPDB2MEMBER=DEP9
HTTP_SOPQMGR=QBPL
HTTP_SOPFECICS=CICRPPI
HTTP_SOPTID=2015-08-26-22.07.44.322171
VTI_IS_INCLUDED_PATH=1
El servidor parece ser configurado en el modo de ajuste y es por eso que esto vierte estas variables. He modificado estos valores un poco para no dar la información interna exacta (respetando la seguridad del Banco Danske, recuerden que ahora soy ÉTICO).

Analizando los datos vi algo extraño. Mi propia dirección IP no fue catalogada en la variable HTTP_CLIENTIP y esta dirección catalogada no era también una dirección IP de servidor interna. Cuando traduje la dirección IP 80.166.145.257 correspondía al nombre de dominio totalmente calificado, la respuesta que hallé fue 80-166-145-257-static.dk.customer.tdc.net.
¿Notó el .dk en el resultado? Esto quiere decir que es una dirección IP de Dinamarca. Probablemente la dirección IP que yo veo es de un visitante del sitio, y con mucha probabilidad un cliente del Banco de Danske. Si refrescara la pantalla de conexión otra vez, yo conseguiría ver un juego diferente de datos, de otro cliente. Repetí esto unas veces y recuperé registros diferentes cada vez. Esta observación es muy interesante, pero entonces otra vez: muy alarmante.

Hijacking a cuentas del banco

Echandole un vistazo más exhaustivo a los datos vi que la variable HTTP_USER_AGENT contiene un sistema operativo y el navegador web que yo no estoy usando. casi me quedo sin aliento. Entonces vi también que la variable HTTP_COOKIE era visible y que estaba lleno de información. Para aquellos que no se familiarizan con las cookies: las cookies son las llaves que dan el acceso a una cuenta cuando está conectado. ¡Y ahora miro las credenciales de cuenta en línea bancaria de alguien!

Estoy impresionado. No puedo creer esto. ¡Es tan obvio y a simple vista! ¿Cómo es queen el Banco de Danske notó esto antes? Si el cliente de los datos que nosotros vemos es conectado en este momento, y si copio aquellas galletas y los importo en mi navegador, entonces también soy conectados como aquel cliente. Esto es como el trabajo de galletas, y así esto es como identifican trabajos de robo. Tuve que oponerme al impulso de secuestrar esta cuenta bancario para demostrar mi caso. Si secuestrara esta cuenta, significaría que violo la ley. Y esto no va a pasar.



No hay comentarios:

Publicar un comentario