Cifrado con SQLite

Esta vez les traigo un cuadro resumen de wrappers utilizados para cifrar SQLite en las plataformas de .Net y Java (Android). Para iniciar es importante tener presente en SQLite ¿que se deseamos cifrar/proteger?, contenido, estructura o ambos.

  1. Contenido: el dato almacenado dentro de las filas de la base de datos
  2. Estructura: la estructura de la base de datos (tablas, columna, tipo, etc.).

Para implementar cifrado en SQLite es necesario un componente o envoltura (Wrapper) para utilizarlos en plataformas de desarrollo de software, a continuación se presenta un cuatro resumen de envolturas utilizadas por la comunidad de Internet,

Nota: Todas las opciones del cuadro resumen implementan cifrado de estructura y contenido.

Nombre

Descripción

Java

.Net

Licencia

Referencias

Microsoft.Data.Sqlite

Implementaciones de SQLite de las interfaces System.Data.Common.

X

Licencia Apache

http://www.apache.org/licenses/LICENSE-2.0

Oficial:

https://github.com/aspnet/Microsoft.Data.Sqlite

https://www.nuget.org/packages/Microsoft.Data.Sqlite/

System.Data.SQLite

Utiliza su propia implementación de cifrado basada en un cifrado RSA de 128 bits (utilizando la API Crypto de Windows).

Esto no permitirá que ningún editor de GUI vea sus datos. SQLite versión 3

Ejemplo de Código:

SQLiteConnection cnn = new SQLiteConnection(“Data Source=c:\\test.db3”);

cnn.Open();

cnn.ChangePassword

(“mypassword”);

cnn.Close();

Cifrado que se puede utilizar especificando Password(o HexPassword)

X

Dominio público

Oficial:

https://system.data.sqlite.org


https://system.data.sqlite.org/index.html/doc/trunk/www/features.wiki

 

SEE(SQLite Encryption Extension)

Es un add-on a la versión de dominio público de SQLite que permite a una aplicación leer y escribir archivos de base de datos cifrados. Se admiten cuatro algoritmos de encriptación diferentes:

  • RC4

  • AES-128 en modo OFB

  • AES-128 en modo CCM

  • AES-256 en modo OFB

C.P

C.P

El costo de una licencia perpetua de código fuente para SEE es de US $ 2000. 

Oficial:

http://www.hwaci.com/sw/sqlite/see.html

SQLiteCrypt

La versión actual de SQLiteCrypt se basa en SQLite 3.13.

SQLiteCrypt es un complemento a la versión de dominio público de SQLite que añade soporte de cifrado AES 256 transparente para SQLite.

DotConnect para SQLite soporta totalmente la conexión a bases de datos cifradas SQLiteCrypt, sin embargo, no proporciona la propia extensión SQLiteCrypt. 

Para usar el cifrado de SQLiteCrypt necesitas comprar SQLiteCrypt por separado.

Compra de una licencia u Open Source

Precio actual de uno binario plataforma es US $ 128

Oficial:

http://sqlite-crypt.com/download.htm

http://sqlite-crypt.com/

http://sqlite-crypt.com/documentation.htm

WxSQLite

es un contenedor (wrapper) de C ++ alrededor de la base de datos SQLite 3.x de dominio público y está específicamente diseñado para su uso en programas basados ​​en la biblioteca wxWidgets.

C.P

C.P

Open Source

Oficial:

https://github.com/utelle/wxsqlite3

SQLCipher

es una alternativa de código abierto para SEE, es una extensión SQLite que proporciona cifrado AES de 256 bits transparente de los archivos de base de datos,

Utiliza el libcrypto de openSSL para implementar. agrega cifrado de base de datos completo

Compra de una licencia $499 por desarrollador u Open Source (Solo Android)

Oficial:
https://www.zetetic.net/sqlcipher/
https://github.com/sqlcipher/sqlcipher


Botansqlite3

Códec de cifrado Sqlite3 para permitir el cifrado completo de la base de datos utilizando los algoritmos soportados por Botan.

C.P

C.P

Open Source

Código: https://github.com/OlivierJG/botansqlite3

SQLiteCrypto

es la manera más fácil para cifrar base de datos SQLite

por AES-256 y SHA-256 
es una API completa del código fuente escrito en Java para bases de datos de Android SQLite que proporciona transparente cifrado AES de 256 bits de los campos de base de datos, los campos se cifran antes de escribirse disco y se descifran cuando se leen de atrás.

X

Compra de una licencia.

Oficial:

http://www.andbrain.com/sqlitecrypto-api/

Nota: C.P (Compilación Propia), mas información de cada uno de estos wrapper visitar la columna de referencias.

Alternativas de cifrado únicamente de contenido de la base de datos SQLite:

  • Debe implementarse un algoritmo criptográfico, para cifrar/descifrar los datos que permitan identificar (anonimizar) un elemento en particular.


Conclusiones:

  • Entre los wrappers más recomendados o mencionados en la comunidad de Internet se encuentran: SEE(SQLite Encryption Extension),SQLiteCrypt, y SQLCipher
  • Entre los wrappers SEE (SQLite Encryption Extension), Botansqlite3 y WxSQLite implican más investigación para ser implementados en ambas plataformas (.NET y Java), ya que implica compilar el wrapper o envoltura para cada plataforma, es decir, descargar código fuente y compilarlo.
  • El wrapper SQLiteCrypt es una opción OpenSource, soportada para ambas plataformas (.NET y Java) al cual requiere invertirse más tiempo de investigación o pruebas.

Glosario:

  • Wrappers: “es un programa que controla el acceso a un segundo programa. El Wrapper literalmente cubre la identidad de este segundo programa, obteniendo con esto un más alto nivel de seguridad. Estos programas nacieron por la necesidad de modificar el comportamiento del sistema operativo sin tener que modificar su funcionamiento.” Ref.: http://www.segu-info.com.ar/proteccion/proteccion.htm

Saludos, Comenta y Comparte.

 

Medidas preventivas antes Ransoware WannaCrypt

Buenas hoy les traigo algunas medidas preventivas para luchar contra el Ransoware Wannacrypt, una imagen graciosa primeramente:gracioso.jpgAlgunas medidas de preventivas ante el WannaCript:

1. La principal de las medidas es aplica actualizaciones al sistema operativo, referente con el Microsoft Security Bulletin MS17-010.

Mas detalle: https://technet.microsoft.com/en-us/library/security/ms-010.aspx

2. Mantener actualizado su antivirus, ya que gracias a algunos investigadores de seguridad se ha logrado obtener muestras del Ransoware, permitiendo que las casas de antivirus logren generar la firma de la muestra maliciosa para ser filtrado en los antivirus de los usuarios.

3.Deja de utilizar el protocolo SMBv1 ya que este Ransoware “Wannacrypt” se aprovecha de una vulnerabilidad en esta versión de protocolo SMBv1.

Para deshabilitar dicho protocolo se debe:

Ingresar a Panel de Control-> Programas y características -> Activar o desactivar las características de Windows -> “Compatibilidad con el protocolo para compartir archivos SMB 1.0/CIFS” desactivar dicha opción.

compatibilidad.png

IMPORTANTE: Dicha opción es de  Windows XP y Windows Server 2003 ellas utilizas exclusivamente la versión de SMBv1, otros sistemas operativos superiores tienen dicha opción activada por defecto. Esta utilidad funciona cuando tenemos pc’s con (Windows XP o Windows Server 2003) y se requiere compartir recursos entre pc’s con (Versiones de Windows actuales) esta función es un puente entre versiones de sistemas operativos para el protocolo SMB v1.

4. Aplicar un solución alternativa o “workaround” se debe aplicar desde powershell:

set-smbserverconfiguration -EnableSMB1Protocol $false

workaround.png

Saludos, comparte y comenta!

Top 1 millón Alexa con “Dominios con caracteres homógrafos”

Esta entrada tiene el objetivo de entender los conceptos básicos relacionados con los mencionados ataques homograficos, así como reforzar los conceptos con un ejercicio practico o (proof of concept) relacionado al tema.

Antes de iniciar con el concepto de ataques homograficos debemos comprender unos conceptos:

IDN (Nombre de dominio internacionalizado), es un nombre de dominio de internet que contiene caracteres no-ASCII, sin embargo el estándar para nombres de dominio no permite tales caracteres, entonces surge la necesidad de hallar una propuesta para utilizar caracteres no-ASCII, a su tiempo se propone “IDNA”.

IDNA (Internationalizing Domain Names in Applications) Nombre de Dominio de Aplicaciones es un mecanismo para manejar nombres de dominio IDN que contiene caracteres no-ASCII, estos dominios no podían ser manejador por la infraestructura de resolución de nombre y DNS, ya que solo se manejan dominio y nombres de host con caracteres ASCII . Para solucionar este inconveniente y permitir el uso de caracteres no-ASCII en dominios, se decidió estos dominios no-ASCII deben ser convertidos a una forma basada en ASCII por las aplicaciones.

La conversión entre las formas ASCII a no-ASCII de un nombre de dominio se realiza utilizando los métodos ToASCII() y ToUnicode(), estos algoritmos son detallados en el RFC 3490 (IDNA)

Resumiendo:

  • ToASCII(): en caso alguna etiqueta no sea valida para el DNS por contener algún carácter no-ASCII, se aplica un algoritmo Nameprep (el detalle del mismo en el RFC 3491) el resultado obtenido es traducido a ASCII usando Punycode no antes anteponiéndole el prefijo ACE es decir “xn--” que se utiliza para distinguir las etiquetas codificadas en Punycode de las etiquetas ASCII ordinarias)
  • ToUnicode(): revierte la acción de ToASCII quita el prefijo ACE y utiliza el algoritmo de descodificacion de Punycode.

Ejemplo:

  • (UTF8) España
  • (PunyCode) xn--espaa-rta

Punycode es una sintaxis de codificación para codificar/descodificar dominios internacionalizados de manera que los nombre de dominios y host puedan crearse utilizando caracteres del idioma nativo del usuario pero aun así pueden traducirse en algo que el sistema DNS puede utilizar.

Hemos escuchado estos días de los ataques homógrafos, que en realidad no son actuales sino años atrás varios investigadores y expertos en seguridad han presentado la alerta de estos ante la comunidad de Internet.

Un homógrafo es un símbolo que parece ser el mismo o muy parecido a otro símbolo, un ataque homográfico sucede cuando un atacante registra un nombre de dominio que se parezca al de un sitio legitimo, pero en el algunos de los caracteres han sido sustituidos por homógrafos en otros alfabetos

Ejemplo:

Los ataques homográfico son utilizados para phishing, distribución de malware, reclutamiento de bot dentro de una botnet, etc.

Actualmente se conoce que navegadores de internet son vulnerables a estos ataques, entre ellos algunos han presentado soluciones ante el problema.

Pues que les diré me ha interesado el tema, IDN, IDNA, PunyCode, ASCII, no-ASCII, Unicode…, pues decidí seleccionar una muestra de dominios en internet como fuente de dominio he utilizado el Top 1 millón de Alexa.

Buscar dentro de la muestra:

  1. ¿Existen dominios IDNA codificado con PunyCode?
  2. ¿Como decodifico un dominio IDNA codificado con Punycode?
  3. ¿Existen dominios homógrafos?

1.¿Existen dominios IDNA codificado con PunyCode?

Primeramente conseguí la muestra en http://aws.amazon.com/alexatopsites/, te registras y tienes acceso a un zip con lista de “Top 1 millón de dominios del ranking de Alexa”

Con la muestra en mano si descomprimes el “.zip”, te extrae un archivo “.txt” en la lista del ranking con el formato “posición , dominio” pues para saber primeramente si habían dominios Punycode, los extraje a un archivo nuevo sabiendo que los dominios codificado en Punycode inicia con “xn--” o el prefijo ACE(ASCII Compatible Encoding).

Comando Ejecutado:

grep -o “xn--.*” top-1m.csv > top_1m_alexa_filtrado_punycode.txt

Pues si que existen 2560 dominios entre un millón, interesante.

2.¿Como descodifico un dominio IDNA codificado con Punycode?

Seguidamente usaremos el archivo generado en la pregunta anterio: “top_1m_alexa_filtrado_punycode.txt” a partir del filtrado con dominios codificado con punycode.

Haciendo un pequeño script de python 3.6, usando la librería “idna2.5” que pues conseguir descargándola en este link: http://pypi.python.org/pypi/idna#downloads, es importante aclarar que esta librería esta refería a IDNA 2008

Les muestro el Script:


import sys

import idna

try:

d=0

fb = open(“top_1m_alexa_filtrado_punycode.txt”,”rb”)

listA = list(fb)

fb.close()

for element in listA:

try:

word = str(element).split(‘,’)[1].replace(‘\\n\”,”).replace(‘\\r’,”)

decoded = idna.decode(word)

print(word + ” == ” + decoded)

except:

d=d+1

print(‘error’,word)

print(‘error’,sys.exc_info()[1])

except:

print(“error “,sys.exc_info())

finally:

print(“Errores detectado: “, repr(d))


En resumen se hace una iteración de las lineas del archivo, por cada linea extraes el dominio codificado en Punycode y luego lo descodificas por medio del método “idna.decode()”, también es importante proveer un medio para detectar/mostrar errores ya que algunos símbolos codificados podrían no ser reconocido por el formato idna 2008 o podría no estar actualizada la librería idna 2.5 con todas los caracteres… por la experiencia mejor detectarlos, ya como verán en mi experiencia mi script detecto 2 errores:

1.png

Ambos errores son caracteres que no son admitidos en IDNA 2008, estos dominios a largo plazo podrían verse como ilegales para estándar IDNA 2008:

error Codepoint U+00A7 at position 1 of ‘§’ not allowed. Es el “Section Sign” un carácter de tipografía referirse a una sección de un documento, en el IDNA 2008 No es valido se considera un dominio ilegal.

error Codepoint U+2764 at position 1 of ‘❤❤❤’ not allowed. Es el “Heavy Black Heart” Los Emojis en el IDNA 2008 No son validos se considera un dominio ilegal.

Como muestra la imagen se descodificaron los dominios.

2.png

3.¿Existen dominios con caracteres homógrafos?

Haciendo una búsqueda manual, no he podido automatizar este proceso, pues miren que encontré:

La prueba de concepto del investigador de seguridad Xudong Zheng en la posición #34742,xn--80ak6aa92e.com dentro del ranking “top 1millon de Alexa”.

3.png

Interesante se encuentran dominios con caracteres homógrafos de:

4.png

Creo que este tema y la fuente de datos “top 1 millón de Alexa” da para mucho mas… pero por el momento me despido los invito que hagan el ejercicio y encuentren mas dominios con caracteres homógrafos dentro de este TOP!!!!!… De igual manera podría realizar el mismo ejercicio con otras fuentes top de ranking de internet.

II. OSINT de número de teléfonos en Costa Rica

CRtelefonos

El propósito del articulo es hacer notar la cantidad de datos que se pueden obtener de fuentes abiertas en internet relacionados a un número de teléfono, es el segundo articulo de una serie de “OSINT en Costa Rica”.

OSINT: “Open Source Intelligence o Inteligencia de fuentes abiertas; la definición estándar dice que es la inteligencia proveniente de fuentes abiertas, cualquier información desclasificada y públicamente accesible en Internet en forma gratuita, este termino fue acuñado y muy empleado entre militares, fuentes del orden y personal de inteligencia de las agencias gubernamentales”.

Entrando en contexto después de definir OSINT la realidad nacional, ¿Realidad o Descuido?, datos que están publico en internet ha manos de todos publico, facilitando la identificación o contacto de una persona física por medio de la relación de otros datos obtenidos de mas fuentes de datos publicas.

A continuación una lista fuentes y datos que se encontraron en internet relacionados a un número de teléfono:

Fuentes: Sitios Web de entidades bancarias o sitio de pago del servicio telefónico:

Algunos datos de los cuales podríamos encontrar en internet solamente utilizando el numero de teléfono:

1- Pago de Servicio Telefónico:

  • Nombre de propietario y monto ha pagar.

*IMPORTANTE: No importa si el número de teléfono esta registrado como “privado” con solo ingresar el número de teléfono aparecerá la información del propietario.

Fuentes: Sitios Web de entidades gubernamentales:

1- Consultar de Nombre del Operador o Proveedor que brinda el servicios al numero de teléfono proporcionado.

Fuentes: Sitios de proveedoras de servicios telefónicos.

Algunos datos de los cuales podríamos encontrar en internet solamente utilizando el numero de teléfono:

1. Consultar Facturas Pendientes:

  • Datos obtenidos (Periodo, Monto de factura, Vencimiento).

Algunos datos de los cuales podríamos encontrar en internet solamente utilizando el nombre de la persona o local a la cual pertenece el número de teléfono:

2. Consultar en Guía Telefónica Digital o Paginas Blancas Residenciales:

  • Datos obtenidos (Nombre propietario, número de teléfono y localización).

3. Consultar en Guía Comercial o Paginas Amarillas:

  • Datos obtenidos (Nombre local, número de teléfono, localización, horario de atención).

Otras fuentes publicas de datos:

1. Consultar en el Número de asistencia o guía telefónica utilizando el código de teléfono proporcionado por la entidad telefónica para dar este servicio. Ejemplo 1113 o 1115

  • Datos obtenidos: (Nombre numero de teléfono).

2. Consultar en paginas de “Reverse Phone lookup” son sitios web con base de datos teléfonos a nivel mundial.

  • Datos obtenidos: (Nombre propietario, localización y país)

Fuentes: Buscadores de Internet

  1. Podremos encontrar gran cantidad de información publica realizando una búsqueda en Google o su buscador de preferencia .

Concluyendo OSINT es una arma de doble filo, depende en las manos y objetivo para el cual se utilice. Es interesante recalcar como el número de teléfono “privado” también en cierta medida es público ya que en algunas entidades bancarias o sitio de pago de servicios telefónico con brindar el número de teléfono para el pago de la factura te brindan el nombre completo del propietario. ¿Realidad o Descuido?

Medidas para protegernos:

  • Infórmate sobre la ley 8968 “Ley de protección de la persona frente al tratamiento de sus datos personales”.
  • Toma precaución de NO revelar datos referente a tu persona o tu teléfono en sitios de internet o redes sociales recuerda mucha de esta información sera publica al ser indexada por los buscadores de internet.

“El producto de datos aislados con una relación directa o indirecta son parte un universo identificable.” by cyberspynet

Si eres de Costa Rica, comenta que otra información esta accesible públicamente; si eres de otro país cuéntanos como es tu país en estos temas.

Saludos, Comparte y Comenta.

I. OSINT de número de placa de vehículos en Costa Rica

CRvehiculos

El propósito del articulo es hacer notar la cantidad de datos que se pueden obtener de fuentes abiertas en internet relacionados al número de placa de un vehículos que transitan en nuestras calles costarricenses, es el primer articulo de una serie de “OSINT en Costa Rica”.

OSINT: “Open Source Intelligence o Inteligencia de fuentes abiertas; la definición estándar dice que es la inteligencia proveniente de fuentes abiertas, cualquier información desclasificada y públicamente accesible en Internet en forma gratuita, este termino fue acuñado y muy empleado entre militares, fuentes del orden y personal de inteligencia de las agencias gubernamentales”.

Entrando en contexto después de definir OSINT la realidad nacional, ¿Realidad o Descuido?, datos que están publico en internet ha manos de todos publico, facilitando la identificación de una persona física por medio de la relación de otros datos obtenidos de mas fuentes de datos publicas.

A continuación una lista fuentes y datos que se encontraron en internet relacionados a la placa de un vehículo:

Fuentes: Sitios Web de instituciones gubernamentales, entidades bancarias o aseguradoras:

1- Consulta de Infracciones de estacionometro (parquímetros):

  • Tiene infracciones de estacionamiento.
  • Información de la Infracción (Lugar, Monto de Infracción, Fecha, Motivo de Infracción).
  • Datos característicos de vehículo (Clase, Tipo, Placa).

2- Consulta de infracciones de transito:

  • Tiene infracciones de transito.
  • Nombre de Conductor.
  • Datos característicos de vehículo (Placa, Serie, Modelo, Tipo, Clase, Marca).
  • Información de la Infracción (Lugar, Monto de Infracción, Estado de Cancelación, Fecha, Motivo de Infracción).

3- Consultar Marchamo (en algunas entidades bancarias o aseguradoras proporcionan el medio para consulta el marchamo):

  • Nombre de propietario.
  • Cédula de propietario.
  • Monto del Marchamo.
  • Datos de vehículo: Fabricante, Modelo.

4- Tiene su rtv (riteve) al día.

5- Tiene su marchamo al día.

6- Consulta el valor del vehículo:

  • Valor fiscal.
  • Monto del impuesto de su vehículo.
  • Características del vehículo (Clase, Placa, Marca, Estilo, Carrocería, Modelo, Cilindrada, Combustible, Cabina, Tracción, Transmisión).

7- Consultar registro de propiedad del vehículo:

  • Placa.
  • Datos de propietario.

Fuentes: Sitios Web o sección de clasificados de venta de vehículos:

  1. Consultar datos de características de vehículo, placas (en las fotografías de venta), datos de vendedor (posible dueño) (Nombre, teléfono, dirección), Tipo de financiamiento.

Fuentes: Buscadores de Internet

  1. Podremos encontrar gran cantidad de información publica con una búsqueda en Google o su buscador de preferencia con el siguiente conjunto de palabras claves “consulta placa costa rica”.

Concluyendo OSINT es una arma de doble filo, depende en las manos y objetivo para el cual se utilice, como hemos visto existe gran cantidad de fuentes y datos públicos relacionada a una placa de vehículo, es importante mencionar el problema no es el número de placa del vehículo sino la información de una persona física que puede ser obtenida a partir ese número, ya que a partir de datos obtenidos de otras fuentes publicas de información es factible la identificación física de un individuo.

“El producto de datos aislados con una relación directa o indirecta son parte un universo identificable.” by cyberspynet

Medidas para protegernos:

  • Infórmate sobre la ley 8968 “Ley de protección de la persona frente al tratamiento de sus datos personales”.
  • Si deseas vender tu vehículo, no reveles información que perjudique tu bienestar o de tus seres queridos.
  • Toma precaución de NO revelar datos referente a tu persona o tu vehículo en sitios de internet o redes sociales recuerda mucha de esta información sera publica al ser indexada por los buscadores de internet.

Si eres de Costa Rica, comenta que otra información esta accesible públicamente; si eres de otro país cuéntanos como es tu país en estos temas.

Saludos, Comparte y Comenta.

Continua leyendo la segunda parte.

II. OSINT de número de teléfonos en Costa Rica

 

Películas de Hacking, Seguridad y Tecnologia

Les presento una lista de películas relacionadas a la hacking, seguridad, informática

  • The Net: 1995
  • Hackers (Piratas informaticos): 1995
  • Virus: 1999
  • Firewall: 2006
  • Untraceable (Sin rastros): 2008
  • CiberBullying: 2011
  • Underground The Julian Assange Story:2012
  • Reboot: 2012
  • Who i am (Ningun sistema es seguro): 2014
  • Algorithm:2014
  • Enigma (The Imitation Game): 2014
  • Transcendence: 2014
  • Black Hat (Amenaza en la Red): 2015
  • Hacker:2016
  • Anonymous:2016
  • El virus:2016
  • Snowden:2016

¿Que habrá para este año?

Comenta si conoces alguna película, series o documental relacionado al tema, para sentarme en una noche de palomitas.

Saludos!!!

Desvela los secretos de tus apps

Hoy les recomiendo un servicio online que me encontre para destripar las .apk de Android
este servicio desvela estos secretos de nuestras apps:

  • Datos XML
  • String de Codigo
  • API Keys
  • Lista de Servicios

Les dejo el link, ya la probe esta muy buena
http://android.fallible.co

1a.png

 

Prueben y compartan sus experiencias

“..Tu podrás detener este esfuerzo individual, pero nunca podrás detenernos a todos …después de todo, todos somos iguales….” Manifiesto Hacker escrito por The Mentor el 08 de Enero de 1986.