Hola la presente de este articulo es para resaltar de manera general el tema de ofuscación en el area de desarrollo web ASP.NET.
En la actualidad la plataforma .NET esta equipada con mecanismo que permite almacenar y explorar los objetos y tipos de datos contenido en determinado ensamblado. Dicho mecanismo se denomina reflexión (Reflection), y este se encargar de interrogar los metadatos acerca de un ensamblado, modulo y tipos relacionado con el CLR.
La reflexión tiene un conjunto de acciones dentro de la plataforma .NET: A nivel de diseño de aplicación, en tiempo de ejecución, medios de exploración para algunas IDE, etc. Un ejemplo de esto es el navegador de objeto propio Visual Studio 2010:
A partir de esto y basado en el principio de que la plataforma .NET generalmente trata las aplicaciones finales como un ensamblado .NET (*.DLL o *.EXE) , cuyo elemento contiene codigo compilado en lenguaje de maquina virtual especifico, en este caso Lenguaje Intermedio IL para su ejecución por parte del CLR de .NET Framework.
Entonce el IL (Lenguaje Intermedio) brinda un mundo de posibilidades para ir más alla de la reflexión elemental; una opción de esto es una via alterna para obtener una descripción completa del contenido de una aplicación, representada en algún lenguaje de programación de alto nivel. Para logra dicho proposito se puede contar con la herramienta .NET Reflector.
.NET Reflector Es una herramienta que permite analizar y explorar los ensamblados compilados en .NET, visualizando en ellos: codigo C#, Visual Basic, IL y otros.
En vista de este argumento, mucho se pregunta como se puede proteger el código de una aplicación, tal es el caso de ASP.NET. Para esto existe una series de mecanismos de protección, entre los cuales se menciona la Ofuscación.
El principio básico de la ofuscación es renombrar (cambiar de nombre) las series de identificadores cadenas de caracteres utilizados durante el desarrollo de una aplicación bien sea a nivel de codigo fuente o aplicación compilada en codigo de maquina.
Un ejemplo sencillo puede ser:
public int Suma(int valor1, int valor2)
{
return valor1 + valor2;
}
Ahora aplicando Ofuscación:
public int a(int a_0, int a_1)
{
return a_0 + a_1;
}
Con esto se busca impedir o hacer más difícil los intentos de ingeniería reversa y desensamblado de una aplicación, para la obtención del código fuente cercano a la forma original. En ocasiones la ofuscación, hace que los programas resultantes sean más pequeños (aunque puede hacer que los programas sean más grandes en otros casos).
Entonce desde aquí empresa como preemptive desarrolla soluciones relacionada con la ofuscación de aplicaciones, como es el caso del Ofuscador .NET.
.NET Obfuscator (Ofuscador .NET) conocido tambien como Dotfuscator es una herramienta que ayuda proteger los programas .NET contra la ingenieria reversa, además de hacerlos más pequeño y eficiente.
Versiones de Dotfuscator:
- Dotfuscator Software Services Community Edition (Edición de Instrumentación y Endurecimiento de Aplicaciones Ligeras): Esta edición reducida es incluida en tú copia de Visual Studio. Esta es una solución ideal para aquellos que requiere el nivel más basico de proteción de ingenieria reversa sobre aplicaciones sencillas.
- Dotfuscator Commercial Edition (Edición de Instrumentación y Endurecimiento de Aplicaciones Empresariales): La versión de grado comercial de Dotfuscator, pretende apoyar desarrolladores y organizaciones que requiere el nivel más alto de proteción para su aplicaciones. Sí tu desarrolla software comercial, esta solución asegura soporte y proteción de la aplicación.
Dotfuscator Software Services Community Edition. |
Dotfuscator Commercial Edition. | |
Ofuscación | ||
Renombrar ensamblado cruz | ||
Renombrar Esquemas | ||
Renombrar Prefijos | ||
Mejora de la inducción de sobrecarga | ||
Ofuscación Incremental | ||
Reporte HTML de renombramiento | ||
Flujo de control | ||
Encriptación de Cadena | ||
Interfaz de Usuario | ||
Interfaz de usuario Independiente | ||
Integración con Visual Studio | ||
Linea de comando | ||
MSBuild | ||
Tipos de aplicaciones soportadas | ||
Aplicaciones Office | ||
Aplicaciones SQL CRL | ||
ClickOnce Integrado | ||
SilverLight XAP | ||
Directory WildCard | ||
Métodos y Tipos genericos | ||
Soporte de ensamblado C++ Administrado (modo mezclado) | ||
Soporte de ensamblado satélite | ||
Construir / Empaquetar | ||
Resigning ensamblado nombrado fuertemente. | ||
Firmar Authenticode | ||
Eventos pre y pos construición | ||
Ruta de busqueda de ensamblado dependiente definido por usuario. | ||
Soporte de Depuración | ||
Ida y Vuelta de PDB | ||
Traducción de siguimiento de pila | ||
Optimización de Implementación | ||
Vinculo de ensamblado | ||
Reporte de eliminación HTML/XML | ||
Eliminación de codigo sin Uso | ||
Eliminación de constante | ||
Avanzada Proteción de aplicación | ||
Detección de manipulación | ||
Notificaciones de manipulación | ||
Marca de agua | ||
Administración de ciclo de vida | ||
Token de vida incrustado | ||
Expiración sobre acción por defecto | ||
Expiración sobre acción personalizado | ||
Origen de Token de vida personalizado | ||
Soporte Inteligente de Tiempo de ejecución | ||
Punto Final personalizado | ||
Punto Final RIS Comercial | ||
Punto Final Portal de comunidades | ||
Soporte entrada y salida Opt | ||
Seguimiento de Aplicaciones | ||
Mensajes SSL | ||
Llaves extendidas (carga de datos personalizado) | ||
Enviar PII | ||
Enviar ID de instancia personalizada (Numero de serial de aplicación) | ||
Tipos de mensajes inteligente de tiempo de ejecución | ||
Característica Tick | Limitado | |
Característica Duración | Limitado | |
Prueba de Rendimiento | ||
Perfil de sistema | ||
Precio | Incluido gratis en visual Studio 2010 | Solicitud de Couta |
Descarga | Incluido gratis en visual Studio 2010 | Descarga de evaluación |
Una vez comprendido el marco teorico, se procede a la practica donde se trata con enfoque una solución sencilla de un proyecto tipo aplicación ASP.NET 4.0 en lenguaje C# 4.0 junto a la herramienta Dotfuscator Software Services Community Edition.
PASOS SENCILLOS PARA USAR DOTFUSCATOR CE (COMMUNITY EDITION):
- Se abre una solución del tipo aplicación Windows o Web en Visual Studio 2010.
- Se pulsa clic sobre la opción Tools o Herramientas de la barra de menu de Visual Studio 2010.
- Se pulsa clic sobre la opción Dotfuscator Software Services.
- Se pulsa boton derecho del mouse sobre el nodo Dotfuscator1, y se hace clic en Add Assemblies.
- Se selecciona y abre el ensamblado previamente generado que esta ubicado en la carpeta BIN del proyecto de dicha solución.
- Ahora se dirige al nodo Configuration Options, nodo Renaming, Pestaña Exclusions. Finalmente desde aquí se marca aquellos elementos de codigo que no desea Osfucar o sea excluir.
- Se pulsa clic en el boton en forma de Triangulo situado en la barra de herramienta o la opción Build Project (Ctrl+B) del Menu Build.
- Finalmente nuestro ensamblado .NET ofuscado esta situado en la carpeta, por ejemplo: C:\Dotfuscated.
PUNTOS IMPORTANTES DE DOTFUSCATOR CE CON ASP.NET:
Cuando planifique la ofuscación de un ensamblado .NET por ejemplo *.DLL con la herramienta Dotfuscator CE, cerciórese que la opción Library Mode este desmarcada, ya que esta opción le indica al Dotfuscator que los elementos publicos de la clase no sean renombrados, y así se mantenie intacto la accesibilidad de los mismos a llamadas externas.
Como bien se conoce la estructura de un proyecto de aplicación ASP.NET; en una pagina ASPX se va encontrar vinculado tres archivos; un ejemplo esto es : Pagina.ASPX, Pagina.ASPX.cs, Pagina.ASPX.designer.cs, los cuales durante la compilación son procesados y vinculado en un archivo de extension *.DLL y Pagina Web ASPX (Pagina.ASPX).
Ahora sí procede a ofuscar el archivo con extensión *.DLL, se debe tomar como precaución la exclusión primordial de los nombres de paginas, controles y eventos que están referenciados en dicho ensamblado .NET los cuales tiene relación con nuestro pagina ASPX y así se logra mantener vinculado los identificadores usados en el desarrollo con la pagina ASPX.
Después de ofuscar el archivo *.DLL, se obtiene el siguiente resultado visualizado a través de la herramienta Reflector .NET:
Finalmente se puede colocar el archivo con extensión *.dll en la carpeta bin y las paginas ASPX relacionadas en la raíz de determinado directorio de aplicación del IIS.
Otro punto que se puede resaltar en este tema, es la gestión de aplicaciones escrita en el Lenguaje Visual Basic 2010. Para el cual se va encontrar limitado de ciertas características mencionadas previamente para Dotfuscator CE. Por ejemplo las aplicaciones bien sea del tipo Windows o Web en Visual Basic van a estar limitada para la ofuscación, ya que estas internamente gestiona el uso de métodos y tipos genericos a través del objeto My intrínseco de Visual Basic. Entonce para estos casos se sugiere usar la versión sín limitaciones de Dotfuscator (Dotfuscator Commercial Edition).
En resumen se puede notar que dentro del desarrollo de aplicaciones .NET, vamos a encontrar un tema de gran importancia como es la protección de la propiedad intelectual, a través de ciertos mecanismos como la ofuscación de codigo. Y esto puede ser posible con la herramienta Dotfuscator de la empresa preemptive.
Anexo Código fuente para ilustrar el tema: TestObfuscator (ASP.NET 4.0, C# 4.0)